summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.editorconfig6
-rw-r--r--.github/workflows/linux_builds.yml18
-rw-r--r--core/config/engine.cpp4
-rw-r--r--core/config/project_settings.cpp19
-rw-r--r--core/core_bind.cpp99
-rw-r--r--core/core_bind.h8
-rw-r--r--core/debugger/debugger_marshalls.cpp10
-rw-r--r--core/debugger/local_debugger.cpp6
-rw-r--r--core/debugger/remote_debugger.cpp21
-rw-r--r--core/doc_data.h13
-rw-r--r--core/extension/extension_api_dump.cpp96
-rw-r--r--core/extension/gdnative_interface.cpp3
-rw-r--r--core/extension/gdnative_interface.h2
-rw-r--r--core/extension/native_extension.cpp6
-rw-r--r--core/input/input.cpp9
-rw-r--r--core/input/input_map.cpp24
-rw-r--r--core/io/config_file.cpp8
-rw-r--r--core/io/dir_access.cpp17
-rw-r--r--core/io/http_client.cpp7
-rw-r--r--core/io/image_loader.cpp4
-rw-r--r--core/io/ip.cpp75
-rw-r--r--core/io/json.cpp11
-rw-r--r--core/io/marshalls.cpp39
-rw-r--r--core/io/marshalls.h2
-rw-r--r--core/io/multiplayer_api.cpp22
-rw-r--r--core/io/multiplayer_api.h2
-rw-r--r--core/io/multiplayer_peer.cpp27
-rw-r--r--core/io/multiplayer_peer.h3
-rw-r--r--core/io/packed_data_container.cpp14
-rw-r--r--core/io/resource.cpp42
-rw-r--r--core/io/resource.h1
-rw-r--r--core/io/resource_format_binary.cpp171
-rw-r--r--core/io/resource_format_binary.h12
-rw-r--r--core/io/resource_importer.cpp42
-rw-r--r--core/io/resource_importer.h15
-rw-r--r--core/io/resource_loader.cpp138
-rw-r--r--core/io/resource_loader.h10
-rw-r--r--core/io/resource_saver.cpp19
-rw-r--r--core/io/resource_saver.h5
-rw-r--r--core/io/resource_uid.cpp262
-rw-r--r--core/io/resource_uid.h89
-rw-r--r--core/math/a_star.cpp10
-rw-r--r--core/math/delaunay_3d.h3
-rw-r--r--core/math/face3.h4
-rw-r--r--core/math/geometry_3d.h2
-rw-r--r--core/math/math_funcs.cpp10
-rw-r--r--core/math/math_funcs.h1
-rw-r--r--core/math/quick_hull.cpp34
-rw-r--r--core/math/triangle_mesh.cpp12
-rw-r--r--core/object/class_db.cpp83
-rw-r--r--core/object/class_db.h1
-rw-r--r--core/object/object.cpp35
-rw-r--r--core/object/script_language.cpp54
-rw-r--r--core/object/script_language.h1
-rw-r--r--core/object/undo_redo.cpp28
-rw-r--r--core/os/main_loop.cpp4
-rw-r--r--core/os/main_loop.h4
-rw-r--r--core/os/os.cpp12
-rw-r--r--core/os/os.h6
-rw-r--r--core/os/pool_allocator.h2
-rw-r--r--core/register_core_types.cpp12
-rw-r--r--core/string/optimized_translation.cpp6
-rw-r--r--core/string/translation.cpp4
-rw-r--r--core/string/translation_po.cpp23
-rw-r--r--core/string/ustring.cpp7
-rw-r--r--core/templates/command_queue_mt.h2
-rw-r--r--core/templates/rid_owner.h2
-rw-r--r--core/templates/set.h7
-rw-r--r--core/variant/binder_common.h6
-rw-r--r--core/variant/callable.cpp4
-rw-r--r--core/variant/method_ptrcall.h2
-rw-r--r--core/variant/variant.cpp6
-rw-r--r--core/variant/variant.h7
-rw-r--r--core/variant/variant_call.cpp51
-rw-r--r--core/variant/variant_parser.cpp10
-rw-r--r--core/variant/variant_parser.h6
-rw-r--r--core/variant/variant_setget.cpp12
-rw-r--r--core/variant/variant_utility.cpp9
-rw-r--r--doc/classes/@GlobalScope.xml583
-rw-r--r--doc/classes/AABB.xml150
-rw-r--r--doc/classes/AESContext.xml24
-rw-r--r--doc/classes/AStar.xml183
-rw-r--r--doc/classes/AStar2D.xml177
-rw-r--r--doc/classes/AcceptDialog.xml44
-rw-r--r--doc/classes/AnimatedSprite2D.xml15
-rw-r--r--doc/classes/AnimatedSprite3D.xml12
-rw-r--r--doc/classes/AnimatedTexture.xml30
-rw-r--r--doc/classes/Animation.xml562
-rw-r--r--doc/classes/AnimationNode.xml147
-rw-r--r--doc/classes/AnimationNodeBlendSpace1D.xml51
-rw-r--r--doc/classes/AnimationNodeBlendSpace2D.xml84
-rw-r--r--doc/classes/AnimationNodeBlendTree.xml75
-rw-r--r--doc/classes/AnimationNodeOneShot.xml9
-rw-r--r--doc/classes/AnimationNodeStateMachine.xml153
-rw-r--r--doc/classes/AnimationNodeStateMachinePlayback.xml30
-rw-r--r--doc/classes/AnimationNodeTransition.xml30
-rw-r--r--doc/classes/AnimationPlayer.xml159
-rw-r--r--doc/classes/AnimationTree.xml18
-rw-r--r--doc/classes/Area2D.xml82
-rw-r--r--doc/classes/Area3D.xml78
-rw-r--r--doc/classes/Array.xml318
-rw-r--r--doc/classes/ArrayMesh.xml143
-rw-r--r--doc/classes/AudioEffectCapture.xml27
-rw-r--r--doc/classes/AudioEffectChorus.xml90
-rw-r--r--doc/classes/AudioEffectEQ.xml18
-rw-r--r--doc/classes/AudioEffectRecord.xml12
-rw-r--r--doc/classes/AudioEffectSpectrumAnalyzerInstance.xml12
-rw-r--r--doc/classes/AudioServer.xml267
-rw-r--r--doc/classes/AudioStream.xml3
-rw-r--r--doc/classes/AudioStreamGeneratorPlayback.xml27
-rw-r--r--doc/classes/AudioStreamPlayer.xml21
-rw-r--r--doc/classes/AudioStreamPlayer2D.xml21
-rw-r--r--doc/classes/AudioStreamPlayer3D.xml21
-rw-r--r--doc/classes/AudioStreamSample.xml6
-rw-r--r--doc/classes/BaseButton.xml24
-rw-r--r--doc/classes/BaseMaterial3D.xml45
-rw-r--r--doc/classes/Basis.xml156
-rw-r--r--doc/classes/BitMap.xml63
-rw-r--r--doc/classes/Bone2D.xml45
-rw-r--r--doc/classes/BoxContainer.xml6
-rw-r--r--doc/classes/Button.xml58
-rw-r--r--doc/classes/ButtonGroup.xml9
-rw-r--r--doc/classes/CPUParticles2D.xml69
-rw-r--r--doc/classes/CPUParticles3D.xml69
-rw-r--r--doc/classes/Callable.xml78
-rw-r--r--doc/classes/CallbackTweener.xml6
-rw-r--r--doc/classes/Camera2D.xml45
-rw-r--r--doc/classes/Camera3D.xml117
-rw-r--r--doc/classes/CameraServer.xml30
-rw-r--r--doc/classes/CanvasItem.xml468
-rw-r--r--doc/classes/CanvasLayer.xml3
-rw-r--r--doc/classes/CharacterBody2D.xml27
-rw-r--r--doc/classes/CharacterBody3D.xml27
-rw-r--r--doc/classes/CheckBox.xml50
-rw-r--r--doc/classes/CheckButton.xml50
-rw-r--r--doc/classes/ClassDB.xml159
-rw-r--r--doc/classes/ClippedCamera3D.xml45
-rw-r--r--doc/classes/CodeEdit.xml558
-rw-r--r--doc/classes/CodeHighlighter.xml90
-rw-r--r--doc/classes/CollisionObject2D.xml207
-rw-r--r--doc/classes/CollisionObject3D.xml187
-rw-r--r--doc/classes/CollisionShape3D.xml9
-rw-r--r--doc/classes/Color.xml261
-rw-r--r--doc/classes/ColorPicker.xml50
-rw-r--r--doc/classes/ColorPickerButton.xml39
-rw-r--r--doc/classes/ConcavePolygonShape3D.xml9
-rw-r--r--doc/classes/ConeTwistJoint3D.xml15
-rw-r--r--doc/classes/ConfigFile.xml203
-rw-r--r--doc/classes/ConfirmationDialog.xml3
-rw-r--r--doc/classes/Container.xml12
-rw-r--r--doc/classes/Control.xml543
-rw-r--r--doc/classes/ConvexPolygonShape2D.xml6
-rw-r--r--doc/classes/Crypto.xml93
-rw-r--r--doc/classes/CryptoKey.xml36
-rw-r--r--doc/classes/Curve.xml132
-rw-r--r--doc/classes/Curve2D.xml123
-rw-r--r--doc/classes/Curve3D.xml153
-rw-r--r--doc/classes/DTLSServer.xml18
-rw-r--r--doc/classes/Decal.xml15
-rw-r--r--doc/classes/Dictionary.xml78
-rw-r--r--doc/classes/Directory.xml100
-rw-r--r--doc/classes/DisplayServer.xml754
-rw-r--r--doc/classes/EditorDebuggerPlugin.xml42
-rw-r--r--doc/classes/EditorExportPlugin.xml96
-rw-r--r--doc/classes/EditorFeatureProfile.xml84
-rw-r--r--doc/classes/EditorFileDialog.xml24
-rw-r--r--doc/classes/EditorFileSystem.xml45
-rw-r--r--doc/classes/EditorFileSystemDirectory.xml69
-rw-r--r--doc/classes/EditorImportPlugin.xml65
-rw-r--r--doc/classes/EditorInspector.xml27
-rw-r--r--doc/classes/EditorInspectorPlugin.xml63
-rw-r--r--doc/classes/EditorInterface.xml150
-rw-r--r--doc/classes/EditorNode3DGizmo.xml223
-rw-r--r--doc/classes/EditorNode3DGizmoPlugin.xml213
-rw-r--r--doc/classes/EditorPaths.xml15
-rw-r--r--doc/classes/EditorPlugin.xml356
-rw-r--r--doc/classes/EditorProperty.xml87
-rw-r--r--doc/classes/EditorResourceConversionPlugin.xml9
-rw-r--r--doc/classes/EditorResourcePicker.xml27
-rw-r--r--doc/classes/EditorResourcePreview.xml51
-rw-r--r--doc/classes/EditorResourcePreviewGenerator.xml30
-rw-r--r--doc/classes/EditorSceneImporter.xml54
-rw-r--r--doc/classes/EditorSceneImporterMesh.xml123
-rw-r--r--doc/classes/EditorScenePostImport.xml9
-rw-r--r--doc/classes/EditorScript.xml15
-rw-r--r--doc/classes/EditorSelection.xml21
-rw-r--r--doc/classes/EditorSettings.xml111
-rw-r--r--doc/classes/EditorSyntaxHighlighter.xml9
-rw-r--r--doc/classes/EditorTranslationParserPlugin.xml15
-rw-r--r--doc/classes/EditorVCSInterface.xml48
-rw-r--r--doc/classes/Engine.xml53
-rw-r--r--doc/classes/EngineDebugger.xml87
-rw-r--r--doc/classes/Environment.xml15
-rw-r--r--doc/classes/Expression.xml27
-rw-r--r--doc/classes/File.xml240
-rw-r--r--doc/classes/FileDialog.xml50
-rw-r--r--doc/classes/FileSystemDock.xml30
-rw-r--r--doc/classes/Font.xml219
-rw-r--r--doc/classes/FontData.xml276
-rw-r--r--doc/classes/GPUParticles2D.xml6
-rw-r--r--doc/classes/GPUParticles3D.xml39
-rw-r--r--doc/classes/Generic6DOFJoint3D.xml90
-rw-r--r--doc/classes/Geometry2D.xml216
-rw-r--r--doc/classes/Geometry3D.xml165
-rw-r--r--doc/classes/GeometryInstance3D.xml21
-rw-r--r--doc/classes/Gradient.xml54
-rw-r--r--doc/classes/GraphEdit.xml213
-rw-r--r--doc/classes/GraphNode.xml239
-rw-r--r--doc/classes/GridContainer.xml4
-rw-r--r--doc/classes/HBoxContainer.xml2
-rw-r--r--doc/classes/HMACContext.xml18
-rw-r--r--doc/classes/HScrollBar.xml18
-rw-r--r--doc/classes/HSeparator.xml4
-rw-r--r--doc/classes/HSlider.xml14
-rw-r--r--doc/classes/HSplitContainer.xml8
-rw-r--r--doc/classes/HTTPClient.xml81
-rw-r--r--doc/classes/HTTPRequest.xml60
-rw-r--r--doc/classes/HashingContext.xml15
-rw-r--r--doc/classes/HingeJoint3D.xml30
-rw-r--r--doc/classes/IP.xml63
-rw-r--r--doc/classes/Image.xml355
-rw-r--r--doc/classes/ImageTexture.xml21
-rw-r--r--doc/classes/ImageTexture3D.xml27
-rw-r--r--doc/classes/ImageTextureLayered.xml15
-rw-r--r--doc/classes/ImmediateMesh.xml57
-rw-r--r--doc/classes/Input.xml284
-rw-r--r--doc/classes/InputEvent.xml79
-rw-r--r--doc/classes/InputEventKey.xml6
-rw-r--r--doc/classes/InputMap.xml94
-rw-r--r--doc/classes/InstancePlaceholder.xml18
-rw-r--r--doc/classes/ItemList.xml382
-rw-r--r--doc/classes/JSON.xml30
-rw-r--r--doc/classes/JSONRPC.xml66
-rw-r--r--doc/classes/JavaClassWrapper.xml6
-rw-r--r--doc/classes/JavaScript.xml39
-rw-r--r--doc/classes/Label.xml57
-rw-r--r--doc/classes/Light2D.xml9
-rw-r--r--doc/classes/Light3D.xml15
-rw-r--r--doc/classes/LightmapGIData.xml36
-rw-r--r--doc/classes/Line2D.xml36
-rw-r--r--doc/classes/LineEdit.xml110
-rw-r--r--doc/classes/LinkButton.xml36
-rw-r--r--doc/classes/Listener3D.xml12
-rw-r--r--doc/classes/MainLoop.xml24
-rw-r--r--doc/classes/MarginContainer.xml8
-rw-r--r--doc/classes/Marshalls.xml42
-rw-r--r--doc/classes/Material.xml3
-rw-r--r--doc/classes/MenuButton.xml37
-rw-r--r--doc/classes/Mesh.xml57
-rw-r--r--doc/classes/MeshDataTool.xml255
-rw-r--r--doc/classes/MeshInstance3D.xml42
-rw-r--r--doc/classes/MeshLibrary.xml117
-rw-r--r--doc/classes/MethodTweener.xml20
-rw-r--r--doc/classes/MultiMesh.xml63
-rw-r--r--doc/classes/MultiplayerAPI.xml46
-rw-r--r--doc/classes/MultiplayerPeer.xml34
-rw-r--r--doc/classes/Mutex.xml9
-rw-r--r--doc/classes/NativeExtension.xml24
-rw-r--r--doc/classes/NativeExtensionManager.xml27
-rw-r--r--doc/classes/NavigationAgent2D.xml45
-rw-r--r--doc/classes/NavigationAgent3D.xml45
-rw-r--r--doc/classes/NavigationMesh.xml48
-rw-r--r--doc/classes/NavigationMeshGenerator.xml15
-rw-r--r--doc/classes/NavigationPolygon.xml72
-rw-r--r--doc/classes/NavigationRegion3D.xml3
-rw-r--r--doc/classes/NavigationServer2D.xml267
-rw-r--r--doc/classes/NavigationServer3D.xml327
-rw-r--r--doc/classes/NinePatchRect.xml15
-rw-r--r--doc/classes/Node.xml399
-rw-r--r--doc/classes/Node2D.xml72
-rw-r--r--doc/classes/Node3D.xml204
-rw-r--r--doc/classes/NodePath.xml57
-rw-r--r--doc/classes/OS.xml243
-rw-r--r--doc/classes/Object.xml288
-rw-r--r--doc/classes/OccluderInstance3D.xml15
-rw-r--r--doc/classes/OptimizedTranslation.xml6
-rw-r--r--doc/classes/OptionButton.xml178
-rw-r--r--doc/classes/PCKPacker.xml33
-rw-r--r--doc/classes/PackedByteArray.xml398
-rw-r--r--doc/classes/PackedColorArray.xml126
-rw-r--r--doc/classes/PackedDataContainer.xml9
-rw-r--r--doc/classes/PackedDataContainerRef.xml3
-rw-r--r--doc/classes/PackedFloat32Array.xml128
-rw-r--r--doc/classes/PackedFloat64Array.xml128
-rw-r--r--doc/classes/PackedInt32Array.xml128
-rw-r--r--doc/classes/PackedInt64Array.xml128
-rw-r--r--doc/classes/PackedScene.xml18
-rw-r--r--doc/classes/PackedStringArray.xml126
-rw-r--r--doc/classes/PackedVector2Array.xml132
-rw-r--r--doc/classes/PackedVector3Array.xml132
-rw-r--r--doc/classes/PacketPeer.xml30
-rw-r--r--doc/classes/PacketPeerDTLS.xml24
-rw-r--r--doc/classes/PacketPeerUDP.xml75
-rw-r--r--doc/classes/Panel.xml4
-rw-r--r--doc/classes/PanelContainer.xml2
-rw-r--r--doc/classes/ParticlesMaterial.xml60
-rw-r--r--doc/classes/Performance.xml42
-rw-r--r--doc/classes/PhysicalBone2D.xml6
-rw-r--r--doc/classes/PhysicalBone3D.xml24
-rw-r--r--doc/classes/PhysicsBody2D.xml54
-rw-r--r--doc/classes/PhysicsBody3D.xml69
-rw-r--r--doc/classes/PhysicsDirectBodyState2D.xml111
-rw-r--r--doc/classes/PhysicsDirectBodyState3D.xml111
-rw-r--r--doc/classes/PhysicsDirectSpaceState2D.xml96
-rw-r--r--doc/classes/PhysicsDirectSpaceState3D.xml54
-rw-r--r--doc/classes/PhysicsServer2D.xml903
-rw-r--r--doc/classes/PhysicsServer3D.xml1080
-rw-r--r--doc/classes/PinJoint3D.xml15
-rw-r--r--doc/classes/Plane.xml138
-rw-r--r--doc/classes/Polygon2D.xml51
-rw-r--r--doc/classes/PolygonPathFinder.xml57
-rw-r--r--doc/classes/PopupMenu.xml572
-rw-r--r--doc/classes/PopupPanel.xml2
-rw-r--r--doc/classes/PrimitiveMesh.xml3
-rw-r--r--doc/classes/ProgressBar.xml16
-rw-r--r--doc/classes/ProjectSettings.xml246
-rw-r--r--doc/classes/PropertyTweener.xml30
-rw-r--r--doc/classes/ProximityGroup3D.xml15
-rw-r--r--doc/classes/Quaternion.xml195
-rw-r--r--doc/classes/RDPipelineColorBlendStateAttachment.xml3
-rw-r--r--doc/classes/RDShaderFile.xml20
-rw-r--r--doc/classes/RDShaderSPIRV.xml (renamed from doc/classes/RDShaderBytecode.xml)32
-rw-r--r--doc/classes/RDShaderSource.xml15
-rw-r--r--doc/classes/RDTextureFormat.xml12
-rw-r--r--doc/classes/RDUniform.xml12
-rw-r--r--doc/classes/RID.xml48
-rw-r--r--doc/classes/RandomNumberGenerator.xml36
-rw-r--r--doc/classes/Range.xml12
-rw-r--r--doc/classes/RayCast2D.xml60
-rw-r--r--doc/classes/RayCast3D.xml60
-rw-r--r--doc/classes/Rect2.xml141
-rw-r--r--doc/classes/Rect2i.xml126
-rw-r--r--doc/classes/RefCounted.xml9
-rw-r--r--doc/classes/RemoteTransform2D.xml3
-rw-r--r--doc/classes/RemoteTransform3D.xml3
-rw-r--r--doc/classes/RenderingDevice.xml835
-rw-r--r--doc/classes/RenderingServer.xml4023
-rw-r--r--doc/classes/Resource.xml27
-rw-r--r--doc/classes/ResourceFormatLoader.xml48
-rw-r--r--doc/classes/ResourceFormatSaver.xml24
-rw-r--r--doc/classes/ResourceImporter.xml9
-rw-r--r--doc/classes/ResourceLoader.xml72
-rw-r--r--doc/classes/ResourcePreloader.xml39
-rw-r--r--doc/classes/ResourceSaver.xml18
-rw-r--r--doc/classes/ResourceUID.xml64
-rw-r--r--doc/classes/RichTextEffect.xml6
-rw-r--r--doc/classes/RichTextLabel.xml354
-rw-r--r--doc/classes/RigidBody2D.xml87
-rw-r--r--doc/classes/RigidBody3D.xml90
-rw-r--r--doc/classes/SceneState.xml123
-rw-r--r--doc/classes/SceneTree.xml167
-rw-r--r--doc/classes/Script.xml51
-rw-r--r--doc/classes/ScriptCreateDialog.xml18
-rw-r--r--doc/classes/ScriptEditor.xml45
-rw-r--r--doc/classes/ScriptEditorBase.xml27
-rw-r--r--doc/classes/ScrollContainer.xml14
-rw-r--r--doc/classes/Semaphore.xml9
-rw-r--r--doc/classes/Shader.xml24
-rw-r--r--doc/classes/ShaderMaterial.xml27
-rw-r--r--doc/classes/Shape2D.xml69
-rw-r--r--doc/classes/Shape3D.xml3
-rw-r--r--doc/classes/Shortcut.xml26
-rw-r--r--doc/classes/Signal.xml72
-rw-r--r--doc/classes/Skeleton2D.xml53
-rw-r--r--doc/classes/Skeleton3D.xml189
-rw-r--r--doc/classes/SkeletonIK3D.xml15
-rw-r--r--doc/classes/SkeletonModification2D.xml55
-rw-r--r--doc/classes/SkeletonModification2DCCDIK.xml107
-rw-r--r--doc/classes/SkeletonModification2DFABRIK.xml60
-rw-r--r--doc/classes/SkeletonModification2DJiggle.xml150
-rw-r--r--doc/classes/SkeletonModification2DLookAt.xml45
-rw-r--r--doc/classes/SkeletonModification2DPhysicalBones.xml30
-rw-r--r--doc/classes/SkeletonModification2DStackHolder.xml9
-rw-r--r--doc/classes/SkeletonModification2DTwoBoneIK.xml38
-rw-r--r--doc/classes/SkeletonModificationStack2D.xml53
-rw-r--r--doc/classes/Skin.xml66
-rw-r--r--doc/classes/SkinReference.xml6
-rw-r--r--doc/classes/SliderJoint3D.xml15
-rw-r--r--doc/classes/SoftBody3D.xml56
-rw-r--r--doc/classes/SpinBox.xml8
-rw-r--r--doc/classes/SplitContainer.xml6
-rw-r--r--doc/classes/SpringArm3D.xml18
-rw-r--r--doc/classes/Sprite2D.xml9
-rw-r--r--doc/classes/SpriteBase3D.xml21
-rw-r--r--doc/classes/SpriteFrames.xml117
-rw-r--r--doc/classes/StreamPeer.xml156
-rw-r--r--doc/classes/StreamPeerBuffer.xml24
-rw-r--r--doc/classes/StreamPeerSSL.xml39
-rw-r--r--doc/classes/StreamPeerTCP.xml42
-rw-r--r--doc/classes/StreamTexture2D.xml6
-rw-r--r--doc/classes/StreamTexture3D.xml6
-rw-r--r--doc/classes/StreamTextureLayered.xml6
-rw-r--r--doc/classes/String.xml543
-rw-r--r--doc/classes/StringName.xml39
-rw-r--r--doc/classes/StyleBox.xml51
-rw-r--r--doc/classes/StyleBoxFlat.xml96
-rw-r--r--doc/classes/StyleBoxTexture.xml51
-rw-r--r--doc/classes/SurfaceTool.xml207
-rw-r--r--doc/classes/SyntaxHighlighter.xml27
-rw-r--r--doc/classes/TCPServer.xml24
-rw-r--r--doc/classes/TabContainer.xml122
-rw-r--r--doc/classes/Tabs.xml222
-rw-r--r--doc/classes/TextEdit.xml560
-rw-r--r--doc/classes/TextLine.xml123
-rw-r--r--doc/classes/TextParagraph.xml273
-rw-r--r--doc/classes/TextServer.xml993
-rw-r--r--doc/classes/TextServerManager.xml39
-rw-r--r--doc/classes/Texture2D.xml69
-rw-r--r--doc/classes/Texture3D.xml18
-rw-r--r--doc/classes/TextureLayered.xml24
-rw-r--r--doc/classes/TextureProgressBar.xml15
-rw-r--r--doc/classes/Theme.xml492
-rw-r--r--doc/classes/Thread.xml24
-rw-r--r--doc/classes/TileData.xml177
-rw-r--r--doc/classes/TileMap.xml158
-rw-r--r--doc/classes/TileSet.xml356
-rw-r--r--doc/classes/TileSetAtlasSource.xml150
-rw-r--r--doc/classes/TileSetScenesCollectionSource.xml111
-rw-r--r--doc/classes/Time.xml120
-rw-r--r--doc/classes/Timer.xml12
-rw-r--r--doc/classes/TouchScreenButton.xml3
-rw-r--r--doc/classes/Transform2D.xml161
-rw-r--r--doc/classes/Transform3D.xml135
-rw-r--r--doc/classes/Translation.xml63
-rw-r--r--doc/classes/TranslationServer.xml63
-rw-r--r--doc/classes/Tree.xml350
-rw-r--r--doc/classes/TreeItem.xml600
-rw-r--r--doc/classes/Tween.xml151
-rw-r--r--doc/classes/Tweener.xml2
-rw-r--r--doc/classes/UDPServer.xml27
-rw-r--r--doc/classes/UndoRedo.xml108
-rw-r--r--doc/classes/VBoxContainer.xml2
-rw-r--r--doc/classes/VScrollBar.xml18
-rw-r--r--doc/classes/VSeparator.xml4
-rw-r--r--doc/classes/VSlider.xml14
-rw-r--r--doc/classes/VSplitContainer.xml8
-rw-r--r--doc/classes/Vector2.xml315
-rw-r--r--doc/classes/Vector2i.xml150
-rw-r--r--doc/classes/Vector3.xml345
-rw-r--r--doc/classes/Vector3i.xml156
-rw-r--r--doc/classes/VehicleWheel3D.xml9
-rw-r--r--doc/classes/VelocityTracker3D.xml15
-rw-r--r--doc/classes/VideoPlayer.xml15
-rw-r--r--doc/classes/Viewport.xml99
-rw-r--r--doc/classes/VisibleOnScreenNotifier2D.xml3
-rw-r--r--doc/classes/VisibleOnScreenNotifier3D.xml3
-rw-r--r--doc/classes/VisualInstance3D.xml33
-rw-r--r--doc/classes/VisualShader.xml186
-rw-r--r--doc/classes/VisualShaderNode.xml33
-rw-r--r--doc/classes/VisualShaderNodeCustom.xml66
-rw-r--r--doc/classes/VisualShaderNodeGroupBase.xml126
-rw-r--r--doc/classes/VisualShaderNodeInput.xml3
-rw-r--r--doc/classes/VoxelGI.xml12
-rw-r--r--doc/classes/VoxelGIData.xml42
-rw-r--r--doc/classes/WeakRef.xml3
-rw-r--r--doc/classes/Window.xml262
-rw-r--r--doc/classes/X509Certificate.xml12
-rw-r--r--doc/classes/XMLParser.xml75
-rw-r--r--doc/classes/XRAnchor3D.xml18
-rw-r--r--doc/classes/XRController3D.xml36
-rw-r--r--doc/classes/XRInterface.xml24
-rw-r--r--doc/classes/XRPositionalTracker.xml36
-rw-r--r--doc/classes/XRServer.xml105
-rw-r--r--doc/classes/bool.xml45
-rw-r--r--doc/classes/float.xml183
-rw-r--r--doc/classes/int.xml222
-rwxr-xr-xdoc/tools/makerst.py84
-rw-r--r--drivers/unix/file_access_unix.cpp2
-rw-r--r--drivers/unix/net_socket_posix.cpp6
-rw-r--r--drivers/unix/os_unix.cpp4
-rw-r--r--drivers/unix/os_unix.h1
-rw-r--r--drivers/vulkan/rendering_device_vulkan.cpp525
-rw-r--r--drivers/vulkan/rendering_device_vulkan.h10
-rw-r--r--drivers/vulkan/vulkan_context.cpp31
-rw-r--r--drivers/windows/file_access_windows.cpp2
-rw-r--r--editor/animation_bezier_editor.cpp13
-rw-r--r--editor/animation_track_editor.cpp64
-rw-r--r--editor/code_editor.cpp41
-rw-r--r--editor/code_editor.h3
-rw-r--r--editor/connections_dialog.cpp8
-rw-r--r--editor/create_dialog.cpp3
-rw-r--r--editor/debugger/SCsub2
-rw-r--r--editor/debugger/debug_adapter/SCsub5
-rw-r--r--editor/debugger/debug_adapter/debug_adapter_parser.cpp425
-rw-r--r--editor/debugger/debug_adapter/debug_adapter_parser.h88
-rw-r--r--editor/debugger/debug_adapter/debug_adapter_protocol.cpp497
-rw-r--r--editor/debugger/debug_adapter/debug_adapter_protocol.h140
-rw-r--r--editor/debugger/debug_adapter/debug_adapter_server.cpp102
-rw-r--r--editor/debugger/debug_adapter/debug_adapter_server.h59
-rw-r--r--editor/debugger/debug_adapter/debug_adapter_types.h270
-rw-r--r--editor/debugger/editor_debugger_inspector.cpp4
-rw-r--r--editor/debugger/editor_debugger_node.cpp15
-rw-r--r--editor/debugger/editor_debugger_node.h5
-rw-r--r--editor/debugger/editor_profiler.cpp5
-rw-r--r--editor/debugger/editor_visual_profiler.cpp20
-rw-r--r--editor/debugger/script_editor_debugger.cpp59
-rw-r--r--editor/debugger/script_editor_debugger.h10
-rw-r--r--editor/dependency_editor.cpp33
-rw-r--r--editor/doc_tools.cpp229
-rw-r--r--editor/editor_audio_buses.cpp55
-rw-r--r--editor/editor_autoload_settings.cpp47
-rw-r--r--editor/editor_data.cpp38
-rw-r--r--editor/editor_export.cpp57
-rw-r--r--editor/editor_feature_profile.cpp25
-rw-r--r--editor/editor_file_dialog.cpp4
-rw-r--r--editor/editor_file_system.cpp235
-rw-r--r--editor/editor_file_system.h4
-rw-r--r--editor/editor_folding.cpp36
-rw-r--r--editor/editor_help.cpp8
-rw-r--r--editor/editor_help_search.cpp4
-rw-r--r--editor/editor_help_search.h4
-rw-r--r--editor/editor_inspector.cpp260
-rw-r--r--editor/editor_inspector.h4
-rw-r--r--editor/editor_layouts_dialog.cpp4
-rw-r--r--editor/editor_node.cpp112
-rw-r--r--editor/editor_path.cpp10
-rw-r--r--editor/editor_plugin_settings.cpp10
-rw-r--r--editor/editor_properties.cpp292
-rw-r--r--editor/editor_resource_picker.cpp58
-rw-r--r--editor/editor_resource_picker.h4
-rw-r--r--editor/editor_run.cpp13
-rw-r--r--editor/editor_sectioned_inspector.cpp7
-rw-r--r--editor/editor_settings.cpp49
-rw-r--r--editor/editor_spin_slider.cpp10
-rw-r--r--editor/editor_themes.cpp20
-rw-r--r--editor/filesystem_dock.cpp30
-rw-r--r--editor/find_in_files.cpp5
-rw-r--r--editor/groups_editor.cpp20
-rw-r--r--editor/icons/ImmediateGeometry3D.svg1
-rw-r--r--editor/icons/TileMapHighlightSelected.svg1
-rw-r--r--editor/import/editor_import_collada.cpp4
-rw-r--r--editor/import/editor_importer_bake_reset.cpp223
-rw-r--r--editor/import/editor_importer_bake_reset.h54
-rw-r--r--editor/import/resource_importer_obj.cpp5
-rw-r--r--editor/import/resource_importer_scene.cpp66
-rw-r--r--editor/import/resource_importer_scene.h3
-rw-r--r--editor/import/scene_import_settings.cpp32
-rw-r--r--editor/import/scene_importer_mesh.cpp8
-rw-r--r--editor/import_defaults_editor.cpp28
-rw-r--r--editor/import_dock.cpp100
-rw-r--r--editor/inspector_dock.cpp41
-rw-r--r--editor/localization_editor.cpp27
-rw-r--r--editor/multi_node_edit.cpp40
-rw-r--r--editor/plugin_config_dialog.cpp2
-rw-r--r--editor/plugins/animation_blend_space_1d_editor.cpp16
-rw-r--r--editor/plugins/animation_blend_space_2d_editor.cpp16
-rw-r--r--editor/plugins/animation_blend_tree_editor_plugin.cpp84
-rw-r--r--editor/plugins/animation_player_editor_plugin.cpp28
-rw-r--r--editor/plugins/animation_state_machine_editor.cpp40
-rw-r--r--editor/plugins/animation_tree_editor_plugin.cpp4
-rw-r--r--editor/plugins/asset_library_editor_plugin.cpp5
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp411
-rw-r--r--editor/plugins/canvas_item_editor_plugin.h69
-rw-r--r--editor/plugins/collision_shape_2d_editor_plugin.cpp57
-rw-r--r--editor/plugins/collision_shape_2d_editor_plugin.h13
-rw-r--r--editor/plugins/cpu_particles_2d_editor_plugin.cpp4
-rw-r--r--editor/plugins/editor_debugger_plugin.cpp2
-rw-r--r--editor/plugins/editor_debugger_plugin.h2
-rw-r--r--editor/plugins/editor_preview_plugins.cpp10
-rw-r--r--editor/plugins/gpu_particles_2d_editor_plugin.cpp4
-rw-r--r--editor/plugins/material_editor_plugin.cpp40
-rw-r--r--editor/plugins/mesh_instance_3d_editor_plugin.cpp11
-rw-r--r--editor/plugins/mesh_library_editor_plugin.cpp12
-rw-r--r--editor/plugins/node_3d_editor_gizmos.cpp (renamed from editor/node_3d_editor_gizmos.cpp)923
-rw-r--r--editor/plugins/node_3d_editor_gizmos.h (renamed from editor/node_3d_editor_gizmos.h)257
-rw-r--r--editor/plugins/node_3d_editor_plugin.cpp1775
-rw-r--r--editor/plugins/node_3d_editor_plugin.h211
-rw-r--r--editor/plugins/path_3d_editor_plugin.cpp56
-rw-r--r--editor/plugins/path_3d_editor_plugin.h10
-rw-r--r--editor/plugins/polygon_2d_editor_plugin.cpp30
-rw-r--r--editor/plugins/polygon_2d_editor_plugin.h12
-rw-r--r--editor/plugins/resource_preloader_editor_plugin.cpp12
-rw-r--r--editor/plugins/root_motion_editor_plugin.cpp4
-rw-r--r--editor/plugins/script_editor_plugin.cpp36
-rw-r--r--editor/plugins/script_text_editor.cpp69
-rw-r--r--editor/plugins/shader_editor_plugin.cpp20
-rw-r--r--editor/plugins/shader_file_editor_plugin.cpp6
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.cpp26
-rw-r--r--editor/plugins/texture_editor_plugin.cpp6
-rw-r--r--editor/plugins/texture_editor_plugin.h6
-rw-r--r--editor/plugins/texture_region_editor_plugin.cpp27
-rw-r--r--editor/plugins/theme_editor_plugin.cpp269
-rw-r--r--editor/plugins/theme_editor_plugin.h2
-rw-r--r--editor/plugins/tiles/atlas_merging_dialog.cpp2
-rw-r--r--editor/plugins/tiles/tile_atlas_view.cpp5
-rw-r--r--editor/plugins/tiles/tile_data_editors.cpp2
-rw-r--r--editor/plugins/tiles/tile_data_editors.h2
-rw-r--r--editor/plugins/tiles/tile_map_editor.cpp694
-rw-r--r--editor/plugins/tiles/tile_map_editor.h35
-rw-r--r--editor/plugins/tiles/tile_proxies_manager_dialog.cpp12
-rw-r--r--editor/plugins/tiles/tile_proxies_manager_dialog.h2
-rw-r--r--editor/plugins/tiles/tile_set_atlas_source_editor.cpp6
-rw-r--r--editor/plugins/version_control_editor_plugin.cpp26
-rw-r--r--editor/plugins/version_control_editor_plugin.h1
-rw-r--r--editor/plugins/visual_shader_editor_plugin.cpp286
-rw-r--r--editor/project_export.cpp12
-rw-r--r--editor/project_manager.cpp58
-rw-r--r--editor/project_settings_editor.cpp15
-rw-r--r--editor/property_editor.cpp20
-rw-r--r--editor/property_selector.cpp48
-rw-r--r--editor/quick_open.cpp11
-rw-r--r--editor/scene_tree_dock.cpp165
-rw-r--r--editor/scene_tree_editor.cpp39
-rw-r--r--editor/scene_tree_editor.h3
-rw-r--r--editor/script_create_dialog.cpp18
-rw-r--r--editor/settings_config_dialog.cpp25
-rw-r--r--editor/translations/af.po1951
-rw-r--r--editor/translations/ar.po2407
-rw-r--r--editor/translations/az.po1734
-rw-r--r--editor/translations/bg.po2113
-rw-r--r--editor/translations/bn.po2370
-rw-r--r--editor/translations/br.po1701
-rw-r--r--editor/translations/ca.po2392
-rw-r--r--editor/translations/cs.po2382
-rw-r--r--editor/translations/da.po2188
-rw-r--r--editor/translations/de.po2408
-rw-r--r--editor/translations/editor.pot1694
-rw-r--r--editor/translations/el.po2397
-rw-r--r--editor/translations/eo.po2437
-rw-r--r--editor/translations/es.po2421
-rw-r--r--editor/translations/es_AR.po2408
-rw-r--r--editor/translations/et.po1935
-rw-r--r--editor/translations/eu.po1938
-rw-r--r--editor/translations/fa.po2142
-rw-r--r--editor/translations/fi.po2396
-rw-r--r--editor/translations/fil.po1726
-rw-r--r--editor/translations/fr.po2386
-rw-r--r--editor/translations/ga.po1707
-rw-r--r--editor/translations/gl.po2162
-rw-r--r--editor/translations/he.po2221
-rw-r--r--editor/translations/hi.po2092
-rw-r--r--editor/translations/hr.po1821
-rw-r--r--editor/translations/hu.po2228
-rw-r--r--editor/translations/id.po2373
-rw-r--r--editor/translations/is.po1761
-rw-r--r--editor/translations/it.po2586
-rw-r--r--editor/translations/ja.po2405
-rw-r--r--editor/translations/ka.po1850
-rw-r--r--editor/translations/km.po1695
-rw-r--r--editor/translations/ko.po2391
-rw-r--r--editor/translations/lt.po1903
-rw-r--r--editor/translations/lv.po1838
-rw-r--r--editor/translations/mi.po1692
-rw-r--r--editor/translations/mk.po1704
-rw-r--r--editor/translations/ml.po1702
-rw-r--r--editor/translations/mr.po1707
-rw-r--r--editor/translations/ms.po2356
-rw-r--r--editor/translations/nb.po2250
-rw-r--r--editor/translations/nl.po2385
-rw-r--r--editor/translations/or.po1692
-rw-r--r--editor/translations/pl.po2409
-rw-r--r--editor/translations/pr.po1912
-rw-r--r--editor/translations/pt.po2383
-rw-r--r--editor/translations/pt_BR.po2399
-rw-r--r--editor/translations/ro.po2194
-rw-r--r--editor/translations/ru.po2397
-rw-r--r--editor/translations/si.po1727
-rw-r--r--editor/translations/sk.po2198
-rw-r--r--editor/translations/sl.po2203
-rw-r--r--editor/translations/sq.po2113
-rw-r--r--editor/translations/sr_Cyrl.po2371
-rw-r--r--editor/translations/sr_Latn.po1759
-rw-r--r--editor/translations/sv.po2202
-rw-r--r--editor/translations/ta.po1742
-rw-r--r--editor/translations/te.po1693
-rw-r--r--editor/translations/th.po2384
-rw-r--r--editor/translations/tr.po2400
-rw-r--r--editor/translations/tt.po1692
-rw-r--r--editor/translations/tzm.po1692
-rw-r--r--editor/translations/uk.po2393
-rw-r--r--editor/translations/ur_PK.po1845
-rw-r--r--editor/translations/vi.po2351
-rw-r--r--editor/translations/zh_CN.po2447
-rw-r--r--editor/translations/zh_HK.po2152
-rw-r--r--editor/translations/zh_TW.po2358
-rw-r--r--main/main.cpp40
-rw-r--r--main/main_timer_sync.cpp26
-rw-r--r--main/main_timer_sync.h22
-rw-r--r--main/performance.cpp8
-rw-r--r--main/performance.h12
-rw-r--r--methods.py11
-rw-r--r--misc/dist/linux/org.godotengine.Godot.xml15
-rw-r--r--misc/dist/shell/_godot.zsh-completion2
-rw-r--r--misc/dist/shell/godot.bash-completion2
-rw-r--r--misc/dist/shell/godot.fish2
-rw-r--r--misc/dist/windows/modpath.pas2
-rwxr-xr-xmisc/scripts/check_ci_log.py12
-rwxr-xr-xmisc/scripts/make_tarball.sh66
-rw-r--r--modules/bullet/godot_result_callbacks.cpp14
-rw-r--r--modules/bullet/space_bullet.cpp2
-rw-r--r--modules/camera/camera_osx.h2
-rw-r--r--modules/camera/camera_osx.mm2
-rw-r--r--modules/csg/csg.cpp4
-rw-r--r--modules/csg/csg_gizmos.cpp50
-rw-r--r--modules/csg/csg_gizmos.h22
-rw-r--r--modules/csg/csg_shape.cpp118
-rw-r--r--modules/csg/doc_classes/CSGShape3D.xml36
-rw-r--r--modules/enet/config.py2
-rw-r--r--modules/enet/doc_classes/ENetConnection.xml194
-rw-r--r--modules/enet/doc_classes/ENetMultiplayerPeer.xml189
-rw-r--r--modules/enet/doc_classes/ENetPacketPeer.xml183
-rw-r--r--modules/enet/enet_connection.cpp470
-rw-r--r--modules/enet/enet_connection.h138
-rw-r--r--modules/enet/enet_multiplayer_peer.cpp1121
-rw-r--r--modules/enet/enet_multiplayer_peer.h103
-rw-r--r--modules/enet/enet_packet_peer.cpp263
-rw-r--r--modules/enet/enet_packet_peer.h131
-rw-r--r--modules/enet/register_types.cpp4
-rw-r--r--modules/fbx/fbx_parser/ByteSwapper.h2
-rw-r--r--modules/fbx/fbx_parser/FBXDocument.cpp2
-rw-r--r--modules/gdnative/doc_classes/GDNative.xml18
-rw-r--r--modules/gdnative/doc_classes/GDNativeLibrary.xml6
-rw-r--r--modules/gdnative/doc_classes/NativeScript.xml24
-rw-r--r--modules/gdnative/doc_classes/PluginScript.xml3
-rw-r--r--modules/gdnative/doc_classes/VideoStreamGDNative.xml9
-rw-r--r--modules/gdnative/gdnative.cpp16
-rw-r--r--modules/gdnative/gdnative/variant.cpp16
-rw-r--r--modules/gdnative/include/net/godot_net.h2
-rw-r--r--modules/gdnative/nativescript/api_generator.cpp22
-rw-r--r--modules/gdnative/nativescript/nativescript.cpp6
-rw-r--r--modules/gdnative/net/multiplayer_peer_gdnative.cpp11
-rw-r--r--modules/gdnative/net/multiplayer_peer_gdnative.h2
-rw-r--r--modules/gdnative/register_types.cpp12
-rw-r--r--modules/gdnative/tests/test_variant.h4
-rw-r--r--modules/gdscript/doc_classes/@GDScript.xml90
-rw-r--r--modules/gdscript/doc_classes/GDScript.xml6
-rw-r--r--modules/gdscript/editor/gdscript_highlighter.cpp36
-rw-r--r--modules/gdscript/gdscript.cpp66
-rw-r--r--modules/gdscript/gdscript_analyzer.cpp55
-rw-r--r--modules/gdscript/gdscript_byte_codegen.cpp16
-rw-r--r--modules/gdscript/gdscript_compiler.cpp3
-rw-r--r--modules/gdscript/gdscript_editor.cpp167
-rw-r--r--modules/gdscript/gdscript_function.cpp9
-rw-r--r--modules/gdscript/gdscript_parser.cpp23
-rw-r--r--modules/gdscript/gdscript_parser.h2
-rw-r--r--modules/gdscript/gdscript_utility_functions.cpp4
-rw-r--r--modules/gdscript/language_server/gdscript_extend_parser.cpp20
-rw-r--r--modules/gdscript/language_server/gdscript_language_protocol.cpp4
-rw-r--r--modules/gdscript/language_server/gdscript_text_document.cpp43
-rw-r--r--modules/gdscript/language_server/gdscript_text_document.h2
-rw-r--r--modules/gdscript/language_server/gdscript_workspace.cpp112
-rw-r--r--modules/gdscript/language_server/gdscript_workspace.h3
-rw-r--r--modules/gdscript/language_server/lsp.hpp112
-rw-r--r--modules/gdscript/tests/gdscript_test_runner.cpp14
-rw-r--r--modules/gdscript/tests/test_gdscript.cpp12
-rw-r--r--modules/glslang/register_types.cpp2
-rw-r--r--modules/gltf/doc_classes/GLTFSkeleton.xml30
-rw-r--r--modules/gltf/doc_classes/GLTFSkin.xml27
-rw-r--r--modules/gltf/doc_classes/GLTFState.xml153
-rw-r--r--modules/gltf/doc_classes/PackedSceneGLTF.xml45
-rw-r--r--modules/gltf/gltf_document.cpp32
-rw-r--r--modules/gridmap/doc_classes/GridMap.xml120
-rw-r--r--modules/gridmap/grid_map.cpp8
-rw-r--r--modules/gridmap/grid_map_editor_plugin.cpp21
-rw-r--r--modules/lightmapper_rd/lightmapper_rd.cpp16
-rw-r--r--modules/mono/.editorconfig14
-rw-r--r--modules/mono/class_db_api_json.cpp38
-rw-r--r--modules/mono/csharp_script.cpp137
-rw-r--r--modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/Godot.SourceGenerators.csproj5
-rw-r--r--modules/mono/editor/GodotTools/.gitignore1
-rw-r--r--modules/mono/editor/GodotTools/GodotTools.IdeMessaging.CLI/Program.cs3
-rw-r--r--modules/mono/editor/GodotTools/GodotTools.ProjectEditor/DotNetSolution.cs4
-rw-r--r--modules/mono/editor/GodotTools/GodotTools/Build/MSBuildPanel.cs14
-rw-r--r--modules/mono/editor/GodotTools/GodotTools/Export/AotBuilder.cs34
-rw-r--r--modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs14
-rw-r--r--modules/mono/editor/GodotTools/GodotTools/GodotTools.csproj3
-rw-r--r--modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathLocator.cs8
-rw-r--r--modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathManager.cs2
-rw-r--r--modules/mono/editor/GodotTools/GodotTools/Utils/OS.cs36
-rw-r--r--modules/mono/editor/bindings_generator.cpp175
-rw-r--r--modules/mono/editor/bindings_generator.h30
-rw-r--r--modules/mono/editor/code_completion.cpp32
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/AABB.cs22
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Array.cs222
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Basis.cs12
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs4
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Colors.cs1
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/DelegateUtils.cs24
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/DynamicObject.cs1
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/GD.cs35
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTraceListener.cs1
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/GodotUnhandledExceptionEvent.cs4
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs4
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs20
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/MathfEx.cs7
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Plane.cs20
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Quaternion.cs8
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2.cs16
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2i.cs12
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/StringExtensions.cs370
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Transform2D.cs12
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Transform3D.cs14
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2.cs22
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2i.cs17
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3.cs24
-rw-r--r--modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3i.cs19
-rw-r--r--modules/mono/glue/base_object_glue.cpp4
-rw-r--r--modules/mono/mono_gd/gd_mono.cpp4
-rw-r--r--modules/mono/mono_gd/gd_mono_assembly.cpp4
-rw-r--r--modules/mono/mono_gd/gd_mono_class.cpp8
-rw-r--r--modules/navigation/navigation_mesh_editor_plugin.cpp4
-rw-r--r--modules/navigation/navigation_mesh_generator.cpp4
-rw-r--r--modules/opensimplex/doc_classes/OpenSimplexNoise.xml72
-rw-r--r--modules/regex/doc_classes/RegEx.xml63
-rw-r--r--modules/regex/doc_classes/RegExMatch.xml21
-rw-r--r--modules/text_server_adv/text_server_adv.cpp8
-rw-r--r--modules/text_server_fb/text_server_fb.cpp4
-rw-r--r--modules/theora/doc_classes/VideoStreamTheora.xml9
-rw-r--r--modules/upnp/doc_classes/UPNP.xml78
-rw-r--r--modules/upnp/doc_classes/UPNPDevice.xml33
-rw-r--r--modules/visual_script/doc_classes/VisualScript.xml369
-rw-r--r--modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml77
-rw-r--r--modules/visual_script/doc_classes/VisualScriptConstructor.xml18
-rw-r--r--modules/visual_script/doc_classes/VisualScriptCustomNode.xml93
-rw-r--r--modules/visual_script/doc_classes/VisualScriptEditor.xml21
-rw-r--r--modules/visual_script/doc_classes/VisualScriptFunctionState.xml21
-rw-r--r--modules/visual_script/doc_classes/VisualScriptLists.xml72
-rw-r--r--modules/visual_script/doc_classes/VisualScriptNode.xml21
-rw-r--r--modules/visual_script/doc_classes/VisualScriptSubCall.xml6
-rw-r--r--modules/visual_script/visual_script.cpp131
-rw-r--r--modules/visual_script/visual_script_builtin_funcs.cpp23
-rw-r--r--modules/visual_script/visual_script_builtin_funcs.h1
-rw-r--r--modules/visual_script/visual_script_editor.cpp266
-rw-r--r--modules/visual_script/visual_script_flow_control.cpp4
-rw-r--r--modules/visual_script/visual_script_func_nodes.cpp68
-rw-r--r--modules/visual_script/visual_script_func_nodes.h3
-rw-r--r--modules/visual_script/visual_script_nodes.cpp54
-rw-r--r--modules/visual_script/visual_script_property_selector.cpp40
-rw-r--r--modules/visual_script/visual_script_yield_nodes.cpp10
-rw-r--r--modules/webm/doc_classes/VideoStreamWebm.xml9
-rw-r--r--modules/webrtc/doc_classes/WebRTCDataChannel.xml36
-rw-r--r--modules/webrtc/doc_classes/WebRTCMultiplayerPeer.xml47
-rw-r--r--modules/webrtc/doc_classes/WebRTCPeerConnection.xml75
-rw-r--r--modules/webrtc/webrtc_multiplayer_peer.cpp131
-rw-r--r--modules/webrtc/webrtc_multiplayer_peer.h24
-rw-r--r--modules/websocket/doc_classes/WebSocketClient.xml42
-rw-r--r--modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml24
-rw-r--r--modules/websocket/doc_classes/WebSocketPeer.xml42
-rw-r--r--modules/websocket/doc_classes/WebSocketServer.xml75
-rw-r--r--modules/websocket/emws_client.cpp5
-rw-r--r--modules/websocket/emws_client.h1
-rw-r--r--modules/websocket/emws_peer.cpp13
-rw-r--r--modules/websocket/emws_peer.h5
-rw-r--r--modules/websocket/library_godot_websocket.js14
-rw-r--r--modules/websocket/websocket_multiplayer_peer.cpp34
-rw-r--r--modules/websocket/websocket_multiplayer_peer.h3
-rw-r--r--modules/websocket/websocket_peer.cpp1
-rw-r--r--modules/websocket/websocket_peer.h1
-rw-r--r--modules/websocket/wsl_peer.cpp12
-rw-r--r--modules/websocket/wsl_peer.h4
-rw-r--r--modules/websocket/wsl_server.cpp14
-rw-r--r--modules/webxr/doc_classes/WebXRInterface.xml41
-rw-r--r--platform/android/display_server_android.cpp9
-rw-r--r--platform/android/display_server_android.h2
-rw-r--r--platform/android/export/export.cpp61
-rw-r--r--platform/android/java/lib/src/com/google/android/vending/licensing/Obfuscator.java2
-rw-r--r--platform/android/java_class_wrapper.cpp16
-rw-r--r--platform/android/os_android.cpp7
-rw-r--r--platform/android/os_android.h2
-rw-r--r--platform/iphone/display_server_iphone.h2
-rw-r--r--platform/iphone/display_server_iphone.mm6
-rw-r--r--platform/iphone/godot_view_gesture_recognizer.h2
-rw-r--r--platform/iphone/os_iphone.h5
-rw-r--r--platform/iphone/os_iphone.mm12
-rw-r--r--platform/javascript/display_server_javascript.cpp4
-rw-r--r--platform/javascript/display_server_javascript.h1
-rw-r--r--platform/javascript/js/libs/audio.worklet.js2
-rw-r--r--platform/javascript/os_javascript.cpp8
-rw-r--r--platform/javascript/os_javascript.h3
-rw-r--r--platform/linuxbsd/display_server_x11.cpp74
-rw-r--r--platform/linuxbsd/display_server_x11.h2
-rw-r--r--platform/linuxbsd/os_linuxbsd.cpp66
-rw-r--r--platform/linuxbsd/os_linuxbsd.h2
-rw-r--r--platform/osx/display_server_osx.h6
-rw-r--r--platform/osx/display_server_osx.mm264
-rw-r--r--platform/osx/export/export.cpp5
-rw-r--r--platform/osx/joypad_osx.cpp3
-rw-r--r--platform/osx/os_osx.h2
-rw-r--r--platform/osx/os_osx.mm186
-rw-r--r--platform/windows/detect.py3
-rw-r--r--platform/windows/display_server_windows.cpp8
-rw-r--r--platform/windows/display_server_windows.h2
-rw-r--r--platform/windows/os_windows.cpp12
-rw-r--r--platform/windows/os_windows.h2
-rw-r--r--scene/2d/animated_sprite_2d.cpp2
-rw-r--r--scene/2d/camera_2d.cpp2
-rw-r--r--scene/2d/physics_body_2d.cpp10
-rw-r--r--scene/2d/tile_map.cpp1619
-rw-r--r--scene/2d/tile_map.h127
-rw-r--r--scene/3d/audio_stream_player_3d.cpp4
-rw-r--r--scene/3d/camera_3d.cpp8
-rw-r--r--scene/3d/collision_polygon_3d.cpp6
-rw-r--r--scene/3d/collision_shape_3d.cpp6
-rw-r--r--scene/3d/decal.cpp2
-rw-r--r--scene/3d/gpu_particles_3d.cpp2
-rw-r--r--scene/3d/gpu_particles_collision_3d.cpp24
-rw-r--r--scene/3d/light_3d.cpp4
-rw-r--r--scene/3d/lightmap_gi.cpp2
-rw-r--r--scene/3d/mesh_instance_3d.cpp8
-rw-r--r--scene/3d/navigation_region_3d.cpp6
-rw-r--r--scene/3d/node_3d.cpp153
-rw-r--r--scene/3d/node_3d.h20
-rw-r--r--scene/3d/occluder_instance_3d.cpp4
-rw-r--r--scene/3d/path_3d.cpp20
-rw-r--r--scene/3d/physics_body_3d.cpp19
-rw-r--r--scene/3d/physics_joint_3d.cpp20
-rw-r--r--scene/3d/proximity_group_3d.cpp1
-rw-r--r--scene/3d/ray_cast_3d.cpp6
-rw-r--r--scene/3d/reflection_probe.cpp4
-rw-r--r--scene/3d/skeleton_3d.cpp14
-rw-r--r--scene/3d/soft_body_3d.cpp3
-rw-r--r--scene/3d/spring_arm_3d.cpp2
-rw-r--r--scene/3d/sprite_3d.cpp8
-rw-r--r--scene/3d/vehicle_body_3d.cpp4
-rw-r--r--scene/3d/visible_on_screen_notifier_3d.cpp2
-rw-r--r--scene/3d/visual_instance_3d.cpp15
-rw-r--r--scene/3d/visual_instance_3d.h1
-rw-r--r--scene/3d/voxel_gi.cpp8
-rw-r--r--scene/animation/animation_blend_tree.cpp12
-rw-r--r--scene/animation/animation_cache.cpp10
-rw-r--r--scene/animation/animation_node_state_machine.cpp11
-rw-r--r--scene/animation/animation_player.cpp26
-rw-r--r--scene/animation/animation_tree.cpp50
-rw-r--r--scene/animation/tween.cpp10
-rw-r--r--scene/debugger/scene_debugger.cpp9
-rw-r--r--scene/gui/base_button.cpp4
-rw-r--r--scene/gui/button.cpp4
-rw-r--r--scene/gui/code_edit.cpp515
-rw-r--r--scene/gui/code_edit.h55
-rw-r--r--scene/gui/control.cpp210
-rw-r--r--scene/gui/control.h8
-rw-r--r--scene/gui/dialogs.cpp3
-rw-r--r--scene/gui/file_dialog.cpp6
-rw-r--r--scene/gui/graph_edit.cpp76
-rw-r--r--scene/gui/label.cpp4
-rw-r--r--scene/gui/line_edit.cpp4
-rw-r--r--scene/gui/menu_button.cpp45
-rw-r--r--scene/gui/menu_button.h2
-rw-r--r--scene/gui/popup_menu.cpp38
-rw-r--r--scene/gui/rich_text_label.cpp42
-rw-r--r--scene/gui/shortcut.cpp33
-rw-r--r--scene/gui/shortcut.h12
-rw-r--r--scene/gui/tab_container.cpp11
-rw-r--r--scene/gui/tabs.cpp6
-rw-r--r--scene/gui/text_edit.cpp376
-rw-r--r--scene/gui/text_edit.h37
-rw-r--r--scene/gui/tree.h4
-rw-r--r--scene/main/canvas_item.cpp15
-rw-r--r--scene/main/http_request.cpp10
-rw-r--r--scene/main/instance_placeholder.cpp22
-rw-r--r--scene/main/node.cpp62
-rw-r--r--scene/main/node.h12
-rw-r--r--scene/main/scene_tree.cpp42
-rw-r--r--scene/main/scene_tree.h24
-rw-r--r--scene/main/timer.cpp8
-rw-r--r--scene/main/timer.h10
-rw-r--r--scene/main/viewport.cpp39
-rw-r--r--scene/main/viewport.h3
-rw-r--r--scene/main/window.cpp190
-rw-r--r--scene/main/window.h6
-rw-r--r--scene/register_scene_types.cpp6
-rw-r--r--scene/resources/animation.h8
-rw-r--r--scene/resources/curve.cpp10
-rw-r--r--scene/resources/default_theme/default_theme.cpp14
-rw-r--r--scene/resources/default_theme/dialog_bg.pngbin0 -> 1314 bytes
-rw-r--r--scene/resources/default_theme/popup_window.pngbin903 -> 921 bytes
-rw-r--r--scene/resources/default_theme/theme_data.h6
-rw-r--r--scene/resources/environment.cpp1
-rw-r--r--scene/resources/immediate_mesh.cpp2
-rw-r--r--scene/resources/material.cpp4
-rw-r--r--scene/resources/navigation_mesh.cpp8
-rw-r--r--scene/resources/packed_scene.cpp34
-rw-r--r--scene/resources/resource_format_text.cpp137
-rw-r--r--scene/resources/resource_format_text.h4
-rw-r--r--scene/resources/shader.cpp5
-rw-r--r--scene/resources/sprite_frames.cpp4
-rw-r--r--scene/resources/surface_tool.cpp1
-rw-r--r--scene/resources/syntax_highlighter.cpp4
-rw-r--r--scene/resources/texture.cpp6
-rw-r--r--scene/resources/theme.cpp12
-rw-r--r--scene/resources/tile_set.cpp886
-rw-r--r--scene/resources/tile_set.h74
-rw-r--r--scene/resources/visual_shader.cpp151
-rw-r--r--scene/resources/visual_shader.h10
-rw-r--r--scene/scene_string_names.cpp1
-rw-r--r--scene/scene_string_names.h1
-rw-r--r--servers/display_server.cpp2
-rw-r--r--servers/display_server.h2
-rw-r--r--servers/display_server_headless.h2
-rw-r--r--servers/physics_2d/body_2d_sw.cpp6
-rw-r--r--servers/physics_2d/body_pair_2d_sw.cpp40
-rw-r--r--servers/physics_2d/body_pair_2d_sw.h4
-rw-r--r--servers/physics_2d/collision_object_2d_sw.h4
-rw-r--r--servers/physics_2d/space_2d_sw.cpp2
-rw-r--r--servers/physics_2d/step_2d_sw.cpp6
-rw-r--r--servers/physics_3d/body_pair_3d_sw.cpp156
-rw-r--r--servers/physics_3d/body_pair_3d_sw.h9
-rw-r--r--servers/physics_3d/collision_object_3d_sw.h4
-rw-r--r--servers/physics_3d/joints/generic_6dof_joint_3d_sw.h4
-rw-r--r--servers/physics_3d/joints/slider_joint_3d_sw.cpp2
-rw-r--r--servers/physics_3d/space_3d_sw.cpp2
-rw-r--r--servers/register_server_types.cpp2
-rw-r--r--servers/rendering/renderer_rd/cluster_builder_rd.h2
-rw-r--r--servers/rendering/renderer_rd/effects_rd.cpp427
-rw-r--r--servers/rendering/renderer_rd/effects_rd.h130
-rw-r--r--servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp15
-rw-r--r--servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp2
-rw-r--r--servers/rendering/renderer_rd/renderer_compositor_rd.cpp5
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_render_rd.cpp161
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_render_rd.h10
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp171
-rw-r--r--servers/rendering/renderer_rd/renderer_scene_sky_rd.h8
-rw-r--r--servers/rendering/renderer_rd/renderer_storage_rd.cpp49
-rw-r--r--servers/rendering/renderer_rd/renderer_storage_rd.h3
-rw-r--r--servers/rendering/renderer_rd/shader_compiler_rd.cpp16
-rw-r--r--servers/rendering/renderer_rd/shader_rd.cpp179
-rw-r--r--servers/rendering/renderer_rd/shader_rd.h2
-rw-r--r--servers/rendering/renderer_rd/shaders/blur_raster.glsl228
-rw-r--r--servers/rendering/renderer_rd/shaders/blur_raster_inc.glsl36
-rw-r--r--servers/rendering/renderer_rd/shaders/cubemap_downsampler.glsl48
-rw-r--r--servers/rendering/renderer_rd/shaders/cubemap_downsampler_inc.glsl48
-rw-r--r--servers/rendering/renderer_rd/shaders/cubemap_downsampler_raster.glsl163
-rw-r--r--servers/rendering/renderer_rd/shaders/cubemap_filter_raster.glsl256
-rw-r--r--servers/rendering/renderer_rd/shaders/cubemap_roughness.glsl95
-rw-r--r--servers/rendering/renderer_rd/shaders/cubemap_roughness_inc.glsl94
-rw-r--r--servers/rendering/renderer_rd/shaders/cubemap_roughness_raster.glsl63
-rw-r--r--servers/rendering/renderer_rd/shaders/luminance_reduce_raster.glsl74
-rw-r--r--servers/rendering/renderer_rd/shaders/luminance_reduce_raster_inc.glsl11
-rw-r--r--servers/rendering/renderer_rd/shaders/particles_copy.glsl2
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl2
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl2
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl2
-rw-r--r--servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl2
-rw-r--r--servers/rendering/renderer_rd/shaders/sdfgi_direct_light.glsl8
-rw-r--r--servers/rendering/renderer_rd/shaders/sdfgi_integrate.glsl4
-rw-r--r--servers/rendering/renderer_rd/shaders/sdfgi_preprocess.glsl6
-rw-r--r--servers/rendering/renderer_scene_cull.cpp38
-rw-r--r--servers/rendering/rendering_device.cpp81
-rw-r--r--servers/rendering/rendering_device.h36
-rw-r--r--servers/rendering/rendering_device_binds.cpp4
-rw-r--r--servers/rendering/rendering_device_binds.h50
-rw-r--r--servers/rendering/shader_language.cpp89
-rw-r--r--servers/rendering/shader_language.h16
-rw-r--r--servers/rendering_server.cpp28
-rw-r--r--servers/xr/xr_interface.h2
-rw-r--r--tests/test_class_db.h62
-rw-r--r--tests/test_math.cpp4
-rw-r--r--tests/test_physics_2d.cpp2
-rw-r--r--tests/test_physics_3d.cpp4
-rw-r--r--tests/test_render.cpp12
-rw-r--r--thirdparty/enet/enet/godot_ext.h4
-rw-r--r--thirdparty/enet/godot.cpp39
1052 files changed, 148823 insertions, 68937 deletions
diff --git a/.editorconfig b/.editorconfig
index 7743622e78..92ee947a82 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -13,7 +13,7 @@ trim_trailing_whitespace = true
indent_style = space
indent_size = 4
-[{*.{py,cs},SConstruct,SCsub}]
+[{*.py,SConstruct,SCsub}]
indent_style = space
indent_size = 4
@@ -21,7 +21,3 @@ indent_size = 4
[*.{yml,yaml}]
indent_style = space
indent_size = 2
-
-[*.{csproj,props,targets,nuspec}]
-indent_style = space
-indent_size = 2
diff --git a/.github/workflows/linux_builds.yml b/.github/workflows/linux_builds.yml
index 1b68f66956..679362d749 100644
--- a/.github/workflows/linux_builds.yml
+++ b/.github/workflows/linux_builds.yml
@@ -70,12 +70,12 @@ jobs:
run: |
./bin/godot.linuxbsd.opt.tools.64 --test
- # Download, unzip and setup SwiftShader library [d4550ab8d3f]
+ # Download, unzip and setup SwiftShader library [4466040]
- name: Download SwiftShader
run: |
- wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader.zip
- unzip swiftshader.zip
- rm swiftshader.zip
+ wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader2.zip
+ unzip swiftshader2.zip
+ rm swiftshader2.zip
curr="$(pwd)/libvk_swiftshader.so"
sed -i "s|PATH_TO_CHANGE|$curr|" vk_swiftshader_icd.json
@@ -144,12 +144,10 @@ jobs:
scons --version
# We should always be explicit with our flags usage here since it's gonna be sure to always set those flags
- # [Workaround] SwiftShader doesn't support tessellation, so we skip Godot check about it
- name: Compilation
env:
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
run: |
- sed -i "s|ERR_FAIL_COND_V(p_rasterization_state.patch_control_points|//ERR_FAIL_COND_V(p_rasterization_state.patch_control_points|" drivers/vulkan/rendering_device_vulkan.cpp
scons tools=yes tests=yes target=debug debug_symbols=no use_asan=yes use_ubsan=yes
ls -l bin/
@@ -158,12 +156,12 @@ jobs:
run: |
./bin/godot.linuxbsd.tools.64s --test
- # Download, unzip and setup SwiftShader library [d4550ab8d3f]
+ # Download, unzip and setup SwiftShader library [4466040]
- name: Download SwiftShader
run: |
- wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader.zip
- unzip swiftshader.zip
- rm swiftshader.zip
+ wget https://github.com/qarmin/gtk_library_store/releases/download/3.24.0/swiftshader2.zip
+ unzip swiftshader2.zip
+ rm swiftshader2.zip
curr="$(pwd)/libvk_swiftshader.so"
sed -i "s|PATH_TO_CHANGE|$curr|" vk_swiftshader_icd.json
diff --git a/core/config/engine.cpp b/core/config/engine.cpp
index ad31966a65..0b5b5627af 100644
--- a/core/config/engine.cpp
+++ b/core/config/engine.cpp
@@ -214,8 +214,8 @@ bool Engine::has_singleton(const String &p_name) const {
}
void Engine::get_singletons(List<Singleton> *p_singletons) {
- for (List<Singleton>::Element *E = singletons.front(); E; E = E->next()) {
- p_singletons->push_back(E->get());
+ for (const Singleton &E : singletons) {
+ p_singletons->push_back(E);
}
}
diff --git a/core/config/project_settings.cpp b/core/config/project_settings.cpp
index 84860b648d..c5e6c6d685 100644
--- a/core/config/project_settings.cpp
+++ b/core/config/project_settings.cpp
@@ -700,9 +700,7 @@ Error ProjectSettings::_save_settings_binary(const String &p_file, const Map<Str
int count = 0;
for (Map<String, List<String>>::Element *E = props.front(); E; E = E->next()) {
- for (List<String>::Element *F = E->get().front(); F; F = F->next()) {
- count++;
- }
+ count += E->get().size();
}
if (p_custom_features != String()) {
@@ -734,8 +732,7 @@ Error ProjectSettings::_save_settings_binary(const String &p_file, const Map<Str
}
for (Map<String, List<String>>::Element *E = props.front(); E; E = E->next()) {
- for (List<String>::Element *F = E->get().front(); F; F = F->next()) {
- String key = F->get();
+ for (String &key : E->get()) {
if (E->key() != "") {
key = E->key() + "/" + key;
}
@@ -803,8 +800,8 @@ Error ProjectSettings::_save_settings_text(const String &p_file, const Map<Strin
if (E->key() != "") {
file->store_string("[" + E->key() + "]\n\n");
}
- for (List<String>::Element *F = E->get().front(); F; F = F->next()) {
- String key = F->get();
+ for (const String &F : E->get()) {
+ String key = F;
if (E->key() != "") {
key = E->key() + "/" + key;
}
@@ -817,7 +814,7 @@ Error ProjectSettings::_save_settings_text(const String &p_file, const Map<Strin
String vstr;
VariantWriter::write_to_string(value, vstr);
- file->store_string(F->get().property_name_encode() + "=" + vstr + "\n");
+ file->store_string(F.property_name_encode() + "=" + vstr + "\n");
}
}
@@ -931,11 +928,11 @@ Vector<String> ProjectSettings::get_optimizer_presets() const {
ProjectSettings::get_singleton()->get_property_list(&pi);
Vector<String> names;
- for (List<PropertyInfo>::Element *E = pi.front(); E; E = E->next()) {
- if (!E->get().name.begins_with("optimizer_presets/")) {
+ for (const PropertyInfo &E : pi) {
+ if (!E.name.begins_with("optimizer_presets/")) {
continue;
}
- names.push_back(E->get().name.get_slicec('/', 1));
+ names.push_back(E.name.get_slicec('/', 1));
}
names.sort();
diff --git a/core/core_bind.cpp b/core/core_bind.cpp
index 9a58528bd7..d34ed29691 100644
--- a/core/core_bind.cpp
+++ b/core/core_bind.cpp
@@ -75,8 +75,8 @@ Vector<String> _ResourceLoader::get_recognized_extensions_for_type(const String
List<String> exts;
ResourceLoader::get_recognized_extensions_for_type(p_type, &exts);
Vector<String> ret;
- for (List<String>::Element *E = exts.front(); E; E = E->next()) {
- ret.push_back(E->get());
+ for (const String &E : exts) {
+ ret.push_back(E);
}
return ret;
@@ -91,8 +91,8 @@ PackedStringArray _ResourceLoader::get_dependencies(const String &p_path) {
ResourceLoader::get_dependencies(p_path, &deps);
PackedStringArray ret;
- for (List<String>::Element *E = deps.front(); E; E = E->next()) {
- ret.push_back(E->get());
+ for (const String &E : deps) {
+ ret.push_back(E);
}
return ret;
@@ -141,8 +141,8 @@ Vector<String> _ResourceSaver::get_recognized_extensions(const RES &p_resource)
List<String> exts;
ResourceSaver::get_recognized_extensions(p_resource, &exts);
Vector<String> ret;
- for (List<String>::Element *E = exts.front(); E; E = E->next()) {
- ret.push_back(E->get());
+ for (const String &E : exts) {
+ ret.push_back(E);
}
return ret;
}
@@ -196,6 +196,10 @@ int _OS::get_low_processor_usage_mode_sleep_usec() const {
return OS::get_singleton()->get_low_processor_usage_mode_sleep_usec();
}
+void _OS::alert(const String &p_alert, const String &p_title) {
+ OS::get_singleton()->alert(p_alert, p_title);
+}
+
String _OS::get_executable_path() const {
return OS::get_singleton()->get_executable_path();
}
@@ -264,8 +268,8 @@ String _OS::get_name() const {
Vector<String> _OS::get_cmdline_args() {
List<String> cmdline = OS::get_singleton()->get_cmdline_args();
Vector<String> cmdlinev;
- for (List<String>::Element *E = cmdline.front(); E; E = E->next()) {
- cmdlinev.push_back(E->get());
+ for (const String &E : cmdline) {
+ cmdlinev.push_back(E);
}
return cmdlinev;
@@ -351,20 +355,20 @@ void _OS::print_all_textures_by_size() {
List<Ref<Resource>> rsrc;
ResourceCache::get_cached_resources(&rsrc);
- for (List<Ref<Resource>>::Element *E = rsrc.front(); E; E = E->next()) {
- if (!E->get()->is_class("ImageTexture")) {
+ for (Ref<Resource> &res : rsrc) {
+ if (!res->is_class("ImageTexture")) {
continue;
}
- Size2 size = E->get()->call("get_size");
- int fmt = E->get()->call("get_format");
+ Size2 size = res->call("get_size");
+ int fmt = res->call("get_format");
_OSCoreBindImg img;
img.size = size;
img.fmt = fmt;
- img.path = E->get()->get_path();
+ img.path = res->get_path();
img.vram = Image::get_image_data_size(img.size.width, img.size.height, Image::Format(img.fmt));
- img.id = E->get()->get_instance_id();
+ img.id = res->get_instance_id();
total += img.vram;
imgs.push_back(img);
}
@@ -372,8 +376,8 @@ void _OS::print_all_textures_by_size() {
imgs.sort();
- for (List<_OSCoreBindImg>::Element *E = imgs.front(); E; E = E->next()) {
- total -= E->get().vram;
+ for (_OSCoreBindImg &E : imgs) {
+ total -= E.vram;
}
}
@@ -383,9 +387,7 @@ void _OS::print_resources_by_type(const Vector<String> &p_types) {
List<Ref<Resource>> resources;
ResourceCache::get_cached_resources(&resources);
- for (List<Ref<Resource>>::Element *E = resources.front(); E; E = E->next()) {
- Ref<Resource> r = E->get();
-
+ for (const Ref<Resource> &r : resources) {
bool found = false;
for (int i = 0; i < p_types.size(); i++) {
@@ -487,6 +489,8 @@ void _OS::_bind_methods() {
ClassDB::bind_method(D_METHOD("open_midi_inputs"), &_OS::open_midi_inputs);
ClassDB::bind_method(D_METHOD("close_midi_inputs"), &_OS::close_midi_inputs);
+ ClassDB::bind_method(D_METHOD("alert", "text", "title"), &_OS::alert, DEFVAL("Alert!"));
+
ClassDB::bind_method(D_METHOD("set_low_processor_usage_mode", "enable"), &_OS::set_low_processor_usage_mode);
ClassDB::bind_method(D_METHOD("is_in_low_processor_usage_mode"), &_OS::is_in_low_processor_usage_mode);
@@ -1729,7 +1733,36 @@ void _Thread::_start_func(void *ud) {
memdelete(tud);
Callable::CallError ce;
const Variant *arg[1] = { &t->userdata };
- int argc = (int)(arg[0]->get_type() != Variant::NIL);
+ int argc = 0;
+ if (arg[0]->get_type() != Variant::NIL) {
+ // Just pass to the target function whatever came as user data
+ argc = 1;
+ } else {
+ // There are two cases of null user data:
+ // a) The target function has zero parameters and the caller is just honoring that.
+ // b) The target function has at least one parameter with no default and the caller is
+ // leveraging the fact that user data defaults to null in Thread.start().
+ // We care about the case of more than one parameter because, even if a thread
+ // function can have one at most, out mindset here is to do our best with the
+ // only/first one and let the call handle any other error conditions, like too
+ // much arguments.
+ // We must check if we are in case b).
+ int target_param_count = 0;
+ int target_default_arg_count = 0;
+ Ref<Script> script = t->target_instance->get_script();
+ if (script.is_valid()) {
+ MethodInfo mi = script->get_method_info(t->target_method);
+ target_param_count = mi.arguments.size();
+ target_default_arg_count = mi.default_arguments.size();
+ } else {
+ MethodBind *method = ClassDB::get_method(t->target_instance->get_class_name(), t->target_method);
+ target_param_count = method->get_argument_count();
+ target_default_arg_count = method->get_default_argument_count();
+ }
+ if (target_param_count >= 1 && target_default_arg_count == target_param_count) {
+ argc = 1;
+ }
+ }
Thread::set_name(t->target_method);
@@ -1818,8 +1851,8 @@ PackedStringArray _ClassDB::get_class_list() const {
PackedStringArray ret;
ret.resize(classes.size());
int idx = 0;
- for (List<StringName>::Element *E = classes.front(); E; E = E->next()) {
- ret.set(idx++, E->get());
+ for (const StringName &E : classes) {
+ ret.set(idx++, E);
}
return ret;
@@ -1832,8 +1865,8 @@ PackedStringArray _ClassDB::get_inheriters_from_class(const StringName &p_class)
PackedStringArray ret;
ret.resize(classes.size());
int idx = 0;
- for (List<StringName>::Element *E = classes.front(); E; E = E->next()) {
- ret.set(idx++, E->get());
+ for (const StringName &E : classes) {
+ ret.set(idx++, E);
}
return ret;
@@ -1887,8 +1920,8 @@ Array _ClassDB::get_signal_list(StringName p_class, bool p_no_inheritance) const
ClassDB::get_signal_list(p_class, &signals, p_no_inheritance);
Array ret;
- for (List<MethodInfo>::Element *E = signals.front(); E; E = E->next()) {
- ret.push_back(E->get().operator Dictionary());
+ for (const MethodInfo &E : signals) {
+ ret.push_back(E.operator Dictionary());
}
return ret;
@@ -1898,8 +1931,8 @@ Array _ClassDB::get_property_list(StringName p_class, bool p_no_inheritance) con
List<PropertyInfo> plist;
ClassDB::get_property_list(p_class, &plist, p_no_inheritance);
Array ret;
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- ret.push_back(E->get().operator Dictionary());
+ for (const PropertyInfo &E : plist) {
+ ret.push_back(E.operator Dictionary());
}
return ret;
@@ -1931,12 +1964,12 @@ Array _ClassDB::get_method_list(StringName p_class, bool p_no_inheritance) const
ClassDB::get_method_list(p_class, &methods, p_no_inheritance);
Array ret;
- for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
+ for (const MethodInfo &E : methods) {
#ifdef DEBUG_METHODS_ENABLED
- ret.push_back(E->get().operator Dictionary());
+ ret.push_back(E.operator Dictionary());
#else
Dictionary dict;
- dict["name"] = E->get().name;
+ dict["name"] = E.name;
ret.push_back(dict);
#endif
}
@@ -1951,8 +1984,8 @@ PackedStringArray _ClassDB::get_integer_constant_list(const StringName &p_class,
PackedStringArray ret;
ret.resize(constants.size());
int idx = 0;
- for (List<String>::Element *E = constants.front(); E; E = E->next()) {
- ret.set(idx++, E->get());
+ for (const String &E : constants) {
+ ret.set(idx++, E);
}
return ret;
diff --git a/core/core_bind.h b/core/core_bind.h
index 673dbe32c4..1574c36d3c 100644
--- a/core/core_bind.h
+++ b/core/core_bind.h
@@ -58,9 +58,9 @@ public:
};
enum CacheMode {
- CACHE_MODE_IGNORE, //resource and subresources do not use path cache, no path is set into resource.
- CACHE_MODE_REUSE, //resource and subresources use patch cache, reuse existing loaded resources instead of loading from disk when available
- CACHE_MODE_REPLACE, //resource and and subresource use path cache, but replace existing loaded resources when available with information from disk
+ CACHE_MODE_IGNORE, // Resource and subresources do not use path cache, no path is set into resource.
+ CACHE_MODE_REUSE, // Resource and subresources use patch cache, reuse existing loaded resources instead of loading from disk when available.
+ CACHE_MODE_REPLACE, // Resource and subresource use path cache, but replace existing loaded resources when available with information from disk.
};
static _ResourceLoader *get_singleton() { return singleton; }
@@ -162,6 +162,8 @@ public:
void set_low_processor_usage_mode_sleep_usec(int p_usec);
int get_low_processor_usage_mode_sleep_usec() const;
+ void alert(const String &p_alert, const String &p_title = "ALERT!");
+
String get_executable_path() const;
int execute(const String &p_path, const Vector<String> &p_arguments, Array r_output = Array(), bool p_read_stderr = false);
int create_process(const String &p_path, const Vector<String> &p_arguments);
diff --git a/core/debugger/debugger_marshalls.cpp b/core/debugger/debugger_marshalls.cpp
index 26f82c2658..2353a6ebf8 100644
--- a/core/debugger/debugger_marshalls.cpp
+++ b/core/debugger/debugger_marshalls.cpp
@@ -40,11 +40,11 @@ Array DebuggerMarshalls::ResourceUsage::serialize() {
Array arr;
arr.push_back(infos.size() * 4);
- for (List<ResourceInfo>::Element *E = infos.front(); E; E = E->next()) {
- arr.push_back(E->get().path);
- arr.push_back(E->get().format);
- arr.push_back(E->get().type);
- arr.push_back(E->get().vram);
+ for (const ResourceInfo &E : infos) {
+ arr.push_back(E.path);
+ arr.push_back(E.format);
+ arr.push_back(E.type);
+ arr.push_back(E.vram);
}
return arr;
}
diff --git a/core/debugger/local_debugger.cpp b/core/debugger/local_debugger.cpp
index ab368471e4..24833711d5 100644
--- a/core/debugger/local_debugger.cpp
+++ b/core/debugger/local_debugger.cpp
@@ -320,13 +320,13 @@ void LocalDebugger::print_variables(const List<String> &names, const List<Varian
String value;
Vector<String> value_lines;
const List<Variant>::Element *V = values.front();
- for (const List<String>::Element *E = names.front(); E; E = E->next()) {
+ for (const String &E : names) {
value = String(V->get());
if (variable_prefix.is_empty()) {
- print_line(E->get() + ": " + String(V->get()));
+ print_line(E + ": " + String(V->get()));
} else {
- print_line(E->get() + ":");
+ print_line(E + ":");
value_lines = value.split("\n");
for (int i = 0; i < value_lines.size(); ++i) {
print_line(variable_prefix + value_lines[i]);
diff --git a/core/debugger/remote_debugger.cpp b/core/debugger/remote_debugger.cpp
index bdbb7766fa..62d5126e57 100644
--- a/core/debugger/remote_debugger.cpp
+++ b/core/debugger/remote_debugger.cpp
@@ -427,16 +427,16 @@ void RemoteDebugger::_send_resource_usage() {
List<RS::TextureInfo> tinfo;
RS::get_singleton()->texture_debug_usage(&tinfo);
- for (List<RS::TextureInfo>::Element *E = tinfo.front(); E; E = E->next()) {
+ for (const RS::TextureInfo &E : tinfo) {
DebuggerMarshalls::ResourceInfo info;
- info.path = E->get().path;
- info.vram = E->get().bytes;
- info.id = E->get().texture;
+ info.path = E.path;
+ info.vram = E.bytes;
+ info.id = E.texture;
info.type = "Texture";
- if (E->get().depth == 0) {
- info.format = itos(E->get().width) + "x" + itos(E->get().height) + " " + Image::get_format_name(E->get().format);
+ if (E.depth == 0) {
+ info.format = itos(E.width) + "x" + itos(E.height) + " " + Image::get_format_name(E.format);
} else {
- info.format = itos(E->get().width) + "x" + itos(E->get().height) + "x" + itos(E->get().depth) + " " + Image::get_format_name(E->get().format);
+ info.format = itos(E.width) + "x" + itos(E.height) + "x" + itos(E.depth) + " " + Image::get_format_name(E.format);
}
usage.infos.push_back(info);
}
@@ -706,6 +706,8 @@ void RemoteDebugger::debug(bool p_can_continue, bool p_is_error_breakpoint) {
Array msg;
msg.push_back(p_can_continue);
msg.push_back(error_str);
+ ERR_FAIL_COND(!script_lang);
+ msg.push_back(script_lang->debug_get_stack_level_count() > 0);
send_message("debug_enter", msg);
servers_profiler->skip_profile_frame = true; // Avoid frame time spike in debug.
@@ -754,7 +756,6 @@ void RemoteDebugger::debug(bool p_can_continue, bool p_is_error_breakpoint) {
break;
} else if (command == "get_stack_dump") {
- ERR_FAIL_COND(!script_lang);
DebuggerMarshalls::ScriptStackDump dump;
int slc = script_lang->debug_get_stack_level_count();
for (int i = 0; i < slc; i++) {
@@ -790,7 +791,9 @@ void RemoteDebugger::debug(bool p_can_continue, bool p_is_error_breakpoint) {
script_lang->debug_get_globals(&globals, &globals_vals);
ERR_FAIL_COND(globals.size() != globals_vals.size());
- send_message("stack_frame_vars", Array());
+ Array var_size;
+ var_size.push_back(local_vals.size() + member_vals.size() + globals_vals.size());
+ send_message("stack_frame_vars", var_size);
_send_stack_vars(locals, local_vals, 0);
_send_stack_vars(members, member_vals, 1);
_send_stack_vars(globals, globals_vals, 2);
diff --git a/core/doc_data.h b/core/doc_data.h
index 46ab697768..a3011fe275 100644
--- a/core/doc_data.h
+++ b/core/doc_data.h
@@ -116,6 +116,17 @@ public:
}
};
+ struct ThemeItemDoc {
+ String name;
+ String type;
+ String data_type;
+ String description;
+ String default_value;
+ bool operator<(const ThemeItemDoc &p_theme_item) const {
+ return name < p_theme_item.name;
+ }
+ };
+
struct TutorialDoc {
String link;
String title;
@@ -133,7 +144,7 @@ public:
Vector<ConstantDoc> constants;
Map<String, String> enums;
Vector<PropertyDoc> properties;
- Vector<PropertyDoc> theme_properties;
+ Vector<ThemeItemDoc> theme_properties;
bool is_script_doc = false;
String script_path;
bool operator<(const ClassDoc &p_class) const {
diff --git a/core/extension/extension_api_dump.cpp b/core/extension/extension_api_dump.cpp
index 3c132a619d..660e215478 100644
--- a/core/extension/extension_api_dump.cpp
+++ b/core/extension/extension_api_dump.cpp
@@ -94,8 +94,8 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
{ Variant::NODE_PATH, ptrsize_32, ptrsize_64, ptrsize_32, ptrsize_64 },
{ Variant::RID, sizeof(uint64_t), sizeof(uint64_t), sizeof(uint64_t), sizeof(uint64_t) },
{ Variant::OBJECT, ptrsize_32, ptrsize_64, ptrsize_32, ptrsize_64 },
- { Variant::CALLABLE, sizeof(Callable), sizeof(Callable), sizeof(Callable), sizeof(Callable) }, //harcoded align
- { Variant::SIGNAL, sizeof(Signal), sizeof(Signal), sizeof(Signal), sizeof(Signal) }, //harcoded align
+ { Variant::CALLABLE, sizeof(Callable), sizeof(Callable), sizeof(Callable), sizeof(Callable) }, // Hardcoded align.
+ { Variant::SIGNAL, sizeof(Signal), sizeof(Signal), sizeof(Signal), sizeof(Signal) }, // Hardcoded align.
{ Variant::DICTIONARY, ptrsize_32, ptrsize_64, ptrsize_32, ptrsize_64 },
{ Variant::ARRAY, ptrsize_32, ptrsize_64, ptrsize_32, ptrsize_64 },
{ Variant::PACKED_BYTE_ARRAY, ptrsize_32, ptrsize_64, ptrsize_32, ptrsize_64 },
@@ -146,7 +146,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
}
{
- //member offsets sizes
+ // Member offsets sizes.
struct {
Variant::Type type;
const char *member;
@@ -180,7 +180,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
{ Variant::QUATERNION, "w", 3 * sizeof(float), 3 * sizeof(float), 3 * sizeof(double), 3 * sizeof(double) },
{ Variant::AABB, "position", 0, 0, 0, 0 },
{ Variant::AABB, "size", vec3_elems * sizeof(float), vec3_elems * sizeof(float), vec3_elems * sizeof(double), vec3_elems * sizeof(double) },
- //rememer that basis vectors are flipped!
+ // Remember that basis vectors are flipped!
{ Variant::BASIS, "x", 0, 0, 0, 0 },
{ Variant::BASIS, "y", vec3_elems * sizeof(float), vec3_elems * sizeof(float), vec3_elems * sizeof(double), vec3_elems * sizeof(double) },
{ Variant::BASIS, "z", vec3_elems * 2 * sizeof(float), vec3_elems * 2 * sizeof(float), vec3_elems * 2 * sizeof(double), vec3_elems * 2 * sizeof(double) },
@@ -251,7 +251,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
}
{
- // global enums and constants
+ // Global enums and constants.
Array constants;
Map<String, List<Pair<String, int>>> enum_list;
@@ -276,10 +276,10 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
Dictionary d1;
d1["name"] = E->key();
Array values;
- for (List<Pair<String, int>>::Element *F = E->get().front(); F; F = F->next()) {
+ for (const Pair<String, int> &F : E->get()) {
Dictionary d2;
- d2["name"] = F->get().first;
- d2["value"] = F->get().second;
+ d2["name"] = F.first;
+ d2["value"] = F.second;
values.push_back(d2);
}
d1["values"] = values;
@@ -294,8 +294,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
List<StringName> utility_func_names;
Variant::get_utility_function_list(&utility_func_names);
- for (List<StringName>::Element *E = utility_func_names.front(); E; E = E->next()) {
- StringName name = E->get();
+ for (const StringName &name : utility_func_names) {
Dictionary func;
func["name"] = String(name);
if (Variant::has_utility_function_return_value(name)) {
@@ -363,8 +362,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
List<StringName> member_names;
Variant::get_member_list(type, &member_names);
- for (List<StringName>::Element *E = member_names.front(); E; E = E->next()) {
- StringName member_name = E->get();
+ for (const StringName &member_name : member_names) {
Dictionary d2;
d2["name"] = String(member_name);
d2["type"] = Variant::get_type_name(Variant::get_member_type(type, member_name));
@@ -380,8 +378,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
List<StringName> constant_names;
Variant::get_constants_for_type(type, &constant_names);
- for (List<StringName>::Element *E = constant_names.front(); E; E = E->next()) {
- StringName constant_name = E->get();
+ for (const StringName &constant_name : constant_names) {
Dictionary d2;
d2["name"] = String(constant_name);
Variant constant = Variant::get_constant_value(type, constant_name);
@@ -420,8 +417,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
List<StringName> method_names;
Variant::get_builtin_method_list(type, &method_names);
- for (List<StringName>::Element *E = method_names.front(); E; E = E->next()) {
- StringName method_name = E->get();
+ for (const StringName &method_name : method_names) {
Dictionary d2;
d2["name"] = String(method_name);
if (Variant::has_builtin_method_return_value(type, method_name)) {
@@ -503,9 +499,8 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
class_list.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = class_list.front(); E; E = E->next()) {
+ for (const StringName &class_name : class_list) {
Dictionary d;
- StringName class_name = E->get();
d["name"] = String(class_name);
d["is_refcounted"] = ClassDB::is_parent_class(class_name, "RefCounted");
d["is_instantiable"] = ClassDB::can_instantiate(class_name);
@@ -525,15 +520,15 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
Array constants;
List<String> constant_list;
ClassDB::get_integer_constant_list(class_name, &constant_list, true);
- for (List<String>::Element *F = constant_list.front(); F; F = F->next()) {
- StringName enum_name = ClassDB::get_integer_constant_enum(class_name, F->get());
+ for (const String &F : constant_list) {
+ StringName enum_name = ClassDB::get_integer_constant_enum(class_name, F);
if (enum_name != StringName()) {
continue; //enums will be handled on their own
}
Dictionary d2;
- d2["name"] = String(F->get());
- d2["value"] = ClassDB::get_integer_constant(class_name, F->get());
+ d2["name"] = String(F);
+ d2["value"] = ClassDB::get_integer_constant(class_name, F);
constants.push_back(d2);
}
@@ -547,13 +542,13 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
Array enums;
List<StringName> enum_list;
ClassDB::get_enum_list(class_name, &enum_list, true);
- for (List<StringName>::Element *F = enum_list.front(); F; F = F->next()) {
+ for (const StringName &F : enum_list) {
Dictionary d2;
- d2["name"] = String(F->get());
+ d2["name"] = String(F);
Array values;
List<StringName> enum_constant_list;
- ClassDB::get_enum_constants(class_name, F->get(), &enum_constant_list, true);
+ ClassDB::get_enum_constants(class_name, F, &enum_constant_list, true);
for (List<StringName>::Element *G = enum_constant_list.front(); G; G = G->next()) {
Dictionary d3;
d3["name"] = String(G->get());
@@ -575,14 +570,14 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
Array methods;
List<MethodInfo> method_list;
ClassDB::get_method_list(class_name, &method_list, true);
- for (List<MethodInfo>::Element *F = method_list.front(); F; F = F->next()) {
- StringName method_name = F->get().name;
- if (F->get().flags & METHOD_FLAG_VIRTUAL) {
+ for (const MethodInfo &F : method_list) {
+ StringName method_name = F.name;
+ if (F.flags & METHOD_FLAG_VIRTUAL) {
//virtual method
- const MethodInfo &mi = F->get();
+ const MethodInfo &mi = F;
Dictionary d2;
d2["name"] = String(method_name);
- d2["is_const"] = (F->get().flags & METHOD_FLAG_CONST) ? true : false;
+ d2["is_const"] = (F.flags & METHOD_FLAG_CONST) ? true : false;
d2["is_vararg"] = false;
d2["is_virtual"] = true;
// virtual functions have no hash since no MethodBind is involved
@@ -619,7 +614,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
methods.push_back(d2);
- } else if (F->get().name.begins_with("_")) {
+ } else if (F.name.begins_with("_")) {
//hidden method, ignore
} else {
@@ -692,19 +687,19 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
Array signals;
List<MethodInfo> signal_list;
ClassDB::get_signal_list(class_name, &signal_list, true);
- for (List<MethodInfo>::Element *F = signal_list.front(); F; F = F->next()) {
- StringName signal_name = F->get().name;
+ for (const MethodInfo &F : signal_list) {
+ StringName signal_name = F.name;
Dictionary d2;
d2["name"] = String(signal_name);
Array arguments;
- for (int i = 0; i < F->get().arguments.size(); i++) {
+ for (int i = 0; i < F.arguments.size(); i++) {
Dictionary d3;
- d3["name"] = F->get().arguments[i].name;
- Variant::Type type = F->get().arguments[i].type;
- if (F->get().arguments[i].class_name != StringName()) {
- d3["type"] = String(F->get().arguments[i].class_name);
+ d3["name"] = F.arguments[i].name;
+ Variant::Type type = F.arguments[i].type;
+ if (F.arguments[i].class_name != StringName()) {
+ d3["type"] = String(F.arguments[i].class_name);
} else if (type == Variant::NIL) {
d3["type"] = "Variant";
} else {
@@ -728,28 +723,28 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
Array properties;
List<PropertyInfo> property_list;
ClassDB::get_property_list(class_name, &property_list, true);
- for (List<PropertyInfo>::Element *F = property_list.front(); F; F = F->next()) {
- if (F->get().usage & PROPERTY_USAGE_CATEGORY || F->get().usage & PROPERTY_USAGE_GROUP || F->get().usage & PROPERTY_USAGE_SUBGROUP) {
+ for (const PropertyInfo &F : property_list) {
+ if (F.usage & PROPERTY_USAGE_CATEGORY || F.usage & PROPERTY_USAGE_GROUP || F.usage & PROPERTY_USAGE_SUBGROUP) {
continue; //not real properties
}
- if (F->get().name.begins_with("_")) {
+ if (F.name.begins_with("_")) {
continue; //hidden property
}
- StringName property_name = F->get().name;
+ StringName property_name = F.name;
Dictionary d2;
d2["name"] = String(property_name);
- if (F->get().class_name != StringName()) {
- d2["type"] = String(F->get().class_name);
- } else if (F->get().type == Variant::NIL && F->get().usage & PROPERTY_USAGE_NIL_IS_VARIANT) {
+ if (F.class_name != StringName()) {
+ d2["type"] = String(F.class_name);
+ } else if (F.type == Variant::NIL && F.usage & PROPERTY_USAGE_NIL_IS_VARIANT) {
d2["type"] = "Variant";
} else {
- d2["type"] = Variant::get_type_name(F->get().type);
+ d2["type"] = Variant::get_type_name(F.type);
}
- d2["setter"] = ClassDB::get_property_setter(class_name, F->get().name);
- d2["getter"] = ClassDB::get_property_getter(class_name, F->get().name);
- d2["index"] = ClassDB::get_property_index(class_name, F->get().name);
+ d2["setter"] = ClassDB::get_property_setter(class_name, F.name);
+ d2["getter"] = ClassDB::get_property_getter(class_name, F.name);
+ d2["index"] = ClassDB::get_property_index(class_name, F.name);
properties.push_back(d2);
}
@@ -771,8 +766,7 @@ Dictionary NativeExtensionAPIDump::generate_extension_api() {
List<Engine::Singleton> singleton_list;
Engine::get_singleton()->get_singletons(&singleton_list);
- for (List<Engine::Singleton>::Element *E = singleton_list.front(); E; E = E->next()) {
- const Engine::Singleton &s = E->get();
+ for (const Engine::Singleton &s : singleton_list) {
Dictionary d;
d["name"] = s.name;
if (s.class_name != StringName()) {
diff --git a/core/extension/gdnative_interface.cpp b/core/extension/gdnative_interface.cpp
index 8f68b8d848..88fff342ee 100644
--- a/core/extension/gdnative_interface.cpp
+++ b/core/extension/gdnative_interface.cpp
@@ -281,8 +281,9 @@ static GDNativeBool gdnative_variant_has_key(const GDNativeVariantPtr p_self, co
const Variant *self = (const Variant *)p_self;
const Variant *key = (const Variant *)p_key;
bool valid;
- return self->has_key(*key, valid);
+ bool ret = self->has_key(*key, valid);
*r_valid = valid;
+ return ret;
}
static void gdnative_variant_get_type_name(GDNativeVariantType p_type, GDNativeStringPtr r_ret) {
diff --git a/core/extension/gdnative_interface.h b/core/extension/gdnative_interface.h
index c1ebb3e76a..3e69a28d59 100644
--- a/core/extension/gdnative_interface.h
+++ b/core/extension/gdnative_interface.h
@@ -134,7 +134,7 @@ typedef void *GDNativeObjectPtr;
typedef void *GDNativeTypePtr;
typedef void *GDNativeMethodBindPtr;
typedef int64_t GDNativeInt;
-typedef uint32_t GDNativeBool;
+typedef uint8_t GDNativeBool;
typedef uint64_t GDObjectInstanceID;
/* VARIANT DATA I/O */
diff --git a/core/extension/native_extension.cpp b/core/extension/native_extension.cpp
index 65718a7507..16bc28e0a2 100644
--- a/core/extension/native_extension.cpp
+++ b/core/extension/native_extension.cpp
@@ -351,8 +351,8 @@ RES NativeExtensionResourceLoader::load(const String &p_path, const String &p_or
String library_path;
- for (List<String>::Element *E = libraries.front(); E; E = E->next()) {
- Vector<String> tags = E->get().split(".");
+ for (const String &E : libraries) {
+ Vector<String> tags = E.split(".");
bool all_tags_met = true;
for (int i = 0; i < tags.size(); i++) {
String tag = tags[i].strip_edges();
@@ -363,7 +363,7 @@ RES NativeExtensionResourceLoader::load(const String &p_path, const String &p_or
}
if (all_tags_met) {
- library_path = config->get_value("libraries", E->get());
+ library_path = config->get_value("libraries", E);
break;
}
}
diff --git a/core/input/input.cpp b/core/input/input.cpp
index f57985831a..c205726b0a 100644
--- a/core/input/input.cpp
+++ b/core/input/input.cpp
@@ -101,7 +101,7 @@ void Input::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_action_just_pressed", "action", "exact_match"), &Input::is_action_just_pressed, DEFVAL(false));
ClassDB::bind_method(D_METHOD("is_action_just_released", "action", "exact_match"), &Input::is_action_just_released, DEFVAL(false));
ClassDB::bind_method(D_METHOD("get_action_strength", "action", "exact_match"), &Input::get_action_strength, DEFVAL(false));
- ClassDB::bind_method(D_METHOD("get_action_raw_strength", "action", "exact_match"), &Input::get_action_strength, DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("get_action_raw_strength", "action", "exact_match"), &Input::get_action_raw_strength, DEFVAL(false));
ClassDB::bind_method(D_METHOD("get_axis", "negative_action", "positive_action"), &Input::get_axis);
ClassDB::bind_method(D_METHOD("get_vector", "negative_x", "positive_x", "negative_y", "positive_y", "deadzone"), &Input::get_vector, DEFVAL(-1.0f));
ClassDB::bind_method(D_METHOD("add_joy_mapping", "mapping", "update_existing"), &Input::add_joy_mapping, DEFVAL(false));
@@ -169,13 +169,12 @@ void Input::get_argument_options(const StringName &p_function, int p_idx, List<S
String pf = p_function;
if (p_idx == 0 && (pf == "is_action_pressed" || pf == "action_press" || pf == "action_release" ||
pf == "is_action_just_pressed" || pf == "is_action_just_released" ||
- pf == "get_action_strength" || pf == "get_axis" || pf == "get_vector")) {
+ pf == "get_action_strength" || pf == "get_action_raw_strength" ||
+ pf == "get_axis" || pf == "get_vector")) {
List<PropertyInfo> pinfo;
ProjectSettings::get_singleton()->get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- const PropertyInfo &pi = E->get();
-
+ for (const PropertyInfo &pi : pinfo) {
if (!pi.name.begins_with("input/")) {
continue;
}
diff --git a/core/input/input_map.cpp b/core/input/input_map.cpp
index b5f067d499..6714705bb5 100644
--- a/core/input/input_map.cpp
+++ b/core/input/input_map.cpp
@@ -65,11 +65,11 @@ String InputMap::_suggest_actions(const StringName &p_action) const {
float closest_similarity = 0.0;
// Find the most action with the most similar name.
- for (List<StringName>::Element *E = actions.front(); E; E = E->next()) {
- const float similarity = String(E->get()).similarity(p_action);
+ for (const StringName &action : actions) {
+ const float similarity = String(action).similarity(p_action);
if (similarity > closest_similarity) {
- closest_action = E->get();
+ closest_action = action;
closest_similarity = similarity;
}
}
@@ -105,8 +105,8 @@ Array InputMap::_get_actions() {
return ret;
}
- for (const List<StringName>::Element *E = actions.front(); E; E = E->next()) {
- ret.push_back(E->get());
+ for (const StringName &E : actions) {
+ ret.push_back(E);
}
return ret;
@@ -129,13 +129,11 @@ List<Ref<InputEvent>>::Element *InputMap::_find_event(Action &p_action, const Re
ERR_FAIL_COND_V(!p_event.is_valid(), nullptr);
for (List<Ref<InputEvent>>::Element *E = p_action.inputs.front(); E; E = E->next()) {
- const Ref<InputEvent> e = E->get();
-
- int device = e->get_device();
+ int device = E->get()->get_device();
if (device == ALL_DEVICES || device == p_event->get_device()) {
- if (p_exact_match && e->is_match(p_event, true)) {
+ if (p_exact_match && E->get()->is_match(p_event, true)) {
return E;
- } else if (!p_exact_match && e->action_match(p_event, p_pressed, p_strength, p_raw_strength, p_action.deadzone)) {
+ } else if (!p_exact_match && E->get()->action_match(p_event, p_pressed, p_strength, p_raw_strength, p_action.deadzone)) {
return E;
}
}
@@ -198,7 +196,7 @@ Array InputMap::_action_get_events(const StringName &p_action) {
const List<Ref<InputEvent>> *al = action_get_events(p_action);
if (al) {
for (const List<Ref<InputEvent>>::Element *E = al->front(); E; E = E->next()) {
- ret.push_back(E->get());
+ ret.push_back(E);
}
}
@@ -263,9 +261,7 @@ void InputMap::load_from_project_settings() {
List<PropertyInfo> pinfo;
ProjectSettings::get_singleton()->get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- const PropertyInfo &pi = E->get();
-
+ for (const PropertyInfo &pi : pinfo) {
if (!pi.name.begins_with("input/")) {
continue;
}
diff --git a/core/io/config_file.cpp b/core/io/config_file.cpp
index 10f68f3cef..aeaf25f321 100644
--- a/core/io/config_file.cpp
+++ b/core/io/config_file.cpp
@@ -40,8 +40,8 @@ PackedStringArray ConfigFile::_get_sections() const {
PackedStringArray arr;
arr.resize(s.size());
int idx = 0;
- for (const List<String>::Element *E = s.front(); E; E = E->next()) {
- arr.set(idx++, E->get());
+ for (const String &E : s) {
+ arr.set(idx++, E);
}
return arr;
@@ -53,8 +53,8 @@ PackedStringArray ConfigFile::_get_section_keys(const String &p_section) const {
PackedStringArray arr;
arr.resize(s.size());
int idx = 0;
- for (const List<String>::Element *E = s.front(); E; E = E->next()) {
- arr.set(idx++, E->get());
+ for (const String &E : s) {
+ arr.set(idx++, E);
}
return arr;
diff --git a/core/io/dir_access.cpp b/core/io/dir_access.cpp
index dfba00067f..8234adea06 100644
--- a/core/io/dir_access.cpp
+++ b/core/io/dir_access.cpp
@@ -93,8 +93,8 @@ static Error _erase_recursive(DirAccess *da) {
da->list_dir_end();
- for (List<String>::Element *E = dirs.front(); E; E = E->next()) {
- Error err = da->change_dir(E->get());
+ for (const String &E : dirs) {
+ Error err = da->change_dir(E);
if (err == OK) {
err = _erase_recursive(da);
if (err) {
@@ -105,7 +105,7 @@ static Error _erase_recursive(DirAccess *da) {
if (err) {
return err;
}
- err = da->remove(da->get_current_dir().plus_file(E->get()));
+ err = da->remove(da->get_current_dir().plus_file(E));
if (err) {
return err;
}
@@ -114,8 +114,8 @@ static Error _erase_recursive(DirAccess *da) {
}
}
- for (List<String>::Element *E = files.front(); E; E = E->next()) {
- Error err = da->remove(da->get_current_dir().plus_file(E->get()));
+ for (const String &E : files) {
+ Error err = da->remove(da->get_current_dir().plus_file(E));
if (err) {
return err;
}
@@ -362,16 +362,15 @@ Error DirAccess::_copy_dir(DirAccess *p_target_da, String p_to, int p_chmod_flag
list_dir_end();
- for (List<String>::Element *E = dirs.front(); E; E = E->next()) {
- String rel_path = E->get();
+ for (const String &rel_path : dirs) {
String target_dir = p_to + rel_path;
if (!p_target_da->dir_exists(target_dir)) {
Error err = p_target_da->make_dir(target_dir);
ERR_FAIL_COND_V_MSG(err != OK, err, "Cannot create directory '" + target_dir + "'.");
}
- Error err = change_dir(E->get());
- ERR_FAIL_COND_V_MSG(err != OK, err, "Cannot change current directory to '" + E->get() + "'.");
+ Error err = change_dir(rel_path);
+ ERR_FAIL_COND_V_MSG(err != OK, err, "Cannot change current directory to '" + rel_path + "'.");
err = _copy_dir(p_target_da, p_to + rel_path + "/", p_chmod_flags, p_copy_links);
if (err) {
diff --git a/core/io/http_client.cpp b/core/io/http_client.cpp
index 8000dd4290..5c1352c1b6 100644
--- a/core/io/http_client.cpp
+++ b/core/io/http_client.cpp
@@ -93,8 +93,7 @@ Dictionary HTTPClient::_get_response_headers_as_dictionary() {
List<String> rh;
get_response_headers(&rh);
Dictionary ret;
- for (const List<String>::Element *E = rh.front(); E; E = E->next()) {
- const String &s = E->get();
+ for (const String &s : rh) {
int sp = s.find(":");
if (sp == -1) {
continue;
@@ -113,8 +112,8 @@ PackedStringArray HTTPClient::_get_response_headers() {
PackedStringArray ret;
ret.resize(rh.size());
int idx = 0;
- for (const List<String>::Element *E = rh.front(); E; E = E->next()) {
- ret.set(idx++, E->get());
+ for (const String &E : rh) {
+ ret.set(idx++, E);
}
return ret;
diff --git a/core/io/image_loader.cpp b/core/io/image_loader.cpp
index b45e9d26b1..b9fc416f65 100644
--- a/core/io/image_loader.cpp
+++ b/core/io/image_loader.cpp
@@ -35,8 +35,8 @@
bool ImageFormatLoader::recognize(const String &p_extension) const {
List<String> extensions;
get_recognized_extensions(&extensions);
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- if (E->get().nocasecmp_to(p_extension) == 0) {
+ for (const String &E : extensions) {
+ if (E.nocasecmp_to(p_extension) == 0) {
return true;
}
}
diff --git a/core/io/ip.cpp b/core/io/ip.cpp
index 001b1c4757..e3102508a3 100644
--- a/core/io/ip.cpp
+++ b/core/io/ip.cpp
@@ -83,8 +83,23 @@ struct _IP_ResolverPrivate {
continue;
}
- IP::get_singleton()->_resolve_hostname(queue[i].response, queue[i].hostname, queue[i].type);
- queue[i].status.set(queue[i].response.is_empty() ? IP::RESOLVER_STATUS_ERROR : IP::RESOLVER_STATUS_DONE);
+ mutex.lock();
+ List<IPAddress> response;
+ String hostname = queue[i].hostname;
+ IP::Type type = queue[i].type;
+ mutex.unlock();
+
+ // We should not lock while resolving the hostname,
+ // only when modifying the queue.
+ IP::get_singleton()->_resolve_hostname(response, hostname, type);
+
+ MutexLock lock(mutex);
+ // Could have been completed by another function, or deleted.
+ if (queue[i].status.get() != IP::RESOLVER_STATUS_WAITING) {
+ continue;
+ }
+ queue[i].response = response;
+ queue[i].status.set(response.is_empty() ? IP::RESOLVER_STATUS_ERROR : IP::RESOLVER_STATUS_DONE);
}
}
@@ -93,8 +108,6 @@ struct _IP_ResolverPrivate {
while (!ipr->thread_abort) {
ipr->sem.wait();
-
- MutexLock lock(ipr->mutex);
ipr->resolve_queues();
}
}
@@ -107,17 +120,23 @@ struct _IP_ResolverPrivate {
};
IPAddress IP::resolve_hostname(const String &p_hostname, IP::Type p_type) {
- MutexLock lock(resolver->mutex);
-
List<IPAddress> res;
-
String key = _IP_ResolverPrivate::get_cache_key(p_hostname, p_type);
+
+ resolver->mutex.lock();
if (resolver->cache.has(key)) {
res = resolver->cache[key];
} else {
+ // This should be run unlocked so the resolver thread can keep
+ // resolving other requests.
+ resolver->mutex.unlock();
_resolve_hostname(res, p_hostname, p_type);
+ resolver->mutex.lock();
+ // We might be overriding another result, but we don't care (they are the
+ // same hostname).
resolver->cache[key] = res;
}
+ resolver->mutex.unlock();
for (int i = 0; i < res.size(); ++i) {
if (res[i].is_valid()) {
@@ -128,14 +147,23 @@ IPAddress IP::resolve_hostname(const String &p_hostname, IP::Type p_type) {
}
Array IP::resolve_hostname_addresses(const String &p_hostname, Type p_type) {
- MutexLock lock(resolver->mutex);
-
+ List<IPAddress> res;
String key = _IP_ResolverPrivate::get_cache_key(p_hostname, p_type);
- if (!resolver->cache.has(key)) {
- _resolve_hostname(resolver->cache[key], p_hostname, p_type);
- }
- List<IPAddress> res = resolver->cache[key];
+ resolver->mutex.lock();
+ if (resolver->cache.has(key)) {
+ res = resolver->cache[key];
+ } else {
+ // This should be run unlocked so the resolver thread can keep resolving
+ // other requests.
+ resolver->mutex.unlock();
+ _resolve_hostname(res, p_hostname, p_type);
+ resolver->mutex.lock();
+ // We might be overriding another result, but we don't care (they are the
+ // same hostname).
+ resolver->cache[key] = res;
+ }
+ resolver->mutex.unlock();
Array result;
for (int i = 0; i < res.size(); ++i) {
@@ -178,13 +206,12 @@ IP::ResolverID IP::resolve_hostname_queue_item(const String &p_hostname, IP::Typ
IP::ResolverStatus IP::get_resolve_item_status(ResolverID p_id) const {
ERR_FAIL_INDEX_V(p_id, IP::RESOLVER_MAX_QUERIES, IP::RESOLVER_STATUS_NONE);
- MutexLock lock(resolver->mutex);
-
- if (resolver->queue[p_id].status.get() == IP::RESOLVER_STATUS_NONE) {
+ IP::ResolverStatus res = resolver->queue[p_id].status.get();
+ if (res == IP::RESOLVER_STATUS_NONE) {
ERR_PRINT("Condition status == IP::RESOLVER_STATUS_NONE");
return IP::RESOLVER_STATUS_NONE;
}
- return resolver->queue[p_id].status.get();
+ return res;
}
IPAddress IP::get_resolve_item_address(ResolverID p_id) const {
@@ -230,8 +257,6 @@ Array IP::get_resolve_item_addresses(ResolverID p_id) const {
void IP::erase_resolve_item(ResolverID p_id) {
ERR_FAIL_INDEX(p_id, IP::RESOLVER_MAX_QUERIES);
- MutexLock lock(resolver->mutex);
-
resolver->queue[p_id].status.set(IP::RESOLVER_STATUS_NONE);
}
@@ -252,8 +277,8 @@ Array IP::_get_local_addresses() const {
Array addresses;
List<IPAddress> ip_addresses;
get_local_addresses(&ip_addresses);
- for (List<IPAddress>::Element *E = ip_addresses.front(); E; E = E->next()) {
- addresses.push_back(E->get());
+ for (const IPAddress &E : ip_addresses) {
+ addresses.push_back(E);
}
return addresses;
@@ -271,8 +296,8 @@ Array IP::_get_local_interfaces() const {
rc["index"] = c.index;
Array ips;
- for (const List<IPAddress>::Element *F = c.ip_addresses.front(); F; F = F->next()) {
- ips.push_front(F->get());
+ for (const IPAddress &F : c.ip_addresses) {
+ ips.push_front(F);
}
rc["addresses"] = ips;
@@ -286,8 +311,8 @@ void IP::get_local_addresses(List<IPAddress> *r_addresses) const {
Map<String, Interface_Info> interfaces;
get_local_interfaces(&interfaces);
for (Map<String, Interface_Info>::Element *E = interfaces.front(); E; E = E->next()) {
- for (const List<IPAddress>::Element *F = E->get().ip_addresses.front(); F; F = F->next()) {
- r_addresses->push_front(F->get());
+ for (const IPAddress &F : E->get().ip_addresses) {
+ r_addresses->push_front(F);
}
}
}
diff --git a/core/io/json.cpp b/core/io/json.cpp
index b3a2498212..5823afbdcd 100644
--- a/core/io/json.cpp
+++ b/core/io/json.cpp
@@ -121,14 +121,17 @@ String JSON::_stringify(const Variant &p_var, const String &p_indent, int p_cur_
keys.sort();
}
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- if (E != keys.front()) {
+ bool first_key = true;
+ for (const Variant &E : keys) {
+ if (first_key) {
+ first_key = false;
+ } else {
s += ",";
s += end_statement;
}
- s += _make_indent(p_indent, p_cur_indent + 1) + _stringify(String(E->get()), p_indent, p_cur_indent + 1, p_sort_keys, p_markers);
+ s += _make_indent(p_indent, p_cur_indent + 1) + _stringify(String(E), p_indent, p_cur_indent + 1, p_sort_keys, p_markers);
s += colon;
- s += _stringify(d[E->get()], p_indent, p_cur_indent + 1, p_sort_keys, p_markers);
+ s += _stringify(d[E], p_indent, p_cur_indent + 1, p_sort_keys, p_markers);
}
s += end_statement + _make_indent(p_indent, p_cur_indent) + "}";
diff --git a/core/io/marshalls.cpp b/core/io/marshalls.cpp
index f342db2dad..e7d5b78d14 100644
--- a/core/io/marshalls.cpp
+++ b/core/io/marshalls.cpp
@@ -746,7 +746,7 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int
} break;
case Variant::PACKED_INT64_ARRAY: {
ERR_FAIL_COND_V(len < 4, ERR_INVALID_DATA);
- int64_t count = decode_uint64(buf);
+ int32_t count = decode_uint32(buf);
buf += 4;
len -= 4;
ERR_FAIL_MUL_OF(count, 8, ERR_INVALID_DATA);
@@ -795,7 +795,7 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int
} break;
case Variant::PACKED_FLOAT64_ARRAY: {
ERR_FAIL_COND_V(len < 4, ERR_INVALID_DATA);
- int64_t count = decode_uint64(buf);
+ int32_t count = decode_uint32(buf);
buf += 4;
len -= 4;
ERR_FAIL_MUL_OF(count, 8, ERR_INVALID_DATA);
@@ -804,7 +804,6 @@ Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int
Vector<double> data;
if (count) {
- //const double*rbuf=(const double*)buf;
data.resize(count);
double *w = data.ptrw();
for (int64_t i = 0; i < count; i++) {
@@ -1031,7 +1030,8 @@ static void _encode_string(const String &p_string, uint8_t *&buf, int &r_len) {
}
}
-Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_full_objects) {
+Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_full_objects, int p_depth) {
+ ERR_FAIL_COND_V_MSG(p_depth > Variant::MAX_RECURSION_DEPTH, ERR_OUT_OF_MEMORY, "Potential inifite recursion detected. Bailing.");
uint8_t *buf = r_buffer;
r_len = 0;
@@ -1358,8 +1358,8 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
obj->get_property_list(&props);
int pc = 0;
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : props) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
pc++;
@@ -1372,18 +1372,16 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
r_len += 4;
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : props) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- _encode_string(E->get().name, buf, r_len);
+ _encode_string(E.name, buf, r_len);
int len;
- Error err = encode_variant(obj->get(E->get().name), buf, len, p_full_objects);
- if (err) {
- return err;
- }
+ Error err = encode_variant(obj->get(E.name), buf, len, p_full_objects, p_depth + 1);
+ ERR_FAIL_COND_V(err, err);
ERR_FAIL_COND_V(len % 4, ERR_BUG);
r_len += len;
if (buf) {
@@ -1418,7 +1416,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
List<Variant> keys;
d.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
+ for (const Variant &E : keys) {
/*
CharString utf8 = E->->utf8();
@@ -1433,15 +1431,17 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
r_len++; //pad
*/
int len;
- encode_variant(E->get(), buf, len, p_full_objects);
+ Error err = encode_variant(E, buf, len, p_full_objects, p_depth + 1);
+ ERR_FAIL_COND_V(err, err);
ERR_FAIL_COND_V(len % 4, ERR_BUG);
r_len += len;
if (buf) {
buf += len;
}
- Variant *v = d.getptr(E->get());
+ Variant *v = d.getptr(E);
ERR_FAIL_COND_V(!v, ERR_BUG);
- encode_variant(*v, buf, len, p_full_objects);
+ err = encode_variant(*v, buf, len, p_full_objects, p_depth + 1);
+ ERR_FAIL_COND_V(err, err);
ERR_FAIL_COND_V(len % 4, ERR_BUG);
r_len += len;
if (buf) {
@@ -1462,7 +1462,8 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
for (int i = 0; i < v.size(); i++) {
int len;
- encode_variant(v.get(i), buf, len, p_full_objects);
+ Error err = encode_variant(v.get(i), buf, len, p_full_objects, p_depth + 1);
+ ERR_FAIL_COND_V(err, err);
ERR_FAIL_COND_V(len % 4, ERR_BUG);
r_len += len;
if (buf) {
@@ -1517,7 +1518,7 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo
int datasize = sizeof(int64_t);
if (buf) {
- encode_uint64(datalen, buf);
+ encode_uint32(datalen, buf);
buf += 4;
const int64_t *r = data.ptr();
for (int64_t i = 0; i < datalen; i++) {
diff --git a/core/io/marshalls.h b/core/io/marshalls.h
index 3ebed914a3..05804d5a46 100644
--- a/core/io/marshalls.h
+++ b/core/io/marshalls.h
@@ -213,6 +213,6 @@ public:
};
Error decode_variant(Variant &r_variant, const uint8_t *p_buffer, int p_len, int *r_len = nullptr, bool p_allow_objects = false);
-Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_full_objects = false);
+Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bool p_full_objects = false, int p_depth = 0);
#endif // MARSHALLS_H
diff --git a/core/io/multiplayer_api.cpp b/core/io/multiplayer_api.cpp
index e99c60613a..1c3f231170 100644
--- a/core/io/multiplayer_api.cpp
+++ b/core/io/multiplayer_api.cpp
@@ -63,7 +63,7 @@ const MultiplayerAPI::RPCConfig _get_rpc_config(const Node *p_node, const String
const Vector<MultiplayerAPI::RPCConfig> node_config = p_node->get_node_rpc_methods();
for (int i = 0; i < node_config.size(); i++) {
if (node_config[i].name == p_method) {
- r_id = ((uint16_t)i) & (1 << 15);
+ r_id = ((uint16_t)i) | (1 << 15);
return node_config[i];
}
}
@@ -89,7 +89,7 @@ const MultiplayerAPI::RPCConfig _get_rpc_config_by_id(Node *p_node, uint16_t p_i
config = p_node->get_script_instance()->get_rpc_methods();
}
if (id < config.size()) {
- return config[p_id];
+ return config[id];
}
return MultiplayerAPI::RPCConfig();
}
@@ -478,6 +478,7 @@ void MultiplayerAPI::_process_simplify_path(int p_from, const uint8_t *p_packet,
packet.write[1] = valid_rpc_checksum;
encode_cstring(pname.get_data(), &packet.write[2]);
+ network_peer->set_transfer_channel(0);
network_peer->set_transfer_mode(MultiplayerPeer::TRANSFER_MODE_RELIABLE);
network_peer->set_target_peer(p_from);
network_peer->put_packet(packet.ptr(), packet.size());
@@ -555,12 +556,13 @@ bool MultiplayerAPI::_send_confirm_path(Node *p_node, NodePath p_path, PathSentC
ofs += encode_cstring(path.get_data(), &packet.write[ofs]);
- for (List<int>::Element *E = peers_to_add.front(); E; E = E->next()) {
- network_peer->set_target_peer(E->get()); // To all of you.
+ for (int &E : peers_to_add) {
+ network_peer->set_target_peer(E); // To all of you.
+ network_peer->set_transfer_channel(0);
network_peer->set_transfer_mode(MultiplayerPeer::TRANSFER_MODE_RELIABLE);
network_peer->put_packet(packet.ptr(), packet.size());
- psc->confirmed_peers.insert(E->get(), false); // Insert into confirmed, but as false since it was not confirmed.
+ psc->confirmed_peers.insert(E, false); // Insert into confirmed, but as false since it was not confirmed.
}
}
@@ -858,6 +860,7 @@ void MultiplayerAPI::_send_rpc(Node *p_from, int p_to, uint16_t p_rpc_id, const
#endif
// Take chance and set transfer mode, since all send methods will use it.
+ network_peer->set_transfer_channel(p_config.channel);
network_peer->set_transfer_mode(p_config.transfer_mode);
if (has_all_peers) {
@@ -917,8 +920,8 @@ void MultiplayerAPI::_del_peer(int p_id) {
// Some refactoring is needed to make this faster and do paths GC.
List<NodePath> keys;
path_send_cache.get_key_list(&keys);
- for (List<NodePath>::Element *E = keys.front(); E; E = E->next()) {
- PathSentCache *psc = path_send_cache.getptr(E->get());
+ for (const NodePath &E : keys) {
+ PathSentCache *psc = path_send_cache.getptr(E);
psc->confirmed_peers.erase(p_id);
}
emit_signal(SNAME("network_peer_disconnected"), p_id);
@@ -996,7 +999,7 @@ void MultiplayerAPI::rpcp(Node *p_node, int p_peer_id, bool p_unreliable, const
ERR_FAIL_COND_MSG(p_peer_id == node_id && !config.sync, "RPC '" + p_method + "' on yourself is not allowed by selected mode.");
}
-Error MultiplayerAPI::send_bytes(Vector<uint8_t> p_data, int p_to, MultiplayerPeer::TransferMode p_mode) {
+Error MultiplayerAPI::send_bytes(Vector<uint8_t> p_data, int p_to, MultiplayerPeer::TransferMode p_mode, int p_channel) {
ERR_FAIL_COND_V_MSG(p_data.size() < 1, ERR_INVALID_DATA, "Trying to send an empty raw packet.");
ERR_FAIL_COND_V_MSG(!network_peer.is_valid(), ERR_UNCONFIGURED, "Trying to send a raw packet while no network peer is active.");
ERR_FAIL_COND_V_MSG(network_peer->get_connection_status() != MultiplayerPeer::CONNECTION_CONNECTED, ERR_UNCONFIGURED, "Trying to send a raw packet via a network peer which is not connected.");
@@ -1007,6 +1010,7 @@ Error MultiplayerAPI::send_bytes(Vector<uint8_t> p_data, int p_to, MultiplayerPe
memcpy(&packet_cache.write[1], &r[0], p_data.size());
network_peer->set_target_peer(p_to);
+ network_peer->set_transfer_channel(p_channel);
network_peer->set_transfer_mode(p_mode);
return network_peer->put_packet(packet_cache.ptr(), p_data.size() + 1);
@@ -1066,7 +1070,7 @@ bool MultiplayerAPI::is_object_decoding_allowed() const {
void MultiplayerAPI::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_root_node", "node"), &MultiplayerAPI::set_root_node);
ClassDB::bind_method(D_METHOD("get_root_node"), &MultiplayerAPI::get_root_node);
- ClassDB::bind_method(D_METHOD("send_bytes", "bytes", "id", "mode"), &MultiplayerAPI::send_bytes, DEFVAL(MultiplayerPeer::TARGET_PEER_BROADCAST), DEFVAL(MultiplayerPeer::TRANSFER_MODE_RELIABLE));
+ ClassDB::bind_method(D_METHOD("send_bytes", "bytes", "id", "mode", "channel"), &MultiplayerAPI::send_bytes, DEFVAL(MultiplayerPeer::TARGET_PEER_BROADCAST), DEFVAL(MultiplayerPeer::TRANSFER_MODE_RELIABLE), DEFVAL(0));
ClassDB::bind_method(D_METHOD("has_network_peer"), &MultiplayerAPI::has_network_peer);
ClassDB::bind_method(D_METHOD("get_network_peer"), &MultiplayerAPI::get_network_peer);
ClassDB::bind_method(D_METHOD("get_network_unique_id"), &MultiplayerAPI::get_network_unique_id);
diff --git a/core/io/multiplayer_api.h b/core/io/multiplayer_api.h
index cc994a9852..011bc3dde9 100644
--- a/core/io/multiplayer_api.h
+++ b/core/io/multiplayer_api.h
@@ -132,7 +132,7 @@ public:
Node *get_root_node();
void set_network_peer(const Ref<MultiplayerPeer> &p_peer);
Ref<MultiplayerPeer> get_network_peer() const;
- Error send_bytes(Vector<uint8_t> p_data, int p_to = MultiplayerPeer::TARGET_PEER_BROADCAST, MultiplayerPeer::TransferMode p_mode = MultiplayerPeer::TRANSFER_MODE_RELIABLE);
+ Error send_bytes(Vector<uint8_t> p_data, int p_to = MultiplayerPeer::TARGET_PEER_BROADCAST, MultiplayerPeer::TransferMode p_mode = MultiplayerPeer::TRANSFER_MODE_RELIABLE, int p_channel = 0);
// Called by Node.rpc
void rpcp(Node *p_node, int p_peer_id, bool p_unreliable, const StringName &p_method, const Variant **p_arg, int p_argcount);
diff --git a/core/io/multiplayer_peer.cpp b/core/io/multiplayer_peer.cpp
index 8126b4cea3..83cf24d7e3 100644
--- a/core/io/multiplayer_peer.cpp
+++ b/core/io/multiplayer_peer.cpp
@@ -30,7 +30,32 @@
#include "multiplayer_peer.h"
+#include "core/os/os.h"
+
+uint32_t MultiplayerPeer::generate_unique_id() const {
+ uint32_t hash = 0;
+
+ while (hash == 0 || hash == 1) {
+ hash = hash_djb2_one_32(
+ (uint32_t)OS::get_singleton()->get_ticks_usec());
+ hash = hash_djb2_one_32(
+ (uint32_t)OS::get_singleton()->get_unix_time(), hash);
+ hash = hash_djb2_one_32(
+ (uint32_t)OS::get_singleton()->get_user_data_dir().hash64(), hash);
+ hash = hash_djb2_one_32(
+ (uint32_t)((uint64_t)this), hash); // Rely on ASLR heap
+ hash = hash_djb2_one_32(
+ (uint32_t)((uint64_t)&hash), hash); // Rely on ASLR stack
+
+ hash = hash & 0x7FFFFFFF; // Make it compatible with unsigned, since negative ID is used for exclusion
+ }
+
+ return hash;
+}
+
void MultiplayerPeer::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("set_transfer_channel", "channel"), &MultiplayerPeer::set_transfer_channel);
+ ClassDB::bind_method(D_METHOD("get_transfer_channel"), &MultiplayerPeer::get_transfer_channel);
ClassDB::bind_method(D_METHOD("set_transfer_mode", "mode"), &MultiplayerPeer::set_transfer_mode);
ClassDB::bind_method(D_METHOD("get_transfer_mode"), &MultiplayerPeer::get_transfer_mode);
ClassDB::bind_method(D_METHOD("set_target_peer", "id"), &MultiplayerPeer::set_target_peer);
@@ -41,12 +66,14 @@ void MultiplayerPeer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_connection_status"), &MultiplayerPeer::get_connection_status);
ClassDB::bind_method(D_METHOD("get_unique_id"), &MultiplayerPeer::get_unique_id);
+ ClassDB::bind_method(D_METHOD("generate_unique_id"), &MultiplayerPeer::generate_unique_id);
ClassDB::bind_method(D_METHOD("set_refuse_new_connections", "enable"), &MultiplayerPeer::set_refuse_new_connections);
ClassDB::bind_method(D_METHOD("is_refusing_new_connections"), &MultiplayerPeer::is_refusing_new_connections);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "refuse_new_connections"), "set_refuse_new_connections", "is_refusing_new_connections");
ADD_PROPERTY(PropertyInfo(Variant::INT, "transfer_mode", PROPERTY_HINT_ENUM, "Unreliable,Unreliable Ordered,Reliable"), "set_transfer_mode", "get_transfer_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "transfer_channel", PROPERTY_HINT_RANGE, "0,255,1"), "set_transfer_channel", "get_transfer_channel");
BIND_ENUM_CONSTANT(TRANSFER_MODE_UNRELIABLE);
BIND_ENUM_CONSTANT(TRANSFER_MODE_UNRELIABLE_ORDERED);
diff --git a/core/io/multiplayer_peer.h b/core/io/multiplayer_peer.h
index 432f47280f..7ca4e7930b 100644
--- a/core/io/multiplayer_peer.h
+++ b/core/io/multiplayer_peer.h
@@ -56,6 +56,8 @@ public:
CONNECTION_CONNECTED,
};
+ virtual void set_transfer_channel(int p_channel) = 0;
+ virtual int get_transfer_channel() const = 0;
virtual void set_transfer_mode(TransferMode p_mode) = 0;
virtual TransferMode get_transfer_mode() const = 0;
virtual void set_target_peer(int p_peer_id) = 0;
@@ -72,6 +74,7 @@ public:
virtual bool is_refusing_new_connections() const = 0;
virtual ConnectionStatus get_connection_status() const = 0;
+ uint32_t generate_unique_id() const;
MultiplayerPeer() {}
};
diff --git a/core/io/packed_data_container.cpp b/core/io/packed_data_container.cpp
index cf6a0b6027..4a76f0191d 100644
--- a/core/io/packed_data_container.cpp
+++ b/core/io/packed_data_container.cpp
@@ -268,21 +268,21 @@ uint32_t PackedDataContainer::_pack(const Variant &p_data, Vector<uint8_t> &tmpd
d.get_key_list(&keys);
List<DictKey> sortk;
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
+ for (const Variant &key : keys) {
DictKey dk;
- dk.hash = E->get().hash();
- dk.key = E->get();
+ dk.hash = key.hash();
+ dk.key = key;
sortk.push_back(dk);
}
sortk.sort();
int idx = 0;
- for (List<DictKey>::Element *E = sortk.front(); E; E = E->next()) {
- encode_uint32(E->get().hash, &tmpdata.write[pos + 8 + idx * 12 + 0]);
- uint32_t ofs = _pack(E->get().key, tmpdata, string_cache);
+ for (const DictKey &E : sortk) {
+ encode_uint32(E.hash, &tmpdata.write[pos + 8 + idx * 12 + 0]);
+ uint32_t ofs = _pack(E.key, tmpdata, string_cache);
encode_uint32(ofs, &tmpdata.write[pos + 8 + idx * 12 + 4]);
- ofs = _pack(d[E->get().key], tmpdata, string_cache);
+ ofs = _pack(d[E.key], tmpdata, string_cache);
encode_uint32(ofs, &tmpdata.write[pos + 8 + idx * 12 + 8]);
idx++;
}
diff --git a/core/io/resource.cpp b/core/io/resource.cpp
index 91a1386965..727611a573 100644
--- a/core/io/resource.cpp
+++ b/core/io/resource.cpp
@@ -165,15 +165,15 @@ Error Resource::copy_from(const Ref<Resource> &p_resource) {
List<PropertyInfo> pi;
p_resource->get_property_list(&pi);
- for (List<PropertyInfo>::Element *E = pi.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : pi) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- if (E->get().name == "resource_path") {
+ if (E.name == "resource_path") {
continue; //do not change path
}
- set(E->get().name, p_resource->get(E->get().name));
+ set(E.name, p_resource->get(E.name));
}
return OK;
}
@@ -201,11 +201,11 @@ Ref<Resource> Resource::duplicate_for_local_scene(Node *p_for_scene, Map<Ref<Res
r->local_scene = p_for_scene;
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : plist) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- Variant p = get(E->get().name);
+ Variant p = get(E.name);
if (p.get_type() == Variant::OBJECT) {
RES sr = p;
if (sr.is_valid()) {
@@ -221,7 +221,7 @@ Ref<Resource> Resource::duplicate_for_local_scene(Node *p_for_scene, Map<Ref<Res
}
}
- r->set(E->get().name, p);
+ r->set(E.name, p);
}
return r;
@@ -233,11 +233,11 @@ void Resource::configure_for_local_scene(Node *p_for_scene, Map<Ref<Resource>, R
local_scene = p_for_scene;
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : plist) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- Variant p = get(E->get().name);
+ Variant p = get(E.name);
if (p.get_type() == Variant::OBJECT) {
RES sr = p;
if (sr.is_valid()) {
@@ -259,21 +259,21 @@ Ref<Resource> Resource::duplicate(bool p_subresources) const {
Ref<Resource> r = (Resource *)ClassDB::instantiate(get_class());
ERR_FAIL_COND_V(r.is_null(), Ref<Resource>());
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : plist) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- Variant p = get(E->get().name);
+ Variant p = get(E.name);
if ((p.get_type() == Variant::DICTIONARY || p.get_type() == Variant::ARRAY)) {
- r->set(E->get().name, p.duplicate(p_subresources));
- } else if (p.get_type() == Variant::OBJECT && (p_subresources || (E->get().usage & PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE))) {
+ r->set(E.name, p.duplicate(p_subresources));
+ } else if (p.get_type() == Variant::OBJECT && (p_subresources || (E.usage & PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE))) {
RES sr = p;
if (sr.is_valid()) {
- r->set(E->get().name, sr->duplicate(p_subresources));
+ r->set(E.name, sr->duplicate(p_subresources));
}
} else {
- r->set(E->get().name, p);
+ r->set(E.name, p);
}
}
@@ -317,9 +317,9 @@ uint32_t Resource::hash_edited_version() const {
List<PropertyInfo> plist;
get_property_list(&plist);
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (E->get().usage & PROPERTY_USAGE_STORAGE && E->get().type == Variant::OBJECT && E->get().hint == PROPERTY_HINT_RESOURCE_TYPE) {
- RES res = get(E->get().name);
+ for (const PropertyInfo &E : plist) {
+ if (E.usage & PROPERTY_USAGE_STORAGE && E.type == Variant::OBJECT && E.hint == PROPERTY_HINT_RESOURCE_TYPE) {
+ RES res = get(E.name);
if (res.is_valid()) {
hash = hash_djb2_one_32(res->hash_edited_version(), hash);
}
diff --git a/core/io/resource.h b/core/io/resource.h
index 0f88738f76..e864b371ad 100644
--- a/core/io/resource.h
+++ b/core/io/resource.h
@@ -31,6 +31,7 @@
#ifndef RESOURCE_H
#define RESOURCE_H
+#include "core/io/resource_uid.h"
#include "core/object/class_db.h"
#include "core/object/ref_counted.h"
#include "core/templates/safe_refcount.h"
diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp
index e889586afc..00d4d093da 100644
--- a/core/io/resource_format_binary.cpp
+++ b/core/io/resource_format_binary.cpp
@@ -816,13 +816,18 @@ String ResourceLoaderBinary::get_unicode_string() {
}
void ResourceLoaderBinary::get_dependencies(FileAccess *p_f, List<String> *p_dependencies, bool p_add_types) {
- open(p_f);
+ open(p_f, false, true);
if (error) {
return;
}
for (int i = 0; i < external_resources.size(); i++) {
- String dep = external_resources[i].path;
+ String dep;
+ if (external_resources[i].uid != ResourceUID::INVALID_ID) {
+ dep = ResourceUID::get_singleton()->id_to_text(external_resources[i].uid);
+ } else {
+ dep = external_resources[i].path;
+ }
if (p_add_types && external_resources[i].type != String()) {
dep += "::" + external_resources[i].type;
@@ -832,7 +837,7 @@ void ResourceLoaderBinary::get_dependencies(FileAccess *p_f, List<String> *p_dep
}
}
-void ResourceLoaderBinary::open(FileAccess *p_f) {
+void ResourceLoaderBinary::open(FileAccess *p_f, bool p_no_resources, bool p_keep_uuid_paths) {
error = OK;
f = p_f;
@@ -891,10 +896,25 @@ void ResourceLoaderBinary::open(FileAccess *p_f) {
if (flags & ResourceFormatSaverBinaryInstance::FORMAT_FLAG_NAMED_SCENE_IDS) {
using_named_scene_ids = true;
}
- for (int i = 0; i < 13; i++) {
+ if (flags & ResourceFormatSaverBinaryInstance::FORMAT_FLAG_UIDS) {
+ using_uids = true;
+ }
+
+ if (using_uids) {
+ uid = f->get_64();
+ } else {
+ f->get_64(); // skip over uid field
+ uid = ResourceUID::INVALID_ID;
+ }
+
+ for (int i = 0; i < ResourceFormatSaverBinaryInstance::RESERVED_FIELDS; i++) {
f->get_32(); //skip a few reserved fields
}
+ if (p_no_resources) {
+ return;
+ }
+
uint32_t string_table_size = f->get_32();
string_map.resize(string_table_size);
for (uint32_t i = 0; i < string_table_size; i++) {
@@ -908,8 +928,18 @@ void ResourceLoaderBinary::open(FileAccess *p_f) {
for (uint32_t i = 0; i < ext_resources_size; i++) {
ExtResource er;
er.type = get_unicode_string();
-
er.path = get_unicode_string();
+ if (using_uids) {
+ er.uid = f->get_64();
+ if (!p_keep_uuid_paths && er.uid != ResourceUID::INVALID_ID) {
+ if (ResourceUID::get_singleton()->has_id(er.uid)) {
+ // If a UID is found and the path is valid, it will be used, otherwise, it falls back to the path.
+ er.path = ResourceUID::get_singleton()->get_id_path(er.uid);
+ } else {
+ WARN_PRINT(String(res_path + ": In external resource #" + itos(i) + ", invalid UUID: " + ResourceUID::get_singleton()->id_to_text(er.uid) + " - using text path instead: " + er.path).utf8().get_data());
+ }
+ }
+ }
external_resources.push_back(er);
}
@@ -1025,8 +1055,8 @@ void ResourceFormatLoaderBinary::get_recognized_extensions_for_type(const String
extensions.sort();
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- String ext = E->get().to_lower();
+ for (const String &E : extensions) {
+ String ext = E.to_lower();
p_extensions->push_back(ext);
}
}
@@ -1036,8 +1066,8 @@ void ResourceFormatLoaderBinary::get_recognized_extensions(List<String> *p_exten
ClassDB::get_resource_base_extensions(&extensions);
extensions.sort();
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- String ext = E->get().to_lower();
+ for (const String &E : extensions) {
+ String ext = E.to_lower();
p_extensions->push_back(ext);
}
}
@@ -1173,8 +1203,15 @@ Error ResourceFormatLoaderBinary::rename_dependencies(const String &p_path, cons
uint64_t importmd_ofs = f->get_64();
fw->store_64(0); //metadata offset
- for (int i = 0; i < 14; i++) {
- fw->store_32(0);
+ uint32_t flags = f->get_32();
+ bool using_uids = (flags & ResourceFormatSaverBinaryInstance::FORMAT_FLAG_UIDS);
+ uint64_t uid_data = f->get_64();
+
+ fw->store_32(flags);
+ fw->store_64(uid_data);
+
+ for (int i = 0; i < ResourceFormatSaverBinaryInstance::RESERVED_FIELDS; i++) {
+ fw->store_32(0); // reserved
f->get_32();
}
@@ -1195,6 +1232,16 @@ Error ResourceFormatLoaderBinary::rename_dependencies(const String &p_path, cons
String type = get_ustring(f);
String path = get_ustring(f);
+ if (using_uids) {
+ ResourceUID::ID uid = f->get_64();
+ if (uid != ResourceUID::INVALID_ID) {
+ if (ResourceUID::get_singleton()->has_id(uid)) {
+ // If a UID is found and the path is valid, it will be used, otherwise, it falls back to the path.
+ path = ResourceUID::get_singleton()->get_id_path(uid);
+ }
+ }
+ }
+
bool relative = false;
if (!path.begins_with("res://")) {
path = local_path.plus_file(path).simplify_path();
@@ -1206,6 +1253,8 @@ Error ResourceFormatLoaderBinary::rename_dependencies(const String &p_path, cons
path = np;
}
+ String full_path = path;
+
if (relative) {
//restore relative
path = local_path.path_to_file(path);
@@ -1213,6 +1262,11 @@ Error ResourceFormatLoaderBinary::rename_dependencies(const String &p_path, cons
save_ustring(fw, type);
save_ustring(fw, path);
+
+ if (using_uids) {
+ ResourceUID::ID uid = ResourceSaver::get_resource_id_for_path(full_path);
+ fw->store_64(uid);
+ }
}
int64_t size_diff = (int64_t)fw->get_position() - (int64_t)f->get_position();
@@ -1268,6 +1322,28 @@ String ResourceFormatLoaderBinary::get_resource_type(const String &p_path) const
return ClassDB::get_compatibility_remapped_class(r);
}
+ResourceUID::ID ResourceFormatLoaderBinary::get_resource_uid(const String &p_path) const {
+ String ext = p_path.get_extension().to_lower();
+ if (!ClassDB::is_resource_extension(ext)) {
+ return ResourceUID::INVALID_ID;
+ }
+
+ FileAccess *f = FileAccess::open(p_path, FileAccess::READ);
+ if (!f) {
+ return ResourceUID::INVALID_ID; //could not read
+ }
+
+ ResourceLoaderBinary loader;
+ loader.local_path = ProjectSettings::get_singleton()->localize_path(p_path);
+ loader.res_path = loader.local_path;
+ //loader.set_local_path( Globals::get_singleton()->localize_path(p_path) );
+ loader.open(f, true);
+ if (loader.error != OK) {
+ return ResourceUID::INVALID_ID; //could not read
+ }
+ return loader.uid;
+}
+
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
@@ -1528,14 +1604,14 @@ void ResourceFormatSaverBinaryInstance::write_variant(FileAccess *f, const Varia
List<Variant> keys;
d.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
+ for (const Variant &E : keys) {
/*
- if (!_check_type(dict[E->get()]))
+ if (!_check_type(dict[E]))
continue;
*/
- write_variant(f, E->get(), resource_map, external_resources, string_map);
- write_variant(f, d[E->get()], resource_map, external_resources, string_map);
+ write_variant(f, E, resource_map, external_resources, string_map);
+ write_variant(f, d[E], resource_map, external_resources, string_map);
}
} break;
@@ -1685,15 +1761,15 @@ void ResourceFormatSaverBinaryInstance::_find_resources(const Variant &p_variant
res->get_property_list(&property_list);
- for (List<PropertyInfo>::Element *E = property_list.front(); E; E = E->next()) {
- if (E->get().usage & PROPERTY_USAGE_STORAGE) {
- Variant value = res->get(E->get().name);
- if (E->get().usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT) {
+ for (const PropertyInfo &E : property_list) {
+ if (E.usage & PROPERTY_USAGE_STORAGE) {
+ Variant value = res->get(E.name);
+ if (E.usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT) {
RES sres = value;
if (sres.is_valid()) {
NonPersistentKey npk;
npk.base = res;
- npk.property = E->get().name;
+ npk.property = E.name;
non_persistent_map[npk] = sres;
resource_set.insert(sres);
saved_resources.push_back(sres);
@@ -1723,9 +1799,9 @@ void ResourceFormatSaverBinaryInstance::_find_resources(const Variant &p_variant
Dictionary d = p_variant;
List<Variant> keys;
d.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- _find_resources(E->get());
- Variant v = d[E->get()];
+ for (const Variant &E : keys) {
+ _find_resources(E);
+ Variant v = d[E];
_find_resources(v);
}
} break;
@@ -1824,47 +1900,49 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p
save_unicode_string(f, p_resource->get_class());
f->store_64(0); //offset to import metadata
- f->store_32(FORMAT_FLAG_NAMED_SCENE_IDS);
- for (int i = 0; i < 13; i++) {
+ f->store_32(FORMAT_FLAG_NAMED_SCENE_IDS | FORMAT_FLAG_UIDS);
+ ResourceUID::ID uid = ResourceSaver::get_resource_id_for_path(p_path, true);
+ f->store_64(uid);
+ for (int i = 0; i < ResourceFormatSaverBinaryInstance::RESERVED_FIELDS; i++) {
f->store_32(0); // reserved
}
List<ResourceData> resources;
{
- for (List<RES>::Element *E = saved_resources.front(); E; E = E->next()) {
+ for (const RES &E : saved_resources) {
ResourceData &rd = resources.push_back(ResourceData())->get();
- rd.type = E->get()->get_class();
+ rd.type = E->get_class();
List<PropertyInfo> property_list;
- E->get()->get_property_list(&property_list);
+ E->get_property_list(&property_list);
- for (List<PropertyInfo>::Element *F = property_list.front(); F; F = F->next()) {
- if (skip_editor && F->get().name.begins_with("__editor")) {
+ for (const PropertyInfo &F : property_list) {
+ if (skip_editor && F.name.begins_with("__editor")) {
continue;
}
- if ((F->get().usage & PROPERTY_USAGE_STORAGE)) {
+ if ((F.usage & PROPERTY_USAGE_STORAGE)) {
Property p;
- p.name_idx = get_string_index(F->get().name);
+ p.name_idx = get_string_index(F.name);
- if (F->get().usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT) {
+ if (F.usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT) {
NonPersistentKey npk;
- npk.base = E->get();
- npk.property = F->get().name;
+ npk.base = E;
+ npk.property = F.name;
if (non_persistent_map.has(npk)) {
p.value = non_persistent_map[npk];
}
} else {
- p.value = E->get()->get(F->get().name);
+ p.value = E->get(F.name);
}
- Variant default_value = ClassDB::class_get_default_property_value(E->get()->get_class(), F->get().name);
+ Variant default_value = ClassDB::class_get_default_property_value(E->get_class(), F.name);
if (default_value.get_type() != Variant::NIL && bool(Variant::evaluate(Variant::OP_EQUAL, p.value, default_value))) {
continue;
}
- p.pi = F->get();
+ p.pi = F;
rd.properties.push_back(p);
}
@@ -1891,14 +1969,15 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p
String path = save_order[i]->get_path();
path = relative_paths ? local_path.path_to_file(path) : path;
save_unicode_string(f, path);
+ ResourceUID::ID ruid = ResourceSaver::get_resource_id_for_path(save_order[i]->get_path(), false);
+ f->store_64(ruid);
}
// save internal resource table
f->store_32(saved_resources.size()); //amount of internal resources
Vector<uint64_t> ofs_pos;
Set<String> used_unique_ids;
- for (List<RES>::Element *E = saved_resources.front(); E; E = E->next()) {
- RES r = E->get();
+ for (RES &r : saved_resources) {
if (r->get_path() == "" || r->get_path().find("::") != -1) {
if (r->get_scene_unique_id() != "") {
if (used_unique_ids.has(r->get_scene_unique_id())) {
@@ -1912,8 +1991,7 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p
Map<RES, int> resource_map;
int res_index = 0;
- for (List<RES>::Element *E = saved_resources.front(); E; E = E->next()) {
- RES r = E->get();
+ for (RES &r : saved_resources) {
if (r->get_path() == "" || r->get_path().find("::") != -1) {
if (r->get_scene_unique_id() == "") {
String new_id;
@@ -1947,17 +2025,14 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p
Vector<uint64_t> ofs_table;
//now actually save the resources
- for (List<ResourceData>::Element *E = resources.front(); E; E = E->next()) {
- ResourceData &rd = E->get();
-
+ for (const ResourceData &rd : resources) {
ofs_table.push_back(f->get_position());
save_unicode_string(f, rd.type);
f->store_32(rd.properties.size());
- for (List<Property>::Element *F = rd.properties.front(); F; F = F->next()) {
- Property &p = F->get();
+ for (const Property &p : rd.properties) {
f->store_32(p.name_idx);
- write_variant(f, p.value, resource_map, external_resources, string_map, F->get().pi);
+ write_variant(f, p.value, resource_map, external_resources, string_map, p.pi);
}
}
diff --git a/core/io/resource_format_binary.h b/core/io/resource_format_binary.h
index e3dcf44492..a6e6d1848e 100644
--- a/core/io/resource_format_binary.h
+++ b/core/io/resource_format_binary.h
@@ -47,6 +47,8 @@ class ResourceLoaderBinary {
uint64_t importmd_ofs = 0;
+ ResourceUID::ID uid = ResourceUID::INVALID_ID;
+
Vector<char> str_buf;
List<RES> resource_cache;
@@ -57,10 +59,12 @@ class ResourceLoaderBinary {
struct ExtResource {
String path;
String type;
+ ResourceUID::ID uid = ResourceUID::INVALID_ID;
RES cache;
};
bool using_named_scene_ids = false;
+ bool using_uids = false;
bool use_sub_threads = false;
float *progress = nullptr;
Vector<ExtResource> external_resources;
@@ -94,7 +98,7 @@ public:
void set_translation_remapped(bool p_remapped);
void set_remaps(const Map<String, String> &p_remaps) { remaps = p_remaps; }
- void open(FileAccess *p_f);
+ void open(FileAccess *p_f, bool p_no_resources = false, bool p_keep_uuid_paths = false);
String recognize(FileAccess *p_f);
void get_dependencies(FileAccess *p_f, List<String> *p_dependencies, bool p_add_types);
@@ -109,6 +113,7 @@ public:
virtual void get_recognized_extensions(List<String> *p_extensions) const;
virtual bool handles_type(const String &p_type) const;
virtual String get_resource_type(const String &p_path) const;
+ virtual ResourceUID::ID get_resource_uid(const String &p_path) const;
virtual void get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types = false);
virtual Error rename_dependencies(const String &p_path, const Map<String, String> &p_map);
};
@@ -157,7 +162,10 @@ class ResourceFormatSaverBinaryInstance {
public:
enum {
- FORMAT_FLAG_NAMED_SCENE_IDS = 1
+ FORMAT_FLAG_NAMED_SCENE_IDS = 1,
+ FORMAT_FLAG_UIDS = 2,
+ // Amount of reserved 32-bit fields in resource header
+ RESERVED_FIELDS = 11
};
Error save(const String &p_path, const RES &p_resource, uint32_t p_flags = 0);
static void write_variant(FileAccess *f, const Variant &p_property, Map<RES, int> &resource_map, Map<RES, int> &external_resources, Map<StringName, int> &string_map, const PropertyInfo &p_hint = PropertyInfo());
diff --git a/core/io/resource_importer.cpp b/core/io/resource_importer.cpp
index b503655edd..1e166015b0 100644
--- a/core/io/resource_importer.cpp
+++ b/core/io/resource_importer.cpp
@@ -93,6 +93,8 @@ Error ResourceFormatImporter::_get_path_and_type(const String &p_path, PathAndTy
r_path_and_type.type = ClassDB::get_compatibility_remapped_class(value);
} else if (assign == "importer") {
r_path_and_type.importer = value;
+ } else if (assign == "uid") {
+ r_path_and_type.uid = ResourceUID::get_singleton()->text_to_id(value);
} else if (assign == "group_file") {
r_path_and_type.group_file = value;
} else if (assign == "metadata") {
@@ -146,10 +148,10 @@ void ResourceFormatImporter::get_recognized_extensions(List<String> *p_extension
for (int i = 0; i < importers.size(); i++) {
List<String> local_exts;
importers[i]->get_recognized_extensions(&local_exts);
- for (List<String>::Element *F = local_exts.front(); F; F = F->next()) {
- if (!found.has(F->get())) {
- p_extensions->push_back(F->get());
- found.insert(F->get());
+ for (const String &F : local_exts) {
+ if (!found.has(F)) {
+ p_extensions->push_back(F);
+ found.insert(F);
}
}
}
@@ -175,10 +177,10 @@ void ResourceFormatImporter::get_recognized_extensions_for_type(const String &p_
List<String> local_exts;
importers[i]->get_recognized_extensions(&local_exts);
- for (List<String>::Element *F = local_exts.front(); F; F = F->next()) {
- if (!found.has(F->get())) {
- p_extensions->push_back(F->get());
- found.insert(F->get());
+ for (const String &F : local_exts) {
+ if (!found.has(F)) {
+ p_extensions->push_back(F);
+ found.insert(F);
}
}
}
@@ -336,6 +338,17 @@ String ResourceFormatImporter::get_resource_type(const String &p_path) const {
return pat.type;
}
+ResourceUID::ID ResourceFormatImporter::get_resource_uid(const String &p_path) const {
+ PathAndType pat;
+ Error err = _get_path_and_type(p_path, pat);
+
+ if (err != OK) {
+ return ResourceUID::INVALID_ID;
+ }
+
+ return pat.uid;
+}
+
Variant ResourceFormatImporter::get_resource_metadata(const String &p_path) const {
PathAndType pat;
Error err = _get_path_and_type(p_path, pat);
@@ -372,8 +385,8 @@ void ResourceFormatImporter::get_importers_for_extension(const String &p_extensi
for (int i = 0; i < importers.size(); i++) {
List<String> local_exts;
importers[i]->get_recognized_extensions(&local_exts);
- for (List<String>::Element *F = local_exts.front(); F; F = F->next()) {
- if (p_extension.to_lower() == F->get()) {
+ for (const String &F : local_exts) {
+ if (p_extension.to_lower() == F) {
r_importers->push_back(importers[i]);
}
}
@@ -393,8 +406,8 @@ Ref<ResourceImporter> ResourceFormatImporter::get_importer_by_extension(const St
for (int i = 0; i < importers.size(); i++) {
List<String> local_exts;
importers[i]->get_recognized_extensions(&local_exts);
- for (List<String>::Element *F = local_exts.front(); F; F = F->next()) {
- if (p_extension.to_lower() == F->get() && importers[i]->get_priority() > priority) {
+ for (const String &F : local_exts) {
+ if (p_extension.to_lower() == F && importers[i]->get_priority() > priority) {
importer = importers[i];
priority = importers[i]->get_priority();
}
@@ -445,3 +458,8 @@ ResourceFormatImporter *ResourceFormatImporter::singleton = nullptr;
ResourceFormatImporter::ResourceFormatImporter() {
singleton = this;
}
+
+void ResourceImporter::_bind_methods() {
+ BIND_ENUM_CONSTANT(IMPORT_ORDER_DEFAULT);
+ BIND_ENUM_CONSTANT(IMPORT_ORDER_SCENE);
+}
diff --git a/core/io/resource_importer.h b/core/io/resource_importer.h
index 2ceeb176e5..a1cacbd306 100644
--- a/core/io/resource_importer.h
+++ b/core/io/resource_importer.h
@@ -42,6 +42,7 @@ class ResourceFormatImporter : public ResourceFormatLoader {
String importer;
String group_file;
Variant metadata;
+ uint64_t uid = ResourceUID::INVALID_ID;
};
Error _get_path_and_type(const String &p_path, PathAndType &r_path_and_type, bool *r_valid = nullptr) const;
@@ -63,6 +64,8 @@ public:
virtual bool recognize_path(const String &p_path, const String &p_for_type = String()) const;
virtual bool handles_type(const String &p_type) const;
virtual String get_resource_type(const String &p_path) const;
+ virtual ResourceUID::ID get_resource_uid(const String &p_path) const;
+
virtual Variant get_resource_metadata(const String &p_path) const;
virtual bool is_import_valid(const String &p_path) const;
virtual void get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types = false);
@@ -96,6 +99,9 @@ public:
class ResourceImporter : public RefCounted {
GDCLASS(ResourceImporter, RefCounted);
+protected:
+ static void _bind_methods();
+
public:
virtual String get_importer_name() const = 0;
virtual String get_visible_name() const = 0;
@@ -103,7 +109,7 @@ public:
virtual String get_save_extension() const = 0;
virtual String get_resource_type() const = 0;
virtual float get_priority() const { return 1.0; }
- virtual int get_import_order() const { return 0; }
+ virtual int get_import_order() const { return IMPORT_ORDER_DEFAULT; }
virtual int get_format_version() const { return 0; }
struct ImportOption {
@@ -117,6 +123,11 @@ public:
ImportOption() {}
};
+ enum ImportOrder {
+ IMPORT_ORDER_DEFAULT = 0,
+ IMPORT_ORDER_SCENE = 100,
+ };
+
virtual bool has_advanced_options() const { return false; }
virtual void show_advanced_options(const String &p_path) {}
@@ -137,4 +148,6 @@ public:
virtual String get_import_settings_string() const { return String(); }
};
+VARIANT_ENUM_CAST(ResourceImporter::ImportOrder);
+
#endif // RESOURCE_IMPORTER_H
diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp
index c5dfe1f2b0..d02d827443 100644
--- a/core/io/resource_loader.cpp
+++ b/core/io/resource_loader.cpp
@@ -58,8 +58,8 @@ bool ResourceFormatLoader::recognize_path(const String &p_path, const String &p_
get_recognized_extensions_for_type(p_for_type, &extensions);
}
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- if (E->get().nocasecmp_to(extension) == 0) {
+ for (const String &E : extensions) {
+ if (E.nocasecmp_to(extension) == 0) {
return true;
}
}
@@ -84,6 +84,14 @@ String ResourceFormatLoader::get_resource_type(const String &p_path) const {
return "";
}
+ResourceUID::ID ResourceFormatLoader::get_resource_uid(const String &p_path) const {
+ if (get_script_instance() && get_script_instance()->has_method("_get_resource_uid")) {
+ return get_script_instance()->call("_get_resource_uid", p_path);
+ }
+
+ return ResourceUID::INVALID_ID;
+}
+
void ResourceFormatLoader::get_recognized_extensions_for_type(const String &p_type, List<String> *p_extensions) const {
if (p_type == "" || handles_type(p_type)) {
get_recognized_extensions(p_extensions);
@@ -270,13 +278,18 @@ void ResourceLoader::_thread_load_function(void *p_userdata) {
thread_load_mutex->unlock();
}
-Error ResourceLoader::load_threaded_request(const String &p_path, const String &p_type_hint, bool p_use_sub_threads, ResourceFormatLoader::CacheMode p_cache_mode, const String &p_source_resource) {
- String local_path;
- if (p_path.is_rel_path()) {
- local_path = "res://" + p_path;
+static String _validate_local_path(const String &p_path) {
+ ResourceUID::ID uid = ResourceUID::get_singleton()->text_to_id(p_path);
+ if (uid != ResourceUID::INVALID_ID) {
+ return ResourceUID::get_singleton()->get_id_path(uid);
+ } else if (p_path.is_rel_path()) {
+ return "res://" + p_path;
} else {
- local_path = ProjectSettings::get_singleton()->localize_path(p_path);
+ return ProjectSettings::get_singleton()->localize_path(p_path);
}
+}
+Error ResourceLoader::load_threaded_request(const String &p_path, const String &p_type_hint, bool p_use_sub_threads, ResourceFormatLoader::CacheMode p_cache_mode, const String &p_source_resource) {
+ String local_path = _validate_local_path(p_path);
thread_load_mutex->lock();
@@ -399,12 +412,7 @@ float ResourceLoader::_dependency_get_progress(const String &p_path) {
}
ResourceLoader::ThreadLoadStatus ResourceLoader::load_threaded_get_status(const String &p_path, float *r_progress) {
- String local_path;
- if (p_path.is_rel_path()) {
- local_path = "res://" + p_path;
- } else {
- local_path = ProjectSettings::get_singleton()->localize_path(p_path);
- }
+ String local_path = _validate_local_path(p_path);
thread_load_mutex->lock();
if (!thread_load_tasks.has(local_path)) {
@@ -424,12 +432,7 @@ ResourceLoader::ThreadLoadStatus ResourceLoader::load_threaded_get_status(const
}
RES ResourceLoader::load_threaded_get(const String &p_path, Error *r_error) {
- String local_path;
- if (p_path.is_rel_path()) {
- local_path = "res://" + p_path;
- } else {
- local_path = ProjectSettings::get_singleton()->localize_path(p_path);
- }
+ String local_path = _validate_local_path(p_path);
thread_load_mutex->lock();
if (!thread_load_tasks.has(local_path)) {
@@ -510,12 +513,7 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, Resour
*r_error = ERR_CANT_OPEN;
}
- String local_path;
- if (p_path.is_rel_path()) {
- local_path = "res://" + p_path;
- } else {
- local_path = ProjectSettings::get_singleton()->localize_path(p_path);
- }
+ String local_path = _validate_local_path(p_path);
if (p_cache_mode != ResourceFormatLoader::CACHE_MODE_IGNORE) {
thread_load_mutex->lock();
@@ -612,12 +610,7 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, Resour
}
bool ResourceLoader::exists(const String &p_path, const String &p_type_hint) {
- String local_path;
- if (p_path.is_rel_path()) {
- local_path = "res://" + p_path;
- } else {
- local_path = ProjectSettings::get_singleton()->localize_path(p_path);
- }
+ String local_path = _validate_local_path(p_path);
if (ResourceCache::has(local_path)) {
return true; // If cached, it probably exists
@@ -677,14 +670,7 @@ void ResourceLoader::remove_resource_format_loader(Ref<ResourceFormatLoader> p_f
}
int ResourceLoader::get_import_order(const String &p_path) {
- String path = _path_remap(p_path);
-
- String local_path;
- if (path.is_rel_path()) {
- local_path = "res://" + path;
- } else {
- local_path = ProjectSettings::get_singleton()->localize_path(path);
- }
+ String local_path = _path_remap(_validate_local_path(p_path));
for (int i = 0; i < loader_count; i++) {
if (!loader[i]->recognize_path(local_path)) {
@@ -702,14 +688,7 @@ int ResourceLoader::get_import_order(const String &p_path) {
}
String ResourceLoader::get_import_group_file(const String &p_path) {
- String path = _path_remap(p_path);
-
- String local_path;
- if (path.is_rel_path()) {
- local_path = "res://" + path;
- } else {
- local_path = ProjectSettings::get_singleton()->localize_path(path);
- }
+ String local_path = _path_remap(_validate_local_path(p_path));
for (int i = 0; i < loader_count; i++) {
if (!loader[i]->recognize_path(local_path)) {
@@ -727,14 +706,7 @@ String ResourceLoader::get_import_group_file(const String &p_path) {
}
bool ResourceLoader::is_import_valid(const String &p_path) {
- String path = _path_remap(p_path);
-
- String local_path;
- if (path.is_rel_path()) {
- local_path = "res://" + path;
- } else {
- local_path = ProjectSettings::get_singleton()->localize_path(path);
- }
+ String local_path = _path_remap(_validate_local_path(p_path));
for (int i = 0; i < loader_count; i++) {
if (!loader[i]->recognize_path(local_path)) {
@@ -752,14 +724,7 @@ bool ResourceLoader::is_import_valid(const String &p_path) {
}
bool ResourceLoader::is_imported(const String &p_path) {
- String path = _path_remap(p_path);
-
- String local_path;
- if (path.is_rel_path()) {
- local_path = "res://" + path;
- } else {
- local_path = ProjectSettings::get_singleton()->localize_path(path);
- }
+ String local_path = _path_remap(_validate_local_path(p_path));
for (int i = 0; i < loader_count; i++) {
if (!loader[i]->recognize_path(local_path)) {
@@ -777,14 +742,7 @@ bool ResourceLoader::is_imported(const String &p_path) {
}
void ResourceLoader::get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types) {
- String path = _path_remap(p_path);
-
- String local_path;
- if (path.is_rel_path()) {
- local_path = "res://" + path;
- } else {
- local_path = ProjectSettings::get_singleton()->localize_path(path);
- }
+ String local_path = _path_remap(_validate_local_path(p_path));
for (int i = 0; i < loader_count; i++) {
if (!loader[i]->recognize_path(local_path)) {
@@ -800,14 +758,7 @@ void ResourceLoader::get_dependencies(const String &p_path, List<String> *p_depe
}
Error ResourceLoader::rename_dependencies(const String &p_path, const Map<String, String> &p_map) {
- String path = _path_remap(p_path);
-
- String local_path;
- if (path.is_rel_path()) {
- local_path = "res://" + path;
- } else {
- local_path = ProjectSettings::get_singleton()->localize_path(path);
- }
+ String local_path = _path_remap(_validate_local_path(p_path));
for (int i = 0; i < loader_count; i++) {
if (!loader[i]->recognize_path(local_path)) {
@@ -825,12 +776,7 @@ Error ResourceLoader::rename_dependencies(const String &p_path, const Map<String
}
String ResourceLoader::get_resource_type(const String &p_path) {
- String local_path;
- if (p_path.is_rel_path()) {
- local_path = "res://" + p_path;
- } else {
- local_path = ProjectSettings::get_singleton()->localize_path(p_path);
- }
+ String local_path = _validate_local_path(p_path);
for (int i = 0; i < loader_count; i++) {
String result = loader[i]->get_resource_type(local_path);
@@ -842,6 +788,19 @@ String ResourceLoader::get_resource_type(const String &p_path) {
return "";
}
+ResourceUID::ID ResourceLoader::get_resource_uid(const String &p_path) {
+ String local_path = _validate_local_path(p_path);
+
+ for (int i = 0; i < loader_count; i++) {
+ ResourceUID::ID id = loader[i]->get_resource_uid(local_path);
+ if (id != ResourceUID::INVALID_ID) {
+ return id;
+ }
+ }
+
+ return ResourceUID::INVALID_ID;
+}
+
String ResourceLoader::_path_remap(const String &p_path, bool *r_translation_remapped) {
String new_path = p_path;
@@ -978,15 +937,15 @@ void ResourceLoader::load_translation_remaps() {
Dictionary remaps = ProjectSettings::get_singleton()->get("internationalization/locale/translation_remaps");
List<Variant> keys;
remaps.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- Array langs = remaps[E->get()];
+ for (const Variant &E : keys) {
+ Array langs = remaps[E];
Vector<String> lang_remaps;
lang_remaps.resize(langs.size());
for (int i = 0; i < langs.size(); i++) {
lang_remaps.write[i] = langs[i];
}
- translation_remaps[String(E->get())] = lang_remaps;
+ translation_remaps[String(E)] = lang_remaps;
}
}
@@ -1071,8 +1030,7 @@ void ResourceLoader::add_custom_loaders() {
List<StringName> global_classes;
ScriptServer::get_global_class_list(&global_classes);
- for (List<StringName>::Element *E = global_classes.front(); E; E = E->next()) {
- StringName class_name = E->get();
+ for (const StringName &class_name : global_classes) {
StringName base_class = ScriptServer::get_global_class_native_base(class_name);
if (base_class == custom_loader_base_class) {
diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h
index c656b9a69c..e525e80a9d 100644
--- a/core/io/resource_loader.h
+++ b/core/io/resource_loader.h
@@ -40,9 +40,9 @@ class ResourceFormatLoader : public RefCounted {
public:
enum CacheMode {
- CACHE_MODE_IGNORE, //resource and subresources do not use path cache, no path is set into resource.
- CACHE_MODE_REUSE, //resource and subresources use patch cache, reuse existing loaded resources instead of loading from disk when available
- CACHE_MODE_REPLACE, //resource and and subresource use path cache, but replace existing loaded resources when available with information from disk
+ CACHE_MODE_IGNORE, // Resource and subresources do not use path cache, no path is set into resource.
+ CACHE_MODE_REUSE, // Resource and subresources use patch cache, reuse existing loaded resources instead of loading from disk when available.
+ CACHE_MODE_REPLACE, // Resource and subresource use path cache, but replace existing loaded resources when available with information from disk.
};
protected:
@@ -56,6 +56,7 @@ public:
virtual bool recognize_path(const String &p_path, const String &p_for_type = String()) const;
virtual bool handles_type(const String &p_type) const;
virtual String get_resource_type(const String &p_path) const;
+ virtual ResourceUID::ID get_resource_uid(const String &p_path) const;
virtual void get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types = false);
virtual Error rename_dependencies(const String &p_path, const Map<String, String> &p_map);
virtual bool is_import_valid(const String &p_path) const { return true; }
@@ -107,7 +108,7 @@ private:
friend class ResourceFormatImporter;
friend class ResourceInteractiveLoader;
- //internal load function
+ // Internal load function.
static RES _load(const String &p_path, const String &p_original_path, const String &p_type_hint, ResourceFormatLoader::CacheMode p_cache_mode, Error *r_error, bool p_use_sub_threads, float *r_progress);
static ResourceLoadedCallback _loaded_callback;
@@ -157,6 +158,7 @@ public:
static void add_resource_format_loader(Ref<ResourceFormatLoader> p_format_loader, bool p_at_front = false);
static void remove_resource_format_loader(Ref<ResourceFormatLoader> p_format_loader);
static String get_resource_type(const String &p_path);
+ static ResourceUID::ID get_resource_uid(const String &p_path);
static void get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types = false);
static Error rename_dependencies(const String &p_path, const Map<String, String> &p_map);
static bool is_import_valid(const String &p_path);
diff --git a/core/io/resource_saver.cpp b/core/io/resource_saver.cpp
index 80cb85fba3..564de5ee69 100644
--- a/core/io/resource_saver.cpp
+++ b/core/io/resource_saver.cpp
@@ -39,6 +39,7 @@ Ref<ResourceFormatSaver> ResourceSaver::saver[MAX_SAVERS];
int ResourceSaver::saver_count = 0;
bool ResourceSaver::timestamp_on_save = false;
ResourceSavedCallback ResourceSaver::save_callback = nullptr;
+ResourceSaverGetResourceIDForPath ResourceSaver::save_get_id_for_path = nullptr;
Error ResourceFormatSaver::save(const String &p_path, const RES &p_resource, uint32_t p_flags) {
if (get_script_instance() && get_script_instance()->has_method("_save")) {
@@ -94,8 +95,8 @@ Error ResourceSaver::save(const String &p_path, const RES &p_resource, uint32_t
bool recognized = false;
saver[i]->get_recognized_extensions(p_resource, &extensions);
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- if (E->get().nocasecmp_to(extension) == 0) {
+ for (const String &E : extensions) {
+ if (E.nocasecmp_to(extension) == 0) {
recognized = true;
}
}
@@ -236,8 +237,7 @@ void ResourceSaver::add_custom_savers() {
List<StringName> global_classes;
ScriptServer::get_global_class_list(&global_classes);
- for (List<StringName>::Element *E = global_classes.front(); E; E = E->next()) {
- StringName class_name = E->get();
+ for (const StringName &class_name : global_classes) {
StringName base_class = ScriptServer::get_global_class_native_base(class_name);
if (base_class == custom_saver_base_class) {
@@ -259,3 +259,14 @@ void ResourceSaver::remove_custom_savers() {
remove_resource_format_saver(custom_savers[i]);
}
}
+
+ResourceUID::ID ResourceSaver::get_resource_id_for_path(const String &p_path, bool p_generate) {
+ if (save_get_id_for_path) {
+ return save_get_id_for_path(p_path, p_generate);
+ }
+ return ResourceUID::INVALID_ID;
+}
+
+void ResourceSaver::set_get_resource_id_for_path(ResourceSaverGetResourceIDForPath p_callback) {
+ save_get_id_for_path = p_callback;
+}
diff --git a/core/io/resource_saver.h b/core/io/resource_saver.h
index 07154aac4d..2fc8d32126 100644
--- a/core/io/resource_saver.h
+++ b/core/io/resource_saver.h
@@ -48,6 +48,7 @@ public:
};
typedef void (*ResourceSavedCallback)(Ref<Resource> p_resource, const String &p_path);
+typedef ResourceUID::ID (*ResourceSaverGetResourceIDForPath)(const String &p_path, bool p_generate);
class ResourceSaver {
enum {
@@ -58,6 +59,7 @@ class ResourceSaver {
static int saver_count;
static bool timestamp_on_save;
static ResourceSavedCallback save_callback;
+ static ResourceSaverGetResourceIDForPath save_get_id_for_path;
static Ref<ResourceFormatSaver> _find_custom_resource_format_saver(String path);
@@ -80,7 +82,10 @@ public:
static void set_timestamp_on_save(bool p_timestamp) { timestamp_on_save = p_timestamp; }
static bool get_timestamp_on_save() { return timestamp_on_save; }
+ static ResourceUID::ID get_resource_id_for_path(const String &p_path, bool p_generate = false);
+
static void set_save_callback(ResourceSavedCallback p_callback);
+ static void set_get_resource_id_for_path(ResourceSaverGetResourceIDForPath p_callback);
static bool add_custom_resource_format_saver(String script_path);
static void remove_custom_resource_format_saver(String script_path);
diff --git a/core/io/resource_uid.cpp b/core/io/resource_uid.cpp
new file mode 100644
index 0000000000..97d683f415
--- /dev/null
+++ b/core/io/resource_uid.cpp
@@ -0,0 +1,262 @@
+/*************************************************************************/
+/* resource_uid.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "resource_uid.h"
+#include "core/crypto/crypto.h"
+#include "core/io/dir_access.h"
+#include "core/io/file_access.h"
+
+static constexpr uint32_t char_count = ('z' - 'a');
+static constexpr uint32_t base = char_count + ('9' - '0');
+
+const char *ResourceUID::CACHE_FILE = "res://.godot/uid_cache.bin";
+
+String ResourceUID::id_to_text(ID p_id) const {
+ if (p_id < 0) {
+ return "uid://<invalid>";
+ }
+ String txt;
+
+ while (p_id) {
+ uint32_t c = p_id % base;
+ if (c < char_count) {
+ txt = String::chr('a' + c) + txt;
+ } else {
+ txt = String::chr('0' + (c - char_count)) + txt;
+ }
+ p_id /= base;
+ }
+
+ return "uid://" + txt;
+}
+
+ResourceUID::ID ResourceUID::text_to_id(const String &p_text) const {
+ if (!p_text.begins_with("uid://") || p_text == "uid://<invalid>") {
+ return INVALID_ID;
+ }
+
+ uint32_t l = p_text.length();
+ uint64_t uid = 0;
+ for (uint32_t i = 6; i < l; i++) {
+ uid *= base;
+ uint32_t c = p_text[i];
+ if (c >= 'a' && c <= 'z') {
+ uid += c - 'a';
+ } else if (c >= '0' && c <= '9') {
+ uid += c - '0' + char_count;
+ } else {
+ return INVALID_ID;
+ }
+ }
+ return ID(uid & 0x7FFFFFFFFFFFFFFF);
+}
+
+ResourceUID::ID ResourceUID::create_id() const {
+ mutex.lock();
+ if (crypto.is_null()) {
+ crypto = Ref<Crypto>(Crypto::create());
+ }
+ mutex.unlock();
+ while (true) {
+ PackedByteArray bytes = crypto->generate_random_bytes(8);
+ ERR_FAIL_COND_V(bytes.size() != 8, INVALID_ID);
+ const uint64_t *ptr64 = (const uint64_t *)bytes.ptr();
+ ID id = int64_t((*ptr64) & 0x7FFFFFFFFFFFFFFF);
+ mutex.lock();
+ bool exists = unique_ids.has(id);
+ mutex.unlock();
+ if (!exists) {
+ return id;
+ }
+ }
+}
+
+bool ResourceUID::has_id(ID p_id) const {
+ MutexLock l(mutex);
+ return unique_ids.has(p_id);
+}
+void ResourceUID::add_id(ID p_id, const String &p_path) {
+ MutexLock l(mutex);
+ ERR_FAIL_COND(unique_ids.has(p_id));
+ Cache c;
+ c.cs = p_path.utf8();
+ unique_ids[p_id] = c;
+ changed = true;
+}
+
+void ResourceUID::set_id(ID p_id, const String &p_path) {
+ MutexLock l(mutex);
+ ERR_FAIL_COND(!unique_ids.has(p_id));
+ CharString cs = p_path.utf8();
+ if (strcmp(cs.ptr(), unique_ids[p_id].cs.ptr()) != 0) {
+ unique_ids[p_id].cs = cs;
+ unique_ids[p_id].saved_to_cache = false; //changed
+ changed = true;
+ }
+}
+
+String ResourceUID::get_id_path(ID p_id) const {
+ MutexLock l(mutex);
+ ERR_FAIL_COND_V(!unique_ids.has(p_id), String());
+ const CharString &cs = unique_ids[p_id].cs;
+ String s(cs.ptr());
+ return s;
+}
+void ResourceUID::remove_id(ID p_id) {
+ MutexLock l(mutex);
+ ERR_FAIL_COND(!unique_ids.has(p_id));
+ unique_ids.erase(p_id);
+}
+
+Error ResourceUID::save_to_cache() {
+ if (!FileAccess::exists(CACHE_FILE)) {
+ DirAccessRef d = DirAccess::create(DirAccess::ACCESS_RESOURCES);
+ d->make_dir_recursive(String(CACHE_FILE).get_base_dir()); //ensure base dir exists
+ }
+
+ FileAccessRef f = FileAccess::open(CACHE_FILE, FileAccess::WRITE);
+ if (!f) {
+ return ERR_CANT_OPEN;
+ }
+
+ MutexLock l(mutex);
+ f->store_32(unique_ids.size());
+
+ cache_entries = 0;
+
+ for (OrderedHashMap<ID, Cache>::Element E = unique_ids.front(); E; E = E.next()) {
+ f->store_64(E.key());
+ uint32_t s = E.get().cs.length();
+ f->store_32(s);
+ f->store_buffer((const uint8_t *)E.get().cs.ptr(), s);
+ E.get().saved_to_cache = true;
+ cache_entries++;
+ }
+
+ changed = false;
+ return OK;
+}
+
+Error ResourceUID::load_from_cache() {
+ FileAccessRef f = FileAccess::open(CACHE_FILE, FileAccess::READ);
+ if (!f) {
+ return ERR_CANT_OPEN;
+ }
+
+ MutexLock l(mutex);
+ unique_ids.clear();
+
+ uint32_t entry_count = f->get_32();
+ for (uint32_t i = 0; i < entry_count; i++) {
+ int64_t id = f->get_64();
+ int32_t len = f->get_32();
+ Cache c;
+ c.cs.resize(len + 1);
+ ERR_FAIL_COND_V(c.cs.size() != len + 1, ERR_FILE_CORRUPT); // out of memory
+ c.cs[len] = 0;
+ int32_t rl = f->get_buffer((uint8_t *)c.cs.ptrw(), len);
+ ERR_FAIL_COND_V(rl != len, ERR_FILE_CORRUPT);
+
+ c.saved_to_cache = true;
+ unique_ids[id] = c;
+ }
+
+ cache_entries = entry_count;
+ changed = false;
+ return OK;
+}
+
+Error ResourceUID::update_cache() {
+ if (!changed) {
+ return OK;
+ }
+
+ if (cache_entries == 0) {
+ return save_to_cache();
+ }
+ MutexLock l(mutex);
+
+ FileAccess *f = nullptr;
+ for (OrderedHashMap<ID, Cache>::Element E = unique_ids.front(); E; E = E.next()) {
+ if (!E.get().saved_to_cache) {
+ if (f == nullptr) {
+ f = FileAccess::open(CACHE_FILE, FileAccess::READ_WRITE); //append
+ if (!f) {
+ return ERR_CANT_OPEN;
+ }
+ f->seek_end();
+ }
+ f->store_64(E.key());
+ uint32_t s = E.get().cs.length();
+ f->store_32(s);
+ f->store_buffer((const uint8_t *)E.get().cs.ptr(), s);
+ E.get().saved_to_cache = true;
+ cache_entries++;
+ }
+ }
+
+ if (f != nullptr) {
+ f->seek(0);
+ f->store_32(cache_entries); //update amount of entries
+ f->close();
+ memdelete(f);
+ }
+
+ changed = false;
+
+ return OK;
+}
+
+void ResourceUID::clear() {
+ cache_entries = 0;
+ unique_ids.clear();
+ changed = false;
+}
+void ResourceUID::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("id_to_text", "id"), &ResourceUID::id_to_text);
+ ClassDB::bind_method(D_METHOD("text_to_id", "text_id"), &ResourceUID::text_to_id);
+
+ ClassDB::bind_method(D_METHOD("create_id"), &ResourceUID::create_id);
+
+ ClassDB::bind_method(D_METHOD("has_id", "id"), &ResourceUID::has_id);
+ ClassDB::bind_method(D_METHOD("add_id", "id", "path"), &ResourceUID::add_id);
+ ClassDB::bind_method(D_METHOD("set_id", "id", "path"), &ResourceUID::set_id);
+ ClassDB::bind_method(D_METHOD("get_id_path", "id"), &ResourceUID::get_id_path);
+ ClassDB::bind_method(D_METHOD("remove_id", "id"), &ResourceUID::remove_id);
+
+ BIND_CONSTANT(INVALID_ID)
+}
+ResourceUID *ResourceUID::singleton = nullptr;
+ResourceUID::ResourceUID() {
+ ERR_FAIL_COND(singleton != nullptr);
+ singleton = this;
+}
+ResourceUID::~ResourceUID() {
+}
diff --git a/core/io/resource_uid.h b/core/io/resource_uid.h
new file mode 100644
index 0000000000..b12138425a
--- /dev/null
+++ b/core/io/resource_uid.h
@@ -0,0 +1,89 @@
+/*************************************************************************/
+/* resource_uid.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef RESOURCE_UUID_H
+#define RESOURCE_UUID_H
+
+#include "core/object/ref_counted.h"
+#include "core/string/string_name.h"
+#include "core/templates/ordered_hash_map.h"
+
+class Crypto;
+class ResourceUID : public Object {
+ GDCLASS(ResourceUID, Object)
+public:
+ typedef int64_t ID;
+ enum {
+ INVALID_ID = -1
+ };
+
+ static const char *CACHE_FILE;
+
+private:
+ mutable Ref<Crypto> crypto;
+ Mutex mutex;
+ struct Cache {
+ CharString cs;
+ bool saved_to_cache = false;
+ };
+
+ OrderedHashMap<ID, Cache> unique_ids; //unique IDs and utf8 paths (less memory used)
+ static ResourceUID *singleton;
+
+ uint32_t cache_entries = 0;
+ bool changed = false;
+
+protected:
+ static void _bind_methods();
+
+public:
+ String id_to_text(ID p_id) const;
+ ID text_to_id(const String &p_text) const;
+
+ ID create_id() const;
+ bool has_id(ID p_id) const;
+ void add_id(ID p_id, const String &p_path);
+ void set_id(ID p_id, const String &p_path);
+ String get_id_path(ID p_id) const;
+ void remove_id(ID p_id);
+
+ Error load_from_cache();
+ Error save_to_cache();
+ Error update_cache();
+
+ void clear();
+
+ static ResourceUID *get_singleton() { return singleton; }
+
+ ResourceUID();
+ ~ResourceUID();
+};
+
+#endif // RESOURCEUUID_H
diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp
index 88e11a630c..322eb7ac61 100644
--- a/core/math/a_star.cpp
+++ b/core/math/a_star.cpp
@@ -35,18 +35,12 @@
#include "scene/scene_string_names.h"
int AStar::get_available_point_id() const {
- if (points.is_empty()) {
- return 1;
- }
-
- // calculate our new next available point id if bigger than before or next id already contained in set of points.
if (points.has(last_free_id)) {
- int cur_new_id = last_free_id;
+ int cur_new_id = last_free_id + 1;
while (points.has(cur_new_id)) {
cur_new_id++;
}
- int &non_const = const_cast<int &>(last_free_id);
- non_const = cur_new_id;
+ const_cast<int &>(last_free_id) = cur_new_id;
}
return last_free_id;
diff --git a/core/math/delaunay_3d.h b/core/math/delaunay_3d.h
index 6f7209556e..81adf4d19a 100644
--- a/core/math/delaunay_3d.h
+++ b/core/math/delaunay_3d.h
@@ -375,8 +375,7 @@ public:
OutputSimplex *ret_simplicesw = ret_simplices.ptrw();
uint32_t simplices_written = 0;
- for (List<Simplex *>::Element *E = simplex_list.front(); E; E = E->next()) {
- Simplex *simplex = E->get();
+ for (Simplex *simplex : simplex_list) {
bool invalid = false;
for (int j = 0; j < 4; j++) {
if (simplex->points[j] >= point_count) {
diff --git a/core/math/face3.h b/core/math/face3.h
index 5091b338ef..9e9026e54e 100644
--- a/core/math/face3.h
+++ b/core/math/face3.h
@@ -50,8 +50,8 @@ public:
/**
*
* @param p_plane plane used to split the face
- * @param p_res array of at least 3 faces, amount used in functio return
- * @param p_is_point_over array of at least 3 booleans, determining which face is over the plane, amount used in functio return
+ * @param p_res array of at least 3 faces, amount used in function return
+ * @param p_is_point_over array of at least 3 booleans, determining which face is over the plane, amount used in function return
* @param _epsilon constant used for numerical error rounding, to add "thickness" to the plane (so coplanar points can happen)
* @return amount of faces generated by the split, either 0 (means no split possible), 2 or 3
*/
diff --git a/core/math/geometry_3d.h b/core/math/geometry_3d.h
index 4ef9b4dbe6..766689e222 100644
--- a/core/math/geometry_3d.h
+++ b/core/math/geometry_3d.h
@@ -40,7 +40,7 @@ class Geometry3D {
public:
static void get_closest_points_between_segments(const Vector3 &p1, const Vector3 &p2, const Vector3 &q1, const Vector3 &q2, Vector3 &c1, Vector3 &c2) {
-// Do the function 'd' as defined by pb. I think is is dot product of some sort.
+// Do the function 'd' as defined by pb. I think it's a dot product of some sort.
#define d_of(m, n, o, p) ((m.x - n.x) * (o.x - p.x) + (m.y - n.y) * (o.y - p.y) + (m.z - n.z) * (o.z - p.z))
// Calculate the parametric position on the 2 curves, mua and mub.
diff --git a/core/math/math_funcs.cpp b/core/math/math_funcs.cpp
index e92bb9f4aa..bbed257f60 100644
--- a/core/math/math_funcs.cpp
+++ b/core/math/math_funcs.cpp
@@ -88,16 +88,6 @@ int Math::range_step_decimals(double p_step) {
return step_decimals(p_step);
}
-double Math::dectime(double p_value, double p_amount, double p_step) {
- double sgn = p_value < 0 ? -1.0 : 1.0;
- double val = Math::abs(p_value);
- val -= p_amount * p_step;
- if (val < 0.0) {
- val = 0.0;
- }
- return val * sgn;
-}
-
double Math::ease(double p_x, double p_c) {
if (p_x < 0) {
p_x = 0;
diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h
index 3389407e72..4e4f566517 100644
--- a/core/math/math_funcs.h
+++ b/core/math/math_funcs.h
@@ -296,7 +296,6 @@ public:
static int step_decimals(double p_step);
static int range_step_decimals(double p_step);
static double snapped(double p_value, double p_step);
- static double dectime(double p_value, double p_amount, double p_step);
static uint32_t larger_prime(uint32_t p_val);
diff --git a/core/math/quick_hull.cpp b/core/math/quick_hull.cpp
index 0d77bfe933..0960fe19a6 100644
--- a/core/math/quick_hull.cpp
+++ b/core/math/quick_hull.cpp
@@ -192,9 +192,9 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry3D::MeshData &r_
continue;
}
- for (List<Face>::Element *E = faces.front(); E; E = E->next()) {
- if (E->get().plane.distance_to(p_points[i]) > over_tolerance) {
- E->get().points_over.push_back(i);
+ for (Face &E : faces) {
+ if (E.plane.distance_to(p_points[i]) > over_tolerance) {
+ E.points_over.push_back(i);
break;
}
}
@@ -292,8 +292,8 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry3D::MeshData &r_
//distribute points into new faces
- for (List<List<Face>::Element *>::Element *F = lit_faces.front(); F; F = F->next()) {
- Face &lf = F->get()->get();
+ for (List<Face>::Element *&F : lit_faces) {
+ Face &lf = F->get();
for (int i = 0; i < lf.points_over.size(); i++) {
if (lf.points_over[i] == f.points_over[next]) { //do not add current one
@@ -301,8 +301,8 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry3D::MeshData &r_
}
Vector3 p = p_points[lf.points_over[i]];
- for (List<List<Face>::Element *>::Element *E = new_faces.front(); E; E = E->next()) {
- Face &f2 = E->get()->get();
+ for (List<Face>::Element *&E : new_faces) {
+ Face &f2 = E->get();
if (f2.plane.distance_to(p) > over_tolerance) {
f2.points_over.push_back(lf.points_over[i]);
break;
@@ -320,10 +320,10 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry3D::MeshData &r_
//put faces that contain no points on the front
- for (List<List<Face>::Element *>::Element *E = new_faces.front(); E; E = E->next()) {
- Face &f2 = E->get()->get();
+ for (List<Face>::Element *&E : new_faces) {
+ Face &f2 = E->get();
if (f2.points_over.size() == 0) {
- faces.move_to_front(E->get());
+ faces.move_to_front(E);
}
}
@@ -336,19 +336,19 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry3D::MeshData &r_
Map<Edge, RetFaceConnect> ret_edges;
List<Geometry3D::MeshData::Face> ret_faces;
- for (List<Face>::Element *E = faces.front(); E; E = E->next()) {
+ for (const Face &E : faces) {
Geometry3D::MeshData::Face f;
- f.plane = E->get().plane;
+ f.plane = E.plane;
for (int i = 0; i < 3; i++) {
- f.indices.push_back(E->get().vertices[i]);
+ f.indices.push_back(E.vertices[i]);
}
List<Geometry3D::MeshData::Face>::Element *F = ret_faces.push_back(f);
for (int i = 0; i < 3; i++) {
- uint32_t a = E->get().vertices[i];
- uint32_t b = E->get().vertices[(i + 1) % 3];
+ uint32_t a = E.vertices[i];
+ uint32_t b = E.vertices[(i + 1) % 3];
Edge e(a, b);
Map<Edge, RetFaceConnect>::Element *G = ret_edges.find(e);
@@ -439,8 +439,8 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry3D::MeshData &r_
r_mesh.faces.resize(ret_faces.size());
int idx = 0;
- for (List<Geometry3D::MeshData::Face>::Element *E = ret_faces.front(); E; E = E->next()) {
- r_mesh.faces.write[idx++] = E->get();
+ for (const Geometry3D::MeshData::Face &E : ret_faces) {
+ r_mesh.faces.write[idx++] = E;
}
r_mesh.edges.resize(ret_edges.size());
idx = 0;
diff --git a/core/math/triangle_mesh.cpp b/core/math/triangle_mesh.cpp
index 903d5951a8..bf06c848c5 100644
--- a/core/math/triangle_mesh.cpp
+++ b/core/math/triangle_mesh.cpp
@@ -32,9 +32,9 @@
#include "core/templates/sort_array.h"
-int TriangleMesh::_create_bvh(BVH *p_bvh, BVH **p_bb, int p_from, int p_size, int p_depth, int &max_depth, int &max_alloc) {
- if (p_depth > max_depth) {
- max_depth = p_depth;
+int TriangleMesh::_create_bvh(BVH *p_bvh, BVH **p_bb, int p_from, int p_size, int p_depth, int &r_max_depth, int &r_max_alloc) {
+ if (p_depth > r_max_depth) {
+ r_max_depth = p_depth;
}
if (p_size == 1) {
@@ -70,10 +70,10 @@ int TriangleMesh::_create_bvh(BVH *p_bvh, BVH **p_bb, int p_from, int p_size, in
} break;
}
- int left = _create_bvh(p_bvh, p_bb, p_from, p_size / 2, p_depth + 1, max_depth, max_alloc);
- int right = _create_bvh(p_bvh, p_bb, p_from + p_size / 2, p_size - p_size / 2, p_depth + 1, max_depth, max_alloc);
+ int left = _create_bvh(p_bvh, p_bb, p_from, p_size / 2, p_depth + 1, r_max_depth, r_max_alloc);
+ int right = _create_bvh(p_bvh, p_bb, p_from + p_size / 2, p_size - p_size / 2, p_depth + 1, r_max_depth, r_max_alloc);
- int index = max_alloc++;
+ int index = r_max_alloc++;
BVH *_new = &p_bvh[index];
_new->aabb = aabb;
_new->center = aabb.position + aabb.size * 0.5;
diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp
index e2db5918e3..c6ba39be94 100644
--- a/core/object/class_db.cpp
+++ b/core/object/class_db.cpp
@@ -359,9 +359,9 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
//must be alphabetically sorted for hash to compute
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- ClassInfo *t = classes.getptr(E->get());
- ERR_FAIL_COND_V_MSG(!t, 0, "Cannot get class '" + String(E->get()) + "'.");
+ for (const StringName &E : names) {
+ ClassInfo *t = classes.getptr(E);
+ ERR_FAIL_COND_V_MSG(!t, 0, "Cannot get class '" + String(E) + "'.");
if (t->api != p_api || !t->exposed) {
continue;
}
@@ -388,8 +388,8 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
snames.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *F = snames.front(); F; F = F->next()) {
- MethodBind *mb = t->method_map[F->get()];
+ for (const StringName &F : snames) {
+ MethodBind *mb = t->method_map[F];
hash = hash_djb2_one_64(mb->get_name().hash(), hash);
hash = hash_djb2_one_64(mb->get_argument_count(), hash);
hash = hash_djb2_one_64(mb->get_argument_type(-1), hash); //return
@@ -426,9 +426,9 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
snames.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *F = snames.front(); F; F = F->next()) {
- hash = hash_djb2_one_64(F->get().hash(), hash);
- hash = hash_djb2_one_64(t->constant_map[F->get()], hash);
+ for (const StringName &F : snames) {
+ hash = hash_djb2_one_64(F.hash(), hash);
+ hash = hash_djb2_one_64(t->constant_map[F], hash);
}
}
@@ -444,9 +444,9 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
snames.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *F = snames.front(); F; F = F->next()) {
- MethodInfo &mi = t->signal_map[F->get()];
- hash = hash_djb2_one_64(F->get().hash(), hash);
+ for (const StringName &F : snames) {
+ MethodInfo &mi = t->signal_map[F];
+ hash = hash_djb2_one_64(F.hash(), hash);
for (int i = 0; i < mi.arguments.size(); i++) {
hash = hash_djb2_one_64(mi.arguments[i].type, hash);
}
@@ -465,23 +465,23 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
snames.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *F = snames.front(); F; F = F->next()) {
- PropertySetGet *psg = t->property_setget.getptr(F->get());
+ for (const StringName &F : snames) {
+ PropertySetGet *psg = t->property_setget.getptr(F);
ERR_FAIL_COND_V(!psg, 0);
- hash = hash_djb2_one_64(F->get().hash(), hash);
+ hash = hash_djb2_one_64(F.hash(), hash);
hash = hash_djb2_one_64(psg->setter.hash(), hash);
hash = hash_djb2_one_64(psg->getter.hash(), hash);
}
}
//property list
- for (List<PropertyInfo>::Element *F = t->property_list.front(); F; F = F->next()) {
- hash = hash_djb2_one_64(F->get().name.hash(), hash);
- hash = hash_djb2_one_64(F->get().type, hash);
- hash = hash_djb2_one_64(F->get().hint, hash);
- hash = hash_djb2_one_64(F->get().hint_string.hash(), hash);
- hash = hash_djb2_one_64(F->get().usage, hash);
+ for (const PropertyInfo &F : t->property_list) {
+ hash = hash_djb2_one_64(F.name.hash(), hash);
+ hash = hash_djb2_one_64(F.type, hash);
+ hash = hash_djb2_one_64(F.hint, hash);
+ hash = hash_djb2_one_64(F.hint_string.hash(), hash);
+ hash = hash_djb2_one_64(F.usage, hash);
}
}
@@ -619,16 +619,16 @@ void ClassDB::get_method_list(const StringName &p_class, List<MethodInfo> *p_met
#ifdef DEBUG_METHODS_ENABLED
- for (List<MethodInfo>::Element *E = type->virtual_methods.front(); E; E = E->next()) {
- p_methods->push_back(E->get());
+ for (const MethodInfo &E : type->virtual_methods) {
+ p_methods->push_back(E);
}
- for (List<StringName>::Element *E = type->method_order.front(); E; E = E->next()) {
- if (p_exclude_from_properties && type->methods_in_properties.has(E->get())) {
+ for (const StringName &E : type->method_order) {
+ if (p_exclude_from_properties && type->methods_in_properties.has(E)) {
continue;
}
- MethodBind *method = type->method_map.get(E->get());
+ MethodBind *method = type->method_map.get(E);
MethodInfo minfo = info_from_bind(method);
p_methods->push_back(minfo);
@@ -763,8 +763,8 @@ void ClassDB::get_integer_constant_list(const StringName &p_class, List<String>
while (type) {
#ifdef DEBUG_METHODS_ENABLED
- for (List<StringName>::Element *E = type->constant_order.front(); E; E = E->next()) {
- p_constants->push_back(E->get());
+ for (const StringName &E : type->constant_order) {
+ p_constants->push_back(E);
}
#else
const StringName *K = nullptr;
@@ -1073,13 +1073,14 @@ void ClassDB::get_property_list(const StringName &p_class, List<PropertyInfo> *p
ClassInfo *type = classes.getptr(p_class);
ClassInfo *check = type;
while (check) {
- for (List<PropertyInfo>::Element *E = check->property_list.front(); E; E = E->next()) {
+ for (const PropertyInfo &pi : check->property_list) {
if (p_validator) {
- PropertyInfo pi = E->get();
- p_validator->_validate_property(pi);
- p_list->push_back(pi);
+ // Making a copy as we may modify it.
+ PropertyInfo pi_mut = pi;
+ p_validator->_validate_property(pi_mut);
+ p_list->push_back(pi_mut);
} else {
- p_list->push_back(E->get());
+ p_list->push_back(pi);
}
}
@@ -1429,8 +1430,8 @@ void ClassDB::get_virtual_methods(const StringName &p_class, List<MethodInfo> *p
ClassInfo *type = classes.getptr(p_class);
ClassInfo *check = type;
while (check) {
- for (List<MethodInfo>::Element *E = check->virtual_methods.front(); E; E = E->next()) {
- p_methods->push_back(E->get());
+ for (const MethodInfo &E : check->virtual_methods) {
+ p_methods->push_back(E);
}
if (p_no_inheritance) {
@@ -1496,6 +1497,10 @@ void ClassDB::get_resource_base_extensions(List<String> *p_extensions) {
}
}
+bool ClassDB::is_resource_extension(const StringName &p_extension) {
+ return resource_base_extensions.has(p_extension);
+}
+
void ClassDB::get_extensions_for_type(const StringName &p_class, List<String> *p_extensions) {
const StringName *K = nullptr;
@@ -1530,11 +1535,11 @@ Variant ClassDB::class_get_default_property_value(const StringName &p_class, con
if (c) {
List<PropertyInfo> plist;
c->get_property_list(&plist);
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (E->get().usage & (PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR)) {
- if (!default_values[p_class].has(E->get().name)) {
- Variant v = c->get(E->get().name);
- default_values[p_class][E->get().name] = v;
+ for (const PropertyInfo &E : plist) {
+ if (E.usage & (PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR)) {
+ if (!default_values[p_class].has(E.name)) {
+ Variant v = c->get(E.name);
+ default_values[p_class][E.name] = v;
}
}
}
diff --git a/core/object/class_db.h b/core/object/class_db.h
index fd574fd2d8..3a84e9ab38 100644
--- a/core/object/class_db.h
+++ b/core/object/class_db.h
@@ -396,6 +396,7 @@ public:
static void add_resource_base_extension(const StringName &p_extension, const StringName &p_class);
static void get_resource_base_extensions(List<String> *p_extensions);
static void get_extensions_for_type(const StringName &p_class, List<String> *p_extensions);
+ static bool is_resource_extension(const StringName &p_extension);
static void add_compatibility_class(const StringName &p_class, const StringName &p_fallback);
diff --git a/core/object/object.cpp b/core/object/object.cpp
index 66a4d17b7b..d552d5e5e0 100644
--- a/core/object/object.cpp
+++ b/core/object/object.cpp
@@ -969,8 +969,8 @@ Vector<StringName> Object::_get_meta_list_bind() const {
List<Variant> keys;
metadata.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- _metaret.push_back(E->get());
+ for (const Variant &E : keys) {
+ _metaret.push_back(E);
}
return _metaret;
@@ -979,8 +979,8 @@ Vector<StringName> Object::_get_meta_list_bind() const {
void Object::get_meta_list(List<StringName> *p_list) const {
List<Variant> keys;
metadata.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- p_list->push_back(E->get());
+ for (const Variant &E : keys) {
+ p_list->push_back(E);
}
}
@@ -1184,8 +1184,8 @@ Array Object::_get_signal_list() const {
get_signal_list(&signal_list);
Array ret;
- for (List<MethodInfo>::Element *E = signal_list.front(); E; E = E->next()) {
- ret.push_back(Dictionary(E->get()));
+ for (const MethodInfo &E : signal_list) {
+ ret.push_back(Dictionary(E));
}
return ret;
@@ -1197,8 +1197,7 @@ Array Object::_get_signal_connection_list(const String &p_signal) const {
Array ret;
- for (List<Connection>::Element *E = conns.front(); E; E = E->next()) {
- Connection &c = E->get();
+ for (const Connection &c : conns) {
if (c.signal.get_name() == p_signal) {
ret.push_back(c);
}
@@ -1297,8 +1296,8 @@ int Object::get_persistent_signal_connection_count() const {
}
void Object::get_signals_connected_to_this(List<Connection> *p_connections) const {
- for (const List<Connection>::Element *E = connections.front(); E; E = E->next()) {
- p_connections->push_back(E->get());
+ for (const Connection &E : connections) {
+ p_connections->push_back(E);
}
}
@@ -1500,9 +1499,9 @@ void Object::_clear_internal_resource_paths(const Variant &p_var) {
List<Variant> keys;
d.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- _clear_internal_resource_paths(E->get());
- _clear_internal_resource_paths(d[E->get()]);
+ for (const Variant &E : keys) {
+ _clear_internal_resource_paths(E);
+ _clear_internal_resource_paths(d[E]);
}
} break;
default: {
@@ -1531,8 +1530,8 @@ void Object::clear_internal_resource_paths() {
get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- _clear_internal_resource_paths(get(E->get().name));
+ for (const PropertyInfo &E : pinfo) {
+ _clear_internal_resource_paths(get(E.name));
}
}
@@ -1666,12 +1665,12 @@ void Object::get_translatable_strings(List<String> *p_strings) const {
List<PropertyInfo> plist;
get_property_list(&plist);
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_INTERNATIONALIZED)) {
+ for (const PropertyInfo &E : plist) {
+ if (!(E.usage & PROPERTY_USAGE_INTERNATIONALIZED)) {
continue;
}
- String text = get(E->get().name);
+ String text = get(E.name);
if (text == "") {
continue;
diff --git a/core/object/script_language.cpp b/core/object/script_language.cpp
index 626a7413e7..0fb8c7350c 100644
--- a/core/object/script_language.cpp
+++ b/core/object/script_language.cpp
@@ -63,8 +63,8 @@ Array Script::_get_script_property_list() {
Array ret;
List<PropertyInfo> list;
get_script_property_list(&list);
- for (List<PropertyInfo>::Element *E = list.front(); E; E = E->next()) {
- ret.append(E->get().operator Dictionary());
+ for (const PropertyInfo &E : list) {
+ ret.append(E.operator Dictionary());
}
return ret;
}
@@ -73,8 +73,8 @@ Array Script::_get_script_method_list() {
Array ret;
List<MethodInfo> list;
get_script_method_list(&list);
- for (List<MethodInfo>::Element *E = list.front(); E; E = E->next()) {
- ret.append(E->get().operator Dictionary());
+ for (const MethodInfo &E : list) {
+ ret.append(E.operator Dictionary());
}
return ret;
}
@@ -83,8 +83,8 @@ Array Script::_get_script_signal_list() {
Array ret;
List<MethodInfo> list;
get_script_signal_list(&list);
- for (List<MethodInfo>::Element *E = list.front(); E; E = E->next()) {
- ret.append(E->get().operator Dictionary());
+ for (const MethodInfo &E : list) {
+ ret.append(E.operator Dictionary());
}
return ret;
}
@@ -257,8 +257,8 @@ void ScriptServer::get_global_class_list(List<StringName> *r_global_classes) {
classes.push_back(*K);
}
classes.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = classes.front(); E; E = E->next()) {
- r_global_classes->push_back(E->get());
+ for (const StringName &E : classes) {
+ r_global_classes->push_back(E);
}
}
@@ -266,12 +266,12 @@ void ScriptServer::save_global_classes() {
List<StringName> gc;
get_global_class_list(&gc);
Array gcarr;
- for (List<StringName>::Element *E = gc.front(); E; E = E->next()) {
+ for (const StringName &E : gc) {
Dictionary d;
- d["class"] = E->get();
- d["language"] = global_classes[E->get()].language;
- d["path"] = global_classes[E->get()].path;
- d["base"] = global_classes[E->get()].base;
+ d["class"] = E;
+ d["language"] = global_classes[E].language;
+ d["path"] = global_classes[E].path;
+ d["base"] = global_classes[E].base;
gcarr.push_back(d);
}
@@ -297,10 +297,10 @@ void ScriptServer::save_global_classes() {
void ScriptInstance::get_property_state(List<Pair<StringName, Variant>> &state) {
List<PropertyInfo> pinfo;
get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (E->get().usage & PROPERTY_USAGE_STORAGE) {
+ for (const PropertyInfo &E : pinfo) {
+ if (E.usage & PROPERTY_USAGE_STORAGE) {
Pair<StringName, Variant> p;
- p.first = E->get().name;
+ p.first = E.name;
if (get(p.first, p.second)) {
state.push_back(p);
}
@@ -430,16 +430,16 @@ bool PlaceHolderScriptInstance::get(const StringName &p_name, Variant &r_ret) co
void PlaceHolderScriptInstance::get_property_list(List<PropertyInfo> *p_properties) const {
if (script->is_placeholder_fallback_enabled()) {
- for (const List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
- p_properties->push_back(E->get());
+ for (const PropertyInfo &E : properties) {
+ p_properties->push_back(E);
}
} else {
- for (const List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
- PropertyInfo pinfo = E->get();
+ for (const PropertyInfo &E : properties) {
+ PropertyInfo pinfo = E;
if (!values.has(pinfo.name)) {
pinfo.usage |= PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE;
}
- p_properties->push_back(E->get());
+ p_properties->push_back(E);
}
}
}
@@ -489,11 +489,11 @@ bool PlaceHolderScriptInstance::has_method(const StringName &p_method) const {
void PlaceHolderScriptInstance::update(const List<PropertyInfo> &p_properties, const Map<StringName, Variant> &p_values) {
Set<StringName> new_values;
- for (const List<PropertyInfo>::Element *E = p_properties.front(); E; E = E->next()) {
- StringName n = E->get().name;
+ for (const PropertyInfo &E : p_properties) {
+ StringName n = E.name;
new_values.insert(n);
- if (!values.has(n) || values[n].get_type() != E->get().type) {
+ if (!values.has(n) || values[n].get_type() != E.type) {
if (p_values.has(n)) {
values[n] = p_values[n];
}
@@ -511,7 +511,7 @@ void PlaceHolderScriptInstance::update(const List<PropertyInfo> &p_properties, c
Variant defval;
if (script->get_property_default_value(E->key(), defval)) {
//remove because it's the same as the default value
- if (defval == E->get()) {
+ if (defval == E) {
to_remove.push_back(E->key());
}
}
@@ -542,8 +542,8 @@ void PlaceHolderScriptInstance::property_set_fallback(const StringName &p_name,
}
bool found = false;
- for (const List<PropertyInfo>::Element *F = properties.front(); F; F = F->next()) {
- if (F->get().name == p_name) {
+ for (const PropertyInfo &F : properties) {
+ if (F.name == p_name) {
found = true;
break;
}
diff --git a/core/object/script_language.h b/core/object/script_language.h
index 2cbaa0f52e..385bf79c1a 100644
--- a/core/object/script_language.h
+++ b/core/object/script_language.h
@@ -310,6 +310,7 @@ public:
Ref<Script> script;
String class_name;
String class_member;
+ String class_path;
int location;
};
diff --git a/core/object/undo_redo.cpp b/core/object/undo_redo.cpp
index 0532b2ae40..adf068eb2f 100644
--- a/core/object/undo_redo.cpp
+++ b/core/object/undo_redo.cpp
@@ -39,11 +39,15 @@ void UndoRedo::_discard_redo() {
}
for (int i = current_action + 1; i < actions.size(); i++) {
- for (List<Operation>::Element *E = actions.write[i].do_ops.front(); E; E = E->next()) {
- if (E->get().type == Operation::TYPE_REFERENCE) {
- Object *obj = ObjectDB::get_instance(E->get().object);
- if (obj) {
- memdelete(obj);
+ for (Operation &E : actions.write[i].do_ops) {
+ if (E.type == Operation::TYPE_REFERENCE) {
+ if (E.ref.is_valid()) {
+ E.ref.unref();
+ } else {
+ Object *obj = ObjectDB::get_instance(E.object);
+ if (obj) {
+ memdelete(obj);
+ }
}
}
}
@@ -240,11 +244,15 @@ void UndoRedo::_pop_history_tail() {
return;
}
- for (List<Operation>::Element *E = actions.write[0].undo_ops.front(); E; E = E->next()) {
- if (E->get().type == Operation::TYPE_REFERENCE) {
- Object *obj = ObjectDB::get_instance(E->get().object);
- if (obj) {
- memdelete(obj);
+ for (Operation &E : actions.write[0].undo_ops) {
+ if (E.type == Operation::TYPE_REFERENCE) {
+ if (E.ref.is_valid()) {
+ E.ref.unref();
+ } else {
+ Object *obj = ObjectDB::get_instance(E.object);
+ if (obj) {
+ memdelete(obj);
+ }
}
}
}
diff --git a/core/os/main_loop.cpp b/core/os/main_loop.cpp
index 016d9d0a09..3c0e56f5a8 100644
--- a/core/os/main_loop.cpp
+++ b/core/os/main_loop.cpp
@@ -66,7 +66,7 @@ void MainLoop::initialize() {
}
}
-bool MainLoop::physics_process(float p_time) {
+bool MainLoop::physics_process(double p_time) {
if (get_script_instance()) {
return get_script_instance()->call("_physics_process", p_time);
}
@@ -74,7 +74,7 @@ bool MainLoop::physics_process(float p_time) {
return false;
}
-bool MainLoop::process(float p_time) {
+bool MainLoop::process(double p_time) {
if (get_script_instance()) {
return get_script_instance()->call("_process", p_time);
}
diff --git a/core/os/main_loop.h b/core/os/main_loop.h
index 34e944709b..b42e9b18ff 100644
--- a/core/os/main_loop.h
+++ b/core/os/main_loop.h
@@ -60,8 +60,8 @@ public:
};
virtual void initialize();
- virtual bool physics_process(float p_time);
- virtual bool process(float p_time);
+ virtual bool physics_process(double p_time);
+ virtual bool process(double p_time);
virtual void finalize();
void set_initialize_script(const Ref<Script> &p_initialize_script);
diff --git a/core/os/os.cpp b/core/os/os.cpp
index 535eee4797..cdb570bb73 100644
--- a/core/os/os.cpp
+++ b/core/os/os.cpp
@@ -110,6 +110,10 @@ void OS::printerr(const char *p_format, ...) {
va_end(argp);
}
+void OS::alert(const String &p_alert, const String &p_title) {
+ fprintf(stderr, "%s: %s\n", p_title.utf8().get_data(), p_alert.utf8().get_data());
+}
+
void OS::set_low_processor_usage_mode(bool p_enabled) {
low_processor_usage_mode = p_enabled;
}
@@ -211,14 +215,6 @@ void OS::dump_resources_to_file(const char *p_file) {
ResourceCache::dump(p_file);
}
-void OS::set_no_window_mode(bool p_enable) {
- _no_window = p_enable;
-}
-
-bool OS::is_no_window_mode_enabled() const {
- return _no_window;
-}
-
int OS::get_exit_code() const {
return _exit_code;
}
diff --git a/core/os/os.h b/core/os/os.h
index 301718a8b3..0466d94acd 100644
--- a/core/os/os.h
+++ b/core/os/os.h
@@ -53,7 +53,6 @@ class OS {
bool _verbose_stdout = false;
bool _debug_stdout = false;
String _local_clipboard;
- bool _no_window = false;
int _exit_code = EXIT_FAILURE; // unexpected exit is marked as failure
int _orientation;
bool _allow_hidpi = false;
@@ -120,6 +119,8 @@ public:
virtual void open_midi_inputs();
virtual void close_midi_inputs();
+ virtual void alert(const String &p_alert, const String &p_title = "ALERT!");
+
virtual Error open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path = false) { return ERR_UNAVAILABLE; }
virtual Error close_dynamic_library(void *p_library_handle) { return ERR_UNAVAILABLE; }
virtual Error get_dynamic_library_symbol_handle(void *p_library_handle, const String p_name, void *&p_symbol_handle, bool p_optional = false) { return ERR_UNAVAILABLE; }
@@ -267,9 +268,6 @@ public:
virtual Error move_to_trash(const String &p_path) { return FAILED; }
- virtual void set_no_window_mode(bool p_enable);
- virtual bool is_no_window_mode_enabled() const;
-
virtual void debug_break();
virtual int get_exit_code() const;
diff --git a/core/os/pool_allocator.h b/core/os/pool_allocator.h
index 15e50dac90..49f433ba97 100644
--- a/core/os/pool_allocator.h
+++ b/core/os/pool_allocator.h
@@ -37,7 +37,7 @@
@author Juan Linietsky <reduzio@gmail.com>
* Generic Pool Allocator.
* This is a generic memory pool allocator, with locking, compacting and alignment. (@TODO alignment)
- * It used as a standard way to manage alloction in a specific region of memory, such as texture memory,
+ * It used as a standard way to manage allocation in a specific region of memory, such as texture memory,
* audio sample memory, or just any kind of memory overall.
* (@TODO) abstraction should be greater, because in many platforms, you need to manage a nonreachable memory.
*/
diff --git a/core/register_core_types.cpp b/core/register_core_types.cpp
index eb37267546..3d1cb4a8e1 100644
--- a/core/register_core_types.cpp
+++ b/core/register_core_types.cpp
@@ -56,6 +56,7 @@
#include "core/io/pck_packer.h"
#include "core/io/resource_format_binary.h"
#include "core/io/resource_importer.h"
+#include "core/io/resource_uid.h"
#include "core/io/stream_peer_ssl.h"
#include "core/io/tcp_server.h"
#include "core/io/translation_loader_po.h"
@@ -102,6 +103,8 @@ static NativeExtensionManager *native_extension_manager = nullptr;
extern void register_global_constants();
extern void unregister_global_constants();
+static ResourceUID *resource_uid = nullptr;
+
void register_core_types() {
//consistency check
static_assert(sizeof(Callable) <= 16);
@@ -225,6 +228,10 @@ void register_core_types() {
GDREGISTER_VIRTUAL_CLASS(NativeExtensionManager);
+ GDREGISTER_VIRTUAL_CLASS(ResourceUID);
+
+ resource_uid = memnew(ResourceUID);
+
native_extension_manager = memnew(NativeExtensionManager);
ip = IP::create();
@@ -286,10 +293,11 @@ void register_core_singletons() {
Engine::get_singleton()->add_singleton(Engine::Singleton("EngineDebugger", _EngineDebugger::get_singleton()));
Engine::get_singleton()->add_singleton(Engine::Singleton("Time", Time::get_singleton()));
Engine::get_singleton()->add_singleton(Engine::Singleton("NativeExtensionManager", NativeExtensionManager::get_singleton()));
+ Engine::get_singleton()->add_singleton(Engine::Singleton("ResourceUID", ResourceUID::get_singleton()));
}
void register_core_extensions() {
- //harcoded for now
+ // Hardcoded for now.
if (ProjectSettings::get_singleton()->has_setting("native_extensions/paths")) {
Vector<String> paths = ProjectSettings::get_singleton()->get("native_extensions/paths");
for (int i = 0; i < paths.size(); i++) {
@@ -304,6 +312,8 @@ void unregister_core_types() {
native_extension_manager->deinitialize_extensions(NativeExtension::INITIALIZATION_LEVEL_CORE);
memdelete(native_extension_manager);
+
+ memdelete(resource_uid);
memdelete(_resource_loader);
memdelete(_resource_saver);
memdelete(_os);
diff --git a/core/string/optimized_translation.cpp b/core/string/optimized_translation.cpp
index 268562d971..5863bd1c46 100644
--- a/core/string/optimized_translation.cpp
+++ b/core/string/optimized_translation.cpp
@@ -66,9 +66,9 @@ void OptimizedTranslation::generate(const Ref<Translation> &p_from) {
int total_compression_size = 0;
int total_string_size = 0;
- for (List<StringName>::Element *E = keys.front(); E; E = E->next()) {
+ for (const StringName &E : keys) {
//hash string
- CharString cs = E->get().operator String().utf8();
+ CharString cs = E.operator String().utf8();
uint32_t h = hash(0, cs.get_data());
Pair<int, CharString> p;
p.first = idx;
@@ -76,7 +76,7 @@ void OptimizedTranslation::generate(const Ref<Translation> &p_from) {
buckets.write[h % size].push_back(p);
//compress string
- CharString src_s = p_from->get_message(E->get()).operator String().utf8();
+ CharString src_s = p_from->get_message(E).operator String().utf8();
CompressedString ps;
ps.orig_len = src_s.size();
ps.offset = total_compression_size;
diff --git a/core/string/translation.cpp b/core/string/translation.cpp
index 678f8fb207..19d23fd375 100644
--- a/core/string/translation.cpp
+++ b/core/string/translation.cpp
@@ -841,8 +841,8 @@ Vector<String> Translation::_get_message_list() const {
void Translation::_set_messages(const Dictionary &p_messages) {
List<Variant> keys;
p_messages.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- translation_map[E->get()] = p_messages[E->get()];
+ for (const Variant &E : keys) {
+ translation_map[E] = p_messages[E];
}
}
diff --git a/core/string/translation_po.cpp b/core/string/translation_po.cpp
index f9b4e661e4..1da00aa54b 100644
--- a/core/string/translation_po.cpp
+++ b/core/string/translation_po.cpp
@@ -47,8 +47,7 @@ void TranslationPO::print_translation_map() {
List<StringName> context_l;
translation_map.get_key_list(&context_l);
- for (List<StringName>::Element *E = context_l.front(); E; E = E->next()) {
- StringName ctx = E->get();
+ for (const StringName &ctx : context_l) {
file->store_line(" ===== Context: " + String::utf8(String(ctx).utf8()) + " ===== ");
const HashMap<StringName, Vector<StringName>> &inner_map = translation_map[ctx];
@@ -74,8 +73,7 @@ Dictionary TranslationPO::_get_messages() const {
List<StringName> context_l;
translation_map.get_key_list(&context_l);
- for (List<StringName>::Element *E = context_l.front(); E; E = E->next()) {
- StringName ctx = E->get();
+ for (const StringName &ctx : context_l) {
const HashMap<StringName, Vector<StringName>> &id_str_map = translation_map[ctx];
Dictionary d2;
@@ -98,8 +96,7 @@ void TranslationPO::_set_messages(const Dictionary &p_messages) {
List<Variant> context_l;
p_messages.get_key_list(&context_l);
- for (List<Variant>::Element *E = context_l.front(); E; E = E->next()) {
- StringName ctx = E->get();
+ for (const Variant &ctx : context_l) {
const Dictionary &id_str_map = p_messages[ctx];
HashMap<StringName, Vector<StringName>> temp_map;
@@ -121,8 +118,8 @@ Vector<String> TranslationPO::_get_message_list() const {
get_message_list(&msgs);
Vector<String> v;
- for (List<StringName>::Element *E = msgs.front(); E; E = E->next()) {
- v.push_back(E->get());
+ for (const StringName &E : msgs) {
+ v.push_back(E);
}
return v;
@@ -281,13 +278,13 @@ void TranslationPO::get_message_list(List<StringName> *r_messages) const {
List<StringName> context_l;
translation_map.get_key_list(&context_l);
- for (List<StringName>::Element *E = context_l.front(); E; E = E->next()) {
- if (String(E->get()) != "") {
+ for (const StringName &E : context_l) {
+ if (String(E) != "") {
continue;
}
List<StringName> msgid_l;
- translation_map[E->get()].get_key_list(&msgid_l);
+ translation_map[E].get_key_list(&msgid_l);
for (List<StringName>::Element *E2 = msgid_l.front(); E2; E2 = E2->next()) {
r_messages->push_back(E2->get());
@@ -300,8 +297,8 @@ int TranslationPO::get_message_count() const {
translation_map.get_key_list(&context_l);
int count = 0;
- for (List<StringName>::Element *E = context_l.front(); E; E = E->next()) {
- count += translation_map[E->get()].size();
+ for (const StringName &E : context_l) {
+ count += translation_map[E].size();
}
return count;
}
diff --git a/core/string/ustring.cpp b/core/string/ustring.cpp
index 4cd2915ffa..7beecdb6b5 100644
--- a/core/string/ustring.cpp
+++ b/core/string/ustring.cpp
@@ -3421,11 +3421,8 @@ String String::format(const Variant &values, String placeholder) const {
List<Variant> keys;
d.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- String key = E->get();
- String val = d[E->get()];
-
- new_string = new_string.replace(placeholder.replace("_", key), val);
+ for (const Variant &key : keys) {
+ new_string = new_string.replace(placeholder.replace("_", key), d[key]);
}
} else {
ERR_PRINT(String("Invalid type: use Array or Dictionary.").ascii().get_data());
diff --git a/core/templates/command_queue_mt.h b/core/templates/command_queue_mt.h
index acc46da0d5..519a896ffc 100644
--- a/core/templates/command_queue_mt.h
+++ b/core/templates/command_queue_mt.h
@@ -321,7 +321,7 @@ class CommandQueueMT {
DECL_CMD(0)
SPACE_SEP_LIST(DECL_CMD, 15)
- /* comands that return */
+ // Commands that return.
DECL_CMD_RET(0)
SPACE_SEP_LIST(DECL_CMD_RET, 15)
diff --git a/core/templates/rid_owner.h b/core/templates/rid_owner.h
index 4f5c74ca46..8d139551ef 100644
--- a/core/templates/rid_owner.h
+++ b/core/templates/rid_owner.h
@@ -101,7 +101,7 @@ class RID_Alloc : public RID_AllocBase {
//initialize
for (uint32_t i = 0; i < elements_in_chunk; i++) {
- //dont initialize chunk
+ // Don't initialize chunk.
validator_chunks[chunk_count][i] = 0xFFFFFFFF;
free_list_chunks[chunk_count][i] = alloc_count + i;
}
diff --git a/core/templates/set.h b/core/templates/set.h
index 245c174862..9261d2d3d2 100644
--- a/core/templates/set.h
+++ b/core/templates/set.h
@@ -71,6 +71,9 @@ public:
Element *prev() {
return _prev;
}
+ T &get() {
+ return value;
+ }
const T &get() const {
return value;
};
@@ -118,8 +121,8 @@ public:
return *this;
}
- _FORCE_INLINE_ bool operator==(const Iterator &b) const { return E == b.E; }
- _FORCE_INLINE_ bool operator!=(const Iterator &b) const { return E != b.E; }
+ _FORCE_INLINE_ bool operator==(const ConstIterator &b) const { return E == b.E; }
+ _FORCE_INLINE_ bool operator!=(const ConstIterator &b) const { return E != b.E; }
_FORCE_INLINE_ ConstIterator(const Element *p_E) { E = p_E; }
_FORCE_INLINE_ ConstIterator() {}
diff --git a/core/variant/binder_common.h b/core/variant/binder_common.h
index ef5867c685..3cb2a6bfb5 100644
--- a/core/variant/binder_common.h
+++ b/core/variant/binder_common.h
@@ -69,17 +69,17 @@ struct VariantCaster<const T &> {
template <> \
struct VariantCaster<m_enum> { \
static _FORCE_INLINE_ m_enum cast(const Variant &p_variant) { \
- return (m_enum)p_variant.operator int(); \
+ return (m_enum)p_variant.operator int64_t(); \
} \
}; \
template <> \
struct PtrToArg<m_enum> { \
_FORCE_INLINE_ static m_enum convert(const void *p_ptr) { \
- return m_enum(*reinterpret_cast<const int *>(p_ptr)); \
+ return m_enum(*reinterpret_cast<const int64_t *>(p_ptr)); \
} \
typedef int64_t EncodeT; \
_FORCE_INLINE_ static void encode(m_enum p_val, const void *p_ptr) { \
- *(int *)p_ptr = p_val; \
+ *(int64_t *)p_ptr = p_val; \
} \
};
diff --git a/core/variant/callable.cpp b/core/variant/callable.cpp
index ca6f3d615e..f487e718f4 100644
--- a/core/variant/callable.cpp
+++ b/core/variant/callable.cpp
@@ -407,8 +407,8 @@ Array Signal::get_connections() const {
object->get_signal_connection_list(name, &connections);
Array arr;
- for (List<Object::Connection>::Element *E = connections.front(); E; E = E->next()) {
- arr.push_back(E->get());
+ for (const Object::Connection &E : connections) {
+ arr.push_back(E);
}
return arr;
}
diff --git a/core/variant/method_ptrcall.h b/core/variant/method_ptrcall.h
index 7852187b77..8836e257a9 100644
--- a/core/variant/method_ptrcall.h
+++ b/core/variant/method_ptrcall.h
@@ -105,7 +105,7 @@ struct PtrToArg {};
} \
}
-MAKE_PTRARGCONV(bool, uint32_t);
+MAKE_PTRARGCONV(bool, uint8_t);
// Integer types.
MAKE_PTRARGCONV(uint8_t, int64_t);
MAKE_PTRARGCONV(int8_t, int64_t);
diff --git a/core/variant/variant.cpp b/core/variant/variant.cpp
index badb5ba103..97a1b4c02a 100644
--- a/core/variant/variant.cpp
+++ b/core/variant/variant.cpp
@@ -1681,10 +1681,10 @@ String Variant::stringify(List<const void *> &stack) const {
Vector<_VariantStrPair> pairs;
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
+ for (const Variant &E : keys) {
_VariantStrPair sp;
- sp.key = E->get().stringify(stack);
- sp.value = d[E->get()].stringify(stack);
+ sp.key = E.stringify(stack);
+ sp.value = d[E].stringify(stack);
pairs.push_back(sp);
}
diff --git a/core/variant/variant.h b/core/variant/variant.h
index 6d1b4da9e8..780f9b4e70 100644
--- a/core/variant/variant.h
+++ b/core/variant/variant.h
@@ -118,6 +118,11 @@ public:
VARIANT_MAX
};
+ enum {
+ // Maximum recursion depth allowed when serializing variants.
+ MAX_RECURSION_DEPTH = 1024,
+ };
+
private:
friend struct _VariantCall;
friend class VariantInternal;
@@ -253,7 +258,7 @@ private:
true, //PACKED_COLOR_ARRAY,
};
- if (unlikely(needs_deinit[type])) { //make it fast for types that dont need deinit
+ if (unlikely(needs_deinit[type])) { // Make it fast for types that don't need deinit.
_clear_internal();
}
type = NIL;
diff --git a/core/variant/variant_call.cpp b/core/variant/variant_call.cpp
index 65ad27d0b4..f8538f71d3 100644
--- a/core/variant/variant_call.cpp
+++ b/core/variant/variant_call.cpp
@@ -750,6 +750,42 @@ struct _VariantCall {
return 0;
}
+ static PackedInt32Array func_PackedByteArray_decode_s32_array(PackedByteArray *p_instance) {
+ uint64_t size = p_instance->size();
+ const uint8_t *r = p_instance->ptr();
+ PackedInt32Array dest;
+ dest.resize(size / sizeof(int32_t));
+ memcpy(dest.ptrw(), r, size);
+ return dest;
+ }
+
+ static PackedInt64Array func_PackedByteArray_decode_s64_array(PackedByteArray *p_instance) {
+ uint64_t size = p_instance->size();
+ const uint8_t *r = p_instance->ptr();
+ PackedInt64Array dest;
+ dest.resize(size / sizeof(int64_t));
+ memcpy(dest.ptrw(), r, size);
+ return dest;
+ }
+
+ static PackedFloat32Array func_PackedByteArray_decode_float_array(PackedByteArray *p_instance) {
+ uint64_t size = p_instance->size();
+ const uint8_t *r = p_instance->ptr();
+ PackedFloat32Array dest;
+ dest.resize(size / sizeof(float));
+ memcpy(dest.ptrw(), r, size);
+ return dest;
+ }
+
+ static PackedFloat64Array func_PackedByteArray_decode_double_array(PackedByteArray *p_instance) {
+ uint64_t size = p_instance->size();
+ const uint8_t *r = p_instance->ptr();
+ PackedFloat64Array dest;
+ dest.resize(size / sizeof(double));
+ memcpy(dest.ptrw(), r, size);
+ return dest;
+ }
+
static void func_PackedByteArray_encode_u8(PackedByteArray *p_instance, int64_t p_offset, int64_t p_value) {
uint64_t size = p_instance->size();
ERR_FAIL_COND(p_offset < 0 || p_offset > int64_t(size) - 1);
@@ -1088,8 +1124,8 @@ bool Variant::has_builtin_method_return_value(Variant::Type p_type, const String
void Variant::get_builtin_method_list(Variant::Type p_type, List<StringName> *p_list) {
ERR_FAIL_INDEX(p_type, Variant::VARIANT_MAX);
- for (List<StringName>::Element *E = builtin_method_names[p_type].front(); E; E = E->next()) {
- p_list->push_back(E->get());
+ for (const StringName &E : builtin_method_names[p_type]) {
+ p_list->push_back(E);
}
}
@@ -1152,12 +1188,12 @@ void Variant::get_method_list(List<MethodInfo> *p_list) const {
obj->get_method_list(p_list);
}
} else {
- for (List<StringName>::Element *E = builtin_method_names[type].front(); E; E = E->next()) {
- const VariantBuiltInMethodInfo *method = builtin_method_info[type].lookup_ptr(E->get());
+ for (const StringName &E : builtin_method_names[type]) {
+ const VariantBuiltInMethodInfo *method = builtin_method_info[type].lookup_ptr(E);
ERR_CONTINUE(!method);
MethodInfo mi;
- mi.name = E->get();
+ mi.name = E;
//return type
if (method->has_return_type) {
@@ -1824,6 +1860,11 @@ static void _register_variant_builtin_methods() {
bind_function(PackedByteArray, decode_var, _VariantCall::func_PackedByteArray_decode_var, sarray("byte_offset", "allow_objects"), varray(false));
bind_function(PackedByteArray, decode_var_size, _VariantCall::func_PackedByteArray_decode_var_size, sarray("byte_offset", "allow_objects"), varray(false));
+ bind_function(PackedByteArray, to_int32_array, _VariantCall::func_PackedByteArray_decode_s32_array, sarray(), varray());
+ bind_function(PackedByteArray, to_int64_array, _VariantCall::func_PackedByteArray_decode_s64_array, sarray(), varray());
+ bind_function(PackedByteArray, to_float32_array, _VariantCall::func_PackedByteArray_decode_float_array, sarray(), varray());
+ bind_function(PackedByteArray, to_float64_array, _VariantCall::func_PackedByteArray_decode_double_array, sarray(), varray());
+
bind_functionnc(PackedByteArray, encode_u8, _VariantCall::func_PackedByteArray_encode_u8, sarray("byte_offset", "value"), varray());
bind_functionnc(PackedByteArray, encode_s8, _VariantCall::func_PackedByteArray_encode_s8, sarray("byte_offset", "value"), varray());
bind_functionnc(PackedByteArray, encode_u16, _VariantCall::func_PackedByteArray_encode_u16, sarray("byte_offset", "value"), varray());
diff --git a/core/variant/variant_parser.cpp b/core/variant/variant_parser.cpp
index f9c604fe3e..50c48fd386 100644
--- a/core/variant/variant_parser.cpp
+++ b/core/variant/variant_parser.cpp
@@ -1586,8 +1586,8 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
List<PropertyInfo> props;
obj->get_property_list(&props);
bool first = true;
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (E->get().usage & PROPERTY_USAGE_STORAGE || E->get().usage & PROPERTY_USAGE_SCRIPT_VARIABLE) {
+ for (const PropertyInfo &E : props) {
+ if (E.usage & PROPERTY_USAGE_STORAGE || E.usage & PROPERTY_USAGE_SCRIPT_VARIABLE) {
//must be serialized
if (first) {
@@ -1596,8 +1596,8 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
p_store_string_func(p_store_string_ud, ",");
}
- p_store_string_func(p_store_string_ud, "\"" + E->get().name + "\":");
- write(obj->get(E->get().name), p_store_string_func, p_store_string_ud, p_encode_res_func, p_encode_res_ud);
+ p_store_string_func(p_store_string_ud, "\"" + E.name + "\":");
+ write(obj->get(E.name), p_store_string_func, p_store_string_ud, p_encode_res_func, p_encode_res_ud);
}
}
@@ -1615,7 +1615,7 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
p_store_string_func(p_store_string_ud, "{\n");
for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
/*
- if (!_check_type(dict[E->get()]))
+ if (!_check_type(dict[E]))
continue;
*/
write(E->get(), p_store_string_func, p_store_string_ud, p_encode_res_func, p_encode_res_ud);
diff --git a/core/variant/variant_parser.h b/core/variant/variant_parser.h
index 05fc29b5e0..1ba26db6ed 100644
--- a/core/variant/variant_parser.h
+++ b/core/variant/variant_parser.h
@@ -73,9 +73,9 @@ public:
struct ResourceParser {
void *userdata = nullptr;
- ParseResourceFunc func;
- ParseResourceFunc ext_func;
- ParseResourceFunc sub_func;
+ ParseResourceFunc func = nullptr;
+ ParseResourceFunc ext_func = nullptr;
+ ParseResourceFunc sub_func = nullptr;
};
enum TokenType {
diff --git a/core/variant/variant_setget.cpp b/core/variant/variant_setget.cpp
index de1deace63..ae3c7685fd 100644
--- a/core/variant/variant_setget.cpp
+++ b/core/variant/variant_setget.cpp
@@ -1093,9 +1093,9 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const {
const Dictionary *dic = reinterpret_cast<const Dictionary *>(_data._mem);
List<Variant> keys;
dic->get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- if (E->get().get_type() == Variant::STRING) {
- p_list->push_back(PropertyInfo(Variant::STRING, E->get()));
+ for (const Variant &E : keys) {
+ if (E.get_type() == Variant::STRING) {
+ p_list->push_back(PropertyInfo(Variant::STRING, E));
}
}
} else if (type == OBJECT) {
@@ -1106,10 +1106,10 @@ void Variant::get_property_list(List<PropertyInfo> *p_list) const {
} else {
List<StringName> members;
get_member_list(type, &members);
- for (List<StringName>::Element *E = members.front(); E; E = E->next()) {
+ for (const StringName &E : members) {
PropertyInfo pi;
- pi.name = E->get();
- pi.type = get_member_type(type, E->get());
+ pi.name = E;
+ pi.type = get_member_type(type, E);
p_list->push_back(pi);
}
}
diff --git a/core/variant/variant_utility.cpp b/core/variant/variant_utility.cpp
index 1f69e81d99..34dbf130b6 100644
--- a/core/variant/variant_utility.cpp
+++ b/core/variant/variant_utility.cpp
@@ -249,10 +249,6 @@ struct VariantUtilityFunctions {
return Math::move_toward(from, to, delta);
}
- static inline double dectime(double value, double amount, double step) {
- return Math::dectime(value, amount, step);
- }
-
static inline double deg2rad(double angle_deg) {
return Math::deg2rad(angle_deg);
}
@@ -1195,7 +1191,6 @@ void Variant::_register_variant_utility_functions() {
FUNCBINDR(smoothstep, sarray("from", "to", "x"), Variant::UTILITY_FUNC_TYPE_MATH);
FUNCBINDR(move_toward, sarray("from", "to", "delta"), Variant::UTILITY_FUNC_TYPE_MATH);
- FUNCBINDR(dectime, sarray("value", "amount", "step"), Variant::UTILITY_FUNC_TYPE_MATH);
FUNCBINDR(deg2rad, sarray("deg"), Variant::UTILITY_FUNC_TYPE_MATH);
FUNCBINDR(rad2deg, sarray("rad"), Variant::UTILITY_FUNC_TYPE_MATH);
@@ -1397,8 +1392,8 @@ uint32_t Variant::get_utility_function_hash(const StringName &p_name) {
}
void Variant::get_utility_function_list(List<StringName> *r_functions) {
- for (List<StringName>::Element *E = utility_function_name_table.front(); E; E = E->next()) {
- r_functions->push_back(E->get());
+ for (const StringName &E : utility_function_name_table) {
+ r_functions->push_back(E);
}
}
diff --git a/doc/classes/@GlobalScope.xml b/doc/classes/@GlobalScope.xml
index d0bd517050..c86812742c 100644
--- a/doc/classes/@GlobalScope.xml
+++ b/doc/classes/@GlobalScope.xml
@@ -11,18 +11,14 @@
</tutorials>
<methods>
<method name="abs">
- <return type="Variant">
- </return>
- <argument index="0" name="x" type="Variant">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="x" type="Variant" />
<description>
</description>
</method>
<method name="absf">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Returns the absolute value of float parameter [code]x[/code] (i.e. positive value).
[codeblock]
@@ -32,10 +28,8 @@
</description>
</method>
<method name="absi">
- <return type="int">
- </return>
- <argument index="0" name="x" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="x" type="int" />
<description>
Returns the absolute value of int parameter [code]x[/code] (i.e. positive value).
[codeblock]
@@ -45,10 +39,8 @@
</description>
</method>
<method name="acos">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Returns the arc cosine of [code]x[/code] in radians. Use to get the angle of cosine [code]x[/code]. [code]x[/code] must be between [code]-1.0[/code] and [code]1.0[/code] (inclusive), otherwise, [method acos] will return [constant @GDScript.NAN].
[codeblock]
@@ -58,10 +50,8 @@
</description>
</method>
<method name="asin">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Returns the arc sine of [code]x[/code] in radians. Use to get the angle of sine [code]x[/code]. [code]x[/code] must be between [code]-1.0[/code] and [code]1.0[/code] (inclusive), otherwise, [method asin] will return [constant @GDScript.NAN].
[codeblock]
@@ -71,10 +61,8 @@
</description>
</method>
<method name="atan">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Returns the arc tangent of [code]x[/code] in radians. Use it to get the angle from an angle's tangent in trigonometry: [code]atan(tan(angle)) == angle[/code].
The method cannot know in which quadrant the angle should fall. See [method atan2] if you have both [code]y[/code] and [code]x[/code].
@@ -84,12 +72,9 @@
</description>
</method>
<method name="atan2">
- <return type="float">
- </return>
- <argument index="0" name="y" type="float">
- </argument>
- <argument index="1" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="y" type="float" />
+ <argument index="1" name="x" type="float" />
<description>
Returns the arc tangent of [code]y/x[/code] in radians. Use to get the angle of tangent [code]y/x[/code]. To compute the value, the method takes into account the sign of both arguments in order to determine the quadrant.
Important note: The Y coordinate comes first, by convention.
@@ -99,41 +84,32 @@
</description>
</method>
<method name="bytes2var">
- <return type="Variant">
- </return>
- <argument index="0" name="bytes" type="PackedByteArray">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="bytes" type="PackedByteArray" />
<description>
Decodes a byte array back to a [Variant] value, without decoding objects.
[b]Note:[/b] If you need object deserialization, see [method bytes2var_with_objects].
</description>
</method>
<method name="bytes2var_with_objects">
- <return type="Variant">
- </return>
- <argument index="0" name="bytes" type="PackedByteArray">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="bytes" type="PackedByteArray" />
<description>
Decodes a byte array back to a [Variant] value. Decoding objects is allowed.
[b]WARNING:[/b] Deserialized object can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats (remote code execution).
</description>
</method>
<method name="cartesian2polar">
- <return type="Vector2">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="y" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
<description>
Converts a 2D point expressed in the cartesian coordinate system (X and Y axis) to the polar coordinate system (a distance from the origin and an angle).
</description>
</method>
<method name="ceil">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Rounds [code]x[/code] upward (towards positive infinity), returning the smallest whole number that is not less than [code]x[/code].
[codeblock]
@@ -144,26 +120,18 @@
</description>
</method>
<method name="clamp">
- <return type="Variant">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
- <argument index="1" name="min" type="Variant">
- </argument>
- <argument index="2" name="max" type="Variant">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="value" type="Variant" />
+ <argument index="1" name="min" type="Variant" />
+ <argument index="2" name="max" type="Variant" />
<description>
</description>
</method>
<method name="clampf">
- <return type="float">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
- <argument index="1" name="min" type="float">
- </argument>
- <argument index="2" name="max" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="value" type="float" />
+ <argument index="1" name="min" type="float" />
+ <argument index="2" name="max" type="float" />
<description>
Clamps the float [code]value[/code] and returns a value not less than [code]min[/code] and not more than [code]max[/code].
[codeblock]
@@ -178,14 +146,10 @@
</description>
</method>
<method name="clampi">
- <return type="int">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
- <argument index="1" name="min" type="int">
- </argument>
- <argument index="2" name="max" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="value" type="int" />
+ <argument index="1" name="min" type="int" />
+ <argument index="2" name="max" type="int" />
<description>
Clamps the integer [code]value[/code] and returns a value not less than [code]min[/code] and not more than [code]max[/code].
[codeblock]
@@ -200,10 +164,8 @@
</description>
</method>
<method name="cos">
- <return type="float">
- </return>
- <argument index="0" name="angle_rad" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="angle_rad" type="float" />
<description>
Returns the cosine of angle [code]angle_rad[/code] in radians.
[codeblock]
@@ -214,10 +176,8 @@
</description>
</method>
<method name="cosh">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Returns the hyperbolic cosine of [code]x[/code] in radians.
[codeblock]
@@ -227,36 +187,15 @@
</description>
</method>
<method name="db2linear">
- <return type="float">
- </return>
- <argument index="0" name="db" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="db" type="float" />
<description>
Converts from decibels to linear energy (audio).
</description>
</method>
- <method name="dectime">
- <return type="float">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
- <argument index="1" name="amount" type="float">
- </argument>
- <argument index="2" name="step" type="float">
- </argument>
- <description>
- Returns the result of [code]value[/code] decreased by [code]step[/code] * [code]amount[/code].
- [codeblock]
- # a = 59
- a = dectime(60, 10, 0.1))
- [/codeblock]
- </description>
- </method>
<method name="deg2rad">
- <return type="float">
- </return>
- <argument index="0" name="deg" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="deg" type="float" />
<description>
Converts an angle expressed in degrees to radians.
[codeblock]
@@ -266,21 +205,16 @@
</description>
</method>
<method name="ease">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="curve" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="curve" type="float" />
<description>
Easing function, based on exponent. The curve values are: 0 is constant, 1 is linear, 0 to 1 is ease-in, 1+ is ease out. Negative values are in-out/out in.
</description>
</method>
<method name="exp">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
The natural exponential function. It raises the mathematical constant [b]e[/b] to the power of [code]x[/code] and returns it.
[b]e[/b] has an approximate value of 2.71828, and can be obtained with [code]exp(1)[/code].
@@ -291,10 +225,8 @@
</description>
</method>
<method name="floor">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Rounds [code]x[/code] downward (towards negative infinity), returning the largest whole number that is not more than [code]x[/code].
[codeblock]
@@ -308,12 +240,9 @@
</description>
</method>
<method name="fmod">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="y" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
<description>
Returns the floating-point remainder of [code]x/y[/code], keeping the sign of [code]x[/code].
[codeblock]
@@ -324,12 +253,9 @@
</description>
</method>
<method name="fposmod">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="y" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
<description>
Returns the floating-point modulus of [code]x/y[/code] that wraps equally in positive and negative.
[codeblock]
@@ -350,10 +276,8 @@
</description>
</method>
<method name="hash">
- <return type="int">
- </return>
- <argument index="0" name="variable" type="Variant">
- </argument>
+ <return type="int" />
+ <argument index="0" name="variable" type="Variant" />
<description>
Returns the integer hash of the variable passed.
[codeblock]
@@ -362,10 +286,8 @@
</description>
</method>
<method name="instance_from_id">
- <return type="Object">
- </return>
- <argument index="0" name="instance_id" type="int">
- </argument>
+ <return type="Object" />
+ <argument index="0" name="instance_id" type="int" />
<description>
Returns the Object that corresponds to [code]instance_id[/code]. All Objects have a unique instance ID.
[codeblock]
@@ -378,14 +300,10 @@
</description>
</method>
<method name="inverse_lerp">
- <return type="float">
- </return>
- <argument index="0" name="from" type="float">
- </argument>
- <argument index="1" name="to" type="float">
- </argument>
- <argument index="2" name="weight" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from" type="float" />
+ <argument index="1" name="to" type="float" />
+ <argument index="2" name="weight" type="float" />
<description>
Returns a normalized value considering the given range. This is the opposite of [method lerp].
[codeblock]
@@ -398,12 +316,9 @@
</description>
</method>
<method name="is_equal_approx">
- <return type="bool">
- </return>
- <argument index="0" name="a" type="float">
- </argument>
- <argument index="1" name="b" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="a" type="float" />
+ <argument index="1" name="b" type="float" />
<description>
Returns [code]true[/code] if [code]a[/code] and [code]b[/code] are approximately equal to each other.
Here, approximately equal means that [code]a[/code] and [code]b[/code] are within a small internal epsilon of each other, which scales with the magnitude of the numbers.
@@ -411,59 +326,45 @@
</description>
</method>
<method name="is_inf">
- <return type="bool">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="x" type="float" />
<description>
Returns whether [code]x[/code] is an infinity value (either positive infinity or negative infinity).
</description>
</method>
<method name="is_instance_id_valid">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
</description>
</method>
<method name="is_instance_valid">
- <return type="bool">
- </return>
- <argument index="0" name="instance" type="Variant">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="instance" type="Variant" />
<description>
Returns whether [code]instance[/code] is a valid object (e.g. has not been deleted from memory).
</description>
</method>
<method name="is_nan">
- <return type="bool">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="x" type="float" />
<description>
Returns whether [code]x[/code] is a NaN ("Not a Number" or invalid) value.
</description>
</method>
<method name="is_zero_approx">
- <return type="bool">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="x" type="float" />
<description>
Returns [code]true[/code] if [code]x[/code] is zero or almost zero.
This method is faster than using [method is_equal_approx] with one value as zero.
</description>
</method>
<method name="lerp">
- <return type="float">
- </return>
- <argument index="0" name="from" type="float">
- </argument>
- <argument index="1" name="to" type="float">
- </argument>
- <argument index="2" name="weight" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from" type="float" />
+ <argument index="1" name="to" type="float" />
+ <argument index="2" name="weight" type="float" />
<description>
Linearly interpolates between two values by a normalized value. This is the opposite of [method inverse_lerp].
[codeblock]
@@ -472,14 +373,10 @@
</description>
</method>
<method name="lerp_angle">
- <return type="float">
- </return>
- <argument index="0" name="from" type="float">
- </argument>
- <argument index="1" name="to" type="float">
- </argument>
- <argument index="2" name="weight" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from" type="float" />
+ <argument index="1" name="to" type="float" />
+ <argument index="2" name="weight" type="float" />
<description>
Linearly interpolates between two angles (in radians) by a normalized value.
Similar to [method lerp], but interpolates correctly when the angles wrap around [constant @GDScript.TAU].
@@ -495,10 +392,8 @@
</description>
</method>
<method name="linear2db">
- <return type="float">
- </return>
- <argument index="0" name="lin" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="lin" type="float" />
<description>
Converts from linear energy to decibels (audio). This can be used to implement volume sliders that behave as expected (since volume isn't linear). Example:
[codeblock]
@@ -510,10 +405,8 @@
</description>
</method>
<method name="log">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Natural logarithm. The amount of time needed to reach a certain level of continuous growth.
[b]Note:[/b] This is not the same as the "log" function on most calculators, which uses a base 10 logarithm.
@@ -524,8 +417,7 @@
</description>
</method>
<method name="max" qualifiers="vararg">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns the maximum of the given values. This method can take any number of arguments.
[codeblock]
@@ -534,12 +426,9 @@
</description>
</method>
<method name="maxf">
- <return type="float">
- </return>
- <argument index="0" name="a" type="float">
- </argument>
- <argument index="1" name="b" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="a" type="float" />
+ <argument index="1" name="b" type="float" />
<description>
Returns the maximum of two float values.
[codeblock]
@@ -549,12 +438,9 @@
</description>
</method>
<method name="maxi">
- <return type="int">
- </return>
- <argument index="0" name="a" type="int">
- </argument>
- <argument index="1" name="b" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="a" type="int" />
+ <argument index="1" name="b" type="int" />
<description>
Returns the maximum of two int values.
[codeblock]
@@ -564,8 +450,7 @@
</description>
</method>
<method name="min" qualifiers="vararg">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns the minimum of the given values. This method can take any number of arguments.
[codeblock]
@@ -574,12 +459,9 @@
</description>
</method>
<method name="minf">
- <return type="float">
- </return>
- <argument index="0" name="a" type="float">
- </argument>
- <argument index="1" name="b" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="a" type="float" />
+ <argument index="1" name="b" type="float" />
<description>
Returns the minimum of two float values.
[codeblock]
@@ -589,12 +471,9 @@
</description>
</method>
<method name="mini">
- <return type="int">
- </return>
- <argument index="0" name="a" type="int">
- </argument>
- <argument index="1" name="b" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="a" type="int" />
+ <argument index="1" name="b" type="int" />
<description>
Returns the minimum of two int values.
[codeblock]
@@ -604,14 +483,10 @@
</description>
</method>
<method name="move_toward">
- <return type="float">
- </return>
- <argument index="0" name="from" type="float">
- </argument>
- <argument index="1" name="to" type="float">
- </argument>
- <argument index="2" name="delta" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from" type="float" />
+ <argument index="1" name="to" type="float" />
+ <argument index="2" name="delta" type="float" />
<description>
Moves [code]from[/code] toward [code]to[/code] by the [code]delta[/code] value.
Use a negative [code]delta[/code] value to move away.
@@ -623,10 +498,8 @@
</description>
</method>
<method name="nearest_po2">
- <return type="int">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="value" type="int" />
<description>
Returns the nearest equal or larger power of 2 for integer [code]value[/code].
In other words, returns the smallest value [code]a[/code] where [code]a = pow(2, n)[/code] such that [code]value &lt;= a[/code] for some non-negative integer [code]n[/code].
@@ -642,23 +515,17 @@
</description>
</method>
<method name="polar2cartesian">
- <return type="Vector2">
- </return>
- <argument index="0" name="r" type="float">
- </argument>
- <argument index="1" name="th" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="r" type="float" />
+ <argument index="1" name="th" type="float" />
<description>
Converts a 2D point expressed in the polar coordinate system (a distance from the origin [code]r[/code] and an angle [code]th[/code]) to the cartesian coordinate system (X and Y axis).
</description>
</method>
<method name="posmod">
- <return type="int">
- </return>
- <argument index="0" name="x" type="int">
- </argument>
- <argument index="1" name="y" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="x" type="int" />
+ <argument index="1" name="y" type="int" />
<description>
Returns the integer modulus of [code]x/y[/code] that wraps equally in positive and negative.
[codeblock]
@@ -678,12 +545,9 @@
</description>
</method>
<method name="pow">
- <return type="float">
- </return>
- <argument index="0" name="base" type="float">
- </argument>
- <argument index="1" name="exp" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="base" type="float" />
+ <argument index="1" name="exp" type="float" />
<description>
Returns the result of [code]base[/code] raised to the power of [code]exp[/code].
[codeblock]
@@ -754,10 +618,8 @@
</description>
</method>
<method name="rad2deg">
- <return type="float">
- </return>
- <argument index="0" name="rad" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="rad" type="float" />
<description>
Converts an angle expressed in radians to degrees.
[codeblock]
@@ -766,17 +628,14 @@
</description>
</method>
<method name="rand_from_seed">
- <return type="PackedInt64Array">
- </return>
- <argument index="0" name="seed" type="int">
- </argument>
+ <return type="PackedInt64Array" />
+ <argument index="0" name="seed" type="int" />
<description>
Random from seed: pass a [code]seed[/code], and an array with both number and new seed is returned. "Seed" here refers to the internal state of the pseudo random number generator. The internal state of the current implementation is 64 bits.
</description>
</method>
<method name="randf">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns a random floating point value between [code]0.0[/code] and [code]1.0[/code] (inclusive).
[codeblock]
@@ -785,12 +644,9 @@
</description>
</method>
<method name="randf_range">
- <return type="float">
- </return>
- <argument index="0" name="from" type="float">
- </argument>
- <argument index="1" name="to" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from" type="float" />
+ <argument index="1" name="to" type="float" />
<description>
Returns a random floating point value on the interval between [code]from[/code] and [code]to[/code] (inclusive).
[codeblock]
@@ -799,8 +655,7 @@
</description>
</method>
<method name="randi">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns a random unsigned 32-bit integer. Use remainder to obtain a random value in the interval [code][0, N - 1][/code] (where N is smaller than 2^32).
[codeblock]
@@ -812,12 +667,9 @@
</description>
</method>
<method name="randi_range">
- <return type="int">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
Returns a random signed 32-bit integer between [code]from[/code] and [code]to[/code] (inclusive). If [code]to[/code] is lesser than [code]from[/code], they are swapped.
[codeblock]
@@ -833,18 +685,12 @@
</description>
</method>
<method name="range_lerp">
- <return type="float">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
- <argument index="1" name="istart" type="float">
- </argument>
- <argument index="2" name="istop" type="float">
- </argument>
- <argument index="3" name="ostart" type="float">
- </argument>
- <argument index="4" name="ostop" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="value" type="float" />
+ <argument index="1" name="istart" type="float" />
+ <argument index="2" name="istop" type="float" />
+ <argument index="3" name="ostart" type="float" />
+ <argument index="4" name="ostop" type="float" />
<description>
Maps a [code]value[/code] from range [code][istart, istop][/code] to [code][ostart, ostop][/code].
[codeblock]
@@ -853,18 +699,14 @@
</description>
</method>
<method name="range_step_decimals">
- <return type="int">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="int" />
+ <argument index="0" name="x" type="float" />
<description>
</description>
</method>
<method name="round">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Rounds [code]x[/code] to the nearest whole number, with halfway cases rounded away from zero.
[codeblock]
@@ -874,8 +716,7 @@
</description>
</method>
<method name="seed">
- <argument index="0" name="base" type="int">
- </argument>
+ <argument index="0" name="base" type="int" />
<description>
Sets seed for the random number generator.
[codeblock]
@@ -885,18 +726,14 @@
</description>
</method>
<method name="sign">
- <return type="Variant">
- </return>
- <argument index="0" name="x" type="Variant">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="x" type="Variant" />
<description>
</description>
</method>
<method name="signf">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Returns the sign of [code]x[/code] as a float: -1.0 or 1.0. Returns 0.0 if [code]x[/code] is 0.
[codeblock]
@@ -907,10 +744,8 @@
</description>
</method>
<method name="signi">
- <return type="int">
- </return>
- <argument index="0" name="x" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="x" type="int" />
<description>
Returns the sign of [code]x[/code] as an integer: -1 or 1. Returns 0 if [code]x[/code] is 0.
[codeblock]
@@ -921,10 +756,8 @@
</description>
</method>
<method name="sin">
- <return type="float">
- </return>
- <argument index="0" name="angle_rad" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="angle_rad" type="float" />
<description>
Returns the sine of angle [code]angle_rad[/code] in radians.
[codeblock]
@@ -933,10 +766,8 @@
</description>
</method>
<method name="sinh">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Returns the hyperbolic sine of [code]x[/code].
[codeblock]
@@ -946,14 +777,10 @@
</description>
</method>
<method name="smoothstep">
- <return type="float">
- </return>
- <argument index="0" name="from" type="float">
- </argument>
- <argument index="1" name="to" type="float">
- </argument>
- <argument index="2" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from" type="float" />
+ <argument index="1" name="to" type="float" />
+ <argument index="2" name="x" type="float" />
<description>
Returns the result of smoothly interpolating the value of [code]x[/code] between [code]0[/code] and [code]1[/code], based on the where [code]x[/code] lies with respect to the edges [code]from[/code] and [code]to[/code].
The return value is [code]0[/code] if [code]x &lt;= from[/code], and [code]1[/code] if [code]x &gt;= to[/code]. If [code]x[/code] lies between [code]from[/code] and [code]to[/code], the returned value follows an S-shaped curve that maps [code]x[/code] between [code]0[/code] and [code]1[/code].
@@ -967,12 +794,9 @@
</description>
</method>
<method name="snapped">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="step" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="step" type="float" />
<description>
Snaps float value [code]x[/code] to a given [code]step[/code]. This can also be used to round a floating point number to an arbitrary number of decimals.
[codeblock]
@@ -983,10 +807,8 @@
</description>
</method>
<method name="sqrt">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Returns the square root of [code]x[/code], where [code]x[/code] is a non-negative number.
[codeblock]
@@ -996,10 +818,8 @@
</description>
</method>
<method name="step_decimals">
- <return type="int">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="int" />
+ <argument index="0" name="x" type="float" />
<description>
Returns the position of the first non-zero digit, after the decimal point. Note that the maximum return value is 10, which is a design decision in the implementation.
[codeblock]
@@ -1013,17 +833,14 @@
</description>
</method>
<method name="str" qualifiers="vararg">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Converts one or more arguments of any type to string in the best way possible.
</description>
</method>
<method name="str2var">
- <return type="Variant">
- </return>
- <argument index="0" name="string" type="String">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="string" type="String" />
<description>
Converts a formatted string that was returned by [method var2str] to the original value.
[codeblock]
@@ -1034,10 +851,8 @@
</description>
</method>
<method name="tan">
- <return type="float">
- </return>
- <argument index="0" name="angle_rad" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="angle_rad" type="float" />
<description>
Returns the tangent of angle [code]angle_rad[/code] in radians.
[codeblock]
@@ -1046,10 +861,8 @@
</description>
</method>
<method name="tanh">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Returns the hyperbolic tangent of [code]x[/code].
[codeblock]
@@ -1059,10 +872,8 @@
</description>
</method>
<method name="typeof">
- <return type="int">
- </return>
- <argument index="0" name="variable" type="Variant">
- </argument>
+ <return type="int" />
+ <argument index="0" name="variable" type="Variant" />
<description>
Returns the internal type of the given Variant object, using the [enum Variant.Type] values.
[codeblock]
@@ -1077,29 +888,23 @@
</description>
</method>
<method name="var2bytes">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="variable" type="Variant">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="variable" type="Variant" />
<description>
Encodes a [Variant] value to a byte array, without encoding objects. Deserialization can be done with [method bytes2var].
[b]Note:[/b] If you need object serialization, see [method var2bytes_with_objects].
</description>
</method>
<method name="var2bytes_with_objects">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="variable" type="Variant">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="variable" type="Variant" />
<description>
Encodes a [Variant] value to a byte array. Encoding objects is allowed (and can potentially include code). Deserialization can be done with [method bytes2var_with_objects].
</description>
</method>
<method name="var2str">
- <return type="String">
- </return>
- <argument index="0" name="variable" type="Variant">
- </argument>
+ <return type="String" />
+ <argument index="0" name="variable" type="Variant" />
<description>
Converts a Variant [code]variable[/code] to a formatted string that can later be parsed using [method str2var].
[codeblock]
@@ -1116,24 +921,18 @@
</description>
</method>
<method name="weakref">
- <return type="Variant">
- </return>
- <argument index="0" name="obj" type="Variant">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="obj" type="Variant" />
<description>
Returns a weak reference to an object, or [code]null[/code] is the argument is invalid.
A weak reference to an object is not enough to keep the object alive: when the only remaining references to a referent are weak references, garbage collection is free to destroy the referent and reuse its memory for something else. However, until the object is actually destroyed the weak reference may return the object even if there are no strong references to it.
</description>
</method>
<method name="wrapf">
- <return type="float">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
- <argument index="1" name="min" type="float">
- </argument>
- <argument index="2" name="max" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="value" type="float" />
+ <argument index="1" name="min" type="float" />
+ <argument index="2" name="max" type="float" />
<description>
Wraps float [code]value[/code] between [code]min[/code] and [code]max[/code].
Usable for creating loop-alike behavior or infinite surfaces.
@@ -1154,14 +953,10 @@
</description>
</method>
<method name="wrapi">
- <return type="int">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
- <argument index="1" name="min" type="int">
- </argument>
- <argument index="2" name="max" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="value" type="int" />
+ <argument index="1" name="min" type="int" />
+ <argument index="2" name="max" type="int" />
<description>
Wraps integer [code]value[/code] between [code]min[/code] and [code]max[/code].
Usable for creating loop-alike behavior or infinite surfaces.
@@ -1259,6 +1054,8 @@
<member name="ResourceSaver" type="ResourceSaver" setter="" getter="">
The [ResourceSaver] singleton.
</member>
+ <member name="ResourceUID" type="ResourceUID" setter="" getter="">
+ </member>
<member name="TextServerManager" type="TextServerManager" setter="" getter="">
The [TextServerManager] singleton.
</member>
diff --git a/doc/classes/AABB.xml b/doc/classes/AABB.xml
index 03607661df..4bc11e7166 100644
--- a/doc/classes/AABB.xml
+++ b/doc/classes/AABB.xml
@@ -15,243 +15,193 @@
</tutorials>
<methods>
<method name="AABB" qualifiers="constructor">
- <return type="AABB">
- </return>
+ <return type="AABB" />
<description>
Constructs a default-initialized [AABB] with default (zero) values of [member position] and [member size].
</description>
</method>
<method name="AABB" qualifiers="constructor">
- <return type="AABB">
- </return>
- <argument index="0" name="from" type="AABB">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="from" type="AABB" />
<description>
Constructs an [AABB] as a copy of the given [AABB].
</description>
</method>
<method name="AABB" qualifiers="constructor">
- <return type="AABB">
- </return>
- <argument index="0" name="position" type="Vector3">
- </argument>
- <argument index="1" name="size" type="Vector3">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="position" type="Vector3" />
+ <argument index="1" name="size" type="Vector3" />
<description>
Constructs an [AABB] from a position and size.
</description>
</method>
<method name="abs" qualifiers="const">
- <return type="AABB">
- </return>
+ <return type="AABB" />
<description>
Returns an AABB with equivalent position and size, modified so that the most-negative corner is the origin and the size is positive.
</description>
</method>
<method name="encloses" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="with" type="AABB">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="with" type="AABB" />
<description>
Returns [code]true[/code] if this [AABB] completely encloses another one.
</description>
</method>
<method name="expand" qualifiers="const">
- <return type="AABB">
- </return>
- <argument index="0" name="to_point" type="Vector3">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="to_point" type="Vector3" />
<description>
Returns this [AABB] expanded to include a given point.
</description>
</method>
<method name="get_area" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the volume of the [AABB].
</description>
</method>
<method name="get_endpoint" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="idx" type="int" />
<description>
Gets the position of the 8 endpoints of the [AABB] in space.
</description>
</method>
<method name="get_longest_axis" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the normalized longest axis of the [AABB].
</description>
</method>
<method name="get_longest_axis_index" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the index of the longest axis of the [AABB] (according to [Vector3]'s [code]AXIS_*[/code] constants).
</description>
</method>
<method name="get_longest_axis_size" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the scalar length of the longest axis of the [AABB].
</description>
</method>
<method name="get_shortest_axis" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the normalized shortest axis of the [AABB].
</description>
</method>
<method name="get_shortest_axis_index" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the index of the shortest axis of the [AABB] (according to [Vector3]::AXIS* enum).
</description>
</method>
<method name="get_shortest_axis_size" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the scalar length of the shortest axis of the [AABB].
</description>
</method>
<method name="get_support" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="dir" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="dir" type="Vector3" />
<description>
Returns the support point in a given direction. This is useful for collision detection algorithms.
</description>
</method>
<method name="grow" qualifiers="const">
- <return type="AABB">
- </return>
- <argument index="0" name="by" type="float">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="by" type="float" />
<description>
Returns a copy of the [AABB] grown a given amount of units towards all the sides.
</description>
</method>
<method name="has_no_area" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the [AABB] is flat or empty.
</description>
</method>
<method name="has_no_surface" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the [AABB] is empty.
</description>
</method>
<method name="has_point" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="point" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="point" type="Vector3" />
<description>
Returns [code]true[/code] if the [AABB] contains a point.
</description>
</method>
<method name="intersection" qualifiers="const">
- <return type="AABB">
- </return>
- <argument index="0" name="with" type="AABB">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="with" type="AABB" />
<description>
Returns the intersection between two [AABB]. An empty AABB (size 0,0,0) is returned on failure.
</description>
</method>
<method name="intersects" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="with" type="AABB">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="with" type="AABB" />
<description>
Returns [code]true[/code] if the [AABB] overlaps with another.
</description>
</method>
<method name="intersects_plane" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="plane" type="Plane">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="plane" type="Plane" />
<description>
Returns [code]true[/code] if the [AABB] is on both sides of a plane.
</description>
</method>
<method name="intersects_ray" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
- <argument index="1" name="dir" type="Vector3">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="from" type="Vector3" />
+ <argument index="1" name="dir" type="Vector3" />
<description>
</description>
</method>
<method name="intersects_segment" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
- <argument index="1" name="to" type="Vector3">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="from" type="Vector3" />
+ <argument index="1" name="to" type="Vector3" />
<description>
Returns [code]true[/code] if the [AABB] intersects the line segment between [code]from[/code] and [code]to[/code].
</description>
</method>
<method name="is_equal_approx" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="aabb" type="AABB">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="aabb" type="AABB" />
<description>
Returns [code]true[/code] if this [AABB] and [code]aabb[/code] are approximately equal, by calling [method @GlobalScope.is_equal_approx] on each component.
</description>
</method>
<method name="merge" qualifiers="const">
- <return type="AABB">
- </return>
- <argument index="0" name="with" type="AABB">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="with" type="AABB" />
<description>
Returns a larger [AABB] that contains both this [AABB] and [code]with[/code].
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="AABB">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="AABB" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="AABB">
- </return>
- <argument index="0" name="right" type="Transform3D">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="right" type="Transform3D" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="AABB">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="AABB" />
<description>
</description>
</method>
diff --git a/doc/classes/AESContext.xml b/doc/classes/AESContext.xml
index e179c97677..847d1226a2 100644
--- a/doc/classes/AESContext.xml
+++ b/doc/classes/AESContext.xml
@@ -80,38 +80,30 @@
</tutorials>
<methods>
<method name="finish">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Close this AES context so it can be started again. See [method start].
</description>
</method>
<method name="get_iv_state">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Get the current IV state for this context (IV gets updated when calling [method update]). You normally don't need this function.
Note: This function only makes sense when the context is started with [constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT].
</description>
</method>
<method name="start">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="mode" type="int" enum="AESContext.Mode">
- </argument>
- <argument index="1" name="key" type="PackedByteArray">
- </argument>
- <argument index="2" name="iv" type="PackedByteArray" default="PackedByteArray()">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="mode" type="int" enum="AESContext.Mode" />
+ <argument index="1" name="key" type="PackedByteArray" />
+ <argument index="2" name="iv" type="PackedByteArray" default="PackedByteArray()" />
<description>
Start the AES context in the given [code]mode[/code]. A [code]key[/code] of either 16 or 32 bytes must always be provided, while an [code]iv[/code] (initialization vector) of exactly 16 bytes, is only needed when [code]mode[/code] is either [constant MODE_CBC_ENCRYPT] or [constant MODE_CBC_DECRYPT].
</description>
</method>
<method name="update">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="src" type="PackedByteArray">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="src" type="PackedByteArray" />
<description>
Run the desired operation for this AES context. Will return a [PackedByteArray] containing the result of encrypting (or decrypting) the given [code]src[/code]. See [method start] for mode of operation.
Note: The size of [code]src[/code] must be a multiple of 16. Apply some padding if needed.
diff --git a/doc/classes/AStar.xml b/doc/classes/AStar.xml
index 327785a3b6..63dd250dbc 100644
--- a/doc/classes/AStar.xml
+++ b/doc/classes/AStar.xml
@@ -39,38 +39,28 @@
</tutorials>
<methods>
<method name="_compute_cost" qualifiers="virtual">
- <return type="float">
- </return>
- <argument index="0" name="from_id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from_id" type="int" />
+ <argument index="1" name="to_id" type="int" />
<description>
Called when computing the cost between two connected points.
Note that this function is hidden in the default [code]AStar[/code] class.
</description>
</method>
<method name="_estimate_cost" qualifiers="virtual">
- <return type="float">
- </return>
- <argument index="0" name="from_id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from_id" type="int" />
+ <argument index="1" name="to_id" type="int" />
<description>
Called when estimating the cost between a point and the path's ending point.
Note that this function is hidden in the default [code]AStar[/code] class.
</description>
</method>
<method name="add_point">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="position" type="Vector3">
- </argument>
- <argument index="2" name="weight_scale" type="float" default="1.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="position" type="Vector3" />
+ <argument index="2" name="weight_scale" type="float" default="1.0" />
<description>
Adds a new point at the given position with the given identifier. The [code]id[/code] must be 0 or larger, and the [code]weight_scale[/code] must be 1 or larger.
The [code]weight_scale[/code] is multiplied by the result of [method _compute_cost] when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower [code]weight_scale[/code]s to form a path.
@@ -88,34 +78,25 @@
</description>
</method>
<method name="are_points_connected" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
- <argument index="2" name="bidirectional" type="bool" default="true">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="to_id" type="int" />
+ <argument index="2" name="bidirectional" type="bool" default="true" />
<description>
Returns whether the two given points are directly connected by a segment. If [code]bidirectional[/code] is [code]false[/code], returns whether movement from [code]id[/code] to [code]to_id[/code] is possible through this segment.
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears all the points and segments.
</description>
</method>
<method name="connect_points">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
- <argument index="2" name="bidirectional" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="to_id" type="int" />
+ <argument index="2" name="bidirectional" type="bool" default="true" />
<description>
Creates a segment between the given points. If [code]bidirectional[/code] is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/code] is allowed, not the reverse direction.
[codeblocks]
@@ -135,42 +116,32 @@
</description>
</method>
<method name="disconnect_points">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
- <argument index="2" name="bidirectional" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="to_id" type="int" />
+ <argument index="2" name="bidirectional" type="bool" default="true" />
<description>
Deletes the segment between the given points. If [code]bidirectional[/code] is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/code] is prevented, and a unidirectional segment possibly remains.
</description>
</method>
<method name="get_available_point_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the next available point ID with no point associated to it.
</description>
</method>
<method name="get_closest_point" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="to_position" type="Vector3">
- </argument>
- <argument index="1" name="include_disabled" type="bool" default="false">
- </argument>
+ <return type="int" />
+ <argument index="0" name="to_position" type="Vector3" />
+ <argument index="1" name="include_disabled" type="bool" default="false" />
<description>
Returns the ID of the closest point to [code]to_position[/code], optionally taking disabled points into account. Returns [code]-1[/code] if there are no points in the points pool.
[b]Note:[/b] If several points are the closest to [code]to_position[/code], the one with the smallest ID will be returned, ensuring a deterministic result.
</description>
</method>
<method name="get_closest_position_in_segment" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="to_position" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="to_position" type="Vector3" />
<description>
Returns the closest position to [code]to_position[/code] that resides inside a segment between two connected points.
[codeblocks]
@@ -193,12 +164,9 @@
</description>
</method>
<method name="get_id_path">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="from_id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="from_id" type="int" />
+ <argument index="1" name="to_id" type="int" />
<description>
Returns an array with the IDs of the points that form the path found by AStar between the given points. The array is ordered from the starting point to the ending point of the path.
[codeblocks]
@@ -233,17 +201,14 @@
</description>
</method>
<method name="get_point_capacity" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the capacity of the structure backing the points, useful in conjunction with [code]reserve_space[/code].
</description>
</method>
<method name="get_point_connections">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="id" type="int" />
<description>
Returns an array with the IDs of the points that form the connection with the given point.
[codeblocks]
@@ -274,114 +239,88 @@
</description>
</method>
<method name="get_point_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of points currently in the points pool.
</description>
</method>
<method name="get_point_path">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="from_id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="from_id" type="int" />
+ <argument index="1" name="to_id" type="int" />
<description>
Returns an array with the points that are in the path found by AStar between the given points. The array is ordered from the starting point to the ending point of the path.
[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it will return an empty [PackedVector3Array] and will print an error message.
</description>
</method>
<method name="get_point_position" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the position of the point associated with the given [code]id[/code].
</description>
</method>
<method name="get_point_weight_scale" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the weight scale of the point associated with the given [code]id[/code].
</description>
</method>
<method name="get_points">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array of all points.
</description>
</method>
<method name="has_point" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
Returns whether a point associated with the given [code]id[/code] exists.
</description>
</method>
<method name="is_point_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
Returns whether a point is disabled or not for pathfinding. By default, all points are enabled.
</description>
</method>
<method name="remove_point">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
<description>
Removes the point associated with the given [code]id[/code] from the points pool.
</description>
</method>
<method name="reserve_space">
- <return type="void">
- </return>
- <argument index="0" name="num_nodes" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="num_nodes" type="int" />
<description>
Reserves space internally for [code]num_nodes[/code] points, useful if you're adding a known large number of points at once, for a grid for instance. New capacity must be greater or equals to old capacity.
</description>
</method>
<method name="set_point_disabled">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="disabled" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="disabled" type="bool" default="true" />
<description>
Disables or enables the specified point for pathfinding. Useful for making a temporary obstacle.
</description>
</method>
<method name="set_point_position">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="position" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="position" type="Vector3" />
<description>
Sets the [code]position[/code] for the point with the given [code]id[/code].
</description>
</method>
<method name="set_point_weight_scale">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="weight_scale" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="weight_scale" type="float" />
<description>
Sets the [code]weight_scale[/code] for the point with the given [code]id[/code]. The [code]weight_scale[/code] is multiplied by the result of [method _compute_cost] when determining the overall cost of traveling across a segment from a neighboring point to this point.
</description>
diff --git a/doc/classes/AStar2D.xml b/doc/classes/AStar2D.xml
index 9edc300169..31d695b051 100644
--- a/doc/classes/AStar2D.xml
+++ b/doc/classes/AStar2D.xml
@@ -10,38 +10,28 @@
</tutorials>
<methods>
<method name="_compute_cost" qualifiers="virtual">
- <return type="float">
- </return>
- <argument index="0" name="from_id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from_id" type="int" />
+ <argument index="1" name="to_id" type="int" />
<description>
Called when computing the cost between two connected points.
Note that this function is hidden in the default [code]AStar2D[/code] class.
</description>
</method>
<method name="_estimate_cost" qualifiers="virtual">
- <return type="float">
- </return>
- <argument index="0" name="from_id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from_id" type="int" />
+ <argument index="1" name="to_id" type="int" />
<description>
Called when estimating the cost between a point and the path's ending point.
Note that this function is hidden in the default [code]AStar2D[/code] class.
</description>
</method>
<method name="add_point">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
- <argument index="2" name="weight_scale" type="float" default="1.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="position" type="Vector2" />
+ <argument index="2" name="weight_scale" type="float" default="1.0" />
<description>
Adds a new point at the given position with the given identifier. The [code]id[/code] must be 0 or larger, and the [code]weight_scale[/code] must be 1 or larger.
The [code]weight_scale[/code] is multiplied by the result of [method _compute_cost] when determining the overall cost of traveling across a segment from a neighboring point to this point. Thus, all else being equal, the algorithm prefers points with lower [code]weight_scale[/code]s to form a path.
@@ -59,32 +49,24 @@
</description>
</method>
<method name="are_points_connected" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="to_id" type="int" />
<description>
Returns whether there is a connection/segment between the given points.
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears all the points and segments.
</description>
</method>
<method name="connect_points">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
- <argument index="2" name="bidirectional" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="to_id" type="int" />
+ <argument index="2" name="bidirectional" type="bool" default="true" />
<description>
Creates a segment between the given points. If [code]bidirectional[/code] is [code]false[/code], only movement from [code]id[/code] to [code]to_id[/code] is allowed, not the reverse direction.
[codeblocks]
@@ -104,40 +86,31 @@
</description>
</method>
<method name="disconnect_points">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="to_id" type="int" />
<description>
Deletes the segment between the given points.
</description>
</method>
<method name="get_available_point_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the next available point ID with no point associated to it.
</description>
</method>
<method name="get_closest_point" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="to_position" type="Vector2">
- </argument>
- <argument index="1" name="include_disabled" type="bool" default="false">
- </argument>
+ <return type="int" />
+ <argument index="0" name="to_position" type="Vector2" />
+ <argument index="1" name="include_disabled" type="bool" default="false" />
<description>
Returns the ID of the closest point to [code]to_position[/code], optionally taking disabled points into account. Returns [code]-1[/code] if there are no points in the points pool.
[b]Note:[/b] If several points are the closest to [code]to_position[/code], the one with the smallest ID will be returned, ensuring a deterministic result.
</description>
</method>
<method name="get_closest_position_in_segment" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="to_position" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="to_position" type="Vector2" />
<description>
Returns the closest position to [code]to_position[/code] that resides inside a segment between two connected points.
[codeblocks]
@@ -160,12 +133,9 @@
</description>
</method>
<method name="get_id_path">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="from_id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="from_id" type="int" />
+ <argument index="1" name="to_id" type="int" />
<description>
Returns an array with the IDs of the points that form the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
[codeblocks]
@@ -201,17 +171,14 @@
</description>
</method>
<method name="get_point_capacity" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the capacity of the structure backing the points, useful in conjunction with [code]reserve_space[/code].
</description>
</method>
<method name="get_point_connections">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="id" type="int" />
<description>
Returns an array with the IDs of the points that form the connection with the given point.
[codeblocks]
@@ -243,114 +210,88 @@
</description>
</method>
<method name="get_point_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of points currently in the points pool.
</description>
</method>
<method name="get_point_path">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="from_id" type="int">
- </argument>
- <argument index="1" name="to_id" type="int">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="from_id" type="int" />
+ <argument index="1" name="to_id" type="int" />
<description>
Returns an array with the points that are in the path found by AStar2D between the given points. The array is ordered from the starting point to the ending point of the path.
[b]Note:[/b] This method is not thread-safe. If called from a [Thread], it will return an empty [PackedVector2Array] and will print an error message.
</description>
</method>
<method name="get_point_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the position of the point associated with the given [code]id[/code].
</description>
</method>
<method name="get_point_weight_scale" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the weight scale of the point associated with the given [code]id[/code].
</description>
</method>
<method name="get_points">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array of all points.
</description>
</method>
<method name="has_point" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
Returns whether a point associated with the given [code]id[/code] exists.
</description>
</method>
<method name="is_point_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
Returns whether a point is disabled or not for pathfinding. By default, all points are enabled.
</description>
</method>
<method name="remove_point">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
<description>
Removes the point associated with the given [code]id[/code] from the points pool.
</description>
</method>
<method name="reserve_space">
- <return type="void">
- </return>
- <argument index="0" name="num_nodes" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="num_nodes" type="int" />
<description>
Reserves space internally for [code]num_nodes[/code] points, useful if you're adding a known large number of points at once, for a grid for instance. New capacity must be greater or equals to old capacity.
</description>
</method>
<method name="set_point_disabled">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="disabled" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="disabled" type="bool" default="true" />
<description>
Disables or enables the specified point for pathfinding. Useful for making a temporary obstacle.
</description>
</method>
<method name="set_point_position">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="position" type="Vector2" />
<description>
Sets the [code]position[/code] for the point with the given [code]id[/code].
</description>
</method>
<method name="set_point_weight_scale">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="weight_scale" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="weight_scale" type="float" />
<description>
Sets the [code]weight_scale[/code] for the point with the given [code]id[/code]. The [code]weight_scale[/code] is multiplied by the result of [method _compute_cost] when determining the overall cost of traveling across a segment from a neighboring point to this point.
</description>
diff --git a/doc/classes/AcceptDialog.xml b/doc/classes/AcceptDialog.xml
index fd1e2ba104..077c062d6b 100644
--- a/doc/classes/AcceptDialog.xml
+++ b/doc/classes/AcceptDialog.xml
@@ -10,14 +10,10 @@
</tutorials>
<methods>
<method name="add_button">
- <return type="Button">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
- <argument index="1" name="right" type="bool" default="false">
- </argument>
- <argument index="2" name="action" type="String" default="&quot;&quot;">
- </argument>
+ <return type="Button" />
+ <argument index="0" name="text" type="String" />
+ <argument index="1" name="right" type="bool" default="false" />
+ <argument index="2" name="action" type="String" default="&quot;&quot;" />
<description>
Adds a button with label [code]text[/code] and a custom [code]action[/code] to the dialog and returns the created button. [code]action[/code] will be passed to the [signal custom_action] signal when pressed.
If [code]true[/code], [code]right[/code] will place the button to the right of any sibling buttons.
@@ -25,43 +21,35 @@
</description>
</method>
<method name="add_cancel_button">
- <return type="Button">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="Button" />
+ <argument index="0" name="name" type="String" />
<description>
Adds a button with label [code]name[/code] and a cancel action to the dialog and returns the created button.
You can use [method remove_button] method to remove a button created with this method from the dialog.
</description>
</method>
<method name="get_label">
- <return type="Label">
- </return>
+ <return type="Label" />
<description>
Returns the label used for built-in text.
</description>
</method>
<method name="get_ok_button">
- <return type="Button">
- </return>
+ <return type="Button" />
<description>
Returns the OK [Button] instance.
</description>
</method>
<method name="register_text_enter">
- <return type="void">
- </return>
- <argument index="0" name="line_edit" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line_edit" type="Control" />
<description>
Registers a [LineEdit] in the dialog. When the enter key is pressed, the dialog will be accepted.
</description>
</method>
<method name="remove_button">
- <return type="void">
- </return>
- <argument index="0" name="button" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="button" type="Control" />
<description>
Removes the [code]button[/code] from the dialog. Does NOT free the [code]button[/code]. The [code]button[/code] must be a [Button] added with [method add_button] or [method add_cancel_button] method. After removal, pressing the [code]button[/code] will no longer emit this dialog's [signal custom_action] or [signal cancelled] signals.
</description>
@@ -96,8 +84,7 @@
</description>
</signal>
<signal name="custom_action">
- <argument index="0" name="action" type="StringName">
- </argument>
+ <argument index="0" name="action" type="StringName" />
<description>
Emitted when a custom button is pressed. See [method add_button].
</description>
@@ -105,4 +92,9 @@
</signals>
<constants>
</constants>
+ <theme_items>
+ <theme_item name="panel" data_type="style" type="StyleBox">
+ Panel that fills up the background of the window.
+ </theme_item>
+ </theme_items>
</class>
diff --git a/doc/classes/AnimatedSprite2D.xml b/doc/classes/AnimatedSprite2D.xml
index 7662e8368b..14e19b4c9a 100644
--- a/doc/classes/AnimatedSprite2D.xml
+++ b/doc/classes/AnimatedSprite2D.xml
@@ -13,26 +13,21 @@
</tutorials>
<methods>
<method name="is_playing" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if an animation is currently being played.
</description>
</method>
<method name="play">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="StringName" default="&amp;&quot;&quot;">
- </argument>
- <argument index="1" name="backwards" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim" type="StringName" default="&amp;&quot;&quot;" />
+ <argument index="1" name="backwards" type="bool" default="false" />
<description>
Plays the animation named [code]anim[/code]. If no [code]anim[/code] is provided, the current animation is played. If [code]backwards[/code] is [code]true[/code], the animation will be played in reverse.
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the current animation (does not reset the frame counter).
</description>
diff --git a/doc/classes/AnimatedSprite3D.xml b/doc/classes/AnimatedSprite3D.xml
index 39ab317b79..6b3d426cef 100644
--- a/doc/classes/AnimatedSprite3D.xml
+++ b/doc/classes/AnimatedSprite3D.xml
@@ -11,24 +11,20 @@
</tutorials>
<methods>
<method name="is_playing" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if an animation is currently being played.
</description>
</method>
<method name="play">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="StringName" default="&amp;&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim" type="StringName" default="&amp;&quot;&quot;" />
<description>
Plays the animation named [code]anim[/code]. If no [code]anim[/code] is provided, the current animation is played.
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the current animation (does not reset the frame counter).
</description>
diff --git a/doc/classes/AnimatedTexture.xml b/doc/classes/AnimatedTexture.xml
index 5774842144..808b8bf053 100644
--- a/doc/classes/AnimatedTexture.xml
+++ b/doc/classes/AnimatedTexture.xml
@@ -13,30 +13,23 @@
</tutorials>
<methods>
<method name="get_frame_delay" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="frame" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="frame" type="int" />
<description>
Returns the given frame's delay value.
</description>
</method>
<method name="get_frame_texture" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="frame" type="int">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="frame" type="int" />
<description>
Returns the given frame's [Texture2D].
</description>
</method>
<method name="set_frame_delay">
- <return type="void">
- </return>
- <argument index="0" name="frame" type="int">
- </argument>
- <argument index="1" name="delay" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="frame" type="int" />
+ <argument index="1" name="delay" type="float" />
<description>
Sets an additional delay (in seconds) between this frame and the next one, that will be added to the time interval defined by [member fps]. By default, frames have no delay defined. If a delay value is defined, the final time interval between this frame and the next will be [code]1.0 / fps + delay[/code].
For example, for an animation with 3 frames, 2 FPS and a frame delay on the second frame of 1.2, the resulting playback will be:
@@ -49,12 +42,9 @@
</description>
</method>
<method name="set_frame_texture">
- <return type="void">
- </return>
- <argument index="0" name="frame" type="int">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="frame" type="int" />
+ <argument index="1" name="texture" type="Texture2D" />
<description>
Assigns a [Texture2D] to the given frame. Frame IDs start at 0, so the first frame has ID 0, and the last frame of the animation has ID [member frames] - 1.
You can define any number of textures up to [constant MAX_FRAMES], but keep in mind that only frames from 0 to [member frames] - 1 will be part of the animation.
diff --git a/doc/classes/Animation.xml b/doc/classes/Animation.xml
index 894e784397..38e02745d4 100644
--- a/doc/classes/Animation.xml
+++ b/doc/classes/Animation.xml
@@ -32,673 +32,487 @@
</tutorials>
<methods>
<method name="add_track">
- <return type="int">
- </return>
- <argument index="0" name="type" type="int" enum="Animation.TrackType">
- </argument>
- <argument index="1" name="at_position" type="int" default="-1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="type" type="int" enum="Animation.TrackType" />
+ <argument index="1" name="at_position" type="int" default="-1" />
<description>
Adds a track to the Animation.
</description>
</method>
<method name="animation_track_get_key_animation" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the animation name at the key identified by [code]key_idx[/code]. The [code]track_idx[/code] must be the index of an Animation Track.
</description>
</method>
<method name="animation_track_insert_key">
- <return type="int">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
- <argument index="2" name="animation" type="StringName">
- </argument>
+ <return type="int" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="animation" type="StringName" />
<description>
Inserts a key with value [code]animation[/code] at the given [code]time[/code] (in seconds). The [code]track_idx[/code] must be the index of an Animation Track.
</description>
</method>
<method name="animation_track_set_key_animation">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
- <argument index="2" name="animation" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
+ <argument index="2" name="animation" type="StringName" />
<description>
Sets the key identified by [code]key_idx[/code] to value [code]animation[/code]. The [code]track_idx[/code] must be the index of an Animation Track.
</description>
</method>
<method name="audio_track_get_key_end_offset" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the end offset of the key identified by [code]key_idx[/code]. The [code]track_idx[/code] must be the index of an Audio Track.
End offset is the number of seconds cut off at the ending of the audio stream.
</description>
</method>
<method name="audio_track_get_key_start_offset" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the start offset of the key identified by [code]key_idx[/code]. The [code]track_idx[/code] must be the index of an Audio Track.
Start offset is the number of seconds cut off at the beginning of the audio stream.
</description>
</method>
<method name="audio_track_get_key_stream" qualifiers="const">
- <return type="Resource">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="Resource" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the audio stream of the key identified by [code]key_idx[/code]. The [code]track_idx[/code] must be the index of an Audio Track.
</description>
</method>
<method name="audio_track_insert_key">
- <return type="int">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
- <argument index="2" name="stream" type="Resource">
- </argument>
- <argument index="3" name="start_offset" type="float" default="0">
- </argument>
- <argument index="4" name="end_offset" type="float" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="stream" type="Resource" />
+ <argument index="3" name="start_offset" type="float" default="0" />
+ <argument index="4" name="end_offset" type="float" default="0" />
<description>
Inserts an Audio Track key at the given [code]time[/code] in seconds. The [code]track_idx[/code] must be the index of an Audio Track.
[code]stream[/code] is the [AudioStream] resource to play. [code]start_offset[/code] is the number of seconds cut off at the beginning of the audio stream, while [code]end_offset[/code] is at the ending.
</description>
</method>
<method name="audio_track_set_key_end_offset">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
- <argument index="2" name="offset" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
+ <argument index="2" name="offset" type="float" />
<description>
Sets the end offset of the key identified by [code]key_idx[/code] to value [code]offset[/code]. The [code]track_idx[/code] must be the index of an Audio Track.
</description>
</method>
<method name="audio_track_set_key_start_offset">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
- <argument index="2" name="offset" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
+ <argument index="2" name="offset" type="float" />
<description>
Sets the start offset of the key identified by [code]key_idx[/code] to value [code]offset[/code]. The [code]track_idx[/code] must be the index of an Audio Track.
</description>
</method>
<method name="audio_track_set_key_stream">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
- <argument index="2" name="stream" type="Resource">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
+ <argument index="2" name="stream" type="Resource" />
<description>
Sets the stream of the key identified by [code]key_idx[/code] to value [code]stream[/code]. The [code]track_idx[/code] must be the index of an Audio Track.
</description>
</method>
<method name="bezier_track_get_key_in_handle" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the in handle of the key identified by [code]key_idx[/code]. The [code]track_idx[/code] must be the index of a Bezier Track.
</description>
</method>
<method name="bezier_track_get_key_out_handle" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the out handle of the key identified by [code]key_idx[/code]. The [code]track_idx[/code] must be the index of a Bezier Track.
</description>
</method>
<method name="bezier_track_get_key_value" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the value of the key identified by [code]key_idx[/code]. The [code]track_idx[/code] must be the index of a Bezier Track.
</description>
</method>
<method name="bezier_track_insert_key">
- <return type="int">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
- <argument index="3" name="in_handle" type="Vector2" default="Vector2(0, 0)">
- </argument>
- <argument index="4" name="out_handle" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="int" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="value" type="float" />
+ <argument index="3" name="in_handle" type="Vector2" default="Vector2(0, 0)" />
+ <argument index="4" name="out_handle" type="Vector2" default="Vector2(0, 0)" />
<description>
Inserts a Bezier Track key at the given [code]time[/code] in seconds. The [code]track_idx[/code] must be the index of a Bezier Track.
[code]in_handle[/code] is the left-side weight of the added Bezier curve point, [code]out_handle[/code] is the right-side one, while [code]value[/code] is the actual value at this point.
</description>
</method>
<method name="bezier_track_interpolate" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
<description>
Returns the interpolated value at the given [code]time[/code] (in seconds). The [code]track_idx[/code] must be the index of a Bezier Track.
</description>
</method>
<method name="bezier_track_set_key_in_handle">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
- <argument index="2" name="in_handle" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
+ <argument index="2" name="in_handle" type="Vector2" />
<description>
Sets the in handle of the key identified by [code]key_idx[/code] to value [code]in_handle[/code]. The [code]track_idx[/code] must be the index of a Bezier Track.
</description>
</method>
<method name="bezier_track_set_key_out_handle">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
- <argument index="2" name="out_handle" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
+ <argument index="2" name="out_handle" type="Vector2" />
<description>
Sets the out handle of the key identified by [code]key_idx[/code] to value [code]out_handle[/code]. The [code]track_idx[/code] must be the index of a Bezier Track.
</description>
</method>
<method name="bezier_track_set_key_value">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
+ <argument index="2" name="value" type="float" />
<description>
Sets the value of the key identified by [code]key_idx[/code] to the given value. The [code]track_idx[/code] must be the index of a Bezier Track.
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clear the animation (clear all tracks and reset all).
</description>
</method>
<method name="copy_track">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="to_animation" type="Animation">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="to_animation" type="Animation" />
<description>
Adds a new track that is a copy of the given track from [code]to_animation[/code].
</description>
</method>
<method name="find_track" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="path" type="NodePath">
- </argument>
+ <return type="int" />
+ <argument index="0" name="path" type="NodePath" />
<description>
Returns the index of the specified track. If the track is not found, return -1.
</description>
</method>
<method name="get_track_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of tracks in the animation.
</description>
</method>
<method name="method_track_get_key_indices" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time_sec" type="float">
- </argument>
- <argument index="2" name="delta" type="float">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time_sec" type="float" />
+ <argument index="2" name="delta" type="float" />
<description>
Returns all the key indices of a method track, given a position and delta time.
</description>
</method>
<method name="method_track_get_name" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the method name of a method track.
</description>
</method>
<method name="method_track_get_params" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the arguments values to be called on a method track for a given key in a given track.
</description>
</method>
<method name="remove_track">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
<description>
Removes a track by specifying the track index.
</description>
</method>
<method name="track_find_key" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
- <argument index="2" name="exact" type="bool" default="false">
- </argument>
+ <return type="int" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="exact" type="bool" default="false" />
<description>
Finds the key index by time in a given track. Optionally, only find it if the exact time is given.
</description>
</method>
<method name="track_get_interpolation_loop_wrap" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="track_idx" type="int" />
<description>
Returns [code]true[/code] if the track at [code]idx[/code] wraps the interpolation loop. New tracks wrap the interpolation loop by default.
</description>
</method>
<method name="track_get_interpolation_type" qualifiers="const">
- <return type="int" enum="Animation.InterpolationType">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
+ <return type="int" enum="Animation.InterpolationType" />
+ <argument index="0" name="track_idx" type="int" />
<description>
Returns the interpolation type of a given track.
</description>
</method>
<method name="track_get_key_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="track_idx" type="int" />
<description>
Returns the amount of keys in a given track.
</description>
</method>
<method name="track_get_key_time" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the time at which the key is located.
</description>
</method>
<method name="track_get_key_transition" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the transition curve (easing) for a specific key (see the built-in math function [method @GlobalScope.ease]).
</description>
</method>
<method name="track_get_key_value" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Returns the value of a given key in a given track.
</description>
</method>
<method name="track_get_path" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="track_idx" type="int" />
<description>
Gets the path of a track. For more information on the path format, see [method track_set_path].
</description>
</method>
<method name="track_get_type" qualifiers="const">
- <return type="int" enum="Animation.TrackType">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
+ <return type="int" enum="Animation.TrackType" />
+ <argument index="0" name="track_idx" type="int" />
<description>
Gets the type of a track.
</description>
</method>
<method name="track_insert_key">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
- <argument index="2" name="key" type="Variant">
- </argument>
- <argument index="3" name="transition" type="float" default="1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="key" type="Variant" />
+ <argument index="3" name="transition" type="float" default="1" />
<description>
Insert a generic key in a given track.
</description>
</method>
<method name="track_is_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="track_idx" type="int" />
<description>
Returns [code]true[/code] if the track at index [code]idx[/code] is enabled.
</description>
</method>
<method name="track_is_imported" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="track_idx" type="int" />
<description>
Returns [code]true[/code] if the given track is imported. Else, return [code]false[/code].
</description>
</method>
<method name="track_move_down">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
<description>
Moves a track down.
</description>
</method>
<method name="track_move_to">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="to_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="to_idx" type="int" />
<description>
Changes the index position of track [code]idx[/code] to the one defined in [code]to_idx[/code].
</description>
</method>
<method name="track_move_up">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
<description>
Moves a track up.
</description>
</method>
<method name="track_remove_key">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
<description>
Removes a key by index in a given track.
</description>
</method>
<method name="track_remove_key_at_time">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
<description>
Removes a key at [code]time[/code] in a given track.
</description>
</method>
<method name="track_set_enabled">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="enabled" type="bool" />
<description>
Enables/disables the given track. Tracks are enabled by default.
</description>
</method>
<method name="track_set_imported">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="imported" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="imported" type="bool" />
<description>
Sets the given track as imported or not.
</description>
</method>
<method name="track_set_interpolation_loop_wrap">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="interpolation" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="interpolation" type="bool" />
<description>
If [code]true[/code], the track at [code]idx[/code] wraps the interpolation loop.
</description>
</method>
<method name="track_set_interpolation_type">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="interpolation" type="int" enum="Animation.InterpolationType">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="interpolation" type="int" enum="Animation.InterpolationType" />
<description>
Sets the interpolation type of a given track.
</description>
</method>
<method name="track_set_key_time">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
- <argument index="2" name="time" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
+ <argument index="2" name="time" type="float" />
<description>
Sets the time of an existing key.
</description>
</method>
<method name="track_set_key_transition">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key_idx" type="int">
- </argument>
- <argument index="2" name="transition" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key_idx" type="int" />
+ <argument index="2" name="transition" type="float" />
<description>
Sets the transition curve (easing) for a specific key (see the built-in math function [method @GlobalScope.ease]).
</description>
</method>
<method name="track_set_key_value">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="key" type="int">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="key" type="int" />
+ <argument index="2" name="value" type="Variant" />
<description>
Sets the value of an existing key.
</description>
</method>
<method name="track_set_path">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="path" type="NodePath">
- </argument>
- <description>
- Sets the path of a track. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. Tracks that control properties or bones must append their name after the path, separated by [code]":"[/code].
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="path" type="NodePath" />
+ <description>
+ Sets the path of a track. Paths must be valid scene-tree paths to a node and must be specified starting from the parent node of the node that will reproduce the animation. Tracks that control properties or bones must append their name after the path, separated by [code]":"[/code].
For example, [code]"character/skeleton:ankle"[/code] or [code]"character/mesh:transform/local"[/code].
</description>
</method>
<method name="track_swap">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="with_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="with_idx" type="int" />
<description>
Swaps the track [code]idx[/code]'s index position with the track [code]with_idx[/code].
</description>
</method>
<method name="transform_track_insert_key">
- <return type="int">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
- <argument index="2" name="location" type="Vector3">
- </argument>
- <argument index="3" name="rotation" type="Quaternion">
- </argument>
- <argument index="4" name="scale" type="Vector3">
- </argument>
+ <return type="int" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="location" type="Vector3" />
+ <argument index="3" name="rotation" type="Quaternion" />
+ <argument index="4" name="scale" type="Vector3" />
<description>
Insert a transform key for a transform track.
</description>
</method>
<method name="transform_track_interpolate" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time_sec" type="float">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time_sec" type="float" />
<description>
Returns the interpolated value of a transform track at a given time (in seconds). An array consisting of 3 elements: position ([Vector3]), rotation ([Quaternion]) and scale ([Vector3]).
</description>
</method>
<method name="value_track_get_key_indices" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time_sec" type="float">
- </argument>
- <argument index="2" name="delta" type="float">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time_sec" type="float" />
+ <argument index="2" name="delta" type="float" />
<description>
Returns all the key indices of a value track, given a position and delta time.
</description>
</method>
<method name="value_track_get_update_mode" qualifiers="const">
- <return type="int" enum="Animation.UpdateMode">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
+ <return type="int" enum="Animation.UpdateMode" />
+ <argument index="0" name="track_idx" type="int" />
<description>
Returns the update mode of a value track.
</description>
</method>
<method name="value_track_interpolate" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="time_sec" type="float">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="time_sec" type="float" />
<description>
Returns the interpolated value at the given time (in seconds). The [code]track_idx[/code] must be the index of a value track.
</description>
</method>
<method name="value_track_set_update_mode">
- <return type="void">
- </return>
- <argument index="0" name="track_idx" type="int">
- </argument>
- <argument index="1" name="mode" type="int" enum="Animation.UpdateMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="track_idx" type="int" />
+ <argument index="1" name="mode" type="int" enum="Animation.UpdateMode" />
<description>
Sets the update mode (see [enum UpdateMode]) of a value track.
</description>
diff --git a/doc/classes/AnimationNode.xml b/doc/classes/AnimationNode.xml
index fddd8989ab..a9a08efcf1 100644
--- a/doc/classes/AnimationNode.xml
+++ b/doc/classes/AnimationNode.xml
@@ -12,58 +12,47 @@
</tutorials>
<methods>
<method name="_get_caption" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Gets the text caption for this node (used by some editors).
</description>
</method>
<method name="_get_child_by_name" qualifiers="virtual">
- <return type="Object">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="Object" />
+ <argument index="0" name="name" type="String" />
<description>
Gets a child node by index (used by editors inheriting from [AnimationRootNode]).
</description>
</method>
<method name="_get_child_nodes" qualifiers="virtual">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Gets all children nodes in order as a [code]name: node[/code] dictionary. Only useful when inheriting [AnimationRootNode].
</description>
</method>
<method name="_get_parameter_default_value" qualifiers="virtual">
- <return type="Variant">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="name" type="StringName" />
<description>
Gets the default value of a parameter. Parameters are custom local memory used for your nodes, given a resource can be reused in multiple trees.
</description>
</method>
<method name="_get_parameter_list" qualifiers="virtual">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Gets the property information for parameter. Parameters are custom local memory used for your nodes, given a resource can be reused in multiple trees. Format is similar to [method Object.get_property_list].
</description>
</method>
<method name="_has_filter" qualifiers="virtual">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] whether you want the blend tree editor to display filter editing on this node.
</description>
</method>
<method name="_process" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="time" type="float">
- </argument>
- <argument index="1" name="seek" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="time" type="float" />
+ <argument index="1" name="seek" type="bool" />
<description>
User-defined callback called when a custom node is processed. The [code]time[/code] parameter is a relative delta, unless [code]seek[/code] is [code]true[/code], in which case it is absolute.
Here, call the [method blend_input], [method blend_node] or [method blend_animation] functions. You can also use [method get_parameter] and [method set_parameter] to modify local memory.
@@ -71,132 +60,94 @@
</description>
</method>
<method name="add_input">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
<description>
Adds an input to the node. This is only useful for nodes created for use in an [AnimationNodeBlendTree].
</description>
</method>
<method name="blend_animation">
- <return type="void">
- </return>
- <argument index="0" name="animation" type="StringName">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
- <argument index="2" name="delta" type="float">
- </argument>
- <argument index="3" name="seeked" type="bool">
- </argument>
- <argument index="4" name="blend" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="animation" type="StringName" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="delta" type="float" />
+ <argument index="3" name="seeked" type="bool" />
+ <argument index="4" name="blend" type="float" />
<description>
Blend an animation by [code]blend[/code] amount (name must be valid in the linked [AnimationPlayer]). A [code]time[/code] and [code]delta[/code] may be passed, as well as whether [code]seek[/code] happened.
</description>
</method>
<method name="blend_input">
- <return type="float">
- </return>
- <argument index="0" name="input_index" type="int">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
- <argument index="2" name="seek" type="bool">
- </argument>
- <argument index="3" name="blend" type="float">
- </argument>
- <argument index="4" name="filter" type="int" enum="AnimationNode.FilterAction" default="0">
- </argument>
- <argument index="5" name="optimize" type="bool" default="true">
- </argument>
+ <return type="float" />
+ <argument index="0" name="input_index" type="int" />
+ <argument index="1" name="time" type="float" />
+ <argument index="2" name="seek" type="bool" />
+ <argument index="3" name="blend" type="float" />
+ <argument index="4" name="filter" type="int" enum="AnimationNode.FilterAction" default="0" />
+ <argument index="5" name="optimize" type="bool" default="true" />
<description>
Blend an input. This is only useful for nodes created for an [AnimationNodeBlendTree]. The [code]time[/code] parameter is a relative delta, unless [code]seek[/code] is [code]true[/code], in which case it is absolute. A filter mode may be optionally passed (see [enum FilterAction] for options).
</description>
</method>
<method name="blend_node">
- <return type="float">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="node" type="AnimationNode">
- </argument>
- <argument index="2" name="time" type="float">
- </argument>
- <argument index="3" name="seek" type="bool">
- </argument>
- <argument index="4" name="blend" type="float">
- </argument>
- <argument index="5" name="filter" type="int" enum="AnimationNode.FilterAction" default="0">
- </argument>
- <argument index="6" name="optimize" type="bool" default="true">
- </argument>
+ <return type="float" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="node" type="AnimationNode" />
+ <argument index="2" name="time" type="float" />
+ <argument index="3" name="seek" type="bool" />
+ <argument index="4" name="blend" type="float" />
+ <argument index="5" name="filter" type="int" enum="AnimationNode.FilterAction" default="0" />
+ <argument index="6" name="optimize" type="bool" default="true" />
<description>
Blend another animation node (in case this node contains children animation nodes). This function is only useful if you inherit from [AnimationRootNode] instead, else editors will not display your node for addition.
</description>
</method>
<method name="get_input_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Amount of inputs in this node, only useful for nodes that go into [AnimationNodeBlendTree].
</description>
</method>
<method name="get_input_name">
- <return type="String">
- </return>
- <argument index="0" name="input" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="input" type="int" />
<description>
Gets the name of an input by index.
</description>
</method>
<method name="get_parameter" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="name" type="StringName" />
<description>
Gets the value of a parameter. Parameters are custom local memory used for your nodes, given a resource can be reused in multiple trees.
</description>
</method>
<method name="is_path_filtered" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="path" type="NodePath">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="path" type="NodePath" />
<description>
Returns [code]true[/code] whether a given path is filtered.
</description>
</method>
<method name="remove_input">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an input, call this only when inactive.
</description>
</method>
<method name="set_filter_path">
- <return type="void">
- </return>
- <argument index="0" name="path" type="NodePath">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="NodePath" />
+ <argument index="1" name="enable" type="bool" />
<description>
Adds or removes a path for the filter.
</description>
</method>
<method name="set_parameter">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
Sets a custom parameter. These are used as local storage, because resources can be reused across the tree or scenes.
</description>
diff --git a/doc/classes/AnimationNodeBlendSpace1D.xml b/doc/classes/AnimationNodeBlendSpace1D.xml
index 263b59910b..c47d84fe37 100644
--- a/doc/classes/AnimationNodeBlendSpace1D.xml
+++ b/doc/classes/AnimationNodeBlendSpace1D.xml
@@ -14,70 +14,53 @@
</tutorials>
<methods>
<method name="add_blend_point">
- <return type="void">
- </return>
- <argument index="0" name="node" type="AnimationRootNode">
- </argument>
- <argument index="1" name="pos" type="float">
- </argument>
- <argument index="2" name="at_index" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="AnimationRootNode" />
+ <argument index="1" name="pos" type="float" />
+ <argument index="2" name="at_index" type="int" default="-1" />
<description>
Adds a new point that represents a [code]node[/code] on the virtual axis at a given position set by [code]pos[/code]. You can insert it at a specific index using the [code]at_index[/code] argument. If you use the default value for [code]at_index[/code], the point is inserted at the end of the blend points array.
</description>
</method>
<method name="get_blend_point_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of points on the blend axis.
</description>
</method>
<method name="get_blend_point_node" qualifiers="const">
- <return type="AnimationRootNode">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
+ <return type="AnimationRootNode" />
+ <argument index="0" name="point" type="int" />
<description>
Returns the [AnimationNode] referenced by the point at index [code]point[/code].
</description>
</method>
<method name="get_blend_point_position" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="point" type="int" />
<description>
Returns the position of the point at index [code]point[/code].
</description>
</method>
<method name="remove_blend_point">
- <return type="void">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point" type="int" />
<description>
Removes the point at index [code]point[/code] from the blend axis.
</description>
</method>
<method name="set_blend_point_node">
- <return type="void">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
- <argument index="1" name="node" type="AnimationRootNode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point" type="int" />
+ <argument index="1" name="node" type="AnimationRootNode" />
<description>
Changes the [AnimationNode] referenced by the point at index [code]point[/code].
</description>
</method>
<method name="set_blend_point_position">
- <return type="void">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
- <argument index="1" name="pos" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point" type="int" />
+ <argument index="1" name="pos" type="float" />
<description>
Updates the position of the point at index [code]point[/code] on the blend axis.
</description>
diff --git a/doc/classes/AnimationNodeBlendSpace2D.xml b/doc/classes/AnimationNodeBlendSpace2D.xml
index 1a6d2bd755..8d51f9aecc 100644
--- a/doc/classes/AnimationNodeBlendSpace2D.xml
+++ b/doc/classes/AnimationNodeBlendSpace2D.xml
@@ -14,112 +14,84 @@
</tutorials>
<methods>
<method name="add_blend_point">
- <return type="void">
- </return>
- <argument index="0" name="node" type="AnimationRootNode">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="at_index" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="AnimationRootNode" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="at_index" type="int" default="-1" />
<description>
Adds a new point that represents a [code]node[/code] at the position set by [code]pos[/code]. You can insert it at a specific index using the [code]at_index[/code] argument. If you use the default value for [code]at_index[/code], the point is inserted at the end of the blend points array.
</description>
</method>
<method name="add_triangle">
- <return type="void">
- </return>
- <argument index="0" name="x" type="int">
- </argument>
- <argument index="1" name="y" type="int">
- </argument>
- <argument index="2" name="z" type="int">
- </argument>
- <argument index="3" name="at_index" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="x" type="int" />
+ <argument index="1" name="y" type="int" />
+ <argument index="2" name="z" type="int" />
+ <argument index="3" name="at_index" type="int" default="-1" />
<description>
Creates a new triangle using three points [code]x[/code], [code]y[/code], and [code]z[/code]. Triangles can overlap. You can insert the triangle at a specific index using the [code]at_index[/code] argument. If you use the default value for [code]at_index[/code], the point is inserted at the end of the blend points array.
</description>
</method>
<method name="get_blend_point_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of points in the blend space.
</description>
</method>
<method name="get_blend_point_node" qualifiers="const">
- <return type="AnimationRootNode">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
+ <return type="AnimationRootNode" />
+ <argument index="0" name="point" type="int" />
<description>
Returns the [AnimationRootNode] referenced by the point at index [code]point[/code].
</description>
</method>
<method name="get_blend_point_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="point" type="int" />
<description>
Returns the position of the point at index [code]point[/code].
</description>
</method>
<method name="get_triangle_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of triangles in the blend space.
</description>
</method>
<method name="get_triangle_point">
- <return type="int">
- </return>
- <argument index="0" name="triangle" type="int">
- </argument>
- <argument index="1" name="point" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="triangle" type="int" />
+ <argument index="1" name="point" type="int" />
<description>
Returns the position of the point at index [code]point[/code] in the triangle of index [code]triangle[/code].
</description>
</method>
<method name="remove_blend_point">
- <return type="void">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point" type="int" />
<description>
Removes the point at index [code]point[/code] from the blend space.
</description>
</method>
<method name="remove_triangle">
- <return type="void">
- </return>
- <argument index="0" name="triangle" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="triangle" type="int" />
<description>
Removes the triangle at index [code]triangle[/code] from the blend space.
</description>
</method>
<method name="set_blend_point_node">
- <return type="void">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
- <argument index="1" name="node" type="AnimationRootNode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point" type="int" />
+ <argument index="1" name="node" type="AnimationRootNode" />
<description>
Changes the [AnimationNode] referenced by the point at index [code]point[/code].
</description>
</method>
<method name="set_blend_point_position">
- <return type="void">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point" type="int" />
+ <argument index="1" name="pos" type="Vector2" />
<description>
Updates the position of the point at index [code]point[/code] on the blend axis.
</description>
diff --git a/doc/classes/AnimationNodeBlendTree.xml b/doc/classes/AnimationNodeBlendTree.xml
index a90e8647bb..da532dc059 100644
--- a/doc/classes/AnimationNodeBlendTree.xml
+++ b/doc/classes/AnimationNodeBlendTree.xml
@@ -11,96 +11,71 @@
</tutorials>
<methods>
<method name="add_node">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="node" type="AnimationNode">
- </argument>
- <argument index="2" name="position" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="node" type="AnimationNode" />
+ <argument index="2" name="position" type="Vector2" default="Vector2(0, 0)" />
<description>
Adds an [AnimationNode] at the given [code]position[/code]. The [code]name[/code] is used to identify the created sub-node later.
</description>
</method>
<method name="connect_node">
- <return type="void">
- </return>
- <argument index="0" name="input_node" type="StringName">
- </argument>
- <argument index="1" name="input_index" type="int">
- </argument>
- <argument index="2" name="output_node" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="input_node" type="StringName" />
+ <argument index="1" name="input_index" type="int" />
+ <argument index="2" name="output_node" type="StringName" />
<description>
Connects the output of an [AnimationNode] as input for another [AnimationNode], at the input port specified by [code]input_index[/code].
</description>
</method>
<method name="disconnect_node">
- <return type="void">
- </return>
- <argument index="0" name="input_node" type="StringName">
- </argument>
- <argument index="1" name="input_index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="input_node" type="StringName" />
+ <argument index="1" name="input_index" type="int" />
<description>
Disconnects the node connected to the specified input.
</description>
</method>
<method name="get_node" qualifiers="const">
- <return type="AnimationNode">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="AnimationNode" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns the sub-node with the specified [code]name[/code].
</description>
</method>
<method name="get_node_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns the position of the sub-node with the specified [code]name[/code].
</description>
</method>
<method name="has_node" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if a sub-node with specified [code]name[/code] exists.
</description>
</method>
<method name="remove_node">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Removes a sub-node.
</description>
</method>
<method name="rename_node">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="new_name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="new_name" type="StringName" />
<description>
Changes the name of a sub-node.
</description>
</method>
<method name="set_node_position">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="position" type="Vector2" />
<description>
Modifies the position of a sub-node.
</description>
diff --git a/doc/classes/AnimationNodeOneShot.xml b/doc/classes/AnimationNodeOneShot.xml
index 65ab363e1f..2ecc0ae07b 100644
--- a/doc/classes/AnimationNodeOneShot.xml
+++ b/doc/classes/AnimationNodeOneShot.xml
@@ -12,16 +12,13 @@
</tutorials>
<methods>
<method name="get_mix_mode" qualifiers="const">
- <return type="int" enum="AnimationNodeOneShot.MixMode">
- </return>
+ <return type="int" enum="AnimationNodeOneShot.MixMode" />
<description>
</description>
</method>
<method name="set_mix_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="AnimationNodeOneShot.MixMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mode" type="int" enum="AnimationNodeOneShot.MixMode" />
<description>
</description>
</method>
diff --git a/doc/classes/AnimationNodeStateMachine.xml b/doc/classes/AnimationNodeStateMachine.xml
index 8e070142c4..9921e157f2 100644
--- a/doc/classes/AnimationNodeStateMachine.xml
+++ b/doc/classes/AnimationNodeStateMachine.xml
@@ -22,217 +22,166 @@
</tutorials>
<methods>
<method name="add_node">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="node" type="AnimationNode">
- </argument>
- <argument index="2" name="position" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="node" type="AnimationNode" />
+ <argument index="2" name="position" type="Vector2" default="Vector2(0, 0)" />
<description>
Adds a new node to the graph. The [code]position[/code] is used for display in the editor.
</description>
</method>
<method name="add_transition">
- <return type="void">
- </return>
- <argument index="0" name="from" type="StringName">
- </argument>
- <argument index="1" name="to" type="StringName">
- </argument>
- <argument index="2" name="transition" type="AnimationNodeStateMachineTransition">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from" type="StringName" />
+ <argument index="1" name="to" type="StringName" />
+ <argument index="2" name="transition" type="AnimationNodeStateMachineTransition" />
<description>
Adds a transition between the given nodes.
</description>
</method>
<method name="get_end_node" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the graph's end node.
</description>
</method>
<method name="get_graph_offset" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the draw offset of the graph. Used for display in the editor.
</description>
</method>
<method name="get_node" qualifiers="const">
- <return type="AnimationNode">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="AnimationNode" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns the animation node with the given name.
</description>
</method>
<method name="get_node_name" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="node" type="AnimationNode">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="node" type="AnimationNode" />
<description>
Returns the given animation node's name.
</description>
</method>
<method name="get_node_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns the given node's coordinates. Used for display in the editor.
</description>
</method>
<method name="get_start_node" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the graph's end node.
</description>
</method>
<method name="get_transition" qualifiers="const">
- <return type="AnimationNodeStateMachineTransition">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="AnimationNodeStateMachineTransition" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the given transition.
</description>
</method>
<method name="get_transition_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of connections in the graph.
</description>
</method>
<method name="get_transition_from" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the given transition's start node.
</description>
</method>
<method name="get_transition_to" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the given transition's end node.
</description>
</method>
<method name="has_node" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if the graph contains the given node.
</description>
</method>
<method name="has_transition" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="from" type="StringName">
- </argument>
- <argument index="1" name="to" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="from" type="StringName" />
+ <argument index="1" name="to" type="StringName" />
<description>
Returns [code]true[/code] if there is a transition between the given nodes.
</description>
</method>
<method name="remove_node">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Deletes the given node from the graph.
</description>
</method>
<method name="remove_transition">
- <return type="void">
- </return>
- <argument index="0" name="from" type="StringName">
- </argument>
- <argument index="1" name="to" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from" type="StringName" />
+ <argument index="1" name="to" type="StringName" />
<description>
Deletes the transition between the two specified nodes.
</description>
</method>
<method name="remove_transition_by_index">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Deletes the given transition by index.
</description>
</method>
<method name="rename_node">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="new_name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="new_name" type="StringName" />
<description>
Renames the given node.
</description>
</method>
<method name="replace_node">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="node" type="AnimationNode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="node" type="AnimationNode" />
<description>
</description>
</method>
<method name="set_end_node">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Sets the given node as the graph end point.
</description>
</method>
<method name="set_graph_offset">
- <return type="void">
- </return>
- <argument index="0" name="offset" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="offset" type="Vector2" />
<description>
Sets the draw offset of the graph. Used for display in the editor.
</description>
</method>
<method name="set_node_position">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="position" type="Vector2" />
<description>
Sets the node's coordinates. Used for display in the editor.
</description>
</method>
<method name="set_start_node">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Sets the given node as the graph start point.
</description>
diff --git a/doc/classes/AnimationNodeStateMachinePlayback.xml b/doc/classes/AnimationNodeStateMachinePlayback.xml
index c8468f9c8f..5c11adfaf0 100644
--- a/doc/classes/AnimationNodeStateMachinePlayback.xml
+++ b/doc/classes/AnimationNodeStateMachinePlayback.xml
@@ -22,60 +22,50 @@
</tutorials>
<methods>
<method name="get_current_length" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
</description>
</method>
<method name="get_current_node" qualifiers="const">
- <return type="StringName">
- </return>
+ <return type="StringName" />
<description>
Returns the currently playing animation state.
</description>
</method>
<method name="get_current_play_position" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the playback position within the current animation state.
</description>
</method>
<method name="get_travel_path" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns the current travel path as computed internally by the A* algorithm.
</description>
</method>
<method name="is_playing" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if an animation is playing.
</description>
</method>
<method name="start">
- <return type="void">
- </return>
- <argument index="0" name="node" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="StringName" />
<description>
Starts playing the given animation.
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the currently playing animation.
</description>
</method>
<method name="travel">
- <return type="void">
- </return>
- <argument index="0" name="to_node" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="to_node" type="StringName" />
<description>
Transitions from the current state to another one, following the shortest path.
</description>
diff --git a/doc/classes/AnimationNodeTransition.xml b/doc/classes/AnimationNodeTransition.xml
index 73c7006768..8c859e43be 100644
--- a/doc/classes/AnimationNodeTransition.xml
+++ b/doc/classes/AnimationNodeTransition.xml
@@ -13,38 +13,28 @@
</tutorials>
<methods>
<method name="get_input_caption" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="input" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="input" type="int" />
<description>
</description>
</method>
<method name="is_input_set_as_auto_advance" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="input" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="input" type="int" />
<description>
</description>
</method>
<method name="set_input_as_auto_advance">
- <return type="void">
- </return>
- <argument index="0" name="input" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="input" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
</description>
</method>
<method name="set_input_caption">
- <return type="void">
- </return>
- <argument index="0" name="input" type="int">
- </argument>
- <argument index="1" name="caption" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="input" type="int" />
+ <argument index="1" name="caption" type="String" />
<description>
</description>
</method>
diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml
index 8a94eee54c..1ef9d81d02 100644
--- a/doc/classes/AnimationPlayer.xml
+++ b/doc/classes/AnimationPlayer.xml
@@ -15,136 +15,106 @@
</tutorials>
<methods>
<method name="add_animation">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="animation" type="Animation">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="animation" type="Animation" />
<description>
Adds [code]animation[/code] to the player accessible with the key [code]name[/code].
</description>
</method>
<method name="advance">
- <return type="void">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="delta" type="float" />
<description>
Shifts position in the animation timeline and immediately updates the animation. [code]delta[/code] is the time in seconds to shift. Events between the current frame and [code]delta[/code] are handled.
</description>
</method>
<method name="animation_get_next" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="anim_from" type="StringName">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="anim_from" type="StringName" />
<description>
Returns the name of the next animation in the queue.
</description>
</method>
<method name="animation_set_next">
- <return type="void">
- </return>
- <argument index="0" name="anim_from" type="StringName">
- </argument>
- <argument index="1" name="anim_to" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim_from" type="StringName" />
+ <argument index="1" name="anim_to" type="StringName" />
<description>
Triggers the [code]anim_to[/code] animation when the [code]anim_from[/code] animation completes.
</description>
</method>
<method name="clear_caches">
- <return type="void">
- </return>
+ <return type="void" />
<description>
[AnimationPlayer] caches animated nodes. It may not notice if a node disappears; [method clear_caches] forces it to update the cache again.
</description>
</method>
<method name="clear_queue">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears all queued, unplayed animations.
</description>
</method>
<method name="find_animation" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="animation" type="Animation">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="animation" type="Animation" />
<description>
Returns the name of [code]animation[/code] or an empty string if not found.
</description>
</method>
<method name="get_animation" qualifiers="const">
- <return type="Animation">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="Animation" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns the [Animation] with key [code]name[/code] or [code]null[/code] if not found.
</description>
</method>
<method name="get_animation_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns the list of stored animation names.
</description>
</method>
<method name="get_blend_time" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="anim_from" type="StringName">
- </argument>
- <argument index="1" name="anim_to" type="StringName">
- </argument>
+ <return type="float" />
+ <argument index="0" name="anim_from" type="StringName" />
+ <argument index="1" name="anim_to" type="StringName" />
<description>
Gets the blend time (in seconds) between two animations, referenced by their names.
</description>
</method>
<method name="get_playing_speed" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Gets the actual playing speed of current animation or 0 if not playing. This speed is the [member playback_speed] property multiplied by [code]custom_speed[/code] argument specified when calling the [method play] method.
</description>
</method>
<method name="get_queue">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns a list of the animation names that are currently queued to play.
</description>
</method>
<method name="has_animation" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if the [AnimationPlayer] stores an [Animation] with key [code]name[/code].
</description>
</method>
<method name="is_playing" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if playing an animation.
</description>
</method>
<method name="play">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName" default="&quot;&quot;">
- </argument>
- <argument index="1" name="custom_blend" type="float" default="-1">
- </argument>
- <argument index="2" name="custom_speed" type="float" default="1.0">
- </argument>
- <argument index="3" name="from_end" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" default="&quot;&quot;" />
+ <argument index="1" name="custom_blend" type="float" default="-1" />
+ <argument index="2" name="custom_speed" type="float" default="1.0" />
+ <argument index="3" name="from_end" type="bool" default="false" />
<description>
Plays the animation with key [code]name[/code]. Custom blend times and speed can be set. If [code]custom_speed[/code] is negative and [code]from_end[/code] is [code]true[/code], the animation will play backwards (which is equivalent to calling [method play_backwards]).
The [AnimationPlayer] keeps track of its current or last played animation with [member assigned_animation]. If this method is called with that same animation [code]name[/code], or with no [code]name[/code] parameter, the assigned animation will resume playing if it was paused, or restart if it was stopped (see [method stop] for both pause and stop). If the animation was already playing, it will keep playing.
@@ -152,76 +122,57 @@
</description>
</method>
<method name="play_backwards">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName" default="&quot;&quot;">
- </argument>
- <argument index="1" name="custom_blend" type="float" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" default="&quot;&quot;" />
+ <argument index="1" name="custom_blend" type="float" default="-1" />
<description>
Plays the animation with key [code]name[/code] in reverse.
This method is a shorthand for [method play] with [code]custom_speed = -1.0[/code] and [code]from_end = true[/code], so see its description for more information.
</description>
</method>
<method name="queue">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Queues an animation for playback once the current one is done.
[b]Note:[/b] If a looped animation is currently playing, the queued animation will never play unless the looped animation is stopped somehow.
</description>
</method>
<method name="remove_animation">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Removes the animation with key [code]name[/code].
</description>
</method>
<method name="rename_animation">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="newname" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="newname" type="StringName" />
<description>
Renames an existing animation with key [code]name[/code] to [code]newname[/code].
</description>
</method>
<method name="seek">
- <return type="void">
- </return>
- <argument index="0" name="seconds" type="float">
- </argument>
- <argument index="1" name="update" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="seconds" type="float" />
+ <argument index="1" name="update" type="bool" default="false" />
<description>
Seeks the animation to the [code]seconds[/code] point in time (in seconds). If [code]update[/code] is [code]true[/code], the animation updates too, otherwise it updates at process time. Events between the current frame and [code]seconds[/code] are skipped.
</description>
</method>
<method name="set_blend_time">
- <return type="void">
- </return>
- <argument index="0" name="anim_from" type="StringName">
- </argument>
- <argument index="1" name="anim_to" type="StringName">
- </argument>
- <argument index="2" name="sec" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim_from" type="StringName" />
+ <argument index="1" name="anim_to" type="StringName" />
+ <argument index="2" name="sec" type="float" />
<description>
Specifies a blend time (in seconds) between two animations, referenced by their names.
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
- <argument index="0" name="reset" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="reset" type="bool" default="true" />
<description>
Stops or pauses the currently playing animation. If [code]reset[/code] is [code]true[/code], the animation position is reset to [code]0[/code] and the playback speed is reset to [code]1.0[/code].
If [code]reset[/code] is [code]false[/code], the [member current_animation_position] will be kept and calling [method play] or [method play_backwards] without arguments or with the same animation name as [member assigned_animation] will resume the animation.
@@ -270,25 +221,21 @@
</members>
<signals>
<signal name="animation_changed">
- <argument index="0" name="old_name" type="StringName">
- </argument>
- <argument index="1" name="new_name" type="StringName">
- </argument>
+ <argument index="0" name="old_name" type="StringName" />
+ <argument index="1" name="new_name" type="StringName" />
<description>
Emitted when a queued animation plays after the previous animation was finished. See [method queue].
[b]Note:[/b] The signal is not emitted when the animation is changed via [method play] or from [AnimationTree].
</description>
</signal>
<signal name="animation_finished">
- <argument index="0" name="anim_name" type="StringName">
- </argument>
+ <argument index="0" name="anim_name" type="StringName" />
<description>
Notifies when an animation finished playing.
</description>
</signal>
<signal name="animation_started">
- <argument index="0" name="anim_name" type="StringName">
- </argument>
+ <argument index="0" name="anim_name" type="StringName" />
<description>
Notifies when an animation starts playing.
</description>
diff --git a/doc/classes/AnimationTree.xml b/doc/classes/AnimationTree.xml
index 63460b70c5..843dd5a6d1 100644
--- a/doc/classes/AnimationTree.xml
+++ b/doc/classes/AnimationTree.xml
@@ -12,28 +12,22 @@
</tutorials>
<methods>
<method name="advance">
- <return type="void">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="delta" type="float" />
<description>
Manually advance the animations by the specified time (in seconds).
</description>
</method>
<method name="get_root_motion_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
+ <return type="Transform3D" />
<description>
Retrieve the motion of the [member root_motion_track] as a [Transform3D] that can be used elsewhere. If [member root_motion_track] is not a path to a track of type [constant Animation.TYPE_TRANSFORM3D], returns an identity transformation. See also [member root_motion_track] and [RootMotionView].
</description>
</method>
<method name="rename_parameter">
- <return type="void">
- </return>
- <argument index="0" name="old_name" type="String">
- </argument>
- <argument index="1" name="new_name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="old_name" type="String" />
+ <argument index="1" name="new_name" type="String" />
<description>
</description>
</method>
diff --git a/doc/classes/Area2D.xml b/doc/classes/Area2D.xml
index f52c810ad2..25f67f0571 100644
--- a/doc/classes/Area2D.xml
+++ b/doc/classes/Area2D.xml
@@ -14,38 +14,32 @@
</tutorials>
<methods>
<method name="get_overlapping_areas" qualifiers="const">
- <return type="Area2D[]">
- </return>
+ <return type="Area2D[]" />
<description>
Returns a list of intersecting [Area2D]s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
</description>
</method>
<method name="get_overlapping_bodies" qualifiers="const">
- <return type="Node2D[]">
- </return>
+ <return type="Node2D[]" />
<description>
Returns a list of intersecting [PhysicsBody2D]s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
</description>
</method>
<method name="overlaps_area" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="area" type="Node">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="area" type="Node" />
<description>
If [code]true[/code], the given area overlaps the Area2D.
- [b]Note:[/b] The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
+ [b]Note:[/b] The result of this test is not immediate after moving objects. For performance, the list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
</description>
</method>
<method name="overlaps_body" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="body" type="Node">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="body" type="Node" />
<description>
If [code]true[/code], the given physics body overlaps the Area2D.
[b]Note:[/b] The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
- The [code]body[/code] argument can either be a [PhysicsBody2D] or a [TileMap] instance (while TileMaps are not physics body themselves, they register their tiles with collision shapes as a virtual physics body).
+ The [code]body[/code] argument can either be a [PhysicsBody2D] or a [TileMap] instance (while TileMaps are not physics bodies themselves, they register their tiles with collision shapes as a virtual physics body).
</description>
</method>
</methods>
@@ -91,30 +85,24 @@
</members>
<signals>
<signal name="area_entered">
- <argument index="0" name="area" type="Area2D">
- </argument>
+ <argument index="0" name="area" type="Area2D" />
<description>
Emitted when another Area2D enters this Area2D. Requires [member monitoring] to be set to [code]true[/code].
[code]area[/code] the other Area2D.
</description>
</signal>
<signal name="area_exited">
- <argument index="0" name="area" type="Area2D">
- </argument>
+ <argument index="0" name="area" type="Area2D" />
<description>
Emitted when another Area2D exits this Area2D. Requires [member monitoring] to be set to [code]true[/code].
[code]area[/code] the other Area2D.
</description>
</signal>
<signal name="area_shape_entered">
- <argument index="0" name="area_rid" type="RID">
- </argument>
- <argument index="1" name="area" type="Area2D">
- </argument>
- <argument index="2" name="area_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="area_rid" type="RID" />
+ <argument index="1" name="area" type="Area2D" />
+ <argument index="2" name="area_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when one of another Area2D's [Shape2D]s enters one of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].
[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] used by the [PhysicsServer2D].
@@ -124,14 +112,10 @@
</description>
</signal>
<signal name="area_shape_exited">
- <argument index="0" name="area_rid" type="RID">
- </argument>
- <argument index="1" name="area" type="Area2D">
- </argument>
- <argument index="2" name="area_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="area_rid" type="RID" />
+ <argument index="1" name="area" type="Area2D" />
+ <argument index="2" name="area_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when one of another Area2D's [Shape2D]s exits one of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to [code]true[/code].
[code]area_id[/code] the [RID] of the other Area2D's [CollisionObject2D] used by the [PhysicsServer2D].
@@ -141,30 +125,24 @@
</description>
</signal>
<signal name="body_entered">
- <argument index="0" name="body" type="Node2D">
- </argument>
+ <argument index="0" name="body" type="Node2D" />
<description>
Emitted when a [PhysicsBody2D] or [TileMap] enters this Area2D. Requires [member monitoring] to be set to [code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody2D] or [TileMap].
</description>
</signal>
<signal name="body_exited">
- <argument index="0" name="body" type="Node2D">
- </argument>
+ <argument index="0" name="body" type="Node2D" />
<description>
Emitted when a [PhysicsBody2D] or [TileMap] exits this Area2D. Requires [member monitoring] to be set to [code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody2D] or [TileMap].
</description>
</signal>
<signal name="body_shape_entered">
- <argument index="0" name="body_rid" type="RID">
- </argument>
- <argument index="1" name="body" type="Node2D">
- </argument>
- <argument index="2" name="body_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="body_rid" type="RID" />
+ <argument index="1" name="body" type="Node2D" />
+ <argument index="2" name="body_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when one of a [PhysicsBody2D] or [TileMap]'s [Shape2D]s enters one of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to [code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
@@ -174,14 +152,10 @@
</description>
</signal>
<signal name="body_shape_exited">
- <argument index="0" name="body_rid" type="RID">
- </argument>
- <argument index="1" name="body" type="Node2D">
- </argument>
- <argument index="2" name="body_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="body_rid" type="RID" />
+ <argument index="1" name="body" type="Node2D" />
+ <argument index="2" name="body_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when one of a [PhysicsBody2D] or [TileMap]'s [Shape2D]s exits one of this Area2D's [Shape2D]s. Requires [member monitoring] to be set to [code]true[/code]. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
[code]body_id[/code] the [RID] of the [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
diff --git a/doc/classes/Area3D.xml b/doc/classes/Area3D.xml
index cc31b6c203..2180196bb5 100644
--- a/doc/classes/Area3D.xml
+++ b/doc/classes/Area3D.xml
@@ -12,34 +12,28 @@
</tutorials>
<methods>
<method name="get_overlapping_areas" qualifiers="const">
- <return type="Area3D[]">
- </return>
+ <return type="Area3D[]" />
<description>
Returns a list of intersecting [Area3D]s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
</description>
</method>
<method name="get_overlapping_bodies" qualifiers="const">
- <return type="Node3D[]">
- </return>
+ <return type="Node3D[]" />
<description>
Returns a list of intersecting [PhysicsBody3D]s. For performance reasons (collisions are all processed at the same time) this list is modified once during the physics step, not immediately after objects are moved. Consider using signals instead.
</description>
</method>
<method name="overlaps_area" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="area" type="Node">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="area" type="Node" />
<description>
If [code]true[/code], the given area overlaps the Area3D.
[b]Note:[/b] The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
</description>
</method>
<method name="overlaps_body" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="body" type="Node">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="body" type="Node" />
<description>
If [code]true[/code], the given physics body overlaps the Area3D.
[b]Note:[/b] The result of this test is not immediate after moving objects. For performance, list of overlaps is updated once per frame and before the physics step. Consider using signals instead.
@@ -101,30 +95,24 @@
</members>
<signals>
<signal name="area_entered">
- <argument index="0" name="area" type="Area3D">
- </argument>
+ <argument index="0" name="area" type="Area3D" />
<description>
Emitted when another Area3D enters this Area3D. Requires [member monitoring] to be set to [code]true[/code].
[code]area[/code] the other Area3D.
</description>
</signal>
<signal name="area_exited">
- <argument index="0" name="area" type="Area3D">
- </argument>
+ <argument index="0" name="area" type="Area3D" />
<description>
Emitted when another Area3D exits this Area3D. Requires [member monitoring] to be set to [code]true[/code].
[code]area[/code] the other Area3D.
</description>
</signal>
<signal name="area_shape_entered">
- <argument index="0" name="area_rid" type="RID">
- </argument>
- <argument index="1" name="area" type="Area3D">
- </argument>
- <argument index="2" name="area_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="area_rid" type="RID" />
+ <argument index="1" name="area" type="Area3D" />
+ <argument index="2" name="area_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when one of another Area3D's [Shape3D]s enters one of this Area3D's [Shape3D]s. Requires [member monitoring] to be set to [code]true[/code].
[code]area_id[/code] the [RID] of the other Area3D's [CollisionObject3D] used by the [PhysicsServer3D].
@@ -134,14 +122,10 @@
</description>
</signal>
<signal name="area_shape_exited">
- <argument index="0" name="area_rid" type="RID">
- </argument>
- <argument index="1" name="area" type="Area3D">
- </argument>
- <argument index="2" name="area_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="area_rid" type="RID" />
+ <argument index="1" name="area" type="Area3D" />
+ <argument index="2" name="area_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when one of another Area3D's [Shape3D]s enters one of this Area3D's [Shape3D]s. Requires [member monitoring] to be set to [code]true[/code].
[code]area_id[/code] the [RID] of the other Area3D's [CollisionObject3D] used by the [PhysicsServer3D].
@@ -151,30 +135,24 @@
</description>
</signal>
<signal name="body_entered">
- <argument index="0" name="body" type="Node3D">
- </argument>
+ <argument index="0" name="body" type="Node3D" />
<description>
Emitted when a [PhysicsBody3D] or [GridMap] enters this Area3D. Requires [member monitoring] to be set to [code]true[/code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody3D] or [GridMap].
</description>
</signal>
<signal name="body_exited">
- <argument index="0" name="body" type="Node3D">
- </argument>
+ <argument index="0" name="body" type="Node3D" />
<description>
Emitted when a [PhysicsBody3D] or [GridMap] exits this Area3D. Requires [member monitoring] to be set to [code]true[/code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody3D] or [GridMap].
</description>
</signal>
<signal name="body_shape_entered">
- <argument index="0" name="body_rid" type="RID">
- </argument>
- <argument index="1" name="body" type="Node3D">
- </argument>
- <argument index="2" name="body_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="body_rid" type="RID" />
+ <argument index="1" name="body" type="Node3D" />
+ <argument index="2" name="body_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when one of a [PhysicsBody3D] or [GridMap]'s [Shape3D]s enters one of this Area3D's [Shape3D]s. Requires [member monitoring] to be set to [code]true[/code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
[code]body_id[/code] the [RID] of the [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D].
@@ -184,14 +162,10 @@
</description>
</signal>
<signal name="body_shape_exited">
- <argument index="0" name="body_rid" type="RID">
- </argument>
- <argument index="1" name="body" type="Node3D">
- </argument>
- <argument index="2" name="body_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="body_rid" type="RID" />
+ <argument index="1" name="body" type="Node3D" />
+ <argument index="2" name="body_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when one of a [PhysicsBody3D] or [GridMap]'s [Shape3D]s enters one of this Area3D's [Shape3D]s. Requires [member monitoring] to be set to [code]true[/code]. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
[code]body_id[/code] the [RID] of the [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D].
diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml
index 543ec096c7..7767a1028d 100644
--- a/doc/classes/Array.xml
+++ b/doc/classes/Array.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="Array" version="4.0">
<brief_description>
- Generic array datatype.
+ A generic array datatype.
</brief_description>
<description>
- Generic array which can contain several elements of any type, accessible by a numerical index starting at 0. Negative indices can be used to count from the back, like in Python (-1 is the last element, -2 the second to last, etc.).
+ A generic array that can contain several elements of any type, accessible by a numerical index starting at 0. Negative indices can be used to count from the back, like in Python (-1 is the last element, -2 is the second to last, etc.).
[b]Example:[/b]
[codeblocks]
[gdscript]
@@ -39,123 +39,98 @@
[/csharp]
[/codeblocks]
[b]Note:[/b] Concatenating with the [code]+=[/code] operator will create a new array, which has a cost. If you want to append another array to an existing array, [method append_array] is more efficient.
- [b]Note:[/b] Arrays are always passed by reference. To get a copy of an array which can be modified independently of the original array, use [method duplicate].
+ [b]Note:[/b] Arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use [method duplicate].
[b]Note:[/b] When declaring an array with [code]const[/code], the array itself can still be mutated by defining the values at individual indices or pushing/removing elements. Using [code]const[/code] will only prevent assigning the constant with another value after it was initialized.
</description>
<tutorials>
</tutorials>
<methods>
<method name="Array" qualifiers="constructor">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Constructs an empty [Array].
</description>
</method>
<method name="Array" qualifiers="constructor">
- <return type="Array">
- </return>
- <argument index="0" name="from" type="Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="from" type="Array" />
<description>
Constructs an [Array] as a copy of the given [Array].
</description>
</method>
<method name="Array" qualifiers="constructor">
- <return type="Array">
- </return>
- <argument index="0" name="from" type="PackedByteArray">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="from" type="PackedByteArray" />
<description>
Constructs an array from a [PackedByteArray].
</description>
</method>
<method name="Array" qualifiers="constructor">
- <return type="Array">
- </return>
- <argument index="0" name="from" type="PackedColorArray">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="from" type="PackedColorArray" />
<description>
Constructs an array from a [PackedColorArray].
</description>
</method>
<method name="Array" qualifiers="constructor">
- <return type="Array">
- </return>
- <argument index="0" name="from" type="PackedFloat32Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="from" type="PackedFloat32Array" />
<description>
Constructs an array from a [PackedFloat32Array].
</description>
</method>
<method name="Array" qualifiers="constructor">
- <return type="Array">
- </return>
- <argument index="0" name="from" type="PackedFloat64Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="from" type="PackedFloat64Array" />
<description>
Constructs an array from a [PackedFloat64Array].
</description>
</method>
<method name="Array" qualifiers="constructor">
- <return type="Array">
- </return>
- <argument index="0" name="from" type="PackedInt32Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="from" type="PackedInt32Array" />
<description>
Constructs an array from a [PackedInt32Array].
</description>
</method>
<method name="Array" qualifiers="constructor">
- <return type="Array">
- </return>
- <argument index="0" name="from" type="PackedInt64Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="from" type="PackedInt64Array" />
<description>
Constructs an array from a [PackedInt64Array].
</description>
</method>
<method name="Array" qualifiers="constructor">
- <return type="Array">
- </return>
- <argument index="0" name="from" type="PackedStringArray">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="from" type="PackedStringArray" />
<description>
Constructs an array from a [PackedStringArray].
</description>
</method>
<method name="Array" qualifiers="constructor">
- <return type="Array">
- </return>
- <argument index="0" name="from" type="PackedVector2Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="from" type="PackedVector2Array" />
<description>
Constructs an array from a [PackedVector2Array].
</description>
</method>
<method name="Array" qualifiers="constructor">
- <return type="Array">
- </return>
- <argument index="0" name="from" type="PackedVector3Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="from" type="PackedVector3Array" />
<description>
Constructs an array from a [PackedVector3Array].
</description>
</method>
<method name="append">
- <return type="void">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="Variant" />
<description>
Appends an element at the end of the array (alias of [method push_back]).
</description>
</method>
<method name="append_array">
- <return type="void">
- </return>
- <argument index="0" name="array" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="array" type="Array" />
<description>
Appends another array at the end of this array.
[codeblock]
@@ -167,70 +142,55 @@
</description>
</method>
<method name="back" qualifiers="const">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns the last element of the array. Prints an error and returns [code]null[/code] if the array is empty.
[b]Note:[/b] Calling this function is not the same as writing [code]array[-1][/code]. If the array is empty, accessing by index will pause project execution when running from the editor.
</description>
</method>
<method name="bsearch">
- <return type="int">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
- <argument index="1" name="before" type="bool" default="true">
- </argument>
+ <return type="int" />
+ <argument index="0" name="value" type="Variant" />
+ <argument index="1" name="before" type="bool" default="true" />
<description>
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 [code]before[/code] specifier can be passed. If [code]false[/code], the returned index comes after all existing entries of the value in the array.
[b]Note:[/b] Calling [method bsearch] on an unsorted array results in unexpected behavior.
</description>
</method>
<method name="bsearch_custom">
- <return type="int">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
- <argument index="1" name="func" type="Callable">
- </argument>
- <argument index="2" name="before" type="bool" default="true">
- </argument>
+ <return type="int" />
+ <argument index="0" name="value" type="Variant" />
+ <argument index="1" name="func" type="Callable" />
+ <argument index="2" name="before" type="bool" default="true" />
<description>
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 [code]before[/code] specifier can be passed. If [code]false[/code], 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 [code]true[/code] if the first argument is less than the second, and return [code]false[/code] otherwise.
[b]Note:[/b] Calling [method bsearch_custom] on an unsorted array results in unexpected behavior.
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the array. This is equivalent to using [method resize] with a size of [code]0[/code].
</description>
</method>
<method name="count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
+ <return type="int" />
+ <argument index="0" name="value" type="Variant" />
<description>
Returns the number of times an element is in the array.
</description>
</method>
<method name="duplicate" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="deep" type="bool" default="false">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="deep" type="bool" default="false" />
<description>
Returns a copy of the array.
If [code]deep[/code] is [code]true[/code], a deep copy is performed: all nested arrays and dictionaries are duplicated and will not be shared with the original array. If [code]false[/code], a shallow copy is made and references to the original nested arrays and dictionaries are kept, so that modifying a sub-array or dictionary in the copy will also impact those referenced in the source array.
</description>
</method>
<method name="erase">
- <return type="void">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="Variant" />
<description>
Removes the first occurrence of a value from the array. To remove an element by index, use [method remove] instead.
[b]Note:[/b] This method acts in-place and doesn't return a value.
@@ -238,10 +198,8 @@
</description>
</method>
<method name="fill">
- <return type="void">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="Variant" />
<description>
Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements:
[codeblocks]
@@ -259,10 +217,8 @@
</description>
</method>
<method name="filter" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="method" type="Callable">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="method" type="Callable" />
<description>
Calls the provided [Callable] on each element in the array and returns a new array with the elements for which the method returned [code]true[/code].
The callable's method should take one [Variant] parameter (the current array element) and return a boolean value.
@@ -277,38 +233,30 @@
</description>
</method>
<method name="find" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="what" type="Variant">
- </argument>
- <argument index="1" name="from" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="what" type="Variant" />
+ <argument index="1" name="from" type="int" default="0" />
<description>
Searches the array for a value and returns its index or [code]-1[/code] if not found. Optionally, the initial search index can be passed.
</description>
</method>
<method name="find_last" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
+ <return type="int" />
+ <argument index="0" name="value" type="Variant" />
<description>
Searches the array in reverse order for a value and returns its index or [code]-1[/code] if not found.
</description>
</method>
<method name="front" qualifiers="const">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns the first element of the array. Prints an error and returns [code]null[/code] if the array is empty.
[b]Note:[/b] Calling this function is not the same as writing [code]array[0][/code]. If the array is empty, accessing by index will pause project execution when running from the editor.
</description>
</method>
<method name="has" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="Variant" />
<description>
Returns [code]true[/code] if the array contains the given value.
[codeblocks]
@@ -347,20 +295,16 @@
</description>
</method>
<method name="hash" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns a hashed integer value representing the array and its contents.
[b]Note:[/b] Arrays with equal contents can still produce different hashes. Only the exact same arrays will produce the same hashed integer value.
</description>
</method>
<method name="insert">
- <return type="void">
- </return>
- <argument index="0" name="position" type="int">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="int" />
+ <argument index="1" name="value" type="Variant" />
<description>
Inserts a new element at a given position in the array. The position must be valid, or at the end of the array ([code]pos == size()[/code]).
[b]Note:[/b] This method acts in-place and doesn't return a value.
@@ -368,17 +312,14 @@
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the array is empty.
</description>
</method>
<method name="map" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="method" type="Callable">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="method" type="Callable" />
<description>
Calls the provided [Callable] for each element in the array and returns a new array filled with values returned by the method.
The callable's method should take one [Variant] parameter (the current array element) and can return any [Variant].
@@ -393,124 +334,97 @@
</description>
</method>
<method name="max" qualifiers="const">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns the maximum value contained in the array if all elements are of comparable types. If the elements can't be compared, [code]null[/code] is returned.
</description>
</method>
<method name="min" qualifiers="const">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns the minimum value contained in the array if all elements are of comparable types. If the elements can't be compared, [code]null[/code] is returned.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Array" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="Array">
- </return>
- <argument index="0" name="right" type="Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="right" type="Array" />
<description>
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Array" />
<description>
</description>
</method>
<method name="operator &lt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Array" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Array" />
<description>
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Array" />
<description>
</description>
</method>
<method name="operator &gt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Array" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="pop_back">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Removes and returns the last element of the array. Returns [code]null[/code] if the array is empty, without printing an error message. See also [method pop_front].
</description>
</method>
<method name="pop_front">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Removes and returns the first element of the array. Returns [code]null[/code] if the array is empty, without printing an error message. See also [method pop_back].
[b]Note:[/b] On large arrays, this method is much slower than [method pop_back] as it will reindex all the array's elements every time it's called. The larger the array, the slower [method pop_front] will be.
</description>
</method>
<method name="push_back">
- <return type="void">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="Variant" />
<description>
Appends an element at the end of the array. See also [method push_front].
</description>
</method>
<method name="push_front">
- <return type="void">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="Variant" />
<description>
Adds an element at the beginning of the array. See also [method push_back].
[b]Note:[/b] On large arrays, this method is much slower than [method push_back] as it will reindex all the array's elements every time it's called. The larger the array, the slower [method push_front] will be.
</description>
</method>
<method name="reduce" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="method" type="Callable">
- </argument>
- <argument index="1" name="accum" type="Variant" default="null">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="method" type="Callable" />
+ <argument index="1" name="accum" type="Variant" default="null" />
<description>
Calls the provided [Callable] for each element in array and accumulates the result in [code]accum[/code].
The callable's method takes two arguments: the current value of [code]accum[/code] and the current array element. If [code]accum[/code] is [code]null[/code] (default value), the iteration will start from the second element, with the first one used as initial value of [code]accum[/code].
@@ -525,10 +439,8 @@
</description>
</method>
<method name="remove">
- <return type="void">
- </return>
- <argument index="0" name="position" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="int" />
<description>
Removes an element from the array by index. If the index does not exist in the array, nothing happens. To remove an element by searching for its value, use [method erase] instead.
[b]Note:[/b] This method acts in-place and doesn't return a value.
@@ -536,64 +448,50 @@
</description>
</method>
<method name="resize">
- <return type="int">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="size" type="int" />
<description>
Resizes the array to contain a different number of elements. If the array size is smaller, elements are cleared, if bigger, new elements are [code]null[/code].
</description>
</method>
<method name="reverse">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Reverses the order of the elements in the array.
</description>
</method>
<method name="rfind" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="what" type="Variant">
- </argument>
- <argument index="1" name="from" type="int" default="-1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="what" type="Variant" />
+ <argument index="1" name="from" type="int" default="-1" />
<description>
Searches the array in reverse order. Optionally, a start search index can be passed. If negative, the start index is considered relative to the end of the array.
</description>
</method>
<method name="shuffle">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Shuffles the array such that the items will have a random order. This method uses the global random number generator common to methods such as [method @GlobalScope.randi]. Call [method @GlobalScope.randomize] to ensure that a new seed will be used each time if you want non-reproducible shuffling.
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of elements in the array.
</description>
</method>
<method name="slice" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="begin" type="int">
- </argument>
- <argument index="1" name="end" type="int">
- </argument>
- <argument index="2" name="step" type="int" default="1">
- </argument>
- <argument index="3" name="deep" type="bool" default="false">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="begin" type="int" />
+ <argument index="1" name="end" type="int" />
+ <argument index="2" name="step" type="int" default="1" />
+ <argument index="3" name="deep" type="bool" default="false" />
<description>
Duplicates the subset described in the function and returns it in an array, deeply copying the array if [code]deep[/code] is [code]true[/code]. Lower and upper index are inclusive, with the [code]step[/code] describing the change between indices while slicing.
</description>
</method>
<method name="sort">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sorts the array.
[b]Note:[/b] Strings are sorted in alphabetical order (as opposed to natural order). This may lead to unexpected behavior when sorting an array of strings ending with a sequence of numbers. Consider the following example:
@@ -610,10 +508,8 @@
</description>
</method>
<method name="sort_custom">
- <return type="void">
- </return>
- <argument index="0" name="func" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="func" type="Callable" />
<description>
Sorts the array using a custom method. The custom method receives two arguments (a pair of elements from the array) and must return either [code]true[/code] or [code]false[/code]. For two elements [code]a[/code] and [code]b[/code], if the given method returns [code]true[/code], element [code]b[/code] will be after element [code]a[/code] in the array.
[b]Note:[/b] you cannot randomize the return value as the heapsort algorithm expects a deterministic result. Doing so will result in unexpected behavior.
diff --git a/doc/classes/ArrayMesh.xml b/doc/classes/ArrayMesh.xml
index 7fbf53c7d1..637b9a9f16 100644
--- a/doc/classes/ArrayMesh.xml
+++ b/doc/classes/ArrayMesh.xml
@@ -51,190 +51,143 @@
</tutorials>
<methods>
<method name="add_blend_shape">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Adds name for a blend shape that will be added with [method add_surface_from_arrays]. Must be called before surface is added.
</description>
</method>
<method name="add_surface_from_arrays">
- <return type="void">
- </return>
- <argument index="0" name="primitive" type="int" enum="Mesh.PrimitiveType">
- </argument>
- <argument index="1" name="arrays" type="Array">
- </argument>
- <argument index="2" name="blend_shapes" type="Array" default="[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="primitive" type="int" enum="Mesh.PrimitiveType" />
+ <argument index="1" name="arrays" type="Array" />
+ <argument index="2" name="blend_shapes" type="Array" default="[]" />
<argument index="3" name="lods" type="Dictionary" default="{
-}">
- </argument>
- <argument index="4" name="compress_flags" type="int" default="0">
- </argument>
+}" />
+ <argument index="4" name="compress_flags" type="int" default="0" />
<description>
Creates a new surface.
- Surfaces are created to be rendered using a [code]primitive[/code], which may be any of the types defined in [enum Mesh.PrimitiveType]. (As a note, when using indices, it is recommended to only use points, lines or triangles.) [method Mesh.get_surface_count] will become the [code]surf_idx[/code] for this new surface.
+ Surfaces are created to be rendered using a [code]primitive[/code], which may be any of the types defined in [enum Mesh.PrimitiveType]. (As a note, when using indices, it is recommended to only use points, lines, or triangles.) [method Mesh.get_surface_count] will become the [code]surf_idx[/code] for this new surface.
The [code]arrays[/code] argument is an array of arrays. See [enum Mesh.ArrayType] for the values used in this array. For example, [code]arrays[0][/code] is the array of vertices. That first vertex sub-array is always required; the others are optional. Adding an index array puts this function into "index mode" where the vertex and other arrays become the sources of data and the index array defines the vertex order. All sub-arrays must have the same length as the vertex array or be empty, except for [constant Mesh.ARRAY_INDEX] if it is used.
</description>
</method>
<method name="clear_blend_shapes">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all blend shapes from this [ArrayMesh].
</description>
</method>
<method name="clear_surfaces">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all surfaces from this [ArrayMesh].
</description>
</method>
<method name="get_blend_shape_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of blend shapes that the [ArrayMesh] holds.
</description>
</method>
<method name="get_blend_shape_name" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the name of the blend shape at this index.
</description>
</method>
<method name="lightmap_unwrap">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="transform" type="Transform3D">
- </argument>
- <argument index="1" name="texel_size" type="float">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="transform" type="Transform3D" />
+ <argument index="1" name="texel_size" type="float" />
<description>
Will perform a UV unwrap on the [ArrayMesh] to prepare the mesh for lightmapping.
</description>
</method>
<method name="regen_normal_maps">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Will regenerate normal maps for the [ArrayMesh].
</description>
</method>
<method name="set_blend_shape_name">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="name" type="StringName" />
<description>
</description>
</method>
<method name="surface_find_by_name" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="String" />
<description>
Returns the index of the first surface with this name held within this [ArrayMesh]. If none are found, -1 is returned.
</description>
</method>
<method name="surface_get_array_index_len" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="surf_idx" type="int" />
<description>
Returns the length in indices of the index array in the requested surface (see [method add_surface_from_arrays]).
</description>
</method>
<method name="surface_get_array_len" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="surf_idx" type="int" />
<description>
Returns the length in vertices of the vertex array in the requested surface (see [method add_surface_from_arrays]).
</description>
</method>
<method name="surface_get_format" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="surf_idx" type="int" />
<description>
Returns the format mask of the requested surface (see [method add_surface_from_arrays]).
</description>
</method>
<method name="surface_get_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="surf_idx" type="int" />
<description>
Gets the name assigned to this surface.
</description>
</method>
<method name="surface_get_primitive_type" qualifiers="const">
- <return type="int" enum="Mesh.PrimitiveType">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
+ <return type="int" enum="Mesh.PrimitiveType" />
+ <argument index="0" name="surf_idx" type="int" />
<description>
Returns the primitive type of the requested surface (see [method add_surface_from_arrays]).
</description>
</method>
<method name="surface_set_name">
- <return type="void">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="surf_idx" type="int" />
+ <argument index="1" name="name" type="String" />
<description>
Sets a name for a given surface.
</description>
</method>
<method name="surface_update_attribute_region">
- <return type="void">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
- <argument index="1" name="offset" type="int">
- </argument>
- <argument index="2" name="data" type="PackedByteArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="surf_idx" type="int" />
+ <argument index="1" name="offset" type="int" />
+ <argument index="2" name="data" type="PackedByteArray" />
<description>
</description>
</method>
<method name="surface_update_skin_region">
- <return type="void">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
- <argument index="1" name="offset" type="int">
- </argument>
- <argument index="2" name="data" type="PackedByteArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="surf_idx" type="int" />
+ <argument index="1" name="offset" type="int" />
+ <argument index="2" name="data" type="PackedByteArray" />
<description>
</description>
</method>
<method name="surface_update_vertex_region">
- <return type="void">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
- <argument index="1" name="offset" type="int">
- </argument>
- <argument index="2" name="data" type="PackedByteArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="surf_idx" type="int" />
+ <argument index="1" name="offset" type="int" />
+ <argument index="2" name="data" type="PackedByteArray" />
<description>
</description>
</method>
diff --git a/doc/classes/AudioEffectCapture.xml b/doc/classes/AudioEffectCapture.xml
index c7ee621ca6..8e46acbd07 100644
--- a/doc/classes/AudioEffectCapture.xml
+++ b/doc/classes/AudioEffectCapture.xml
@@ -11,55 +11,46 @@
</tutorials>
<methods>
<method name="can_get_buffer" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="frames" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="frames" type="int" />
<description>
Returns [code]true[/code] if at least [code]frames[/code] audio frames are available to read in the internal ring buffer.
</description>
</method>
<method name="clear_buffer">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the internal ring buffer.
</description>
</method>
<method name="get_buffer">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="frames" type="int">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="frames" type="int" />
<description>
Gets the next [code]frames[/code] audio samples from the internal ring buffer.
Returns a [PackedVector2Array] containing exactly [code]frames[/code] audio samples if available, or an empty [PackedVector2Array] if insufficient data was available.
</description>
</method>
<method name="get_buffer_length_frames" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the total size of the internal ring buffer in frames.
</description>
</method>
<method name="get_discarded_frames" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of audio frames discarded from the audio bus due to full buffer.
</description>
</method>
<method name="get_frames_available" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of frames available to read using [method get_buffer].
</description>
</method>
<method name="get_pushed_frames" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of audio frames inserted from the audio bus.
</description>
diff --git a/doc/classes/AudioEffectChorus.xml b/doc/classes/AudioEffectChorus.xml
index 30913a1529..cc93a8fc03 100644
--- a/doc/classes/AudioEffectChorus.xml
+++ b/doc/classes/AudioEffectChorus.xml
@@ -10,110 +10,80 @@
</tutorials>
<methods>
<method name="get_voice_cutoff_hz" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="voice_idx" type="int" />
<description>
</description>
</method>
<method name="get_voice_delay_ms" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="voice_idx" type="int" />
<description>
</description>
</method>
<method name="get_voice_depth_ms" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="voice_idx" type="int" />
<description>
</description>
</method>
<method name="get_voice_level_db" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="voice_idx" type="int" />
<description>
</description>
</method>
<method name="get_voice_pan" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="voice_idx" type="int" />
<description>
</description>
</method>
<method name="get_voice_rate_hz" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="voice_idx" type="int" />
<description>
</description>
</method>
<method name="set_voice_cutoff_hz">
- <return type="void">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
- <argument index="1" name="cutoff_hz" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voice_idx" type="int" />
+ <argument index="1" name="cutoff_hz" type="float" />
<description>
</description>
</method>
<method name="set_voice_delay_ms">
- <return type="void">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
- <argument index="1" name="delay_ms" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voice_idx" type="int" />
+ <argument index="1" name="delay_ms" type="float" />
<description>
</description>
</method>
<method name="set_voice_depth_ms">
- <return type="void">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
- <argument index="1" name="depth_ms" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voice_idx" type="int" />
+ <argument index="1" name="depth_ms" type="float" />
<description>
</description>
</method>
<method name="set_voice_level_db">
- <return type="void">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
- <argument index="1" name="level_db" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voice_idx" type="int" />
+ <argument index="1" name="level_db" type="float" />
<description>
</description>
</method>
<method name="set_voice_pan">
- <return type="void">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
- <argument index="1" name="pan" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voice_idx" type="int" />
+ <argument index="1" name="pan" type="float" />
<description>
</description>
</method>
<method name="set_voice_rate_hz">
- <return type="void">
- </return>
- <argument index="0" name="voice_idx" type="int">
- </argument>
- <argument index="1" name="rate_hz" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voice_idx" type="int" />
+ <argument index="1" name="rate_hz" type="float" />
<description>
</description>
</method>
diff --git a/doc/classes/AudioEffectEQ.xml b/doc/classes/AudioEffectEQ.xml
index c27c2f221c..ddc1af0618 100644
--- a/doc/classes/AudioEffectEQ.xml
+++ b/doc/classes/AudioEffectEQ.xml
@@ -11,28 +11,22 @@
</tutorials>
<methods>
<method name="get_band_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of bands of the equalizer.
</description>
</method>
<method name="get_band_gain_db" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="band_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="band_idx" type="int" />
<description>
Returns the band's gain at the specified index, in dB.
</description>
</method>
<method name="set_band_gain_db">
- <return type="void">
- </return>
- <argument index="0" name="band_idx" type="int">
- </argument>
- <argument index="1" name="volume_db" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="band_idx" type="int" />
+ <argument index="1" name="volume_db" type="float" />
<description>
Sets band's gain at the specified index, in dB.
</description>
diff --git a/doc/classes/AudioEffectRecord.xml b/doc/classes/AudioEffectRecord.xml
index 872ddf3b0f..9656718ee8 100644
--- a/doc/classes/AudioEffectRecord.xml
+++ b/doc/classes/AudioEffectRecord.xml
@@ -12,24 +12,20 @@
</tutorials>
<methods>
<method name="get_recording" qualifiers="const">
- <return type="AudioStreamSample">
- </return>
+ <return type="AudioStreamSample" />
<description>
Returns the recorded sample.
</description>
</method>
<method name="is_recording_active" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether the recording is active or not.
</description>
</method>
<method name="set_recording_active">
- <return type="void">
- </return>
- <argument index="0" name="record" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="record" type="bool" />
<description>
If [code]true[/code], the sound will be recorded. Note that restarting the recording will remove the previously recorded sample.
</description>
diff --git a/doc/classes/AudioEffectSpectrumAnalyzerInstance.xml b/doc/classes/AudioEffectSpectrumAnalyzerInstance.xml
index 53428cdfb8..0febf2abc1 100644
--- a/doc/classes/AudioEffectSpectrumAnalyzerInstance.xml
+++ b/doc/classes/AudioEffectSpectrumAnalyzerInstance.xml
@@ -8,14 +8,10 @@
</tutorials>
<methods>
<method name="get_magnitude_for_frequency_range" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="from_hz" type="float">
- </argument>
- <argument index="1" name="to_hz" type="float">
- </argument>
- <argument index="2" name="mode" type="int" enum="AudioEffectSpectrumAnalyzerInstance.MagnitudeMode" default="1">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="from_hz" type="float" />
+ <argument index="1" name="to_hz" type="float" />
+ <argument index="2" name="mode" type="int" enum="AudioEffectSpectrumAnalyzerInstance.MagnitudeMode" default="1" />
<description>
</description>
</method>
diff --git a/doc/classes/AudioServer.xml b/doc/classes/AudioServer.xml
index dafc0065f6..12a13ecfcc 100644
--- a/doc/classes/AudioServer.xml
+++ b/doc/classes/AudioServer.xml
@@ -14,380 +14,291 @@
</tutorials>
<methods>
<method name="add_bus">
- <return type="void">
- </return>
- <argument index="0" name="at_position" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="at_position" type="int" default="-1" />
<description>
Adds a bus at [code]at_position[/code].
</description>
</method>
<method name="add_bus_effect">
- <return type="void">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="effect" type="AudioEffect">
- </argument>
- <argument index="2" name="at_position" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="effect" type="AudioEffect" />
+ <argument index="2" name="at_position" type="int" default="-1" />
<description>
Adds an [AudioEffect] effect to the bus [code]bus_idx[/code] at [code]at_position[/code].
</description>
</method>
<method name="capture_get_device">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Name of the current device for audio input (see [method capture_get_device_list]).
</description>
</method>
<method name="capture_get_device_list">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the names of all audio input devices detected on the system.
</description>
</method>
<method name="capture_set_device">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
<description>
Sets which audio input device is used for audio capture.
</description>
</method>
<method name="generate_bus_layout" qualifiers="const">
- <return type="AudioBusLayout">
- </return>
+ <return type="AudioBusLayout" />
<description>
Generates an [AudioBusLayout] using the available buses and effects.
</description>
</method>
<method name="get_bus_channels" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="bus_idx" type="int" />
<description>
Returns the amount of channels of the bus at index [code]bus_idx[/code].
</description>
</method>
<method name="get_bus_effect">
- <return type="AudioEffect">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="effect_idx" type="int">
- </argument>
+ <return type="AudioEffect" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="effect_idx" type="int" />
<description>
Returns the [AudioEffect] at position [code]effect_idx[/code] in bus [code]bus_idx[/code].
</description>
</method>
<method name="get_bus_effect_count">
- <return type="int">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="bus_idx" type="int" />
<description>
Returns the number of effects on the bus at [code]bus_idx[/code].
</description>
</method>
<method name="get_bus_effect_instance">
- <return type="AudioEffectInstance">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="effect_idx" type="int">
- </argument>
- <argument index="2" name="channel" type="int" default="0">
- </argument>
+ <return type="AudioEffectInstance" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="effect_idx" type="int" />
+ <argument index="2" name="channel" type="int" default="0" />
<description>
Returns the [AudioEffectInstance] assigned to the given bus and effect indices (and optionally channel).
</description>
</method>
<method name="get_bus_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="bus_name" type="StringName">
- </argument>
+ <return type="int" />
+ <argument index="0" name="bus_name" type="StringName" />
<description>
Returns the index of the bus with the name [code]bus_name[/code].
</description>
</method>
<method name="get_bus_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="bus_idx" type="int" />
<description>
Returns the name of the bus with the index [code]bus_idx[/code].
</description>
</method>
<method name="get_bus_peak_volume_left_db" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="channel" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="channel" type="int" />
<description>
Returns the peak volume of the left speaker at bus index [code]bus_idx[/code] and channel index [code]channel[/code].
</description>
</method>
<method name="get_bus_peak_volume_right_db" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="channel" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="channel" type="int" />
<description>
Returns the peak volume of the right speaker at bus index [code]bus_idx[/code] and channel index [code]channel[/code].
</description>
</method>
<method name="get_bus_send" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="bus_idx" type="int" />
<description>
Returns the name of the bus that the bus at index [code]bus_idx[/code] sends to.
</description>
</method>
<method name="get_bus_volume_db" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="bus_idx" type="int" />
<description>
Returns the volume of the bus at index [code]bus_idx[/code] in dB.
</description>
</method>
<method name="get_device_list">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the names of all audio devices detected on the system.
</description>
</method>
<method name="get_mix_rate" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the sample rate at the output of the [AudioServer].
</description>
</method>
<method name="get_output_latency" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the audio driver's output latency.
</description>
</method>
<method name="get_speaker_mode" qualifiers="const">
- <return type="int" enum="AudioServer.SpeakerMode">
- </return>
+ <return type="int" enum="AudioServer.SpeakerMode" />
<description>
Returns the speaker configuration.
</description>
</method>
<method name="get_time_since_last_mix" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the relative time since the last mix occurred.
</description>
</method>
<method name="get_time_to_next_mix" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the relative time until the next mix occurs.
</description>
</method>
<method name="is_bus_bypassing_effects" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bus_idx" type="int" />
<description>
If [code]true[/code], the bus at index [code]bus_idx[/code] is bypassing effects.
</description>
</method>
<method name="is_bus_effect_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="effect_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="effect_idx" type="int" />
<description>
If [code]true[/code], the effect at index [code]effect_idx[/code] on the bus at index [code]bus_idx[/code] is enabled.
</description>
</method>
<method name="is_bus_mute" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bus_idx" type="int" />
<description>
If [code]true[/code], the bus at index [code]bus_idx[/code] is muted.
</description>
</method>
<method name="is_bus_solo" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bus_idx" type="int" />
<description>
If [code]true[/code], the bus at index [code]bus_idx[/code] is in solo mode.
</description>
</method>
<method name="lock">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Locks the audio driver's main loop.
[b]Note:[/b] Remember to unlock it afterwards.
</description>
</method>
<method name="move_bus">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="to_index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="to_index" type="int" />
<description>
Moves the bus from index [code]index[/code] to index [code]to_index[/code].
</description>
</method>
<method name="remove_bus">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes the bus at index [code]index[/code].
</description>
</method>
<method name="remove_bus_effect">
- <return type="void">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="effect_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="effect_idx" type="int" />
<description>
Removes the effect at index [code]effect_idx[/code] from the bus at index [code]bus_idx[/code].
</description>
</method>
<method name="set_bus_bypass_effects">
- <return type="void">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], the bus at index [code]bus_idx[/code] is bypassing effects.
</description>
</method>
<method name="set_bus_effect_enabled">
- <return type="void">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="effect_idx" type="int">
- </argument>
- <argument index="2" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="effect_idx" type="int" />
+ <argument index="2" name="enabled" type="bool" />
<description>
If [code]true[/code], the effect at index [code]effect_idx[/code] on the bus at index [code]bus_idx[/code] is enabled.
</description>
</method>
<method name="set_bus_layout">
- <return type="void">
- </return>
- <argument index="0" name="bus_layout" type="AudioBusLayout">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bus_layout" type="AudioBusLayout" />
<description>
Overwrites the currently used [AudioBusLayout].
</description>
</method>
<method name="set_bus_mute">
- <return type="void">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], the bus at index [code]bus_idx[/code] is muted.
</description>
</method>
<method name="set_bus_name">
- <return type="void">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="name" type="String" />
<description>
Sets the name of the bus at index [code]bus_idx[/code] to [code]name[/code].
</description>
</method>
<method name="set_bus_send">
- <return type="void">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="send" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="send" type="StringName" />
<description>
Connects the output of the bus at [code]bus_idx[/code] to the bus named [code]send[/code].
</description>
</method>
<method name="set_bus_solo">
- <return type="void">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], the bus at index [code]bus_idx[/code] is in solo mode.
</description>
</method>
<method name="set_bus_volume_db">
- <return type="void">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="volume_db" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="volume_db" type="float" />
<description>
Sets the volume of the bus at index [code]bus_idx[/code] to [code]volume_db[/code].
</description>
</method>
<method name="swap_bus_effects">
- <return type="void">
- </return>
- <argument index="0" name="bus_idx" type="int">
- </argument>
- <argument index="1" name="effect_idx" type="int">
- </argument>
- <argument index="2" name="by_effect_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bus_idx" type="int" />
+ <argument index="1" name="effect_idx" type="int" />
+ <argument index="2" name="by_effect_idx" type="int" />
<description>
Swaps the position of two effects in bus [code]bus_idx[/code].
</description>
</method>
<method name="unlock">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Unlocks the audio driver's main loop. (After locking it, you should always unlock it.)
</description>
diff --git a/doc/classes/AudioStream.xml b/doc/classes/AudioStream.xml
index bbfec579bb..8a58b178d8 100644
--- a/doc/classes/AudioStream.xml
+++ b/doc/classes/AudioStream.xml
@@ -14,8 +14,7 @@
</tutorials>
<methods>
<method name="get_length" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the length of the audio stream in seconds.
</description>
diff --git a/doc/classes/AudioStreamGeneratorPlayback.xml b/doc/classes/AudioStreamGeneratorPlayback.xml
index 503f72a048..d99d041053 100644
--- a/doc/classes/AudioStreamGeneratorPlayback.xml
+++ b/doc/classes/AudioStreamGeneratorPlayback.xml
@@ -12,48 +12,39 @@
</tutorials>
<methods>
<method name="can_push_buffer" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="amount" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="amount" type="int" />
<description>
Returns [code]true[/code] if a buffer of the size [code]amount[/code] can be pushed to the audio sample data buffer without overflowing it, [code]false[/code] otherwise.
</description>
</method>
<method name="clear_buffer">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the audio sample data buffer.
</description>
</method>
<method name="get_frames_available" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of audio data frames left to play. If this returned number reaches [code]0[/code], the audio will stop playing until frames are added again. Therefore, make sure your script can always generate and push new audio frames fast enough to avoid audio cracking.
</description>
</method>
<method name="get_skips" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="push_buffer">
- <return type="bool">
- </return>
- <argument index="0" name="frames" type="PackedVector2Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="frames" type="PackedVector2Array" />
<description>
Pushes several audio data frames to the buffer. This is usually more efficient than [method push_frame] in C# and compiled languages via GDNative, but [method push_buffer] may be [i]less[/i] efficient in GDScript.
</description>
</method>
<method name="push_frame">
- <return type="bool">
- </return>
- <argument index="0" name="frame" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="frame" type="Vector2" />
<description>
Pushes a single audio data frame to the buffer. This is usually less efficient than [method push_buffer] in C# and compiled languages via GDNative, but [method push_frame] may be [i]more[/i] efficient in GDScript.
</description>
diff --git a/doc/classes/AudioStreamPlayer.xml b/doc/classes/AudioStreamPlayer.xml
index 7c7f7e0cea..a6c437f875 100644
--- a/doc/classes/AudioStreamPlayer.xml
+++ b/doc/classes/AudioStreamPlayer.xml
@@ -17,40 +17,33 @@
</tutorials>
<methods>
<method name="get_playback_position">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the position in the [AudioStream] in seconds.
</description>
</method>
<method name="get_stream_playback">
- <return type="AudioStreamPlayback">
- </return>
+ <return type="AudioStreamPlayback" />
<description>
Returns the [AudioStreamPlayback] object associated with this [AudioStreamPlayer].
</description>
</method>
<method name="play">
- <return type="void">
- </return>
- <argument index="0" name="from_position" type="float" default="0.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_position" type="float" default="0.0" />
<description>
Plays the audio from the given [code]from_position[/code], in seconds.
</description>
</method>
<method name="seek">
- <return type="void">
- </return>
- <argument index="0" name="to_position" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="to_position" type="float" />
<description>
Sets the position from which audio will be played, in seconds.
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the audio.
</description>
diff --git a/doc/classes/AudioStreamPlayer2D.xml b/doc/classes/AudioStreamPlayer2D.xml
index b1e18ab550..c40c223091 100644
--- a/doc/classes/AudioStreamPlayer2D.xml
+++ b/doc/classes/AudioStreamPlayer2D.xml
@@ -13,40 +13,33 @@
</tutorials>
<methods>
<method name="get_playback_position">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the position in the [AudioStream].
</description>
</method>
<method name="get_stream_playback">
- <return type="AudioStreamPlayback">
- </return>
+ <return type="AudioStreamPlayback" />
<description>
Returns the [AudioStreamPlayback] object associated with this [AudioStreamPlayer2D].
</description>
</method>
<method name="play">
- <return type="void">
- </return>
- <argument index="0" name="from_position" type="float" default="0.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_position" type="float" default="0.0" />
<description>
Plays the audio from the given position [code]from_position[/code], in seconds.
</description>
</method>
<method name="seek">
- <return type="void">
- </return>
- <argument index="0" name="to_position" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="to_position" type="float" />
<description>
Sets the position from which audio will be played, in seconds.
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the audio.
</description>
diff --git a/doc/classes/AudioStreamPlayer3D.xml b/doc/classes/AudioStreamPlayer3D.xml
index 3bd20b4b9b..584f03399c 100644
--- a/doc/classes/AudioStreamPlayer3D.xml
+++ b/doc/classes/AudioStreamPlayer3D.xml
@@ -14,40 +14,33 @@
</tutorials>
<methods>
<method name="get_playback_position">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the position in the [AudioStream].
</description>
</method>
<method name="get_stream_playback">
- <return type="AudioStreamPlayback">
- </return>
+ <return type="AudioStreamPlayback" />
<description>
Returns the [AudioStreamPlayback] object associated with this [AudioStreamPlayer3D].
</description>
</method>
<method name="play">
- <return type="void">
- </return>
- <argument index="0" name="from_position" type="float" default="0.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_position" type="float" default="0.0" />
<description>
Plays the audio from the given position [code]from_position[/code], in seconds.
</description>
</method>
<method name="seek">
- <return type="void">
- </return>
- <argument index="0" name="to_position" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="to_position" type="float" />
<description>
Sets the position from which audio will be played, in seconds.
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the audio.
</description>
diff --git a/doc/classes/AudioStreamSample.xml b/doc/classes/AudioStreamSample.xml
index 5a0e71a0f8..7e1155d89b 100644
--- a/doc/classes/AudioStreamSample.xml
+++ b/doc/classes/AudioStreamSample.xml
@@ -11,10 +11,8 @@
</tutorials>
<methods>
<method name="save_to_wav">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Saves the AudioStreamSample as a WAV file to [code]path[/code]. Samples with IMA ADPCM format can't be saved.
[b]Note:[/b] A [code].wav[/code] extension is automatically appended to [code]path[/code] if it is missing.
diff --git a/doc/classes/BaseButton.xml b/doc/classes/BaseButton.xml
index d842bac54a..889c703b07 100644
--- a/doc/classes/BaseButton.xml
+++ b/doc/classes/BaseButton.xml
@@ -10,40 +10,33 @@
</tutorials>
<methods>
<method name="_pressed" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Called when the button is pressed. If you need to know the button's pressed state (and [member toggle_mode] is active), use [method _toggled] instead.
</description>
</method>
<method name="_toggled" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="button_pressed" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="button_pressed" type="bool" />
<description>
Called when the button is toggled (only if [member toggle_mode] is active).
</description>
</method>
<method name="get_draw_mode" qualifiers="const">
- <return type="int" enum="BaseButton.DrawMode">
- </return>
+ <return type="int" enum="BaseButton.DrawMode" />
<description>
Returns the visual state used to draw the button. This is useful mainly when implementing your own draw code by either overriding _draw() or connecting to "draw" signal. The visual state of the button is defined by the [enum DrawMode] enum.
</description>
</method>
<method name="is_hovered" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the mouse has entered the button and has not left it yet.
</description>
</method>
<method name="set_pressed_no_signal">
- <return type="void">
- </return>
- <argument index="0" name="pressed" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="pressed" type="bool" />
<description>
Changes the [member pressed] state of the button, without emitting [signal toggled]. Use when you just want to change the state of the button without sending the pressed event (e.g. when initializing scene). Only works if [member toggle_mode] is [code]true[/code].
[b]Note:[/b] This method doesn't unpress other buttons in [member button_group].
@@ -104,8 +97,7 @@
</description>
</signal>
<signal name="toggled">
- <argument index="0" name="button_pressed" type="bool">
- </argument>
+ <argument index="0" name="button_pressed" type="bool" />
<description>
Emitted when the button was just toggled between pressed and normal states (only if [member toggle_mode] is active). The new state is contained in the [code]button_pressed[/code] argument.
</description>
diff --git a/doc/classes/BaseMaterial3D.xml b/doc/classes/BaseMaterial3D.xml
index 2a378ed03e..bbf7c5eb6d 100644
--- a/doc/classes/BaseMaterial3D.xml
+++ b/doc/classes/BaseMaterial3D.xml
@@ -11,61 +11,46 @@
</tutorials>
<methods>
<method name="get_feature" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="feature" type="int" enum="BaseMaterial3D.Feature">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="feature" type="int" enum="BaseMaterial3D.Feature" />
<description>
Returns [code]true[/code], if the specified [enum Feature] is enabled.
</description>
</method>
<method name="get_flag" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="flag" type="int" enum="BaseMaterial3D.Flags">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="flag" type="int" enum="BaseMaterial3D.Flags" />
<description>
Returns [code]true[/code], if the specified flag is enabled. See [enum Flags] enumerator for options.
</description>
</method>
<method name="get_texture" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="param" type="int" enum="BaseMaterial3D.TextureParam">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="param" type="int" enum="BaseMaterial3D.TextureParam" />
<description>
Returns the [Texture] associated with the specified [enum TextureParam].
</description>
</method>
<method name="set_feature">
- <return type="void">
- </return>
- <argument index="0" name="feature" type="int" enum="BaseMaterial3D.Feature">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="feature" type="int" enum="BaseMaterial3D.Feature" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], enables the specified [enum Feature]. Many features that are available in [BaseMaterial3D]s need to be enabled before use. This way the cost for using the feature is only incurred when specified. Features can also be enabled by setting the corresponding member to [code]true[/code].
</description>
</method>
<method name="set_flag">
- <return type="void">
- </return>
- <argument index="0" name="flag" type="int" enum="BaseMaterial3D.Flags">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="flag" type="int" enum="BaseMaterial3D.Flags" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], enables the specified flag. Flags are optional behavior that can be turned on and off. Only one flag can be enabled at a time with this function, the flag enumerators cannot be bit-masked together to enable or disable multiple flags at once. Flags can also be enabled by setting the corresponding member to [code]true[/code]. See [enum Flags] enumerator for options.
</description>
</method>
<method name="set_texture">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="BaseMaterial3D.TextureParam">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="BaseMaterial3D.TextureParam" />
+ <argument index="1" name="texture" type="Texture2D" />
<description>
Sets the texture for the slot specified by [code]param[/code]. See [enum TextureParam] for available slots.
</description>
diff --git a/doc/classes/Basis.xml b/doc/classes/Basis.xml
index bd1abe914d..9a4dd15c63 100644
--- a/doc/classes/Basis.xml
+++ b/doc/classes/Basis.xml
@@ -20,243 +20,191 @@
</tutorials>
<methods>
<method name="Basis" qualifiers="constructor">
- <return type="Basis">
- </return>
+ <return type="Basis" />
<description>
Constructs a default-initialized [Basis] set to [constant IDENTITY].
</description>
</method>
<method name="Basis" qualifiers="constructor">
- <return type="Basis">
- </return>
- <argument index="0" name="from" type="Basis">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="from" type="Basis" />
<description>
Constructs a [Basis] as a copy of the given [Basis].
</description>
</method>
<method name="Basis" qualifiers="constructor">
- <return type="Basis">
- </return>
- <argument index="0" name="axis" type="Vector3">
- </argument>
- <argument index="1" name="phi" type="float">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="axis" type="Vector3" />
+ <argument index="1" name="phi" type="float" />
<description>
Constructs a pure rotation basis matrix, rotated around the given [code]axis[/code] by [code]phi[/code], in radians. The axis must be a normalized vector.
</description>
</method>
<method name="Basis" qualifiers="constructor">
- <return type="Basis">
- </return>
- <argument index="0" name="euler" type="Vector3">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="euler" type="Vector3" />
<description>
Constructs a pure rotation basis matrix from the given Euler angles (in the YXZ convention: when *composing*, first Y, then X, and Z last), given in the vector format as (X angle, Y angle, Z angle).
Consider using the [Quaternion] constructor instead, which uses a quaternion instead of Euler angles.
</description>
</method>
<method name="Basis" qualifiers="constructor">
- <return type="Basis">
- </return>
- <argument index="0" name="from" type="Quaternion">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="from" type="Quaternion" />
<description>
Constructs a pure rotation basis matrix from the given quaternion.
</description>
</method>
<method name="Basis" qualifiers="constructor">
- <return type="Basis">
- </return>
- <argument index="0" name="x_axis" type="Vector3">
- </argument>
- <argument index="1" name="y_axis" type="Vector3">
- </argument>
- <argument index="2" name="z_axis" type="Vector3">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="x_axis" type="Vector3" />
+ <argument index="1" name="y_axis" type="Vector3" />
+ <argument index="2" name="z_axis" type="Vector3" />
<description>
Constructs a basis matrix from 3 axis vectors (matrix columns).
</description>
</method>
<method name="determinant" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the determinant of the basis matrix. If the basis is uniformly scaled, its determinant is the square of the scale.
A negative determinant means the basis has a negative scale. A zero determinant means the basis isn't invertible, and is usually considered invalid.
</description>
</method>
<method name="get_euler" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the basis's rotation in the form of Euler angles (in 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).
Consider using the [method get_rotation_quaternion] method instead, which returns a [Quaternion] quaternion instead of Euler angles.
</description>
</method>
<method name="get_orthogonal_index" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
This function considers a discretization of rotations into 24 points on unit sphere, lying along the vectors (x,y,z) with each component being either -1, 0, or 1, and returns the index of the point best representing the orientation of the object. It is mainly used by the [GridMap] editor. For further details, refer to the Godot source code.
</description>
</method>
<method name="get_rotation_quaternion" qualifiers="const">
- <return type="Quaternion">
- </return>
+ <return type="Quaternion" />
<description>
Returns the basis's rotation in the form of a quaternion. See [method get_euler] if you need Euler angles, but keep in mind quaternions should generally be preferred to Euler angles.
</description>
</method>
<method name="get_scale" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Assuming that the matrix is the combination of a rotation and scaling, return the absolute value of scaling factors along each axis.
</description>
</method>
<method name="inverse" qualifiers="const">
- <return type="Basis">
- </return>
+ <return type="Basis" />
<description>
Returns the inverse of the matrix.
</description>
</method>
<method name="is_equal_approx" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="b" type="Basis">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="b" type="Basis" />
<description>
Returns [code]true[/code] if this basis and [code]b[/code] are approximately equal, by calling [code]is_equal_approx[/code] on each component.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Basis">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Basis" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Basis">
- </return>
- <argument index="0" name="right" type="Basis">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="right" type="Basis" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Basis">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="right" type="float" />
<description>
This operator multiplies all components of the [Basis], which scales it uniformly.
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Basis">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="right" type="int" />
<description>
This operator multiplies all components of the [Basis], which scales it uniformly.
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Basis">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Basis" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="orthonormalized" qualifiers="const">
- <return type="Basis">
- </return>
+ <return type="Basis" />
<description>
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.
</description>
</method>
<method name="rotated" qualifiers="const">
- <return type="Basis">
- </return>
- <argument index="0" name="axis" type="Vector3">
- </argument>
- <argument index="1" name="phi" type="float">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="axis" type="Vector3" />
+ <argument index="1" name="phi" type="float" />
<description>
Introduce an additional rotation around the given axis by phi (radians). The axis must be a normalized vector.
</description>
</method>
<method name="scaled" qualifiers="const">
- <return type="Basis">
- </return>
- <argument index="0" name="scale" type="Vector3">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="scale" type="Vector3" />
<description>
Introduce an additional scaling specified by the given 3D scaling factor.
</description>
</method>
<method name="slerp" qualifiers="const">
- <return type="Basis">
- </return>
- <argument index="0" name="to" type="Basis">
- </argument>
- <argument index="1" name="weight" type="float">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="to" type="Basis" />
+ <argument index="1" name="weight" type="float" />
<description>
Assuming that the matrix is a proper rotation matrix, slerp performs a spherical-linear interpolation with another rotation matrix.
</description>
</method>
<method name="tdotx" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="with" type="Vector3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="with" type="Vector3" />
<description>
Transposed dot product with the X axis of the matrix.
</description>
</method>
<method name="tdoty" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="with" type="Vector3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="with" type="Vector3" />
<description>
Transposed dot product with the Y axis of the matrix.
</description>
</method>
<method name="tdotz" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="with" type="Vector3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="with" type="Vector3" />
<description>
Transposed dot product with the Z axis of the matrix.
</description>
</method>
<method name="transposed" qualifiers="const">
- <return type="Basis">
- </return>
+ <return type="Basis" />
<description>
Returns the transposed version of the matrix.
</description>
diff --git a/doc/classes/BitMap.xml b/doc/classes/BitMap.xml
index 83e598d2ba..9a349c957f 100644
--- a/doc/classes/BitMap.xml
+++ b/doc/classes/BitMap.xml
@@ -10,66 +10,51 @@
</tutorials>
<methods>
<method name="create">
- <return type="void">
- </return>
- <argument index="0" name="size" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="Vector2" />
<description>
Creates a bitmap with the specified size, filled with [code]false[/code].
</description>
</method>
<method name="create_from_image_alpha">
- <return type="void">
- </return>
- <argument index="0" name="image" type="Image">
- </argument>
- <argument index="1" name="threshold" type="float" default="0.1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="image" type="Image" />
+ <argument index="1" name="threshold" type="float" default="0.1" />
<description>
Creates a bitmap that matches the given image dimensions, every element of the bitmap is set to [code]false[/code] if the alpha value of the image at that position is equal to [code]threshold[/code] or less, and [code]true[/code] in other case.
</description>
</method>
<method name="get_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="position" type="Vector2" />
<description>
Returns bitmap's value at the specified position.
</description>
</method>
<method name="get_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns bitmap's dimensions.
</description>
</method>
<method name="get_true_bit_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of bitmap elements that are set to [code]true[/code].
</description>
</method>
<method name="grow_mask">
- <return type="void">
- </return>
- <argument index="0" name="pixels" type="int">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="pixels" type="int" />
+ <argument index="1" name="rect" type="Rect2" />
<description>
Applies morphological dilation to the bitmap. The first argument is the dilation amount, Rect2 is the area where the dilation will be applied.
</description>
</method>
<method name="opaque_to_polygons" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="rect" type="Rect2">
- </argument>
- <argument index="1" name="epsilon" type="float" default="2.0">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="rect" type="Rect2" />
+ <argument index="1" name="epsilon" type="float" default="2.0" />
<description>
Creates an [Array] of polygons covering a rectangular portion of the bitmap. It uses a marching squares algorithm, followed by Ramer-Douglas-Peucker (RDP) reduction of the number of vertices. Each polygon is described as a [PackedVector2Array] of its vertices.
To get polygons covering the whole bitmap, pass:
@@ -80,23 +65,17 @@
</description>
</method>
<method name="set_bit">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="bit" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="bit" type="bool" />
<description>
Sets the bitmap's element at the specified position, to the specified value.
</description>
</method>
<method name="set_bit_rect">
- <return type="void">
- </return>
- <argument index="0" name="rect" type="Rect2">
- </argument>
- <argument index="1" name="bit" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rect" type="Rect2" />
+ <argument index="1" name="bit" type="bool" />
<description>
Sets a rectangular portion of the bitmap to the specified value.
</description>
diff --git a/doc/classes/Bone2D.xml b/doc/classes/Bone2D.xml
index b8d5544d59..f9f3ea21f1 100644
--- a/doc/classes/Bone2D.xml
+++ b/doc/classes/Bone2D.xml
@@ -13,88 +13,73 @@
</tutorials>
<methods>
<method name="apply_rest">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stores the node's current transforms in [member rest].
</description>
</method>
<method name="get_autocalculate_length_and_angle" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether this [code]Bone2D[/code] node is going to autocalculate its length and bone angle using its first [code]Bone2D[/code] child node, if one exists. If there are no [code]Bone2D[/code] children, then it cannot autocalculate these values and will print a warning.
</description>
</method>
<method name="get_bone_angle" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the angle of the bone in the [code]Bone2D[/code] node.
[b]Note:[/b] This is different from the [code]Bone2D[/code]'s rotation. The bone angle is the rotation of the bone shown by the [code]Bone2D[/code] gizmo, and because [code]Bone2D[/code] bones are based on positions, this can vary from the actual rotation of the [code]Bone2D[/code] node.
</description>
</method>
<method name="get_default_length" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Deprecated. Please use [code]get_length[/code] instead.
</description>
</method>
<method name="get_index_in_skeleton" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the node's index as part of the entire skeleton. See [Skeleton2D].
</description>
</method>
<method name="get_length" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the length of the bone in the [code]Bone2D[/code] node.
</description>
</method>
<method name="get_skeleton_rest" qualifiers="const">
- <return type="Transform2D">
- </return>
+ <return type="Transform2D" />
<description>
Returns the node's [member rest] [code]Transform2D[/code] if it doesn't have a parent, or its rest pose relative to its parent.
</description>
</method>
<method name="set_autocalculate_length_and_angle">
- <return type="void">
- </return>
- <argument index="0" name="auto_calculate" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="auto_calculate" type="bool" />
<description>
When set to [code]true[/code], the [code]Bone2D[/code] node will attempt to automatically calculate the bone angle and length using the first child [code]Bone2D[/code] node, if one exists. If none exist, the [code]Bone2D[/code] cannot automatically calculate these values and will print a warning.
</description>
</method>
<method name="set_bone_angle">
- <return type="void">
- </return>
- <argument index="0" name="angle" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="angle" type="float" />
<description>
Sets the bone angle for the [code]Bone2D[/code] node. This is typically set to the rotation from the [code]Bone2D[/code] node to a child [code]Bone2D[/code] node.
[b]Note:[/b] This is different from the [code]Bone2D[/code]'s rotation. The bone angle is the rotation of the bone shown by the [code]Bone2D[/code] gizmo, and because [code]Bone2D[/code] bones are based on positions, this can vary from the actual rotation of the [code]Bone2D[/code] node.
</description>
</method>
<method name="set_default_length">
- <return type="void">
- </return>
- <argument index="0" name="default_length" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="default_length" type="float" />
<description>
Deprecated. Please use [code]set_length[/code] instead.
</description>
</method>
<method name="set_length">
- <return type="void">
- </return>
- <argument index="0" name="length" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="length" type="float" />
<description>
Sets the length of the bone in the [code]Bone2D[/code] node.
</description>
diff --git a/doc/classes/BoxContainer.xml b/doc/classes/BoxContainer.xml
index ffa7c9066a..ec81b866f6 100644
--- a/doc/classes/BoxContainer.xml
+++ b/doc/classes/BoxContainer.xml
@@ -10,10 +10,8 @@
</tutorials>
<methods>
<method name="add_spacer">
- <return type="Control">
- </return>
- <argument index="0" name="begin" type="bool">
- </argument>
+ <return type="Control" />
+ <argument index="0" name="begin" type="bool" />
<description>
Adds a [Control] node to the box as a spacer. If [code]begin[/code] is [code]true[/code], it will insert the [Control] node in front of all other children.
</description>
diff --git a/doc/classes/Button.xml b/doc/classes/Button.xml
index 239e0bb2d9..dfbd6c0680 100644
--- a/doc/classes/Button.xml
+++ b/doc/classes/Button.xml
@@ -42,28 +42,22 @@
</tutorials>
<methods>
<method name="clear_opentype_features">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all OpenType features.
</description>
</method>
<method name="get_opentype_feature" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="tag" type="String" />
<description>
Returns OpenType feature [code]tag[/code].
</description>
</method>
<method name="set_opentype_feature">
- <return type="void">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tag" type="String" />
+ <argument index="1" name="value" type="int" />
<description>
Sets OpenType feature [code]tag[/code]. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url].
</description>
@@ -110,64 +104,64 @@
</constant>
</constants>
<theme_items>
- <theme_item name="disabled" type="StyleBox">
+ <theme_item name="disabled" data_type="style" type="StyleBox">
[StyleBox] used when the [Button] is disabled.
</theme_item>
- <theme_item name="focus" type="StyleBox">
+ <theme_item name="focus" data_type="style" type="StyleBox">
[StyleBox] used when the [Button] is focused. It is displayed over the current [StyleBox], so using [StyleBoxEmpty] will just disable the focus visual effect.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
[Font] of the [Button]'s text.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
Default text [Color] of the [Button].
</theme_item>
- <theme_item name="font_disabled_color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
+ <theme_item name="font_disabled_color" data_type="color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
Text [Color] used when the [Button] is disabled.
</theme_item>
- <theme_item name="font_hover_color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
+ <theme_item name="font_hover_color" data_type="color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
Text [Color] used when the [Button] is being hovered.
</theme_item>
- <theme_item name="font_hover_pressed_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_hover_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Text [Color] used when the [Button] is being hovered and pressed.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the [Button].
</theme_item>
- <theme_item name="font_pressed_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Text [Color] used when the [Button] is being pressed.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the [Button]'s text.
</theme_item>
- <theme_item name="hover" type="StyleBox">
+ <theme_item name="hover" data_type="style" type="StyleBox">
[StyleBox] used when the [Button] is being hovered.
</theme_item>
- <theme_item name="hseparation" type="int" default="2">
+ <theme_item name="hseparation" data_type="constant" type="int" default="2">
The horizontal space between [Button]'s icon and text.
</theme_item>
- <theme_item name="icon_disabled_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="icon_disabled_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Icon modulate [Color] used when the [Button] is disabled.
</theme_item>
- <theme_item name="icon_hover_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="icon_hover_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Icon modulate [Color] used when the [Button] is being hovered.
</theme_item>
- <theme_item name="icon_hover_pressed_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="icon_hover_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Icon modulate [Color] used when the [Button] is being hovered and pressed.
</theme_item>
- <theme_item name="icon_normal_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="icon_normal_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Default icon modulate [Color] of the [Button].
</theme_item>
- <theme_item name="icon_pressed_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="icon_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Icon modulate [Color] used when the [Button] is being pressed.
</theme_item>
- <theme_item name="normal" type="StyleBox">
+ <theme_item name="normal" data_type="style" type="StyleBox">
Default [StyleBox] for the [Button].
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
- <theme_item name="pressed" type="StyleBox">
+ <theme_item name="pressed" data_type="style" type="StyleBox">
[StyleBox] used when the [Button] is being pressed.
</theme_item>
</theme_items>
diff --git a/doc/classes/ButtonGroup.xml b/doc/classes/ButtonGroup.xml
index 0b31352611..302a213836 100644
--- a/doc/classes/ButtonGroup.xml
+++ b/doc/classes/ButtonGroup.xml
@@ -11,15 +11,13 @@
</tutorials>
<methods>
<method name="get_buttons">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an [Array] of [Button]s who have this as their [ButtonGroup] (see [member BaseButton.button_group]).
</description>
</method>
<method name="get_pressed_button">
- <return type="BaseButton">
- </return>
+ <return type="BaseButton" />
<description>
Returns the current pressed button.
</description>
@@ -30,8 +28,7 @@
</members>
<signals>
<signal name="pressed">
- <argument index="0" name="button" type="Object">
- </argument>
+ <argument index="0" name="button" type="Object" />
<description>
Emitted when one of the buttons of the group is pressed.
</description>
diff --git a/doc/classes/CPUParticles2D.xml b/doc/classes/CPUParticles2D.xml
index 22f070b73b..ab6897ca1d 100644
--- a/doc/classes/CPUParticles2D.xml
+++ b/doc/classes/CPUParticles2D.xml
@@ -12,97 +12,74 @@
</tutorials>
<methods>
<method name="convert_from_particles">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="Node" />
<description>
Sets this node's properties to match a given [GPUParticles2D] node with an assigned [ParticlesMaterial].
</description>
</method>
<method name="get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter" />
<description>
Returns the base value of the parameter specified by [enum Parameter].
</description>
</method>
<method name="get_param_curve" qualifiers="const">
- <return type="Curve">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter">
- </argument>
+ <return type="Curve" />
+ <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter" />
<description>
Returns the [Curve] of the parameter specified by [enum Parameter].
</description>
</method>
<method name="get_param_randomness" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter" />
<description>
Returns the randomness factor of the parameter specified by [enum Parameter].
</description>
</method>
<method name="get_particle_flag" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="particle_flag" type="int" enum="CPUParticles2D.ParticleFlags">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="particle_flag" type="int" enum="CPUParticles2D.ParticleFlags" />
<description>
Returns the enabled state of the given flag (see [enum ParticleFlags] for options).
</description>
</method>
<method name="restart">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Restarts the particle emitter.
</description>
</method>
<method name="set_param">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter" />
+ <argument index="1" name="value" type="float" />
<description>
Sets the base value of the parameter specified by [enum Parameter].
</description>
</method>
<method name="set_param_curve">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter">
- </argument>
- <argument index="1" name="curve" type="Curve">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter" />
+ <argument index="1" name="curve" type="Curve" />
<description>
Sets the [Curve] of the parameter specified by [enum Parameter].
</description>
</method>
<method name="set_param_randomness">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter">
- </argument>
- <argument index="1" name="randomness" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="CPUParticles2D.Parameter" />
+ <argument index="1" name="randomness" type="float" />
<description>
Sets the randomness factor of the parameter specified by [enum Parameter].
</description>
</method>
<method name="set_particle_flag">
- <return type="void">
- </return>
- <argument index="0" name="particle_flag" type="int" enum="CPUParticles2D.ParticleFlags">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particle_flag" type="int" enum="CPUParticles2D.ParticleFlags" />
+ <argument index="1" name="enable" type="bool" />
<description>
Enables or disables the given flag (see [enum ParticleFlags] for options).
</description>
diff --git a/doc/classes/CPUParticles3D.xml b/doc/classes/CPUParticles3D.xml
index 29e04dda7e..8aa3573996 100644
--- a/doc/classes/CPUParticles3D.xml
+++ b/doc/classes/CPUParticles3D.xml
@@ -11,97 +11,74 @@
</tutorials>
<methods>
<method name="convert_from_particles">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="Node" />
<description>
Sets this node's properties to match a given [GPUParticles3D] node with an assigned [ParticlesMaterial].
</description>
</method>
<method name="get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter" />
<description>
Returns the base value of the parameter specified by [enum Parameter].
</description>
</method>
<method name="get_param_curve" qualifiers="const">
- <return type="Curve">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter">
- </argument>
+ <return type="Curve" />
+ <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter" />
<description>
Returns the [Curve] of the parameter specified by [enum Parameter].
</description>
</method>
<method name="get_param_randomness" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter" />
<description>
Returns the randomness factor of the parameter specified by [enum Parameter].
</description>
</method>
<method name="get_particle_flag" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="particle_flag" type="int" enum="CPUParticles3D.ParticleFlags">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="particle_flag" type="int" enum="CPUParticles3D.ParticleFlags" />
<description>
Returns the enabled state of the given particle flag (see [enum ParticleFlags] for options).
</description>
</method>
<method name="restart">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Restarts the particle emitter.
</description>
</method>
<method name="set_param">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter" />
+ <argument index="1" name="value" type="float" />
<description>
Sets the base value of the parameter specified by [enum Parameter].
</description>
</method>
<method name="set_param_curve">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter">
- </argument>
- <argument index="1" name="curve" type="Curve">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter" />
+ <argument index="1" name="curve" type="Curve" />
<description>
Sets the [Curve] of the parameter specified by [enum Parameter].
</description>
</method>
<method name="set_param_randomness">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter">
- </argument>
- <argument index="1" name="randomness" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="CPUParticles3D.Parameter" />
+ <argument index="1" name="randomness" type="float" />
<description>
Sets the randomness factor of the parameter specified by [enum Parameter].
</description>
</method>
<method name="set_particle_flag">
- <return type="void">
- </return>
- <argument index="0" name="particle_flag" type="int" enum="CPUParticles3D.ParticleFlags">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particle_flag" type="int" enum="CPUParticles3D.ParticleFlags" />
+ <argument index="1" name="enable" type="bool" />
<description>
Enables or disables the given particle flag (see [enum ParticleFlags] for options).
</description>
diff --git a/doc/classes/Callable.xml b/doc/classes/Callable.xml
index 3c61e8278f..5228df706b 100644
--- a/doc/classes/Callable.xml
+++ b/doc/classes/Callable.xml
@@ -37,148 +37,122 @@
</tutorials>
<methods>
<method name="Callable" qualifiers="constructor">
- <return type="Callable">
- </return>
+ <return type="Callable" />
<description>
Constructs a null [Callable] with no object nor method bound.
</description>
</method>
<method name="Callable" qualifiers="constructor">
- <return type="Callable">
- </return>
- <argument index="0" name="from" type="Callable">
- </argument>
+ <return type="Callable" />
+ <argument index="0" name="from" type="Callable" />
<description>
Constructs a [Callable] as a copy of the given [Callable].
</description>
</method>
<method name="Callable" qualifiers="constructor">
- <return type="Callable">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
- <argument index="1" name="method" type="StringName">
- </argument>
+ <return type="Callable" />
+ <argument index="0" name="object" type="Object" />
+ <argument index="1" name="method" type="StringName" />
<description>
Creates a new [Callable] for the method called [code]method[/code] in the specified [code]object[/code].
</description>
</method>
<method name="bind" qualifiers="vararg const">
- <return type="Callable">
- </return>
+ <return type="Callable" />
<description>
Returns a copy of this [Callable] with the arguments bound. Bound arguments are passed after the arguments supplied by [method call].
</description>
</method>
<method name="call" qualifiers="vararg const">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Calls the method represented by this [Callable]. Arguments can be passed and should match the method's signature.
</description>
</method>
<method name="call_deferred" qualifiers="vararg const">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Calls the method represented by this [Callable] in deferred mode, i.e. during the idle frame. Arguments can be passed and should match the method's signature.
</description>
</method>
<method name="get_method" qualifiers="const">
- <return type="StringName">
- </return>
+ <return type="StringName" />
<description>
Returns the name of the method represented by this [Callable].
</description>
</method>
<method name="get_object" qualifiers="const">
- <return type="Object">
- </return>
+ <return type="Object" />
<description>
Returns the object on which this [Callable] is called.
</description>
</method>
<method name="get_object_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the ID of this [Callable]'s object (see [method Object.get_instance_id]).
</description>
</method>
<method name="hash" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the hash value of this [Callable]'s object.
</description>
</method>
<method name="is_custom" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this [Callable] is a custom callable whose behavior differs based on implementation details. Custom callables are used in the engine for various reasons. If [code]true[/code], you can't use [method get_method].
</description>
</method>
<method name="is_null" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this [Callable] has no target to call the method on.
</description>
</method>
<method name="is_standard" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this [Callable] is a standard callable, referencing an object and a method using a [StringName].
</description>
</method>
<method name="is_valid" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the object exists and has a valid function assigned, or is a custom callable.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Callable">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Callable" />
<description>
Returns [code]true[/code] if both [Callable]s invoke different targets.
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Callable">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Callable" />
<description>
Returns [code]true[/code] if both [Callable]s invoke the same custom target.
</description>
</method>
<method name="rpc" qualifiers="vararg const">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Perform an RPC (Remote Procedure Call). This is used for multiplayer and is normally not available unless the function being called has been marked as [i]RPC[/i]. Calling it on unsupported functions will result in an error.
</description>
</method>
<method name="rpc_id" qualifiers="vararg const">
- <return type="void">
- </return>
- <argument index="0" name="peer_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="peer_id" type="int" />
<description>
Perform an RPC (Remote Procedure Call) on a specific peer ID (see multiplayer documentation for reference). This is used for multiplayer and is normally not available unless the function being called has been marked as [i]RPC[/i]. Calling it on unsupported functions will result in an error.
</description>
</method>
<method name="unbind" qualifiers="const">
- <return type="Callable">
- </return>
- <argument index="0" name="argcount" type="int">
- </argument>
+ <return type="Callable" />
+ <argument index="0" name="argcount" type="int" />
<description>
Returns a copy of this [Callable] with the arguments unbound. Calling the returned [Callable] will call the method without the extra arguments that are supplied in the [Callable] on which you are calling this method.
</description>
diff --git a/doc/classes/CallbackTweener.xml b/doc/classes/CallbackTweener.xml
index 8ac285c3df..fab5f06ba8 100644
--- a/doc/classes/CallbackTweener.xml
+++ b/doc/classes/CallbackTweener.xml
@@ -11,10 +11,8 @@
</tutorials>
<methods>
<method name="set_delay">
- <return type="CallbackTweener">
- </return>
- <argument index="0" name="delay" type="float">
- </argument>
+ <return type="CallbackTweener" />
+ <argument index="0" name="delay" type="float" />
<description>
Makes the callback call delayed by given time in seconds. Example:
[codeblock]
diff --git a/doc/classes/Camera2D.xml b/doc/classes/Camera2D.xml
index ac90b6950b..d0ff66ae06 100644
--- a/doc/classes/Camera2D.xml
+++ b/doc/classes/Camera2D.xml
@@ -15,77 +15,62 @@
</tutorials>
<methods>
<method name="align">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Aligns the camera to the tracked node.
</description>
</method>
<method name="force_update_scroll">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Forces the camera to update scroll immediately.
</description>
</method>
<method name="get_camera_position" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the camera position.
</description>
</method>
<method name="get_camera_screen_center" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the location of the [Camera2D]'s screen-center, relative to the origin.
</description>
</method>
<method name="get_drag_margin" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
+ <return type="float" />
+ <argument index="0" name="margin" type="int" enum="Side" />
<description>
Returns the specified [enum Side]'s margin. See also [member drag_bottom_margin], [member drag_top_margin], [member drag_left_margin], and [member drag_right_margin].
</description>
</method>
<method name="get_limit" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
+ <return type="int" />
+ <argument index="0" name="margin" type="int" enum="Side" />
<description>
Returns the camera limit for the specified [enum Side]. See also [member limit_bottom], [member limit_top], [member limit_left], and [member limit_right].
</description>
</method>
<method name="reset_smoothing">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sets the camera's position immediately to its current smoothing destination.
This has no effect if smoothing is disabled.
</description>
</method>
<method name="set_drag_margin">
- <return type="void">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
- <argument index="1" name="drag_margin" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="margin" type="int" enum="Side" />
+ <argument index="1" name="drag_margin" type="float" />
<description>
Sets the specified [enum Side]'s margin. See also [member drag_bottom_margin], [member drag_top_margin], [member drag_left_margin], and [member drag_right_margin].
</description>
</method>
<method name="set_limit">
- <return type="void">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
- <argument index="1" name="limit" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="margin" type="int" enum="Side" />
+ <argument index="1" name="limit" type="int" />
<description>
Sets the camera limit for the specified [enum Side]. See also [member limit_bottom], [member limit_top], [member limit_left], and [member limit_right].
</description>
diff --git a/doc/classes/Camera3D.xml b/doc/classes/Camera3D.xml
index f74baa00a0..2ada0c556d 100644
--- a/doc/classes/Camera3D.xml
+++ b/doc/classes/Camera3D.xml
@@ -11,165 +11,126 @@
</tutorials>
<methods>
<method name="clear_current">
- <return type="void">
- </return>
- <argument index="0" name="enable_next" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable_next" type="bool" default="true" />
<description>
If this is the current camera, remove it from being current. If [code]enable_next[/code] is [code]true[/code], request to make the next camera current, if any.
</description>
</method>
<method name="get_camera_rid" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the camera's RID from the [RenderingServer].
</description>
</method>
<method name="get_camera_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
+ <return type="Transform3D" />
<description>
Gets the camera transform. Subclassed cameras such as [ClippedCamera3D] may provide different transforms than the [Node] transform.
</description>
</method>
<method name="get_cull_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="layer" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="layer" type="int" />
<description>
Returns [code]true[/code] if the given [code]layer[/code] in the [member cull_mask] is enabled, [code]false[/code] otherwise.
</description>
</method>
<method name="get_frustum" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the camera's frustum planes in world space units as an array of [Plane]s in the following order: near, far, left, top, right, bottom. Not to be confused with [member frustum_offset].
</description>
</method>
<method name="is_position_behind" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="world_point" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="world_point" type="Vector3" />
<description>
Returns [code]true[/code] if the given position is behind the camera (the blue part of the linked diagram). [url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/camera3d_position_frustum.png]See this diagram[/url] for an overview of position query methods.
[b]Note:[/b] A position which returns [code]false[/code] may still be outside the camera's field of view.
</description>
</method>
<method name="is_position_in_frustum" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="world_point" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="world_point" type="Vector3" />
<description>
Returns [code]true[/code] if the given position is inside the camera's frustum (the green part of the linked diagram). [url=https://raw.githubusercontent.com/godotengine/godot-docs/master/img/camera3d_position_frustum.png]See this diagram[/url] for an overview of position query methods.
</description>
</method>
<method name="make_current">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Makes this camera the current camera for the [Viewport] (see class description). If the camera node is outside the scene tree, it will attempt to become current once it's added.
</description>
</method>
<method name="project_local_ray_normal" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="screen_point" type="Vector2">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="screen_point" type="Vector2" />
<description>
Returns a normal vector from the screen point location directed along the camera. Orthogonal cameras are normalized. Perspective cameras account for perspective, screen width/height, etc.
</description>
</method>
<method name="project_position" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="screen_point" type="Vector2">
- </argument>
- <argument index="1" name="z_depth" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="screen_point" type="Vector2" />
+ <argument index="1" name="z_depth" type="float" />
<description>
Returns the 3D point in world space that maps to the given 2D coordinate in the [Viewport] rectangle on a plane that is the given [code]z_depth[/code] distance into the scene away from the camera.
</description>
</method>
<method name="project_ray_normal" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="screen_point" type="Vector2">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="screen_point" type="Vector2" />
<description>
Returns a normal vector in world space, that is the result of projecting a point on the [Viewport] rectangle by the camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.
</description>
</method>
<method name="project_ray_origin" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="screen_point" type="Vector2">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="screen_point" type="Vector2" />
<description>
Returns a 3D position in world space, that is the result of projecting a point on the [Viewport] rectangle by the camera projection. This is useful for casting rays in the form of (origin, normal) for object intersection or picking.
</description>
</method>
<method name="set_cull_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="layer" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
Enables or disables the given [code]layer[/code] in the [member cull_mask].
</description>
</method>
<method name="set_frustum">
- <return type="void">
- </return>
- <argument index="0" name="size" type="float">
- </argument>
- <argument index="1" name="offset" type="Vector2">
- </argument>
- <argument index="2" name="z_near" type="float">
- </argument>
- <argument index="3" name="z_far" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="float" />
+ <argument index="1" name="offset" type="Vector2" />
+ <argument index="2" name="z_near" type="float" />
+ <argument index="3" name="z_far" type="float" />
<description>
Sets the camera projection to frustum mode (see [constant PROJECTION_FRUSTUM]), by specifying a [code]size[/code], an [code]offset[/code], and the [code]z_near[/code] and [code]z_far[/code] clip planes in world space units.
</description>
</method>
<method name="set_orthogonal">
- <return type="void">
- </return>
- <argument index="0" name="size" type="float">
- </argument>
- <argument index="1" name="z_near" type="float">
- </argument>
- <argument index="2" name="z_far" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="float" />
+ <argument index="1" name="z_near" type="float" />
+ <argument index="2" name="z_far" type="float" />
<description>
Sets the camera projection to orthogonal mode (see [constant PROJECTION_ORTHOGONAL]), by specifying a [code]size[/code], and the [code]z_near[/code] and [code]z_far[/code] clip planes in world space units. (As a hint, 2D games often use this projection, with values specified in pixels.)
</description>
</method>
<method name="set_perspective">
- <return type="void">
- </return>
- <argument index="0" name="fov" type="float">
- </argument>
- <argument index="1" name="z_near" type="float">
- </argument>
- <argument index="2" name="z_far" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="fov" type="float" />
+ <argument index="1" name="z_near" type="float" />
+ <argument index="2" name="z_far" type="float" />
<description>
Sets the camera projection to perspective mode (see [constant PROJECTION_PERSPECTIVE]), by specifying a [code]fov[/code] (field of view) angle in degrees, and the [code]z_near[/code] and [code]z_far[/code] clip planes in world space units.
</description>
</method>
<method name="unproject_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="world_point" type="Vector3">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="world_point" type="Vector3" />
<description>
Returns the 2D coordinate in the [Viewport] rectangle that maps to the given 3D point in world space.
[b]Note:[/b] When using this to position GUI elements over a 3D viewport, use [method is_position_behind] to prevent them from appearing if the 3D point is behind the camera:
diff --git a/doc/classes/CameraServer.xml b/doc/classes/CameraServer.xml
index e00dc031dc..404ea08851 100644
--- a/doc/classes/CameraServer.xml
+++ b/doc/classes/CameraServer.xml
@@ -12,42 +12,34 @@
</tutorials>
<methods>
<method name="add_feed">
- <return type="void">
- </return>
- <argument index="0" name="feed" type="CameraFeed">
- </argument>
+ <return type="void" />
+ <argument index="0" name="feed" type="CameraFeed" />
<description>
Adds the camera [code]feed[/code] to the camera server.
</description>
</method>
<method name="feeds">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array of [CameraFeed]s.
</description>
</method>
<method name="get_feed">
- <return type="CameraFeed">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="CameraFeed" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the [CameraFeed] corresponding to the camera with the given [code]index[/code].
</description>
</method>
<method name="get_feed_count">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of [CameraFeed]s registered.
</description>
</method>
<method name="remove_feed">
- <return type="void">
- </return>
- <argument index="0" name="feed" type="CameraFeed">
- </argument>
+ <return type="void" />
+ <argument index="0" name="feed" type="CameraFeed" />
<description>
Removes the specified camera [code]feed[/code].
</description>
@@ -55,15 +47,13 @@
</methods>
<signals>
<signal name="camera_feed_added">
- <argument index="0" name="id" type="int">
- </argument>
+ <argument index="0" name="id" type="int" />
<description>
Emitted when a [CameraFeed] is added (e.g. a webcam is plugged in).
</description>
</signal>
<signal name="camera_feed_removed">
- <argument index="0" name="id" type="int">
- </argument>
+ <argument index="0" name="id" type="int" />
<description>
Emitted when a [CameraFeed] is removed (e.g. a webcam is unplugged).
</description>
diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml
index d0950ae741..2c92ce0185 100644
--- a/doc/classes/CanvasItem.xml
+++ b/doc/classes/CanvasItem.xml
@@ -18,327 +18,217 @@
</tutorials>
<methods>
<method name="_draw" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Overridable function called by the engine (if defined) to draw the canvas item.
</description>
</method>
<method name="draw_animation_slice">
- <return type="void">
- </return>
- <argument index="0" name="animation_length" type="float">
- </argument>
- <argument index="1" name="slice_begin" type="float">
- </argument>
- <argument index="2" name="slice_end" type="float">
- </argument>
- <argument index="3" name="offset" type="float" default="0.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="animation_length" type="float" />
+ <argument index="1" name="slice_begin" type="float" />
+ <argument index="2" name="slice_end" type="float" />
+ <argument index="3" name="offset" type="float" default="0.0" />
<description>
Subsequent drawing commands will be ignored unless they fall within the specified animation slice. This is a faster way to implement animations that loop on background rather than redrawing constantly.
</description>
</method>
<method name="draw_arc">
- <return type="void">
- </return>
- <argument index="0" name="center" type="Vector2">
- </argument>
- <argument index="1" name="radius" type="float">
- </argument>
- <argument index="2" name="start_angle" type="float">
- </argument>
- <argument index="3" name="end_angle" type="float">
- </argument>
- <argument index="4" name="point_count" type="int">
- </argument>
- <argument index="5" name="color" type="Color">
- </argument>
- <argument index="6" name="width" type="float" default="1.0">
- </argument>
- <argument index="7" name="antialiased" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="center" type="Vector2" />
+ <argument index="1" name="radius" type="float" />
+ <argument index="2" name="start_angle" type="float" />
+ <argument index="3" name="end_angle" type="float" />
+ <argument index="4" name="point_count" type="int" />
+ <argument index="5" name="color" type="Color" />
+ <argument index="6" name="width" type="float" default="1.0" />
+ <argument index="7" name="antialiased" type="bool" default="false" />
<description>
Draws an arc between the given angles. The larger the value of [code]point_count[/code], the smoother the curve.
</description>
</method>
<method name="draw_char" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="font" type="Font">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="char" type="String">
- </argument>
- <argument index="3" name="next" type="String" default="&quot;&quot;">
- </argument>
- <argument index="4" name="size" type="int" default="-1">
- </argument>
- <argument index="5" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="6" name="outline_size" type="int" default="0">
- </argument>
- <argument index="7" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)">
- </argument>
+ <return type="float" />
+ <argument index="0" name="font" type="Font" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="char" type="String" />
+ <argument index="3" name="next" type="String" default="&quot;&quot;" />
+ <argument index="4" name="size" type="int" default="-1" />
+ <argument index="5" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="6" name="outline_size" type="int" default="0" />
+ <argument index="7" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)" />
<description>
Draws a string character using a custom font. Returns the advance, depending on the character width and kerning with an optional next character.
</description>
</method>
<method name="draw_circle">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="radius" type="float">
- </argument>
- <argument index="2" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="radius" type="float" />
+ <argument index="2" name="color" type="Color" />
<description>
Draws a colored circle.
</description>
</method>
<method name="draw_colored_polygon">
- <return type="void">
- </return>
- <argument index="0" name="points" type="PackedVector2Array">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
- <argument index="2" name="uvs" type="PackedVector2Array" default="PackedVector2Array()">
- </argument>
- <argument index="3" name="texture" type="Texture2D" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="points" type="PackedVector2Array" />
+ <argument index="1" name="color" type="Color" />
+ <argument index="2" name="uvs" type="PackedVector2Array" default="PackedVector2Array()" />
+ <argument index="3" name="texture" type="Texture2D" default="null" />
<description>
Draws a colored polygon of any amount of points, convex or concave.
</description>
</method>
<method name="draw_end_animation">
- <return type="void">
- </return>
+ <return type="void" />
<description>
After submitting all animations slices via [method draw_animation_slice], this function can be used to revert drawing to its default state (all subsequent drawing commands will be visible). If you don't care about this particular use case, usage of this function after submitting the slices is not required.
</description>
</method>
<method name="draw_line">
- <return type="void">
- </return>
- <argument index="0" name="from" type="Vector2">
- </argument>
- <argument index="1" name="to" type="Vector2">
- </argument>
- <argument index="2" name="color" type="Color">
- </argument>
- <argument index="3" name="width" type="float" default="1.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from" type="Vector2" />
+ <argument index="1" name="to" type="Vector2" />
+ <argument index="2" name="color" type="Color" />
+ <argument index="3" name="width" type="float" default="1.0" />
<description>
Draws a line from a 2D point to another, with a given color and width.
</description>
</method>
<method name="draw_mesh">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="Mesh">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
- <argument index="2" name="transform" type="Transform2D" default="Transform2D(1, 0, 0, 1, 0, 0)">
- </argument>
- <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="Mesh" />
+ <argument index="1" name="texture" type="Texture2D" />
+ <argument index="2" name="transform" type="Transform2D" default="Transform2D(1, 0, 0, 1, 0, 0)" />
+ <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draws a [Mesh] in 2D, using the provided texture. See [MeshInstance2D] for related documentation.
</description>
</method>
<method name="draw_multiline">
- <return type="void">
- </return>
- <argument index="0" name="points" type="PackedVector2Array">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
- <argument index="2" name="width" type="float" default="1.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="points" type="PackedVector2Array" />
+ <argument index="1" name="color" type="Color" />
+ <argument index="2" name="width" type="float" default="1.0" />
<description>
Draws multiple, parallel lines with a uniform [code]color[/code].
</description>
</method>
<method name="draw_multiline_colors">
- <return type="void">
- </return>
- <argument index="0" name="points" type="PackedVector2Array">
- </argument>
- <argument index="1" name="colors" type="PackedColorArray">
- </argument>
- <argument index="2" name="width" type="float" default="1.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="points" type="PackedVector2Array" />
+ <argument index="1" name="colors" type="PackedColorArray" />
+ <argument index="2" name="width" type="float" default="1.0" />
<description>
Draws multiple, parallel lines with a uniform [code]width[/code] and segment-by-segment coloring. Colors assigned to line segments match by index between [code]points[/code] and [code]colors[/code].
</description>
</method>
<method name="draw_multiline_string" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="font" type="Font">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="text" type="String">
- </argument>
- <argument index="3" name="align" type="int" enum="HAlign" default="0">
- </argument>
- <argument index="4" name="width" type="float" default="-1">
- </argument>
- <argument index="5" name="max_lines" type="int" default="-1">
- </argument>
- <argument index="6" name="size" type="int" default="-1">
- </argument>
- <argument index="7" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="8" name="outline_size" type="int" default="0">
- </argument>
- <argument index="9" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)">
- </argument>
- <argument index="10" name="flags" type="int" default="51">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="Font" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="text" type="String" />
+ <argument index="3" name="align" type="int" enum="HAlign" default="0" />
+ <argument index="4" name="width" type="float" default="-1" />
+ <argument index="5" name="max_lines" type="int" default="-1" />
+ <argument index="6" name="size" type="int" default="-1" />
+ <argument index="7" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="8" name="outline_size" type="int" default="0" />
+ <argument index="9" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)" />
+ <argument index="10" name="flags" type="int" default="51" />
<description>
Breaks [code]text[/code] to the lines and draws it using the specified [code]font[/code] at the [code]position[/code] (top-left corner). The text will have its color multiplied by [code]modulate[/code]. If [code]clip_w[/code] is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
</description>
</method>
<method name="draw_multimesh">
- <return type="void">
- </return>
- <argument index="0" name="multimesh" type="MultiMesh">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="multimesh" type="MultiMesh" />
+ <argument index="1" name="texture" type="Texture2D" />
<description>
Draws a [MultiMesh] in 2D with the provided texture. See [MultiMeshInstance2D] for related documentation.
</description>
</method>
<method name="draw_polygon">
- <return type="void">
- </return>
- <argument index="0" name="points" type="PackedVector2Array">
- </argument>
- <argument index="1" name="colors" type="PackedColorArray">
- </argument>
- <argument index="2" name="uvs" type="PackedVector2Array" default="PackedVector2Array()">
- </argument>
- <argument index="3" name="texture" type="Texture2D" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="points" type="PackedVector2Array" />
+ <argument index="1" name="colors" type="PackedColorArray" />
+ <argument index="2" name="uvs" type="PackedVector2Array" default="PackedVector2Array()" />
+ <argument index="3" name="texture" type="Texture2D" default="null" />
<description>
Draws a polygon of any amount of points, convex or concave.
</description>
</method>
<method name="draw_polyline">
- <return type="void">
- </return>
- <argument index="0" name="points" type="PackedVector2Array">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
- <argument index="2" name="width" type="float" default="1.0">
- </argument>
- <argument index="3" name="antialiased" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="points" type="PackedVector2Array" />
+ <argument index="1" name="color" type="Color" />
+ <argument index="2" name="width" type="float" default="1.0" />
+ <argument index="3" name="antialiased" type="bool" default="false" />
<description>
Draws interconnected line segments with a uniform [code]color[/code] and [code]width[/code].
</description>
</method>
<method name="draw_polyline_colors">
- <return type="void">
- </return>
- <argument index="0" name="points" type="PackedVector2Array">
- </argument>
- <argument index="1" name="colors" type="PackedColorArray">
- </argument>
- <argument index="2" name="width" type="float" default="1.0">
- </argument>
- <argument index="3" name="antialiased" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="points" type="PackedVector2Array" />
+ <argument index="1" name="colors" type="PackedColorArray" />
+ <argument index="2" name="width" type="float" default="1.0" />
+ <argument index="3" name="antialiased" type="bool" default="false" />
<description>
Draws interconnected line segments with a uniform [code]width[/code] and segment-by-segment coloring. Colors assigned to line segments match by index between [code]points[/code] and [code]colors[/code].
</description>
</method>
<method name="draw_primitive">
- <return type="void">
- </return>
- <argument index="0" name="points" type="PackedVector2Array">
- </argument>
- <argument index="1" name="colors" type="PackedColorArray">
- </argument>
- <argument index="2" name="uvs" type="PackedVector2Array">
- </argument>
- <argument index="3" name="texture" type="Texture2D" default="null">
- </argument>
- <argument index="4" name="width" type="float" default="1.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="points" type="PackedVector2Array" />
+ <argument index="1" name="colors" type="PackedColorArray" />
+ <argument index="2" name="uvs" type="PackedVector2Array" />
+ <argument index="3" name="texture" type="Texture2D" default="null" />
+ <argument index="4" name="width" type="float" default="1.0" />
<description>
Draws a custom primitive. 1 point for a point, 2 points for a line, 3 points for a triangle, and 4 points for a quad.
</description>
</method>
<method name="draw_rect">
- <return type="void">
- </return>
- <argument index="0" name="rect" type="Rect2">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
- <argument index="2" name="filled" type="bool" default="true">
- </argument>
- <argument index="3" name="width" type="float" default="1.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rect" type="Rect2" />
+ <argument index="1" name="color" type="Color" />
+ <argument index="2" name="filled" type="bool" default="true" />
+ <argument index="3" name="width" type="float" default="1.0" />
<description>
Draws a rectangle. If [code]filled[/code] is [code]true[/code], the rectangle will be filled with the [code]color[/code] specified. If [code]filled[/code] is [code]false[/code], the rectangle will be drawn as a stroke with the [code]color[/code] and [code]width[/code] specified.
[b]Note:[/b] [code]width[/code] is only effective if [code]filled[/code] is [code]false[/code].
</description>
</method>
<method name="draw_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="rotation" type="float" default="0.0">
- </argument>
- <argument index="2" name="scale" type="Vector2" default="Vector2(1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="rotation" type="float" default="0.0" />
+ <argument index="2" name="scale" type="Vector2" default="Vector2(1, 1)" />
<description>
Sets a custom transform for drawing via components. Anything drawn afterwards will be transformed by this.
</description>
</method>
<method name="draw_set_transform_matrix">
- <return type="void">
- </return>
- <argument index="0" name="xform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="xform" type="Transform2D" />
<description>
Sets a custom transform for drawing via matrix. Anything drawn afterwards will be transformed by this.
</description>
</method>
<method name="draw_string" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="font" type="Font">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="text" type="String">
- </argument>
- <argument index="3" name="align" type="int" enum="HAlign" default="0">
- </argument>
- <argument index="4" name="width" type="float" default="-1">
- </argument>
- <argument index="5" name="size" type="int" default="-1">
- </argument>
- <argument index="6" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="7" name="outline_size" type="int" default="0">
- </argument>
- <argument index="8" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)">
- </argument>
- <argument index="9" name="flags" type="int" default="3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="Font" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="text" type="String" />
+ <argument index="3" name="align" type="int" enum="HAlign" default="0" />
+ <argument index="4" name="width" type="float" default="-1" />
+ <argument index="5" name="size" type="int" default="-1" />
+ <argument index="6" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="7" name="outline_size" type="int" default="0" />
+ <argument index="8" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)" />
+ <argument index="9" name="flags" type="int" default="3" />
<description>
Draws [code]text[/code] using the specified [code]font[/code] at the [code]position[/code] (bottom-left corner using the baseline of the font). The text will have its color multiplied by [code]modulate[/code]. If [code]clip_w[/code] is greater than or equal to 0, the text will be clipped if it exceeds the specified width.
[b]Example using the default project font:[/b]
@@ -364,223 +254,177 @@
</description>
</method>
<method name="draw_style_box">
- <return type="void">
- </return>
- <argument index="0" name="style_box" type="StyleBox">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="style_box" type="StyleBox" />
+ <argument index="1" name="rect" type="Rect2" />
<description>
Draws a styled rectangle.
</description>
</method>
<method name="draw_texture">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="Texture2D">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
- <argument index="2" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="Texture2D" />
+ <argument index="1" name="position" type="Vector2" />
+ <argument index="2" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draws a texture at a given position.
</description>
</method>
<method name="draw_texture_rect">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="Texture2D">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
- <argument index="2" name="tile" type="bool">
- </argument>
- <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="4" name="transpose" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="Texture2D" />
+ <argument index="1" name="rect" type="Rect2" />
+ <argument index="2" name="tile" type="bool" />
+ <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="4" name="transpose" type="bool" default="false" />
<description>
Draws a textured rectangle at a given position, optionally modulated by a color. If [code]transpose[/code] is [code]true[/code], the texture will have its X and Y coordinates swapped.
</description>
</method>
<method name="draw_texture_rect_region">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="Texture2D">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
- <argument index="2" name="src_rect" type="Rect2">
- </argument>
- <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="4" name="transpose" type="bool" default="false">
- </argument>
- <argument index="5" name="clip_uv" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="Texture2D" />
+ <argument index="1" name="rect" type="Rect2" />
+ <argument index="2" name="src_rect" type="Rect2" />
+ <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="4" name="transpose" type="bool" default="false" />
+ <argument index="5" name="clip_uv" type="bool" default="true" />
<description>
Draws a textured rectangle region at a given position, optionally modulated by a color. If [code]transpose[/code] is [code]true[/code], the texture will have its X and Y coordinates swapped.
</description>
</method>
<method name="force_update_transform">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Forces the transform to update. Transform changes in physics are not instant for performance reasons. Transforms are accumulated and then set. Use this if you need an up-to-date transform when doing physics operations.
</description>
</method>
<method name="get_canvas" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the [RID] of the [World2D] canvas where this item is in.
</description>
</method>
<method name="get_canvas_item" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the canvas item RID used by [RenderingServer] for this item.
</description>
</method>
<method name="get_canvas_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
+ <return type="Transform2D" />
<description>
Returns the transform matrix of this item's canvas.
</description>
</method>
<method name="get_global_mouse_position" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the global position of the mouse.
</description>
</method>
<method name="get_global_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
+ <return type="Transform2D" />
<description>
Returns the global transform matrix of this item.
</description>
</method>
<method name="get_global_transform_with_canvas" qualifiers="const">
- <return type="Transform2D">
- </return>
+ <return type="Transform2D" />
<description>
Returns the global transform matrix of this item in relation to the canvas.
</description>
</method>
<method name="get_local_mouse_position" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the mouse position relative to this item's position.
</description>
</method>
<method name="get_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
+ <return type="Transform2D" />
<description>
Returns the transform matrix of this item.
</description>
</method>
<method name="get_viewport_rect" qualifiers="const">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Returns the viewport's boundaries as a [Rect2].
</description>
</method>
<method name="get_viewport_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
+ <return type="Transform2D" />
<description>
Returns this item's transform in relation to the viewport.
</description>
</method>
<method name="get_world_2d" qualifiers="const">
- <return type="World2D">
- </return>
+ <return type="World2D" />
<description>
Returns the [World2D] where this item is in.
</description>
</method>
<method name="hide">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Hide the [CanvasItem] if it's currently visible.
</description>
</method>
<method name="is_local_transform_notification_enabled" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if local transform notifications are communicated to children.
</description>
</method>
<method name="is_transform_notification_enabled" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if global transform notifications are communicated to children.
</description>
</method>
<method name="is_visible_in_tree" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the node is present in the [SceneTree], its [member visible] property is [code]true[/code] and all its antecedents are also visible. If any antecedent is hidden, this node will not be visible in the scene tree.
</description>
</method>
<method name="make_canvas_position_local" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="screen_point" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="screen_point" type="Vector2" />
<description>
Assigns [code]screen_point[/code] as this node's new local transform.
</description>
</method>
<method name="make_input_local" qualifiers="const">
- <return type="InputEvent">
- </return>
- <argument index="0" name="event" type="InputEvent">
- </argument>
+ <return type="InputEvent" />
+ <argument index="0" name="event" type="InputEvent" />
<description>
Transformations issued by [code]event[/code]'s inputs are applied in local space instead of global space.
</description>
</method>
<method name="set_notify_local_transform">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
If [code]enable[/code] is [code]true[/code], children will be updated with local transform data.
</description>
</method>
<method name="set_notify_transform">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
If [code]enable[/code] is [code]true[/code], children will be updated with global transform data.
</description>
</method>
<method name="show">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Show the [CanvasItem] if it's currently hidden. For controls that inherit [Popup], the correct way to make them visible is to call one of the multiple [code]popup*()[/code] functions instead.
</description>
</method>
<method name="update">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Queue the [CanvasItem] for update. [constant NOTIFICATION_DRAW] will be called on idle time to request redraw.
</description>
diff --git a/doc/classes/CanvasLayer.xml b/doc/classes/CanvasLayer.xml
index eb99368079..616fb24a6f 100644
--- a/doc/classes/CanvasLayer.xml
+++ b/doc/classes/CanvasLayer.xml
@@ -13,8 +13,7 @@
</tutorials>
<methods>
<method name="get_canvas" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the RID of the canvas used by this layer.
</description>
diff --git a/doc/classes/CharacterBody2D.xml b/doc/classes/CharacterBody2D.xml
index e184e7dc82..1ace7ee6bf 100644
--- a/doc/classes/CharacterBody2D.xml
+++ b/doc/classes/CharacterBody2D.xml
@@ -16,24 +16,20 @@
</tutorials>
<methods>
<method name="get_floor_normal" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the surface normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
</description>
</method>
<method name="get_floor_velocity" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the linear velocity of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
</description>
</method>
<method name="get_slide_collision">
- <return type="KinematicCollision2D">
- </return>
- <argument index="0" name="slide_idx" type="int">
- </argument>
+ <return type="KinematicCollision2D" />
+ <argument index="0" name="slide_idx" type="int" />
<description>
Returns a [KinematicCollision2D], which contains information about a collision that occurred during the last call to [method move_and_slide]. Since the body can collide several times in a single call to [method move_and_slide], you must specify the index of the collision in the range 0 to ([method get_slide_count] - 1).
[b]Example usage:[/b]
@@ -54,36 +50,31 @@
</description>
</method>
<method name="get_slide_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of times the body collided and changed direction during the last call to [method move_and_slide].
</description>
</method>
<method name="is_on_ceiling" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the body collided with the ceiling on the last call of [method move_and_slide]. Otherwise, returns [code]false[/code].
</description>
</method>
<method name="is_on_floor" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the body collided with the floor on the last call of [method move_and_slide]. Otherwise, returns [code]false[/code].
</description>
</method>
<method name="is_on_wall" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the body collided with a wall on the last call of [method move_and_slide]. Otherwise, returns [code]false[/code].
</description>
</method>
<method name="move_and_slide">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Moves the body based on [member linear_velocity]. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [CharacterBody2D] or [RigidBody2D], it will also be affected by the motion of the other body. You can use this to make moving and rotating platforms, or to make nodes push other nodes.
This method should be used in [method Node._physics_process] (or in a method called by [method Node._physics_process]), as it uses the physics step's [code]delta[/code] value automatically in calculations. Otherwise, the simulation will run at an incorrect speed.
diff --git a/doc/classes/CharacterBody3D.xml b/doc/classes/CharacterBody3D.xml
index c76e02fac0..577ab5e84c 100644
--- a/doc/classes/CharacterBody3D.xml
+++ b/doc/classes/CharacterBody3D.xml
@@ -17,59 +17,50 @@
</tutorials>
<methods>
<method name="get_floor_normal" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the surface normal of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
</description>
</method>
<method name="get_floor_velocity" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the linear velocity of the floor at the last collision point. Only valid after calling [method move_and_slide] and when [method is_on_floor] returns [code]true[/code].
</description>
</method>
<method name="get_slide_collision">
- <return type="KinematicCollision3D">
- </return>
- <argument index="0" name="slide_idx" type="int">
- </argument>
+ <return type="KinematicCollision3D" />
+ <argument index="0" name="slide_idx" type="int" />
<description>
Returns a [KinematicCollision3D], which contains information about a collision that occurred during the last call to [method move_and_slide]. Since the body can collide several times in a single call to [method move_and_slide], you must specify the index of the collision in the range 0 to ([method get_slide_count] - 1).
</description>
</method>
<method name="get_slide_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of times the body collided and changed direction during the last call to [method move_and_slide].
</description>
</method>
<method name="is_on_ceiling" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the body collided with the ceiling on the last call of [method move_and_slide]. Otherwise, returns [code]false[/code].
</description>
</method>
<method name="is_on_floor" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the body collided with the floor on the last call of [method move_and_slide]. Otherwise, returns [code]false[/code].
</description>
</method>
<method name="is_on_wall" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the body collided with a wall on the last call of [method move_and_slide]. Otherwise, returns [code]false[/code].
</description>
</method>
<method name="move_and_slide">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Moves the body based on [member linear_velocity]. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [CharacterBody3D] or [RigidBody3D], it will also be affected by the motion of the other body. You can use this to make moving and rotating platforms, or to make nodes push other nodes.
This method should be used in [method Node._physics_process] (or in a method called by [method Node._physics_process]), as it uses the physics step's [code]delta[/code] value automatically in calculations. Otherwise, the simulation will run at an incorrect speed.
diff --git a/doc/classes/CheckBox.xml b/doc/classes/CheckBox.xml
index 90f3725172..f13a6ea34a 100644
--- a/doc/classes/CheckBox.xml
+++ b/doc/classes/CheckBox.xml
@@ -18,76 +18,76 @@
<constants>
</constants>
<theme_items>
- <theme_item name="check_vadjust" type="int" default="0">
+ <theme_item name="check_vadjust" data_type="constant" type="int" default="0">
The vertical offset used when rendering the check icons (in pixels).
</theme_item>
- <theme_item name="checked" type="Texture2D">
+ <theme_item name="checked" data_type="icon" type="Texture2D">
The check icon to display when the [CheckBox] is checked.
</theme_item>
- <theme_item name="checked_disabled" type="Texture2D">
+ <theme_item name="checked_disabled" data_type="icon" type="Texture2D">
</theme_item>
- <theme_item name="disabled" type="StyleBox">
+ <theme_item name="disabled" data_type="style" type="StyleBox">
The [StyleBox] to display as a background when the [CheckBox] is disabled.
</theme_item>
- <theme_item name="focus" type="StyleBox">
+ <theme_item name="focus" data_type="style" type="StyleBox">
The [StyleBox] to display as a background when the [CheckBox] is focused.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
The [Font] to use for the [CheckBox] text.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
The [CheckBox] text's font color.
</theme_item>
- <theme_item name="font_disabled_color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
+ <theme_item name="font_disabled_color" data_type="color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
The [CheckBox] text's font color when it's disabled.
</theme_item>
- <theme_item name="font_hover_color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
+ <theme_item name="font_hover_color" data_type="color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
The [CheckBox] text's font color when it's hovered.
</theme_item>
- <theme_item name="font_hover_pressed_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_hover_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The [CheckBox] text's font color when it's hovered and pressed.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the [CheckBox].
</theme_item>
- <theme_item name="font_pressed_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The [CheckBox] text's font color when it's pressed.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the [CheckBox]'s text.
</theme_item>
- <theme_item name="hover" type="StyleBox">
+ <theme_item name="hover" data_type="style" type="StyleBox">
The [StyleBox] to display as a background when the [CheckBox] is hovered.
</theme_item>
- <theme_item name="hover_pressed" type="StyleBox">
+ <theme_item name="hover_pressed" data_type="style" type="StyleBox">
The [StyleBox] to display as a background when the [CheckBox] is hovered and pressed.
</theme_item>
- <theme_item name="hseparation" type="int" default="4">
+ <theme_item name="hseparation" data_type="constant" type="int" default="4">
The separation between the check icon and the text (in pixels).
</theme_item>
- <theme_item name="normal" type="StyleBox">
+ <theme_item name="normal" data_type="style" type="StyleBox">
The [StyleBox] to display as a background.
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
- <theme_item name="pressed" type="StyleBox">
+ <theme_item name="pressed" data_type="style" type="StyleBox">
The [StyleBox] to display as a background when the [CheckBox] is pressed.
</theme_item>
- <theme_item name="radio_checked" type="Texture2D">
+ <theme_item name="radio_checked" data_type="icon" type="Texture2D">
If the [CheckBox] is configured as a radio button, the icon to display when the [CheckBox] is checked.
</theme_item>
- <theme_item name="radio_checked_disabled" type="Texture2D">
+ <theme_item name="radio_checked_disabled" data_type="icon" type="Texture2D">
</theme_item>
- <theme_item name="radio_unchecked" type="Texture2D">
+ <theme_item name="radio_unchecked" data_type="icon" type="Texture2D">
If the [CheckBox] is configured as a radio button, the icon to display when the [CheckBox] is unchecked.
</theme_item>
- <theme_item name="radio_unchecked_disabled" type="Texture2D">
+ <theme_item name="radio_unchecked_disabled" data_type="icon" type="Texture2D">
</theme_item>
- <theme_item name="unchecked" type="Texture2D">
+ <theme_item name="unchecked" data_type="icon" type="Texture2D">
The check icon to display when the [CheckBox] is unchecked.
</theme_item>
- <theme_item name="unchecked_disabled" type="Texture2D">
+ <theme_item name="unchecked_disabled" data_type="icon" type="Texture2D">
</theme_item>
</theme_items>
</class>
diff --git a/doc/classes/CheckButton.xml b/doc/classes/CheckButton.xml
index 7fa7093b32..a0a05bcb79 100644
--- a/doc/classes/CheckButton.xml
+++ b/doc/classes/CheckButton.xml
@@ -18,79 +18,79 @@
<constants>
</constants>
<theme_items>
- <theme_item name="check_vadjust" type="int" default="0">
+ <theme_item name="check_vadjust" data_type="constant" type="int" default="0">
The vertical offset used when rendering the toggle icons (in pixels).
</theme_item>
- <theme_item name="disabled" type="StyleBox">
+ <theme_item name="disabled" data_type="style" type="StyleBox">
The [StyleBox] to display as a background when the [CheckButton] is disabled.
</theme_item>
- <theme_item name="focus" type="StyleBox">
+ <theme_item name="focus" data_type="style" type="StyleBox">
The [StyleBox] to display as a background when the [CheckButton] is focused.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
The [Font] to use for the [CheckButton] text.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
The [CheckButton] text's font color.
</theme_item>
- <theme_item name="font_disabled_color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
+ <theme_item name="font_disabled_color" data_type="color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
The [CheckButton] text's font color when it's disabled.
</theme_item>
- <theme_item name="font_hover_color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
+ <theme_item name="font_hover_color" data_type="color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
The [CheckButton] text's font color when it's hovered.
</theme_item>
- <theme_item name="font_hover_pressed_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_hover_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The [CheckButton] text's font color when it's hovered and pressed.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the [CheckButton].
</theme_item>
- <theme_item name="font_pressed_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The [CheckButton] text's font color when it's pressed.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the [CheckButton]'s text.
</theme_item>
- <theme_item name="hover" type="StyleBox">
+ <theme_item name="hover" data_type="style" type="StyleBox">
The [StyleBox] to display as a background when the [CheckButton] is hovered.
</theme_item>
- <theme_item name="hover_pressed" type="StyleBox">
+ <theme_item name="hover_pressed" data_type="style" type="StyleBox">
The [StyleBox] to display as a background when the [CheckButton] is hovered and pressed.
</theme_item>
- <theme_item name="hseparation" type="int" default="4">
+ <theme_item name="hseparation" data_type="constant" type="int" default="4">
The separation between the toggle icon and the text (in pixels).
</theme_item>
- <theme_item name="normal" type="StyleBox">
+ <theme_item name="normal" data_type="style" type="StyleBox">
The [StyleBox] to display as a background.
</theme_item>
- <theme_item name="off" type="Texture2D">
+ <theme_item name="off" data_type="icon" type="Texture2D">
The icon to display when the [CheckButton] is unchecked (for left-to-right layouts).
</theme_item>
- <theme_item name="off_disabled" type="Texture2D">
+ <theme_item name="off_disabled" data_type="icon" type="Texture2D">
The icon to display when the [CheckButton] is unchecked and disabled (for left-to-right layouts).
</theme_item>
- <theme_item name="off_disabled_mirrored" type="Texture2D">
+ <theme_item name="off_disabled_mirrored" data_type="icon" type="Texture2D">
The icon to display when the [CheckButton] is unchecked and disabled (for right-to-left layouts).
</theme_item>
- <theme_item name="off_mirrored" type="Texture2D">
+ <theme_item name="off_mirrored" data_type="icon" type="Texture2D">
The icon to display when the [CheckButton] is unchecked (for right-to-left layouts).
</theme_item>
- <theme_item name="on" type="Texture2D">
+ <theme_item name="on" data_type="icon" type="Texture2D">
The icon to display when the [CheckButton] is checked (for left-to-right layouts).
</theme_item>
- <theme_item name="on_disabled" type="Texture2D">
+ <theme_item name="on_disabled" data_type="icon" type="Texture2D">
The icon to display when the [CheckButton] is checked and disabled (for left-to-right layouts).
</theme_item>
- <theme_item name="on_disabled_mirrored" type="Texture2D">
+ <theme_item name="on_disabled_mirrored" data_type="icon" type="Texture2D">
The icon to display when the [CheckButton] is checked and disabled (for right-to-left layouts).
</theme_item>
- <theme_item name="on_mirrored" type="Texture2D">
+ <theme_item name="on_mirrored" data_type="icon" type="Texture2D">
The icon to display when the [CheckButton] is checked (for right-to-left layouts).
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
- <theme_item name="pressed" type="StyleBox">
+ <theme_item name="pressed" data_type="style" type="StyleBox">
The [StyleBox] to display as a background when the [CheckButton] is pressed.
</theme_item>
</theme_items>
diff --git a/doc/classes/ClassDB.xml b/doc/classes/ClassDB.xml
index 028781d313..063233fe50 100644
--- a/doc/classes/ClassDB.xml
+++ b/doc/classes/ClassDB.xml
@@ -10,208 +10,155 @@
</tutorials>
<methods>
<method name="can_instantiate" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="class" type="StringName" />
<description>
Returns [code]true[/code] if you can instance objects from the specified [code]class[/code], [code]false[/code] in other case.
</description>
</method>
<method name="class_exists" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="class" type="StringName" />
<description>
Returns whether the specified [code]class[/code] is available or not.
</description>
</method>
<method name="class_get_category" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="class" type="StringName" />
<description>
Returns a category associated with the class for use in documentation and the Asset Library. Debug mode required.
</description>
</method>
<method name="class_get_integer_constant" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
+ <return type="int" />
+ <argument index="0" name="class" type="StringName" />
+ <argument index="1" name="name" type="StringName" />
<description>
Returns the value of the integer constant [code]name[/code] of [code]class[/code] or its ancestry. Always returns 0 when the constant could not be found.
</description>
</method>
<method name="class_get_integer_constant_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
- <argument index="1" name="no_inheritance" type="bool" default="false">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="class" type="StringName" />
+ <argument index="1" name="no_inheritance" type="bool" default="false" />
<description>
Returns an array with the names all the integer constants of [code]class[/code] or its ancestry.
</description>
</method>
<method name="class_get_method_list" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
- <argument index="1" name="no_inheritance" type="bool" default="false">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="class" type="StringName" />
+ <argument index="1" name="no_inheritance" type="bool" default="false" />
<description>
Returns an array with all the methods of [code]class[/code] or its ancestry if [code]no_inheritance[/code] is [code]false[/code]. Every element of the array is a [Dictionary] with the following keys: [code]args[/code], [code]default_args[/code], [code]flags[/code], [code]id[/code], [code]name[/code], [code]return: (class_name, hint, hint_string, name, type, usage)[/code].
[b]Note:[/code] In exported release builds the debug info is not available, so the returned dictionaries will contain only method names.
</description>
</method>
<method name="class_get_property" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
- <argument index="1" name="property" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="object" type="Object" />
+ <argument index="1" name="property" type="StringName" />
<description>
Returns the value of [code]property[/code] of [code]class[/code] or its ancestry.
</description>
</method>
<method name="class_get_property_list" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
- <argument index="1" name="no_inheritance" type="bool" default="false">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="class" type="StringName" />
+ <argument index="1" name="no_inheritance" type="bool" default="false" />
<description>
Returns an array with all the properties of [code]class[/code] or its ancestry if [code]no_inheritance[/code] is [code]false[/code].
</description>
</method>
<method name="class_get_signal" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
- <argument index="1" name="signal" type="StringName">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="class" type="StringName" />
+ <argument index="1" name="signal" type="StringName" />
<description>
Returns the [code]signal[/code] data of [code]class[/code] or its ancestry. The returned value is a [Dictionary] with the following keys: [code]args[/code], [code]default_args[/code], [code]flags[/code], [code]id[/code], [code]name[/code], [code]return: (class_name, hint, hint_string, name, type, usage)[/code].
</description>
</method>
<method name="class_get_signal_list" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
- <argument index="1" name="no_inheritance" type="bool" default="false">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="class" type="StringName" />
+ <argument index="1" name="no_inheritance" type="bool" default="false" />
<description>
Returns an array with all the signals of [code]class[/code] or its ancestry if [code]no_inheritance[/code] is [code]false[/code]. Every element of the array is a [Dictionary] as described in [method class_get_signal].
</description>
</method>
<method name="class_has_integer_constant" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="class" type="StringName" />
+ <argument index="1" name="name" type="StringName" />
<description>
Returns whether [code]class[/code] or its ancestry has an integer constant called [code]name[/code] or not.
</description>
</method>
<method name="class_has_method" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
- <argument index="1" name="method" type="StringName">
- </argument>
- <argument index="2" name="no_inheritance" type="bool" default="false">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="class" type="StringName" />
+ <argument index="1" name="method" type="StringName" />
+ <argument index="2" name="no_inheritance" type="bool" default="false" />
<description>
Returns whether [code]class[/code] (or its ancestry if [code]no_inheritance[/code] is [code]false[/code]) has a method called [code]method[/code] or not.
</description>
</method>
<method name="class_has_signal" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
- <argument index="1" name="signal" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="class" type="StringName" />
+ <argument index="1" name="signal" type="StringName" />
<description>
Returns whether [code]class[/code] or its ancestry has a signal called [code]signal[/code] or not.
</description>
</method>
<method name="class_set_property" qualifiers="const">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
- <argument index="1" name="property" type="StringName">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="object" type="Object" />
+ <argument index="1" name="property" type="StringName" />
+ <argument index="2" name="value" type="Variant" />
<description>
Sets [code]property[/code] value of [code]class[/code] to [code]value[/code].
</description>
</method>
<method name="get_class_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns the names of all the classes available.
</description>
</method>
<method name="get_inheriters_from_class" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="class" type="StringName" />
<description>
Returns the names of all the classes that directly or indirectly inherit from [code]class[/code].
</description>
</method>
<method name="get_parent_class" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="class" type="StringName" />
<description>
Returns the parent class of [code]class[/code].
</description>
</method>
<method name="instantiate" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="class" type="StringName" />
<description>
Creates an instance of [code]class[/code].
</description>
</method>
<method name="is_class_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="class" type="StringName" />
<description>
Returns whether this [code]class[/code] is enabled or not.
</description>
</method>
<method name="is_parent_class" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="class" type="StringName">
- </argument>
- <argument index="1" name="inherits" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="class" type="StringName" />
+ <argument index="1" name="inherits" type="StringName" />
<description>
Returns whether [code]inherits[/code] is an ancestor of [code]class[/code] or not.
</description>
diff --git a/doc/classes/ClippedCamera3D.xml b/doc/classes/ClippedCamera3D.xml
index 9116af19c3..1a76412826 100644
--- a/doc/classes/ClippedCamera3D.xml
+++ b/doc/classes/ClippedCamera3D.xml
@@ -10,72 +10,57 @@
</tutorials>
<methods>
<method name="add_exception">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Object" />
<description>
Adds a collision exception so the camera does not collide with the specified node.
</description>
</method>
<method name="add_exception_rid">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
Adds a collision exception so the camera does not collide with the specified [RID].
</description>
</method>
<method name="clear_exceptions">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all collision exceptions.
</description>
</method>
<method name="get_clip_offset" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the distance the camera has been offset due to a collision.
</description>
</method>
<method name="get_collision_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns [code]true[/code] if the specified bit index is on.
[b]Note:[/b] Bit indices range from 0-19.
</description>
</method>
<method name="remove_exception">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Object" />
<description>
Removes a collision exception with the specified node.
</description>
</method>
<method name="remove_exception_rid">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
Removes a collision exception with the specified [RID].
</description>
</method>
<method name="set_collision_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
Sets the specified bit index to the [code]value[/code].
[b]Note:[/b] Bit indices range from 0-19.
diff --git a/doc/classes/CodeEdit.xml b/doc/classes/CodeEdit.xml
index 30fd47cdb6..eb1dad14f2 100644
--- a/doc/classes/CodeEdit.xml
+++ b/doc/classes/CodeEdit.xml
@@ -1,70 +1,64 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="CodeEdit" inherits="TextEdit" version="4.0">
<brief_description>
+ Multiline text control intended for editing code.
</brief_description>
<description>
+ CodeEdit is a specialised [TextEdit] designed for editing plain text code files. It contains a bunch of features commonly found in code editors such as line numbers, line folding, code completion, indent management and string / comment management.
[b]Note[/b]: By default [CodeEdit] always use left-to-right text direction to correctly display source code.
</description>
<tutorials>
</tutorials>
<methods>
<method name="_confirm_code_completion" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="replace" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="replace" type="bool" />
<description>
Override this method to define how the selected entry should be inserted. If [code]replace[/code] is true, any existing text should be replaced.
</description>
</method>
<method name="_filter_code_completion_candidates" qualifiers="virtual">
- <return type="Array">
- </return>
- <argument index="0" name="candidates" type="Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="candidates" type="Array" />
<description>
Override this method to define what items in [code]candidates[/code] should be displayed.
Both [code]candidates[/code] and the return is a [Array] of [Dictionary], see [method get_code_completion_option] for [Dictionary] content.
</description>
</method>
<method name="_request_code_completion" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="force" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="force" type="bool" />
<description>
Override this method to define what happens when the user requests code completion. If [code]force[/code] is true, any checks should be bypassed.
</description>
</method>
+ <method name="add_auto_brace_completion_pair">
+ <return type="void" />
+ <argument index="0" name="start_key" type="String" />
+ <argument index="1" name="end_key" type="String" />
+ <description>
+ Adds a brace pair.
+ Both the start and end keys must be symbols. Only the start key has to be unique.
+ </description>
+ </method>
<method name="add_code_completion_option">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int" enum="CodeEdit.CodeCompletionKind">
- </argument>
- <argument index="1" name="display_text" type="String">
- </argument>
- <argument index="2" name="insert_text" type="String">
- </argument>
- <argument index="3" name="text_color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="4" name="icon" type="Resource" default="null">
- </argument>
- <argument index="5" name="value" type="Variant" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="CodeEdit.CodeCompletionKind" />
+ <argument index="1" name="display_text" type="String" />
+ <argument index="2" name="insert_text" type="String" />
+ <argument index="3" name="text_color" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="4" name="icon" type="Resource" default="null" />
+ <argument index="5" name="value" type="Variant" default="0" />
<description>
Submits an item to the queue of potential candidates for the autocomplete menu. Call [method update_code_completion_options] to update the list.
[b]Note[/b]: This list will replace all current candidates.
</description>
</method>
<method name="add_comment_delimiter">
- <return type="void">
- </return>
- <argument index="0" name="start_key" type="String">
- </argument>
- <argument index="1" name="end_key" type="String">
- </argument>
- <argument index="2" name="line_only" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="start_key" type="String" />
+ <argument index="1" name="end_key" type="String" />
+ <argument index="2" name="line_only" type="bool" default="false" />
<description>
Adds a comment delimiter.
Both the start and end keys must be symbols. Only the start key has to be unique.
@@ -72,14 +66,10 @@
</description>
</method>
<method name="add_string_delimiter">
- <return type="void">
- </return>
- <argument index="0" name="start_key" type="String">
- </argument>
- <argument index="1" name="end_key" type="String">
- </argument>
- <argument index="2" name="line_only" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="start_key" type="String" />
+ <argument index="1" name="end_key" type="String" />
+ <argument index="2" name="line_only" type="bool" default="false" />
<description>
Adds a string delimiter.
Both the start and end keys must be symbols. Only the start key has to be unique.
@@ -87,109 +77,102 @@
</description>
</method>
<method name="can_fold_line" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="line" type="int" />
<description>
Returns if the given line is foldable, that is, it has indented lines right below it or a comment / string block.
</description>
</method>
<method name="cancel_code_completion">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Cancels the autocomplete menu.
</description>
</method>
<method name="clear_bookmarked_lines">
- <return type="void">
- </return>
+ <return type="void" />
<description>
+ Clears all bookmarked lines.
</description>
</method>
<method name="clear_breakpointed_lines">
- <return type="void">
- </return>
+ <return type="void" />
<description>
+ Clears all breakpointed lines.
</description>
</method>
<method name="clear_comment_delimiters">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all comment delimiters.
</description>
</method>
<method name="clear_executing_lines">
- <return type="void">
- </return>
+ <return type="void" />
<description>
+ Clears all executed lines.
</description>
</method>
<method name="clear_string_delimiters">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all string delimiters.
</description>
</method>
<method name="confirm_code_completion">
- <return type="void">
- </return>
- <argument index="0" name="replace" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="replace" type="bool" default="false" />
<description>
Inserts the selected entry into the text. If [code]replace[/code] is true, any existing text is replaced rather then merged.
</description>
</method>
<method name="do_indent">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Perform an indent as if the user activated the "ui_text_indent" action.
</description>
</method>
<method name="do_unindent">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Perform an unindent as if the user activated the "ui_text_unindent" action.
</description>
</method>
<method name="fold_all_lines">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Folds all lines that are possible to be folded (see [method can_fold_line]).
</description>
</method>
<method name="fold_line">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
<description>
Folds the given line, if possible (see [method can_fold_line]).
</description>
</method>
+ <method name="get_auto_brace_completion_close_key" qualifiers="const">
+ <return type="String" />
+ <argument index="0" name="open_key" type="String" />
+ <description>
+ Gets the matching auto brace close key for [code]open_key[/code].
+ </description>
+ </method>
<method name="get_bookmarked_lines" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
+ Gets all bookmarked lines.
</description>
</method>
<method name="get_breakpointed_lines" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
+ Gets all breakpointed lines.
</description>
</method>
<method name="get_code_completion_option" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="index" type="int" />
<description>
Gets the completion option at [code]index[/code]. The return [Dictionary] has the following key-values:
[code]kind[/code]: [enum CodeCompletionKind]
@@ -201,279 +184,251 @@
</description>
</method>
<method name="get_code_completion_options" qualifiers="const">
- <return type="Dictionary[]">
- </return>
+ <return type="Dictionary[]" />
<description>
Gets all completion options, see [method get_code_completion_option] for return content.
</description>
</method>
<method name="get_code_completion_selected_index" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets the index of the current selected completion option.
</description>
</method>
<method name="get_delimiter_end_key" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="delimiter_index" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="delimiter_index" type="int" />
<description>
Gets the end key for a string or comment region index.
</description>
</method>
<method name="get_delimiter_end_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="column" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="column" type="int" />
<description>
If [code]line[/code] [code]column[/code] is in a string or comment, returns the end position of the region. If not or no end could be found, both [Vector2] values will be [code]-1[/code].
</description>
</method>
<method name="get_delimiter_start_key" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="delimiter_index" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="delimiter_index" type="int" />
<description>
Gets the start key for a string or comment region index.
</description>
</method>
<method name="get_delimiter_start_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="column" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="column" type="int" />
<description>
If [code]line[/code] [code]column[/code] is in a string or comment, returns the start position of the region. If not or no start could be found, both [Vector2] values will be [code]-1[/code].
</description>
</method>
<method name="get_executing_lines" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
+ Gets all executing lines.
</description>
</method>
<method name="get_folded_lines" qualifiers="const">
- <return type="int[]">
- </return>
+ <return type="int[]" />
<description>
Return all lines that are current folded.
</description>
</method>
<method name="get_text_for_code_completion" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the full text with char [code]0xFFFF[/code] at the caret location.
</description>
</method>
+ <method name="get_text_for_symbol_lookup">
+ <return type="String" />
+ <description>
+ Returns the full text with char [code]0xFFFF[/code] at the cursor location.
+ </description>
+ </method>
+ <method name="has_auto_brace_completion_close_key" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="close_key" type="String" />
+ <description>
+ Returns [code]true[/code] if close key [code]close_key[/code] exists.
+ </description>
+ </method>
+ <method name="has_auto_brace_completion_open_key" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="open_key" type="String" />
+ <description>
+ Returns [code]true[/code] if open key [code]open_key[/code] exists.
+ </description>
+ </method>
<method name="has_comment_delimiter" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="start_key" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="start_key" type="String" />
<description>
Returns [code]true[/code] if comment [code]start_key[/code] exists.
</description>
</method>
<method name="has_string_delimiter" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="start_key" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="start_key" type="String" />
<description>
Returns [code]true[/code] if string [code]start_key[/code] exists.
</description>
</method>
<method name="indent_lines">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Indents selected lines, or in the case of no selection the caret line by one.
</description>
</method>
<method name="is_in_comment" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="column" type="int" default="-1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="column" type="int" default="-1" />
<description>
Return delimiter index if [code]line[/code] [code]column[/code] is in a comment. If [code]column[/code] is not provided, will return delimiter index if the entire [code]line[/code] is a comment. Otherwise [code]-1[/code].
</description>
</method>
<method name="is_in_string" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="column" type="int" default="-1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="column" type="int" default="-1" />
<description>
Return the delimiter index if [code]line[/code] [code]column[/code] is in a string. If [code]column[/code] is not provided, will return the delimiter index if the entire [code]line[/code] is a string. Otherwise [code]-1[/code].
</description>
</method>
<method name="is_line_bookmarked" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="line" type="int" />
<description>
+ Returns whether the line at the specified index is bookmarked or not.
</description>
</method>
<method name="is_line_breakpointed" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="line" type="int" />
<description>
+ Returns whether the line at the specified index is breakpointed or not.
</description>
</method>
<method name="is_line_executing" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="line" type="int" />
<description>
+ Returns whether the line at the specified index is marked as executing or not.
</description>
</method>
<method name="is_line_folded" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="line" type="int" />
<description>
Returns whether the line at the specified index is folded or not.
</description>
</method>
<method name="remove_comment_delimiter">
- <return type="void">
- </return>
- <argument index="0" name="start_key" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="start_key" type="String" />
<description>
Removes the comment delimiter with [code]start_key[/code].
</description>
</method>
<method name="remove_string_delimiter">
- <return type="void">
- </return>
- <argument index="0" name="start_key" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="start_key" type="String" />
<description>
Removes the string delimiter with [code]start_key[/code].
</description>
</method>
<method name="request_code_completion">
- <return type="void">
- </return>
- <argument index="0" name="force" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="force" type="bool" default="false" />
<description>
Emits [signal request_code_completion], if [code]force[/code] is true will bypass all checks. Otherwise will check that the caret is in a word or in front of a prefix. Will ignore the request if all current options are of type file path, node path or signal.
</description>
</method>
<method name="set_code_completion_selected_index">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Sets the current selected completion option.
</description>
</method>
<method name="set_code_hint">
- <return type="void">
- </return>
- <argument index="0" name="code_hint" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="code_hint" type="String" />
<description>
Sets the code hint text. Pass an empty string to clear.
</description>
</method>
<method name="set_code_hint_draw_below">
- <return type="void">
- </return>
- <argument index="0" name="draw_below" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="draw_below" type="bool" />
<description>
Sets if the code hint should draw below the text.
</description>
</method>
<method name="set_line_as_bookmarked">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="bookmarked" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="bookmarked" type="bool" />
<description>
+ Sets the line as bookmarked.
</description>
</method>
<method name="set_line_as_breakpoint">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="breakpointed" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="breakpointed" type="bool" />
<description>
+ Sets the line as breakpointed.
</description>
</method>
<method name="set_line_as_executing">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="executing" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="executing" type="bool" />
+ <description>
+ Sets the line as executing.
+ </description>
+ </method>
+ <method name="set_symbol_lookup_word_as_valid">
+ <return type="void" />
+ <argument index="0" name="valid" type="bool" />
<description>
+ Sets the symbol emitted by [signal symbol_validate] as a valid lookup.
</description>
</method>
<method name="toggle_foldable_line">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
<description>
Toggle the folding of the code block at the given line.
</description>
</method>
<method name="unfold_all_lines">
- <return type="void">
- </return>
+ <return type="void" />
<description>
+ Unfolds all lines, folded or not.
</description>
</method>
<method name="unfold_line">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
<description>
Unfolds all lines that were previously folded.
</description>
</method>
<method name="unindent_lines">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Unindents selected lines, or in the case of no selection the caret line by one.
</description>
</method>
<method name="update_code_completion_options">
- <return type="void">
- </return>
- <argument index="0" name="force" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="force" type="bool" />
<description>
Submits all completion options added with [method add_code_completion_option]. Will try to force the autoccomplete menu to popup, if [code]force[/code] is [code]true[/code].
[b]Note[/b]: This will replace all current candidates.
@@ -481,6 +436,15 @@
</method>
</methods>
<members>
+ <member name="auto_brace_completion_enabled" type="bool" setter="set_auto_brace_completion_enabled" getter="is_auto_brace_completion_enabled" default="false">
+ Sets whether brace pairs should be autocompleted.
+ </member>
+ <member name="auto_brace_completion_highlight_matching" type="bool" setter="set_highlight_matching_braces_enabled" getter="is_highlight_matching_braces_enabled" default="false">
+ Highlight mismatching brace pairs.
+ </member>
+ <member name="auto_brace_completion_pairs" type="Dictionary" setter="set_auto_brace_completion_pairs" getter="get_auto_brace_completion_pairs" default="{&quot;\&quot;&quot;: &quot;\&quot;&quot;,&quot;&apos;&quot;: &quot;&apos;&quot;,&quot;(&quot;: &quot;)&quot;,&quot;[&quot;: &quot;]&quot;,&quot;{&quot;: &quot;}&quot;}">
+ Sets the brace pairs to be autocompleted.
+ </member>
<member name="code_completion_enabled" type="bool" setter="set_code_completion_enabled" getter="is_code_completion_enabled" default="false">
Sets whether code completion is allowed.
</member>
@@ -490,18 +454,26 @@
<member name="delimiter_comments" type="String[]" setter="set_comment_delimiters" getter="get_comment_delimiters" default="[]">
Sets the comment delimiters. All existing comment delimiters will be removed.
</member>
- <member name="delimiter_strings" type="String[]" setter="set_string_delimiters" getter="get_string_delimiters" default="[]">
+ <member name="delimiter_strings" type="String[]" setter="set_string_delimiters" getter="get_string_delimiters" default="[&quot;&apos; &apos;&quot;, &quot;\&quot; \&quot;&quot;]">
Sets the string delimiters. All existing string delimiters will be removed.
</member>
- <member name="draw_bookmarks" type="bool" setter="set_draw_bookmarks_gutter" getter="is_drawing_bookmarks_gutter" default="false">
+ <member name="gutters_draw_bookmarks" type="bool" setter="set_draw_bookmarks_gutter" getter="is_drawing_bookmarks_gutter" default="false">
+ Sets if bookmarked should be drawn in the gutter. This gutter is shared with breakpoints and executing lines.
</member>
- <member name="draw_breakpoints_gutter" type="bool" setter="set_draw_breakpoints_gutter" getter="is_drawing_breakpoints_gutter" default="false">
+ <member name="gutters_draw_breakpoints_gutter" type="bool" setter="set_draw_breakpoints_gutter" getter="is_drawing_breakpoints_gutter" default="false">
+ Sets if breakpoints should be drawn in the gutter. This gutter is shared with bookmarks and executing lines.
</member>
- <member name="draw_executing_lines" type="bool" setter="set_draw_executing_lines_gutter" getter="is_drawing_executing_lines_gutter" default="false">
+ <member name="gutters_draw_executing_lines" type="bool" setter="set_draw_executing_lines_gutter" getter="is_drawing_executing_lines_gutter" default="false">
+ Sets if executing lines should be marked in the gutter. This gutter is shared with breakpoints and bookmarks lines.
</member>
- <member name="draw_fold_gutter" type="bool" setter="set_draw_fold_gutter" getter="is_drawing_fold_gutter" default="false">
+ <member name="gutters_draw_fold_gutter" type="bool" setter="set_draw_fold_gutter" getter="is_drawing_fold_gutter" default="false">
+ Sets if foldable lines icons should be drawn in the gutter.
</member>
- <member name="draw_line_numbers" type="bool" setter="set_draw_line_numbers" getter="is_draw_line_numbers_enabled" default="false">
+ <member name="gutters_draw_line_numbers" type="bool" setter="set_draw_line_numbers" getter="is_draw_line_numbers_enabled" default="false">
+ Sets if line numbers should be drawn in the gutter.
+ </member>
+ <member name="gutters_zero_pad_line_numbers" type="bool" setter="set_line_numbers_zero_padded" getter="is_line_numbers_zero_padded" default="false">
+ Sets if line numbers drawn in the gutter are zero padded.
</member>
<member name="indent_automatic" type="bool" setter="set_auto_indent_enabled" getter="is_auto_indent_enabled" default="false">
Sets whether automatic indent are enabled, this will add an extra indent if a prefix or brace is found.
@@ -516,19 +488,23 @@
Use spaces instead of tabs for indentation.
</member>
<member name="layout_direction" type="int" setter="set_layout_direction" getter="get_layout_direction" override="true" enum="Control.LayoutDirection" default="2" />
- <member name="line_folding" type="bool" setter="set_line_folding_enabled" getter="is_line_folding_enabled" default="true">
+ <member name="line_folding" type="bool" setter="set_line_folding_enabled" getter="is_line_folding_enabled" default="false">
Sets whether line folding is allowed.
</member>
+ <member name="line_length_guidelines" type="int[]" setter="set_line_length_guidelines" getter="get_line_length_guidelines" default="[]">
+ Draws vertical lines at the provided columns. The first entry is considered a main hard guideline and is draw more prominently
+ </member>
<member name="structured_text_bidi_override_options" type="Array" setter="set_structured_text_bidi_override_options" getter="get_structured_text_bidi_override_options" override="true" default="[]" />
- <member name="text_direction" type="int" setter="set_text_direction" getter="get_text_direction" override="true" enum="Control.TextDirection" default="1" />
- <member name="zero_pad_line_numbers" type="bool" setter="set_line_numbers_zero_padded" getter="is_line_numbers_zero_padded" default="false">
+ <member name="symbol_lookup_on_click" type="bool" setter="set_symbol_lookup_on_click_enabled" getter="is_symbol_lookup_on_click_enabled" default="false">
+ Set when a validated word from [signal symbol_validate] is clicked, the [signal symbol_lookup] should be emitted.
</member>
+ <member name="text_direction" type="int" setter="set_text_direction" getter="get_text_direction" override="true" enum="Control.TextDirection" default="1" />
</members>
<signals>
<signal name="breakpoint_toggled">
- <argument index="0" name="line" type="int">
- </argument>
+ <argument index="0" name="line" type="int" />
<description>
+ Emitted when a breakpoint is added or removed from a line. If the line is moved via backspace a removed is emitted at the old line.
</description>
</signal>
<signal name="request_code_completion">
@@ -536,114 +512,176 @@
Emitted when the user requests code completion.
</description>
</signal>
+ <signal name="symbol_lookup">
+ <argument index="0" name="symbol" type="String" />
+ <argument index="1" name="line" type="int" />
+ <argument index="2" name="column" type="int" />
+ <description>
+ Emitted when the user has clicked on a valid symbol.
+ </description>
+ </signal>
+ <signal name="symbol_validate">
+ <argument index="0" name="symbol" type="String" />
+ <description>
+ Emitted when the user hovers over a symbol. The symbol should be validated and responded to, by calling [method set_symbol_lookup_word_as_valid].
+ </description>
+ </signal>
</signals>
<constants>
<constant name="KIND_CLASS" value="0" enum="CodeCompletionKind">
+ Marks the option as a class.
</constant>
<constant name="KIND_FUNCTION" value="1" enum="CodeCompletionKind">
+ Marks the option as a function.
</constant>
<constant name="KIND_SIGNAL" value="2" enum="CodeCompletionKind">
+ Marks the option as a Godot signal.
</constant>
<constant name="KIND_VARIABLE" value="3" enum="CodeCompletionKind">
+ Marks the option as a variable.
</constant>
<constant name="KIND_MEMBER" value="4" enum="CodeCompletionKind">
+ Marks the option as a member.
</constant>
<constant name="KIND_ENUM" value="5" enum="CodeCompletionKind">
+ Marks the option as a enum entry.
</constant>
<constant name="KIND_CONSTANT" value="6" enum="CodeCompletionKind">
+ Marks the option as a constant.
</constant>
<constant name="KIND_NODE_PATH" value="7" enum="CodeCompletionKind">
+ Marks the option as a Godot node path.
</constant>
<constant name="KIND_FILE_PATH" value="8" enum="CodeCompletionKind">
+ Marks the option as a file path.
</constant>
<constant name="KIND_PLAIN_TEXT" value="9" enum="CodeCompletionKind">
+ Marks the option as unclassified or plain text.
</constant>
</constants>
<theme_items>
- <theme_item name="background_color" type="Color" default="Color(0, 0, 0, 0)">
+ <theme_item name="background_color" data_type="color" type="Color" default="Color(0, 0, 0, 0)">
+ Sets the background [Color].
</theme_item>
- <theme_item name="bookmark" type="Texture2D">
+ <theme_item name="bookmark" data_type="icon" type="Texture2D">
+ Sets a custom [Texture2D] to draw in the bookmark gutter for bookmarked lines.
</theme_item>
- <theme_item name="bookmark_color" type="Color" default="Color(0.5, 0.64, 1, 0.8)">
+ <theme_item name="bookmark_color" data_type="color" type="Color" default="Color(0.5, 0.64, 1, 0.8)">
+ [Color] of the bookmark icon for bookmarked lines.
</theme_item>
- <theme_item name="brace_mismatch_color" type="Color" default="Color(1, 0.2, 0.2, 1)">
+ <theme_item name="brace_mismatch_color" data_type="color" type="Color" default="Color(1, 0.2, 0.2, 1)">
+ [Color] of the text to highlight mismatched braces.
</theme_item>
- <theme_item name="breakpoint" type="Texture2D">
+ <theme_item name="breakpoint" data_type="icon" type="Texture2D">
+ Sets a custom [Texture2D] to draw in the breakpoint gutter for breakpointed lines.
</theme_item>
- <theme_item name="breakpoint_color" type="Color" default="Color(0.9, 0.29, 0.3, 1)">
+ <theme_item name="breakpoint_color" data_type="color" type="Color" default="Color(0.9, 0.29, 0.3, 1)">
+ [Color] of the breakpoint icon for bookmarked lines.
</theme_item>
- <theme_item name="can_fold" type="Texture2D">
+ <theme_item name="can_fold" data_type="icon" type="Texture2D">
+ Sets a custom [Texture2D] to draw in the line folding gutter when a line can be folded.
</theme_item>
- <theme_item name="caret_background_color" type="Color" default="Color(0, 0, 0, 1)">
+ <theme_item name="caret_background_color" data_type="color" type="Color" default="Color(0, 0, 0, 1)">
+ [Color] of the text behind the caret when block caret is enabled.
</theme_item>
- <theme_item name="caret_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="caret_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ [Color] of the caret.
</theme_item>
- <theme_item name="code_folding_color" type="Color" default="Color(0.8, 0.8, 0.8, 0.8)">
+ <theme_item name="code_folding_color" data_type="color" type="Color" default="Color(0.8, 0.8, 0.8, 0.8)">
+ [Color] for all icons related to line folding.
</theme_item>
- <theme_item name="completion" type="StyleBox">
+ <theme_item name="completion" data_type="style" type="StyleBox">
+ [StyleBox] for the code completion popup.
</theme_item>
- <theme_item name="completion_background_color" type="Color" default="Color(0.17, 0.16, 0.2, 1)">
+ <theme_item name="completion_background_color" data_type="color" type="Color" default="Color(0.17, 0.16, 0.2, 1)">
+ Sets the background [Color] for the code completion popup.
</theme_item>
- <theme_item name="completion_existing_color" type="Color" default="Color(0.87, 0.87, 0.87, 0.13)">
+ <theme_item name="completion_existing_color" data_type="color" type="Color" default="Color(0.87, 0.87, 0.87, 0.13)">
+ Background highlight [Color] for matching text in code completion options.
</theme_item>
- <theme_item name="completion_font_color" type="Color" default="Color(0.67, 0.67, 0.67, 1)">
+ <theme_item name="completion_font_color" data_type="color" type="Color" default="Color(0.67, 0.67, 0.67, 1)">
+ Font [Color] for the code completion popup.
</theme_item>
- <theme_item name="completion_lines" type="int" default="7">
+ <theme_item name="completion_lines" data_type="constant" type="int" default="7">
+ Max number of options to display in the code completion popup at any one time.
</theme_item>
- <theme_item name="completion_max_width" type="int" default="50">
+ <theme_item name="completion_max_width" data_type="constant" type="int" default="50">
+ Max width of options in the code completion popup. Options longer then this will be cut off.
</theme_item>
- <theme_item name="completion_scroll_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="completion_scroll_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
+ [Color] of the scrollbar in the code completion popup.
</theme_item>
- <theme_item name="completion_scroll_width" type="int" default="3">
+ <theme_item name="completion_scroll_width" data_type="constant" type="int" default="3">
+ Width of the scrollbar in the code completion popup.
</theme_item>
- <theme_item name="completion_selected_color" type="Color" default="Color(0.26, 0.26, 0.27, 1)">
+ <theme_item name="completion_selected_color" data_type="color" type="Color" default="Color(0.26, 0.26, 0.27, 1)">
+ Background highlight [Color] for the current selected option item in the code completion popup.
</theme_item>
- <theme_item name="current_line_color" type="Color" default="Color(0.25, 0.25, 0.26, 0.8)">
+ <theme_item name="current_line_color" data_type="color" type="Color" default="Color(0.25, 0.25, 0.26, 0.8)">
+ Background [Color] of the line containing the caret.
</theme_item>
- <theme_item name="executing_line" type="Texture2D">
+ <theme_item name="executing_line" data_type="icon" type="Texture2D">
+ Icon to draw in the executing gutter for executing lines.
</theme_item>
- <theme_item name="executing_line_color" type="Color" default="Color(0.98, 0.89, 0.27, 1)">
+ <theme_item name="executing_line_color" data_type="color" type="Color" default="Color(0.98, 0.89, 0.27, 1)">
+ [Color] of the executing icon for executing lines.
</theme_item>
- <theme_item name="focus" type="StyleBox">
+ <theme_item name="focus" data_type="style" type="StyleBox">
+ Sets the [StyleBox] when in focus.
</theme_item>
- <theme_item name="folded" type="Texture2D">
+ <theme_item name="folded" data_type="icon" type="Texture2D">
+ Sets a custom [Texture2D] to draw in the line folding gutter when a line is folded and can be unfolded.
</theme_item>
- <theme_item name="folded_eol_icon" type="Texture2D">
+ <theme_item name="folded_eol_icon" data_type="icon" type="Texture2D">
+ Sets a custom [Texture2D] to draw at the end of a folded line.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
+ Sets the default [Font].
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ Sets the font [Color].
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the [CodeEdit].
</theme_item>
- <theme_item name="font_readonly_color" type="Color" default="Color(0.88, 0.88, 0.88, 0.5)">
+ <theme_item name="font_readonly_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 0.5)">
+ Sets the font [Color] when [member TextEdit.readonly] is enabled.
</theme_item>
- <theme_item name="font_selected_color" type="Color" default="Color(0, 0, 0, 1)">
+ <theme_item name="font_selected_color" data_type="color" type="Color" default="Color(0, 0, 0, 1)">
+ Sets the [Color] of the selected text. [member TextEdit.override_selected_font_color] has to be enabled.
</theme_item>
- <theme_item name="font_size" type="int">
- Font size of the [CodeEdit]'s text.
+ <theme_item name="font_size" data_type="font_size" type="int">
+ Sets default font size.
</theme_item>
- <theme_item name="line_number_color" type="Color" default="Color(0.67, 0.67, 0.67, 0.4)">
+ <theme_item name="line_length_guideline_color" data_type="color" type="Color" default="Color(0.3, 0.5, 0.8, 0.1)">
+ [Color] of the main line length guideline, secondary guidelines will have 50% alpha applied.
</theme_item>
- <theme_item name="line_spacing" type="int" default="4">
+ <theme_item name="line_number_color" data_type="color" type="Color" default="Color(0.67, 0.67, 0.67, 0.4)">
+ Sets the [Color] of line numbers.
</theme_item>
- <theme_item name="normal" type="StyleBox">
+ <theme_item name="line_spacing" data_type="constant" type="int" default="4">
+ Sets the spacing between the lines.
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
- The size of the text outline.
+ <theme_item name="normal" data_type="style" type="StyleBox">
+ Sets the [StyleBox].
</theme_item>
- <theme_item name="read_only" type="StyleBox">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
+ The size of the text outline.
</theme_item>
- <theme_item name="safe_line_number_color" type="Color" default="Color(0.67, 0.78, 0.67, 0.6)">
+ <theme_item name="read_only" data_type="style" type="StyleBox">
+ Sets the [StyleBox] when [member TextEdit.readonly] is enabled.
</theme_item>
- <theme_item name="selection_color" type="Color" default="Color(0.49, 0.49, 0.49, 1)">
+ <theme_item name="selection_color" data_type="color" type="Color" default="Color(0.49, 0.49, 0.49, 1)">
+ Sets the highlight [Color] of text selections.
</theme_item>
- <theme_item name="space" type="Texture2D">
+ <theme_item name="space" data_type="icon" type="Texture2D">
+ Sets a custom [Texture2D] for space text characters.
</theme_item>
- <theme_item name="tab" type="Texture2D">
+ <theme_item name="tab" data_type="icon" type="Texture2D">
+ Sets a custom [Texture2D] for tab text characters.
</theme_item>
- <theme_item name="word_highlighted_color" type="Color" default="Color(0.8, 0.9, 0.9, 0.15)">
+ <theme_item name="word_highlighted_color" data_type="color" type="Color" default="Color(0.8, 0.9, 0.9, 0.15)">
+ Sets the highlight [Color] of multiple occurrences. [member TextEdit.highlight_all_occurrences] has to be enabled.
</theme_item>
</theme_items>
</class>
diff --git a/doc/classes/CodeHighlighter.xml b/doc/classes/CodeHighlighter.xml
index 0406c25ffd..2b93188d10 100644
--- a/doc/classes/CodeHighlighter.xml
+++ b/doc/classes/CodeHighlighter.xml
@@ -10,16 +10,11 @@
</tutorials>
<methods>
<method name="add_color_region">
- <return type="void">
- </return>
- <argument index="0" name="start_key" type="String">
- </argument>
- <argument index="1" name="end_key" type="String">
- </argument>
- <argument index="2" name="color" type="Color">
- </argument>
- <argument index="3" name="line_only" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="start_key" type="String" />
+ <argument index="1" name="end_key" type="String" />
+ <argument index="2" name="color" type="Color" />
+ <argument index="3" name="line_only" type="bool" default="false" />
<description>
Adds a color region such as comments or strings.
Both the start and end keys must be symbols. Only the start key has to be unique.
@@ -27,24 +22,18 @@
</description>
</method>
<method name="add_keyword_color">
- <return type="void">
- </return>
- <argument index="0" name="keyword" type="String">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="keyword" type="String" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the color for a keyword.
The keyword cannot contain any symbols except '_'.
</description>
</method>
<method name="add_member_keyword_color">
- <return type="void">
- </return>
- <argument index="0" name="member_keyword" type="String">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="member_keyword" type="String" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the color for a member keyword.
The member keyword cannot contain any symbols except '_'.
@@ -52,94 +41,75 @@
</description>
</method>
<method name="clear_color_regions">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all color regions.
</description>
</method>
<method name="clear_keyword_colors">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all keywords.
</description>
</method>
<method name="clear_member_keyword_colors">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all member keywords.
</description>
</method>
<method name="get_keyword_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="keyword" type="String">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="keyword" type="String" />
<description>
Returns the color for a keyword.
</description>
</method>
<method name="get_member_keyword_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="member_keyword" type="String">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="member_keyword" type="String" />
<description>
Returns the color for a member keyword.
</description>
</method>
<method name="has_color_region" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="start_key" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="start_key" type="String" />
<description>
Return [code]true[/code] if the start key exists, else [code]false[/code].
</description>
</method>
<method name="has_keyword_color" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="keyword" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="keyword" type="String" />
<description>
Return [code]true[/code] if the keyword exists, else [code]false[/code].
</description>
</method>
<method name="has_member_keyword_color" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="member_keyword" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="member_keyword" type="String" />
<description>
Return [code]true[/code] if the member keyword exists, else [code]false[/code].
</description>
</method>
<method name="remove_color_region">
- <return type="void">
- </return>
- <argument index="0" name="start_key" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="start_key" type="String" />
<description>
Removes the color region that uses that start key.
</description>
</method>
<method name="remove_keyword_color">
- <return type="void">
- </return>
- <argument index="0" name="keyword" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="keyword" type="String" />
<description>
Removes the keyword.
</description>
</method>
<method name="remove_member_keyword_color">
- <return type="void">
- </return>
- <argument index="0" name="member_keyword" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="member_keyword" type="String" />
<description>
Removes the member keyword.
</description>
diff --git a/doc/classes/CollisionObject2D.xml b/doc/classes/CollisionObject2D.xml
index b0afbb201c..6bb756ea2c 100644
--- a/doc/classes/CollisionObject2D.xml
+++ b/doc/classes/CollisionObject2D.xml
@@ -10,248 +10,188 @@
</tutorials>
<methods>
<method name="_input_event" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="Object">
- </argument>
- <argument index="1" name="event" type="InputEvent">
- </argument>
- <argument index="2" name="shape_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="Object" />
+ <argument index="1" name="event" type="InputEvent" />
+ <argument index="2" name="shape_idx" type="int" />
<description>
Accepts unhandled [InputEvent]s. Requires [member input_pickable] to be [code]true[/code]. [code]shape_idx[/code] is the child index of the clicked [Shape2D]. Connect to the [code]input_event[/code] signal to easily pick up these events.
</description>
</method>
<method name="create_shape_owner">
- <return type="int">
- </return>
- <argument index="0" name="owner" type="Object">
- </argument>
+ <return type="int" />
+ <argument index="0" name="owner" type="Object" />
<description>
Creates a new shape owner for the given object. Returns [code]owner_id[/code] of the new owner for future reference.
</description>
</method>
<method name="get_collision_layer_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns whether or not the specified [code]bit[/code] of the [member collision_layer] is set.
</description>
</method>
<method name="get_collision_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns whether or not the specified [code]bit[/code] of the [member collision_mask] is set.
</description>
</method>
<method name="get_rid" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the object's [RID].
</description>
</method>
<method name="get_shape_owner_one_way_collision_margin" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Returns the [code]one_way_collision_margin[/code] of the shape owner identified by given [code]owner_id[/code].
</description>
</method>
<method name="get_shape_owners">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an [Array] of [code]owner_id[/code] identifiers. You can use these ids in other methods that take [code]owner_id[/code] as an argument.
</description>
</method>
<method name="is_shape_owner_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="owner_id" type="int" />
<description>
If [code]true[/code], the shape owner and its shapes are disabled.
</description>
</method>
<method name="is_shape_owner_one_way_collision_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Returns [code]true[/code] if collisions for the shape owner originating from this [CollisionObject2D] will not be reported to collided with [CollisionObject2D]s.
</description>
</method>
<method name="remove_shape_owner">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Removes the given shape owner.
</description>
</method>
<method name="set_collision_layer_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
- If [code]value[/value] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_layer].
- If [code]value[/value] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_layer].
+ If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_layer].
+ If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_layer].
</description>
</method>
<method name="set_collision_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
- If [code]value[/value] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_mask].
- If [code]value[/value] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_mask].
+ If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_mask].
+ If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_mask].
</description>
</method>
<method name="shape_find_owner" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="shape_index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="shape_index" type="int" />
<description>
Returns the [code]owner_id[/code] of the given shape.
</description>
</method>
<method name="shape_owner_add_shape">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="shape" type="Shape2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="shape" type="Shape2D" />
<description>
Adds a [Shape2D] to the shape owner.
</description>
</method>
<method name="shape_owner_clear_shapes">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Removes all shapes from the shape owner.
</description>
</method>
<method name="shape_owner_get_owner" qualifiers="const">
- <return type="Object">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="Object" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Returns the parent object of the given shape owner.
</description>
</method>
<method name="shape_owner_get_shape" qualifiers="const">
- <return type="Shape2D">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="shape_id" type="int">
- </argument>
+ <return type="Shape2D" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="shape_id" type="int" />
<description>
Returns the [Shape2D] with the given id from the given shape owner.
</description>
</method>
<method name="shape_owner_get_shape_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Returns the number of shapes the given shape owner contains.
</description>
</method>
<method name="shape_owner_get_shape_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="shape_id" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="shape_id" type="int" />
<description>
Returns the child index of the [Shape2D] with the given id from the given shape owner.
</description>
</method>
<method name="shape_owner_get_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Returns the shape owner's [Transform2D].
</description>
</method>
<method name="shape_owner_remove_shape">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="shape_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="shape_id" type="int" />
<description>
Removes a shape from the given shape owner.
</description>
</method>
<method name="shape_owner_set_disabled">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="disabled" type="bool" />
<description>
If [code]true[/code], disables the given shape owner.
</description>
</method>
<method name="shape_owner_set_one_way_collision">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]enable[/code] is [code]true[/code], collisions for the shape owner originating from this [CollisionObject2D] will not be reported to collided with [CollisionObject2D]s.
</description>
</method>
<method name="shape_owner_set_one_way_collision_margin">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="margin" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="margin" type="float" />
<description>
Sets the [code]one_way_collision_margin[/code] of the shape owner identified by given [code]owner_id[/code] to [code]margin[/code] pixels.
</description>
</method>
<method name="shape_owner_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="transform" type="Transform2D" />
<description>
Sets the [Transform2D] of the given shape owner.
</description>
@@ -260,11 +200,11 @@
<members>
<member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer" default="1">
The physics layers this CollisionObject2D is in. Collision objects can exist in one or more of 32 different layers. See also [member collision_mask].
- [b]Note:[/b] A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
+ [b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
</member>
<member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="1">
The physics layers this CollisionObject2D scans. Collision objects can scan one or more of 32 different layers. See also [member collision_layer].
- [b]Note:[/b] A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
+ [b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
</member>
<member name="disable_mode" type="int" setter="set_disable_mode" getter="get_disable_mode" enum="CollisionObject2D.DisableMode" default="0">
Defines the behavior in physics when [member Node.process_mode] is set to [constant Node.PROCESS_MODE_DISABLED]. See [enum DisableMode] for more details about the different modes.
@@ -275,12 +215,9 @@
</members>
<signals>
<signal name="input_event">
- <argument index="0" name="viewport" type="Node">
- </argument>
- <argument index="1" name="event" type="InputEvent">
- </argument>
- <argument index="2" name="shape_idx" type="int">
- </argument>
+ <argument index="0" name="viewport" type="Node" />
+ <argument index="1" name="event" type="InputEvent" />
+ <argument index="2" name="shape_idx" type="int" />
<description>
Emitted when an input event occurs. Requires [member input_pickable] to be [code]true[/code] and at least one [code]collision_layer[/code] bit to be set. See [method _input_event] for details.
</description>
@@ -296,15 +233,13 @@
</description>
</signal>
<signal name="mouse_shape_entered">
- <argument index="0" name="shape_idx" type="int">
- </argument>
+ <argument index="0" name="shape_idx" type="int" />
<description>
Emitted when the mouse pointer enters any of this object's shapes or moves from one shape to another. [code]shape_idx[/code] is the child index of the newly entered [Shape2D]. Requires [member input_pickable] to be [code]true[/code] and at least one [member collision_layer] bit to be set.
</description>
</signal>
<signal name="mouse_shape_exited">
- <argument index="0" name="shape_idx" type="int">
- </argument>
+ <argument index="0" name="shape_idx" type="int" />
<description>
Emitted when the mouse pointer exits any of this object's shapes. [code]shape_idx[/code] is the child index of the exited [Shape2D]. Requires [member input_pickable] to be [code]true[/code] and at least one [member collision_layer] bit to be set.
</description>
diff --git a/doc/classes/CollisionObject3D.xml b/doc/classes/CollisionObject3D.xml
index dfd1e85e56..0210f6297f 100644
--- a/doc/classes/CollisionObject3D.xml
+++ b/doc/classes/CollisionObject3D.xml
@@ -10,212 +10,160 @@
</tutorials>
<methods>
<method name="_input_event" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="camera" type="Object">
- </argument>
- <argument index="1" name="event" type="InputEvent">
- </argument>
- <argument index="2" name="position" type="Vector3">
- </argument>
- <argument index="3" name="normal" type="Vector3">
- </argument>
- <argument index="4" name="shape_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="camera" type="Object" />
+ <argument index="1" name="event" type="InputEvent" />
+ <argument index="2" name="position" type="Vector3" />
+ <argument index="3" name="normal" type="Vector3" />
+ <argument index="4" name="shape_idx" type="int" />
<description>
Receives unhandled [InputEvent]s. [code]position[/code] is the location in world space of the mouse pointer on the surface of the shape with index [code]shape_idx[/code] and [code]normal[/code] is the normal vector of the surface at that point. Connect to the [signal input_event] signal to easily pick up these events.
</description>
</method>
<method name="create_shape_owner">
- <return type="int">
- </return>
- <argument index="0" name="owner" type="Object">
- </argument>
+ <return type="int" />
+ <argument index="0" name="owner" type="Object" />
<description>
Creates a new shape owner for the given object. Returns [code]owner_id[/code] of the new owner for future reference.
</description>
</method>
<method name="get_collision_layer_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns whether or not the specified [code]bit[/code] of the [member collision_layer] is set.
</description>
</method>
<method name="get_collision_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns whether or not the specified [code]bit[/code] of the [member collision_mask] is set.
</description>
</method>
<method name="get_rid" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the object's [RID].
</description>
</method>
<method name="get_shape_owners">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an [Array] of [code]owner_id[/code] identifiers. You can use these ids in other methods that take [code]owner_id[/code] as an argument.
</description>
</method>
<method name="is_shape_owner_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="owner_id" type="int" />
<description>
If [code]true[/code], the shape owner and its shapes are disabled.
</description>
</method>
<method name="remove_shape_owner">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Removes the given shape owner.
</description>
</method>
<method name="set_collision_layer_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
- If [code]value[/value] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_layer].
- If [code]value[/value] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_layer].
+ If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_layer].
+ If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_layer].
</description>
</method>
<method name="set_collision_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
- If [code]value[/value] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_mask].
- If [code]value[/value] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_mask].
+ If [code]value[/code] is [code]true[/code], sets the specified [code]bit[/code] in the the [member collision_mask].
+ If [code]value[/code] is [code]false[/code], clears the specified [code]bit[/code] in the the [member collision_mask].
</description>
</method>
<method name="shape_find_owner" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="shape_index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="shape_index" type="int" />
<description>
Returns the [code]owner_id[/code] of the given shape.
</description>
</method>
<method name="shape_owner_add_shape">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="shape" type="Shape3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="shape" type="Shape3D" />
<description>
Adds a [Shape3D] to the shape owner.
</description>
</method>
<method name="shape_owner_clear_shapes">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Removes all shapes from the shape owner.
</description>
</method>
<method name="shape_owner_get_owner" qualifiers="const">
- <return type="Object">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="Object" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Returns the parent object of the given shape owner.
</description>
</method>
<method name="shape_owner_get_shape" qualifiers="const">
- <return type="Shape3D">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="shape_id" type="int">
- </argument>
+ <return type="Shape3D" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="shape_id" type="int" />
<description>
Returns the [Shape3D] with the given id from the given shape owner.
</description>
</method>
<method name="shape_owner_get_shape_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Returns the number of shapes the given shape owner contains.
</description>
</method>
<method name="shape_owner_get_shape_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="shape_id" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="shape_id" type="int" />
<description>
Returns the child index of the [Shape3D] with the given id from the given shape owner.
</description>
</method>
<method name="shape_owner_get_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="owner_id" type="int" />
<description>
Returns the shape owner's [Transform3D].
</description>
</method>
<method name="shape_owner_remove_shape">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="shape_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="shape_id" type="int" />
<description>
Removes a shape from the given shape owner.
</description>
</method>
<method name="shape_owner_set_disabled">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="disabled" type="bool" />
<description>
If [code]true[/code], disables the given shape owner.
</description>
</method>
<method name="shape_owner_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="owner_id" type="int">
- </argument>
- <argument index="1" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="owner_id" type="int" />
+ <argument index="1" name="transform" type="Transform3D" />
<description>
Sets the [Transform3D] of the given shape owner.
</description>
@@ -223,12 +171,12 @@
</methods>
<members>
<member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer" default="1">
- The physics layers this CollisionObject3D is in. Collision objects can exist in one or more of 32 different layers. See also [member collision_mask].
- [b]Note:[/b] A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
+ The physics layers this CollisionObject3D [b]is in[/b]. Collision objects can exist in one or more of 32 different layers. See also [member collision_mask].
+ [b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
</member>
<member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="1">
- The physics layers this CollisionObject3D scans. Collision objects can scan one or more of 32 different layers. See also [member collision_layer].
- [b]Note:[/b] A contact is detected if object A is in any of the layers that object B scans, or object B is in any layers that object A scans. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
+ The physics layers this CollisionObject3D [b]scans[/b]. Collision objects can scan one or more of 32 different layers. See also [member collision_layer].
+ [b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
</member>
<member name="disable_mode" type="int" setter="set_disable_mode" getter="get_disable_mode" enum="CollisionObject3D.DisableMode" default="0">
Defines the behavior in physics when [member Node.process_mode] is set to [constant Node.PROCESS_MODE_DISABLED]. See [enum DisableMode] for more details about the different modes.
@@ -242,16 +190,11 @@
</members>
<signals>
<signal name="input_event">
- <argument index="0" name="camera" type="Node">
- </argument>
- <argument index="1" name="event" type="InputEvent">
- </argument>
- <argument index="2" name="position" type="Vector3">
- </argument>
- <argument index="3" name="normal" type="Vector3">
- </argument>
- <argument index="4" name="shape_idx" type="int">
- </argument>
+ <argument index="0" name="camera" type="Node" />
+ <argument index="1" name="event" type="InputEvent" />
+ <argument index="2" name="position" type="Vector3" />
+ <argument index="3" name="normal" type="Vector3" />
+ <argument index="4" name="shape_idx" type="int" />
<description>
Emitted when the object receives an unhandled [InputEvent]. [code]position[/code] is the location in world space of the mouse pointer on the surface of the shape with index [code]shape_idx[/code] and [code]normal[/code] is the normal vector of the surface at that point.
</description>
diff --git a/doc/classes/CollisionShape3D.xml b/doc/classes/CollisionShape3D.xml
index 5590947a4f..9184b672ff 100644
--- a/doc/classes/CollisionShape3D.xml
+++ b/doc/classes/CollisionShape3D.xml
@@ -14,17 +14,14 @@
</tutorials>
<methods>
<method name="make_convex_from_siblings">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sets the collision shape's shape to the addition of all its convexed [MeshInstance3D] siblings geometry.
</description>
</method>
<method name="resource_changed">
- <return type="void">
- </return>
- <argument index="0" name="resource" type="Resource">
- </argument>
+ <return type="void" />
+ <argument index="0" name="resource" type="Resource" />
<description>
If this method exists within a script it will be called whenever the shape resource has been modified.
</description>
diff --git a/doc/classes/Color.xml b/doc/classes/Color.xml
index 7b1415e40d..f00a20e95e 100644
--- a/doc/classes/Color.xml
+++ b/doc/classes/Color.xml
@@ -17,28 +17,22 @@
</tutorials>
<methods>
<method name="Color" qualifiers="constructor">
- <return type="Color">
- </return>
+ <return type="Color" />
<description>
Constructs a default-initialized [Color] with all components set to [code]0[/code].
</description>
</method>
<method name="Color" qualifiers="constructor">
- <return type="Color">
- </return>
- <argument index="0" name="from" type="Color">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="from" type="Color" />
<description>
Constructs a [Color] as a copy of the given [Color].
</description>
</method>
<method name="Color" qualifiers="constructor">
- <return type="Color">
- </return>
- <argument index="0" name="from" type="Color">
- </argument>
- <argument index="1" name="alpha" type="float">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="from" type="Color" />
+ <argument index="1" name="alpha" type="float" />
<description>
Constructs a [Color] from an existing color, but with a custom alpha value.
[codeblocks]
@@ -52,36 +46,26 @@
</description>
</method>
<method name="Color" qualifiers="constructor">
- <return type="Color">
- </return>
- <argument index="0" name="code" type="String">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="code" type="String" />
<description>
Constructs a [Color] either from an HTML color code or from a standardized color name. Supported color names are the same as the constants.
</description>
</method>
<method name="Color" qualifiers="constructor">
- <return type="Color">
- </return>
- <argument index="0" name="code" type="String">
- </argument>
- <argument index="1" name="alpha" type="float">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="code" type="String" />
+ <argument index="1" name="alpha" type="float" />
<description>
Constructs a [Color] either from an HTML color code or from a standardized color name, with [code]alpha[/code] on the range of 0 to 1. Supported color names are the same as the constants.
</description>
</method>
<method name="Color" qualifiers="constructor">
- <return type="Color">
- </return>
- <argument index="0" name="r" type="float">
- </argument>
- <argument index="1" name="g" type="float">
- </argument>
- <argument index="2" name="b" type="float">
- </argument>
- <argument index="3" name="a" type="float">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="r" type="float" />
+ <argument index="1" name="g" type="float" />
+ <argument index="2" name="b" type="float" />
+ <argument index="3" name="a" type="float" />
<description>
Constructs a [Color] from RGBA values, typically between 0 and 1.
[codeblocks]
@@ -95,14 +79,10 @@
</description>
</method>
<method name="Color" qualifiers="constructor">
- <return type="Color">
- </return>
- <argument index="0" name="r" type="float">
- </argument>
- <argument index="1" name="g" type="float">
- </argument>
- <argument index="2" name="b" type="float">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="r" type="float" />
+ <argument index="1" name="g" type="float" />
+ <argument index="2" name="b" type="float" />
<description>
Constructs a [Color] from RGB values, typically between 0 and 1. Alpha will be 1.
[codeblocks]
@@ -116,10 +96,8 @@
</description>
</method>
<method name="blend" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="over" type="Color">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="over" type="Color" />
<description>
Returns a new color resulting from blending this color over another. If the color is opaque, the result is also opaque. The second color may have a range of alpha values.
[codeblocks]
@@ -137,21 +115,16 @@
</description>
</method>
<method name="clamp" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="min" type="Color" default="Color(0, 0, 0, 0)">
- </argument>
- <argument index="1" name="max" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="min" type="Color" default="Color(0, 0, 0, 0)" />
+ <argument index="1" name="max" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Returns a new color with all components clamped between the components of [code]min[/code] and [code]max[/code], by running [method @GlobalScope.clamp] on each component.
</description>
</method>
<method name="darkened" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="amount" type="float">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="amount" type="float" />
<description>
Returns a new color resulting from making this color darker by the specified percentage (ratio from 0 to 1).
[codeblocks]
@@ -167,88 +140,67 @@
</description>
</method>
<method name="find_named_color" qualifiers="static">
- <return type="int">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="String" />
<description>
</description>
</method>
<method name="from_rgbe9995" qualifiers="static">
- <return type="Color">
- </return>
- <argument index="0" name="rgbe" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="rgbe" type="int" />
<description>
</description>
</method>
<method name="from_string" qualifiers="static">
- <return type="Color">
- </return>
- <argument index="0" name="str" type="String">
- </argument>
- <argument index="1" name="default" type="Color">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="str" type="String" />
+ <argument index="1" name="default" type="Color" />
<description>
</description>
</method>
<method name="get_named_color" qualifiers="static">
- <return type="Color">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="idx" type="int" />
<description>
</description>
</method>
<method name="get_named_color_count" qualifiers="static">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_named_color_name" qualifiers="static">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
</description>
</method>
<method name="hex" qualifiers="static">
- <return type="Color">
- </return>
- <argument index="0" name="hex" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="hex" type="int" />
<description>
</description>
</method>
<method name="hex64" qualifiers="static">
- <return type="Color">
- </return>
- <argument index="0" name="hex" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="hex" type="int" />
<description>
</description>
</method>
<method name="html" qualifiers="static">
- <return type="Color">
- </return>
- <argument index="0" name="rgba" type="String">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="rgba" type="String" />
<description>
</description>
</method>
<method name="html_is_valid" qualifiers="static">
- <return type="bool">
- </return>
- <argument index="0" name="color" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="color" type="String" />
<description>
</description>
</method>
<method name="inverted" qualifiers="const">
- <return type="Color">
- </return>
+ <return type="Color" />
<description>
Returns the inverted color [code](1 - r, 1 - g, 1 - b, a)[/code].
[codeblocks]
@@ -264,21 +216,16 @@
</description>
</method>
<method name="is_equal_approx" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="to" type="Color">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="to" type="Color" />
<description>
Returns [code]true[/code] if this color and [code]color[/code] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.
</description>
</method>
<method name="lerp" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="to" type="Color">
- </argument>
- <argument index="1" name="weight" type="float">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="to" type="Color" />
+ <argument index="1" name="weight" type="float" />
<description>
Returns the linear interpolation with another color. The interpolation factor [code]weight[/code] is between 0 and 1.
[codeblocks]
@@ -296,10 +243,8 @@
</description>
</method>
<method name="lightened" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="amount" type="float">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="amount" type="float" />
<description>
Returns a new color resulting from making this color lighter by the specified percentage (ratio from 0 to 1).
[codeblocks]
@@ -315,108 +260,83 @@
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Color">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Color" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Color">
- </return>
- <argument index="0" name="right" type="Color">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="right" type="Color" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Color">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Color">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="Color">
- </return>
- <argument index="0" name="right" type="Color">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="right" type="Color" />
<description>
</description>
</method>
<method name="operator -" qualifiers="operator">
- <return type="Color">
- </return>
- <argument index="0" name="right" type="Color">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="right" type="Color" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Color">
- </return>
- <argument index="0" name="right" type="Color">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="right" type="Color" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Color">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Color">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Color">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Color" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="operator unary+" qualifiers="operator">
- <return type="Color">
- </return>
+ <return type="Color" />
<description>
</description>
</method>
<method name="operator unary-" qualifiers="operator">
- <return type="Color">
- </return>
+ <return type="Color" />
<description>
</description>
</method>
<method name="to_abgr32" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the color converted to a 32-bit integer in ABGR format (each byte represents a color channel). ABGR is the reversed version of the default format.
[codeblocks]
@@ -432,8 +352,7 @@
</description>
</method>
<method name="to_abgr64" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the color converted to a 64-bit integer in ABGR format (each word represents a color channel). ABGR is the reversed version of the default format.
[codeblocks]
@@ -449,8 +368,7 @@
</description>
</method>
<method name="to_argb32" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the color converted to a 32-bit integer in ARGB format (each byte represents a color channel). ARGB is more compatible with DirectX.
[codeblocks]
@@ -466,8 +384,7 @@
</description>
</method>
<method name="to_argb64" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the color converted to a 64-bit integer in ARGB format (each word represents a color channel). ARGB is more compatible with DirectX.
[codeblocks]
@@ -483,10 +400,8 @@
</description>
</method>
<method name="to_html" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="with_alpha" type="bool" default="true">
- </argument>
+ <return type="String" />
+ <argument index="0" name="with_alpha" type="bool" default="true" />
<description>
Returns the color converted to an HTML hexadecimal color string in RGBA format (ex: [code]ff34f822[/code]).
Setting [code]with_alpha[/code] to [code]false[/code] excludes alpha from the hexadecimal string (and uses RGB instead of RGBA format).
@@ -505,8 +420,7 @@
</description>
</method>
<method name="to_rgba32" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the color converted to a 32-bit integer in RGBA format (each byte represents a color channel). RGBA is Godot's default format.
[codeblocks]
@@ -522,8 +436,7 @@
</description>
</method>
<method name="to_rgba64" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the color converted to a 64-bit integer in RGBA format (each word represents a color channel). RGBA is Godot's default format.
[codeblocks]
diff --git a/doc/classes/ColorPicker.xml b/doc/classes/ColorPicker.xml
index 2111358ef4..99e121de75 100644
--- a/doc/classes/ColorPicker.xml
+++ b/doc/classes/ColorPicker.xml
@@ -11,27 +11,22 @@
</tutorials>
<methods>
<method name="add_preset">
- <return type="void">
- </return>
- <argument index="0" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="color" type="Color" />
<description>
Adds the given color to a list of color presets. The presets are displayed in the color picker and the user will be able to select them.
[b]Note:[/b] the presets list is only for [i]this[/i] color picker.
</description>
</method>
<method name="erase_preset">
- <return type="void">
- </return>
- <argument index="0" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="color" type="Color" />
<description>
Removes the given color from the list of color presets of this color picker.
</description>
</method>
<method name="get_presets" qualifiers="const">
- <return type="PackedColorArray">
- </return>
+ <return type="PackedColorArray" />
<description>
Returns the list of colors in the presets of the color picker.
</description>
@@ -67,22 +62,19 @@
</members>
<signals>
<signal name="color_changed">
- <argument index="0" name="color" type="Color">
- </argument>
+ <argument index="0" name="color" type="Color" />
<description>
Emitted when the color is changed.
</description>
</signal>
<signal name="preset_added">
- <argument index="0" name="color" type="Color">
- </argument>
+ <argument index="0" name="color" type="Color" />
<description>
Emitted when a preset is added.
</description>
</signal>
<signal name="preset_removed">
- <argument index="0" name="color" type="Color">
- </argument>
+ <argument index="0" name="color" type="Color" />
<description>
Emitted when a preset is removed.
</description>
@@ -100,39 +92,39 @@
</constant>
</constants>
<theme_items>
- <theme_item name="add_preset" type="Texture2D">
+ <theme_item name="add_preset" data_type="icon" type="Texture2D">
The icon for the "Add Preset" button.
</theme_item>
- <theme_item name="bar_arrow" type="Texture2D">
+ <theme_item name="bar_arrow" data_type="icon" type="Texture2D">
The texture for the arrow grabber.
</theme_item>
- <theme_item name="color_hue" type="Texture2D">
+ <theme_item name="color_hue" data_type="icon" type="Texture2D">
Custom texture for the hue selection slider on the right.
</theme_item>
- <theme_item name="color_sample" type="Texture2D">
+ <theme_item name="color_sample" data_type="icon" type="Texture2D">
</theme_item>
- <theme_item name="h_width" type="int" default="30">
+ <theme_item name="h_width" data_type="constant" type="int" default="30">
The width of the hue selection slider.
</theme_item>
- <theme_item name="label_width" type="int" default="10">
+ <theme_item name="label_width" data_type="constant" type="int" default="10">
</theme_item>
- <theme_item name="margin" type="int" default="4">
+ <theme_item name="margin" data_type="constant" type="int" default="4">
The margin around the [ColorPicker].
</theme_item>
- <theme_item name="overbright_indicator" type="Texture2D">
+ <theme_item name="overbright_indicator" data_type="icon" type="Texture2D">
The indicator used to signalize that the color value is outside the 0-1 range.
</theme_item>
- <theme_item name="picker_cursor" type="Texture2D">
+ <theme_item name="picker_cursor" data_type="icon" type="Texture2D">
</theme_item>
- <theme_item name="preset_bg" type="Texture2D">
+ <theme_item name="preset_bg" data_type="icon" type="Texture2D">
</theme_item>
- <theme_item name="screen_picker" type="Texture2D">
+ <theme_item name="screen_picker" data_type="icon" type="Texture2D">
The icon for the screen color picker button.
</theme_item>
- <theme_item name="sv_height" type="int" default="256">
+ <theme_item name="sv_height" data_type="constant" type="int" default="256">
The height of the saturation-value selection box.
</theme_item>
- <theme_item name="sv_width" type="int" default="256">
+ <theme_item name="sv_width" data_type="constant" type="int" default="256">
The width of the saturation-value selection box.
</theme_item>
</theme_items>
diff --git a/doc/classes/ColorPickerButton.xml b/doc/classes/ColorPickerButton.xml
index 09b828366f..6b5a9f2503 100644
--- a/doc/classes/ColorPickerButton.xml
+++ b/doc/classes/ColorPickerButton.xml
@@ -13,15 +13,13 @@
</tutorials>
<methods>
<method name="get_picker">
- <return type="ColorPicker">
- </return>
+ <return type="ColorPicker" />
<description>
Returns the [ColorPicker] that this node toggles.
</description>
</method>
<method name="get_popup">
- <return type="PopupPanel">
- </return>
+ <return type="PopupPanel" />
<description>
Returns the control's [PopupPanel] which allows you to connect to popup signals. This allows you to handle events when the ColorPicker is shown or hidden.
</description>
@@ -38,8 +36,7 @@
</members>
<signals>
<signal name="color_changed">
- <argument index="0" name="color" type="Color">
- </argument>
+ <argument index="0" name="color" type="Color" />
<description>
Emitted when the color changes.
</description>
@@ -58,49 +55,49 @@
<constants>
</constants>
<theme_items>
- <theme_item name="bg" type="Texture2D">
+ <theme_item name="bg" data_type="icon" type="Texture2D">
The background of the color preview rect on the button.
</theme_item>
- <theme_item name="disabled" type="StyleBox">
+ <theme_item name="disabled" data_type="style" type="StyleBox">
[StyleBox] used when the [ColorPickerButton] is disabled.
</theme_item>
- <theme_item name="focus" type="StyleBox">
+ <theme_item name="focus" data_type="style" type="StyleBox">
[StyleBox] used when the [ColorPickerButton] is focused. It is displayed over the current [StyleBox], so using [StyleBoxEmpty] will just disable the focus visual effect.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
[Font] of the [ColorPickerButton]'s text.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Default text [Color] of the [ColorPickerButton].
</theme_item>
- <theme_item name="font_disabled_color" type="Color" default="Color(0.9, 0.9, 0.9, 0.3)">
+ <theme_item name="font_disabled_color" data_type="color" type="Color" default="Color(0.9, 0.9, 0.9, 0.3)">
Text [Color] used when the [ColorPickerButton] is disabled.
</theme_item>
- <theme_item name="font_hover_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_hover_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Text [Color] used when the [ColorPickerButton] is being hovered.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the [ColorPickerButton].
</theme_item>
- <theme_item name="font_pressed_color" type="Color" default="Color(0.8, 0.8, 0.8, 1)">
+ <theme_item name="font_pressed_color" data_type="color" type="Color" default="Color(0.8, 0.8, 0.8, 1)">
Text [Color] used when the [ColorPickerButton] is being pressed.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the [ColorPickerButton]'s text.
</theme_item>
- <theme_item name="hover" type="StyleBox">
+ <theme_item name="hover" data_type="style" type="StyleBox">
[StyleBox] used when the [ColorPickerButton] is being hovered.
</theme_item>
- <theme_item name="hseparation" type="int" default="2">
+ <theme_item name="hseparation" data_type="constant" type="int" default="2">
The horizontal space between [ColorPickerButton]'s icon and text.
</theme_item>
- <theme_item name="normal" type="StyleBox">
+ <theme_item name="normal" data_type="style" type="StyleBox">
Default [StyleBox] for the [ColorPickerButton].
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
- <theme_item name="pressed" type="StyleBox">
+ <theme_item name="pressed" data_type="style" type="StyleBox">
[StyleBox] used when the [ColorPickerButton] is being pressed.
</theme_item>
</theme_items>
diff --git a/doc/classes/ConcavePolygonShape3D.xml b/doc/classes/ConcavePolygonShape3D.xml
index b510905d1f..34fb06a476 100644
--- a/doc/classes/ConcavePolygonShape3D.xml
+++ b/doc/classes/ConcavePolygonShape3D.xml
@@ -12,17 +12,14 @@
</tutorials>
<methods>
<method name="get_faces" qualifiers="const">
- <return type="PackedVector3Array">
- </return>
+ <return type="PackedVector3Array" />
<description>
Returns the faces (an array of triangles).
</description>
</method>
<method name="set_faces">
- <return type="void">
- </return>
- <argument index="0" name="faces" type="PackedVector3Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="faces" type="PackedVector3Array" />
<description>
Sets the faces (an array of triangles).
</description>
diff --git a/doc/classes/ConeTwistJoint3D.xml b/doc/classes/ConeTwistJoint3D.xml
index bd6e24dafd..dd65b3c688 100644
--- a/doc/classes/ConeTwistJoint3D.xml
+++ b/doc/classes/ConeTwistJoint3D.xml
@@ -12,20 +12,15 @@
</tutorials>
<methods>
<method name="get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="ConeTwistJoint3D.Param">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="ConeTwistJoint3D.Param" />
<description>
</description>
</method>
<method name="set_param">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="ConeTwistJoint3D.Param">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="ConeTwistJoint3D.Param" />
+ <argument index="1" name="value" type="float" />
<description>
</description>
</method>
diff --git a/doc/classes/ConfigFile.xml b/doc/classes/ConfigFile.xml
index 76855fc19f..f970be23a6 100644
--- a/doc/classes/ConfigFile.xml
+++ b/doc/classes/ConfigFile.xml
@@ -12,34 +12,75 @@
a_vector=Vector3(1, 0, 2)
[/codeblock]
The stored data can be saved to or parsed from a file, though ConfigFile objects can also be used directly without accessing the filesystem.
- The following example shows how to parse an INI-style file from the system, read its contents and store new values in it:
+ The following example shows how to create a simple [ConfigFile] and save it on disc:
[codeblocks]
[gdscript]
+ # Create new ConfigFile object.
var config = ConfigFile.new()
- var err = config.load("user://settings.cfg")
- if err == OK: # If not, something went wrong with the file loading
- # Look for the display/width pair, and default to 1024 if missing
- var screen_width = config.get_value("display", "width", 1024)
- # Store a variable if and only if it hasn't been defined yet
- if not config.has_section_key("audio", "mute"):
- config.set_value("audio", "mute", false)
- # Save the changes by overwriting the previous file
- config.save("user://settings.cfg")
+
+ # Store some values.
+ config.set_value("Player1", "player_name", "Steve")
+ config.set_value("Player1", "best_score", 10)
+ config.set_value("Player2", "player_name", "V3geta")
+ config.set_value("Player2", "best_score", 9001)
+
+ # Save it to a file (overwrite if already exists).
+ config.save("user://scores.cfg")
[/gdscript]
[csharp]
+ // Create new ConfigFile object.
var config = new ConfigFile();
- Error err = config.Load("user://settings.cfg");
- if (err == Error.Ok) // If not, something went wrong with the file loading
+
+ // Store some values.
+ config.SetValue("Player1", "player_name", "Steve");
+ config.SetValue("Player1", "best_score", 10);
+ config.SetValue("Player2", "player_name", "V3geta");
+ config.SetValue("Player2", "best_score", 9001);
+
+ // Save it to a file (overwrite if already exists).
+ config.Save("user://scores.cfg");
+ [/csharp]
+ [/codeblocks]
+ This example shows how the above file could be loaded:
+ [codeblocks]
+ [gdscript]
+ var score_data = {}
+ var config = ConfigFile.new()
+
+ # Load data from a file.
+ var err = config.load("user://scores.cfg")
+
+ # If the file didn't load, ignore it.
+ if err != OK:
+ return
+
+ # Iterate over all sections.
+ for player in config.get_sections():
+ # Fetch the data for each section.
+ var player_name = config.get_value(player, "player_name")
+ var player_score = config.get_value(player, "best_score")
+ score_data[player_name] = player_score
+ [/gdscript]
+ [csharp]
+ var score_data = new Godot.Collections.Dictionary();
+ var config = new ConfigFile();
+
+ // Load data from a file.
+ Error err = config.Load("user://scores.cfg");
+
+ // If the file didn't load, ignore it.
+ if (err != Error.Ok)
+ {
+ return;
+ }
+
+ // Iterate over all sections.
+ foreach (String player in config.GetSections())
{
- // Look for the display/width pair, and default to 1024 if missing
- int screenWidth = (int)config.GetValue("display", "width", 1024);
- // Store a variable if and only if it hasn't been defined yet
- if (!config.HasSectionKey("audio", "mute"))
- {
- config.SetValue("audio", "mute", false);
- }
- // Save the changes by overwriting the previous file
- config.Save("user://settings.cfg");
+ // Fetch the data for each section.
+ var player_name = (String)config.GetValue(player, "player_name");
+ var player_score = (int)config.GetValue(player, "best_score");
+ score_data[player_name] = player_score;
}
[/csharp]
[/codeblocks]
@@ -50,167 +91,127 @@
</tutorials>
<methods>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="erase_section">
- <return type="void">
- </return>
- <argument index="0" name="section" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="section" type="String" />
<description>
Deletes the specified section along with all the key-value pairs inside. Raises an error if the section does not exist.
</description>
</method>
<method name="erase_section_key">
- <return type="void">
- </return>
- <argument index="0" name="section" type="String">
- </argument>
- <argument index="1" name="key" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="section" type="String" />
+ <argument index="1" name="key" type="String" />
<description>
Deletes the specified key in a section. Raises an error if either the section or the key do not exist.
</description>
</method>
<method name="get_section_keys" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="section" type="String">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="section" type="String" />
<description>
Returns an array of all defined key identifiers in the specified section. Raises an error and returns an empty array if the section does not exist.
</description>
</method>
<method name="get_sections" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns an array of all defined section identifiers.
</description>
</method>
<method name="get_value" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="section" type="String">
- </argument>
- <argument index="1" name="key" type="String">
- </argument>
- <argument index="2" name="default" type="Variant" default="null">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="section" type="String" />
+ <argument index="1" name="key" type="String" />
+ <argument index="2" name="default" type="Variant" default="null" />
<description>
Returns the current value for the specified section and key. If either the section or the key do not exist, the method returns the fallback [code]default[/code] value. If [code]default[/code] is not specified or set to [code]null[/code], an error is also raised.
</description>
</method>
<method name="has_section" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="section" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="section" type="String" />
<description>
Returns [code]true[/code] if the specified section exists.
</description>
</method>
<method name="has_section_key" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="section" type="String">
- </argument>
- <argument index="1" name="key" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="section" type="String" />
+ <argument index="1" name="key" type="String" />
<description>
Returns [code]true[/code] if the specified section-key pair exists.
</description>
</method>
<method name="load">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Loads the config file specified as a parameter. The file's contents are parsed and loaded in the [ConfigFile] object which the method was called on.
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="load_encrypted">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="key" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="key" type="PackedByteArray" />
<description>
Loads the encrypted config file specified as a parameter, using the provided [code]key[/code] to decrypt it. The file's contents are parsed and loaded in the [ConfigFile] object which the method was called on.
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="load_encrypted_pass">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="password" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="password" type="String" />
<description>
Loads the encrypted config file specified as a parameter, using the provided [code]password[/code] to decrypt it. The file's contents are parsed and loaded in the [ConfigFile] object which the method was called on.
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="parse">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="data" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="data" type="String" />
<description>
Parses the passed string as the contents of a config file. The string is parsed and loaded in the ConfigFile object which the method was called on.
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="save">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Saves the contents of the [ConfigFile] object to the file specified as a parameter. The output file uses an INI-style structure.
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="save_encrypted">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="key" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="key" type="PackedByteArray" />
<description>
Saves the contents of the [ConfigFile] object to the AES-256 encrypted file specified as a parameter, using the provided [code]key[/code] to encrypt it. The output file uses an INI-style structure.
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="save_encrypted_pass">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="password" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="password" type="String" />
<description>
Saves the contents of the [ConfigFile] object to the AES-256 encrypted file specified as a parameter, using the provided [code]password[/code] to encrypt it. The output file uses an INI-style structure.
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="set_value">
- <return type="void">
- </return>
- <argument index="0" name="section" type="String">
- </argument>
- <argument index="1" name="key" type="String">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="section" type="String" />
+ <argument index="1" name="key" type="String" />
+ <argument index="2" name="value" type="Variant" />
<description>
Assigns a value to the specified key of the specified section. If either the section or the key do not exist, they are created. Passing a [code]null[/code] value deletes the specified key if it exists, and deletes the section if it ends up empty once the key has been removed.
</description>
diff --git a/doc/classes/ConfirmationDialog.xml b/doc/classes/ConfirmationDialog.xml
index 0253ef21df..871082696c 100644
--- a/doc/classes/ConfirmationDialog.xml
+++ b/doc/classes/ConfirmationDialog.xml
@@ -19,8 +19,7 @@
</tutorials>
<methods>
<method name="get_cancel_button">
- <return type="Button">
- </return>
+ <return type="Button" />
<description>
Returns the cancel button.
</description>
diff --git a/doc/classes/Container.xml b/doc/classes/Container.xml
index c285b448d8..e78eb8d259 100644
--- a/doc/classes/Container.xml
+++ b/doc/classes/Container.xml
@@ -11,19 +11,15 @@
</tutorials>
<methods>
<method name="fit_child_in_rect">
- <return type="void">
- </return>
- <argument index="0" name="child" type="Control">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="child" type="Control" />
+ <argument index="1" name="rect" type="Rect2" />
<description>
Fit a child control in a given rect. This is mainly a helper for creating custom container classes.
</description>
</method>
<method name="queue_sort">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Queue resort of the contained children. This is called automatically anyway, but can be called upon request.
</description>
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml
index 23cbdd8cab..43e3c97bff 100644
--- a/doc/classes/Control.xml
+++ b/doc/classes/Control.xml
@@ -9,7 +9,7 @@
[b]User Interface nodes and input[/b]
Godot sends input events to the scene's root node first, by calling [method Node._input]. [method Node._input] forwards the event down the node tree to the nodes under the mouse cursor, or on keyboard focus. To do so, it calls [code]MainLoop._input_event[/code].
[b]FIXME:[/b] No longer valid after DisplayServer split and Input refactoring.
- Call [method accept_event] so no other node receives the event. Once you accepted an input, it becomes handled so [method Node._unhandled_input] will not process it.
+ Call [method accept_event] so no other node receives the event. Once you accept an input, it becomes handled so [method Node._unhandled_input] will not process it.
Only one [Control] node can be in keyboard focus. Only the node in focus will receive keyboard events. To get the focus, call [method grab_focus]. [Control] nodes lose focus when another node grabs it, or if you hide the node in focus.
Sets [member mouse_filter] to [constant MOUSE_FILTER_IGNORE] to tell a [Control] node to ignore mouse or touch events. You'll need it if you place an icon on top of a button.
[Theme] resources change the Control's appearance. If you change the [Theme] on a [Control] node, it affects all of its children. To override some of the theme's parameters, call one of the [code]add_theme_*_override[/code] methods, like [method add_theme_font_override]. You can override the theme with the inspector.
@@ -23,12 +23,9 @@
</tutorials>
<methods>
<method name="_can_drop_data" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="data" type="Variant">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="data" type="Variant" />
<description>
Godot calls this method to test if [code]data[/code] from a control's [method _get_drag_data] can be dropped at [code]position[/code]. [code]position[/code] is local to this control.
This method should only be used to test the data. Process the data in [method _drop_data].
@@ -51,12 +48,9 @@
</description>
</method>
<method name="_drop_data" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="data" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="data" type="Variant" />
<description>
Godot calls this method to pass you the [code]data[/code] from a control's [method _get_drag_data] result. Godot first calls [method _can_drop_data] to test if [code]data[/code] is allowed to drop at [code]position[/code] where [code]position[/code] is local to this control.
[codeblocks]
@@ -80,10 +74,8 @@
</description>
</method>
<method name="_get_drag_data" qualifiers="virtual">
- <return type="Variant">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="position" type="Vector2" />
<description>
Godot calls this method to get data that can be dragged and dropped onto controls that expect drop data. Returns [code]null[/code] if there is no data to drag. Controls that want to receive drop data should implement [method _can_drop_data] and [method _drop_data]. [code]position[/code] is local to this control. Drag may be forced with [method force_drag].
A preview that will follow the mouse that should represent the data can be set with [method set_drag_preview]. A good time to set the preview is in this method.
@@ -106,18 +98,15 @@
</description>
</method>
<method name="_get_minimum_size" qualifiers="virtual">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Virtual method to be implemented by the user. Returns the minimum size for this control. Alternative to [member rect_min_size] for controlling minimum size via code. The actual minimum size will be the max value of these two (in each axis separately).
If not overridden, defaults to [constant Vector2.ZERO].
</description>
</method>
<method name="_gui_input" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="event" type="InputEvent">
- </argument>
+ <return type="void" />
+ <argument index="0" name="event" type="InputEvent" />
<description>
Virtual method to be implemented by the user. Use this method to process and accept inputs on UI elements. See [method accept_event].
Example: clicking a control.
@@ -147,14 +136,12 @@
* control has [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];
* control is obstructed by another [Control] on top of it, which doesn't have [member mouse_filter] set to [constant MOUSE_FILTER_IGNORE];
* control's parent has [member mouse_filter] set to [constant MOUSE_FILTER_STOP] or has accepted the event;
- * it happens outside parent's rectangle and the parent has either [member rect_clip_content] enabled.
+ * it happens outside the parent's rectangle and the parent has either [member rect_clip_content] enabled.
</description>
</method>
<method name="_has_point" qualifiers="virtual const">
- <return type="bool">
- </return>
- <argument index="0" name="" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="" type="Vector2" />
<description>
Virtual method to be implemented by the user. Returns whether the given [code]point[/code] is inside this control.
If not overridden, default behavior is checking if the point is within control's Rect.
@@ -162,16 +149,14 @@
</description>
</method>
<method name="_make_custom_tooltip" qualifiers="virtual">
- <return type="Control">
- </return>
- <argument index="0" name="for_text" type="String">
- </argument>
+ <return type="Control" />
+ <argument index="0" name="for_text" type="String" />
<description>
Virtual method to be implemented by the user. Returns a [Control] node that should be used as a tooltip instead of the default one. The [code]for_text[/code] includes the contents of the [member hint_tooltip] property.
- The returned node must be of type [Control] or Control-derived. It can have child nodes of any type. It is freed when the tooltip disappears, so make sure you always provide a new instance (if you want to use a pre-existing node from your scene tree, you can duplicate it and pass the duplicated instance).When [code]null[/code] or a non-Control node is returned, the default tooltip will be used instead.
+ The returned node must be of type [Control] or Control-derived. It can have child nodes of any type. It is freed when the tooltip disappears, so make sure you always provide a new instance (if you want to use a pre-existing node from your scene tree, you can duplicate it and pass the duplicated instance). When [code]null[/code] or a non-Control node is returned, the default tooltip will be used instead.
The returned node will be added as child to a [PopupPanel], so you should only provide the contents of that panel. That [PopupPanel] can be themed using [method Theme.set_stylebox] for the type [code]"TooltipPanel"[/code] (see [member hint_tooltip] for an example).
[b]Note:[/b] The tooltip is shrunk to minimal size. If you want to ensure it's fully visible, you might want to set its [member rect_min_size] to some non-zero value.
- [b]Note:[/b] The node (and any relevant children) should be [member CanvasItem.visible] when returned, otherwise the viewport that instantiates it will not be able to calculate its minimum size reliably.
+ [b]Note:[/b] The node (and any relevant children) should be [member CanvasItem.visible] when returned, otherwise, the viewport that instantiates it will not be able to calculate its minimum size reliably.
Example of usage with a custom-constructed node:
[codeblocks]
[gdscript]
@@ -209,31 +194,24 @@
</description>
</method>
<method name="_structured_text_parser" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="args" type="Array">
- </argument>
- <argument index="1" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="args" type="Array" />
+ <argument index="1" name="text" type="String" />
<description>
User defined BiDi algorithm override function.
Return [code]Array[/code] of [code]Vector2i[/code] text ranges, in the left-to-right order. Ranges should cover full source [code]text[/code] without overlaps. BiDi algorithm will be used on each range separately.
</description>
</method>
<method name="accept_event">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Marks an input event as handled. Once you accept an input event, it stops propagating, even to nodes listening to [method Node._unhandled_input] or [method Node._unhandled_key_input].
</description>
</method>
<method name="add_theme_color_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="color" type="Color" />
<description>
Creates a local override for a theme [Color] with the specified [code]name[/code]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_color_override].
See also [method get_theme_color].
@@ -259,60 +237,45 @@
</description>
</method>
<method name="add_theme_constant_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="constant" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="constant" type="int" />
<description>
Creates a local override for a theme constant with the specified [code]name[/code]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_constant_override].
See also [method get_theme_constant].
</description>
</method>
<method name="add_theme_font_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="font" type="Font">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="font" type="Font" />
<description>
Creates a local override for a theme [Font] with the specified [code]name[/code]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_font_override].
See also [method get_theme_font].
</description>
</method>
<method name="add_theme_font_size_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="font_size" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="font_size" type="int" />
<description>
Creates a local override for a theme font size with the specified [code]name[/code]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_font_size_override].
See also [method get_theme_font_size].
</description>
</method>
<method name="add_theme_icon_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="texture" type="Texture2D" />
<description>
Creates a local override for a theme icon with the specified [code]name[/code]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_icon_override].
See also [method get_theme_icon].
</description>
</method>
<method name="add_theme_stylebox_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="stylebox" type="StyleBox">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="stylebox" type="StyleBox" />
<description>
Creates a local override for a theme [StyleBox] with the specified [code]name[/code]. Local overrides always take precedence when fetching theme items for the control. An override can be removed with [method remove_theme_stylebox_override].
See also [method get_theme_stylebox].
@@ -344,137 +307,112 @@
</description>
</method>
<method name="find_next_valid_focus" qualifiers="const">
- <return type="Control">
- </return>
+ <return type="Control" />
<description>
Finds the next (below in the tree) [Control] that can receive the focus.
</description>
</method>
<method name="find_prev_valid_focus" qualifiers="const">
- <return type="Control">
- </return>
+ <return type="Control" />
<description>
Finds the previous (above in the tree) [Control] that can receive the focus.
</description>
</method>
<method name="force_drag">
- <return type="void">
- </return>
- <argument index="0" name="data" type="Variant">
- </argument>
- <argument index="1" name="preview" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="data" type="Variant" />
+ <argument index="1" name="preview" type="Control" />
<description>
Forces drag and bypasses [method _get_drag_data] and [method set_drag_preview] by passing [code]data[/code] and [code]preview[/code]. Drag will start even if the mouse is neither over nor pressed on this control.
The methods [method _can_drop_data] and [method _drop_data] must be implemented on controls that want to receive drop data.
</description>
</method>
<method name="get_anchor" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="side" type="int" enum="Side">
- </argument>
+ <return type="float" />
+ <argument index="0" name="side" type="int" enum="Side" />
<description>
Returns the anchor for the specified [enum Side]. A getter method for [member anchor_bottom], [member anchor_left], [member anchor_right] and [member anchor_top].
</description>
</method>
<method name="get_begin" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns [member offset_left] and [member offset_top]. See also [member rect_position].
</description>
</method>
<method name="get_combined_minimum_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns combined minimum size from [member rect_min_size] and [method get_minimum_size].
</description>
</method>
<method name="get_cursor_shape" qualifiers="const">
- <return type="int" enum="Control.CursorShape">
- </return>
- <argument index="0" name="position" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="int" enum="Control.CursorShape" />
+ <argument index="0" name="position" type="Vector2" default="Vector2(0, 0)" />
<description>
Returns the mouse cursor shape the control displays on mouse hover. See [enum CursorShape].
</description>
</method>
<method name="get_end" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns [member offset_right] and [member offset_bottom].
</description>
</method>
<method name="get_focus_neighbor" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="side" type="int" enum="Side">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="side" type="int" enum="Side" />
<description>
Returns the focus neighbor for the specified [enum Side]. A getter method for [member focus_neighbor_bottom], [member focus_neighbor_left], [member focus_neighbor_right] and [member focus_neighbor_top].
</description>
</method>
<method name="get_focus_owner" qualifiers="const">
- <return type="Control">
- </return>
+ <return type="Control" />
<description>
Returns the control that has the keyboard focus or [code]null[/code] if none.
</description>
</method>
<method name="get_global_rect" qualifiers="const">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Returns the position and size of the control relative to the top-left corner of the screen. See [member rect_position] and [member rect_size].
</description>
</method>
<method name="get_minimum_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the minimum size for this control. See [member rect_min_size].
</description>
</method>
<method name="get_offset" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="offset" type="int" enum="Side">
- </argument>
+ <return type="float" />
+ <argument index="0" name="offset" type="int" enum="Side" />
<description>
Returns the anchor for the specified [enum Side]. A getter method for [member offset_bottom], [member offset_left], [member offset_right] and [member offset_top].
</description>
</method>
<method name="get_parent_area_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the width/height occupied in the parent control.
</description>
</method>
<method name="get_parent_control" qualifiers="const">
- <return type="Control">
- </return>
+ <return type="Control" />
<description>
Returns the parent control node.
</description>
</method>
<method name="get_rect" qualifiers="const">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Returns the position and size of the control relative to the top-left corner of the parent Control. See [member rect_position] and [member rect_size].
</description>
</method>
<method name="get_theme_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns a [Color] from the first matching [Theme] in the tree if that [Theme] has a color item with the specified [code]name[/code] and [code]theme_type[/code]. If [code]theme_type[/code] is omitted the class name of the current control is used as the type, or [member theme_type_variation] if it is defined. If the type is a class name its parent classes are also checked, in order of inheritance. If the type is a variation its base types are checked, in order of dependency, then the control's class name and its parent classes are checked.
For the current control its local overrides are considered first (see [method add_theme_color_override]), then its assigned [member theme]. After the current control, each parent control and its assigned [member theme] are considered; controls without a [member theme] assigned are skipped. If no matching [Theme] is found in the tree, a custom project [Theme] (see [member ProjectSettings.gui/theme/custom]) and the default [Theme] are used.
@@ -499,77 +437,59 @@
</description>
</method>
<method name="get_theme_constant" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns a constant from the first matching [Theme] in the tree if that [Theme] has a constant item with the specified [code]name[/code] and [code]theme_type[/code].
See [method get_theme_color] for details.
</description>
</method>
<method name="get_theme_font" qualifiers="const">
- <return type="Font">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="Font" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns a [Font] from the first matching [Theme] in the tree if that [Theme] has a font item with the specified [code]name[/code] and [code]theme_type[/code].
See [method get_theme_color] for details.
</description>
</method>
<method name="get_theme_font_size" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns a font size from the first matching [Theme] in the tree if that [Theme] has a font size item with the specified [code]name[/code] and [code]theme_type[/code].
See [method get_theme_color] for details.
</description>
</method>
<method name="get_theme_icon" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns an icon from the first matching [Theme] in the tree if that [Theme] has an icon item with the specified [code]name[/code] and [code]theme_type[/code].
See [method get_theme_color] for details.
</description>
</method>
<method name="get_theme_stylebox" qualifiers="const">
- <return type="StyleBox">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="StyleBox" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns a [StyleBox] from the first matching [Theme] in the tree if that [Theme] has a stylebox item with the specified [code]name[/code] and [code]theme_type[/code].
See [method get_theme_color] for details.
</description>
</method>
<method name="get_tooltip" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="at_position" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="String" />
+ <argument index="0" name="at_position" type="Vector2" default="Vector2(0, 0)" />
<description>
Returns the tooltip, which will appear when the cursor is resting over this control. See [member hint_tooltip].
</description>
</method>
<method name="grab_click_focus">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Creates an [InputEventMouseButton] that attempts to click the control. If the event is received, the control acquires focus.
[codeblocks]
@@ -587,237 +507,185 @@
</description>
</method>
<method name="grab_focus">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Steal the focus from another control and become the focused control (see [member focus_mode]).
</description>
</method>
<method name="has_focus" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this is the current focused control. See [member focus_mode].
</description>
</method>
<method name="has_theme_color" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns [code]true[/code] if there is a matching [Theme] in the tree that has a color item with the specified [code]name[/code] and [code]theme_type[/code].
See [method get_theme_color] for details.
</description>
</method>
<method name="has_theme_color_override" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if there is a local override for a theme [Color] with the specified [code]name[/code] in this [Control] node.
See [method add_theme_color_override].
</description>
</method>
<method name="has_theme_constant" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns [code]true[/code] if there is a matching [Theme] in the tree that has a constant item with the specified [code]name[/code] and [code]theme_type[/code].
See [method get_theme_color] for details.
</description>
</method>
<method name="has_theme_constant_override" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if there is a local override for a theme constant with the specified [code]name[/code] in this [Control] node.
See [method add_theme_constant_override].
</description>
</method>
<method name="has_theme_font" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns [code]true[/code] if there is a matching [Theme] in the tree that has a font item with the specified [code]name[/code] and [code]theme_type[/code].
See [method get_theme_color] for details.
</description>
</method>
<method name="has_theme_font_override" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if there is a local override for a theme [Font] with the specified [code]name[/code] in this [Control] node.
See [method add_theme_font_override].
</description>
</method>
<method name="has_theme_font_size" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns [code]true[/code] if there is a matching [Theme] in the tree that has a font size item with the specified [code]name[/code] and [code]theme_type[/code].
See [method get_theme_color] for details.
</description>
</method>
<method name="has_theme_font_size_override" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if there is a local override for a theme font size with the specified [code]name[/code] in this [Control] node.
See [method add_theme_font_size_override].
</description>
</method>
<method name="has_theme_icon" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns [code]true[/code] if there is a matching [Theme] in the tree that has an icon item with the specified [code]name[/code] and [code]theme_type[/code].
See [method get_theme_color] for details.
</description>
</method>
<method name="has_theme_icon_override" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if there is a local override for a theme icon with the specified [code]name[/code] in this [Control] node.
See [method add_theme_icon_override].
</description>
</method>
<method name="has_theme_stylebox" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns [code]true[/code] if there is a matching [Theme] in the tree that has a stylebox item with the specified [code]name[/code] and [code]theme_type[/code].
See [method get_theme_color] for details.
</description>
</method>
<method name="has_theme_stylebox_override" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if there is a local override for a theme [StyleBox] with the specified [code]name[/code] in this [Control] node.
See [method add_theme_stylebox_override].
</description>
</method>
<method name="is_layout_rtl" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if layout is right-to-left.
</description>
</method>
<method name="minimum_size_changed">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Invalidates the size cache in this node and in parent nodes up to top_level. Intended to be used with [method get_minimum_size] when the return value is changed. Setting [member rect_min_size] directly calls this method automatically.
</description>
</method>
<method name="release_focus">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Give up the focus. No other control will be able to receive keyboard input.
</description>
</method>
<method name="remove_theme_color_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Removes a local override for a theme [Color] with the specified [code]name[/code] previously added by [method add_theme_color_override] or via the Inspector dock.
</description>
</method>
<method name="remove_theme_constant_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Removes a local override for a theme constant with the specified [code]name[/code] previously added by [method add_theme_constant_override] or via the Inspector dock.
</description>
</method>
<method name="remove_theme_font_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Removes a local override for a theme [Font] with the specified [code]name[/code] previously added by [method add_theme_font_override] or via the Inspector dock.
</description>
</method>
<method name="remove_theme_font_size_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Removes a local override for a theme font size with the specified [code]name[/code] previously added by [method add_theme_font_size_override] or via the Inspector dock.
</description>
</method>
<method name="remove_theme_icon_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Removes a local override for a theme icon with the specified [code]name[/code] previously added by [method add_theme_icon_override] or via the Inspector dock.
</description>
</method>
<method name="remove_theme_stylebox_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Removes a local override for a theme [StyleBox] with the specified [code]name[/code] previously added by [method add_theme_stylebox_override] or via the Inspector dock.
</description>
</method>
<method name="set_anchor">
- <return type="void">
- </return>
- <argument index="0" name="side" type="int" enum="Side">
- </argument>
- <argument index="1" name="anchor" type="float">
- </argument>
- <argument index="2" name="keep_offset" type="bool" default="false">
- </argument>
- <argument index="3" name="push_opposite_anchor" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="side" type="int" enum="Side" />
+ <argument index="1" name="anchor" type="float" />
+ <argument index="2" name="keep_offset" type="bool" default="false" />
+ <argument index="3" name="push_opposite_anchor" type="bool" default="true" />
<description>
Sets the anchor for the specified [enum Side] to [code]anchor[/code]. A setter method for [member anchor_bottom], [member anchor_left], [member anchor_right] and [member anchor_top].
If [code]keep_offset[/code] is [code]true[/code], offsets aren't updated after this operation.
@@ -825,59 +693,43 @@
</description>
</method>
<method name="set_anchor_and_offset">
- <return type="void">
- </return>
- <argument index="0" name="side" type="int" enum="Side">
- </argument>
- <argument index="1" name="anchor" type="float">
- </argument>
- <argument index="2" name="offset" type="float">
- </argument>
- <argument index="3" name="push_opposite_anchor" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="side" type="int" enum="Side" />
+ <argument index="1" name="anchor" type="float" />
+ <argument index="2" name="offset" type="float" />
+ <argument index="3" name="push_opposite_anchor" type="bool" default="false" />
<description>
Works the same as [method set_anchor], but instead of [code]keep_offset[/code] argument and automatic update of offset, it allows to set the offset yourself (see [method set_offset]).
</description>
</method>
<method name="set_anchors_and_offsets_preset">
- <return type="void">
- </return>
- <argument index="0" name="preset" type="int" enum="Control.LayoutPreset">
- </argument>
- <argument index="1" name="resize_mode" type="int" enum="Control.LayoutPresetMode" default="0">
- </argument>
- <argument index="2" name="margin" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="preset" type="int" enum="Control.LayoutPreset" />
+ <argument index="1" name="resize_mode" type="int" enum="Control.LayoutPresetMode" default="0" />
+ <argument index="2" name="margin" type="int" default="0" />
<description>
Sets both anchor preset and offset preset. See [method set_anchors_preset] and [method set_offsets_preset].
</description>
</method>
<method name="set_anchors_preset">
- <return type="void">
- </return>
- <argument index="0" name="preset" type="int" enum="Control.LayoutPreset">
- </argument>
- <argument index="1" name="keep_offsets" type="bool" default="false">
- </argument>
- <description>
- Sets the anchors to a [code]preset[/code] from [enum Control.LayoutPreset] enum. This is code equivalent of using the Layout menu in 2D editor.
+ <return type="void" />
+ <argument index="0" name="preset" type="int" enum="Control.LayoutPreset" />
+ <argument index="1" name="keep_offsets" type="bool" default="false" />
+ <description>
+ Sets the anchors to a [code]preset[/code] from [enum Control.LayoutPreset] enum. This is the code equivalent to using the Layout menu in the 2D editor.
If [code]keep_offsets[/code] is [code]true[/code], control's position will also be updated.
</description>
</method>
<method name="set_begin">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2" />
<description>
Sets [member offset_left] and [member offset_top] at the same time. Equivalent of changing [member rect_position].
</description>
</method>
<method name="set_drag_forwarding">
- <return type="void">
- </return>
- <argument index="0" name="target" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="target" type="Control" />
<description>
Forwards the handling of this control's drag and drop to [code]target[/code] control.
Forwarding can be implemented in the target control similar to the methods [method _get_drag_data], [method _can_drop_data], and [method _drop_data] but with two differences:
@@ -941,10 +793,8 @@
</description>
</method>
<method name="set_drag_preview">
- <return type="void">
- </return>
- <argument index="0" name="control" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="control" type="Control" />
<description>
Shows the given control at the mouse pointer. A good time to call this method is in [method _get_drag_data]. The control must not be in the scene tree. You should not free the control, and you should not keep a reference to the control beyond the duration of the drag. It will be deleted automatically after the drag has ended.
[codeblocks]
@@ -977,92 +827,69 @@
</description>
</method>
<method name="set_end">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2" />
<description>
Sets [member offset_right] and [member offset_bottom] at the same time.
</description>
</method>
<method name="set_focus_neighbor">
- <return type="void">
- </return>
- <argument index="0" name="side" type="int" enum="Side">
- </argument>
- <argument index="1" name="neighbor" type="NodePath">
- </argument>
+ <return type="void" />
+ <argument index="0" name="side" type="int" enum="Side" />
+ <argument index="1" name="neighbor" type="NodePath" />
<description>
Sets the anchor for the specified [enum Side] to the [Control] at [code]neighbor[/code] node path. A setter method for [member focus_neighbor_bottom], [member focus_neighbor_left], [member focus_neighbor_right] and [member focus_neighbor_top].
</description>
</method>
<method name="set_global_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="keep_offsets" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="keep_offsets" type="bool" default="false" />
<description>
Sets the [member rect_global_position] to given [code]position[/code].
If [code]keep_offsets[/code] is [code]true[/code], control's anchors will be updated instead of offsets.
</description>
</method>
<method name="set_offset">
- <return type="void">
- </return>
- <argument index="0" name="side" type="int" enum="Side">
- </argument>
- <argument index="1" name="offset" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="side" type="int" enum="Side" />
+ <argument index="1" name="offset" type="float" />
<description>
Sets the offset for the specified [enum Side] to [code]offset[/code]. A setter method for [member offset_bottom], [member offset_left], [member offset_right] and [member offset_top].
</description>
</method>
<method name="set_offsets_preset">
- <return type="void">
- </return>
- <argument index="0" name="preset" type="int" enum="Control.LayoutPreset">
- </argument>
- <argument index="1" name="resize_mode" type="int" enum="Control.LayoutPresetMode" default="0">
- </argument>
- <argument index="2" name="margin" type="int" default="0">
- </argument>
- <description>
- Sets the offsets to a [code]preset[/code] from [enum Control.LayoutPreset] enum. This is code equivalent of using the Layout menu in 2D editor.
+ <return type="void" />
+ <argument index="0" name="preset" type="int" enum="Control.LayoutPreset" />
+ <argument index="1" name="resize_mode" type="int" enum="Control.LayoutPresetMode" default="0" />
+ <argument index="2" name="margin" type="int" default="0" />
+ <description>
+ Sets the offsets to a [code]preset[/code] from [enum Control.LayoutPreset] enum. This is the code equivalent to using the Layout menu in the 2D editor.
Use parameter [code]resize_mode[/code] with constants from [enum Control.LayoutPresetMode] to better determine the resulting size of the [Control]. Constant size will be ignored if used with presets that change size, e.g. [code]PRESET_LEFT_WIDE[/code].
Use parameter [code]margin[/code] to determine the gap between the [Control] and the edges.
</description>
</method>
<method name="set_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="keep_offsets" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="keep_offsets" type="bool" default="false" />
<description>
Sets the [member rect_position] to given [code]position[/code].
If [code]keep_offsets[/code] is [code]true[/code], control's anchors will be updated instead of offsets.
</description>
</method>
<method name="set_size">
- <return type="void">
- </return>
- <argument index="0" name="size" type="Vector2">
- </argument>
- <argument index="1" name="keep_offsets" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="Vector2" />
+ <argument index="1" name="keep_offsets" type="bool" default="false" />
<description>
Sets the size (see [member rect_size]).
If [code]keep_offsets[/code] is [code]true[/code], control's anchors will be updated instead of offsets.
</description>
</method>
<method name="warp_mouse">
- <return type="void">
- </return>
- <argument index="0" name="to_position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="to_position" type="Vector2" />
<description>
Moves the mouse cursor to [code]to_position[/code], relative to [member rect_position] of this [Control].
</description>
@@ -1081,6 +908,9 @@
<member name="anchor_top" type="float" setter="_set_anchor" getter="get_anchor" default="0.0">
Anchors the top edge of the node to the origin, the center or the end of its parent control. It changes how the top offset updates when the node moves or changes size. You can use one of the [enum Anchor] constants for convenience.
</member>
+ <member name="auto_translate" type="bool" setter="set_auto_translate" getter="is_auto_translating" default="true">
+ Toggles if any text should automatically change to its translated version depending on the current locale.
+ </member>
<member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" enum="Control.FocusMode" default="0">
The focus access mode for the control (None, Click or All). Only one Control can be focused at the same time, and it will receive keyboard signals.
</member>
@@ -1215,8 +1045,7 @@
</description>
</signal>
<signal name="gui_input">
- <argument index="0" name="event" type="InputEvent">
- </argument>
+ <argument index="0" name="event" type="InputEvent" />
<description>
Emitted when the node receives an [InputEvent].
</description>
@@ -1229,11 +1058,13 @@
<signal name="mouse_entered">
<description>
Emitted when the mouse enters the control's [code]Rect[/code] area, provided its [member mouse_filter] lets the event reach it.
+ [b]Note:[/b] [signal mouse_entered] will not be emitted if the mouse enters a child [Control] node before entering the parent's [code]Rect[/code] area, at least until the mouse is moved to reach the parent's [code]Rect[/code] area.
</description>
</signal>
<signal name="mouse_exited">
<description>
Emitted when the mouse leaves the control's [code]Rect[/code] area, provided its [member mouse_filter] lets the event reach it.
+ [b]Note:[/b] [signal mouse_exited] will be emitted if the mouse enters a child [Control] node, even if the mouse cursor is still inside the parent's [code]Rect[/code] area.
</description>
</signal>
<signal name="resized">
diff --git a/doc/classes/ConvexPolygonShape2D.xml b/doc/classes/ConvexPolygonShape2D.xml
index d53900e6c5..243605e2b7 100644
--- a/doc/classes/ConvexPolygonShape2D.xml
+++ b/doc/classes/ConvexPolygonShape2D.xml
@@ -11,10 +11,8 @@
</tutorials>
<methods>
<method name="set_point_cloud">
- <return type="void">
- </return>
- <argument index="0" name="point_cloud" type="PackedVector2Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point_cloud" type="PackedVector2Array" />
<description>
Based on the set of points provided, this creates and assigns the [member points] property using the convex hull algorithm. Removing all unneeded points. See [method Geometry2D.convex_hull] for details.
</description>
diff --git a/doc/classes/Crypto.xml b/doc/classes/Crypto.xml
index deda6116f4..3d7ca956da 100644
--- a/doc/classes/Crypto.xml
+++ b/doc/classes/Crypto.xml
@@ -74,70 +74,52 @@
</tutorials>
<methods>
<method name="constant_time_compare">
- <return type="bool">
- </return>
- <argument index="0" name="trusted" type="PackedByteArray">
- </argument>
- <argument index="1" name="received" type="PackedByteArray">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="trusted" type="PackedByteArray" />
+ <argument index="1" name="received" type="PackedByteArray" />
<description>
Compares two [PackedByteArray]s for equality without leaking timing information in order to prevent timing attacks.
See [url=https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-string-comparison-with-double-hmac-strategy]this blog post[/url] for more information.
</description>
</method>
<method name="decrypt">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="key" type="CryptoKey">
- </argument>
- <argument index="1" name="ciphertext" type="PackedByteArray">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="key" type="CryptoKey" />
+ <argument index="1" name="ciphertext" type="PackedByteArray" />
<description>
Decrypt the given [code]ciphertext[/code] with the provided private [code]key[/code].
[b]Note[/b]: The maximum size of accepted ciphertext is limited by the key size.
</description>
</method>
<method name="encrypt">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="key" type="CryptoKey">
- </argument>
- <argument index="1" name="plaintext" type="PackedByteArray">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="key" type="CryptoKey" />
+ <argument index="1" name="plaintext" type="PackedByteArray" />
<description>
Encrypt the given [code]plaintext[/code] with the provided public [code]key[/code].
[b]Note[/b]: The maximum size of accepted plaintext is limited by the key size.
</description>
</method>
<method name="generate_random_bytes">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="size" type="int" />
<description>
Generates a [PackedByteArray] of cryptographically secure random bytes with given [code]size[/code].
</description>
</method>
<method name="generate_rsa">
- <return type="CryptoKey">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="CryptoKey" />
+ <argument index="0" name="size" type="int" />
<description>
Generates an RSA [CryptoKey] that can be used for creating self-signed certificates and passed to [method StreamPeerSSL.accept_stream].
</description>
</method>
<method name="generate_self_signed_certificate">
- <return type="X509Certificate">
- </return>
- <argument index="0" name="key" type="CryptoKey">
- </argument>
- <argument index="1" name="issuer_name" type="String" default="&quot;CN=myserver,O=myorganisation,C=IT&quot;">
- </argument>
- <argument index="2" name="not_before" type="String" default="&quot;20140101000000&quot;">
- </argument>
- <argument index="3" name="not_after" type="String" default="&quot;20340101000000&quot;">
- </argument>
+ <return type="X509Certificate" />
+ <argument index="0" name="key" type="CryptoKey" />
+ <argument index="1" name="issuer_name" type="String" default="&quot;CN=myserver,O=myorganisation,C=IT&quot;" />
+ <argument index="2" name="not_before" type="String" default="&quot;20140101000000&quot;" />
+ <argument index="3" name="not_after" type="String" default="&quot;20340101000000&quot;" />
<description>
Generates a self-signed [X509Certificate] from the given [CryptoKey] and [code]issuer_name[/code]. The certificate validity will be defined by [code]not_before[/code] and [code]not_after[/code] (first valid date and last valid date). The [code]issuer_name[/code] must contain at least "CN=" (common name, i.e. the domain name), "O=" (organization, i.e. your company name), "C=" (country, i.e. 2 lettered ISO-3166 code of the country the organization is based in).
A small example to generate an RSA key and a X509 self-signed certificate.
@@ -160,43 +142,30 @@
</description>
</method>
<method name="hmac_digest">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="hash_type" type="int" enum="HashingContext.HashType">
- </argument>
- <argument index="1" name="key" type="PackedByteArray">
- </argument>
- <argument index="2" name="msg" type="PackedByteArray">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="hash_type" type="int" enum="HashingContext.HashType" />
+ <argument index="1" name="key" type="PackedByteArray" />
+ <argument index="2" name="msg" type="PackedByteArray" />
<description>
Generates an [url=https://en.wikipedia.org/wiki/HMAC]HMAC[/url] digest of [code]msg[/code] using [code]key[/code]. The [code]hash_type[/code] parameter is the hashing algorithm that is used for the inner and outer hashes.
Currently, only [constant HashingContext.HASH_SHA256] and [constant HashingContext.HASH_SHA1] are supported.
</description>
</method>
<method name="sign">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="hash_type" type="int" enum="HashingContext.HashType">
- </argument>
- <argument index="1" name="hash" type="PackedByteArray">
- </argument>
- <argument index="2" name="key" type="CryptoKey">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="hash_type" type="int" enum="HashingContext.HashType" />
+ <argument index="1" name="hash" type="PackedByteArray" />
+ <argument index="2" name="key" type="CryptoKey" />
<description>
Sign a given [code]hash[/code] of type [code]hash_type[/code] with the provided private [code]key[/code].
</description>
</method>
<method name="verify">
- <return type="bool">
- </return>
- <argument index="0" name="hash_type" type="int" enum="HashingContext.HashType">
- </argument>
- <argument index="1" name="hash" type="PackedByteArray">
- </argument>
- <argument index="2" name="signature" type="PackedByteArray">
- </argument>
- <argument index="3" name="key" type="CryptoKey">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="hash_type" type="int" enum="HashingContext.HashType" />
+ <argument index="1" name="hash" type="PackedByteArray" />
+ <argument index="2" name="signature" type="PackedByteArray" />
+ <argument index="3" name="key" type="CryptoKey" />
<description>
Verify that a given [code]signature[/code] for [code]hash[/code] of type [code]hash_type[/code] against the provided public [code]key[/code].
</description>
diff --git a/doc/classes/CryptoKey.xml b/doc/classes/CryptoKey.xml
index 26b3087b21..afe2c6b301 100644
--- a/doc/classes/CryptoKey.xml
+++ b/doc/classes/CryptoKey.xml
@@ -12,52 +12,40 @@
</tutorials>
<methods>
<method name="is_public_only" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Return [code]true[/code] if this CryptoKey only has the public part, and not the private one.
</description>
</method>
<method name="load">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="public_only" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="public_only" type="bool" default="false" />
<description>
Loads a key from [code]path[/code]. If [code]public_only[/code] is [code]true[/code], only the public key will be loaded.
[b]Note[/b]: [code]path[/code] should be a "*.pub" file if [code]public_only[/code] is [code]true[/code], a "*.key" file otherwise.
</description>
</method>
<method name="load_from_string">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="string_key" type="String">
- </argument>
- <argument index="1" name="public_only" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="string_key" type="String" />
+ <argument index="1" name="public_only" type="bool" default="false" />
<description>
Loads a key from the given [code]string[/code]. If [code]public_only[/code] is [code]true[/code], only the public key will be loaded.
</description>
</method>
<method name="save">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="public_only" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="public_only" type="bool" default="false" />
<description>
Saves a key to the given [code]path[/code]. If [code]public_only[/code] is [code]true[/code], only the public key will be saved.
[b]Note[/b]: [code]path[/code] should be a "*.pub" file if [code]public_only[/code] is [code]true[/code], a "*.key" file otherwise.
</description>
</method>
<method name="save_to_string">
- <return type="String">
- </return>
- <argument index="0" name="public_only" type="bool" default="false">
- </argument>
+ <return type="String" />
+ <argument index="0" name="public_only" type="bool" default="false" />
<description>
Returns a string containing the key in PEM format. If [code]public_only[/code] is [code]true[/code], only the public key will be included.
</description>
diff --git a/doc/classes/Curve.xml b/doc/classes/Curve.xml
index e47c420a3b..2c337c32db 100644
--- a/doc/classes/Curve.xml
+++ b/doc/classes/Curve.xml
@@ -10,184 +10,140 @@
</tutorials>
<methods>
<method name="add_point">
- <return type="int">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="left_tangent" type="float" default="0">
- </argument>
- <argument index="2" name="right_tangent" type="float" default="0">
- </argument>
- <argument index="3" name="left_mode" type="int" enum="Curve.TangentMode" default="0">
- </argument>
- <argument index="4" name="right_mode" type="int" enum="Curve.TangentMode" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="left_tangent" type="float" default="0" />
+ <argument index="2" name="right_tangent" type="float" default="0" />
+ <argument index="3" name="left_mode" type="int" enum="Curve.TangentMode" default="0" />
+ <argument index="4" name="right_mode" type="int" enum="Curve.TangentMode" default="0" />
<description>
Adds a point to the curve. For each side, if the [code]*_mode[/code] is [constant TANGENT_LINEAR], the [code]*_tangent[/code] angle (in degrees) uses the slope of the curve halfway to the adjacent point. Allows custom assignments to the [code]*_tangent[/code] angle if [code]*_mode[/code] is set to [constant TANGENT_FREE].
</description>
</method>
<method name="bake">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Recomputes the baked cache of points for the curve.
</description>
</method>
<method name="clean_dupes">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes points that are closer than [code]CMP_EPSILON[/code] (0.00001) units to their neighbor on the curve.
</description>
</method>
<method name="clear_points">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all points from the curve.
</description>
</method>
<method name="get_point_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of points describing the curve.
</description>
</method>
<method name="get_point_left_mode" qualifiers="const">
- <return type="int" enum="Curve.TangentMode">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" enum="Curve.TangentMode" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the left [enum TangentMode] for the point at [code]index[/code].
</description>
</method>
<method name="get_point_left_tangent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the left tangent angle (in degrees) for the point at [code]index[/code].
</description>
</method>
<method name="get_point_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the curve coordinates for the point at [code]index[/code].
</description>
</method>
<method name="get_point_right_mode" qualifiers="const">
- <return type="int" enum="Curve.TangentMode">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" enum="Curve.TangentMode" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the right [enum TangentMode] for the point at [code]index[/code].
</description>
</method>
<method name="get_point_right_tangent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the right tangent angle (in degrees) for the point at [code]index[/code].
</description>
</method>
<method name="interpolate" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="offset" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="offset" type="float" />
<description>
Returns the Y value for the point that would exist at the X position [code]offset[/code] along the curve.
</description>
</method>
<method name="interpolate_baked" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="offset" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="offset" type="float" />
<description>
Returns the Y value for the point that would exist at the X position [code]offset[/code] along the curve using the baked cache. Bakes the curve's points if not already baked.
</description>
</method>
<method name="remove_point">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes the point at [code]index[/code] from the curve.
</description>
</method>
<method name="set_point_left_mode">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="mode" type="int" enum="Curve.TangentMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="mode" type="int" enum="Curve.TangentMode" />
<description>
Sets the left [enum TangentMode] for the point at [code]index[/code] to [code]mode[/code].
</description>
</method>
<method name="set_point_left_tangent">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="tangent" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="tangent" type="float" />
<description>
Sets the left tangent angle for the point at [code]index[/code] to [code]tangent[/code].
</description>
</method>
<method name="set_point_offset">
- <return type="int">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="offset" type="float">
- </argument>
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="offset" type="float" />
<description>
Sets the offset from [code]0.5[/code].
</description>
</method>
<method name="set_point_right_mode">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="mode" type="int" enum="Curve.TangentMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="mode" type="int" enum="Curve.TangentMode" />
<description>
Sets the right [enum TangentMode] for the point at [code]index[/code] to [code]mode[/code].
</description>
</method>
<method name="set_point_right_tangent">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="tangent" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="tangent" type="float" />
<description>
Sets the right tangent angle for the point at [code]index[/code] to [code]tangent[/code].
</description>
</method>
<method name="set_point_value">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="y" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="y" type="float" />
<description>
Assigns the vertical position [code]y[/code] to the point at [code]index[/code].
</description>
diff --git a/doc/classes/Curve2D.xml b/doc/classes/Curve2D.xml
index c9fcbd2892..c02b0f7ead 100644
--- a/doc/classes/Curve2D.xml
+++ b/doc/classes/Curve2D.xml
@@ -11,115 +11,90 @@
</tutorials>
<methods>
<method name="add_point">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="in" type="Vector2" default="Vector2(0, 0)">
- </argument>
- <argument index="2" name="out" type="Vector2" default="Vector2(0, 0)">
- </argument>
- <argument index="3" name="at_position" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="in" type="Vector2" default="Vector2(0, 0)" />
+ <argument index="2" name="out" type="Vector2" default="Vector2(0, 0)" />
+ <argument index="3" name="at_position" type="int" default="-1" />
<description>
Adds a point to a curve at [code]position[/code], with control points [code]in[/code] and [code]out[/code].
If [code]at_position[/code] is given, the point is inserted before the point number [code]at_position[/code], moving that point (and every point after) after the inserted point. If [code]at_position[/code] is not given, or is an illegal value ([code]at_position &lt;0[/code] or [code]at_position &gt;= [method get_point_count][/code]), the point will be appended at the end of the point list.
</description>
</method>
<method name="clear_points">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all points from the curve.
</description>
</method>
<method name="get_baked_length" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the total length of the curve, based on the cached points. Given enough density (see [member bake_interval]), it should be approximate enough.
</description>
</method>
<method name="get_baked_points" qualifiers="const">
- <return type="PackedVector2Array">
- </return>
+ <return type="PackedVector2Array" />
<description>
Returns the cache of points as a [PackedVector2Array].
</description>
</method>
<method name="get_closest_offset" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="to_point" type="Vector2">
- </argument>
+ <return type="float" />
+ <argument index="0" name="to_point" type="Vector2" />
<description>
Returns the closest offset to [code]to_point[/code]. This offset is meant to be used in [method interpolate_baked].
[code]to_point[/code] must be in this curve's local space.
</description>
</method>
<method name="get_closest_point" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="to_point" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="to_point" type="Vector2" />
<description>
Returns the closest baked point (in curve's local space) to [code]to_point[/code].
[code]to_point[/code] must be in this curve's local space.
</description>
</method>
<method name="get_point_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of points describing the curve.
</description>
</method>
<method name="get_point_in" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the position of the control point leading to the vertex [code]idx[/code]. The returned position is relative to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0)[/code].
</description>
</method>
<method name="get_point_out" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the position of the control point leading out of the vertex [code]idx[/code]. The returned position is relative to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0)[/code].
</description>
</method>
<method name="get_point_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the position of the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0)[/code].
</description>
</method>
<method name="interpolate" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="t" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="t" type="float" />
<description>
Returns the position between the vertex [code]idx[/code] and the vertex [code]idx + 1[/code], where [code]t[/code] controls if the point is the first vertex ([code]t = 0.0[/code]), the last vertex ([code]t = 1.0[/code]), or in between. Values of [code]t[/code] outside the range ([code]0.0 &gt;= t &lt;=1[/code]) give strange, but predictable results.
If [code]idx[/code] is out of bounds it is truncated to the first or last vertex, and [code]t[/code] is ignored. If the curve has no points, the function sends an error to the console, and returns [code](0, 0)[/code].
</description>
</method>
<method name="interpolate_baked" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="offset" type="float">
- </argument>
- <argument index="1" name="cubic" type="bool" default="false">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="offset" type="float" />
+ <argument index="1" name="cubic" type="bool" default="false" />
<description>
Returns a point within the curve at position [code]offset[/code], where [code]offset[/code] is measured as a pixel distance along the curve.
To do that, it finds the two cached points where the [code]offset[/code] lies between, then interpolates the values. This interpolation is cubic if [code]cubic[/code] is set to [code]true[/code], or linear if set to [code]false[/code].
@@ -127,63 +102,47 @@
</description>
</method>
<method name="interpolatef" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="fofs" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="fofs" type="float" />
<description>
Returns the position at the vertex [code]fofs[/code]. It calls [method interpolate] using the integer part of [code]fofs[/code] as [code]idx[/code], and its fractional part as [code]t[/code].
</description>
</method>
<method name="remove_point">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Deletes the point [code]idx[/code] from the curve. Sends an error to the console if [code]idx[/code] is out of bounds.
</description>
</method>
<method name="set_point_in">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="position" type="Vector2" />
<description>
Sets the position of the control point leading to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex.
</description>
</method>
<method name="set_point_out">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="position" type="Vector2" />
<description>
Sets the position of the control point leading out of the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex.
</description>
</method>
<method name="set_point_position">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="position" type="Vector2" />
<description>
Sets the position for the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console.
</description>
</method>
<method name="tessellate" qualifiers="const">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="max_stages" type="int" default="5">
- </argument>
- <argument index="1" name="tolerance_degrees" type="float" default="4">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="max_stages" type="int" default="5" />
+ <argument index="1" name="tolerance_degrees" type="float" default="4" />
<description>
Returns a list of points along the curve, with a curvature controlled point density. That is, the curvier parts will have more points than the straighter parts.
This approximation makes straight segments between each point, then subdivides those segments until the resulting shape is similar enough.
diff --git a/doc/classes/Curve3D.xml b/doc/classes/Curve3D.xml
index fdf96b4262..5839ccba02 100644
--- a/doc/classes/Curve3D.xml
+++ b/doc/classes/Curve3D.xml
@@ -11,139 +11,110 @@
</tutorials>
<methods>
<method name="add_point">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector3">
- </argument>
- <argument index="1" name="in" type="Vector3" default="Vector3(0, 0, 0)">
- </argument>
- <argument index="2" name="out" type="Vector3" default="Vector3(0, 0, 0)">
- </argument>
- <argument index="3" name="at_position" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector3" />
+ <argument index="1" name="in" type="Vector3" default="Vector3(0, 0, 0)" />
+ <argument index="2" name="out" type="Vector3" default="Vector3(0, 0, 0)" />
+ <argument index="3" name="at_position" type="int" default="-1" />
<description>
Adds a point to a curve at [code]position[/code], with control points [code]in[/code] and [code]out[/code].
If [code]at_position[/code] is given, the point is inserted before the point number [code]at_position[/code], moving that point (and every point after) after the inserted point. If [code]at_position[/code] is not given, or is an illegal value ([code]at_position &lt;0[/code] or [code]at_position &gt;= [method get_point_count][/code]), the point will be appended at the end of the point list.
</description>
</method>
<method name="clear_points">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all points from the curve.
</description>
</method>
<method name="get_baked_length" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the total length of the curve, based on the cached points. Given enough density (see [member bake_interval]), it should be approximate enough.
</description>
</method>
<method name="get_baked_points" qualifiers="const">
- <return type="PackedVector3Array">
- </return>
+ <return type="PackedVector3Array" />
<description>
Returns the cache of points as a [PackedVector3Array].
</description>
</method>
<method name="get_baked_tilts" qualifiers="const">
- <return type="PackedFloat32Array">
- </return>
+ <return type="PackedFloat32Array" />
<description>
Returns the cache of tilts as a [PackedFloat32Array].
</description>
</method>
<method name="get_baked_up_vectors" qualifiers="const">
- <return type="PackedVector3Array">
- </return>
+ <return type="PackedVector3Array" />
<description>
Returns the cache of up vectors as a [PackedVector3Array].
If [member up_vector_enabled] is [code]false[/code], the cache will be empty.
</description>
</method>
<method name="get_closest_offset" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="to_point" type="Vector3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="to_point" type="Vector3" />
<description>
Returns the closest offset to [code]to_point[/code]. This offset is meant to be used in [method interpolate_baked] or [method interpolate_baked_up_vector].
[code]to_point[/code] must be in this curve's local space.
</description>
</method>
<method name="get_closest_point" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="to_point" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="to_point" type="Vector3" />
<description>
Returns the closest baked point (in curve's local space) to [code]to_point[/code].
[code]to_point[/code] must be in this curve's local space.
</description>
</method>
<method name="get_point_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of points describing the curve.
</description>
</method>
<method name="get_point_in" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the position of the control point leading to the vertex [code]idx[/code]. The returned position is relative to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0, 0)[/code].
</description>
</method>
<method name="get_point_out" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the position of the control point leading out of the vertex [code]idx[/code]. The returned position is relative to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0, 0)[/code].
</description>
</method>
<method name="get_point_position" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the position of the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code](0, 0, 0)[/code].
</description>
</method>
<method name="get_point_tilt" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the tilt angle in radians for the point [code]idx[/code]. If the index is out of bounds, the function sends an error to the console, and returns [code]0[/code].
</description>
</method>
<method name="interpolate" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="t" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="t" type="float" />
<description>
Returns the position between the vertex [code]idx[/code] and the vertex [code]idx + 1[/code], where [code]t[/code] controls if the point is the first vertex ([code]t = 0.0[/code]), the last vertex ([code]t = 1.0[/code]), or in between. Values of [code]t[/code] outside the range ([code]0.0 &gt;= t &lt;=1[/code]) give strange, but predictable results.
If [code]idx[/code] is out of bounds it is truncated to the first or last vertex, and [code]t[/code] is ignored. If the curve has no points, the function sends an error to the console, and returns [code](0, 0, 0)[/code].
</description>
</method>
<method name="interpolate_baked" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="offset" type="float">
- </argument>
- <argument index="1" name="cubic" type="bool" default="false">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="offset" type="float" />
+ <argument index="1" name="cubic" type="bool" default="false" />
<description>
Returns a point within the curve at position [code]offset[/code], where [code]offset[/code] is measured as a distance in 3D units along the curve.
To do that, it finds the two cached points where the [code]offset[/code] lies between, then interpolates the values. This interpolation is cubic if [code]cubic[/code] is set to [code]true[/code], or linear if set to [code]false[/code].
@@ -151,12 +122,9 @@
</description>
</method>
<method name="interpolate_baked_up_vector" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="offset" type="float">
- </argument>
- <argument index="1" name="apply_tilt" type="bool" default="false">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="offset" type="float" />
+ <argument index="1" name="apply_tilt" type="bool" default="false" />
<description>
Returns an up vector within the curve at position [code]offset[/code], where [code]offset[/code] is measured as a distance in 3D units along the curve.
To do that, it finds the two cached up vectors where the [code]offset[/code] lies between, then interpolates the values. If [code]apply_tilt[/code] is [code]true[/code], an interpolated tilt is applied to the interpolated up vector.
@@ -164,75 +132,56 @@
</description>
</method>
<method name="interpolatef" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="fofs" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="fofs" type="float" />
<description>
Returns the position at the vertex [code]fofs[/code]. It calls [method interpolate] using the integer part of [code]fofs[/code] as [code]idx[/code], and its fractional part as [code]t[/code].
</description>
</method>
<method name="remove_point">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Deletes the point [code]idx[/code] from the curve. Sends an error to the console if [code]idx[/code] is out of bounds.
</description>
</method>
<method name="set_point_in">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="position" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="position" type="Vector3" />
<description>
Sets the position of the control point leading to the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex.
</description>
</method>
<method name="set_point_out">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="position" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="position" type="Vector3" />
<description>
Sets the position of the control point leading out of the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console. The position is relative to the vertex.
</description>
</method>
<method name="set_point_position">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="position" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="position" type="Vector3" />
<description>
Sets the position for the vertex [code]idx[/code]. If the index is out of bounds, the function sends an error to the console.
</description>
</method>
<method name="set_point_tilt">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="tilt" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="tilt" type="float" />
<description>
Sets the tilt angle in radians for the point [code]idx[/code]. If the index is out of bounds, the function sends an error to the console.
The tilt controls the rotation along the look-at axis an object traveling the path would have. In the case of a curve controlling a [PathFollow3D], this tilt is an offset over the natural tilt the [PathFollow3D] calculates.
</description>
</method>
<method name="tessellate" qualifiers="const">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="max_stages" type="int" default="5">
- </argument>
- <argument index="1" name="tolerance_degrees" type="float" default="4">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="max_stages" type="int" default="5" />
+ <argument index="1" name="tolerance_degrees" type="float" default="4" />
<description>
Returns a list of points along the curve, with a curvature controlled point density. That is, the curvier parts will have more points than the straighter parts.
This approximation makes straight segments between each point, then subdivides those segments until the resulting shape is similar enough.
diff --git a/doc/classes/DTLSServer.xml b/doc/classes/DTLSServer.xml
index 28d68d309f..627a7a65a5 100644
--- a/doc/classes/DTLSServer.xml
+++ b/doc/classes/DTLSServer.xml
@@ -147,23 +147,17 @@
</tutorials>
<methods>
<method name="setup">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="key" type="CryptoKey">
- </argument>
- <argument index="1" name="certificate" type="X509Certificate">
- </argument>
- <argument index="2" name="chain" type="X509Certificate" default="null">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="key" type="CryptoKey" />
+ <argument index="1" name="certificate" type="X509Certificate" />
+ <argument index="2" name="chain" type="X509Certificate" default="null" />
<description>
Setup the DTLS server to use the given [code]private_key[/code] and provide the given [code]certificate[/code] to clients. You can pass the optional [code]chain[/code] parameter to provide additional CA chain information along with the certificate.
</description>
</method>
<method name="take_connection">
- <return type="PacketPeerDTLS">
- </return>
- <argument index="0" name="udp_peer" type="PacketPeerUDP">
- </argument>
+ <return type="PacketPeerDTLS" />
+ <argument index="0" name="udp_peer" type="PacketPeerUDP" />
<description>
Try to initiate the DTLS handshake with the given [code]udp_peer[/code] which must be already connected (see [method PacketPeerUDP.connect_to_host]).
[b]Note[/b]: You must check that the state of the return PacketPeerUDP is [constant PacketPeerDTLS.STATUS_HANDSHAKING], as it is normal that 50% of the new connections will be invalid due to cookie exchange.
diff --git a/doc/classes/Decal.xml b/doc/classes/Decal.xml
index e84cea7c30..e993fc6198 100644
--- a/doc/classes/Decal.xml
+++ b/doc/classes/Decal.xml
@@ -12,10 +12,8 @@
</tutorials>
<methods>
<method name="get_texture" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="type" type="int" enum="Decal.DecalTexture">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="type" type="int" enum="Decal.DecalTexture" />
<description>
Returns the [Texture2D] associated with the specified [enum DecalTexture]. This is a convenience method, in most cases you should access the texture directly.
For example, instead of [code]albedo_tex = $Decal.get_texture(Decal.TEXTURE_ALBEDO)[/code], use [code]albedo_tex = $Decal.texture_albedo[/code].
@@ -35,12 +33,9 @@
</description>
</method>
<method name="set_texture">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int" enum="Decal.DecalTexture">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="Decal.DecalTexture" />
+ <argument index="1" name="texture" type="Texture2D" />
<description>
Sets the [Texture2D] associated with the specified [enum DecalTexture]. This is a convenience method, in most cases you should access the texture directly.
For example, instead of [code]$Decal.set_texture(Decal.TEXTURE_ALBEDO, albedo_tex)[/code], use [code]$Decal.texture_albedo = albedo_tex[/code].
diff --git a/doc/classes/Dictionary.xml b/doc/classes/Dictionary.xml
index 16c4348994..59088f33fd 100644
--- a/doc/classes/Dictionary.xml
+++ b/doc/classes/Dictionary.xml
@@ -184,62 +184,49 @@
</tutorials>
<methods>
<method name="Dictionary" qualifiers="constructor">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Constructs an empty [Dictionary].
</description>
</method>
<method name="Dictionary" qualifiers="constructor">
- <return type="Dictionary">
- </return>
- <argument index="0" name="from" type="Dictionary">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="from" type="Dictionary" />
<description>
Constructs a [Dictionary] as a copy of the given [Dictionary].
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clear the dictionary, removing all key/value pairs.
</description>
</method>
<method name="duplicate" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="deep" type="bool" default="false">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="deep" type="bool" default="false" />
<description>
Creates a copy of the dictionary, and returns it. The [code]deep[/code] parameter causes inner dictionaries and arrays to be copied recursively, but does not apply to objects.
</description>
</method>
<method name="erase">
- <return type="bool">
- </return>
- <argument index="0" name="key" type="Variant">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="key" type="Variant" />
<description>
Erase a dictionary key/value pair by key. Returns [code]true[/code] if the given key was present in the dictionary, [code]false[/code] otherwise. Does not erase elements while iterating over the dictionary.
</description>
</method>
<method name="get" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="key" type="Variant">
- </argument>
- <argument index="1" name="default" type="Variant" default="null">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="key" type="Variant" />
+ <argument index="1" name="default" type="Variant" default="null" />
<description>
Returns the current value for the specified key in the [Dictionary]. If the key does not exist, the method returns the value of the optional default argument, or [code]null[/code] if it is omitted.
</description>
</method>
<method name="has" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="key" type="Variant">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="key" type="Variant" />
<description>
Returns [code]true[/code] if the dictionary has a given key.
[b]Note:[/b] This is equivalent to using the [code]in[/code] operator as follows:
@@ -261,17 +248,14 @@
</description>
</method>
<method name="has_all" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="keys" type="Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="keys" type="Array" />
<description>
Returns [code]true[/code] if the dictionary has all the keys in the given array.
</description>
</method>
<method name="hash" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns a hashed integer value representing the dictionary contents. This can be used to compare dictionaries by value:
[codeblocks]
@@ -293,53 +277,43 @@
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the dictionary is empty.
</description>
</method>
<method name="keys" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the list of keys in the [Dictionary].
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Dictionary">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Dictionary" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Dictionary">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Dictionary" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="Variant">
- </return>
- <argument index="0" name="key" type="Variant">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="key" type="Variant" />
<description>
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of keys in the dictionary.
</description>
</method>
<method name="values" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the list of values in the [Dictionary].
</description>
diff --git a/doc/classes/Directory.xml b/doc/classes/Directory.xml
index dae8d83f0c..919960cc9f 100644
--- a/doc/classes/Directory.xml
+++ b/doc/classes/Directory.xml
@@ -58,166 +58,134 @@
</tutorials>
<methods>
<method name="change_dir">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="todir" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="todir" type="String" />
<description>
Changes the currently opened directory to the one passed as an argument. The argument can be relative to the current directory (e.g. [code]newdir[/code] or [code]../newdir[/code]), or an absolute path (e.g. [code]/tmp/newdir[/code] or [code]res://somedir/newdir[/code]).
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="copy">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="from" type="String">
- </argument>
- <argument index="1" name="to" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="from" type="String" />
+ <argument index="1" name="to" type="String" />
<description>
Copies the [code]from[/code] file to the [code]to[/code] destination. Both arguments should be paths to files, either relative or absolute. If the destination file exists and is not access-protected, it will be overwritten.
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="current_is_dir" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether the current item processed with the last [method get_next] call is a directory ([code].[/code] and [code]..[/code] are considered directories).
</description>
</method>
<method name="dir_exists">
- <return type="bool">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="path" type="String" />
<description>
Returns whether the target directory exists. The argument can be relative to the current directory, or an absolute path.
If the [Directory] is not open, the path is relative to [code]res://[/code].
</description>
</method>
<method name="file_exists">
- <return type="bool">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="path" type="String" />
<description>
Returns whether the target file exists. The argument can be relative to the current directory, or an absolute path.
If the [Directory] is not open, the path is relative to [code]res://[/code].
</description>
</method>
<method name="get_current_dir">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the absolute path to the currently opened directory (e.g. [code]res://folder[/code] or [code]C:\tmp\folder[/code]).
</description>
</method>
<method name="get_current_drive">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the currently opened directory's drive index. See [method get_drive] to convert returned index to the name of the drive.
</description>
</method>
<method name="get_drive">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
On Windows, returns the name of the drive (partition) passed as an argument (e.g. [code]C:[/code]). On other platforms, or if the requested drive does not exist, the method returns an empty String.
</description>
</method>
<method name="get_drive_count">
- <return type="int">
- </return>
+ <return type="int" />
<description>
On Windows, returns the number of drives (partitions) mounted on the current filesystem. On other platforms, the method returns 0.
</description>
</method>
<method name="get_next">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the next element (file or directory) in the current directory (including [code].[/code] and [code]..[/code], unless [code]skip_navigational[/code] was given to [method list_dir_begin]).
The name of the file or directory is returned (and not its full path). Once the stream has been fully processed, the method returns an empty String and closes the stream automatically (i.e. [method list_dir_end] would not be mandatory in such a case).
</description>
</method>
<method name="get_space_left">
- <return type="int">
- </return>
+ <return type="int" />
<description>
On UNIX desktop systems, returns the available space on the current directory's disk. On other platforms, this information is not available and the method returns 0 or -1.
</description>
</method>
<method name="list_dir_begin">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="show_navigational" type="bool" default="false">
- </argument>
- <argument index="1" name="show_hidden" type="bool" default="false">
- </argument>
- <description>
- Initializes the stream used to list all files and directories using the [method get_next] function, closing the current opened stream if needed. Once the stream has been processed, it should typically be closed with [method list_dir_end].
+ <return type="int" enum="Error" />
+ <argument index="0" name="show_navigational" type="bool" default="false" />
+ <argument index="1" name="show_hidden" type="bool" default="false" />
+ <description>
+ Initializes the stream used to list all files and directories using the [method get_next] function, closing the currently opened stream if needed. Once the stream has been processed, it should typically be closed with [method list_dir_end].
If [code]show_navigational[/code] is [code]true[/code], [code].[/code] and [code]..[/code] are included too.
If [code]show_hidden[/code] is [code]true[/code], hidden files are included too.
</description>
</method>
<method name="list_dir_end">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Closes the current stream opened with [method list_dir_begin] (whether it has been fully processed with [method get_next] does not matter).
</description>
</method>
<method name="make_dir">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Creates a directory. The argument can be relative to the current directory, or an absolute path. The target directory should be placed in an already existing directory (to create the full path recursively, see [method make_dir_recursive]).
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="make_dir_recursive">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Creates a target directory and all necessary intermediate directories in its path, by calling [method make_dir] recursively. The argument can be relative to the current directory, or an absolute path.
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="open">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Opens an existing directory of the filesystem. The [code]path[/code] argument can be within the project tree ([code]res://folder[/code]), the user directory ([code]user://folder[/code]) or an absolute path of the user filesystem (e.g. [code]/tmp/folder[/code] or [code]C:\tmp\folder[/code]).
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="remove">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Deletes the target file or an empty directory. The argument can be relative to the current directory, or an absolute path. If the target directory is not empty, the operation will fail.
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
</description>
</method>
<method name="rename">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="from" type="String">
- </argument>
- <argument index="1" name="to" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="from" type="String" />
+ <argument index="1" name="to" type="String" />
<description>
Renames (move) the [code]from[/code] file to the [code]to[/code] destination. Both arguments should be paths to files, either relative or absolute. If the destination file exists and is not access-protected, it will be overwritten.
Returns one of the [enum Error] code constants ([code]OK[/code] on success).
diff --git a/doc/classes/DisplayServer.xml b/doc/classes/DisplayServer.xml
index 17b51d5cbe..abb715b34e 100644
--- a/doc/classes/DisplayServer.xml
+++ b/doc/classes/DisplayServer.xml
@@ -7,481 +7,346 @@
<tutorials>
</tutorials>
<methods>
- <method name="alert">
- <return type="void">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
- <argument index="1" name="title" type="String" default="&quot;Alert!&quot;">
- </argument>
- <description>
- </description>
- </method>
<method name="clipboard_get" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
<method name="clipboard_set">
- <return type="void">
- </return>
- <argument index="0" name="clipboard" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="clipboard" type="String" />
<description>
</description>
</method>
<method name="console_set_visible">
- <return type="void">
- </return>
- <argument index="0" name="console_visible" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="console_visible" type="bool" />
<description>
</description>
</method>
<method name="create_sub_window">
- <return type="int">
- </return>
- <argument index="0" name="mode" type="int" enum="DisplayServer.WindowMode">
- </argument>
- <argument index="1" name="vsync_mode" type="int" enum="DisplayServer.VSyncMode">
- </argument>
- <argument index="2" name="flags" type="int">
- </argument>
- <argument index="3" name="rect" type="Rect2i" default="Rect2i(0, 0, 0, 0)">
- </argument>
+ <return type="int" />
+ <argument index="0" name="mode" type="int" enum="DisplayServer.WindowMode" />
+ <argument index="1" name="vsync_mode" type="int" enum="DisplayServer.VSyncMode" />
+ <argument index="2" name="flags" type="int" />
+ <argument index="3" name="rect" type="Rect2i" default="Rect2i(0, 0, 0, 0)" />
<description>
</description>
</method>
<method name="cursor_get_shape" qualifiers="const">
- <return type="int" enum="DisplayServer.CursorShape">
- </return>
+ <return type="int" enum="DisplayServer.CursorShape" />
<description>
</description>
</method>
<method name="cursor_set_custom_image">
- <return type="void">
- </return>
- <argument index="0" name="cursor" type="Resource">
- </argument>
- <argument index="1" name="shape" type="int" enum="DisplayServer.CursorShape" default="0">
- </argument>
- <argument index="2" name="hotspot" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="cursor" type="Resource" />
+ <argument index="1" name="shape" type="int" enum="DisplayServer.CursorShape" default="0" />
+ <argument index="2" name="hotspot" type="Vector2" default="Vector2(0, 0)" />
<description>
</description>
</method>
<method name="cursor_set_shape">
- <return type="void">
- </return>
- <argument index="0" name="shape" type="int" enum="DisplayServer.CursorShape">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shape" type="int" enum="DisplayServer.CursorShape" />
<description>
</description>
</method>
<method name="delete_sub_window">
- <return type="void">
- </return>
- <argument index="0" name="window_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="window_id" type="int" />
<description>
</description>
</method>
<method name="dialog_input_text">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="title" type="String">
- </argument>
- <argument index="1" name="description" type="String">
- </argument>
- <argument index="2" name="existing_text" type="String">
- </argument>
- <argument index="3" name="callback" type="Callable">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="title" type="String" />
+ <argument index="1" name="description" type="String" />
+ <argument index="2" name="existing_text" type="String" />
+ <argument index="3" name="callback" type="Callable" />
<description>
</description>
</method>
<method name="dialog_show">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="title" type="String">
- </argument>
- <argument index="1" name="description" type="String">
- </argument>
- <argument index="2" name="buttons" type="PackedStringArray">
- </argument>
- <argument index="3" name="callback" type="Callable">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="title" type="String" />
+ <argument index="1" name="description" type="String" />
+ <argument index="2" name="buttons" type="PackedStringArray" />
+ <argument index="3" name="callback" type="Callable" />
<description>
</description>
</method>
<method name="enable_for_stealing_focus">
- <return type="void">
- </return>
- <argument index="0" name="process_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="process_id" type="int" />
<description>
</description>
</method>
<method name="force_process_and_drop_events">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="get_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
<method name="get_screen_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_swap_cancel_ok">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="get_window_at_screen_position" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="position" type="Vector2i">
- </argument>
+ <return type="int" />
+ <argument index="0" name="position" type="Vector2i" />
<description>
</description>
</method>
<method name="get_window_list" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
+ <return type="PackedInt32Array" />
<description>
</description>
</method>
<method name="global_menu_add_check_item">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="label" type="String">
- </argument>
- <argument index="2" name="callback" type="Callable">
- </argument>
- <argument index="3" name="tag" type="Variant" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="label" type="String" />
+ <argument index="2" name="callback" type="Callable" />
+ <argument index="3" name="tag" type="Variant" default="null" />
<description>
</description>
</method>
<method name="global_menu_add_item">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="label" type="String">
- </argument>
- <argument index="2" name="callback" type="Callable">
- </argument>
- <argument index="3" name="tag" type="Variant" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="label" type="String" />
+ <argument index="2" name="callback" type="Callable" />
+ <argument index="3" name="tag" type="Variant" default="null" />
<description>
</description>
</method>
<method name="global_menu_add_separator">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
<description>
</description>
</method>
<method name="global_menu_add_submenu_item">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="label" type="String">
- </argument>
- <argument index="2" name="submenu" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="label" type="String" />
+ <argument index="2" name="submenu" type="String" />
<description>
</description>
</method>
<method name="global_menu_clear">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
<description>
</description>
</method>
<method name="global_menu_get_item_callback">
- <return type="Callable">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
+ <return type="Callable" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_get_item_submenu">
- <return type="String">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_get_item_tag">
- <return type="Variant">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_get_item_text">
- <return type="String">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_is_item_checkable" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_is_item_checked" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_remove_item">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
<description>
</description>
</method>
<method name="global_menu_set_item_callback">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
- <argument index="2" name="callback" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="callback" type="Callable" />
<description>
</description>
</method>
<method name="global_menu_set_item_checkable">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
- <argument index="2" name="checkable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="checkable" type="bool" />
<description>
</description>
</method>
<method name="global_menu_set_item_checked">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
- <argument index="2" name="checked" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="checked" type="bool" />
<description>
</description>
</method>
<method name="global_menu_set_item_submenu">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
- <argument index="2" name="submenu" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="submenu" type="String" />
<description>
</description>
</method>
<method name="global_menu_set_item_tag">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
- <argument index="2" name="tag" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="tag" type="Variant" />
<description>
</description>
</method>
<method name="global_menu_set_item_text">
- <return type="void">
- </return>
- <argument index="0" name="menu_root" type="String">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
- <argument index="2" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_root" type="String" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="text" type="String" />
<description>
</description>
</method>
<method name="has_feature" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="feature" type="int" enum="DisplayServer.Feature">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="feature" type="int" enum="DisplayServer.Feature" />
<description>
</description>
</method>
<method name="ime_get_selection" qualifiers="const">
- <return type="Vector2i">
- </return>
+ <return type="Vector2i" />
<description>
</description>
</method>
<method name="ime_get_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
<method name="is_console_visible" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="keyboard_get_current_layout" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns active keyboard layout index.
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="keyboard_get_layout_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of keyboard layouts.
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="keyboard_get_layout_language" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the ISO-639/BCP-47 language code of the keyboard layout at position [code]index[/code].
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="keyboard_get_layout_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the localized name of the keyboard layout at position [code]index[/code].
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="keyboard_set_current_layout">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Sets active keyboard layout.
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="mouse_get_absolute_position" qualifiers="const">
- <return type="Vector2i">
- </return>
+ <return type="Vector2i" />
<description>
</description>
</method>
<method name="mouse_get_button_state" qualifiers="const">
- <return type="int" enum="MouseButton">
- </return>
+ <return type="int" enum="MouseButton" />
<description>
</description>
</method>
<method name="mouse_get_mode" qualifiers="const">
- <return type="int" enum="DisplayServer.MouseMode">
- </return>
+ <return type="int" enum="DisplayServer.MouseMode" />
<description>
</description>
</method>
<method name="mouse_get_position" qualifiers="const">
- <return type="Vector2i">
- </return>
+ <return type="Vector2i" />
<description>
</description>
</method>
<method name="mouse_set_mode">
- <return type="void">
- </return>
- <argument index="0" name="mouse_mode" type="int" enum="DisplayServer.MouseMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mouse_mode" type="int" enum="DisplayServer.MouseMode" />
<description>
</description>
</method>
<method name="mouse_warp_to_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2i">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2i" />
<description>
</description>
</method>
<method name="process_events">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="screen_get_dpi" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="screen" type="int" default="-1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="screen" type="int" default="-1" />
<description>
Returns the dots per inch density of the specified screen. If [code]screen[/code] is [/code]SCREEN_OF_MAIN_WINDOW[/code] (the default value), a screen with the main window will be used.
[b]Note:[/b] On macOS, returned value is inaccurate if fractional display scaling mode is used.
@@ -498,8 +363,7 @@
</description>
</method>
<method name="screen_get_max_scale" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Return the greatest scale factor of all screens.
[b]Note:[/b] On macOS returned value is [code]2.0[/code] if there is at least one hiDPI (Retina) screen in the system, and [code]1.0[/code] in all other cases.
@@ -507,26 +371,20 @@
</description>
</method>
<method name="screen_get_orientation" qualifiers="const">
- <return type="int" enum="DisplayServer.ScreenOrientation">
- </return>
- <argument index="0" name="screen" type="int" default="-1">
- </argument>
+ <return type="int" enum="DisplayServer.ScreenOrientation" />
+ <argument index="0" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="screen_get_position" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="screen" type="int" default="-1">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="screen_get_scale" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="screen" type="int" default="-1">
- </argument>
+ <return type="float" />
+ <argument index="0" name="screen" type="int" default="-1" />
<description>
Return the scale factor of the specified screen by index.
[b]Note:[/b] On macOS returned value is [code]2.0[/code] for hiDPI (Retina) screen, and [code]1.0[/code] for all other cases.
@@ -534,134 +392,103 @@
</description>
</method>
<method name="screen_get_size" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="screen" type="int" default="-1">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="screen_get_usable_rect" qualifiers="const">
- <return type="Rect2i">
- </return>
- <argument index="0" name="screen" type="int" default="-1">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="screen_is_kept_on" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="screen_is_touchscreen" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="screen" type="int" default="-1">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="screen_set_keep_on">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
</description>
</method>
<method name="screen_set_orientation">
- <return type="void">
- </return>
- <argument index="0" name="orientation" type="int" enum="DisplayServer.ScreenOrientation">
- </argument>
- <argument index="1" name="screen" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="orientation" type="int" enum="DisplayServer.ScreenOrientation" />
+ <argument index="1" name="screen" type="int" default="-1" />
<description>
</description>
</method>
<method name="set_icon">
- <return type="void">
- </return>
- <argument index="0" name="image" type="Image">
- </argument>
+ <return type="void" />
+ <argument index="0" name="image" type="Image" />
<description>
</description>
</method>
<method name="set_native_icon">
- <return type="void">
- </return>
- <argument index="0" name="filename" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="filename" type="String" />
<description>
</description>
</method>
<method name="tablet_get_current_driver" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns current active tablet driver name.
[b]Note:[/b] This method is implemented on Windows.
</description>
</method>
<method name="tablet_get_driver_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the total number of available tablet drivers.
[b]Note:[/b] This method is implemented on Windows.
</description>
</method>
<method name="tablet_get_driver_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the tablet driver name for the given index.
[b]Note:[/b] This method is implemented on Windows.
</description>
</method>
<method name="tablet_set_current_driver">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
<description>
Set active tablet driver name.
[b]Note:[/b] This method is implemented on Windows.
</description>
</method>
<method name="virtual_keyboard_get_height" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the on-screen keyboard's height in pixels. Returns 0 if there is no keyboard or if it is currently hidden.
</description>
</method>
<method name="virtual_keyboard_hide">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Hides the virtual keyboard if it is shown, does nothing otherwise.
</description>
</method>
<method name="virtual_keyboard_show">
- <return type="void">
- </return>
- <argument index="0" name="existing_text" type="String">
- </argument>
- <argument index="1" name="position" type="Rect2" default="Rect2i(0, 0, 0, 0)">
- </argument>
- <argument index="2" name="multiline" type="bool" default="false">
- </argument>
- <argument index="3" name="max_length" type="int" default="-1">
- </argument>
- <argument index="4" name="cursor_start" type="int" default="-1">
- </argument>
- <argument index="5" name="cursor_end" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="existing_text" type="String" />
+ <argument index="1" name="position" type="Rect2" default="Rect2i(0, 0, 0, 0)" />
+ <argument index="2" name="multiline" type="bool" default="false" />
+ <argument index="3" name="max_length" type="int" default="-1" />
+ <argument index="4" name="cursor_start" type="int" default="-1" />
+ <argument index="5" name="cursor_end" type="int" default="-1" />
<description>
Shows the virtual keyboard if the platform has one.
[code]existing_text[/code] parameter is useful for implementing your own [LineEdit] or [TextEdit], as it tells the virtual keyboard what text has already been typed (the virtual keyboard uses it for auto-correct and predictions).
@@ -674,231 +501,167 @@
</description>
</method>
<method name="window_attach_instance_id">
- <return type="void">
- </return>
- <argument index="0" name="instance_id" type="int">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance_id" type="int" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_can_draw" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_attached_instance_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_current_screen" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_flag" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="flag" type="int" enum="DisplayServer.WindowFlags">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="flag" type="int" enum="DisplayServer.WindowFlags" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_max_size" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_min_size" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_mode" qualifiers="const">
- <return type="int" enum="DisplayServer.WindowMode">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="int" enum="DisplayServer.WindowMode" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_position" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_real_size" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_size" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_get_vsync_mode" qualifiers="const">
- <return type="int" enum="DisplayServer.VSyncMode">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="int" enum="DisplayServer.VSyncMode" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
Returns the VSync mode of the given window.
</description>
</method>
<method name="window_move_to_foreground">
- <return type="void">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_request_attention">
- <return type="void">
- </return>
- <argument index="0" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_current_screen">
- <return type="void">
- </return>
- <argument index="0" name="screen" type="int">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="screen" type="int" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_drop_files_callback">
- <return type="void">
- </return>
- <argument index="0" name="callback" type="Callable">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="callback" type="Callable" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_flag">
- <return type="void">
- </return>
- <argument index="0" name="flag" type="int" enum="DisplayServer.WindowFlags">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
- <argument index="2" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="flag" type="int" enum="DisplayServer.WindowFlags" />
+ <argument index="1" name="enabled" type="bool" />
+ <argument index="2" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_ime_active">
- <return type="void">
- </return>
- <argument index="0" name="active" type="bool">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="active" type="bool" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_ime_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2i">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2i" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_input_event_callback">
- <return type="void">
- </return>
- <argument index="0" name="callback" type="Callable">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="callback" type="Callable" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_input_text_callback">
- <return type="void">
- </return>
- <argument index="0" name="callback" type="Callable">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="callback" type="Callable" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_max_size">
- <return type="void">
- </return>
- <argument index="0" name="max_size" type="Vector2i">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="max_size" type="Vector2i" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_min_size">
- <return type="void">
- </return>
- <argument index="0" name="min_size" type="Vector2i">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="min_size" type="Vector2i" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="DisplayServer.WindowMode">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mode" type="int" enum="DisplayServer.WindowMode" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_mouse_passthrough">
- <return type="void">
- </return>
- <argument index="0" name="region" type="PackedVector2Array">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="region" type="PackedVector2Array" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
Sets a polygonal region of the window which accepts mouse events. Mouse events outside the region will be passed through.
Passing an empty array will disable passthrough support (all mouse events will be intercepted by the window, which is the default behavior).
@@ -929,62 +692,44 @@
</description>
</method>
<method name="window_set_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2i">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2i" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_rect_changed_callback">
- <return type="void">
- </return>
- <argument index="0" name="callback" type="Callable">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="callback" type="Callable" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_size">
- <return type="void">
- </return>
- <argument index="0" name="size" type="Vector2i">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="Vector2i" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_title">
- <return type="void">
- </return>
- <argument index="0" name="title" type="String">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="title" type="String" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
<method name="window_set_transient">
- <return type="void">
- </return>
- <argument index="0" name="window_id" type="int">
- </argument>
- <argument index="1" name="parent_window_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="window_id" type="int" />
+ <argument index="1" name="parent_window_id" type="int" />
<description>
</description>
</method>
<method name="window_set_vsync_mode">
- <return type="void">
- </return>
- <argument index="0" name="vsync_mode" type="int" enum="DisplayServer.VSyncMode">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="vsync_mode" type="int" enum="DisplayServer.VSyncMode" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
Sets the VSync mode of the given window.
See [enum DisplayServer.VSyncMode] for possible values and how they affect the behavior of your application.
@@ -992,12 +737,9 @@
</description>
</method>
<method name="window_set_window_event_callback">
- <return type="void">
- </return>
- <argument index="0" name="callback" type="Callable">
- </argument>
- <argument index="1" name="window_id" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="callback" type="Callable" />
+ <argument index="1" name="window_id" type="int" default="0" />
<description>
</description>
</method>
diff --git a/doc/classes/EditorDebuggerPlugin.xml b/doc/classes/EditorDebuggerPlugin.xml
index 9484d33252..d67df8dfee 100644
--- a/doc/classes/EditorDebuggerPlugin.xml
+++ b/doc/classes/EditorDebuggerPlugin.xml
@@ -12,63 +12,50 @@
</tutorials>
<methods>
<method name="has_capture">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if a message capture with given name is present otherwise [code]false[/code].
</description>
</method>
<method name="is_breaked">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the game is in break state otherwise [code]false[/code].
</description>
</method>
<method name="is_debuggable">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the game can be debugged otherwise [code]false[/code].
</description>
</method>
<method name="is_session_active">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if there is an instance of the game running with the attached debugger otherwise [code]false[/code].
</description>
</method>
<method name="register_message_capture">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="callable" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="callable" type="Callable" />
<description>
Registers a message capture with given [code]name[/code]. If [code]name[/code] is "my_message" then messages starting with "my_message:" will be called with the given callable.
Callable must accept a message string and a data array as argument. If the message and data are valid then callable must return [code]true[/code] otherwise [code]false[/code].
</description>
</method>
<method name="send_message">
- <return type="void">
- </return>
- <argument index="0" name="message" type="String">
- </argument>
- <argument index="1" name="data" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="message" type="String" />
+ <argument index="1" name="data" type="Array" />
<description>
Sends a message with given [code]message[/code] and [code]data[/code] array.
</description>
</method>
<method name="unregister_message_capture">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Unregisters the message capture with given name.
</description>
@@ -76,8 +63,7 @@
</methods>
<signals>
<signal name="breaked">
- <argument index="0" name="can_debug" type="bool">
- </argument>
+ <argument index="0" name="can_debug" type="bool" />
<description>
Emitted when the game enters a break state.
</description>
diff --git a/doc/classes/EditorExportPlugin.xml b/doc/classes/EditorExportPlugin.xml
index d9e3003fbb..16c50b4d3e 100644
--- a/doc/classes/EditorExportPlugin.xml
+++ b/doc/classes/EditorExportPlugin.xml
@@ -10,77 +10,57 @@
</tutorials>
<methods>
<method name="_export_begin" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="features" type="PackedStringArray">
- </argument>
- <argument index="1" name="is_debug" type="bool">
- </argument>
- <argument index="2" name="path" type="String">
- </argument>
- <argument index="3" name="flags" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="features" type="PackedStringArray" />
+ <argument index="1" name="is_debug" type="bool" />
+ <argument index="2" name="path" type="String" />
+ <argument index="3" name="flags" type="int" />
<description>
Virtual method to be overridden by the user. It is called when the export starts and provides all information about the export. [code]features[/code] is the list of features for the export, [code]is_debug[/code] is [code]true[/code] for debug builds, [code]path[/code] is the target path for the exported project. [code]flags[/code] is only used when running a runnable profile, e.g. when using native run on Android.
</description>
</method>
<method name="_export_end" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Virtual method to be overridden by the user. Called when the export is finished.
</description>
</method>
<method name="_export_file" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="type" type="String">
- </argument>
- <argument index="2" name="features" type="PackedStringArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="type" type="String" />
+ <argument index="2" name="features" type="PackedStringArray" />
<description>
Virtual method to be overridden by the user. Called for each exported file, providing arguments that can be used to identify the file. [code]path[/code] is the path of the file, [code]type[/code] is the [Resource] represented by the file (e.g. [PackedScene]) and [code]features[/code] is the list of features for the export.
Calling [method skip] inside this callback will make the file not included in the export.
</description>
</method>
<method name="add_file">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="file" type="PackedByteArray">
- </argument>
- <argument index="2" name="remap" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="file" type="PackedByteArray" />
+ <argument index="2" name="remap" type="bool" />
<description>
Adds a custom file to be exported. [code]path[/code] is the virtual path that can be used to load the file, [code]file[/code] is the binary data of the file. If [code]remap[/code] is [code]true[/code], file will not be exported, but instead remapped to the given [code]path[/code].
</description>
</method>
<method name="add_ios_bundle_file">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
<description>
Adds an iOS bundle file from the given [code]path[/code] to the exported project.
</description>
</method>
<method name="add_ios_cpp_code">
- <return type="void">
- </return>
- <argument index="0" name="code" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="code" type="String" />
<description>
Adds a C++ code to the iOS export. The final code is created from the code appended by each active export plugin.
</description>
</method>
<method name="add_ios_embedded_framework">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
<description>
Adds a dynamic library (*.dylib, *.framework) to Linking Phase in iOS's Xcode project and embeds it into resulting binary.
[b]Note:[/b] For static libraries (*.a) works in same way as [code]add_ios_framework[/code].
@@ -88,55 +68,43 @@
</description>
</method>
<method name="add_ios_framework">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
<description>
Adds a static library (*.a) or dynamic library (*.dylib, *.framework) to Linking Phase in iOS's Xcode project.
</description>
</method>
<method name="add_ios_linker_flags">
- <return type="void">
- </return>
- <argument index="0" name="flags" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="flags" type="String" />
<description>
Adds linker flags for the iOS export.
</description>
</method>
<method name="add_ios_plist_content">
- <return type="void">
- </return>
- <argument index="0" name="plist_content" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="plist_content" type="String" />
<description>
Adds content for iOS Property List files.
</description>
</method>
<method name="add_ios_project_static_lib">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
<description>
Adds a static lib from the given [code]path[/code] to the iOS project.
</description>
</method>
<method name="add_shared_object">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="tags" type="PackedStringArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="tags" type="PackedStringArray" />
<description>
Adds a shared object with the given [code]tags[/code] and destination [code]path[/code].
</description>
</method>
<method name="skip">
- <return type="void">
- </return>
+ <return type="void" />
<description>
To be called inside [method _export_file]. Skips the current file, so it's not included in the export.
</description>
diff --git a/doc/classes/EditorFeatureProfile.xml b/doc/classes/EditorFeatureProfile.xml
index 0cd839f370..a41730d5d0 100644
--- a/doc/classes/EditorFeatureProfile.xml
+++ b/doc/classes/EditorFeatureProfile.xml
@@ -11,112 +11,84 @@
</tutorials>
<methods>
<method name="get_feature_name">
- <return type="String">
- </return>
- <argument index="0" name="feature" type="int" enum="EditorFeatureProfile.Feature">
- </argument>
+ <return type="String" />
+ <argument index="0" name="feature" type="int" enum="EditorFeatureProfile.Feature" />
<description>
Returns the specified [code]feature[/code]'s human-readable name.
</description>
</method>
<method name="is_class_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="class_name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="class_name" type="StringName" />
<description>
Returns [code]true[/code] if the class specified by [code]class_name[/code] is disabled. When disabled, the class won't appear in the Create New Node dialog.
</description>
</method>
<method name="is_class_editor_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="class_name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="class_name" type="StringName" />
<description>
Returns [code]true[/code] if editing for the class specified by [code]class_name[/code] is disabled. When disabled, the class will still appear in the Create New Node dialog but the inspector will be read-only when selecting a node that extends the class.
</description>
</method>
<method name="is_class_property_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="class_name" type="StringName">
- </argument>
- <argument index="1" name="property" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="class_name" type="StringName" />
+ <argument index="1" name="property" type="StringName" />
<description>
Returns [code]true[/code] if [code]property[/code] is disabled in the class specified by [code]class_name[/code]. When a property is disabled, it won't appear in the inspector when selecting a node that extends the class specified by [code]class_name[/code].
</description>
</method>
<method name="is_feature_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="feature" type="int" enum="EditorFeatureProfile.Feature">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="feature" type="int" enum="EditorFeatureProfile.Feature" />
<description>
Returns [code]true[/code] if the [code]feature[/code] is disabled. When a feature is disabled, it will disappear from the editor entirely.
</description>
</method>
<method name="load_from_file">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Loads an editor feature profile from a file. The file must follow the JSON format obtained by using the feature profile manager's [b]Export[/b] button or the [method save_to_file] method.
</description>
</method>
<method name="save_to_file">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Saves the editor feature profile to a file in JSON format. It can then be imported using the feature profile manager's [b]Import[/b] button or the [method load_from_file] button.
</description>
</method>
<method name="set_disable_class">
- <return type="void">
- </return>
- <argument index="0" name="class_name" type="StringName">
- </argument>
- <argument index="1" name="disable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="class_name" type="StringName" />
+ <argument index="1" name="disable" type="bool" />
<description>
If [code]disable[/code] is [code]true[/code], disables the class specified by [code]class_name[/code]. When disabled, the class won't appear in the Create New Node dialog.
</description>
</method>
<method name="set_disable_class_editor">
- <return type="void">
- </return>
- <argument index="0" name="class_name" type="StringName">
- </argument>
- <argument index="1" name="disable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="class_name" type="StringName" />
+ <argument index="1" name="disable" type="bool" />
<description>
If [code]disable[/code] is [code]true[/code], disables editing for the class specified by [code]class_name[/code]. When disabled, the class will still appear in the Create New Node dialog but the inspector will be read-only when selecting a node that extends the class.
</description>
</method>
<method name="set_disable_class_property">
- <return type="void">
- </return>
- <argument index="0" name="class_name" type="StringName">
- </argument>
- <argument index="1" name="property" type="StringName">
- </argument>
- <argument index="2" name="disable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="class_name" type="StringName" />
+ <argument index="1" name="property" type="StringName" />
+ <argument index="2" name="disable" type="bool" />
<description>
If [code]disable[/code] is [code]true[/code], disables editing for [code]property[/code] in the class specified by [code]class_name[/code]. When a property is disabled, it won't appear in the inspector when selecting a node that extends the class specified by [code]class_name[/code].
</description>
</method>
<method name="set_disable_feature">
- <return type="void">
- </return>
- <argument index="0" name="feature" type="int" enum="EditorFeatureProfile.Feature">
- </argument>
- <argument index="1" name="disable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="feature" type="int" enum="EditorFeatureProfile.Feature" />
+ <argument index="1" name="disable" type="bool" />
<description>
If [code]disable[/code] is [code]true[/code], disables the editor feature specified in [code]feature[/code]. When a feature is disabled, it will disappear from the editor entirely.
</description>
diff --git a/doc/classes/EditorFileDialog.xml b/doc/classes/EditorFileDialog.xml
index 084459e518..53fba9f3b8 100644
--- a/doc/classes/EditorFileDialog.xml
+++ b/doc/classes/EditorFileDialog.xml
@@ -9,32 +9,27 @@
</tutorials>
<methods>
<method name="add_filter">
- <return type="void">
- </return>
- <argument index="0" name="filter" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="filter" type="String" />
<description>
Adds a comma-delimited file extension filter option to the [EditorFileDialog] with an optional semi-colon-delimited label.
For example, [code]"*.tscn, *.scn; Scenes"[/code] results in filter text "Scenes (*.tscn, *.scn)".
</description>
</method>
<method name="clear_filters">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all filters except for "All Files (*)".
</description>
</method>
<method name="get_vbox">
- <return type="VBoxContainer">
- </return>
+ <return type="VBoxContainer" />
<description>
Returns the [code]VBoxContainer[/code] used to display the file system.
</description>
</method>
<method name="invalidate">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Notify the [EditorFileDialog] that its view of the data is no longer accurate. Updates the view contents on next view update.
</description>
@@ -70,22 +65,19 @@
</members>
<signals>
<signal name="dir_selected">
- <argument index="0" name="dir" type="String">
- </argument>
+ <argument index="0" name="dir" type="String" />
<description>
Emitted when a directory is selected.
</description>
</signal>
<signal name="file_selected">
- <argument index="0" name="path" type="String">
- </argument>
+ <argument index="0" name="path" type="String" />
<description>
Emitted when a file is selected.
</description>
</signal>
<signal name="files_selected">
- <argument index="0" name="paths" type="PackedStringArray">
- </argument>
+ <argument index="0" name="paths" type="PackedStringArray" />
<description>
Emitted when multiple files are selected.
</description>
diff --git a/doc/classes/EditorFileSystem.xml b/doc/classes/EditorFileSystem.xml
index 3a045817c2..6b4a2b03a3 100644
--- a/doc/classes/EditorFileSystem.xml
+++ b/doc/classes/EditorFileSystem.xml
@@ -11,70 +11,58 @@
</tutorials>
<methods>
<method name="get_file_type" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="path" type="String" />
<description>
Gets the type of the file, given the full path.
</description>
</method>
<method name="get_filesystem">
- <return type="EditorFileSystemDirectory">
- </return>
+ <return type="EditorFileSystemDirectory" />
<description>
Gets the root directory object.
</description>
</method>
<method name="get_filesystem_path">
- <return type="EditorFileSystemDirectory">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="EditorFileSystemDirectory" />
+ <argument index="0" name="path" type="String" />
<description>
Returns a view into the filesystem at [code]path[/code].
</description>
</method>
<method name="get_scanning_progress" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the scan progress for 0 to 1 if the FS is being scanned.
</description>
</method>
<method name="is_scanning" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] of the filesystem is being scanned.
</description>
</method>
<method name="scan">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Scan the filesystem for changes.
</description>
</method>
<method name="scan_sources">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Check if the source of any imported resource changed.
</description>
</method>
<method name="update_file">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
<description>
Update a file information. Call this if an external program (not Godot) modified the file.
</description>
</method>
<method name="update_script_classes">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Scans the script files and updates the list of custom class names.
</description>
@@ -87,22 +75,19 @@
</description>
</signal>
<signal name="resources_reimported">
- <argument index="0" name="resources" type="PackedStringArray">
- </argument>
+ <argument index="0" name="resources" type="PackedStringArray" />
<description>
Emitted if a resource is reimported.
</description>
</signal>
<signal name="resources_reload">
- <argument index="0" name="resources" type="PackedStringArray">
- </argument>
+ <argument index="0" name="resources" type="PackedStringArray" />
<description>
Emitted if at least one resource is reloaded when the filesystem is scanned.
</description>
</signal>
<signal name="sources_changed">
- <argument index="0" name="exist" type="bool">
- </argument>
+ <argument index="0" name="exist" type="bool" />
<description>
Emitted if the source of any imported file changed.
</description>
diff --git a/doc/classes/EditorFileSystemDirectory.xml b/doc/classes/EditorFileSystemDirectory.xml
index b852ae1063..28793cb8af 100644
--- a/doc/classes/EditorFileSystemDirectory.xml
+++ b/doc/classes/EditorFileSystemDirectory.xml
@@ -10,117 +10,94 @@
</tutorials>
<methods>
<method name="find_dir_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="String" />
<description>
Returns the index of the directory with name [code]name[/code] or [code]-1[/code] if not found.
</description>
</method>
<method name="find_file_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="String" />
<description>
Returns the index of the file with name [code]name[/code] or [code]-1[/code] if not found.
</description>
</method>
<method name="get_file" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the name of the file at index [code]idx[/code].
</description>
</method>
<method name="get_file_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of files in this directory.
</description>
</method>
<method name="get_file_import_is_valid" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the file at index [code]idx[/code] imported properly.
</description>
</method>
<method name="get_file_path" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the path to the file at index [code]idx[/code].
</description>
</method>
<method name="get_file_script_class_extends" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the base class of the script class defined in the file at index [code]idx[/code]. If the file doesn't define a script class using the [code]class_name[/code] syntax, this will return an empty string.
</description>
</method>
<method name="get_file_script_class_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the name of the script class defined in the file at index [code]idx[/code]. If the file doesn't define a script class using the [code]class_name[/code] syntax, this will return an empty string.
</description>
</method>
<method name="get_file_type" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the file extension of the file at index [code]idx[/code].
</description>
</method>
<method name="get_name">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the name of this directory.
</description>
</method>
<method name="get_parent">
- <return type="EditorFileSystemDirectory">
- </return>
+ <return type="EditorFileSystemDirectory" />
<description>
Returns the parent directory for this directory or [code]null[/code] if called on a directory at [code]res://[/code] or [code]user://[/code].
</description>
</method>
<method name="get_path" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the path to this directory.
</description>
</method>
<method name="get_subdir">
- <return type="EditorFileSystemDirectory">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="EditorFileSystemDirectory" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the subdirectory at index [code]idx[/code].
</description>
</method>
<method name="get_subdir_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of subdirectories in this directory.
</description>
diff --git a/doc/classes/EditorImportPlugin.xml b/doc/classes/EditorImportPlugin.xml
index a532e9bc2b..b379ccc8c6 100644
--- a/doc/classes/EditorImportPlugin.xml
+++ b/doc/classes/EditorImportPlugin.xml
@@ -114,35 +114,28 @@
</tutorials>
<methods>
<method name="_get_import_options" qualifiers="virtual">
- <return type="Array">
- </return>
- <argument index="0" name="preset" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="preset" type="int" />
<description>
Gets the options and default values for the preset at this index. Returns an Array of Dictionaries with the following keys: [code]name[/code], [code]default_value[/code], [code]property_hint[/code] (optional), [code]hint_string[/code] (optional), [code]usage[/code] (optional).
</description>
</method>
<method name="_get_import_order" qualifiers="virtual">
- <return type="int">
- </return>
+ <return type="int" />
<description>
- Gets the order of this importer to be run when importing resources. Higher values will be called later. Use this to ensure the importer runs after the dependencies are already imported.
+ Gets the order of this importer to be run when importing resources. Importers with [i]lower[/i] import orders will be called first, and higher values will be called later. Use this to ensure the importer runs after the dependencies are already imported. The default import order is [code]0[/code] unless overridden by a specific importer. See [enum ResourceImporter.ImportOrder] for some predefined values.
</description>
</method>
<method name="_get_importer_name" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Gets the unique name of the importer.
</description>
</method>
<method name="_get_option_visibility" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="option" type="String">
- </argument>
- <argument index="1" name="options" type="Dictionary">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="option" type="String" />
+ <argument index="1" name="options" type="Dictionary" />
<description>
This method can be overridden to hide specific import options if conditions are met. This is mainly useful for hiding options that depend on others if one of them is disabled. For example:
[codeblocks]
@@ -171,69 +164,55 @@
</description>
</method>
<method name="_get_preset_count" qualifiers="virtual">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets the number of initial presets defined by the plugin. Use [method _get_import_options] to get the default options for the preset and [method _get_preset_name] to get the name of the preset.
</description>
</method>
<method name="_get_preset_name" qualifiers="virtual">
- <return type="String">
- </return>
- <argument index="0" name="preset" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="preset" type="int" />
<description>
Gets the name of the options preset at this index.
</description>
</method>
<method name="_get_priority" qualifiers="virtual">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Gets the priority of this plugin for the recognized extension. Higher priority plugins will be preferred. The default priority is [code]1.0[/code].
</description>
</method>
<method name="_get_recognized_extensions" qualifiers="virtual">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Gets the list of file extensions to associate with this loader (case-insensitive). e.g. [code]["obj"][/code].
</description>
</method>
<method name="_get_resource_type" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Gets the Godot resource type associated with this loader. e.g. [code]"Mesh"[/code] or [code]"Animation"[/code].
</description>
</method>
<method name="_get_save_extension" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Gets the extension used to save this resource in the [code].godot/imported[/code] directory.
</description>
</method>
<method name="_get_visible_name" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Gets the name to display in the import window. You should choose this name as a continuation to "Import as", e.g. "Import as Special Mesh".
</description>
</method>
<method name="_import" qualifiers="virtual">
- <return type="int">
- </return>
- <argument index="0" name="source_file" type="String">
- </argument>
- <argument index="1" name="save_path" type="String">
- </argument>
- <argument index="2" name="options" type="Dictionary">
- </argument>
- <argument index="3" name="platform_variants" type="Array">
- </argument>
- <argument index="4" name="gen_files" type="Array">
- </argument>
+ <return type="int" />
+ <argument index="0" name="source_file" type="String" />
+ <argument index="1" name="save_path" type="String" />
+ <argument index="2" name="options" type="Dictionary" />
+ <argument index="3" name="platform_variants" type="Array" />
+ <argument index="4" name="gen_files" type="Array" />
<description>
Imports [code]source_file[/code] into [code]save_path[/code] with the import [code]options[/code] specified. The [code]platform_variants[/code] and [code]gen_files[/code] arrays will be modified by this function.
This method must be overridden to do the actual importing work. See this class' description for an example of overriding this method.
diff --git a/doc/classes/EditorInspector.xml b/doc/classes/EditorInspector.xml
index d85f95baff..515c4b4d32 100644
--- a/doc/classes/EditorInspector.xml
+++ b/doc/classes/EditorInspector.xml
@@ -16,55 +16,46 @@
</members>
<signals>
<signal name="object_id_selected">
- <argument index="0" name="id" type="int">
- </argument>
+ <argument index="0" name="id" type="int" />
<description>
Emitted when the Edit button of an [Object] has been pressed in the inspector. This is mainly used in the remote scene tree inspector.
</description>
</signal>
<signal name="property_deleted">
- <argument index="0" name="property" type="String">
- </argument>
+ <argument index="0" name="property" type="String" />
<description>
Emitted when a property is removed from the inspector.
</description>
</signal>
<signal name="property_edited">
- <argument index="0" name="property" type="String">
- </argument>
+ <argument index="0" name="property" type="String" />
<description>
Emitted when a property is edited in the inspector.
</description>
</signal>
<signal name="property_keyed">
- <argument index="0" name="property" type="String">
- </argument>
+ <argument index="0" name="property" type="String" />
<description>
Emitted when a property is keyed in the inspector. Properties can be keyed by clicking the "key" icon next to a property when the Animation panel is toggled.
</description>
</signal>
<signal name="property_selected">
- <argument index="0" name="property" type="String">
- </argument>
+ <argument index="0" name="property" type="String" />
<description>
Emitted when a property is selected in the inspector.
</description>
</signal>
<signal name="property_toggled">
- <argument index="0" name="property" type="String">
- </argument>
- <argument index="1" name="checked" type="bool">
- </argument>
+ <argument index="0" name="property" type="String" />
+ <argument index="1" name="checked" type="bool" />
<description>
Emitted when a boolean property is toggled in the inspector.
[b]Note:[/b] This signal is never emitted if the internal [code]autoclear[/code] property enabled. Since this property is always enabled in the editor inspector, this signal is never emitted by the editor itself.
</description>
</signal>
<signal name="resource_selected">
- <argument index="0" name="res" type="Object">
- </argument>
- <argument index="1" name="prop" type="String">
- </argument>
+ <argument index="0" name="res" type="Object" />
+ <argument index="1" name="prop" type="String" />
<description>
Emitted when a resource is selected in the inspector.
</description>
diff --git a/doc/classes/EditorInspectorPlugin.xml b/doc/classes/EditorInspectorPlugin.xml
index c992d0fbb4..085568466a 100644
--- a/doc/classes/EditorInspectorPlugin.xml
+++ b/doc/classes/EditorInspectorPlugin.xml
@@ -16,83 +16,62 @@
</tutorials>
<methods>
<method name="_can_handle" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="object" type="Object" />
<description>
Returns [code]true[/code] if this object can be handled by this plugin.
</description>
</method>
<method name="_parse_begin" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Called to allow adding controls at the beginning of the list.
</description>
</method>
<method name="_parse_category" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="category" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="category" type="String" />
<description>
Called to allow adding controls at the beginning of the category.
</description>
</method>
<method name="_parse_end" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Called to allow adding controls at the end of the list.
</description>
</method>
<method name="_parse_property" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="type" type="int">
- </argument>
- <argument index="1" name="path" type="String">
- </argument>
- <argument index="2" name="hint" type="int">
- </argument>
- <argument index="3" name="hint_text" type="String">
- </argument>
- <argument index="4" name="usage" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="type" type="int" />
+ <argument index="1" name="path" type="String" />
+ <argument index="2" name="hint" type="int" />
+ <argument index="3" name="hint_text" type="String" />
+ <argument index="4" name="usage" type="int" />
<description>
Called to allow adding property specific editors to the inspector. Usually these inherit [EditorProperty]. Returning [code]true[/code] removes the built-in editor for this property, otherwise allows to insert a custom editor before the built-in one.
</description>
</method>
<method name="add_custom_control">
- <return type="void">
- </return>
- <argument index="0" name="control" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="control" type="Control" />
<description>
Adds a custom control, not necessarily a property editor.
</description>
</method>
<method name="add_property_editor">
- <return type="void">
- </return>
- <argument index="0" name="property" type="String">
- </argument>
- <argument index="1" name="editor" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="property" type="String" />
+ <argument index="1" name="editor" type="Control" />
<description>
Adds a property editor, this must inherit [EditorProperty].
</description>
</method>
<method name="add_property_editor_for_multiple_properties">
- <return type="void">
- </return>
- <argument index="0" name="label" type="String">
- </argument>
- <argument index="1" name="properties" type="PackedStringArray">
- </argument>
- <argument index="2" name="editor" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="label" type="String" />
+ <argument index="1" name="properties" type="PackedStringArray" />
+ <argument index="2" name="editor" type="Control" />
<description>
Adds an editor that allows modifying multiple properties, this must inherit [EditorProperty].
</description>
diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml
index 3f324bf1a0..185b4f8c39 100644
--- a/doc/classes/EditorInterface.xml
+++ b/doc/classes/EditorInterface.xml
@@ -11,267 +11,217 @@
</tutorials>
<methods>
<method name="edit_node">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Node" />
<description>
Edits the given [Node]. The node will be also selected if it's inside the scene tree.
</description>
</method>
<method name="edit_resource">
- <return type="void">
- </return>
- <argument index="0" name="resource" type="Resource">
- </argument>
+ <return type="void" />
+ <argument index="0" name="resource" type="Resource" />
<description>
Edits the given [Resource].
</description>
</method>
<method name="get_base_control">
- <return type="Control">
- </return>
+ <return type="Control" />
<description>
Returns the main container of Godot editor's window. For example, you can use it to retrieve the size of the container and place your controls accordingly.
</description>
</method>
<method name="get_current_path" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the current path being viewed in the [FileSystemDock].
</description>
</method>
<method name="get_edited_scene_root">
- <return type="Node">
- </return>
+ <return type="Node" />
<description>
Returns the edited (current) scene's root [Node].
</description>
</method>
<method name="get_editor_main_control">
- <return type="Control">
- </return>
+ <return type="Control" />
<description>
Returns the main editor control. Use this as a parent for main screens.
[b]Note:[/b] This returns the main editor control containing the whole editor, not the 2D or 3D viewports specifically.
</description>
</method>
<method name="get_editor_paths">
- <return type="EditorPaths">
- </return>
+ <return type="EditorPaths" />
<description>
</description>
</method>
<method name="get_editor_scale" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the actual scale of the editor UI ([code]1.0[/code] being 100% scale). This can be used to adjust position and dimensions of the UI added by plugins.
[b]Note:[/b] This value is set via the [code]interface/editor/display_scale[/code] and [code]interface/editor/custom_display_scale[/code] editor settings. Editor must be restarted for changes to be properly applied.
</description>
</method>
<method name="get_editor_settings">
- <return type="EditorSettings">
- </return>
+ <return type="EditorSettings" />
<description>
Returns the editor's [EditorSettings] instance.
</description>
</method>
<method name="get_file_system_dock">
- <return type="FileSystemDock">
- </return>
+ <return type="FileSystemDock" />
<description>
Returns the editor's [FileSystemDock] instance.
</description>
</method>
<method name="get_inspector" qualifiers="const">
- <return type="EditorInspector">
- </return>
+ <return type="EditorInspector" />
<description>
Returns the editor's [EditorInspector] instance.
</description>
</method>
<method name="get_open_scenes" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an [Array] with the file paths of the currently opened scenes.
</description>
</method>
<method name="get_playing_scene" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the name of the scene that is being played. If no scene is currently being played, returns an empty string.
</description>
</method>
<method name="get_resource_filesystem">
- <return type="EditorFileSystem">
- </return>
+ <return type="EditorFileSystem" />
<description>
Returns the editor's [EditorFileSystem] instance.
</description>
</method>
<method name="get_resource_previewer">
- <return type="EditorResourcePreview">
- </return>
+ <return type="EditorResourcePreview" />
<description>
Returns the editor's [EditorResourcePreview] instance.
</description>
</method>
<method name="get_script_editor">
- <return type="ScriptEditor">
- </return>
+ <return type="ScriptEditor" />
<description>
Returns the editor's [ScriptEditor] instance.
</description>
</method>
<method name="get_selected_path" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the path of the directory currently selected in the [FileSystemDock]. If a file is selected, its base directory will be returned using [method String.get_base_dir] instead.
</description>
</method>
<method name="get_selection">
- <return type="EditorSelection">
- </return>
+ <return type="EditorSelection" />
<description>
Returns the editor's [EditorSelection] instance.
</description>
</method>
<method name="inspect_object">
- <return type="void">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
- <argument index="1" name="for_property" type="String" default="&quot;&quot;">
- </argument>
- <argument index="2" name="inspector_only" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="object" type="Object" />
+ <argument index="1" name="for_property" type="String" default="&quot;&quot;" />
+ <argument index="2" name="inspector_only" type="bool" default="false" />
<description>
Shows the given property on the given [code]object[/code] in the editor's Inspector dock. If [code]inspector_only[/code] is [code]true[/code], plugins will not attempt to edit [code]object[/code].
</description>
</method>
<method name="is_playing_scene" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if a scene is currently being played, [code]false[/code] otherwise. Paused scenes are considered as being played.
</description>
</method>
<method name="is_plugin_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="plugin" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="plugin" type="String" />
<description>
Returns [code]true[/code] if the specified [code]plugin[/code] is enabled. The plugin name is the same as its directory name.
</description>
</method>
<method name="make_mesh_previews">
- <return type="Array">
- </return>
- <argument index="0" name="meshes" type="Array">
- </argument>
- <argument index="1" name="preview_size" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="meshes" type="Array" />
+ <argument index="1" name="preview_size" type="int" />
<description>
Returns mesh previews rendered at the given size as an [Array] of [Texture2D]s.
</description>
</method>
<method name="open_scene_from_path">
- <return type="void">
- </return>
- <argument index="0" name="scene_filepath" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scene_filepath" type="String" />
<description>
Opens the scene at the given path.
</description>
</method>
<method name="play_current_scene">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Plays the currently active scene.
</description>
</method>
<method name="play_custom_scene">
- <return type="void">
- </return>
- <argument index="0" name="scene_filepath" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scene_filepath" type="String" />
<description>
Plays the scene specified by its filepath.
</description>
</method>
<method name="play_main_scene">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Plays the main scene.
</description>
</method>
<method name="reload_scene_from_path">
- <return type="void">
- </return>
- <argument index="0" name="scene_filepath" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scene_filepath" type="String" />
<description>
Reloads the scene at the given path.
</description>
</method>
<method name="save_scene">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Saves the scene. Returns either [code]OK[/code] or [code]ERR_CANT_CREATE[/code] (see [@GlobalScope] constants).
</description>
</method>
<method name="save_scene_as">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="with_preview" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="with_preview" type="bool" default="true" />
<description>
Saves the scene as a file at [code]path[/code].
</description>
</method>
<method name="select_file">
- <return type="void">
- </return>
- <argument index="0" name="file" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="file" type="String" />
<description>
Selects the file, with the path provided by [code]file[/code], in the FileSystem dock.
</description>
</method>
<method name="set_main_screen_editor">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
<description>
Sets the editor's current main screen to the one specified in [code]name[/code]. [code]name[/code] must match the text of the tab in question exactly ([code]2D[/code], [code]3D[/code], [code]Script[/code], [code]AssetLib[/code]).
</description>
</method>
<method name="set_plugin_enabled">
- <return type="void">
- </return>
- <argument index="0" name="plugin" type="String">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="plugin" type="String" />
+ <argument index="1" name="enabled" type="bool" />
<description>
Sets the enabled status of a plugin. The plugin name is the same as its directory name.
</description>
</method>
<method name="stop_playing_scene">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the scene that is currently playing.
</description>
diff --git a/doc/classes/EditorNode3DGizmo.xml b/doc/classes/EditorNode3DGizmo.xml
index 221b5e44d6..39f6805254 100644
--- a/doc/classes/EditorNode3DGizmo.xml
+++ b/doc/classes/EditorNode3DGizmo.xml
@@ -1,189 +1,198 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="EditorNode3DGizmo" inherits="Node3DGizmo" version="4.0">
<brief_description>
- Custom gizmo for editing Node3D objects.
+ Gizmo for editing Node3D objects.
</brief_description>
<description>
- Custom gizmo that is used for providing custom visualization and editing (handles) for Node3D objects. See [EditorNode3DGizmoPlugin] for more information.
+ Gizmo that is used for providing custom visualization and editing (handles and subgizmos) for Node3D objects. Can be overridden to create custom gizmos, but for simple gizmos creating a [EditorNode3DGizmoPlugin] is usually recommended.
</description>
<tutorials>
</tutorials>
<methods>
<method name="_commit_handle" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="restore" type="Variant">
- </argument>
- <argument index="2" name="cancel" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="restore" type="Variant" />
+ <argument index="2" name="cancel" type="bool" default="false" />
<description>
- Commit a handle being edited (handles must have been previously added by [method add_handles]).
- If the [code]cancel[/code] parameter is [code]true[/code], an option to restore the edited value to the original is provided.
+ Override this method to commit a handle being edited (handles must have been previously added by [method add_handles]). This usually means creating an [UndoRedo] action for the change, using the current handle value as "do" and the [code]restore[/code] argument as "undo".
+ If the [code]cancel[/code] argument is [code]true[/code], the [code]restore[/code] value should be directly set, without any [UndoRedo] action.
+ </description>
+ </method>
+ <method name="_commit_subgizmos" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="ids" type="PackedInt32Array" />
+ <argument index="1" name="restore" type="Array" />
+ <argument index="2" name="cancel" type="bool" default="false" />
+ <description>
+ Override this method to commit a group of subgizmos being edited (see [method _subgizmos_intersect_ray] and [method _subgizmos_intersect_frustum]). This usually means creating an [UndoRedo] action for the change, using the current transforms as "do" and the [code]restore[/code] transforms as "undo".
+ If the [code]cancel[/code] argument is [code]true[/code], the [code]restore[/code] transforms should be directly set, without any [UndoRedo] action.
</description>
</method>
<method name="_get_handle_name" qualifiers="virtual">
- <return type="String">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="id" type="int" />
<description>
- Gets the name of an edited handle (handles must have been previously added by [method add_handles]).
+ Override this method to return the name of an edited handle (handles must have been previously added by [method add_handles]).
Handles can be named for reference to the user when editing.
</description>
</method>
<method name="_get_handle_value" qualifiers="virtual">
- <return type="Variant">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="id" type="int" />
+ <description>
+ Override this method to return the current value of a handle. This value will be requested at the start of an edit and used as the [code]restore[/code] argument in [method _commit_handle].
+ </description>
+ </method>
+ <method name="_get_subgizmo_transform" qualifiers="virtual">
+ <return type="Transform3D" />
+ <argument index="0" name="id" type="int" />
<description>
- Gets actual value of a handle. This value can be anything and used for eventually undoing the motion when calling [method _commit_handle].
+ Override this method to return the current transform of a subgizmo. This transform will be requested at the start of an edit and used as the [code]restore[/code] argument in [method _commit_subgizmos].
</description>
</method>
<method name="_is_handle_highlighted" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
- Returns [code]true[/code] if the handle at index [code]index[/code] is highlighted by being hovered with the mouse.
+ Override this method to return [code]true[/code] whenever the given handle should be highlighted in the editor.
</description>
</method>
<method name="_redraw" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
- This function is called when the [Node3D] this gizmo refers to changes (the [method Node3D.update_gizmo] is called).
+ Override this method to add all the gizmo elements whenever a gizmo update is requested. It's common to call [method clear] at the beginning of this method and then add visual elements depending on the node's properties.
</description>
</method>
<method name="_set_handle" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="camera" type="Camera3D">
- </argument>
- <argument index="2" name="point" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="camera" type="Camera3D" />
+ <argument index="2" name="point" type="Vector2" />
<description>
- This function is used when the user drags a gizmo handle (previously added with [method add_handles]) in screen coordinates.
- The [Camera3D] is also provided so screen coordinates can be converted to raycasts.
+ Override this method to update the node properties when the user drags a gizmo handle (previously added with [method add_handles]). The provided [code]point[/code] is the mouse position in screen coordinates and the [code]camera[/code] can be used to convert it to raycasts.
+ </description>
+ </method>
+ <method name="_set_subgizmo_transform" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="transform" type="Transform3D" />
+ <description>
+ Override this method to update the node properties during subgizmo editing (see [method _subgizmos_intersect_ray] and [method _subgizmos_intersect_frustum]). The [code]transform[/code] is given in the Node3D's local coordinate system.
+ </description>
+ </method>
+ <method name="_subgizmos_intersect_frustum" qualifiers="virtual">
+ <return type="PackedInt32Array" />
+ <argument index="0" name="camera" type="Camera3D" />
+ <argument index="1" name="frustum" type="Array" />
+ <description>
+ Override this method to allow selecting subgizmos using mouse drag box selection. Given a [code]camera[/code] and a [code]frustum[/code], this method should return which subgizmos are contained within the frustum. The [code]frustum[/code] argument consists of an [code]Array[/code] with all the [code]Plane[/code]s that make up the selection frustum. The returned value should contain a list of unique subgizmo identifiers, which can have any non-negative value and will be used in other virtual methods like [method _get_subgizmo_transform] or [method _commit_subgizmos].
+ </description>
+ </method>
+ <method name="_subgizmos_intersect_ray" qualifiers="virtual">
+ <return type="int" />
+ <argument index="0" name="camera" type="Camera3D" />
+ <argument index="1" name="point" type="Vector2" />
+ <description>
+ Override this method to allow selecting subgizmos using mouse clicks. Given a [code]camera[/code] and a [code]point[/code] in screen coordinates, this method should return which subgizmo should be selected. The returned value should be a unique subgizmo identifier, which can have any non-negative value and will be used in other virtual methods like [method _get_subgizmo_transform] or [method _commit_subgizmos].
</description>
</method>
<method name="add_collision_segments">
- <return type="void">
- </return>
- <argument index="0" name="segments" type="PackedVector3Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="segments" type="PackedVector3Array" />
<description>
- Adds the specified [code]segments[/code] to the gizmo's collision shape for picking. Call this function during [method _redraw].
+ Adds the specified [code]segments[/code] to the gizmo's collision shape for picking. Call this method during [method _redraw].
</description>
</method>
<method name="add_collision_triangles">
- <return type="void">
- </return>
- <argument index="0" name="triangles" type="TriangleMesh">
- </argument>
+ <return type="void" />
+ <argument index="0" name="triangles" type="TriangleMesh" />
<description>
- Adds collision triangles to the gizmo for picking. A [TriangleMesh] can be generated from a regular [Mesh] too. Call this function during [method _redraw].
+ Adds collision triangles to the gizmo for picking. A [TriangleMesh] can be generated from a regular [Mesh] too. Call this method during [method _redraw].
</description>
</method>
<method name="add_handles">
- <return type="void">
- </return>
- <argument index="0" name="handles" type="PackedVector3Array">
- </argument>
- <argument index="1" name="material" type="Material">
- </argument>
- <argument index="2" name="billboard" type="bool" default="false">
- </argument>
- <argument index="3" name="secondary" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="handles" type="PackedVector3Array" />
+ <argument index="1" name="material" type="Material" />
+ <argument index="2" name="ids" type="PackedInt32Array" />
+ <argument index="3" name="billboard" type="bool" default="false" />
+ <argument index="4" name="secondary" type="bool" default="false" />
<description>
- Adds a list of handles (points) which can be used to deform the object being edited.
- There are virtual functions which will be called upon editing of these handles. Call this function during [method _redraw].
+ Adds a list of handles (points) which can be used to edit the properties of the gizmo's Node3D. The [code]ids[/code] argument can be used to specify a custom identifier for each handle, if an empty [code]Array[/code] is passed, the ids will be assigned automatically from the [code]handles[/code] argument order.
+ There are virtual methods which will be called upon editing of these handles. Call this method during [method _redraw].
</description>
</method>
<method name="add_lines">
- <return type="void">
- </return>
- <argument index="0" name="lines" type="PackedVector3Array">
- </argument>
- <argument index="1" name="material" type="Material">
- </argument>
- <argument index="2" name="billboard" type="bool" default="false">
- </argument>
- <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="lines" type="PackedVector3Array" />
+ <argument index="1" name="material" type="Material" />
+ <argument index="2" name="billboard" type="bool" default="false" />
+ <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
<description>
- Adds lines to the gizmo (as sets of 2 points), with a given material. The lines are used for visualizing the gizmo. Call this function during [method _redraw].
+ Adds lines to the gizmo (as sets of 2 points), with a given material. The lines are used for visualizing the gizmo. Call this method during [method _redraw].
</description>
</method>
<method name="add_mesh">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="ArrayMesh">
- </argument>
- <argument index="1" name="billboard" type="bool" default="false">
- </argument>
- <argument index="2" name="skeleton" type="SkinReference" default="null">
- </argument>
- <argument index="3" name="material" type="Material" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="ArrayMesh" />
+ <argument index="1" name="material" type="Material" default="null" />
+ <argument index="2" name="transform" type="Transform3D" default="Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)" />
+ <argument index="3" name="skeleton" type="SkinReference" default="null" />
<description>
- Adds a mesh to the gizmo with the specified [code]billboard[/code] state, [code]skeleton[/code] and [code]material[/code]. If [code]billboard[/code] is [code]true[/code], the mesh will rotate to always face the camera. Call this function during [method _redraw].
+ Adds a mesh to the gizmo with the specified [code]material[/code], local [code]transform[/code] and [code]skeleton[/code]. Call this method during [method _redraw].
</description>
</method>
<method name="add_unscaled_billboard">
- <return type="void">
- </return>
- <argument index="0" name="material" type="Material">
- </argument>
- <argument index="1" name="default_scale" type="float" default="1">
- </argument>
- <argument index="2" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="material" type="Material" />
+ <argument index="1" name="default_scale" type="float" default="1" />
+ <argument index="2" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
<description>
- Adds an unscaled billboard for visualization. Call this function during [method _redraw].
+ Adds an unscaled billboard for visualization and selection. Call this method during [method _redraw].
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes everything in the gizmo including meshes, collisions and handles.
</description>
</method>
<method name="get_plugin" qualifiers="const">
- <return type="EditorNode3DGizmoPlugin">
- </return>
+ <return type="EditorNode3DGizmoPlugin" />
<description>
Returns the [EditorNode3DGizmoPlugin] that owns this gizmo. It's useful to retrieve materials using [method EditorNode3DGizmoPlugin.get_material].
</description>
</method>
<method name="get_spatial_node" qualifiers="const">
- <return type="Node3D">
- </return>
+ <return type="Node3D" />
<description>
Returns the Node3D node associated with this gizmo.
</description>
</method>
+ <method name="get_subgizmo_selection" qualifiers="const">
+ <return type="PackedInt32Array" />
+ <description>
+ Returns a list of the currently selected subgizmos. Can be used to highlight selected elements during [method _redraw].
+ </description>
+ </method>
+ <method name="is_subgizmo_selected" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="arg0" type="int" />
+ <description>
+ Returns [code]true[/code] if the given subgizmo is currently selected. Can be used to highlight selected elements during [method _redraw].
+ </description>
+ </method>
<method name="set_hidden">
- <return type="void">
- </return>
- <argument index="0" name="hidden" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="hidden" type="bool" />
<description>
Sets the gizmo's hidden state. If [code]true[/code], the gizmo will be hidden. If [code]false[/code], it will be shown.
</description>
</method>
<method name="set_spatial_node">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Node" />
<description>
Sets the reference [Node3D] node for the gizmo. [code]node[/code] must inherit from [Node3D].
</description>
diff --git a/doc/classes/EditorNode3DGizmoPlugin.xml b/doc/classes/EditorNode3DGizmoPlugin.xml
index 41c94cbbc6..fb72427a7a 100644
--- a/doc/classes/EditorNode3DGizmoPlugin.xml
+++ b/doc/classes/EditorNode3DGizmoPlugin.xml
@@ -11,188 +11,185 @@
</tutorials>
<methods>
<method name="_can_be_hidden" qualifiers="virtual">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
- Override this method to define whether the gizmo can be hidden or not. Returns [code]true[/code] if not overridden.
+ Override this method to define whether the gizmos handled by this plugin can be hidden or not. Returns [code]true[/code] if not overridden.
</description>
</method>
<method name="_commit_handle" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="gizmo" type="EditorNode3DGizmo">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
- <argument index="2" name="restore" type="Variant">
- </argument>
- <argument index="3" name="cancel" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="gizmo" type="EditorNode3DGizmo" />
+ <argument index="1" name="id" type="int" />
+ <argument index="2" name="restore" type="Variant" />
+ <argument index="3" name="cancel" type="bool" default="false" />
<description>
- Override this method to commit gizmo handles. Called for this plugin's active gizmos.
+ Override this method to commit a handle being edited (handles must have been previously added by [method EditorNode3DGizmo.add_handles] during [method _redraw]). This usually means creating an [UndoRedo] action for the change, using the current handle value as "do" and the [code]restore[/code] argument as "undo".
+ If the [code]cancel[/code] argument is [code]true[/code], the [code]restore[/code] value should be directly set, without any [UndoRedo] action. Called for this plugin's active gizmos.
+ </description>
+ </method>
+ <method name="_commit_subgizmos" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="gizmo" type="EditorNode3DGizmo" />
+ <argument index="1" name="ids" type="PackedInt32Array" />
+ <argument index="2" name="restore" type="Array" />
+ <argument index="3" name="cancel" type="bool" default="false" />
+ <description>
+ Override this method to commit a group of subgizmos being edited (see [method _subgizmos_intersect_ray] and [method _subgizmos_intersect_frustum]). This usually means creating an [UndoRedo] action for the change, using the current transforms as "do" and the [code]restore[/code] transforms as "undo".
+ If the [code]cancel[/code] argument is [code]true[/code], the [code]restore[/code] transforms should be directly set, without any [UndoRedo] action. As with all subgizmo methods, transforms are given in local space respect to the gizmo's Node3D. Called for this plugin's active gizmos.
</description>
</method>
<method name="_create_gizmo" qualifiers="virtual">
- <return type="EditorNode3DGizmo">
- </return>
- <argument index="0" name="spatial" type="Node3D">
- </argument>
+ <return type="EditorNode3DGizmo" />
+ <argument index="0" name="spatial" type="Node3D" />
<description>
Override this method to return a custom [EditorNode3DGizmo] for the spatial nodes of your choice, return [code]null[/code] for the rest of nodes. See also [method _has_gizmo].
</description>
</method>
<method name="_get_gizmo_name" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Override this method to provide the name that will appear in the gizmo visibility menu.
</description>
</method>
<method name="_get_handle_name" qualifiers="virtual">
- <return type="String">
- </return>
- <argument index="0" name="gizmo" type="EditorNode3DGizmo">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="gizmo" type="EditorNode3DGizmo" />
+ <argument index="1" name="id" type="int" />
<description>
Override this method to provide gizmo's handle names. Called for this plugin's active gizmos.
</description>
</method>
<method name="_get_handle_value" qualifiers="virtual">
- <return type="Variant">
- </return>
- <argument index="0" name="gizmo" type="EditorNode3DGizmo">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="gizmo" type="EditorNode3DGizmo" />
+ <argument index="1" name="id" type="int" />
<description>
- Gets actual value of a handle from gizmo. Called for this plugin's active gizmos.
+ Override this method to return the current value of a handle. This value will be requested at the start of an edit and used as the [code]restore[/code] argument in [method _commit_handle]. Called for this plugin's active gizmos.
</description>
</method>
<method name="_get_priority" qualifiers="virtual">
- <return type="int">
- </return>
+ <return type="int" />
+ <description>
+ Override this method to set the gizmo's priority. Gizmos with higher priority will have precedence when processing inputs like handles or subgizmos selection.
+ All built-in editor gizmos return a priority of [code]-1[/code]. If not overridden, this method will return [code]0[/code], which means custom gizmos will automatically get higher priority than built-in gizmos.
+ </description>
+ </method>
+ <method name="_get_subgizmo_transform" qualifiers="virtual">
+ <return type="Transform3D" />
+ <argument index="0" name="gizmo" type="EditorNode3DGizmo" />
+ <argument index="1" name="id" type="int" />
<description>
- Override this method to set the gizmo's priority. Higher values correspond to higher priority. If a gizmo with higher priority conflicts with another gizmo, only the gizmo with higher priority will be used.
- All built-in editor gizmos return a priority of [code]-1[/code]. If not overridden, this method will return [code]0[/code], which means custom gizmos will automatically override built-in gizmos.
+ Override this method to return the current transform of a subgizmo. As with all subgizmo methods, the transform should be in local space respect to the gizmo's Node3D. This transform will be requested at the start of an edit and used in the [code]restore[/code] argument in [method _commit_subgizmos]. Called for this plugin's active gizmos.
</description>
</method>
<method name="_has_gizmo" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="spatial" type="Node3D">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="spatial" type="Node3D" />
<description>
Override this method to define which Node3D nodes have a gizmo from this plugin. Whenever a [Node3D] node is added to a scene this method is called, if it returns [code]true[/code] the node gets a generic [EditorNode3DGizmo] assigned and is added to this plugin's list of active gizmos.
</description>
</method>
<method name="_is_handle_highlighted" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="gizmo" type="EditorNode3DGizmo">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="gizmo" type="EditorNode3DGizmo" />
+ <argument index="1" name="id" type="int" />
<description>
- Gets whether a handle is highlighted or not. Called for this plugin's active gizmos.
+ Override this method to return [code]true[/code] whenever to given handle should be highlighted in the editor. Called for this plugin's active gizmos.
</description>
</method>
<method name="_is_selectable_when_hidden" qualifiers="virtual">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Override this method to define whether Node3D with this gizmo should be selectable even when the gizmo is hidden.
</description>
</method>
<method name="_redraw" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="gizmo" type="EditorNode3DGizmo">
- </argument>
+ <return type="void" />
+ <argument index="0" name="gizmo" type="EditorNode3DGizmo" />
<description>
- Callback to redraw the provided gizmo. Called for this plugin's active gizmos.
+ Override this method to add all the gizmo elements whenever a gizmo update is requested. It's common to call [method EditorNode3DGizmo.clear] at the beginning of this method and then add visual elements depending on the node's properties.
</description>
</method>
<method name="_set_handle" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="gizmo" type="EditorNode3DGizmo">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
- <argument index="2" name="camera" type="Camera3D">
- </argument>
- <argument index="3" name="point" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="gizmo" type="EditorNode3DGizmo" />
+ <argument index="1" name="id" type="int" />
+ <argument index="2" name="camera" type="Camera3D" />
+ <argument index="3" name="point" type="Vector2" />
+ <description>
+ Override this method to update the node's properties when the user drags a gizmo handle (previously added with [method EditorNode3DGizmo.add_handles]). The provided [code]point[/code] is the mouse position in screen coordinates and the [code]camera[/code] can be used to convert it to raycasts. Called for this plugin's active gizmos.
+ </description>
+ </method>
+ <method name="_set_subgizmo_transform" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="gizmo" type="EditorNode3DGizmo" />
+ <argument index="1" name="id" type="int" />
+ <argument index="2" name="transform" type="Transform3D" />
+ <description>
+ Override this method to update the node properties during subgizmo editing (see [method _subgizmos_intersect_ray] and [method _subgizmos_intersect_frustum]). The [code]transform[/code] is given in the Node3D's local coordinate system. Called for this plugin's active gizmos.
+ </description>
+ </method>
+ <method name="_subgizmos_intersect_frustum" qualifiers="virtual">
+ <return type="PackedInt32Array" />
+ <argument index="0" name="gizmo" type="EditorNode3DGizmo" />
+ <argument index="1" name="camera" type="Camera3D" />
+ <argument index="2" name="frustum" type="Array" />
+ <description>
+ Override this method to allow selecting subgizmos using mouse drag box selection. Given a [code]camera[/code] and a [code]frustum[/code], this method should return which subgizmos are contained within the frustum. The [code]frustum[/code] argument consists of an [code]Array[/code] with all the [code]Plane[/code]s that make up the selection frustum. The returned value should contain a list of unique subgizmo identifiers, these identifiers can have any non-negative value and will be used in other virtual methods like [method _get_subgizmo_transform] or [method _commit_subgizmos]. Called for this plugin's active gizmos.
+ </description>
+ </method>
+ <method name="_subgizmos_intersect_ray" qualifiers="virtual">
+ <return type="int" />
+ <argument index="0" name="gizmo" type="EditorNode3DGizmo" />
+ <argument index="1" name="camera" type="Camera3D" />
+ <argument index="2" name="point" type="Vector2" />
<description>
- Update the value of a handle after it has been updated. Called for this plugin's active gizmos.
+ Override this method to allow selecting subgizmos using mouse clicks. Given a [code]camera[/code] and a [code]point[/code] in screen coordinates, this method should return which subgizmo should be selected. The returned value should be a unique subgizmo identifier, which can have any non-negative value and will be used in other virtual methods like [method _get_subgizmo_transform] or [method _commit_subgizmos]. Called for this plugin's active gizmos.
</description>
</method>
<method name="add_material">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="material" type="StandardMaterial3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="material" type="StandardMaterial3D" />
<description>
Adds a new material to the internal material list for the plugin. It can then be accessed with [method get_material]. Should not be overridden.
</description>
</method>
<method name="create_handle_material">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="billboard" type="bool" default="false">
- </argument>
- <argument index="2" name="texture" type="Texture2D" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="billboard" type="bool" default="false" />
+ <argument index="2" name="texture" type="Texture2D" default="null" />
<description>
Creates a handle material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorNode3DGizmo.add_handles]. Should not be overridden.
You can optionally provide a texture to use instead of the default icon.
</description>
</method>
<method name="create_icon_material">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
- <argument index="2" name="on_top" type="bool" default="false">
- </argument>
- <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="texture" type="Texture2D" />
+ <argument index="2" name="on_top" type="bool" default="false" />
+ <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Creates an icon material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorNode3DGizmo.add_unscaled_billboard]. Should not be overridden.
</description>
</method>
<method name="create_material">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
- <argument index="2" name="billboard" type="bool" default="false">
- </argument>
- <argument index="3" name="on_top" type="bool" default="false">
- </argument>
- <argument index="4" name="use_vertex_color" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="color" type="Color" />
+ <argument index="2" name="billboard" type="bool" default="false" />
+ <argument index="3" name="on_top" type="bool" default="false" />
+ <argument index="4" name="use_vertex_color" type="bool" default="false" />
<description>
Creates an unshaded material with its variants (selected and/or editable) and adds them to the internal material list. They can then be accessed with [method get_material] and used in [method EditorNode3DGizmo.add_mesh] and [method EditorNode3DGizmo.add_lines]. Should not be overridden.
</description>
</method>
<method name="get_material">
- <return type="StandardMaterial3D">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="gizmo" type="EditorNode3DGizmo" default="null">
- </argument>
+ <return type="StandardMaterial3D" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="gizmo" type="EditorNode3DGizmo" default="null" />
<description>
Gets material from the internal list of materials. If an [EditorNode3DGizmo] is provided, it will try to get the corresponding variant (selected and/or editable).
</description>
diff --git a/doc/classes/EditorPaths.xml b/doc/classes/EditorPaths.xml
index d0d785dbb8..28a8314857 100644
--- a/doc/classes/EditorPaths.xml
+++ b/doc/classes/EditorPaths.xml
@@ -8,32 +8,27 @@
</tutorials>
<methods>
<method name="get_cache_dir" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
<method name="get_config_dir" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
<method name="get_data_dir" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
<method name="get_self_contained_file" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
<method name="is_self_contained" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml
index 753227513b..37efca7f48 100644
--- a/doc/classes/EditorPlugin.xml
+++ b/doc/classes/EditorPlugin.xml
@@ -11,56 +11,47 @@
</tutorials>
<methods>
<method name="_apply_changes" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
This method is called when the editor is about to save the project, switch to another tab, etc. It asks the plugin to apply any pending state changes to ensure consistency.
This is used, for example, in shader editors to let the plugin know that it must apply the shader code being written by the user to the object.
</description>
</method>
<method name="_build" qualifiers="virtual">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
This method is called when the editor is about to run the project. The plugin can then perform required operations before the project runs.
This method must return a boolean. If this method returns [code]false[/code], the project will not run. The run is aborted immediately, so this also prevents all other plugins' [method _build] methods from running.
</description>
</method>
<method name="_clear" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clear all the state and reset the object being edited to zero. This ensures your plugin does not keep editing a currently existing node, or a node from the wrong scene.
</description>
</method>
<method name="_disable_plugin" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Called by the engine when the user disables the [EditorPlugin] in the Plugin tab of the project settings window.
</description>
</method>
<method name="_edit" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="object" type="Object" />
<description>
This function is used for plugins that edit specific object types (nodes or resources). It requests the editor to edit the given object.
</description>
</method>
<method name="_enable_plugin" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Called by the engine when the user enables the [EditorPlugin] in the Plugin tab of the project settings window.
</description>
</method>
<method name="_forward_canvas_draw_over_viewport" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="overlay" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="overlay" type="Control" />
<description>
Called by the engine when the 2D editor's viewport is updated. Use the [code]overlay[/code] [Control] for drawing. You can update the viewport manually by calling [method update_overlays].
[codeblocks]
@@ -97,20 +88,16 @@
</description>
</method>
<method name="_forward_canvas_force_draw_over_viewport" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="overlay" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="overlay" type="Control" />
<description>
This method is the same as [method _forward_canvas_draw_over_viewport], except it draws on top of everything. Useful when you need an extra layer that shows over anything else.
You need to enable calling of this method by using [method set_force_draw_over_forwarding_enabled].
</description>
</method>
<method name="_forward_canvas_gui_input" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="event" type="InputEvent">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="event" type="InputEvent" />
<description>
Called when there is a root node in the current edited scene, [method _handles] is implemented and an [InputEvent] happens in the 2D viewport. Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] consumes the [code]event[/code], otherwise forwards [code]event[/code] to other Editor classes. Example:
[codeblocks]
@@ -145,10 +132,8 @@
</description>
</method>
<method name="_forward_spatial_draw_over_viewport" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="overlay" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="overlay" type="Control" />
<description>
Called by the engine when the 3D editor's viewport is updated. Use the [code]overlay[/code] [Control] for drawing. You can update the viewport manually by calling [method update_overlays].
[codeblocks]
@@ -185,22 +170,17 @@
</description>
</method>
<method name="_forward_spatial_force_draw_over_viewport" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="overlay" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="overlay" type="Control" />
<description>
This method is the same as [method _forward_spatial_draw_over_viewport], except it draws on top of everything. Useful when you need an extra layer that shows over anything else.
You need to enable calling of this method by using [method set_force_draw_over_forwarding_enabled].
</description>
</method>
<method name="_forward_spatial_gui_input" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="camera" type="Camera3D">
- </argument>
- <argument index="1" name="event" type="InputEvent">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="camera" type="Camera3D" />
+ <argument index="1" name="event" type="InputEvent" />
<description>
Called when there is a root node in the current edited scene, [method _handles] is implemented and an [InputEvent] happens in the 3D viewport. Intercepts the [InputEvent], if [code]return true[/code] [EditorPlugin] consumes the [code]event[/code], otherwise forwards [code]event[/code] to other Editor classes. Example:
[codeblocks]
@@ -235,15 +215,13 @@
</description>
</method>
<method name="_get_breakpoints" qualifiers="virtual">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
This is for editors that edit script-based objects. You can return a list of breakpoints in the format ([code]script:line[/code]), for example: [code]res://path_to_script.gd:25[/code].
</description>
</method>
<method name="_get_plugin_icon" qualifiers="virtual">
- <return type="Texture2D">
- </return>
+ <return type="Texture2D" />
<description>
Override this method in your plugin to return a [Texture2D] in order to give it an icon.
For main screen plugins, this appears at the top of the screen, to the right of the "2D", "3D", "Script", and "AssetLib" buttons.
@@ -269,109 +247,86 @@
</description>
</method>
<method name="_get_plugin_name" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Override this method in your plugin to provide the name of the plugin when displayed in the Godot editor.
For main screen plugins, this appears at the top of the screen, to the right of the "2D", "3D", "Script", and "AssetLib" buttons.
</description>
</method>
<method name="_get_state" qualifiers="virtual">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Gets the state of your plugin editor. This is used when saving the scene (so state is kept when opening it again) and for switching tabs (so state can be restored when the tab returns).
</description>
</method>
<method name="_get_window_layout" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="layout" type="ConfigFile">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layout" type="ConfigFile" />
<description>
Gets the GUI layout of the plugin. This is used to save the project's editor layout when [method queue_save_layout] is called or the editor layout was changed(For example changing the position of a dock).
</description>
</method>
<method name="_handles" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="object" type="Object" />
<description>
Implement this function if your plugin edits a specific type of object (Resource or Node). If you return [code]true[/code], then you will get the functions [method _edit] and [method _make_visible] called when the editor requests them. If you have declared the methods [method _forward_canvas_gui_input] and [method _forward_spatial_gui_input] these will be called too.
</description>
</method>
<method name="_has_main_screen" qualifiers="virtual">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this is a main screen editor plugin (it goes in the workspace selector together with [b]2D[/b], [b]3D[/b], [b]Script[/b] and [b]AssetLib[/b]).
</description>
</method>
<method name="_make_visible" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="visible" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="visible" type="bool" />
<description>
This function will be called when the editor is requested to become visible. It is used for plugins that edit a specific object type.
Remember that you have to manage the visibility of all your editor controls manually.
</description>
</method>
<method name="_save_external_data" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
This method is called after the editor saves the project or when it's closed. It asks the plugin to save edited external scenes/resources.
</description>
</method>
<method name="_set_state" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="state" type="Dictionary">
- </argument>
+ <return type="void" />
+ <argument index="0" name="state" type="Dictionary" />
<description>
Restore the state saved by [method _get_state].
</description>
</method>
<method name="_set_window_layout" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="layout" type="ConfigFile">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layout" type="ConfigFile" />
<description>
Restore the plugin GUI layout saved by [method _get_window_layout].
</description>
</method>
<method name="add_autoload_singleton">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="path" type="String" />
<description>
Adds a script at [code]path[/code] to the Autoload list as [code]name[/code].
</description>
</method>
<method name="add_control_to_bottom_panel">
- <return type="Button">
- </return>
- <argument index="0" name="control" type="Control">
- </argument>
- <argument index="1" name="title" type="String">
- </argument>
+ <return type="Button" />
+ <argument index="0" name="control" type="Control" />
+ <argument index="1" name="title" type="String" />
<description>
Adds a control to the bottom panel (together with Output, Debug, Animation, etc). Returns a reference to the button added. It's up to you to hide/show the button when needed. When your plugin is deactivated, make sure to remove your custom control with [method remove_control_from_bottom_panel] and free it with [method Node.queue_free].
</description>
</method>
<method name="add_control_to_container">
- <return type="void">
- </return>
- <argument index="0" name="container" type="int" enum="EditorPlugin.CustomControlContainer">
- </argument>
- <argument index="1" name="control" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="container" type="int" enum="EditorPlugin.CustomControlContainer" />
+ <argument index="1" name="control" type="Control" />
<description>
Adds a custom control to a container (see [enum CustomControlContainer]). There are many locations where custom controls can be added in the editor UI.
Please remember that you have to manage the visibility of your custom controls yourself (and likely hide it after adding it).
@@ -379,12 +334,9 @@
</description>
</method>
<method name="add_control_to_dock">
- <return type="void">
- </return>
- <argument index="0" name="slot" type="int" enum="EditorPlugin.DockSlot">
- </argument>
- <argument index="1" name="control" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="slot" type="int" enum="EditorPlugin.DockSlot" />
+ <argument index="1" name="control" type="Control" />
<description>
Adds the control to a specific dock slot (see [enum DockSlot] for options).
If the dock is repositioned and as long as the plugin is active, the editor will save the dock position on further sessions.
@@ -392,47 +344,36 @@
</description>
</method>
<method name="add_custom_type">
- <return type="void">
- </return>
- <argument index="0" name="type" type="String">
- </argument>
- <argument index="1" name="base" type="String">
- </argument>
- <argument index="2" name="script" type="Script">
- </argument>
- <argument index="3" name="icon" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="String" />
+ <argument index="1" name="base" type="String" />
+ <argument index="2" name="script" type="Script" />
+ <argument index="3" name="icon" type="Texture2D" />
<description>
Adds a custom type, which will appear in the list of nodes or resources. An icon can be optionally passed.
- When given node or resource is selected, the base type will be instantiated (e.g. "Node3D", "Control", "Resource"), then the script will be loaded and set to this object.
+ When a given node or resource is selected, the base type will be instantiated (e.g. "Node3D", "Control", "Resource"), then the script will be loaded and set to this object.
You can use the virtual method [method _handles] to check if your custom object is being edited by checking the script or using the [code]is[/code] keyword.
During run-time, this will be a simple object with a script so this function does not need to be called then.
</description>
</method>
<method name="add_debugger_plugin">
- <return type="void">
- </return>
- <argument index="0" name="script" type="Script">
- </argument>
+ <return type="void" />
+ <argument index="0" name="script" type="Script" />
<description>
Adds a [Script] as debugger plugin to the Debugger. The script must extend [EditorDebuggerPlugin].
</description>
</method>
<method name="add_export_plugin">
- <return type="void">
- </return>
- <argument index="0" name="plugin" type="EditorExportPlugin">
- </argument>
+ <return type="void" />
+ <argument index="0" name="plugin" type="EditorExportPlugin" />
<description>
Registers a new [EditorExportPlugin]. Export plugins are used to perform tasks when the project is being exported.
See [method add_inspector_plugin] for an example of how to register a plugin.
</description>
</method>
<method name="add_import_plugin">
- <return type="void">
- </return>
- <argument index="0" name="importer" type="EditorImportPlugin">
- </argument>
+ <return type="void" />
+ <argument index="0" name="importer" type="EditorImportPlugin" />
<description>
Registers a new [EditorImportPlugin]. Import plugins are used to import custom and unsupported assets as a custom [Resource] type.
[b]Note:[/b] If you want to import custom 3D asset formats use [method add_scene_import_plugin] instead.
@@ -440,10 +381,8 @@
</description>
</method>
<method name="add_inspector_plugin">
- <return type="void">
- </return>
- <argument index="0" name="plugin" type="EditorInspectorPlugin">
- </argument>
+ <return type="void" />
+ <argument index="0" name="plugin" type="EditorInspectorPlugin" />
<description>
Registers a new [EditorInspectorPlugin]. Inspector plugins are used to extend [EditorInspector] and provide custom configuration tools for your object's properties.
[b]Note:[/b] Always use [method remove_inspector_plugin] to remove the registered [EditorInspectorPlugin] when your [EditorPlugin] is disabled to prevent leaks and an unexpected behavior.
@@ -462,255 +401,202 @@
</description>
</method>
<method name="add_scene_import_plugin">
- <return type="void">
- </return>
- <argument index="0" name="scene_importer" type="EditorSceneImporter">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scene_importer" type="EditorSceneImporter" />
<description>
Registers a new [EditorSceneImporter]. Scene importers are used to import custom 3D asset formats as scenes.
</description>
</method>
<method name="add_spatial_gizmo_plugin">
- <return type="void">
- </return>
- <argument index="0" name="plugin" type="EditorNode3DGizmoPlugin">
- </argument>
+ <return type="void" />
+ <argument index="0" name="plugin" type="EditorNode3DGizmoPlugin" />
<description>
Registers a new [EditorNode3DGizmoPlugin]. Gizmo plugins are used to add custom gizmos to the 3D preview viewport for a [Node3D].
See [method add_inspector_plugin] for an example of how to register a plugin.
</description>
</method>
<method name="add_tool_menu_item">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="callable" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="callable" type="Callable" />
<description>
Adds a custom menu item to [b]Project &gt; Tools[/b] named [code]name[/code]. When clicked, the provided [code]callable[/code] will be called.
</description>
</method>
<method name="add_tool_submenu_item">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="submenu" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="submenu" type="Object" />
<description>
Adds a custom submenu under [b]Project &gt; Tools &gt;[/b] [code]name[/code]. [code]submenu[/code] should be an object of class [PopupMenu]. Use [code]remove_tool_menu_item(name)[/code] on plugin clean up to remove the menu.
</description>
</method>
<method name="add_translation_parser_plugin">
- <return type="void">
- </return>
- <argument index="0" name="parser" type="EditorTranslationParserPlugin">
- </argument>
+ <return type="void" />
+ <argument index="0" name="parser" type="EditorTranslationParserPlugin" />
<description>
Registers a custom translation parser plugin for extracting translatable strings from custom files.
</description>
</method>
<method name="add_undo_redo_inspector_hook_callback">
- <return type="void">
- </return>
- <argument index="0" name="callable" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="callable" type="Callable" />
<description>
Hooks a callback into the undo/redo action creation when a property is modified in the inspector. This allows, for example, to save other properties that may be lost when a given property is modified.
The callback should have 4 arguments: [Object] [code]undo_redo[/code], [Object] [code]modified_object[/code], [String] [code]property[/code] and [Variant] [code]new_value[/code]. They are, respectively, the [UndoRedo] object used by the inspector, the currently modified object, the name of the modified property and the new value the property is about to take.
</description>
</method>
<method name="get_editor_interface">
- <return type="EditorInterface">
- </return>
+ <return type="EditorInterface" />
<description>
Returns the [EditorInterface] object that gives you control over Godot editor's window and its functionalities.
</description>
</method>
<method name="get_script_create_dialog">
- <return type="ScriptCreateDialog">
- </return>
+ <return type="ScriptCreateDialog" />
<description>
Gets the Editor's dialogue used for making scripts.
[b]Note:[/b] Users can configure it before use.
</description>
</method>
<method name="get_undo_redo">
- <return type="UndoRedo">
- </return>
+ <return type="UndoRedo" />
<description>
Gets the undo/redo object. Most actions in the editor can be undoable, so use this object to make sure this happens when it's worth it.
</description>
</method>
<method name="hide_bottom_panel">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Minimizes the bottom panel.
</description>
</method>
<method name="make_bottom_panel_item_visible">
- <return type="void">
- </return>
- <argument index="0" name="item" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="Control" />
<description>
Makes a specific item in the bottom panel visible.
</description>
</method>
<method name="queue_save_layout">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Queue save the project's editor layout.
</description>
</method>
<method name="remove_autoload_singleton">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
<description>
Removes an Autoload [code]name[/code] from the list.
</description>
</method>
<method name="remove_control_from_bottom_panel">
- <return type="void">
- </return>
- <argument index="0" name="control" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="control" type="Control" />
<description>
Removes the control from the bottom panel. You have to manually [method Node.queue_free] the control.
</description>
</method>
<method name="remove_control_from_container">
- <return type="void">
- </return>
- <argument index="0" name="container" type="int" enum="EditorPlugin.CustomControlContainer">
- </argument>
- <argument index="1" name="control" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="container" type="int" enum="EditorPlugin.CustomControlContainer" />
+ <argument index="1" name="control" type="Control" />
<description>
Removes the control from the specified container. You have to manually [method Node.queue_free] the control.
</description>
</method>
<method name="remove_control_from_docks">
- <return type="void">
- </return>
- <argument index="0" name="control" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="control" type="Control" />
<description>
Removes the control from the dock. You have to manually [method Node.queue_free] the control.
</description>
</method>
<method name="remove_custom_type">
- <return type="void">
- </return>
- <argument index="0" name="type" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="String" />
<description>
Removes a custom type added by [method add_custom_type].
</description>
</method>
<method name="remove_debugger_plugin">
- <return type="void">
- </return>
- <argument index="0" name="script" type="Script">
- </argument>
+ <return type="void" />
+ <argument index="0" name="script" type="Script" />
<description>
Removes the debugger plugin with given script from the Debugger.
</description>
</method>
<method name="remove_export_plugin">
- <return type="void">
- </return>
- <argument index="0" name="plugin" type="EditorExportPlugin">
- </argument>
+ <return type="void" />
+ <argument index="0" name="plugin" type="EditorExportPlugin" />
<description>
Removes an export plugin registered by [method add_export_plugin].
</description>
</method>
<method name="remove_import_plugin">
- <return type="void">
- </return>
- <argument index="0" name="importer" type="EditorImportPlugin">
- </argument>
+ <return type="void" />
+ <argument index="0" name="importer" type="EditorImportPlugin" />
<description>
Removes an import plugin registered by [method add_import_plugin].
</description>
</method>
<method name="remove_inspector_plugin">
- <return type="void">
- </return>
- <argument index="0" name="plugin" type="EditorInspectorPlugin">
- </argument>
+ <return type="void" />
+ <argument index="0" name="plugin" type="EditorInspectorPlugin" />
<description>
Removes an inspector plugin registered by [method add_import_plugin]
</description>
</method>
<method name="remove_scene_import_plugin">
- <return type="void">
- </return>
- <argument index="0" name="scene_importer" type="EditorSceneImporter">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scene_importer" type="EditorSceneImporter" />
<description>
Removes a scene importer registered by [method add_scene_import_plugin].
</description>
</method>
<method name="remove_spatial_gizmo_plugin">
- <return type="void">
- </return>
- <argument index="0" name="plugin" type="EditorNode3DGizmoPlugin">
- </argument>
+ <return type="void" />
+ <argument index="0" name="plugin" type="EditorNode3DGizmoPlugin" />
<description>
Removes a gizmo plugin registered by [method add_spatial_gizmo_plugin].
</description>
</method>
<method name="remove_tool_menu_item">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
<description>
Removes a menu [code]name[/code] from [b]Project &gt; Tools[/b].
</description>
</method>
<method name="remove_translation_parser_plugin">
- <return type="void">
- </return>
- <argument index="0" name="parser" type="EditorTranslationParserPlugin">
- </argument>
+ <return type="void" />
+ <argument index="0" name="parser" type="EditorTranslationParserPlugin" />
<description>
Removes a custom translation parser plugin registered by [method add_translation_parser_plugin].
</description>
</method>
<method name="remove_undo_redo_inspector_hook_callback">
- <return type="void">
- </return>
- <argument index="0" name="callable" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="callable" type="Callable" />
<description>
Removes a callback previsously added by [method add_undo_redo_inspector_hook_callback].
</description>
</method>
<method name="set_force_draw_over_forwarding_enabled">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Enables calling of [method _forward_canvas_force_draw_over_viewport] for the 2D editor and [method _forward_spatial_force_draw_over_viewport] for the 3D editor when their viewports are updated. You need to call this method only once and it will work permanently for this plugin.
</description>
</method>
<method name="set_input_event_forwarding_always_enabled">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Use this method if you always want to receive inputs from 3D view screen inside [method _forward_spatial_gui_input]. It might be especially usable if your plugin will want to use raycast in the scene.
</description>
</method>
<method name="update_overlays" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Updates the overlays of the 2D and 3D editor viewport. Causes methods [method _forward_canvas_draw_over_viewport], [method _forward_canvas_force_draw_over_viewport], [method _forward_spatial_draw_over_viewport] and [method _forward_spatial_force_draw_over_viewport] to be called.
</description>
@@ -718,8 +604,7 @@
</methods>
<signals>
<signal name="main_screen_changed">
- <argument index="0" name="screen_name" type="String">
- </argument>
+ <argument index="0" name="screen_name" type="String" />
<description>
Emitted when user changes the workspace ([b]2D[/b], [b]3D[/b], [b]Script[/b], [b]AssetLib[/b]). Also works with custom screens defined by plugins.
</description>
@@ -729,21 +614,18 @@
</description>
</signal>
<signal name="resource_saved">
- <argument index="0" name="resource" type="Resource">
- </argument>
+ <argument index="0" name="resource" type="Resource" />
<description>
</description>
</signal>
<signal name="scene_changed">
- <argument index="0" name="scene_root" type="Node">
- </argument>
+ <argument index="0" name="scene_root" type="Node" />
<description>
Emitted when the scene is changed in the editor. The argument will return the root node of the scene that has just become active. If this scene is new and empty, the argument will be [code]null[/code].
</description>
</signal>
<signal name="scene_closed">
- <argument index="0" name="filepath" type="String">
- </argument>
+ <argument index="0" name="filepath" type="String" />
<description>
Emitted when user closes a scene. The argument is file path to a closed scene.
</description>
diff --git a/doc/classes/EditorProperty.xml b/doc/classes/EditorProperty.xml
index 549d2c1628..41f42568ad 100644
--- a/doc/classes/EditorProperty.xml
+++ b/doc/classes/EditorProperty.xml
@@ -10,62 +10,49 @@
</tutorials>
<methods>
<method name="_update_property" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
When this virtual function is called, you must update your editor.
</description>
</method>
<method name="add_focusable">
- <return type="void">
- </return>
- <argument index="0" name="control" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="control" type="Control" />
<description>
If any of the controls added can gain keyboard focus, add it here. This ensures that focus will be restored if the inspector is refreshed.
</description>
</method>
<method name="emit_changed">
- <return type="void">
- </return>
- <argument index="0" name="property" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
- <argument index="2" name="field" type="StringName" default="&amp;&quot;&quot;">
- </argument>
- <argument index="3" name="changing" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="property" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
+ <argument index="2" name="field" type="StringName" default="&amp;&quot;&quot;" />
+ <argument index="3" name="changing" type="bool" default="false" />
<description>
If one or several properties have changed, this must be called. [code]field[/code] is used in case your editor can modify fields separately (as an example, Vector3.x). The [code]changing[/code] argument avoids the editor requesting this property to be refreshed (leave as [code]false[/code] if unsure).
</description>
</method>
<method name="get_edited_object">
- <return type="Object">
- </return>
+ <return type="Object" />
<description>
Gets the edited object.
</description>
</method>
<method name="get_edited_property">
- <return type="StringName">
- </return>
+ <return type="StringName" />
<description>
Gets the edited property. If your editor is for a single property (added via [method EditorInspectorPlugin._parse_property]), then this will return the property.
</description>
</method>
<method name="get_tooltip_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Override if you want to allow a custom tooltip over your property.
</description>
</method>
<method name="set_bottom_editor">
- <return type="void">
- </return>
- <argument index="0" name="editor" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="editor" type="Control" />
<description>
Adds controls with this function if you want them on the bottom (below the label).
</description>
@@ -96,78 +83,62 @@
</members>
<signals>
<signal name="multiple_properties_changed">
- <argument index="0" name="properties" type="PackedStringArray">
- </argument>
- <argument index="1" name="value" type="Array">
- </argument>
+ <argument index="0" name="properties" type="PackedStringArray" />
+ <argument index="1" name="value" type="Array" />
<description>
Emit it if you want multiple properties modified at the same time. Do not use if added via [method EditorInspectorPlugin._parse_property].
</description>
</signal>
<signal name="object_id_selected">
- <argument index="0" name="property" type="StringName">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <argument index="0" name="property" type="StringName" />
+ <argument index="1" name="id" type="int" />
<description>
Used by sub-inspectors. Emit it if what was selected was an Object ID.
</description>
</signal>
<signal name="property_changed">
- <argument index="0" name="property" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <argument index="0" name="property" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
Do not emit this manually, use the [method emit_changed] method instead.
</description>
</signal>
<signal name="property_checked">
- <argument index="0" name="property" type="StringName">
- </argument>
- <argument index="1" name="bool" type="String">
- </argument>
+ <argument index="0" name="property" type="StringName" />
+ <argument index="1" name="bool" type="String" />
<description>
Emitted when a property was checked. Used internally.
</description>
</signal>
<signal name="property_deleted">
- <argument index="0" name="property" type="StringName">
- </argument>
+ <argument index="0" name="property" type="StringName" />
<description>
Emitted when a property was deleted. Used internally.
</description>
</signal>
<signal name="property_keyed">
- <argument index="0" name="property" type="StringName">
- </argument>
+ <argument index="0" name="property" type="StringName" />
<description>
Emit it if you want to add this value as an animation key (check for keying being enabled first).
</description>
</signal>
<signal name="property_keyed_with_value">
- <argument index="0" name="property" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <argument index="0" name="property" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
Emit it if you want to key a property with a single value.
</description>
</signal>
<signal name="resource_selected">
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="resource" type="Resource">
- </argument>
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="resource" type="Resource" />
<description>
If you want a sub-resource to be edited, emit this signal with the resource.
</description>
</signal>
<signal name="selected">
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="focusable_idx" type="int">
- </argument>
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="focusable_idx" type="int" />
<description>
Emitted when selected. Used internally.
</description>
diff --git a/doc/classes/EditorResourceConversionPlugin.xml b/doc/classes/EditorResourceConversionPlugin.xml
index 1d7e98c99d..3de508c88d 100644
--- a/doc/classes/EditorResourceConversionPlugin.xml
+++ b/doc/classes/EditorResourceConversionPlugin.xml
@@ -8,16 +8,13 @@
</tutorials>
<methods>
<method name="_convert" qualifiers="virtual">
- <return type="Resource">
- </return>
- <argument index="0" name="resource" type="Resource">
- </argument>
+ <return type="Resource" />
+ <argument index="0" name="resource" type="Resource" />
<description>
</description>
</method>
<method name="_converts_to" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
diff --git a/doc/classes/EditorResourcePicker.xml b/doc/classes/EditorResourcePicker.xml
index 0029955819..a0f2df1f0c 100644
--- a/doc/classes/EditorResourcePicker.xml
+++ b/doc/classes/EditorResourcePicker.xml
@@ -11,36 +11,29 @@
</tutorials>
<methods>
<method name="_handle_menu_selected" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
<description>
This virtual method can be implemented to handle context menu items not handled by default. See [method _set_create_options].
</description>
</method>
<method name="_set_create_options" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="menu_node" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="menu_node" type="Object" />
<description>
This virtual method is called when updating the context menu of [EditorResourcePicker]. Implement this method to override the "New ..." items with your own options. [code]menu_node[/code] is a reference to the [PopupMenu] node.
[b]Note:[/b] Implement [method _handle_menu_selected] to handle these custom items.
</description>
</method>
<method name="get_allowed_types" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns a list of all allowed types and subtypes corresponding to the [member base_type]. If the [member base_type] is empty, an empty list is returned.
</description>
</method>
<method name="set_toggle_pressed">
- <return type="void">
- </return>
- <argument index="0" name="pressed" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="pressed" type="bool" />
<description>
Sets the toggle mode state for the main button. Works only if [member toggle_mode] is set to [code]true[/code].
</description>
@@ -62,15 +55,13 @@
</members>
<signals>
<signal name="resource_changed">
- <argument index="0" name="resource" type="Resource">
- </argument>
+ <argument index="0" name="resource" type="Resource" />
<description>
Emitted when the value of the edited resource was changed.
</description>
</signal>
<signal name="resource_selected">
- <argument index="0" name="resource" type="Resource">
- </argument>
+ <argument index="0" name="resource" type="Resource" />
<description>
Emitted when the resource value was set and user clicked to edit it.
</description>
diff --git a/doc/classes/EditorResourcePreview.xml b/doc/classes/EditorResourcePreview.xml
index 3239a75ada..c2693b4e1e 100644
--- a/doc/classes/EditorResourcePreview.xml
+++ b/doc/classes/EditorResourcePreview.xml
@@ -11,60 +11,44 @@
</tutorials>
<methods>
<method name="add_preview_generator">
- <return type="void">
- </return>
- <argument index="0" name="generator" type="EditorResourcePreviewGenerator">
- </argument>
+ <return type="void" />
+ <argument index="0" name="generator" type="EditorResourcePreviewGenerator" />
<description>
Create an own, custom preview generator.
</description>
</method>
<method name="check_for_invalidation">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
<description>
Check if the resource changed, if so, it will be invalidated and the corresponding signal emitted.
</description>
</method>
<method name="queue_edited_resource_preview">
- <return type="void">
- </return>
- <argument index="0" name="resource" type="Resource">
- </argument>
- <argument index="1" name="receiver" type="Object">
- </argument>
- <argument index="2" name="receiver_func" type="StringName">
- </argument>
- <argument index="3" name="userdata" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="resource" type="Resource" />
+ <argument index="1" name="receiver" type="Object" />
+ <argument index="2" name="receiver_func" type="StringName" />
+ <argument index="3" name="userdata" type="Variant" />
<description>
Queue the [code]resource[/code] being edited for preview. Once the preview is ready, the [code]receiver[/code]'s [code]receiver_func[/code] will be called. The [code]receiver_func[/code] must take the following four arguments: [String] path, [Texture2D] preview, [Texture2D] thumbnail_preview, [Variant] userdata. [code]userdata[/code] can be anything, and will be returned when [code]receiver_func[/code] is called.
[b]Note[/b]: If it was not possible to create the preview the [code]receiver_func[/code] will still be called, but the preview will be null.
</description>
</method>
<method name="queue_resource_preview">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="receiver" type="Object">
- </argument>
- <argument index="2" name="receiver_func" type="StringName">
- </argument>
- <argument index="3" name="userdata" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="receiver" type="Object" />
+ <argument index="2" name="receiver_func" type="StringName" />
+ <argument index="3" name="userdata" type="Variant" />
<description>
Queue a resource file located at [code]path[/code] for preview. Once the preview is ready, the [code]receiver[/code]'s [code]receiver_func[/code] will be called. The [code]receiver_func[/code] must take the following four arguments: [String] path, [Texture2D] preview, [Texture2D] thumbnail_preview, [Variant] userdata. [code]userdata[/code] can be anything, and will be returned when [code]receiver_func[/code] is called.
[b]Note[/b]: If it was not possible to create the preview the [code]receiver_func[/code] will still be called, but the preview will be null.
</description>
</method>
<method name="remove_preview_generator">
- <return type="void">
- </return>
- <argument index="0" name="generator" type="EditorResourcePreviewGenerator">
- </argument>
+ <return type="void" />
+ <argument index="0" name="generator" type="EditorResourcePreviewGenerator" />
<description>
Removes a custom preview generator.
</description>
@@ -72,8 +56,7 @@
</methods>
<signals>
<signal name="preview_invalidated">
- <argument index="0" name="path" type="String">
- </argument>
+ <argument index="0" name="path" type="String" />
<description>
Emitted if a preview was invalidated (changed). [code]path[/code] corresponds to the path of the preview.
</description>
diff --git a/doc/classes/EditorResourcePreviewGenerator.xml b/doc/classes/EditorResourcePreviewGenerator.xml
index 3594474e36..7054b1f4d0 100644
--- a/doc/classes/EditorResourcePreviewGenerator.xml
+++ b/doc/classes/EditorResourcePreviewGenerator.xml
@@ -10,20 +10,16 @@
</tutorials>
<methods>
<method name="_can_generate_small_preview" qualifiers="virtual">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
If this function returns [code]true[/code], the generator will call [method _generate] or [method _generate_from_path] for small previews as well.
By default, it returns [code]false[/code].
</description>
</method>
<method name="_generate" qualifiers="virtual">
- <return type="Texture2D">
- </return>
- <argument index="0" name="from" type="Resource">
- </argument>
- <argument index="1" name="size" type="Vector2">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="from" type="Resource" />
+ <argument index="1" name="size" type="Vector2" />
<description>
Generate a preview from a given resource with the specified size. This must always be implemented.
Returning an empty texture is an OK way to fail and let another generator take care.
@@ -31,12 +27,9 @@
</description>
</method>
<method name="_generate_from_path" qualifiers="virtual">
- <return type="Texture2D">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="size" type="Vector2">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="size" type="Vector2" />
<description>
Generate a preview directly from a path with the specified size. Implementing this is optional, as default code will load and call [method _generate].
Returning an empty texture is an OK way to fail and let another generator take care.
@@ -44,18 +37,15 @@
</description>
</method>
<method name="_generate_small_preview_automatically" qualifiers="virtual">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
If this function returns [code]true[/code], the generator will automatically generate the small previews from the normal preview texture generated by the methods [method _generate] or [method _generate_from_path].
By default, it returns [code]false[/code].
</description>
</method>
<method name="_handles" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="type" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="type" type="String" />
<description>
Returns [code]true[/code] if your generator supports the resource of type [code]type[/code].
</description>
diff --git a/doc/classes/EditorSceneImporter.xml b/doc/classes/EditorSceneImporter.xml
index 8df3091057..2e9d6a43d8 100644
--- a/doc/classes/EditorSceneImporter.xml
+++ b/doc/classes/EditorSceneImporter.xml
@@ -9,62 +9,44 @@
</tutorials>
<methods>
<method name="_get_extensions" qualifiers="virtual">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="_get_import_flags" qualifiers="virtual">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="_import_animation" qualifiers="virtual">
- <return type="Animation">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="flags" type="int">
- </argument>
- <argument index="2" name="bake_fps" type="int">
- </argument>
+ <return type="Animation" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="flags" type="int" />
+ <argument index="2" name="bake_fps" type="int" />
<description>
</description>
</method>
<method name="_import_scene" qualifiers="virtual">
- <return type="Node">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="flags" type="int">
- </argument>
- <argument index="2" name="bake_fps" type="int">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="flags" type="int" />
+ <argument index="2" name="bake_fps" type="int" />
<description>
</description>
</method>
<method name="import_animation_from_other_importer">
- <return type="Animation">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="flags" type="int">
- </argument>
- <argument index="2" name="bake_fps" type="int">
- </argument>
+ <return type="Animation" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="flags" type="int" />
+ <argument index="2" name="bake_fps" type="int" />
<description>
</description>
</method>
<method name="import_scene_from_other_importer">
- <return type="Node">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="flags" type="int">
- </argument>
- <argument index="2" name="bake_fps" type="int">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="flags" type="int" />
+ <argument index="2" name="bake_fps" type="int" />
<description>
</description>
</method>
diff --git a/doc/classes/EditorSceneImporterMesh.xml b/doc/classes/EditorSceneImporterMesh.xml
index 90eca9072b..3a9eea87bb 100644
--- a/doc/classes/EditorSceneImporterMesh.xml
+++ b/doc/classes/EditorSceneImporterMesh.xml
@@ -8,161 +8,120 @@
</tutorials>
<methods>
<method name="add_blend_shape">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
<description>
</description>
</method>
<method name="add_surface">
- <return type="void">
- </return>
- <argument index="0" name="primitive" type="int" enum="Mesh.PrimitiveType">
- </argument>
- <argument index="1" name="arrays" type="Array">
- </argument>
- <argument index="2" name="blend_shapes" type="Array" default="[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="primitive" type="int" enum="Mesh.PrimitiveType" />
+ <argument index="1" name="arrays" type="Array" />
+ <argument index="2" name="blend_shapes" type="Array" default="[]" />
<argument index="3" name="lods" type="Dictionary" default="{
-}">
- </argument>
- <argument index="4" name="material" type="Material" default="null">
- </argument>
- <argument index="5" name="name" type="String" default="&quot;&quot;">
- </argument>
+}" />
+ <argument index="4" name="material" type="Material" default="null" />
+ <argument index="5" name="name" type="String" default="&quot;&quot;" />
<description>
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="get_blend_shape_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_blend_shape_mode" qualifiers="const">
- <return type="int" enum="Mesh.BlendShapeMode">
- </return>
+ <return type="int" enum="Mesh.BlendShapeMode" />
<description>
</description>
</method>
<method name="get_blend_shape_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="blend_shape_idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="blend_shape_idx" type="int" />
<description>
</description>
</method>
<method name="get_lightmap_size_hint" qualifiers="const">
- <return type="Vector2i">
- </return>
+ <return type="Vector2i" />
<description>
</description>
</method>
<method name="get_mesh">
- <return type="ArrayMesh">
- </return>
- <argument index="0" name="arg0" type="Mesh">
- </argument>
+ <return type="ArrayMesh" />
+ <argument index="0" name="arg0" type="Mesh" />
<description>
</description>
</method>
<method name="get_surface_arrays" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="surface_idx" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="surface_idx" type="int" />
<description>
</description>
</method>
<method name="get_surface_blend_shape_arrays" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="surface_idx" type="int">
- </argument>
- <argument index="1" name="blend_shape_idx" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="surface_idx" type="int" />
+ <argument index="1" name="blend_shape_idx" type="int" />
<description>
</description>
</method>
<method name="get_surface_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_surface_lod_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="surface_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="surface_idx" type="int" />
<description>
</description>
</method>
<method name="get_surface_lod_indices" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="surface_idx" type="int">
- </argument>
- <argument index="1" name="lod_idx" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="surface_idx" type="int" />
+ <argument index="1" name="lod_idx" type="int" />
<description>
</description>
</method>
<method name="get_surface_lod_size" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="surface_idx" type="int">
- </argument>
- <argument index="1" name="lod_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="surface_idx" type="int" />
+ <argument index="1" name="lod_idx" type="int" />
<description>
</description>
</method>
<method name="get_surface_material" qualifiers="const">
- <return type="Material">
- </return>
- <argument index="0" name="surface_idx" type="int">
- </argument>
+ <return type="Material" />
+ <argument index="0" name="surface_idx" type="int" />
<description>
</description>
</method>
<method name="get_surface_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="surface_idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="surface_idx" type="int" />
<description>
</description>
</method>
<method name="get_surface_primitive_type">
- <return type="int" enum="Mesh.PrimitiveType">
- </return>
- <argument index="0" name="surface_idx" type="int">
- </argument>
+ <return type="int" enum="Mesh.PrimitiveType" />
+ <argument index="0" name="surface_idx" type="int" />
<description>
</description>
</method>
<method name="set_blend_shape_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="Mesh.BlendShapeMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mode" type="int" enum="Mesh.BlendShapeMode" />
<description>
</description>
</method>
<method name="set_lightmap_size_hint">
- <return type="void">
- </return>
- <argument index="0" name="size" type="Vector2i">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="Vector2i" />
<description>
</description>
</method>
diff --git a/doc/classes/EditorScenePostImport.xml b/doc/classes/EditorScenePostImport.xml
index d2b5e84ff7..95b0b42d9f 100644
--- a/doc/classes/EditorScenePostImport.xml
+++ b/doc/classes/EditorScenePostImport.xml
@@ -56,17 +56,14 @@
</tutorials>
<methods>
<method name="_post_import" qualifiers="virtual">
- <return type="Object">
- </return>
- <argument index="0" name="scene" type="Object">
- </argument>
+ <return type="Object" />
+ <argument index="0" name="scene" type="Object" />
<description>
Called after the scene was imported. This method must return the modified version of the scene.
</description>
</method>
<method name="get_source_file" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the source file path which got imported (e.g. [code]res://scene.dae[/code]).
</description>
diff --git a/doc/classes/EditorScript.xml b/doc/classes/EditorScript.xml
index a91ea0eb14..6d793fe961 100644
--- a/doc/classes/EditorScript.xml
+++ b/doc/classes/EditorScript.xml
@@ -35,32 +35,27 @@
</tutorials>
<methods>
<method name="_run" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
This method is executed by the Editor when [b]File &gt; Run[/b] is used.
</description>
</method>
<method name="add_root_node">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Node" />
<description>
Adds [code]node[/code] as a child of the root node in the editor context.
[b]Warning:[/b] The implementation of this method is currently disabled.
</description>
</method>
<method name="get_editor_interface">
- <return type="EditorInterface">
- </return>
+ <return type="EditorInterface" />
<description>
Returns the [EditorInterface] singleton instance.
</description>
</method>
<method name="get_scene">
- <return type="Node">
- </return>
+ <return type="Node" />
<description>
Returns the Editor's currently active scene.
</description>
diff --git a/doc/classes/EditorSelection.xml b/doc/classes/EditorSelection.xml
index 63e89750c3..69ae865d5d 100644
--- a/doc/classes/EditorSelection.xml
+++ b/doc/classes/EditorSelection.xml
@@ -11,41 +11,34 @@
</tutorials>
<methods>
<method name="add_node">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Node" />
<description>
Adds a node to the selection.
[b]Note:[/b] The newly selected node will not be automatically edited in the inspector. If you want to edit a node, use [method EditorInterface.edit_node].
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clear the selection.
</description>
</method>
<method name="get_selected_nodes">
- <return type="Node[]">
- </return>
+ <return type="Node[]" />
<description>
Gets the list of selected nodes.
</description>
</method>
<method name="get_transformable_selected_nodes">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Gets the list of selected nodes, optimized for transform operations (i.e. moving them, rotating, etc). This list avoids situations where a node is selected and also child/grandchild.
</description>
</method>
<method name="remove_node">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Node" />
<description>
Removes a node from the selection.
</description>
diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml
index e732223516..ad63abafa6 100644
--- a/doc/classes/EditorSettings.xml
+++ b/doc/classes/EditorSettings.xml
@@ -31,10 +31,8 @@
</tutorials>
<methods>
<method name="add_property_info">
- <return type="void">
- </return>
- <argument index="0" name="info" type="Dictionary">
- </argument>
+ <return type="void" />
+ <argument index="0" name="info" type="Dictionary" />
<description>
Adds a custom property info to a property. The dictionary must contain:
- [code]name[/code]: [String] (the name of the property)
@@ -73,145 +71,110 @@
</description>
</method>
<method name="erase">
- <return type="void">
- </return>
- <argument index="0" name="property" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="property" type="String" />
<description>
Erases the setting whose name is specified by [code]property[/code].
</description>
</method>
<method name="get_favorites" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns the list of favorite files and directories for this project.
</description>
</method>
<method name="get_project_metadata" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="section" type="String">
- </argument>
- <argument index="1" name="key" type="String">
- </argument>
- <argument index="2" name="default" type="Variant" default="null">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="section" type="String" />
+ <argument index="1" name="key" type="String" />
+ <argument index="2" name="default" type="Variant" default="null" />
<description>
Returns project-specific metadata for the [code]section[/code] and [code]key[/code] specified. If the metadata doesn't exist, [code]default[/code] will be returned instead. See also [method set_project_metadata].
</description>
</method>
<method name="get_project_settings_dir" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the project-specific settings path. Projects all have a unique subdirectory inside the settings path where project-specific settings are saved.
</description>
</method>
<method name="get_recent_dirs" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns the list of recently visited folders in the file dialog for this project.
</description>
</method>
<method name="get_setting" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="name" type="String" />
<description>
Returns the value of the setting specified by [code]name[/code]. This is equivalent to using [method Object.get] on the EditorSettings instance.
</description>
</method>
<method name="has_setting" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="String" />
<description>
Returns [code]true[/code] if the setting specified by [code]name[/code] exists, [code]false[/code] otherwise.
</description>
</method>
<method name="property_can_revert">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="String" />
<description>
Returns [code]true[/code] if the setting specified by [code]name[/code] can have its value reverted to the default value, [code]false[/code] otherwise. When this method returns [code]true[/code], a Revert button will display next to the setting in the Editor Settings.
</description>
</method>
<method name="property_get_revert">
- <return type="Variant">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="name" type="String" />
<description>
Returns the default value of the setting specified by [code]name[/code]. This is the value that would be applied when clicking the Revert button in the Editor Settings.
</description>
</method>
<method name="set_builtin_action_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="actions_list" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="actions_list" type="Array" />
<description>
</description>
</method>
<method name="set_favorites">
- <return type="void">
- </return>
- <argument index="0" name="dirs" type="PackedStringArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="dirs" type="PackedStringArray" />
<description>
Sets the list of favorite files and directories for this project.
</description>
</method>
<method name="set_initial_value">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
- <argument index="2" name="update_current" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
+ <argument index="2" name="update_current" type="bool" />
<description>
Sets the initial value of the setting specified by [code]name[/code] to [code]value[/code]. This is used to provide a value for the Revert button in the Editor Settings. If [code]update_current[/code] is true, the current value of the setting will be set to [code]value[/code] as well.
</description>
</method>
<method name="set_project_metadata">
- <return type="void">
- </return>
- <argument index="0" name="section" type="String">
- </argument>
- <argument index="1" name="key" type="String">
- </argument>
- <argument index="2" name="data" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="section" type="String" />
+ <argument index="1" name="key" type="String" />
+ <argument index="2" name="data" type="Variant" />
<description>
Sets project-specific metadata with the [code]section[/code], [code]key[/code] and [code]data[/code] specified. This metadata is stored outside the project folder and therefore won't be checked into version control. See also [method get_project_metadata].
</description>
</method>
<method name="set_recent_dirs">
- <return type="void">
- </return>
- <argument index="0" name="dirs" type="PackedStringArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="dirs" type="PackedStringArray" />
<description>
Sets the list of recently visited folders in the file dialog for this project.
</description>
</method>
<method name="set_setting">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="value" type="Variant" />
<description>
Sets the [code]value[/code] of the setting specified by [code]name[/code]. This is equivalent to using [method Object.set] on the EditorSettings instance.
</description>
diff --git a/doc/classes/EditorSyntaxHighlighter.xml b/doc/classes/EditorSyntaxHighlighter.xml
index d81b25345f..37644a8595 100644
--- a/doc/classes/EditorSyntaxHighlighter.xml
+++ b/doc/classes/EditorSyntaxHighlighter.xml
@@ -11,22 +11,19 @@
</tutorials>
<methods>
<method name="_get_name" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Virtual method which can be overridden to return the syntax highlighter name.
</description>
</method>
<method name="_get_supported_extentions" qualifiers="virtual">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Virtual method which can be overridden to return the supported file extensions.
</description>
</method>
<method name="_get_supported_languages" qualifiers="virtual">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Virtual method which can be overridden to return the supported language names.
</description>
diff --git a/doc/classes/EditorTranslationParserPlugin.xml b/doc/classes/EditorTranslationParserPlugin.xml
index a9f4e90e72..47da8ec37b 100644
--- a/doc/classes/EditorTranslationParserPlugin.xml
+++ b/doc/classes/EditorTranslationParserPlugin.xml
@@ -103,21 +103,16 @@
</tutorials>
<methods>
<method name="_get_recognized_extensions" qualifiers="virtual">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Gets the list of file extensions to associate with this parser, e.g. [code]["csv"][/code].
</description>
</method>
<method name="_parse_file" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="msgids" type="Array">
- </argument>
- <argument index="2" name="msgids_context_plural" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="msgids" type="Array" />
+ <argument index="2" name="msgids_context_plural" type="Array" />
<description>
Override this method to define a custom parsing logic to extract the translatable strings.
</description>
diff --git a/doc/classes/EditorVCSInterface.xml b/doc/classes/EditorVCSInterface.xml
index 0056b5ce16..5dd4901e3e 100644
--- a/doc/classes/EditorVCSInterface.xml
+++ b/doc/classes/EditorVCSInterface.xml
@@ -10,19 +10,15 @@
</tutorials>
<methods>
<method name="commit">
- <return type="void">
- </return>
- <argument index="0" name="msg" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="msg" type="String" />
<description>
Creates a version commit if the addon is initialized, else returns without doing anything. Uses the files which have been staged previously, with the commit message set to a value as provided as in the argument.
</description>
</method>
<method name="get_file_diff">
- <return type="Array">
- </return>
- <argument index="0" name="file_path" type="String">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="file_path" type="String" />
<description>
Returns an [Array] of [Dictionary] objects containing the diff output from the VCS in use, if a VCS addon is initialized, else returns an empty [Array] object. The diff contents also consist of some contextual lines which provide context to the observed line change in the file.
Each [Dictionary] object has the line diff contents under the keys:
@@ -35,8 +31,7 @@
</description>
</method>
<method name="get_modified_files_data">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Returns a [Dictionary] containing the path of the detected file change mapped to an integer signifying what kind of change the corresponding file has experienced.
The following integer values are being used to signify that the detected file is:
@@ -48,63 +43,52 @@
</description>
</method>
<method name="get_project_name">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the project name of the VCS working directory.
</description>
</method>
<method name="get_vcs_name">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the name of the VCS if the VCS has been initialized, else return an empty string.
</description>
</method>
<method name="initialize">
- <return type="bool">
- </return>
- <argument index="0" name="project_root_path" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="project_root_path" type="String" />
<description>
Initializes the VCS addon if not already. Uses the argument value as the path to the working directory of the project. Creates the initial commit if required. Returns [code]true[/code] if no failure occurs, else returns [code]false[/code].
</description>
</method>
<method name="is_addon_ready">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the addon is ready to respond to function calls, else returns [code]false[/code].
</description>
</method>
<method name="is_vcs_initialized">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the VCS addon has been initialized, else returns [code]false[/code].
</description>
</method>
<method name="shut_down">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Shuts down the VCS addon to allow cleanup code to run on call. Returns [code]true[/code] is no failure occurs, else returns [code]false[/code].
</description>
</method>
<method name="stage_file">
- <return type="void">
- </return>
- <argument index="0" name="file_path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="file_path" type="String" />
<description>
Stages the file which should be committed when [method EditorVCSInterface.commit] is called. Argument should contain the absolute path.
</description>
</method>
<method name="unstage_file">
- <return type="void">
- </return>
- <argument index="0" name="file_path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="file_path" type="String" />
<description>
Unstages the file which was staged previously to be committed, so that it is no longer committed when [method EditorVCSInterface.commit] is called. Argument should contain the absolute path.
</description>
diff --git a/doc/classes/Engine.xml b/doc/classes/Engine.xml
index c0a8407ece..e4411ab125 100644
--- a/doc/classes/Engine.xml
+++ b/doc/classes/Engine.xml
@@ -10,8 +10,7 @@
</tutorials>
<methods>
<method name="get_author_info" qualifiers="const">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Returns engine author information in a Dictionary.
[code]lead_developers[/code] - Array of Strings, lead developer names
@@ -21,8 +20,7 @@
</description>
</method>
<method name="get_copyright_info" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an Array of copyright information Dictionaries.
[code]name[/code] - String, component name
@@ -30,81 +28,69 @@
</description>
</method>
<method name="get_donor_info" qualifiers="const">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Returns a Dictionary of Arrays of donor names.
{[code]platinum_sponsors[/code], [code]gold_sponsors[/code], [code]silver_sponsors[/code], [code]bronze_sponsors[/code], [code]mini_sponsors[/code], [code]gold_donors[/code], [code]silver_donors[/code], [code]bronze_donors[/code]}
</description>
</method>
<method name="get_frames_drawn">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the total number of frames drawn. If the render loop is disabled with [code]--disable-render-loop[/code] via command line, this returns [code]0[/code]. See also [method get_process_frames].
</description>
</method>
<method name="get_frames_per_second" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the frames per second of the running game.
</description>
</method>
<method name="get_license_info" qualifiers="const">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Returns Dictionary of licenses used by Godot and included third party components.
</description>
</method>
<method name="get_license_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns Godot license text.
</description>
</method>
<method name="get_main_loop" qualifiers="const">
- <return type="MainLoop">
- </return>
+ <return type="MainLoop" />
<description>
Returns the main loop object (see [MainLoop] and [SceneTree]).
</description>
</method>
<method name="get_physics_frames" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the total number of frames passed since engine initialization which is advanced on each [b]physics frame[/b].
</description>
</method>
<method name="get_physics_interpolation_fraction" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the fraction through the current physics tick we are at the time of rendering the frame. This can be used to implement fixed timestep interpolation.
</description>
</method>
<method name="get_process_frames" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the total number of frames passed since engine initialization which is advanced on each [b]process frame[/b], regardless of whether the render loop is enabled. See also [method get_frames_drawn].
</description>
</method>
<method name="get_singleton" qualifiers="const">
- <return type="Object">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="Object" />
+ <argument index="0" name="name" type="String" />
<description>
Returns a global singleton with given [code]name[/code]. Often used for plugins, e.g. GodotPayments.
</description>
</method>
<method name="get_version_info" qualifiers="const">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Returns the current engine version information in a Dictionary.
[code]major[/code] - Holds the major version number as an int
@@ -138,17 +124,14 @@
</description>
</method>
<method name="has_singleton" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="String" />
<description>
Returns [code]true[/code] if a singleton with given [code]name[/code] exists in global scope.
</description>
</method>
<method name="is_in_physics_frame" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the game is inside the fixed process and physics phase of the game loop.
</description>
@@ -170,7 +153,7 @@
The number of fixed iterations per second. This controls how often physics simulation and [method Node._physics_process] methods are run. This value should generally always be set to [code]60[/code] or above, as Godot doesn't interpolate the physics step. As a result, values lower than [code]60[/code] will look stuttery. This value can be increased to make input more reactive or work around tunneling issues, but keep in mind doing so will increase CPU usage.
</member>
<member name="physics_jitter_fix" type="float" setter="set_physics_jitter_fix" getter="get_physics_jitter_fix" default="0.5">
- Controls how much physics ticks are synchronized with real time. For 0 or less, the ticks are synchronized. Such values are recommended for network games, where clock synchronization matters. Higher values cause higher deviation of in-game clock and real clock, but allows smoothing out framerate jitters. The default value of 0.5 should be fine for most; values above 2 could cause the game to react to dropped frames with a noticeable delay and are not recommended.
+ Controls how much physics ticks are synchronized with real time. For 0 or less, the ticks are synchronized. Such values are recommended for network games, where clock synchronization matters. Higher values cause higher deviation of the in-game clock and real clock but smooth out framerate jitters. The default value of 0.5 should be fine for most; values above 2 could cause the game to react to dropped frames with a noticeable delay and are not recommended.
[b]Note:[/b] For best results, when using a custom physics interpolation solution, the physics jitter fix should be disabled by setting [member physics_jitter_fix] to [code]0[/code].
</member>
<member name="print_error_messages" type="bool" setter="set_print_error_messages" getter="is_printing_error_messages" default="true">
diff --git a/doc/classes/EngineDebugger.xml b/doc/classes/EngineDebugger.xml
index 50ccb6b075..30d5193384 100644
--- a/doc/classes/EngineDebugger.xml
+++ b/doc/classes/EngineDebugger.xml
@@ -10,86 +10,64 @@
</tutorials>
<methods>
<method name="has_capture">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if a capture with the given name is present otherwise [code]false[/code].
</description>
</method>
<method name="has_profiler">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if a profiler with the given name is present otherwise [code]false[/code].
</description>
</method>
<method name="is_active">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the debugger is active otherwise [code]false[/code].
</description>
</method>
<method name="is_profiling">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if a profiler with the given name is present and active otherwise [code]false[/code].
</description>
</method>
<method name="profiler_add_frame_data">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="data" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="data" type="Array" />
<description>
Calls the [code]add[/code] callable of the profiler with given [code]name[/code] and [code]data[/code].
</description>
</method>
<method name="profiler_enable">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
- <argument index="2" name="arguments" type="Array" default="[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="enable" type="bool" />
+ <argument index="2" name="arguments" type="Array" default="[]" />
<description>
Calls the [code]toggle[/code] callable of the profiler with given [code]name[/code] and [code]arguments[/code]. Enables/Disables the same profiler depending on [code]enable[/code] argument.
</description>
</method>
<method name="register_message_capture">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="callable" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="callable" type="Callable" />
<description>
Registers a message capture with given [code]name[/code]. If [code]name[/code] is "my_message" then messages starting with "my_message:" will be called with the given callable.
Callable must accept a message string and a data array as argument. If the message and data are valid then callable must return [code]true[/code] otherwise [code]false[/code].
</description>
</method>
<method name="register_profiler">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="toggle" type="Callable">
- </argument>
- <argument index="2" name="add" type="Callable">
- </argument>
- <argument index="3" name="tick" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="toggle" type="Callable" />
+ <argument index="2" name="add" type="Callable" />
+ <argument index="3" name="tick" type="Callable" />
<description>
Registers a profiler with the given [code]name[/code].
[code]toggle[/code] callable is called when the profiler is enabled/disabled. It must take an argument array as an argument.
@@ -98,30 +76,23 @@
</description>
</method>
<method name="send_message">
- <return type="void">
- </return>
- <argument index="0" name="message" type="String">
- </argument>
- <argument index="1" name="data" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="message" type="String" />
+ <argument index="1" name="data" type="Array" />
<description>
Sends a message with given [code]message[/code] and [code]data[/code] array.
</description>
</method>
<method name="unregister_message_capture">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Unregisters the message capture with given [code]name[/code].
</description>
</method>
<method name="unregister_profiler">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Unregisters a profiler with given [code]name[/code].
</description>
diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml
index ae87a62c84..2c4e5ea886 100644
--- a/doc/classes/Environment.xml
+++ b/doc/classes/Environment.xml
@@ -19,21 +19,16 @@
</tutorials>
<methods>
<method name="get_glow_level" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the intensity of the glow level [code]idx[/code].
</description>
</method>
<method name="set_glow_level">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="intensity" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="intensity" type="float" />
<description>
Sets the intensity of the glow level [code]idx[/code]. A value above [code]0.0[/code] enables the level. Each level relies on the previous level. This means that enabling higher glow levels will slow down the glow effect rendering, even if previous levels aren't enabled.
</description>
diff --git a/doc/classes/Expression.xml b/doc/classes/Expression.xml
index 640b45dca4..809a5bb80c 100644
--- a/doc/classes/Expression.xml
+++ b/doc/classes/Expression.xml
@@ -52,40 +52,31 @@
</tutorials>
<methods>
<method name="execute">
- <return type="Variant">
- </return>
- <argument index="0" name="inputs" type="Array" default="[]">
- </argument>
- <argument index="1" name="base_instance" type="Object" default="null">
- </argument>
- <argument index="2" name="show_error" type="bool" default="true">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="inputs" type="Array" default="[]" />
+ <argument index="1" name="base_instance" type="Object" default="null" />
+ <argument index="2" name="show_error" type="bool" default="true" />
<description>
Executes the expression that was previously parsed by [method parse] and returns the result. Before you use the returned object, you should check if the method failed by calling [method has_execute_failed].
If you defined input variables in [method parse], you can specify their values in the inputs array, in the same order.
</description>
</method>
<method name="get_error_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the error text if [method parse] has failed.
</description>
</method>
<method name="has_execute_failed" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if [method execute] has failed.
</description>
</method>
<method name="parse">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="expression" type="String">
- </argument>
- <argument index="1" name="input_names" type="PackedStringArray" default="PackedStringArray()">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="expression" type="String" />
+ <argument index="1" name="input_names" type="PackedStringArray" default="PackedStringArray()" />
<description>
Parses the expression and returns an [enum Error] code.
You can optionally specify names of variables that may appear in the expression with [code]input_names[/code], so that you can bind them when it gets executed.
diff --git a/doc/classes/File.xml b/doc/classes/File.xml
index f98c31dc7f..de3beedf0f 100644
--- a/doc/classes/File.xml
+++ b/doc/classes/File.xml
@@ -50,285 +50,231 @@
</tutorials>
<methods>
<method name="close">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Closes the currently opened file and prevents subsequent read/write operations. Use [method flush] to persist the data to disk without closing the file.
</description>
</method>
<method name="eof_reached" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the file cursor has read past the end of the file.
[b]Note:[/b] This function will still return [code]false[/code] while at the end of the file and only activates when reading past it. This can be confusing but it conforms to how low-level file access works in all operating systems. There is always [method get_length] and [method get_position] to implement a custom logic.
</description>
</method>
<method name="file_exists" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="path" type="String" />
<description>
Returns [code]true[/code] if the file exists in the given path.
[b]Note:[/b] Many resources types are imported (e.g. textures or sound files), and their source asset will not be included in the exported game, as only the imported version is used. See [method ResourceLoader.exists] for an alternative approach that takes resource remapping into account.
</description>
</method>
<method name="flush">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Writes the file's buffer to disk. Flushing is automatically performed when the file is closed. This means you don't need to call [method flush] manually before closing a file using [method close]. Still, calling [method flush] can be used to ensure the data is safe even if the project crashes instead of being closed gracefully.
[b]Note:[/b] Only call [method flush] when you actually need it. Otherwise, it will decrease performance due to constant disk writes.
</description>
</method>
<method name="get_16" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the next 16 bits from the file as an integer. See [method store_16] for details on what values can be stored and retrieved this way.
</description>
</method>
<method name="get_32" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the next 32 bits from the file as an integer. See [method store_32] for details on what values can be stored and retrieved this way.
</description>
</method>
<method name="get_64" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the next 64 bits from the file as an integer. See [method store_64] for details on what values can be stored and retrieved this way.
</description>
</method>
<method name="get_8" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the next 8 bits from the file as an integer. See [method store_8] for details on what values can be stored and retrieved this way.
</description>
</method>
<method name="get_as_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the whole file as a [String].
Text is interpreted as being UTF-8 encoded.
</description>
</method>
<method name="get_buffer" qualifiers="const">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="length" type="int">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="length" type="int" />
<description>
Returns next [code]length[/code] bytes of the file as a [PackedByteArray].
</description>
</method>
<method name="get_csv_line" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="delim" type="String" default="&quot;,&quot;">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="delim" type="String" default="&quot;,&quot;" />
<description>
Returns the next value of the file in CSV (Comma-Separated Values) format. You can pass a different delimiter [code]delim[/code] to use other than the default [code]","[/code] (comma). This delimiter must be one-character long.
Text is interpreted as being UTF-8 encoded.
</description>
</method>
<method name="get_double" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the next 64 bits from the file as a floating-point number.
</description>
</method>
<method name="get_error" qualifiers="const">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Returns the last error that happened when trying to perform operations. Compare with the [code]ERR_FILE_*[/code] constants from [enum Error].
</description>
</method>
<method name="get_float" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the next 32 bits from the file as a floating-point number.
</description>
</method>
<method name="get_length" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the size of the file in bytes.
</description>
</method>
<method name="get_line" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the next line of the file as a [String].
Text is interpreted as being UTF-8 encoded.
</description>
</method>
<method name="get_md5" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="path" type="String" />
<description>
Returns an MD5 String representing the file at the given path or an empty [String] on failure.
</description>
</method>
<method name="get_modified_time" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="file" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="file" type="String" />
<description>
Returns the last time the [code]file[/code] was modified in Unix timestamp format or returns a [String] "ERROR IN [code]file[/code]". This Unix timestamp can be converted to another format using the [Time] singleton.
</description>
</method>
<method name="get_pascal_string">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a [String] saved in Pascal format from the file.
Text is interpreted as being UTF-8 encoded.
</description>
</method>
<method name="get_path" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the path as a [String] for the current open file.
</description>
</method>
<method name="get_path_absolute" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the absolute path as a [String] for the current open file.
</description>
</method>
<method name="get_position" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the file cursor's position.
</description>
</method>
<method name="get_real" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the next bits from the file as a floating-point number.
</description>
</method>
<method name="get_sha256" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="path" type="String" />
<description>
Returns a SHA-256 [String] representing the file at the given path or an empty [String] on failure.
</description>
</method>
<method name="get_var" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="allow_objects" type="bool" default="false">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="allow_objects" type="bool" default="false" />
<description>
Returns the next [Variant] value from the file. If [code]allow_objects[/code] is [code]true[/code], decoding objects is allowed.
[b]Warning:[/b] Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.
</description>
</method>
<method name="is_open" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the file is currently opened.
</description>
</method>
<method name="open">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="flags" type="int" enum="File.ModeFlags">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="flags" type="int" enum="File.ModeFlags" />
<description>
Opens the file for writing or reading, depending on the flags.
</description>
</method>
<method name="open_compressed">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="mode_flags" type="int" enum="File.ModeFlags">
- </argument>
- <argument index="2" name="compression_mode" type="int" enum="File.CompressionMode" default="0">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="mode_flags" type="int" enum="File.ModeFlags" />
+ <argument index="2" name="compression_mode" type="int" enum="File.CompressionMode" default="0" />
<description>
Opens a compressed file for reading or writing.
[b]Note:[/b] [method open_compressed] can only read files that were saved by Godot, not third-party compression formats. See [url=https://github.com/godotengine/godot/issues/28999]GitHub issue #28999[/url] for a workaround.
</description>
</method>
<method name="open_encrypted">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="mode_flags" type="int" enum="File.ModeFlags">
- </argument>
- <argument index="2" name="key" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="mode_flags" type="int" enum="File.ModeFlags" />
+ <argument index="2" name="key" type="PackedByteArray" />
<description>
Opens an encrypted file in write or read mode. You need to pass a binary key to encrypt/decrypt it.
[b]Note:[/b] The provided key must be 32 bytes long.
</description>
</method>
<method name="open_encrypted_with_pass">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="mode_flags" type="int" enum="File.ModeFlags">
- </argument>
- <argument index="2" name="pass" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="mode_flags" type="int" enum="File.ModeFlags" />
+ <argument index="2" name="pass" type="String" />
<description>
Opens an encrypted file in write or read mode. You need to pass a password to encrypt/decrypt it.
</description>
</method>
<method name="seek">
- <return type="void">
- </return>
- <argument index="0" name="position" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="int" />
<description>
Changes the file reading/writing cursor to the specified position (in bytes from the beginning of the file).
</description>
</method>
<method name="seek_end">
- <return type="void">
- </return>
- <argument index="0" name="position" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="int" default="0" />
<description>
Changes the file reading/writing cursor to the specified position (in bytes from the end of the file).
[b]Note:[/b] This is an offset, so you should use negative numbers or the cursor will be at the end of the file.
</description>
</method>
<method name="store_16">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Stores an integer as 16 bits in the file.
[b]Note:[/b] The [code]value[/code] should lie in the interval [code][0, 2^16 - 1][/code]. Any other value will overflow and wrap around.
@@ -370,10 +316,8 @@
</description>
</method>
<method name="store_32">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Stores an integer as 32 bits in the file.
[b]Note:[/b] The [code]value[/code] should lie in the interval [code][0, 2^32 - 1][/code]. Any other value will overflow and wrap around.
@@ -381,20 +325,16 @@
</description>
</method>
<method name="store_64">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Stores an integer as 64 bits in the file.
[b]Note:[/b] The [code]value[/code] must lie in the interval [code][-2^63, 2^63 - 1][/code] (i.e. be a valid [int] value).
</description>
</method>
<method name="store_8">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Stores an integer as 8 bits in the file.
[b]Note:[/b] The [code]value[/code] should lie in the interval [code][0, 255][/code]. Any other value will overflow and wrap around.
@@ -402,88 +342,68 @@
</description>
</method>
<method name="store_buffer">
- <return type="void">
- </return>
- <argument index="0" name="buffer" type="PackedByteArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="buffer" type="PackedByteArray" />
<description>
Stores the given array of bytes in the file.
</description>
</method>
<method name="store_csv_line">
- <return type="void">
- </return>
- <argument index="0" name="values" type="PackedStringArray">
- </argument>
- <argument index="1" name="delim" type="String" default="&quot;,&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="values" type="PackedStringArray" />
+ <argument index="1" name="delim" type="String" default="&quot;,&quot;" />
<description>
Store the given [PackedStringArray] in the file as a line formatted in the CSV (Comma-Separated Values) format. You can pass a different delimiter [code]delim[/code] to use other than the default [code]","[/code] (comma). This delimiter must be one-character long.
Text will be encoded as UTF-8.
</description>
</method>
<method name="store_double">
- <return type="void">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="float" />
<description>
Stores a floating-point number as 64 bits in the file.
</description>
</method>
<method name="store_float">
- <return type="void">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="float" />
<description>
Stores a floating-point number as 32 bits in the file.
</description>
</method>
<method name="store_line">
- <return type="void">
- </return>
- <argument index="0" name="line" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="String" />
<description>
Appends [code]line[/code] to the file followed by a line return character ([code]\n[/code]), encoding the text as UTF-8.
</description>
</method>
<method name="store_pascal_string">
- <return type="void">
- </return>
- <argument index="0" name="string" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="string" type="String" />
<description>
Stores the given [String] as a line in the file in Pascal format (i.e. also store the length of the string).
Text will be encoded as UTF-8.
</description>
</method>
<method name="store_real">
- <return type="void">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="float" />
<description>
Stores a floating-point number in the file.
</description>
</method>
<method name="store_string">
- <return type="void">
- </return>
- <argument index="0" name="string" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="string" type="String" />
<description>
Appends [code]string[/code] to the file without a line return, encoding the text as UTF-8.
</description>
</method>
<method name="store_var">
- <return type="void">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
- <argument index="1" name="full_objects" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="Variant" />
+ <argument index="1" name="full_objects" type="bool" default="false" />
<description>
Stores any Variant value in the file. If [code]full_objects[/code] is [code]true[/code], encoding objects is allowed (and can potentially include code).
[b]Note:[/b] Not all properties are included. Only properties that are configured with the [constant PROPERTY_USAGE_STORAGE] flag set will be serialized. You can add a new usage flag to a property by overriding the [method Object._get_property_list] method in your class. You can also check how property usage is configured by calling [method Object._get_property_list]. See [enum PropertyUsageFlags] for the possible usage flags.
diff --git a/doc/classes/FileDialog.xml b/doc/classes/FileDialog.xml
index 8ccee1c82e..22b5c72fa9 100644
--- a/doc/classes/FileDialog.xml
+++ b/doc/classes/FileDialog.xml
@@ -10,45 +10,38 @@
</tutorials>
<methods>
<method name="add_filter">
- <return type="void">
- </return>
- <argument index="0" name="filter" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="filter" type="String" />
<description>
Adds [code]filter[/code] as a custom filter; [code]filter[/code] should be of the form [code]"filename.extension ; Description"[/code]. For example, [code]"*.png ; PNG Images"[/code].
</description>
</method>
<method name="clear_filters">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clear all the added filters in the dialog.
</description>
</method>
<method name="deselect_all">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clear all currently selected items in the dialog.
</description>
</method>
<method name="get_line_edit">
- <return type="LineEdit">
- </return>
+ <return type="LineEdit" />
<description>
Returns the LineEdit for the selected file.
</description>
</method>
<method name="get_vbox">
- <return type="VBoxContainer">
- </return>
+ <return type="VBoxContainer" />
<description>
Returns the vertical box container of the dialog, custom controls can be added to it.
</description>
</method>
<method name="invalidate">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Invalidate and update the current dialog content list.
</description>
@@ -85,22 +78,19 @@
</members>
<signals>
<signal name="dir_selected">
- <argument index="0" name="dir" type="String">
- </argument>
+ <argument index="0" name="dir" type="String" />
<description>
Emitted when the user selects a directory.
</description>
</signal>
<signal name="file_selected">
- <argument index="0" name="path" type="String">
- </argument>
+ <argument index="0" name="path" type="String" />
<description>
Emitted when the user selects a file by double-clicking it or pressing the [b]OK[/b] button.
</description>
</signal>
<signal name="files_selected">
- <argument index="0" name="paths" type="PackedStringArray">
- </argument>
+ <argument index="0" name="paths" type="PackedStringArray" />
<description>
Emitted when the user selects multiple files.
</description>
@@ -133,34 +123,34 @@
</constant>
</constants>
<theme_items>
- <theme_item name="back_folder" type="Texture2D">
+ <theme_item name="back_folder" data_type="icon" type="Texture2D">
Custom icon for the back arrow.
</theme_item>
- <theme_item name="file" type="Texture2D">
+ <theme_item name="file" data_type="icon" type="Texture2D">
Custom icon for files.
</theme_item>
- <theme_item name="file_icon_modulate" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="file_icon_modulate" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The color modulation applied to the file icon.
</theme_item>
- <theme_item name="files_disabled" type="Color" default="Color(0, 0, 0, 0.7)">
+ <theme_item name="files_disabled" data_type="color" type="Color" default="Color(0, 0, 0, 0.7)">
The color tint for disabled files (when the [FileDialog] is used in open folder mode).
</theme_item>
- <theme_item name="folder" type="Texture2D">
+ <theme_item name="folder" data_type="icon" type="Texture2D">
Custom icon for folders.
</theme_item>
- <theme_item name="folder_icon_modulate" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="folder_icon_modulate" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The color modulation applied to the folder icon.
</theme_item>
- <theme_item name="forward_folder" type="Texture2D">
+ <theme_item name="forward_folder" data_type="icon" type="Texture2D">
Custom icon for the forward arrow.
</theme_item>
- <theme_item name="parent_folder" type="Texture2D">
+ <theme_item name="parent_folder" data_type="icon" type="Texture2D">
Custom icon for the parent folder arrow.
</theme_item>
- <theme_item name="reload" type="Texture2D">
+ <theme_item name="reload" data_type="icon" type="Texture2D">
Custom icon for the reload button.
</theme_item>
- <theme_item name="toggle_hidden" type="Texture2D">
+ <theme_item name="toggle_hidden" data_type="icon" type="Texture2D">
Custom icon for the toggle hidden button.
</theme_item>
</theme_items>
diff --git a/doc/classes/FileSystemDock.xml b/doc/classes/FileSystemDock.xml
index 15f92e90e3..a164415245 100644
--- a/doc/classes/FileSystemDock.xml
+++ b/doc/classes/FileSystemDock.xml
@@ -8,10 +8,8 @@
</tutorials>
<methods>
<method name="navigate_to_path">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
<description>
</description>
</method>
@@ -22,42 +20,34 @@
</description>
</signal>
<signal name="file_removed">
- <argument index="0" name="file" type="String">
- </argument>
+ <argument index="0" name="file" type="String" />
<description>
</description>
</signal>
<signal name="files_moved">
- <argument index="0" name="old_file" type="String">
- </argument>
- <argument index="1" name="new_file" type="String">
- </argument>
+ <argument index="0" name="old_file" type="String" />
+ <argument index="1" name="new_file" type="String" />
<description>
</description>
</signal>
<signal name="folder_moved">
- <argument index="0" name="old_folder" type="String">
- </argument>
- <argument index="1" name="new_file" type="String">
- </argument>
+ <argument index="0" name="old_folder" type="String" />
+ <argument index="1" name="new_file" type="String" />
<description>
</description>
</signal>
<signal name="folder_removed">
- <argument index="0" name="folder" type="String">
- </argument>
+ <argument index="0" name="folder" type="String" />
<description>
</description>
</signal>
<signal name="inherit">
- <argument index="0" name="file" type="String">
- </argument>
+ <argument index="0" name="file" type="String" />
<description>
</description>
</signal>
<signal name="instance">
- <argument index="0" name="files" type="PackedStringArray">
- </argument>
+ <argument index="0" name="files" type="PackedStringArray" />
<description>
</description>
</signal>
diff --git a/doc/classes/Font.xml b/doc/classes/Font.xml
index 186bfbb931..06dcaca846 100644
--- a/doc/classes/Font.xml
+++ b/doc/classes/Font.xml
@@ -64,188 +64,131 @@
</tutorials>
<methods>
<method name="add_data">
- <return type="void">
- </return>
- <argument index="0" name="data" type="FontData">
- </argument>
+ <return type="void" />
+ <argument index="0" name="data" type="FontData" />
<description>
Add font data source to the set.
</description>
</method>
<method name="draw_char" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="canvas_item" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="char" type="int">
- </argument>
- <argument index="3" name="next" type="int" default="0">
- </argument>
- <argument index="4" name="size" type="int" default="-1">
- </argument>
- <argument index="5" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="6" name="outline_size" type="int" default="0">
- </argument>
- <argument index="7" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)">
- </argument>
+ <return type="float" />
+ <argument index="0" name="canvas_item" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="char" type="int" />
+ <argument index="3" name="next" type="int" default="0" />
+ <argument index="4" name="size" type="int" default="-1" />
+ <argument index="5" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="6" name="outline_size" type="int" default="0" />
+ <argument index="7" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)" />
<description>
Draw a single Unicode character [code]char[/code] into a canvas item using the font, at a given position, with [code]modulate[/code] color, and optionally kerning if [code]next[/code] is passed. [code]position[/code] specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis.
[b]Note:[/b] Do not use this function to draw strings character by character, use [method draw_string] or [TextLine] instead.
</description>
</method>
<method name="draw_multiline_string" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas_item" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="text" type="String">
- </argument>
- <argument index="3" name="align" type="int" enum="HAlign" default="0">
- </argument>
- <argument index="4" name="width" type="float" default="-1">
- </argument>
- <argument index="5" name="max_lines" type="int" default="-1">
- </argument>
- <argument index="6" name="size" type="int" default="-1">
- </argument>
- <argument index="7" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="8" name="outline_size" type="int" default="0">
- </argument>
- <argument index="9" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)">
- </argument>
- <argument index="10" name="flags" type="int" default="51">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas_item" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="text" type="String" />
+ <argument index="3" name="align" type="int" enum="HAlign" default="0" />
+ <argument index="4" name="width" type="float" default="-1" />
+ <argument index="5" name="max_lines" type="int" default="-1" />
+ <argument index="6" name="size" type="int" default="-1" />
+ <argument index="7" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="8" name="outline_size" type="int" default="0" />
+ <argument index="9" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)" />
+ <argument index="10" name="flags" type="int" default="51" />
<description>
Breaks [code]text[/code] to the lines using rules specified by [code]flags[/code] and draws it into a canvas item using the font, at a given position, with [code]modulate[/code] color, optionally clipping the width and aligning horizontally. [code]position[/code] specifies the baseline of the first line, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis.
See also [method CanvasItem.draw_multiline_string].
</description>
</method>
<method name="draw_string" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas_item" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="text" type="String">
- </argument>
- <argument index="3" name="align" type="int" enum="HAlign" default="0">
- </argument>
- <argument index="4" name="width" type="float" default="-1">
- </argument>
- <argument index="5" name="size" type="int" default="-1">
- </argument>
- <argument index="6" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="7" name="outline_size" type="int" default="0">
- </argument>
- <argument index="8" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)">
- </argument>
- <argument index="9" name="flags" type="int" default="3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas_item" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="text" type="String" />
+ <argument index="3" name="align" type="int" enum="HAlign" default="0" />
+ <argument index="4" name="width" type="float" default="-1" />
+ <argument index="5" name="size" type="int" default="-1" />
+ <argument index="6" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="7" name="outline_size" type="int" default="0" />
+ <argument index="8" name="outline_modulate" type="Color" default="Color(1, 1, 1, 0)" />
+ <argument index="9" name="flags" type="int" default="3" />
<description>
Draw [code]text[/code] into a canvas item using the font, at a given position, with [code]modulate[/code] color, optionally clipping the width and aligning horizontally. [code]position[/code] specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis.
See also [method CanvasItem.draw_string].
</description>
</method>
<method name="get_ascent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="size" type="int" default="-1">
- </argument>
+ <return type="float" />
+ <argument index="0" name="size" type="int" default="-1" />
<description>
Returns the average font ascent (number of pixels above the baseline).
[b]Note:[/b] Real ascent of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate (e.g. as the ascent of empty line).
</description>
</method>
<method name="get_char_size" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="char" type="int">
- </argument>
- <argument index="1" name="next" type="int" default="0">
- </argument>
- <argument index="2" name="size" type="int" default="-1">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="char" type="int" />
+ <argument index="1" name="next" type="int" default="0" />
+ <argument index="2" name="size" type="int" default="-1" />
<description>
Returns the size of a character, optionally taking kerning into account if the next character is provided.
[b]Note:[/b] Do not use this function to calculate width of the string character by character, use [method get_string_size] or [TextLine] instead. The height returned is the font height (see also [method get_height]) and has no relation to the glyph height.
</description>
</method>
<method name="get_data" qualifiers="const">
- <return type="FontData">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="FontData" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the font data source at index [code]idx[/code]. If the index does not exist, returns [code]null[/code].
</description>
</method>
<method name="get_data_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of font data sources.
</description>
</method>
<method name="get_descent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="size" type="int" default="-1">
- </argument>
+ <return type="float" />
+ <argument index="0" name="size" type="int" default="-1" />
<description>
Returns the average font descent (number of pixels below the baseline).
[b]Note:[/b] Real descent of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate (e.g. as the descent of empty line).
</description>
</method>
<method name="get_height" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="size" type="int" default="-1">
- </argument>
+ <return type="float" />
+ <argument index="0" name="size" type="int" default="-1" />
<description>
Returns the total average font height (ascent plus descent) in pixels.
[b]Note:[/b] Real height of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate (e.g. as the height of empty line).
</description>
</method>
<method name="get_multiline_string_size" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
- <argument index="1" name="width" type="float" default="-1">
- </argument>
- <argument index="2" name="size" type="int" default="-1">
- </argument>
- <argument index="3" name="flags" type="int" default="48">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="text" type="String" />
+ <argument index="1" name="width" type="float" default="-1" />
+ <argument index="2" name="size" type="int" default="-1" />
+ <argument index="3" name="flags" type="int" default="48" />
<description>
Returns the size of a bounding box of a string broken into the lines, taking kerning and advance into account.
See also [method draw_multiline_string].
</description>
</method>
<method name="get_spacing" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="type" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="type" type="int" />
<description>
Returns the spacing for the given [code]type[/code] (see [enum SpacingType]).
</description>
</method>
<method name="get_string_size" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
- <argument index="1" name="size" type="int" default="-1">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="text" type="String" />
+ <argument index="1" name="size" type="int" default="-1" />
<description>
Returns the size of a bounding box of a string, taking kerning and advance into account.
[b]Note:[/b] Real height of the string is context-dependent and can be significantly different from the value returned by [method get_height].
@@ -253,76 +196,60 @@
</description>
</method>
<method name="get_supported_chars" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a string containing all the characters available in the font.
If a given character is included in more than one font data source, it appears only once in the returned string.
</description>
</method>
<method name="get_underline_position" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="size" type="int" default="-1">
- </argument>
+ <return type="float" />
+ <argument index="0" name="size" type="int" default="-1" />
<description>
Return average pixel offset of the underline below the baseline.
[b]Note:[/b] Real underline position of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate.
</description>
</method>
<method name="get_underline_thickness" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="size" type="int" default="-1">
- </argument>
+ <return type="float" />
+ <argument index="0" name="size" type="int" default="-1" />
<description>
Return average thickness of the underline.
[b]Note:[/b] Real underline thickness of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate.
</description>
</method>
<method name="has_char" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="char" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="char" type="int" />
<description>
Return [code]true[/code] if a Unicode [code]char[/code] is available in the font.
</description>
</method>
<method name="remove_data">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Removes the font data source at index [code]idx[/code]. If the index does not exist, nothing happens.
</description>
</method>
<method name="set_data">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="data" type="FontData">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="data" type="FontData" />
<description>
Sets the font data source at index [code]idx[/code]. If the index does not exist, nothing happens.
</description>
</method>
<method name="set_spacing">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
Sets the spacing for [code]type[/code] (see [enum SpacingType]) to [code]value[/code] in pixels (not relative to the font size).
</description>
</method>
<method name="update_changes">
- <return type="void">
- </return>
+ <return type="void" />
<description>
After editing a font (changing data sources, etc.). Call this function to propagate changes to controls that might use it.
</description>
diff --git a/doc/classes/FontData.xml b/doc/classes/FontData.xml
index 0a2fb03750..7a845a698f 100644
--- a/doc/classes/FontData.xml
+++ b/doc/classes/FontData.xml
@@ -12,57 +12,39 @@
</tutorials>
<methods>
<method name="bitmap_add_char">
- <return type="void">
- </return>
- <argument index="0" name="char" type="int">
- </argument>
- <argument index="1" name="texture_idx" type="int">
- </argument>
- <argument index="2" name="rect" type="Rect2">
- </argument>
- <argument index="3" name="align" type="Vector2">
- </argument>
- <argument index="4" name="advance" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="char" type="int" />
+ <argument index="1" name="texture_idx" type="int" />
+ <argument index="2" name="rect" type="Rect2" />
+ <argument index="3" name="align" type="Vector2" />
+ <argument index="4" name="advance" type="float" />
<description>
Adds a character to the font, where [code]character[/code] is the Unicode value, [code]texture[/code] is the texture index, [code]rect[/code] is the region in the texture (in pixels!), [code]align[/code] is the (optional) alignment for the character and [code]advance[/code] is the (optional) advance.
</description>
</method>
<method name="bitmap_add_kerning_pair">
- <return type="void">
- </return>
- <argument index="0" name="A" type="int">
- </argument>
- <argument index="1" name="B" type="int">
- </argument>
- <argument index="2" name="kerning" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="A" type="int" />
+ <argument index="1" name="B" type="int" />
+ <argument index="2" name="kerning" type="int" />
<description>
Adds a kerning pair to the bitmap font as a difference. Kerning pairs are special cases where a typeface advance is determined by the next character.
</description>
</method>
<method name="bitmap_add_texture">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="Texture">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="Texture" />
<description>
Adds a texture to the bitmap font.
</description>
</method>
<method name="draw_glyph" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="size" type="int">
- </argument>
- <argument index="2" name="pos" type="Vector2">
- </argument>
- <argument index="3" name="index" type="int">
- </argument>
- <argument index="4" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="size" type="int" />
+ <argument index="2" name="pos" type="Vector2" />
+ <argument index="3" name="index" type="int" />
+ <argument index="4" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draws single glyph into a canvas item at the position, using [code]font[/code] at the size [code]size[/code].
Returns advance of the glyph for horizontal and vertical layouts.
@@ -70,20 +52,13 @@
</description>
</method>
<method name="draw_glyph_outline" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="size" type="int">
- </argument>
- <argument index="2" name="outline_size" type="int">
- </argument>
- <argument index="3" name="pos" type="Vector2">
- </argument>
- <argument index="4" name="index" type="int">
- </argument>
- <argument index="5" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="size" type="int" />
+ <argument index="2" name="outline_size" type="int" />
+ <argument index="3" name="pos" type="Vector2" />
+ <argument index="4" name="index" type="int" />
+ <argument index="5" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draws single glyph outline of size [code]outline_size[/code] into a canvas item at the position, using [code]font[/code] at the size [code]size[/code]. If outline drawing is not supported, nothing is drawn.
Returns advance of the glyph for horizontal and vertical layouts (regardless of outline drawing support).
@@ -91,290 +66,223 @@
</description>
</method>
<method name="get_ascent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="size" type="int" />
<description>
Returns the font ascent (number of pixels above the baseline).
</description>
</method>
<method name="get_base_size" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the base size of the font (the only size supported for non-scalable fonts, meaningless for scalable fonts).
</description>
</method>
<method name="get_descent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="size" type="int" />
<description>
Returns the font descent (number of pixels below the baseline).
</description>
</method>
<method name="get_glyph_advance" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="size" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="size" type="int" />
<description>
Returns advance of the glyph for horizontal and vertical layouts.
Note: Glyph index is bound to the font data, use only glyphs indices returned by [method TextServer.shaped_text_get_glyphs] or [method get_glyph_index] for this font data.
</description>
</method>
<method name="get_glyph_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="char" type="int">
- </argument>
- <argument index="1" name="variation_selector" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="char" type="int" />
+ <argument index="1" name="variation_selector" type="int" default="0" />
<description>
Return the glyph index of a [code]char[/code], optionally modified by the [code]variation_selector[/code].
</description>
</method>
<method name="get_glyph_kerning" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="index_a" type="int">
- </argument>
- <argument index="1" name="index_b" type="int">
- </argument>
- <argument index="2" name="size" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="index_a" type="int" />
+ <argument index="1" name="index_b" type="int" />
+ <argument index="2" name="size" type="int" />
<description>
Returns a kerning of the pair of glyphs for horizontal and vertical layouts.
Note: Glyph index is bound to the font data, use only glyphs indices returned by [method TextServer.shaped_text_get_glyphs] or [method get_glyph_index] for this font data.
</description>
</method>
<method name="get_height" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="size" type="int" />
<description>
Returns the total font height (ascent plus descent) in pixels.
</description>
</method>
<method name="get_language_support_override" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="language" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="language" type="String" />
<description>
Returns [code]true[/code] if support override is enabled for the [code]language[/code].
</description>
</method>
<method name="get_language_support_overrides" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns list of language support overrides.
</description>
</method>
<method name="get_script_support_override" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="script" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="script" type="String" />
<description>
Returns [code]true[/code] if support override is enabled for the [code]script[/code].
</description>
</method>
<method name="get_script_support_overrides" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns list of script support overrides.
</description>
</method>
<method name="get_spacing" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="type" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="type" type="int" />
<description>
Returns the spacing for the given [code]type[/code] (see [enum SpacingType]).
</description>
</method>
<method name="get_supported_chars" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a string containing all the characters available in the font.
</description>
</method>
<method name="get_underline_position" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="size" type="int" />
<description>
Returns underline offset (number of pixels below the baseline).
</description>
</method>
<method name="get_underline_thickness" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="size" type="int" />
<description>
Returns underline thickness in pixels.
</description>
</method>
<method name="get_variation" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
+ <return type="float" />
+ <argument index="0" name="tag" type="String" />
<description>
Returns variation coordinate [code]tag[/code].
</description>
</method>
<method name="get_variation_list" qualifiers="const">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Returns list of supported [url=https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg]variation coordinates[/url], each coordinate is returned as [code]tag: Vector3i(min_value,max_value,default_value)[/code].
Font variations allow for continuous change of glyph characteristics along some given design axis, such as weight, width or slant.
</description>
</method>
<method name="has_char" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="char" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="char" type="int" />
<description>
Return [code]true[/code] if a Unicode [code]char[/code] is available in the font.
</description>
</method>
<method name="has_outline" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code], if font supports drawing glyph outlines.
</description>
</method>
<method name="is_language_supported" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="language" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="language" type="String" />
<description>
Returns [code]true[/code], if font supports given language ([url=https://en.wikipedia.org/wiki/ISO_639-1]ISO 639[/url] code).
</description>
</method>
<method name="is_script_supported" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="script" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="script" type="String" />
<description>
Returns [code]true[/code], if font supports given script ([url=https://en.wikipedia.org/wiki/ISO_15924]ISO 15924[/url] code).
</description>
</method>
<method name="load_memory">
- <return type="void">
- </return>
- <argument index="0" name="data" type="PackedByteArray">
- </argument>
- <argument index="1" name="type" type="String">
- </argument>
- <argument index="2" name="base_size" type="int" default="16">
- </argument>
+ <return type="void" />
+ <argument index="0" name="data" type="PackedByteArray" />
+ <argument index="1" name="type" type="String" />
+ <argument index="2" name="base_size" type="int" default="16" />
<description>
Creates new font from the data in memory.
Note: For non-scalable fonts [code]base_size[/code] is ignored, use [method get_base_size] to check actual font size.
</description>
</method>
<method name="load_resource">
- <return type="void">
- </return>
- <argument index="0" name="filename" type="String">
- </argument>
- <argument index="1" name="base_size" type="int" default="16">
- </argument>
+ <return type="void" />
+ <argument index="0" name="filename" type="String" />
+ <argument index="1" name="base_size" type="int" default="16" />
<description>
Creates new font from the file.
Note: For non-scalable fonts [code]base_size[/code] is ignored, use [method get_base_size] to check actual font size.
</description>
</method>
<method name="new_bitmap">
- <return type="void">
- </return>
- <argument index="0" name="height" type="float">
- </argument>
- <argument index="1" name="ascent" type="float">
- </argument>
- <argument index="2" name="base_size" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="height" type="float" />
+ <argument index="1" name="ascent" type="float" />
+ <argument index="2" name="base_size" type="int" />
<description>
Creates new, empty bitmap font.
</description>
</method>
<method name="remove_language_support_override">
- <return type="void">
- </return>
- <argument index="0" name="language" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="language" type="String" />
<description>
Remove language support override.
</description>
</method>
<method name="remove_script_support_override">
- <return type="void">
- </return>
- <argument index="0" name="script" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="script" type="String" />
<description>
Removes script support override.
</description>
</method>
<method name="set_language_support_override">
- <return type="void">
- </return>
- <argument index="0" name="language" type="String">
- </argument>
- <argument index="1" name="supported" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="language" type="String" />
+ <argument index="1" name="supported" type="bool" />
<description>
Adds override for [method is_language_supported].
</description>
</method>
<method name="set_script_support_override">
- <return type="void">
- </return>
- <argument index="0" name="script" type="String">
- </argument>
- <argument index="1" name="supported" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="script" type="String" />
+ <argument index="1" name="supported" type="bool" />
<description>
Adds override for [method is_script_supported].
</description>
</method>
<method name="set_spacing">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
Sets the spacing for [code]type[/code] (see [enum SpacingType]) to [code]value[/code] in pixels (not relative to the font size).
</description>
</method>
<method name="set_variation">
- <return type="void">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tag" type="String" />
+ <argument index="1" name="value" type="float" />
<description>
Sets variation coordinate [code]tag[/code].
</description>
diff --git a/doc/classes/GPUParticles2D.xml b/doc/classes/GPUParticles2D.xml
index 8684a7f41a..72bd6a6411 100644
--- a/doc/classes/GPUParticles2D.xml
+++ b/doc/classes/GPUParticles2D.xml
@@ -13,15 +13,13 @@
</tutorials>
<methods>
<method name="capture_rect" qualifiers="const">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Returns a rectangle containing the positions of all existing particles.
</description>
</method>
<method name="restart">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Restarts all the existing particles.
</description>
diff --git a/doc/classes/GPUParticles3D.xml b/doc/classes/GPUParticles3D.xml
index 55e9b33aa8..3f7b20f274 100644
--- a/doc/classes/GPUParticles3D.xml
+++ b/doc/classes/GPUParticles3D.xml
@@ -13,51 +13,38 @@
</tutorials>
<methods>
<method name="capture_aabb" qualifiers="const">
- <return type="AABB">
- </return>
+ <return type="AABB" />
<description>
Returns the axis-aligned bounding box that contains all the particles that are active in the current frame.
</description>
</method>
<method name="emit_particle">
- <return type="void">
- </return>
- <argument index="0" name="xform" type="Transform3D">
- </argument>
- <argument index="1" name="velocity" type="Vector3">
- </argument>
- <argument index="2" name="color" type="Color">
- </argument>
- <argument index="3" name="custom" type="Color">
- </argument>
- <argument index="4" name="flags" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="xform" type="Transform3D" />
+ <argument index="1" name="velocity" type="Vector3" />
+ <argument index="2" name="color" type="Color" />
+ <argument index="3" name="custom" type="Color" />
+ <argument index="4" name="flags" type="int" />
<description>
</description>
</method>
<method name="get_draw_pass_mesh" qualifiers="const">
- <return type="Mesh">
- </return>
- <argument index="0" name="pass" type="int">
- </argument>
+ <return type="Mesh" />
+ <argument index="0" name="pass" type="int" />
<description>
Returns the [Mesh] that is drawn at index [code]pass[/code].
</description>
</method>
<method name="restart">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Restarts the particle emission, clearing existing particles.
</description>
</method>
<method name="set_draw_pass_mesh">
- <return type="void">
- </return>
- <argument index="0" name="pass" type="int">
- </argument>
- <argument index="1" name="mesh" type="Mesh">
- </argument>
+ <return type="void" />
+ <argument index="0" name="pass" type="int" />
+ <argument index="1" name="mesh" type="Mesh" />
<description>
Sets the [Mesh] that is drawn at index [code]pass[/code].
</description>
diff --git a/doc/classes/Generic6DOFJoint3D.xml b/doc/classes/Generic6DOFJoint3D.xml
index 79b861dfb8..ebfcaa7678 100644
--- a/doc/classes/Generic6DOFJoint3D.xml
+++ b/doc/classes/Generic6DOFJoint3D.xml
@@ -10,110 +10,80 @@
</tutorials>
<methods>
<method name="get_flag_x" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
<description>
</description>
</method>
<method name="get_flag_y" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
<description>
</description>
</method>
<method name="get_flag_z" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
<description>
</description>
</method>
<method name="get_param_x" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
<description>
</description>
</method>
<method name="get_param_y" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
<description>
</description>
</method>
<method name="get_param_z" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
<description>
</description>
</method>
<method name="set_flag_x">
- <return type="void">
- </return>
- <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
+ <argument index="1" name="value" type="bool" />
<description>
</description>
</method>
<method name="set_flag_y">
- <return type="void">
- </return>
- <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
+ <argument index="1" name="value" type="bool" />
<description>
</description>
</method>
<method name="set_flag_z">
- <return type="void">
- </return>
- <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="flag" type="int" enum="Generic6DOFJoint3D.Flag" />
+ <argument index="1" name="value" type="bool" />
<description>
</description>
</method>
<method name="set_param_x">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
+ <argument index="1" name="value" type="float" />
<description>
</description>
</method>
<method name="set_param_y">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
+ <argument index="1" name="value" type="float" />
<description>
</description>
</method>
<method name="set_param_z">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="Generic6DOFJoint3D.Param" />
+ <argument index="1" name="value" type="float" />
<description>
</description>
</method>
diff --git a/doc/classes/Geometry2D.xml b/doc/classes/Geometry2D.xml
index 13354ec19e..157124cded 100644
--- a/doc/classes/Geometry2D.xml
+++ b/doc/classes/Geometry2D.xml
@@ -10,192 +10,139 @@
</tutorials>
<methods>
<method name="clip_polygons">
- <return type="Array">
- </return>
- <argument index="0" name="polygon_a" type="PackedVector2Array">
- </argument>
- <argument index="1" name="polygon_b" type="PackedVector2Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="polygon_a" type="PackedVector2Array" />
+ <argument index="1" name="polygon_b" type="PackedVector2Array" />
<description>
Clips [code]polygon_a[/code] against [code]polygon_b[/code] and returns an array of clipped polygons. This performs [constant OPERATION_DIFFERENCE] between polygons. Returns an empty array if [code]polygon_b[/code] completely overlaps [code]polygon_a[/code].
If [code]polygon_b[/code] is enclosed by [code]polygon_a[/code], returns an outer polygon (boundary) and inner polygon (hole) which could be distinguished by calling [method is_polygon_clockwise].
</description>
</method>
<method name="clip_polyline_with_polygon">
- <return type="Array">
- </return>
- <argument index="0" name="polyline" type="PackedVector2Array">
- </argument>
- <argument index="1" name="polygon" type="PackedVector2Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="polyline" type="PackedVector2Array" />
+ <argument index="1" name="polygon" type="PackedVector2Array" />
<description>
Clips [code]polyline[/code] against [code]polygon[/code] and returns an array of clipped polylines. This performs [constant OPERATION_DIFFERENCE] between the polyline and the polygon. This operation can be thought of as cutting a line with a closed shape.
</description>
</method>
<method name="convex_hull">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="points" type="PackedVector2Array">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="points" type="PackedVector2Array" />
<description>
Given an array of [Vector2]s, returns the convex hull as a list of points in counterclockwise order. The last point is the same as the first one.
</description>
</method>
<method name="exclude_polygons">
- <return type="Array">
- </return>
- <argument index="0" name="polygon_a" type="PackedVector2Array">
- </argument>
- <argument index="1" name="polygon_b" type="PackedVector2Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="polygon_a" type="PackedVector2Array" />
+ <argument index="1" name="polygon_b" type="PackedVector2Array" />
<description>
Mutually excludes common area defined by intersection of [code]polygon_a[/code] and [code]polygon_b[/code] (see [method intersect_polygons]) and returns an array of excluded polygons. This performs [constant OPERATION_XOR] between polygons. In other words, returns all but common area between polygons.
The operation may result in an outer polygon (boundary) and inner polygon (hole) produced which could be distinguished by calling [method is_polygon_clockwise].
</description>
</method>
<method name="get_closest_point_to_segment">
- <return type="Vector2">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
- <argument index="1" name="s1" type="Vector2">
- </argument>
- <argument index="2" name="s2" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="point" type="Vector2" />
+ <argument index="1" name="s1" type="Vector2" />
+ <argument index="2" name="s2" type="Vector2" />
<description>
Returns the 2D point on the 2D segment ([code]s1[/code], [code]s2[/code]) that is closest to [code]point[/code]. The returned point will always be inside the specified segment.
</description>
</method>
<method name="get_closest_point_to_segment_uncapped">
- <return type="Vector2">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
- <argument index="1" name="s1" type="Vector2">
- </argument>
- <argument index="2" name="s2" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="point" type="Vector2" />
+ <argument index="1" name="s1" type="Vector2" />
+ <argument index="2" name="s2" type="Vector2" />
<description>
Returns the 2D point on the 2D line defined by ([code]s1[/code], [code]s2[/code]) that is closest to [code]point[/code]. The returned point can be inside the segment ([code]s1[/code], [code]s2[/code]) or outside of it, i.e. somewhere on the line extending from the segment.
</description>
</method>
<method name="get_closest_points_between_segments">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="p1" type="Vector2">
- </argument>
- <argument index="1" name="q1" type="Vector2">
- </argument>
- <argument index="2" name="p2" type="Vector2">
- </argument>
- <argument index="3" name="q2" type="Vector2">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="p1" type="Vector2" />
+ <argument index="1" name="q1" type="Vector2" />
+ <argument index="2" name="p2" type="Vector2" />
+ <argument index="3" name="q2" type="Vector2" />
<description>
Given the two 2D segments ([code]p1[/code], [code]q1[/code]) and ([code]p2[/code], [code]q2[/code]), finds those two points on the two segments that are closest to each other. Returns a [PackedVector2Array] that contains this point on ([code]p1[/code], [code]q1[/code]) as well the accompanying point on ([code]p2[/code], [code]q2[/code]).
</description>
</method>
<method name="intersect_polygons">
- <return type="Array">
- </return>
- <argument index="0" name="polygon_a" type="PackedVector2Array">
- </argument>
- <argument index="1" name="polygon_b" type="PackedVector2Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="polygon_a" type="PackedVector2Array" />
+ <argument index="1" name="polygon_b" type="PackedVector2Array" />
<description>
Intersects [code]polygon_a[/code] with [code]polygon_b[/code] and returns an array of intersected polygons. This performs [constant OPERATION_INTERSECTION] between polygons. In other words, returns common area shared by polygons. Returns an empty array if no intersection occurs.
The operation may result in an outer polygon (boundary) and inner polygon (hole) produced which could be distinguished by calling [method is_polygon_clockwise].
</description>
</method>
<method name="intersect_polyline_with_polygon">
- <return type="Array">
- </return>
- <argument index="0" name="polyline" type="PackedVector2Array">
- </argument>
- <argument index="1" name="polygon" type="PackedVector2Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="polyline" type="PackedVector2Array" />
+ <argument index="1" name="polygon" type="PackedVector2Array" />
<description>
Intersects [code]polyline[/code] with [code]polygon[/code] and returns an array of intersected polylines. This performs [constant OPERATION_INTERSECTION] between the polyline and the polygon. This operation can be thought of as chopping a line with a closed shape.
</description>
</method>
<method name="is_point_in_circle">
- <return type="bool">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
- <argument index="1" name="circle_position" type="Vector2">
- </argument>
- <argument index="2" name="circle_radius" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="point" type="Vector2" />
+ <argument index="1" name="circle_position" type="Vector2" />
+ <argument index="2" name="circle_radius" type="float" />
<description>
Returns [code]true[/code] if [code]point[/code] is inside the circle or if it's located exactly [i]on[/i] the circle's boundary, otherwise returns [code]false[/code].
</description>
</method>
<method name="is_point_in_polygon">
- <return type="bool">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
- <argument index="1" name="polygon" type="PackedVector2Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="point" type="Vector2" />
+ <argument index="1" name="polygon" type="PackedVector2Array" />
<description>
Returns [code]true[/code] if [code]point[/code] is inside [code]polygon[/code] or if it's located exactly [i]on[/i] polygon's boundary, otherwise returns [code]false[/code].
</description>
</method>
<method name="is_polygon_clockwise">
- <return type="bool">
- </return>
- <argument index="0" name="polygon" type="PackedVector2Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="polygon" type="PackedVector2Array" />
<description>
Returns [code]true[/code] if [code]polygon[/code]'s vertices are ordered in clockwise order, otherwise returns [code]false[/code].
</description>
</method>
<method name="line_intersects_line">
- <return type="Variant">
- </return>
- <argument index="0" name="from_a" type="Vector2">
- </argument>
- <argument index="1" name="dir_a" type="Vector2">
- </argument>
- <argument index="2" name="from_b" type="Vector2">
- </argument>
- <argument index="3" name="dir_b" type="Vector2">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="from_a" type="Vector2" />
+ <argument index="1" name="dir_a" type="Vector2" />
+ <argument index="2" name="from_b" type="Vector2" />
+ <argument index="3" name="dir_b" type="Vector2" />
<description>
Checks if the two lines ([code]from_a[/code], [code]dir_a[/code]) and ([code]from_b[/code], [code]dir_b[/code]) intersect. If yes, return the point of intersection as [Vector2]. If no intersection takes place, returns an empty [Variant].
[b]Note:[/b] The lines are specified using direction vectors, not end points.
</description>
</method>
<method name="make_atlas">
- <return type="Dictionary">
- </return>
- <argument index="0" name="sizes" type="PackedVector2Array">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="sizes" type="PackedVector2Array" />
<description>
Given an array of [Vector2]s representing tiles, builds an atlas. The returned dictionary has two keys: [code]points[/code] is a vector of [Vector2] that specifies the positions of each tile, [code]size[/code] contains the overall size of the whole atlas as [Vector2].
</description>
</method>
<method name="merge_polygons">
- <return type="Array">
- </return>
- <argument index="0" name="polygon_a" type="PackedVector2Array">
- </argument>
- <argument index="1" name="polygon_b" type="PackedVector2Array">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="polygon_a" type="PackedVector2Array" />
+ <argument index="1" name="polygon_b" type="PackedVector2Array" />
<description>
Merges (combines) [code]polygon_a[/code] and [code]polygon_b[/code] and returns an array of merged polygons. This performs [constant OPERATION_UNION] between polygons.
The operation may result in an outer polygon (boundary) and multiple inner polygons (holes) produced which could be distinguished by calling [method is_polygon_clockwise].
</description>
</method>
<method name="offset_polygon">
- <return type="Array">
- </return>
- <argument index="0" name="polygon" type="PackedVector2Array">
- </argument>
- <argument index="1" name="delta" type="float">
- </argument>
- <argument index="2" name="join_type" type="int" enum="Geometry2D.PolyJoinType" default="0">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="polygon" type="PackedVector2Array" />
+ <argument index="1" name="delta" type="float" />
+ <argument index="2" name="join_type" type="int" enum="Geometry2D.PolyJoinType" default="0" />
<description>
Inflates or deflates [code]polygon[/code] by [code]delta[/code] units (pixels). If [code]delta[/code] is positive, makes the polygon grow outward. If [code]delta[/code] is negative, shrinks the polygon inward. Returns an array of polygons because inflating/deflating may result in multiple discrete polygons. Returns an empty array if [code]delta[/code] is negative and the absolute value of it approximately exceeds the minimum bounding rectangle dimensions of the polygon.
Each polygon's vertices will be rounded as determined by [code]join_type[/code], see [enum PolyJoinType].
@@ -219,16 +166,11 @@
</description>
</method>
<method name="offset_polyline">
- <return type="Array">
- </return>
- <argument index="0" name="polyline" type="PackedVector2Array">
- </argument>
- <argument index="1" name="delta" type="float">
- </argument>
- <argument index="2" name="join_type" type="int" enum="Geometry2D.PolyJoinType" default="0">
- </argument>
- <argument index="3" name="end_type" type="int" enum="Geometry2D.PolyEndType" default="3">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="polyline" type="PackedVector2Array" />
+ <argument index="1" name="delta" type="float" />
+ <argument index="2" name="join_type" type="int" enum="Geometry2D.PolyJoinType" default="0" />
+ <argument index="3" name="end_type" type="int" enum="Geometry2D.PolyEndType" default="3" />
<description>
Inflates or deflates [code]polyline[/code] by [code]delta[/code] units (pixels), producing polygons. If [code]delta[/code] is positive, makes the polyline grow outward. Returns an array of polygons because inflating/deflating may result in multiple discrete polygons. If [code]delta[/code] is negative, returns an empty array.
Each polygon's vertices will be rounded as determined by [code]join_type[/code], see [enum PolyJoinType].
@@ -237,49 +179,35 @@
</description>
</method>
<method name="point_is_inside_triangle" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
- <argument index="1" name="a" type="Vector2">
- </argument>
- <argument index="2" name="b" type="Vector2">
- </argument>
- <argument index="3" name="c" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="point" type="Vector2" />
+ <argument index="1" name="a" type="Vector2" />
+ <argument index="2" name="b" type="Vector2" />
+ <argument index="3" name="c" type="Vector2" />
<description>
Returns if [code]point[/code] is inside the triangle specified by [code]a[/code], [code]b[/code] and [code]c[/code].
</description>
</method>
<method name="segment_intersects_segment">
- <return type="Variant">
- </return>
- <argument index="0" name="from_a" type="Vector2">
- </argument>
- <argument index="1" name="to_a" type="Vector2">
- </argument>
- <argument index="2" name="from_b" type="Vector2">
- </argument>
- <argument index="3" name="to_b" type="Vector2">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="from_a" type="Vector2" />
+ <argument index="1" name="to_a" type="Vector2" />
+ <argument index="2" name="from_b" type="Vector2" />
+ <argument index="3" name="to_b" type="Vector2" />
<description>
Checks if the two segments ([code]from_a[/code], [code]to_a[/code]) and ([code]from_b[/code], [code]to_b[/code]) intersect. If yes, return the point of intersection as [Vector2]. If no intersection takes place, returns an empty [Variant].
</description>
</method>
<method name="triangulate_delaunay">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="points" type="PackedVector2Array">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="points" type="PackedVector2Array" />
<description>
Triangulates the area specified by discrete set of [code]points[/code] such that no point is inside the circumcircle of any resulting triangle. Returns a [PackedInt32Array] where each triangle consists of three consecutive point indices into [code]points[/code] (i.e. the returned array will have [code]n * 3[/code] elements, with [code]n[/code] being the number of found triangles). If the triangulation did not succeed, an empty [PackedInt32Array] is returned.
</description>
</method>
<method name="triangulate_polygon">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="polygon" type="PackedVector2Array">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="polygon" type="PackedVector2Array" />
<description>
Triangulates the polygon specified by the points in [code]polygon[/code]. Returns a [PackedInt32Array] where each triangle consists of three consecutive point indices into [code]polygon[/code] (i.e. the returned array will have [code]n * 3[/code] elements, with [code]n[/code] being the number of found triangles). If the triangulation did not succeed, an empty [PackedInt32Array] is returned.
</description>
diff --git a/doc/classes/Geometry3D.xml b/doc/classes/Geometry3D.xml
index 9f012008e3..9d0234529a 100644
--- a/doc/classes/Geometry3D.xml
+++ b/doc/classes/Geometry3D.xml
@@ -10,171 +10,116 @@
</tutorials>
<methods>
<method name="build_box_planes">
- <return type="Array">
- </return>
- <argument index="0" name="extents" type="Vector3">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="extents" type="Vector3" />
<description>
Returns an array with 6 [Plane]s that describe the sides of a box centered at the origin. The box size is defined by [code]extents[/code], which represents one (positive) corner of the box (i.e. half its actual size).
</description>
</method>
<method name="build_capsule_planes">
- <return type="Array">
- </return>
- <argument index="0" name="radius" type="float">
- </argument>
- <argument index="1" name="height" type="float">
- </argument>
- <argument index="2" name="sides" type="int">
- </argument>
- <argument index="3" name="lats" type="int">
- </argument>
- <argument index="4" name="axis" type="int" enum="Vector3.Axis" default="2">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="radius" type="float" />
+ <argument index="1" name="height" type="float" />
+ <argument index="2" name="sides" type="int" />
+ <argument index="3" name="lats" type="int" />
+ <argument index="4" name="axis" type="int" enum="Vector3.Axis" default="2" />
<description>
Returns an array of [Plane]s closely bounding a faceted capsule centered at the origin with radius [code]radius[/code] and height [code]height[/code]. The parameter [code]sides[/code] defines how many planes will be generated for the side part of the capsule, whereas [code]lats[/code] gives the number of latitudinal steps at the bottom and top of the capsule. The parameter [code]axis[/code] describes the axis along which the capsule is oriented (0 for X, 1 for Y, 2 for Z).
</description>
</method>
<method name="build_cylinder_planes">
- <return type="Array">
- </return>
- <argument index="0" name="radius" type="float">
- </argument>
- <argument index="1" name="height" type="float">
- </argument>
- <argument index="2" name="sides" type="int">
- </argument>
- <argument index="3" name="axis" type="int" enum="Vector3.Axis" default="2">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="radius" type="float" />
+ <argument index="1" name="height" type="float" />
+ <argument index="2" name="sides" type="int" />
+ <argument index="3" name="axis" type="int" enum="Vector3.Axis" default="2" />
<description>
Returns an array of [Plane]s closely bounding a faceted cylinder centered at the origin with radius [code]radius[/code] and height [code]height[/code]. The parameter [code]sides[/code] defines how many planes will be generated for the round part of the cylinder. The parameter [code]axis[/code] describes the axis along which the cylinder is oriented (0 for X, 1 for Y, 2 for Z).
</description>
</method>
<method name="clip_polygon">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="points" type="PackedVector3Array">
- </argument>
- <argument index="1" name="plane" type="Plane">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="points" type="PackedVector3Array" />
+ <argument index="1" name="plane" type="Plane" />
<description>
Clips the polygon defined by the points in [code]points[/code] against the [code]plane[/code] and returns the points of the clipped polygon.
</description>
</method>
<method name="get_closest_point_to_segment">
- <return type="Vector3">
- </return>
- <argument index="0" name="point" type="Vector3">
- </argument>
- <argument index="1" name="s1" type="Vector3">
- </argument>
- <argument index="2" name="s2" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="point" type="Vector3" />
+ <argument index="1" name="s1" type="Vector3" />
+ <argument index="2" name="s2" type="Vector3" />
<description>
Returns the 3D point on the 3D segment ([code]s1[/code], [code]s2[/code]) that is closest to [code]point[/code]. The returned point will always be inside the specified segment.
</description>
</method>
<method name="get_closest_point_to_segment_uncapped">
- <return type="Vector3">
- </return>
- <argument index="0" name="point" type="Vector3">
- </argument>
- <argument index="1" name="s1" type="Vector3">
- </argument>
- <argument index="2" name="s2" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="point" type="Vector3" />
+ <argument index="1" name="s1" type="Vector3" />
+ <argument index="2" name="s2" type="Vector3" />
<description>
Returns the 3D point on the 3D line defined by ([code]s1[/code], [code]s2[/code]) that is closest to [code]point[/code]. The returned point can be inside the segment ([code]s1[/code], [code]s2[/code]) or outside of it, i.e. somewhere on the line extending from the segment.
</description>
</method>
<method name="get_closest_points_between_segments">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="p1" type="Vector3">
- </argument>
- <argument index="1" name="p2" type="Vector3">
- </argument>
- <argument index="2" name="q1" type="Vector3">
- </argument>
- <argument index="3" name="q2" type="Vector3">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="p1" type="Vector3" />
+ <argument index="1" name="p2" type="Vector3" />
+ <argument index="2" name="q1" type="Vector3" />
+ <argument index="3" name="q2" type="Vector3" />
<description>
Given the two 3D segments ([code]p1[/code], [code]p2[/code]) and ([code]q1[/code], [code]q2[/code]), finds those two points on the two segments that are closest to each other. Returns a [PackedVector3Array] that contains this point on ([code]p1[/code], [code]p2[/code]) as well the accompanying point on ([code]q1[/code], [code]q2[/code]).
</description>
</method>
<method name="ray_intersects_triangle">
- <return type="Variant">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
- <argument index="1" name="dir" type="Vector3">
- </argument>
- <argument index="2" name="a" type="Vector3">
- </argument>
- <argument index="3" name="b" type="Vector3">
- </argument>
- <argument index="4" name="c" type="Vector3">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="from" type="Vector3" />
+ <argument index="1" name="dir" type="Vector3" />
+ <argument index="2" name="a" type="Vector3" />
+ <argument index="3" name="b" type="Vector3" />
+ <argument index="4" name="c" type="Vector3" />
<description>
Tests if the 3D ray starting at [code]from[/code] with the direction of [code]dir[/code] intersects the triangle specified by [code]a[/code], [code]b[/code] and [code]c[/code]. If yes, returns the point of intersection as [Vector3]. If no intersection takes place, an empty [Variant] is returned.
</description>
</method>
<method name="segment_intersects_convex">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
- <argument index="1" name="to" type="Vector3">
- </argument>
- <argument index="2" name="planes" type="Array">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="from" type="Vector3" />
+ <argument index="1" name="to" type="Vector3" />
+ <argument index="2" name="planes" type="Array" />
<description>
Given a convex hull defined though the [Plane]s in the array [code]planes[/code], tests if the segment ([code]from[/code], [code]to[/code]) intersects with that hull. If an intersection is found, returns a [PackedVector3Array] containing the point the intersection and the hull's normal. Otherwise, returns an empty array.
</description>
</method>
<method name="segment_intersects_cylinder">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
- <argument index="1" name="to" type="Vector3">
- </argument>
- <argument index="2" name="height" type="float">
- </argument>
- <argument index="3" name="radius" type="float">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="from" type="Vector3" />
+ <argument index="1" name="to" type="Vector3" />
+ <argument index="2" name="height" type="float" />
+ <argument index="3" name="radius" type="float" />
<description>
Checks if the segment ([code]from[/code], [code]to[/code]) intersects the cylinder with height [code]height[/code] that is centered at the origin and has radius [code]radius[/code]. If no, returns an empty [PackedVector3Array]. If an intersection takes place, the returned array contains the point of intersection and the cylinder's normal at the point of intersection.
</description>
</method>
<method name="segment_intersects_sphere">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
- <argument index="1" name="to" type="Vector3">
- </argument>
- <argument index="2" name="sphere_position" type="Vector3">
- </argument>
- <argument index="3" name="sphere_radius" type="float">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="from" type="Vector3" />
+ <argument index="1" name="to" type="Vector3" />
+ <argument index="2" name="sphere_position" type="Vector3" />
+ <argument index="3" name="sphere_radius" type="float" />
<description>
Checks if the segment ([code]from[/code], [code]to[/code]) intersects the sphere that is located at [code]sphere_position[/code] and has radius [code]sphere_radius[/code]. If no, returns an empty [PackedVector3Array]. If yes, returns a [PackedVector3Array] containing the point of intersection and the sphere's normal at the point of intersection.
</description>
</method>
<method name="segment_intersects_triangle">
- <return type="Variant">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
- <argument index="1" name="to" type="Vector3">
- </argument>
- <argument index="2" name="a" type="Vector3">
- </argument>
- <argument index="3" name="b" type="Vector3">
- </argument>
- <argument index="4" name="c" type="Vector3">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="from" type="Vector3" />
+ <argument index="1" name="to" type="Vector3" />
+ <argument index="2" name="a" type="Vector3" />
+ <argument index="3" name="b" type="Vector3" />
+ <argument index="4" name="c" type="Vector3" />
<description>
Tests if the segment ([code]from[/code], [code]to[/code]) intersects the triangle [code]a[/code], [code]b[/code], [code]c[/code]. If yes, returns the point of intersection as [Vector3]. If no intersection takes place, an empty [Variant] is returned.
</description>
diff --git a/doc/classes/GeometryInstance3D.xml b/doc/classes/GeometryInstance3D.xml
index 667ca2dacf..97cef205c3 100644
--- a/doc/classes/GeometryInstance3D.xml
+++ b/doc/classes/GeometryInstance3D.xml
@@ -10,29 +10,22 @@
</tutorials>
<methods>
<method name="get_shader_instance_uniform" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="uniform" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="uniform" type="StringName" />
<description>
</description>
</method>
<method name="set_custom_aabb">
- <return type="void">
- </return>
- <argument index="0" name="aabb" type="AABB">
- </argument>
+ <return type="void" />
+ <argument index="0" name="aabb" type="AABB" />
<description>
Overrides the bounding box of this node with a custom one. To remove it, set an [AABB] with all fields set to zero.
</description>
</method>
<method name="set_shader_instance_uniform">
- <return type="void">
- </return>
- <argument index="0" name="uniform" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="uniform" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
</description>
</method>
diff --git a/doc/classes/Gradient.xml b/doc/classes/Gradient.xml
index 1f1f266c59..a9577fda90 100644
--- a/doc/classes/Gradient.xml
+++ b/doc/classes/Gradient.xml
@@ -10,77 +10,59 @@
</tutorials>
<methods>
<method name="add_point">
- <return type="void">
- </return>
- <argument index="0" name="offset" type="float">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="offset" type="float" />
+ <argument index="1" name="color" type="Color" />
<description>
Adds the specified color to the end of the gradient, with the specified offset.
</description>
</method>
<method name="get_color">
- <return type="Color">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="point" type="int" />
<description>
Returns the color of the gradient color at index [code]point[/code].
</description>
</method>
<method name="get_offset">
- <return type="float">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="point" type="int" />
<description>
Returns the offset of the gradient color at index [code]point[/code].
</description>
</method>
<method name="get_point_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of colors in the gradient.
</description>
</method>
<method name="interpolate">
- <return type="Color">
- </return>
- <argument index="0" name="offset" type="float">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="offset" type="float" />
<description>
Returns the interpolated color specified by [code]offset[/code].
</description>
</method>
<method name="remove_point">
- <return type="void">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point" type="int" />
<description>
Removes the color at the index [code]point[/code].
</description>
</method>
<method name="set_color">
- <return type="void">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point" type="int" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the color of the gradient color at index [code]point[/code].
</description>
</method>
<method name="set_offset">
- <return type="void">
- </return>
- <argument index="0" name="point" type="int">
- </argument>
- <argument index="1" name="offset" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point" type="int" />
+ <argument index="1" name="offset" type="float" />
<description>
Sets the offset for the gradient color at index [code]point[/code].
</description>
diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml
index 65701b3a6a..2e5d2e6497 100644
--- a/doc/classes/GraphEdit.xml
+++ b/doc/classes/GraphEdit.xml
@@ -11,163 +11,120 @@
</tutorials>
<methods>
<method name="add_valid_connection_type">
- <return type="void">
- </return>
- <argument index="0" name="from_type" type="int">
- </argument>
- <argument index="1" name="to_type" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_type" type="int" />
+ <argument index="1" name="to_type" type="int" />
<description>
Makes possible the connection between two different slot types. The type is defined with the [method GraphNode.set_slot] method.
</description>
</method>
<method name="add_valid_left_disconnect_type">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" />
<description>
Makes possible to disconnect nodes when dragging from the slot at the left if it has the specified type.
</description>
</method>
<method name="add_valid_right_disconnect_type">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" />
<description>
Makes possible to disconnect nodes when dragging from the slot at the right if it has the specified type.
</description>
</method>
<method name="clear_connections">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all connections between nodes.
</description>
</method>
<method name="connect_node">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="from" type="StringName">
- </argument>
- <argument index="1" name="from_port" type="int">
- </argument>
- <argument index="2" name="to" type="StringName">
- </argument>
- <argument index="3" name="to_port" type="int">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="from" type="StringName" />
+ <argument index="1" name="from_port" type="int" />
+ <argument index="2" name="to" type="StringName" />
+ <argument index="3" name="to_port" type="int" />
<description>
Create a connection between the [code]from_port[/code] slot of the [code]from[/code] GraphNode and the [code]to_port[/code] slot of the [code]to[/code] GraphNode. If the connection already exists, no connection is created.
</description>
</method>
<method name="disconnect_node">
- <return type="void">
- </return>
- <argument index="0" name="from" type="StringName">
- </argument>
- <argument index="1" name="from_port" type="int">
- </argument>
- <argument index="2" name="to" type="StringName">
- </argument>
- <argument index="3" name="to_port" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from" type="StringName" />
+ <argument index="1" name="from_port" type="int" />
+ <argument index="2" name="to" type="StringName" />
+ <argument index="3" name="to_port" type="int" />
<description>
Removes the connection between the [code]from_port[/code] slot of the [code]from[/code] GraphNode and the [code]to_port[/code] slot of the [code]to[/code] GraphNode. If the connection does not exist, no connection is removed.
</description>
</method>
<method name="get_connection_list" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an Array containing the list of connections. A connection consists in a structure of the form [code]{ from_port: 0, from: "GraphNode name 0", to_port: 1, to: "GraphNode name 1" }[/code].
</description>
</method>
<method name="get_zoom_hbox">
- <return type="HBoxContainer">
- </return>
+ <return type="HBoxContainer" />
<description>
Gets the [HBoxContainer] that contains the zooming and grid snap controls in the top left of the graph.
Warning: The intended usage of this function is to allow you to reposition or add your own custom controls to the container. This is an internal control and as such should not be freed. If you wish to hide this or any of its children, use their [member CanvasItem.visible] property instead.
</description>
</method>
<method name="is_node_connected">
- <return type="bool">
- </return>
- <argument index="0" name="from" type="StringName">
- </argument>
- <argument index="1" name="from_port" type="int">
- </argument>
- <argument index="2" name="to" type="StringName">
- </argument>
- <argument index="3" name="to_port" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="from" type="StringName" />
+ <argument index="1" name="from_port" type="int" />
+ <argument index="2" name="to" type="StringName" />
+ <argument index="3" name="to_port" type="int" />
<description>
Returns [code]true[/code] if the [code]from_port[/code] slot of the [code]from[/code] GraphNode is connected to the [code]to_port[/code] slot of the [code]to[/code] GraphNode.
</description>
</method>
<method name="is_valid_connection_type" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="from_type" type="int">
- </argument>
- <argument index="1" name="to_type" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="from_type" type="int" />
+ <argument index="1" name="to_type" type="int" />
<description>
Returns whether it's possible to connect slots of the specified types.
</description>
</method>
<method name="remove_valid_connection_type">
- <return type="void">
- </return>
- <argument index="0" name="from_type" type="int">
- </argument>
- <argument index="1" name="to_type" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_type" type="int" />
+ <argument index="1" name="to_type" type="int" />
<description>
Makes it not possible to connect between two different slot types. The type is defined with the [method GraphNode.set_slot] method.
</description>
</method>
<method name="remove_valid_left_disconnect_type">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" />
<description>
Removes the possibility to disconnect nodes when dragging from the slot at the left if it has the specified type.
</description>
</method>
<method name="remove_valid_right_disconnect_type">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" />
<description>
Removes the possibility to disconnect nodes when dragging from the slot at the right if it has the specified type.
</description>
</method>
<method name="set_connection_activity">
- <return type="void">
- </return>
- <argument index="0" name="from" type="StringName">
- </argument>
- <argument index="1" name="from_port" type="int">
- </argument>
- <argument index="2" name="to" type="StringName">
- </argument>
- <argument index="3" name="to_port" type="int">
- </argument>
- <argument index="4" name="amount" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from" type="StringName" />
+ <argument index="1" name="from_port" type="int" />
+ <argument index="2" name="to" type="StringName" />
+ <argument index="3" name="to_port" type="int" />
+ <argument index="4" name="amount" type="float" />
<description>
Sets the coloration of the connection between [code]from[/code]'s [code]from_port[/code] and [code]to[/code]'s [code]to_port[/code] with the color provided in the [code]activity[/code] theme property.
</description>
</method>
<method name="set_selected">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Node" />
<description>
Sets the specified [code]node[/code] as the one selected.
</description>
@@ -226,36 +183,26 @@
</description>
</signal>
<signal name="connection_from_empty">
- <argument index="0" name="to" type="StringName">
- </argument>
- <argument index="1" name="to_slot" type="int">
- </argument>
- <argument index="2" name="release_position" type="Vector2">
- </argument>
+ <argument index="0" name="to" type="StringName" />
+ <argument index="1" name="to_slot" type="int" />
+ <argument index="2" name="release_position" type="Vector2" />
<description>
Emitted when user dragging connection from input port into empty space of the graph.
</description>
</signal>
<signal name="connection_request">
- <argument index="0" name="from" type="StringName">
- </argument>
- <argument index="1" name="from_slot" type="int">
- </argument>
- <argument index="2" name="to" type="StringName">
- </argument>
- <argument index="3" name="to_slot" type="int">
- </argument>
+ <argument index="0" name="from" type="StringName" />
+ <argument index="1" name="from_slot" type="int" />
+ <argument index="2" name="to" type="StringName" />
+ <argument index="3" name="to_slot" type="int" />
<description>
Emitted to the GraphEdit when the connection between the [code]from_slot[/code] slot of the [code]from[/code] GraphNode and the [code]to_slot[/code] slot of the [code]to[/code] GraphNode is attempted to be created.
</description>
</signal>
<signal name="connection_to_empty">
- <argument index="0" name="from" type="StringName">
- </argument>
- <argument index="1" name="from_slot" type="int">
- </argument>
- <argument index="2" name="release_position" type="Vector2">
- </argument>
+ <argument index="0" name="from" type="StringName" />
+ <argument index="1" name="from_slot" type="int" />
+ <argument index="2" name="release_position" type="Vector2" />
<description>
Emitted when user dragging connection from output port into empty space of the graph.
</description>
@@ -271,14 +218,10 @@
</description>
</signal>
<signal name="disconnection_request">
- <argument index="0" name="from" type="StringName">
- </argument>
- <argument index="1" name="from_slot" type="int">
- </argument>
- <argument index="2" name="to" type="StringName">
- </argument>
- <argument index="3" name="to_slot" type="int">
- </argument>
+ <argument index="0" name="from" type="StringName" />
+ <argument index="1" name="from_slot" type="int" />
+ <argument index="2" name="to" type="StringName" />
+ <argument index="3" name="to_slot" type="int" />
<description>
Emitted to the GraphEdit when the connection between [code]from_slot[/code] slot of [code]from[/code] GraphNode and [code]to_slot[/code] slot of [code]to[/code] GraphNode is attempted to be removed.
</description>
@@ -294,14 +237,12 @@
</description>
</signal>
<signal name="node_deselected">
- <argument index="0" name="node" type="Node">
- </argument>
+ <argument index="0" name="node" type="Node" />
<description>
</description>
</signal>
<signal name="node_selected">
- <argument index="0" name="node" type="Node">
- </argument>
+ <argument index="0" name="node" type="Node" />
<description>
Emitted when a GraphNode is selected.
</description>
@@ -312,15 +253,13 @@
</description>
</signal>
<signal name="popup_request">
- <argument index="0" name="position" type="Vector2">
- </argument>
+ <argument index="0" name="position" type="Vector2" />
<description>
Emitted when a popup is requested. Happens on right-clicking in the GraphEdit. [code]position[/code] is the position of the mouse pointer when the signal is sent.
</description>
</signal>
<signal name="scroll_offset_changed">
- <argument index="0" name="ofs" type="Vector2">
- </argument>
+ <argument index="0" name="ofs" type="Vector2" />
<description>
Emitted when the scroll offset is changed by the user. It will not be emitted when changed in code.
</description>
@@ -329,45 +268,45 @@
<constants>
</constants>
<theme_items>
- <theme_item name="activity" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="activity" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
</theme_item>
- <theme_item name="bezier_len_neg" type="int" default="160">
+ <theme_item name="bezier_len_neg" data_type="constant" type="int" default="160">
</theme_item>
- <theme_item name="bezier_len_pos" type="int" default="80">
+ <theme_item name="bezier_len_pos" data_type="constant" type="int" default="80">
</theme_item>
- <theme_item name="bg" type="StyleBox">
+ <theme_item name="bg" data_type="style" type="StyleBox">
The background drawn under the grid.
</theme_item>
- <theme_item name="grid_major" type="Color" default="Color(1, 1, 1, 0.2)">
+ <theme_item name="grid_major" data_type="color" type="Color" default="Color(1, 1, 1, 0.2)">
Color of major grid lines.
</theme_item>
- <theme_item name="grid_minor" type="Color" default="Color(1, 1, 1, 0.05)">
+ <theme_item name="grid_minor" data_type="color" type="Color" default="Color(1, 1, 1, 0.05)">
Color of minor grid lines.
</theme_item>
- <theme_item name="minimap" type="Texture2D">
+ <theme_item name="minimap" data_type="icon" type="Texture2D">
</theme_item>
- <theme_item name="minus" type="Texture2D">
+ <theme_item name="minus" data_type="icon" type="Texture2D">
The icon for the zoom out button.
</theme_item>
- <theme_item name="more" type="Texture2D">
+ <theme_item name="more" data_type="icon" type="Texture2D">
The icon for the zoom in button.
</theme_item>
- <theme_item name="port_grab_distance_horizontal" type="int" default="48">
+ <theme_item name="port_grab_distance_horizontal" data_type="constant" type="int" default="48">
The horizontal range within which a port can be grabbed (on both sides).
</theme_item>
- <theme_item name="port_grab_distance_vertical" type="int" default="6">
+ <theme_item name="port_grab_distance_vertical" data_type="constant" type="int" default="6">
The vertical range within which a port can be grabbed (on both sides).
</theme_item>
- <theme_item name="reset" type="Texture2D">
+ <theme_item name="reset" data_type="icon" type="Texture2D">
The icon for the zoom reset button.
</theme_item>
- <theme_item name="selection_fill" type="Color" default="Color(1, 1, 1, 0.3)">
+ <theme_item name="selection_fill" data_type="color" type="Color" default="Color(1, 1, 1, 0.3)">
The fill color of the selection rectangle.
</theme_item>
- <theme_item name="selection_stroke" type="Color" default="Color(1, 1, 1, 0.8)">
+ <theme_item name="selection_stroke" data_type="color" type="Color" default="Color(1, 1, 1, 0.8)">
The outline color of the selection rectangle.
</theme_item>
- <theme_item name="snap" type="Texture2D">
+ <theme_item name="snap" data_type="icon" type="Texture2D">
The icon for the snap toggle button.
</theme_item>
</theme_items>
diff --git a/doc/classes/GraphNode.xml b/doc/classes/GraphNode.xml
index 84eda7fcea..ff6271d2aa 100644
--- a/doc/classes/GraphNode.xml
+++ b/doc/classes/GraphNode.xml
@@ -12,191 +12,146 @@
</tutorials>
<methods>
<method name="clear_all_slots">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Disables all input and output slots of the GraphNode.
</description>
</method>
<method name="clear_opentype_features">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all OpenType features.
</description>
</method>
<method name="clear_slot">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Disables input and output slot whose index is [code]idx[/code].
</description>
</method>
<method name="get_connection_input_color">
- <return type="Color">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the [Color] of the input connection [code]idx[/code].
</description>
</method>
<method name="get_connection_input_count">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of enabled input slots (connections) to the GraphNode.
</description>
</method>
<method name="get_connection_input_position">
- <return type="Vector2">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the position of the input connection [code]idx[/code].
</description>
</method>
<method name="get_connection_input_type">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the type of the input connection [code]idx[/code].
</description>
</method>
<method name="get_connection_output_color">
- <return type="Color">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the [Color] of the output connection [code]idx[/code].
</description>
</method>
<method name="get_connection_output_count">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of enabled output slots (connections) of the GraphNode.
</description>
</method>
<method name="get_connection_output_position">
- <return type="Vector2">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the position of the output connection [code]idx[/code].
</description>
</method>
<method name="get_connection_output_type">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the type of the output connection [code]idx[/code].
</description>
</method>
<method name="get_opentype_feature" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="tag" type="String" />
<description>
Returns OpenType feature [code]tag[/code].
</description>
</method>
<method name="get_slot_color_left" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the left (input) [Color] of the slot [code]idx[/code].
</description>
</method>
<method name="get_slot_color_right" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the right (output) [Color] of the slot [code]idx[/code].
</description>
</method>
<method name="get_slot_type_left" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the left (input) type of the slot [code]idx[/code].
</description>
</method>
<method name="get_slot_type_right" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the right (output) type of the slot [code]idx[/code].
</description>
</method>
<method name="is_slot_enabled_left" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if left (input) side of the slot [code]idx[/code] is enabled.
</description>
</method>
<method name="is_slot_enabled_right" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if right (output) side of the slot [code]idx[/code] is enabled.
</description>
</method>
<method name="set_opentype_feature">
- <return type="void">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tag" type="String" />
+ <argument index="1" name="value" type="int" />
<description>
Sets OpenType feature [code]tag[/code]. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url].
</description>
</method>
<method name="set_slot">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="enable_left" type="bool">
- </argument>
- <argument index="2" name="type_left" type="int">
- </argument>
- <argument index="3" name="color_left" type="Color">
- </argument>
- <argument index="4" name="enable_right" type="bool">
- </argument>
- <argument index="5" name="type_right" type="int">
- </argument>
- <argument index="6" name="color_right" type="Color">
- </argument>
- <argument index="7" name="custom_left" type="Texture2D" default="null">
- </argument>
- <argument index="8" name="custom_right" type="Texture2D" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="enable_left" type="bool" />
+ <argument index="2" name="type_left" type="int" />
+ <argument index="3" name="color_left" type="Color" />
+ <argument index="4" name="enable_right" type="bool" />
+ <argument index="5" name="type_right" type="int" />
+ <argument index="6" name="color_right" type="Color" />
+ <argument index="7" name="custom_left" type="Texture2D" default="null" />
+ <argument index="8" name="custom_right" type="Texture2D" default="null" />
<description>
Sets properties of the slot with ID [code]idx[/code].
If [code]enable_left[/code]/[code]right[/code], a port will appear and the slot will be able to be connected from this side.
@@ -208,67 +163,49 @@
</description>
</method>
<method name="set_slot_color_left">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="color_left" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="color_left" type="Color" />
<description>
Sets the [Color] of the left (input) side of the slot [code]idx[/code] to [code]color_left[/code].
</description>
</method>
<method name="set_slot_color_right">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="color_right" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="color_right" type="Color" />
<description>
Sets the [Color] of the right (output) side of the slot [code]idx[/code] to [code]color_right[/code].
</description>
</method>
<method name="set_slot_enabled_left">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="enable_left" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="enable_left" type="bool" />
<description>
Toggles the left (input) side of the slot [code]idx[/code]. If [code]enable_left[/code] is [code]true[/code], a port will appear on the left side and the slot will be able to be connected from this side.
</description>
</method>
<method name="set_slot_enabled_right">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="enable_right" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="enable_right" type="bool" />
<description>
Toggles the right (output) side of the slot [code]idx[/code]. If [code]enable_right[/code] is [code]true[/code], a port will appear on the right side and the slot will be able to be connected from this side.
</description>
</method>
<method name="set_slot_type_left">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="type_left" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="type_left" type="int" />
<description>
Sets the left (input) type of the slot [code]idx[/code] to [code]type_left[/code].
</description>
</method>
<method name="set_slot_type_right">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="type_right" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="type_right" type="int" />
<description>
Sets the right (output) type of the slot [code]idx[/code] to [code]type_right[/code].
</description>
@@ -314,10 +251,8 @@
</description>
</signal>
<signal name="dragged">
- <argument index="0" name="from" type="Vector2">
- </argument>
- <argument index="1" name="to" type="Vector2">
- </argument>
+ <argument index="0" name="from" type="Vector2" />
+ <argument index="1" name="to" type="Vector2" />
<description>
Emitted when the GraphNode is dragged.
</description>
@@ -333,15 +268,13 @@
</description>
</signal>
<signal name="resize_request">
- <argument index="0" name="new_minsize" type="Vector2">
- </argument>
+ <argument index="0" name="new_minsize" type="Vector2" />
<description>
Emitted when the GraphNode is requested to be resized. Happens on dragging the resizer handle (see [member resizable]).
</description>
</signal>
<signal name="slot_updated">
- <argument index="0" name="idx" type="int">
- </argument>
+ <argument index="0" name="idx" type="int" />
<description>
Emitted when any GraphNode's slot is updated.
</description>
@@ -359,59 +292,59 @@
</constant>
</constants>
<theme_items>
- <theme_item name="breakpoint" type="StyleBox">
+ <theme_item name="breakpoint" data_type="style" type="StyleBox">
The background used when [member overlay] is set to [constant OVERLAY_BREAKPOINT].
</theme_item>
- <theme_item name="close" type="Texture2D">
+ <theme_item name="close" data_type="icon" type="Texture2D">
The icon for the close button, visible when [member show_close] is enabled.
</theme_item>
- <theme_item name="close_color" type="Color" default="Color(0, 0, 0, 1)">
+ <theme_item name="close_color" data_type="color" type="Color" default="Color(0, 0, 0, 1)">
The color modulation applied to the close button icon.
</theme_item>
- <theme_item name="close_offset" type="int" default="18">
+ <theme_item name="close_offset" data_type="constant" type="int" default="18">
The vertical offset of the close button.
</theme_item>
- <theme_item name="comment" type="StyleBox">
+ <theme_item name="comment" data_type="style" type="StyleBox">
The [StyleBox] used when [member comment] is enabled.
</theme_item>
- <theme_item name="commentfocus" type="StyleBox">
+ <theme_item name="commentfocus" data_type="style" type="StyleBox">
The [StyleBox] used when [member comment] is enabled and the [GraphNode] is focused.
</theme_item>
- <theme_item name="defaultfocus" type="StyleBox">
+ <theme_item name="defaultfocus" data_type="style" type="StyleBox">
</theme_item>
- <theme_item name="defaultframe" type="StyleBox">
+ <theme_item name="defaultframe" data_type="style" type="StyleBox">
</theme_item>
- <theme_item name="frame" type="StyleBox">
+ <theme_item name="frame" data_type="style" type="StyleBox">
The default background for [GraphNode].
</theme_item>
- <theme_item name="port" type="Texture2D">
+ <theme_item name="port" data_type="icon" type="Texture2D">
The icon used for representing ports.
</theme_item>
- <theme_item name="port_offset" type="int" default="3">
+ <theme_item name="port_offset" data_type="constant" type="int" default="3">
Horizontal offset for the ports.
</theme_item>
- <theme_item name="position" type="StyleBox">
+ <theme_item name="position" data_type="style" type="StyleBox">
The background used when [member overlay] is set to [constant OVERLAY_POSITION].
</theme_item>
- <theme_item name="resizer" type="Texture2D">
+ <theme_item name="resizer" data_type="icon" type="Texture2D">
The icon used for resizer, visible when [member resizable] is enabled.
</theme_item>
- <theme_item name="resizer_color" type="Color" default="Color(0, 0, 0, 1)">
+ <theme_item name="resizer_color" data_type="color" type="Color" default="Color(0, 0, 0, 1)">
The color modulation applied to the resizer icon.
</theme_item>
- <theme_item name="selectedframe" type="StyleBox">
+ <theme_item name="selectedframe" data_type="style" type="StyleBox">
The background used when the [GraphNode] is selected.
</theme_item>
- <theme_item name="separation" type="int" default="1">
+ <theme_item name="separation" data_type="constant" type="int" default="1">
The vertical distance between ports.
</theme_item>
- <theme_item name="title_color" type="Color" default="Color(0, 0, 0, 1)">
+ <theme_item name="title_color" data_type="color" type="Color" default="Color(0, 0, 0, 1)">
Color of the title text.
</theme_item>
- <theme_item name="title_font" type="Font">
+ <theme_item name="title_font" data_type="font" type="Font">
Font used for the title text.
</theme_item>
- <theme_item name="title_offset" type="int" default="20">
+ <theme_item name="title_offset" data_type="constant" type="int" default="20">
Vertical offset of the title text.
</theme_item>
</theme_items>
diff --git a/doc/classes/GridContainer.xml b/doc/classes/GridContainer.xml
index ca6b4e69c3..34e7cbcd79 100644
--- a/doc/classes/GridContainer.xml
+++ b/doc/classes/GridContainer.xml
@@ -21,10 +21,10 @@
<constants>
</constants>
<theme_items>
- <theme_item name="hseparation" type="int" default="4">
+ <theme_item name="hseparation" data_type="constant" type="int" default="4">
The horizontal separation of children nodes.
</theme_item>
- <theme_item name="vseparation" type="int" default="4">
+ <theme_item name="vseparation" data_type="constant" type="int" default="4">
The vertical separation of children nodes.
</theme_item>
</theme_items>
diff --git a/doc/classes/HBoxContainer.xml b/doc/classes/HBoxContainer.xml
index 7c76b8b001..9c3efb384e 100644
--- a/doc/classes/HBoxContainer.xml
+++ b/doc/classes/HBoxContainer.xml
@@ -13,7 +13,7 @@
<constants>
</constants>
<theme_items>
- <theme_item name="separation" type="int" default="4">
+ <theme_item name="separation" data_type="constant" type="int" default="4">
The horizontal space between the [HBoxContainer]'s elements.
</theme_item>
</theme_items>
diff --git a/doc/classes/HMACContext.xml b/doc/classes/HMACContext.xml
index 9fa96e5ddf..88d3c5e2f3 100644
--- a/doc/classes/HMACContext.xml
+++ b/doc/classes/HMACContext.xml
@@ -56,28 +56,22 @@
</tutorials>
<methods>
<method name="finish">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Returns the resulting HMAC. If the HMAC failed, an empty [PackedByteArray] is returned.
</description>
</method>
<method name="start">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="hash_type" type="int" enum="HashingContext.HashType">
- </argument>
- <argument index="1" name="key" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="hash_type" type="int" enum="HashingContext.HashType" />
+ <argument index="1" name="key" type="PackedByteArray" />
<description>
Initializes the HMACContext. This method cannot be called again on the same HMACContext until [method finish] has been called.
</description>
</method>
<method name="update">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="data" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="data" type="PackedByteArray" />
<description>
Updates the message to be HMACed. This can be called multiple times before [method finish] is called to append [code]data[/code] to the message, but cannot be called until [method start] has been called.
</description>
diff --git a/doc/classes/HScrollBar.xml b/doc/classes/HScrollBar.xml
index 963454dab8..3bdd739cdf 100644
--- a/doc/classes/HScrollBar.xml
+++ b/doc/classes/HScrollBar.xml
@@ -13,31 +13,31 @@
<constants>
</constants>
<theme_items>
- <theme_item name="decrement" type="Texture2D">
+ <theme_item name="decrement" data_type="icon" type="Texture2D">
Icon used as a button to scroll the [ScrollBar] left. Supports custom step using the [member ScrollBar.custom_step] property.
</theme_item>
- <theme_item name="decrement_highlight" type="Texture2D">
+ <theme_item name="decrement_highlight" data_type="icon" type="Texture2D">
Displayed when the mouse cursor hovers over the decrement button.
</theme_item>
- <theme_item name="grabber" type="StyleBox">
+ <theme_item name="grabber" data_type="style" type="StyleBox">
Used as texture for the grabber, the draggable element representing current scroll.
</theme_item>
- <theme_item name="grabber_highlight" type="StyleBox">
+ <theme_item name="grabber_highlight" data_type="style" type="StyleBox">
Used when the mouse hovers over the grabber.
</theme_item>
- <theme_item name="grabber_pressed" type="StyleBox">
+ <theme_item name="grabber_pressed" data_type="style" type="StyleBox">
Used when the grabber is being dragged.
</theme_item>
- <theme_item name="increment" type="Texture2D">
+ <theme_item name="increment" data_type="icon" type="Texture2D">
Icon used as a button to scroll the [ScrollBar] right. Supports custom step using the [member ScrollBar.custom_step] property.
</theme_item>
- <theme_item name="increment_highlight" type="Texture2D">
+ <theme_item name="increment_highlight" data_type="icon" type="Texture2D">
Displayed when the mouse cursor hovers over the increment button.
</theme_item>
- <theme_item name="scroll" type="StyleBox">
+ <theme_item name="scroll" data_type="style" type="StyleBox">
Used as background of this [ScrollBar].
</theme_item>
- <theme_item name="scroll_focus" type="StyleBox">
+ <theme_item name="scroll_focus" data_type="style" type="StyleBox">
Used as background when the [ScrollBar] has the GUI focus.
</theme_item>
</theme_items>
diff --git a/doc/classes/HSeparator.xml b/doc/classes/HSeparator.xml
index 5b418d6428..24495d208e 100644
--- a/doc/classes/HSeparator.xml
+++ b/doc/classes/HSeparator.xml
@@ -13,10 +13,10 @@
<constants>
</constants>
<theme_items>
- <theme_item name="separation" type="int" default="4">
+ <theme_item name="separation" data_type="constant" type="int" default="4">
The height of the area covered by the separator. Effectively works like a minimum height.
</theme_item>
- <theme_item name="separator" type="StyleBox">
+ <theme_item name="separator" data_type="style" type="StyleBox">
The style for the separator line. Works best with [StyleBoxLine].
</theme_item>
</theme_items>
diff --git a/doc/classes/HSlider.xml b/doc/classes/HSlider.xml
index 0cbb4fd455..37aa968161 100644
--- a/doc/classes/HSlider.xml
+++ b/doc/classes/HSlider.xml
@@ -14,24 +14,24 @@
<constants>
</constants>
<theme_items>
- <theme_item name="grabber" type="Texture2D">
+ <theme_item name="grabber" data_type="icon" type="Texture2D">
The texture for the grabber (the draggable element).
</theme_item>
- <theme_item name="grabber_area" type="StyleBox">
+ <theme_item name="grabber_area" data_type="style" type="StyleBox">
The background of the area to the left of the grabber.
</theme_item>
- <theme_item name="grabber_area_highlight" type="StyleBox">
+ <theme_item name="grabber_area_highlight" data_type="style" type="StyleBox">
</theme_item>
- <theme_item name="grabber_disabled" type="Texture2D">
+ <theme_item name="grabber_disabled" data_type="icon" type="Texture2D">
The texture for the grabber when it's disabled.
</theme_item>
- <theme_item name="grabber_highlight" type="Texture2D">
+ <theme_item name="grabber_highlight" data_type="icon" type="Texture2D">
The texture for the grabber when it's focused.
</theme_item>
- <theme_item name="slider" type="StyleBox">
+ <theme_item name="slider" data_type="style" type="StyleBox">
The background for the whole slider. Determines the height of the [code]grabber_area[/code].
</theme_item>
- <theme_item name="tick" type="Texture2D">
+ <theme_item name="tick" data_type="icon" type="Texture2D">
The texture for the ticks, visible when [member Slider.tick_count] is greater than 0.
</theme_item>
</theme_items>
diff --git a/doc/classes/HSplitContainer.xml b/doc/classes/HSplitContainer.xml
index f6e9f33c20..6bc9913344 100644
--- a/doc/classes/HSplitContainer.xml
+++ b/doc/classes/HSplitContainer.xml
@@ -13,15 +13,15 @@
<constants>
</constants>
<theme_items>
- <theme_item name="autohide" type="int" default="1">
+ <theme_item name="autohide" data_type="constant" type="int" default="1">
Boolean value. If 1 ([code]true[/code]), the grabber will hide automatically when it isn't under the cursor. If 0 ([code]false[/code]), it's always visible.
</theme_item>
- <theme_item name="bg" type="StyleBox">
+ <theme_item name="bg" data_type="style" type="StyleBox">
</theme_item>
- <theme_item name="grabber" type="Texture2D">
+ <theme_item name="grabber" data_type="icon" type="Texture2D">
The icon used for the grabber drawn in the middle area.
</theme_item>
- <theme_item name="separation" type="int" default="12">
+ <theme_item name="separation" data_type="constant" type="int" default="12">
The space between sides of the container.
</theme_item>
</theme_items>
diff --git a/doc/classes/HTTPClient.xml b/doc/classes/HTTPClient.xml
index a08bed751f..df42869dbe 100644
--- a/doc/classes/HTTPClient.xml
+++ b/doc/classes/HTTPClient.xml
@@ -17,23 +17,17 @@
</tutorials>
<methods>
<method name="close">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Closes the current connection, allowing reuse of this [HTTPClient].
</description>
</method>
<method name="connect_to_host">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="host" type="String">
- </argument>
- <argument index="1" name="port" type="int" default="-1">
- </argument>
- <argument index="2" name="use_ssl" type="bool" default="false">
- </argument>
- <argument index="3" name="verify_host" type="bool" default="true">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="host" type="String" />
+ <argument index="1" name="port" type="int" default="-1" />
+ <argument index="2" name="use_ssl" type="bool" default="false" />
+ <argument index="3" name="verify_host" type="bool" default="true" />
<description>
Connects to a host. This needs to be done before any requests are sent.
The host should not have http:// prepended but will strip the protocol identifier if provided.
@@ -42,30 +36,26 @@
</description>
</method>
<method name="get_response_body_length" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the response's body length.
[b]Note:[/b] Some Web servers may not send a body length. In this case, the value returned will be [code]-1[/code]. If using chunked transfer encoding, the body length will also be [code]-1[/code].
</description>
</method>
<method name="get_response_code" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the response's HTTP status code.
</description>
</method>
<method name="get_response_headers">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns the response headers.
</description>
</method>
<method name="get_response_headers_as_dictionary">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Returns all response headers as a Dictionary of structure [code]{ "key": "value1; value2" }[/code] where the case-sensitivity of the keys and values is kept like the server delivers it. A value is a simple String, this string can have more than one value where "; " is used as separator.
[b]Example:[/b]
@@ -78,38 +68,32 @@
</description>
</method>
<method name="get_status" qualifiers="const">
- <return type="int" enum="HTTPClient.Status">
- </return>
+ <return type="int" enum="HTTPClient.Status" />
<description>
Returns a [enum Status] constant. Need to call [method poll] in order to get status updates.
</description>
</method>
<method name="has_response" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
If [code]true[/code], this [HTTPClient] has a response available.
</description>
</method>
<method name="is_response_chunked" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
If [code]true[/code], this [HTTPClient] has a response that is chunked.
</description>
</method>
<method name="poll">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
This needs to be called in order to have any request processed. Check results with [method get_status].
</description>
</method>
<method name="query_string_from_dict">
- <return type="String">
- </return>
- <argument index="0" name="fields" type="Dictionary">
- </argument>
+ <return type="String" />
+ <argument index="0" name="fields" type="Dictionary" />
<description>
Generates a GET/POST application/x-www-form-urlencoded style query string from a provided dictionary, e.g.:
[codeblocks]
@@ -140,23 +124,17 @@
</description>
</method>
<method name="read_response_body_chunk">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Reads one chunk from the response.
</description>
</method>
<method name="request">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="method" type="int" enum="HTTPClient.Method">
- </argument>
- <argument index="1" name="url" type="String">
- </argument>
- <argument index="2" name="headers" type="PackedStringArray">
- </argument>
- <argument index="3" name="body" type="String" default="&quot;&quot;">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="method" type="int" enum="HTTPClient.Method" />
+ <argument index="1" name="url" type="String" />
+ <argument index="2" name="headers" type="PackedStringArray" />
+ <argument index="3" name="body" type="String" default="&quot;&quot;" />
<description>
Sends a request to the connected host.
The URL parameter is usually just the part after the host, so for [code]http://somehost.com/index.php[/code], it is [code]/index.php[/code]. When sending requests to an HTTP proxy server, it should be an absolute URL. For [constant HTTPClient.METHOD_OPTIONS] requests, [code]*[/code] is also allowed. For [constant HTTPClient.METHOD_CONNECT] requests, it should be the authority component ([code]host:port[/code]).
@@ -180,16 +158,11 @@
</description>
</method>
<method name="request_raw">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="method" type="int" enum="HTTPClient.Method">
- </argument>
- <argument index="1" name="url" type="String">
- </argument>
- <argument index="2" name="headers" type="PackedStringArray">
- </argument>
- <argument index="3" name="body" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="method" type="int" enum="HTTPClient.Method" />
+ <argument index="1" name="url" type="String" />
+ <argument index="2" name="headers" type="PackedStringArray" />
+ <argument index="3" name="body" type="PackedByteArray" />
<description>
Sends a raw request to the connected host.
The URL parameter is usually just the part after the host, so for [code]http://somehost.com/index.php[/code], it is [code]/index.php[/code]. When sending requests to an HTTP proxy server, it should be an absolute URL. For [constant HTTPClient.METHOD_OPTIONS] requests, [code]*[/code] is also allowed. For [constant HTTPClient.METHOD_CONNECT] requests, it should be the authority component ([code]host:port[/code]).
diff --git a/doc/classes/HTTPRequest.xml b/doc/classes/HTTPRequest.xml
index 908e355db3..4a56c7e3fd 100644
--- a/doc/classes/HTTPRequest.xml
+++ b/doc/classes/HTTPRequest.xml
@@ -159,47 +159,37 @@
</tutorials>
<methods>
<method name="cancel_request">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Cancels the current request.
</description>
</method>
<method name="get_body_size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the response body length.
[b]Note:[/b] Some Web servers may not send a body length. In this case, the value returned will be [code]-1[/code]. If using chunked transfer encoding, the body length will also be [code]-1[/code].
</description>
</method>
<method name="get_downloaded_bytes" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of bytes this HTTPRequest downloaded.
</description>
</method>
<method name="get_http_client_status" qualifiers="const">
- <return type="int" enum="HTTPClient.Status">
- </return>
+ <return type="int" enum="HTTPClient.Status" />
<description>
Returns the current status of the underlying [HTTPClient]. See [enum HTTPClient.Status].
</description>
</method>
<method name="request">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="url" type="String">
- </argument>
- <argument index="1" name="custom_headers" type="PackedStringArray" default="PackedStringArray()">
- </argument>
- <argument index="2" name="ssl_validate_domain" type="bool" default="true">
- </argument>
- <argument index="3" name="method" type="int" enum="HTTPClient.Method" default="0">
- </argument>
- <argument index="4" name="request_data" type="String" default="&quot;&quot;">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="url" type="String" />
+ <argument index="1" name="custom_headers" type="PackedStringArray" default="PackedStringArray()" />
+ <argument index="2" name="ssl_validate_domain" type="bool" default="true" />
+ <argument index="3" name="method" type="int" enum="HTTPClient.Method" default="0" />
+ <argument index="4" name="request_data" type="String" default="&quot;&quot;" />
<description>
Creates request on the underlying [HTTPClient]. If there is no configuration errors, it tries to connect using [method HTTPClient.connect_to_host] and passes parameters onto [method HTTPClient.request].
Returns [constant OK] if request is successfully created. (Does not imply that the server has responded), [constant ERR_UNCONFIGURED] if not in the tree, [constant ERR_BUSY] if still processing previous request, [constant ERR_INVALID_PARAMETER] if given string is not a valid URL format, or [constant ERR_CANT_CONNECT] if not using thread and the [HTTPClient] cannot connect to host.
@@ -207,18 +197,12 @@
</description>
</method>
<method name="request_raw">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="url" type="String">
- </argument>
- <argument index="1" name="custom_headers" type="PackedStringArray" default="PackedStringArray()">
- </argument>
- <argument index="2" name="ssl_validate_domain" type="bool" default="true">
- </argument>
- <argument index="3" name="method" type="int" enum="HTTPClient.Method" default="0">
- </argument>
- <argument index="4" name="request_data_raw" type="PackedByteArray" default="PackedByteArray()">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="url" type="String" />
+ <argument index="1" name="custom_headers" type="PackedStringArray" default="PackedStringArray()" />
+ <argument index="2" name="ssl_validate_domain" type="bool" default="true" />
+ <argument index="3" name="method" type="int" enum="HTTPClient.Method" default="0" />
+ <argument index="4" name="request_data_raw" type="PackedByteArray" default="PackedByteArray()" />
<description>
Creates request on the underlying [HTTPClient] using a raw array of bytes for the request body. If there is no configuration errors, it tries to connect using [method HTTPClient.connect_to_host] and passes parameters onto [method HTTPClient.request].
Returns [constant OK] if request is successfully created. (Does not imply that the server has responded), [constant ERR_UNCONFIGURED] if not in the tree, [constant ERR_BUSY] if still processing previous request, [constant ERR_INVALID_PARAMETER] if given string is not a valid URL format, or [constant ERR_CANT_CONNECT] if not using thread and the [HTTPClient] cannot connect to host.
@@ -253,14 +237,10 @@
</members>
<signals>
<signal name="request_completed">
- <argument index="0" name="result" type="int">
- </argument>
- <argument index="1" name="response_code" type="int">
- </argument>
- <argument index="2" name="headers" type="PackedStringArray">
- </argument>
- <argument index="3" name="body" type="PackedByteArray">
- </argument>
+ <argument index="0" name="result" type="int" />
+ <argument index="1" name="response_code" type="int" />
+ <argument index="2" name="headers" type="PackedStringArray" />
+ <argument index="3" name="body" type="PackedByteArray" />
<description>
Emitted when a request is completed.
</description>
diff --git a/doc/classes/HashingContext.xml b/doc/classes/HashingContext.xml
index 1c7b7ca937..f470f1611d 100644
--- a/doc/classes/HashingContext.xml
+++ b/doc/classes/HashingContext.xml
@@ -63,26 +63,21 @@
</tutorials>
<methods>
<method name="finish">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Closes the current context, and return the computed hash.
</description>
</method>
<method name="start">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="type" type="int" enum="HashingContext.HashType">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="type" type="int" enum="HashingContext.HashType" />
<description>
Starts a new hash computation of the given [code]type[/code] (e.g. [constant HASH_SHA256] to start computation of a SHA-256).
</description>
</method>
<method name="update">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="chunk" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="chunk" type="PackedByteArray" />
<description>
Updates the computation with the given [code]chunk[/code] of data.
</description>
diff --git a/doc/classes/HingeJoint3D.xml b/doc/classes/HingeJoint3D.xml
index f2c652d51a..a8e7f343ff 100644
--- a/doc/classes/HingeJoint3D.xml
+++ b/doc/classes/HingeJoint3D.xml
@@ -10,41 +10,31 @@
</tutorials>
<methods>
<method name="get_flag" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="flag" type="int" enum="HingeJoint3D.Flag">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="flag" type="int" enum="HingeJoint3D.Flag" />
<description>
Returns the value of the specified flag.
</description>
</method>
<method name="get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="HingeJoint3D.Param">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="HingeJoint3D.Param" />
<description>
Returns the value of the specified parameter.
</description>
</method>
<method name="set_flag">
- <return type="void">
- </return>
- <argument index="0" name="flag" type="int" enum="HingeJoint3D.Flag">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="flag" type="int" enum="HingeJoint3D.Flag" />
+ <argument index="1" name="enabled" type="bool" />
<description>
If [code]true[/code], enables the specified flag.
</description>
</method>
<method name="set_param">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="HingeJoint3D.Param">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="HingeJoint3D.Param" />
+ <argument index="1" name="value" type="float" />
<description>
Sets the value of the specified parameter.
</description>
diff --git a/doc/classes/IP.xml b/doc/classes/IP.xml
index b3ce1abaeb..8eb994a913 100644
--- a/doc/classes/IP.xml
+++ b/doc/classes/IP.xml
@@ -10,33 +10,27 @@
</tutorials>
<methods>
<method name="clear_cache">
- <return type="void">
- </return>
- <argument index="0" name="hostname" type="String" default="&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="hostname" type="String" default="&quot;&quot;" />
<description>
Removes all of a [code]hostname[/code]'s cached references. If no [code]hostname[/code] is given, all cached IP addresses are removed.
</description>
</method>
<method name="erase_resolve_item">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
<description>
Removes a given item [code]id[/code] from the queue. This should be used to free a queue after it has completed to enable more queries to happen.
</description>
</method>
<method name="get_local_addresses" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns all the user's current IPv4 and IPv6 addresses as an array.
</description>
</method>
<method name="get_local_interfaces" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns all network adapters as an array.
Each adapter is a dictionary of the form:
@@ -51,61 +45,46 @@
</description>
</method>
<method name="get_resolve_item_address" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="id" type="int" />
<description>
Returns a queued hostname's IP address, given its queue [code]id[/code]. Returns an empty string on error or if resolution hasn't happened yet (see [method get_resolve_item_status]).
</description>
</method>
<method name="get_resolve_item_addresses" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="id" type="int" />
<description>
Returns resolved addresses, or an empty array if an error happened or resolution didn't happen yet (see [method get_resolve_item_status]).
</description>
</method>
<method name="get_resolve_item_status" qualifiers="const">
- <return type="int" enum="IP.ResolverStatus">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="int" enum="IP.ResolverStatus" />
+ <argument index="0" name="id" type="int" />
<description>
Returns a queued hostname's status as a [enum ResolverStatus] constant, given its queue [code]id[/code].
</description>
</method>
<method name="resolve_hostname">
- <return type="String">
- </return>
- <argument index="0" name="host" type="String">
- </argument>
- <argument index="1" name="ip_type" type="int" enum="IP.Type" default="3">
- </argument>
+ <return type="String" />
+ <argument index="0" name="host" type="String" />
+ <argument index="1" name="ip_type" type="int" enum="IP.Type" default="3" />
<description>
Returns a given hostname's IPv4 or IPv6 address when resolved (blocking-type method). The address type returned depends on the [enum Type] constant given as [code]ip_type[/code].
</description>
</method>
<method name="resolve_hostname_addresses">
- <return type="Array">
- </return>
- <argument index="0" name="host" type="String">
- </argument>
- <argument index="1" name="ip_type" type="int" enum="IP.Type" default="3">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="host" type="String" />
+ <argument index="1" name="ip_type" type="int" enum="IP.Type" default="3" />
<description>
Resolves a given hostname in a blocking way. Addresses are returned as an [Array] of IPv4 or IPv6 addresses depending on [code]ip_type[/code].
</description>
</method>
<method name="resolve_hostname_queue_item">
- <return type="int">
- </return>
- <argument index="0" name="host" type="String">
- </argument>
- <argument index="1" name="ip_type" type="int" enum="IP.Type" default="3">
- </argument>
+ <return type="int" />
+ <argument index="0" name="host" type="String" />
+ <argument index="1" name="ip_type" type="int" enum="IP.Type" default="3" />
<description>
Creates a queue item to resolve a hostname to an IPv4 or IPv6 address depending on the [enum Type] constant given as [code]ip_type[/code]. Returns the queue ID if successful, or [constant RESOLVER_INVALID_ID] on error.
</description>
diff --git a/doc/classes/Image.xml b/doc/classes/Image.xml
index fd80841a63..34c5fb582e 100644
--- a/doc/classes/Image.xml
+++ b/doc/classes/Image.xml
@@ -13,352 +13,269 @@
</tutorials>
<methods>
<method name="adjust_bcs">
- <return type="void">
- </return>
- <argument index="0" name="brightness" type="float">
- </argument>
- <argument index="1" name="contrast" type="float">
- </argument>
- <argument index="2" name="saturation" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="brightness" type="float" />
+ <argument index="1" name="contrast" type="float" />
+ <argument index="2" name="saturation" type="float" />
<description>
</description>
</method>
<method name="blend_rect">
- <return type="void">
- </return>
- <argument index="0" name="src" type="Image">
- </argument>
- <argument index="1" name="src_rect" type="Rect2">
- </argument>
- <argument index="2" name="dst" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="src" type="Image" />
+ <argument index="1" name="src_rect" type="Rect2" />
+ <argument index="2" name="dst" type="Vector2" />
<description>
Alpha-blends [code]src_rect[/code] from [code]src[/code] image to this image at coordinates [code]dest[/code].
</description>
</method>
<method name="blend_rect_mask">
- <return type="void">
- </return>
- <argument index="0" name="src" type="Image">
- </argument>
- <argument index="1" name="mask" type="Image">
- </argument>
- <argument index="2" name="src_rect" type="Rect2">
- </argument>
- <argument index="3" name="dst" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="src" type="Image" />
+ <argument index="1" name="mask" type="Image" />
+ <argument index="2" name="src_rect" type="Rect2" />
+ <argument index="3" name="dst" type="Vector2" />
<description>
Alpha-blends [code]src_rect[/code] from [code]src[/code] image to this image using [code]mask[/code] image at coordinates [code]dst[/code]. Alpha channels are required for both [code]src[/code] and [code]mask[/code]. [code]dst[/code] pixels and [code]src[/code] pixels will blend if the corresponding mask pixel's alpha value is not 0. [code]src[/code] image and [code]mask[/code] image [b]must[/b] have the same size (width and height) but they can have different formats.
</description>
</method>
<method name="blit_rect">
- <return type="void">
- </return>
- <argument index="0" name="src" type="Image">
- </argument>
- <argument index="1" name="src_rect" type="Rect2">
- </argument>
- <argument index="2" name="dst" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="src" type="Image" />
+ <argument index="1" name="src_rect" type="Rect2" />
+ <argument index="2" name="dst" type="Vector2" />
<description>
Copies [code]src_rect[/code] from [code]src[/code] image to this image at coordinates [code]dst[/code].
</description>
</method>
<method name="blit_rect_mask">
- <return type="void">
- </return>
- <argument index="0" name="src" type="Image">
- </argument>
- <argument index="1" name="mask" type="Image">
- </argument>
- <argument index="2" name="src_rect" type="Rect2">
- </argument>
- <argument index="3" name="dst" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="src" type="Image" />
+ <argument index="1" name="mask" type="Image" />
+ <argument index="2" name="src_rect" type="Rect2" />
+ <argument index="3" name="dst" type="Vector2" />
<description>
Blits [code]src_rect[/code] area from [code]src[/code] image to this image at the coordinates given by [code]dst[/code]. [code]src[/code] pixel is copied onto [code]dst[/code] if the corresponding [code]mask[/code] pixel's alpha value is not 0. [code]src[/code] image and [code]mask[/code] image [b]must[/b] have the same size (width and height) but they can have different formats.
</description>
</method>
<method name="bump_map_to_normal_map">
- <return type="void">
- </return>
- <argument index="0" name="bump_scale" type="float" default="1.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bump_scale" type="float" default="1.0" />
<description>
Converts a bump map to a normal map. A bump map provides a height offset per-pixel, while a normal map provides a normal direction per pixel.
</description>
</method>
<method name="clear_mipmaps">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes the image's mipmaps.
</description>
</method>
<method name="compress">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="mode" type="int" enum="Image.CompressMode">
- </argument>
- <argument index="1" name="source" type="int" enum="Image.CompressSource" default="0">
- </argument>
- <argument index="2" name="lossy_quality" type="float" default="0.7">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="mode" type="int" enum="Image.CompressMode" />
+ <argument index="1" name="source" type="int" enum="Image.CompressSource" default="0" />
+ <argument index="2" name="lossy_quality" type="float" default="0.7" />
<description>
Compresses the image to use less memory. Can not directly access pixel data while the image is compressed. Returns error if the chosen compression mode is not available. See [enum CompressMode] and [enum CompressSource] constants.
</description>
</method>
<method name="compress_from_channels">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="mode" type="int" enum="Image.CompressMode">
- </argument>
- <argument index="1" name="channels" type="int" enum="Image.UsedChannels">
- </argument>
- <argument index="2" name="lossy_quality" type="float" default="0.7">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="mode" type="int" enum="Image.CompressMode" />
+ <argument index="1" name="channels" type="int" enum="Image.UsedChannels" />
+ <argument index="2" name="lossy_quality" type="float" default="0.7" />
<description>
</description>
</method>
<method name="convert">
- <return type="void">
- </return>
- <argument index="0" name="format" type="int" enum="Image.Format">
- </argument>
+ <return type="void" />
+ <argument index="0" name="format" type="int" enum="Image.Format" />
<description>
Converts the image's format. See [enum Format] constants.
</description>
</method>
<method name="copy_from">
- <return type="void">
- </return>
- <argument index="0" name="src" type="Image">
- </argument>
+ <return type="void" />
+ <argument index="0" name="src" type="Image" />
<description>
Copies [code]src[/code] image to this image.
</description>
</method>
<method name="create">
- <return type="void">
- </return>
- <argument index="0" name="width" type="int">
- </argument>
- <argument index="1" name="height" type="int">
- </argument>
- <argument index="2" name="use_mipmaps" type="bool">
- </argument>
- <argument index="3" name="format" type="int" enum="Image.Format">
- </argument>
+ <return type="void" />
+ <argument index="0" name="width" type="int" />
+ <argument index="1" name="height" type="int" />
+ <argument index="2" name="use_mipmaps" type="bool" />
+ <argument index="3" name="format" type="int" enum="Image.Format" />
<description>
Creates an empty image of given size and format. See [enum Format] constants. If [code]use_mipmaps[/code] is [code]true[/code] then generate mipmaps for this image. See the [method generate_mipmaps].
</description>
</method>
<method name="create_from_data">
- <return type="void">
- </return>
- <argument index="0" name="width" type="int">
- </argument>
- <argument index="1" name="height" type="int">
- </argument>
- <argument index="2" name="use_mipmaps" type="bool">
- </argument>
- <argument index="3" name="format" type="int" enum="Image.Format">
- </argument>
- <argument index="4" name="data" type="PackedByteArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="width" type="int" />
+ <argument index="1" name="height" type="int" />
+ <argument index="2" name="use_mipmaps" type="bool" />
+ <argument index="3" name="format" type="int" enum="Image.Format" />
+ <argument index="4" name="data" type="PackedByteArray" />
<description>
Creates a new image of given size and format. See [enum Format] constants. Fills the image with the given raw data. If [code]use_mipmaps[/code] is [code]true[/code] then loads mipmaps for this image from [code]data[/code]. See [method generate_mipmaps].
</description>
</method>
<method name="crop">
- <return type="void">
- </return>
- <argument index="0" name="width" type="int">
- </argument>
- <argument index="1" name="height" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="width" type="int" />
+ <argument index="1" name="height" type="int" />
<description>
Crops the image to the given [code]width[/code] and [code]height[/code]. If the specified size is larger than the current size, the extra area is filled with black pixels.
</description>
</method>
<method name="decompress">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Decompresses the image if it is VRAM compressed in a supported format. Returns [constant OK] if the format is supported, otherwise [constant ERR_UNAVAILABLE].
[b]Note:[/b] The following formats can be decompressed: DXT, RGTC, BPTC, PVRTC1. The formats ETC1 and ETC2 are not supported.
</description>
</method>
<method name="detect_alpha" qualifiers="const">
- <return type="int" enum="Image.AlphaMode">
- </return>
+ <return type="int" enum="Image.AlphaMode" />
<description>
Returns [constant ALPHA_BLEND] if the image has data for alpha values. Returns [constant ALPHA_BIT] if all the alpha values are stored in a single bit. Returns [constant ALPHA_NONE] if no data for alpha values is found.
</description>
</method>
<method name="detect_used_channels">
- <return type="int" enum="Image.UsedChannels">
- </return>
- <argument index="0" name="source" type="int" enum="Image.CompressSource" default="0">
- </argument>
+ <return type="int" enum="Image.UsedChannels" />
+ <argument index="0" name="source" type="int" enum="Image.CompressSource" default="0" />
<description>
</description>
</method>
<method name="fill">
- <return type="void">
- </return>
- <argument index="0" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="color" type="Color" />
<description>
Fills the image with a given [Color].
</description>
</method>
<method name="fix_alpha_edges">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Blends low-alpha pixels with nearby pixels.
</description>
</method>
<method name="flip_x">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Flips the image horizontally.
</description>
</method>
<method name="flip_y">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Flips the image vertically.
</description>
</method>
<method name="generate_mipmaps">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="renormalize" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="renormalize" type="bool" default="false" />
<description>
Generates mipmaps for the image. Mipmaps are precalculated lower-resolution copies of the image that are automatically used if the image needs to be scaled down when rendered. They help improve image quality and performance when rendering. This method returns an error if the image is compressed, in a custom format, or if the image's width/height is [code]0[/code].
</description>
</method>
<method name="get_data" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Returns a copy of the image's raw data.
</description>
</method>
<method name="get_format" qualifiers="const">
- <return type="int" enum="Image.Format">
- </return>
+ <return type="int" enum="Image.Format" />
<description>
Returns the image's format. See [enum Format] constants.
</description>
</method>
<method name="get_height" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the image's height.
</description>
</method>
<method name="get_mipmap_offset" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="mipmap" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="mipmap" type="int" />
<description>
Returns the offset where the image's mipmap with index [code]mipmap[/code] is stored in the [code]data[/code] dictionary.
</description>
</method>
<method name="get_pixel" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="x" type="int">
- </argument>
- <argument index="1" name="y" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="x" type="int" />
+ <argument index="1" name="y" type="int" />
<description>
Returns the color of the pixel at [code](x, y)[/code].
This is the same as [method get_pixelv], but with two integer arguments instead of a [Vector2i] argument.
</description>
</method>
<method name="get_pixelv" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="point" type="Vector2i">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="point" type="Vector2i" />
<description>
Returns the color of the pixel at [code]point[/code].
This is the same as [method get_pixel], but with a [Vector2i] argument instead of two integer arguments.
</description>
</method>
<method name="get_rect" qualifiers="const">
- <return type="Image">
- </return>
- <argument index="0" name="rect" type="Rect2">
- </argument>
+ <return type="Image" />
+ <argument index="0" name="rect" type="Rect2" />
<description>
Returns a new image that is a copy of the image's area specified with [code]rect[/code].
</description>
</method>
<method name="get_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the image's size (width and height).
</description>
</method>
<method name="get_used_rect" qualifiers="const">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Returns a [Rect2] enclosing the visible portion of the image, considering each pixel with a non-zero alpha channel as visible.
</description>
</method>
<method name="get_width" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the image's width.
</description>
</method>
<method name="has_mipmaps" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the image has generated mipmaps.
</description>
</method>
<method name="is_compressed" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the image is compressed.
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the image has no data.
</description>
</method>
<method name="is_invisible" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if all the image's pixels have an alpha value of 0. Returns [code]false[/code] if any pixel has an alpha value higher than 0.
</description>
</method>
<method name="load">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Loads an image from file [code]path[/code]. See [url=https://docs.godotengine.org/en/latest/getting_started/workflow/assets/importing_images.html#supported-image-formats]Supported image formats[/url] for a list of supported image formats and limitations.
[b]Warning:[/b] This method should only be used in the editor or in cases when you need to load external images at run-time, such as images located at the [code]user://[/code] directory, and may not work in exported projects.
@@ -366,131 +283,102 @@
</description>
</method>
<method name="load_bmp_from_buffer">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="buffer" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="buffer" type="PackedByteArray" />
<description>
Loads an image from the binary contents of a BMP file.
[b]Note:[/b] Godot's BMP module doesn't support 16-bit per pixel images. Only 1-bit, 4-bit, 8-bit, 24-bit, and 32-bit per pixel images are supported.
</description>
</method>
<method name="load_jpg_from_buffer">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="buffer" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="buffer" type="PackedByteArray" />
<description>
Loads an image from the binary contents of a JPEG file.
</description>
</method>
<method name="load_png_from_buffer">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="buffer" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="buffer" type="PackedByteArray" />
<description>
Loads an image from the binary contents of a PNG file.
</description>
</method>
<method name="load_tga_from_buffer">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="buffer" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="buffer" type="PackedByteArray" />
<description>
Loads an image from the binary contents of a TGA file.
</description>
</method>
<method name="load_webp_from_buffer">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="buffer" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="buffer" type="PackedByteArray" />
<description>
Loads an image from the binary contents of a WebP file.
</description>
</method>
<method name="normal_map_to_xy">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Converts the image's data to represent coordinates on a 3D plane. This is used when the image represents a normal map. A normal map can add lots of detail to a 3D surface without increasing the polygon count.
</description>
</method>
<method name="premultiply_alpha">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Multiplies color values with alpha values. Resulting color values for a pixel are [code](color * alpha)/256[/code].
</description>
</method>
<method name="resize">
- <return type="void">
- </return>
- <argument index="0" name="width" type="int">
- </argument>
- <argument index="1" name="height" type="int">
- </argument>
- <argument index="2" name="interpolation" type="int" enum="Image.Interpolation" default="1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="width" type="int" />
+ <argument index="1" name="height" type="int" />
+ <argument index="2" name="interpolation" type="int" enum="Image.Interpolation" default="1" />
<description>
Resizes the image to the given [code]width[/code] and [code]height[/code]. New pixels are calculated using the [code]interpolation[/code] mode defined via [enum Interpolation] constants.
</description>
</method>
<method name="resize_to_po2">
- <return type="void">
- </return>
- <argument index="0" name="square" type="bool" default="false">
- </argument>
- <argument index="1" name="interpolation" type="int" enum="Image.Interpolation" default="1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="square" type="bool" default="false" />
+ <argument index="1" name="interpolation" type="int" enum="Image.Interpolation" default="1" />
<description>
Resizes the image to the nearest power of 2 for the width and height. If [code]square[/code] is [code]true[/code] then set width and height to be the same. New pixels are calculated using the [code]interpolation[/code] mode defined via [enum Interpolation] constants.
</description>
</method>
<method name="rgbe_to_srgb">
- <return type="Image">
- </return>
+ <return type="Image" />
<description>
Converts a standard RGBE (Red Green Blue Exponent) image to an sRGB image.
</description>
</method>
<method name="save_exr" qualifiers="const">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="grayscale" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="grayscale" type="bool" default="false" />
<description>
Saves the image as an EXR file to [code]path[/code]. If [code]grayscale[/code] is [code]true[/code] and the image has only one channel, it will be saved explicitly as monochrome rather than one red channel. This function will return [constant ERR_UNAVAILABLE] if Godot was compiled without the TinyEXR module.
+ [b]Note:[/b] The TinyEXR module is disabled in non-editor builds, which means [method save_exr] will return [constant ERR_UNAVAILABLE] when it is called from an exported project.
</description>
</method>
<method name="save_png" qualifiers="const">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Saves the image as a PNG file to [code]path[/code].
</description>
</method>
<method name="save_png_to_buffer" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
</description>
</method>
<method name="set_pixel">
- <return type="void">
- </return>
- <argument index="0" name="x" type="int">
- </argument>
- <argument index="1" name="y" type="int">
- </argument>
- <argument index="2" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="x" type="int" />
+ <argument index="1" name="y" type="int" />
+ <argument index="2" name="color" type="Color" />
<description>
Sets the [Color] of the pixel at [code](x, y)[/code] to [code]color[/code]. Example:
[codeblocks]
@@ -515,12 +403,9 @@
</description>
</method>
<method name="set_pixelv">
- <return type="void">
- </return>
- <argument index="0" name="point" type="Vector2i">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point" type="Vector2i" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the [Color] of the pixel at [code]point[/code] to [code]color[/code]. Example:
[codeblocks]
@@ -545,15 +430,13 @@
</description>
</method>
<method name="shrink_x2">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Shrinks the image by a factor of 2.
</description>
</method>
<method name="srgb_to_linear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Converts the raw data from the sRGB colorspace to a linear scale.
</description>
diff --git a/doc/classes/ImageTexture.xml b/doc/classes/ImageTexture.xml
index f89b6ad57b..435fec6a50 100644
--- a/doc/classes/ImageTexture.xml
+++ b/doc/classes/ImageTexture.xml
@@ -32,35 +32,28 @@
</tutorials>
<methods>
<method name="create_from_image">
- <return type="void">
- </return>
- <argument index="0" name="image" type="Image">
- </argument>
+ <return type="void" />
+ <argument index="0" name="image" type="Image" />
<description>
Initializes the texture by allocating and setting the data from an [Image].
</description>
</method>
<method name="get_format" qualifiers="const">
- <return type="int" enum="Image.Format">
- </return>
+ <return type="int" enum="Image.Format" />
<description>
Returns the format of the texture, one of [enum Image.Format].
</description>
</method>
<method name="set_size_override">
- <return type="void">
- </return>
- <argument index="0" name="size" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="Vector2" />
<description>
Resizes the texture to the specified dimensions.
</description>
</method>
<method name="update">
- <return type="void">
- </return>
- <argument index="0" name="image" type="Image">
- </argument>
+ <return type="void" />
+ <argument index="0" name="image" type="Image" />
<description>
Replaces the texture's data with a new [Image].
[b]Note:[/b] The texture has to be initialized first with the [method create_from_image] method before it can be updated. The new image dimensions, format, and mipmaps configuration should match the existing texture's image configuration, otherwise it has to be re-created with the [method create_from_image] method.
diff --git a/doc/classes/ImageTexture3D.xml b/doc/classes/ImageTexture3D.xml
index d05082487d..538a836c1c 100644
--- a/doc/classes/ImageTexture3D.xml
+++ b/doc/classes/ImageTexture3D.xml
@@ -8,28 +8,19 @@
</tutorials>
<methods>
<method name="create">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="format" type="int" enum="Image.Format">
- </argument>
- <argument index="1" name="width" type="int">
- </argument>
- <argument index="2" name="height" type="int">
- </argument>
- <argument index="3" name="depth" type="int">
- </argument>
- <argument index="4" name="use_mipmaps" type="bool">
- </argument>
- <argument index="5" name="data" type="Image[]">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="format" type="int" enum="Image.Format" />
+ <argument index="1" name="width" type="int" />
+ <argument index="2" name="height" type="int" />
+ <argument index="3" name="depth" type="int" />
+ <argument index="4" name="use_mipmaps" type="bool" />
+ <argument index="5" name="data" type="Image[]" />
<description>
</description>
</method>
<method name="update">
- <return type="void">
- </return>
- <argument index="0" name="data" type="Image[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="data" type="Image[]" />
<description>
</description>
</method>
diff --git a/doc/classes/ImageTextureLayered.xml b/doc/classes/ImageTextureLayered.xml
index d06b44afa9..1b7400803d 100644
--- a/doc/classes/ImageTextureLayered.xml
+++ b/doc/classes/ImageTextureLayered.xml
@@ -8,20 +8,15 @@
</tutorials>
<methods>
<method name="create_from_images">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="images" type="Array">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="images" type="Array" />
<description>
</description>
</method>
<method name="update_layer">
- <return type="void">
- </return>
- <argument index="0" name="image" type="Image">
- </argument>
- <argument index="1" name="layer" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="image" type="Image" />
+ <argument index="1" name="layer" type="int" />
<description>
</description>
</method>
diff --git a/doc/classes/ImmediateMesh.xml b/doc/classes/ImmediateMesh.xml
index d2ae091cad..69637d5bdd 100644
--- a/doc/classes/ImmediateMesh.xml
+++ b/doc/classes/ImmediateMesh.xml
@@ -10,89 +10,70 @@
</tutorials>
<methods>
<method name="clear_surfaces">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clear all surfaces.
</description>
</method>
<method name="surface_add_vertex">
- <return type="void">
- </return>
- <argument index="0" name="vertex" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="vertex" type="Vector3" />
<description>
Add a 3D vertex using the current attributes previously set.
</description>
</method>
<method name="surface_add_vertex_2d">
- <return type="void">
- </return>
- <argument index="0" name="vertex" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="vertex" type="Vector2" />
<description>
Add a 2D vertex using the current attributes previously set.
</description>
</method>
<method name="surface_begin">
- <return type="void">
- </return>
- <argument index="0" name="primitive" type="int" enum="Mesh.PrimitiveType">
- </argument>
- <argument index="1" name="material" type="Material" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="primitive" type="int" enum="Mesh.PrimitiveType" />
+ <argument index="1" name="material" type="Material" default="null" />
<description>
Begin a new surface.
</description>
</method>
<method name="surface_end">
- <return type="void">
- </return>
+ <return type="void" />
<description>
End and commit current surface. Note that surface being created will not be visible until this function is called.
</description>
</method>
<method name="surface_set_color">
- <return type="void">
- </return>
- <argument index="0" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="color" type="Color" />
<description>
Set the color attribute that will be pushed with the next vertex.
</description>
</method>
<method name="surface_set_normal">
- <return type="void">
- </return>
- <argument index="0" name="normal" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="normal" type="Vector3" />
<description>
Set the normal attribute that will be pushed with the next vertex.
</description>
</method>
<method name="surface_set_tangent">
- <return type="void">
- </return>
- <argument index="0" name="tangent" type="Plane">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tangent" type="Plane" />
<description>
Set the tangent attribute that will be pushed with the next vertex.
</description>
</method>
<method name="surface_set_uv">
- <return type="void">
- </return>
- <argument index="0" name="uv" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="uv" type="Vector2" />
<description>
Set the UV attribute that will be pushed with the next vertex.
</description>
</method>
<method name="surface_set_uv2">
- <return type="void">
- </return>
- <argument index="0" name="uv2" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="uv2" type="Vector2" />
<description>
Set the UV2 attribute that will be pushed with the next vertex.
</description>
diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml
index c340895130..293456b645 100644
--- a/doc/classes/Input.xml
+++ b/doc/classes/Input.xml
@@ -13,12 +13,9 @@
</tutorials>
<methods>
<method name="action_press">
- <return type="void">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="strength" type="float" default="1.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="strength" type="float" default="1.0" />
<description>
This will simulate pressing the specified action.
The strength can be used for non-boolean actions, it's ranged between 0 and 1 representing the intensity of the given action.
@@ -26,28 +23,22 @@
</description>
</method>
<method name="action_release">
- <return type="void">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="action" type="StringName" />
<description>
If the specified action is already pressed, this will release it.
</description>
</method>
<method name="add_joy_mapping">
- <return type="void">
- </return>
- <argument index="0" name="mapping" type="String">
- </argument>
- <argument index="1" name="update_existing" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mapping" type="String" />
+ <argument index="1" name="update_existing" type="bool" default="false" />
<description>
Adds a new mapping entry (in SDL2 format) to the mapping database. Optionally update already connected devices.
</description>
</method>
<method name="get_accelerometer" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the acceleration in m/s² of the device's accelerometer sensor, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].
Note this method returns an empty [Vector3] when running from the editor even when your device has an accelerometer. You must export your project to a supported device to read values from the accelerometer.
@@ -55,158 +46,126 @@
</description>
</method>
<method name="get_action_raw_strength" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="exact_match" type="bool" default="false">
- </argument>
+ <return type="float" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="exact_match" type="bool" default="false" />
<description>
Returns a value between 0 and 1 representing the raw intensity of the given action, ignoring the action's deadzone. In most cases, you should use [method get_action_strength] instead.
+ If [code]exact_match[/code] is [code]false[/code], it ignores the input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="get_action_strength" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="exact_match" type="bool" default="false">
- </argument>
+ <return type="float" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="exact_match" type="bool" default="false" />
<description>
Returns a value between 0 and 1 representing the intensity of the given action. In a joypad, for example, the further away the axis (analog sticks or L2, R2 triggers) is from the dead zone, the closer the value will be to 1. If the action is mapped to a control that has no axis as the keyboard, the value returned will be 0 or 1.
+ If [code]exact_match[/code] is [code]false[/code], it ignores the input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="get_axis" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="negative_action" type="StringName">
- </argument>
- <argument index="1" name="positive_action" type="StringName">
- </argument>
+ <return type="float" />
+ <argument index="0" name="negative_action" type="StringName" />
+ <argument index="1" name="positive_action" type="StringName" />
<description>
Get axis input by specifying two actions, one negative and one positive.
This is a shorthand for writing [code]Input.get_action_strength("positive_action") - Input.get_action_strength("negative_action")[/code].
</description>
</method>
<method name="get_connected_joypads">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an [Array] containing the device IDs of all currently connected joypads.
</description>
</method>
<method name="get_current_cursor_shape" qualifiers="const">
- <return type="int" enum="Input.CursorShape">
- </return>
+ <return type="int" enum="Input.CursorShape" />
<description>
Returns the currently assigned cursor shape (see [enum CursorShape]).
</description>
</method>
<method name="get_gravity" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the gravity in m/s² of the device's accelerometer sensor, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].
[b]Note:[/b] This method only works on Android and iOS. On other platforms, it always returns [constant Vector3.ZERO].
</description>
</method>
<method name="get_gyroscope" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the rotation rate in rad/s around a device's X, Y, and Z axes of the gyroscope sensor, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].
[b]Note:[/b] This method only works on Android and iOS. On other platforms, it always returns [constant Vector3.ZERO].
</description>
</method>
<method name="get_joy_axis" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="device" type="int">
- </argument>
- <argument index="1" name="axis" type="int" enum="JoyAxis">
- </argument>
+ <return type="float" />
+ <argument index="0" name="device" type="int" />
+ <argument index="1" name="axis" type="int" enum="JoyAxis" />
<description>
Returns the current value of the joypad axis at given index (see [enum JoyAxis]).
</description>
</method>
<method name="get_joy_guid" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="device" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="device" type="int" />
<description>
Returns a SDL2-compatible device GUID on platforms that use gamepad remapping. Returns [code]"Default Gamepad"[/code] otherwise.
</description>
</method>
<method name="get_joy_name">
- <return type="String">
- </return>
- <argument index="0" name="device" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="device" type="int" />
<description>
Returns the name of the joypad at the specified device index.
</description>
</method>
<method name="get_joy_vibration_duration">
- <return type="float">
- </return>
- <argument index="0" name="device" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="device" type="int" />
<description>
Returns the duration of the current vibration effect in seconds.
</description>
</method>
<method name="get_joy_vibration_strength">
- <return type="Vector2">
- </return>
- <argument index="0" name="device" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="device" type="int" />
<description>
Returns the strength of the joypad vibration: x is the strength of the weak motor, and y is the strength of the strong motor.
</description>
</method>
<method name="get_last_mouse_speed" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the mouse speed for the last time the cursor was moved, and this until the next frame where the mouse moves. This means that even if the mouse is not moving, this function will still return the value of the last motion.
</description>
</method>
<method name="get_magnetometer" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the magnetic field strength in micro-Tesla for all axes of the device's magnetometer sensor, if the device has one. Otherwise, the method returns [constant Vector3.ZERO].
[b]Note:[/b] This method only works on Android, iOS and UWP. On other platforms, it always returns [constant Vector3.ZERO].
</description>
</method>
<method name="get_mouse_button_mask" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns mouse buttons as a bitmask. If multiple mouse buttons are pressed at the same time, the bits are added together.
</description>
</method>
<method name="get_mouse_mode" qualifiers="const">
- <return type="int" enum="Input.MouseMode">
- </return>
+ <return type="int" enum="Input.MouseMode" />
<description>
Returns the mouse mode. See the constants for more information.
</description>
</method>
<method name="get_vector" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="negative_x" type="StringName">
- </argument>
- <argument index="1" name="positive_x" type="StringName">
- </argument>
- <argument index="2" name="negative_y" type="StringName">
- </argument>
- <argument index="3" name="positive_y" type="StringName">
- </argument>
- <argument index="4" name="deadzone" type="float" default="-1.0">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="negative_x" type="StringName" />
+ <argument index="1" name="positive_x" type="StringName" />
+ <argument index="2" name="negative_y" type="StringName" />
+ <argument index="3" name="positive_y" type="StringName" />
+ <argument index="4" name="deadzone" type="float" default="-1.0" />
<description>
Gets an input vector by specifying four actions for the positive and negative X and Y axes.
This method is useful when getting vector input, such as from a joystick, directional pad, arrows, or WASD. The vector has its length limited to 1 and has a circular deadzone, which is useful for using vector input as movement.
@@ -214,98 +173,76 @@
</description>
</method>
<method name="is_action_just_pressed" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="exact_match" type="bool" default="false">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="exact_match" type="bool" default="false" />
<description>
Returns [code]true[/code] when the user starts pressing the action event, meaning it's [code]true[/code] only on the frame that the user pressed down the button.
This is useful for code that needs to run only once when an action is pressed, instead of every frame while it's pressed.
+ If [code]exact_match[/code] is [code]false[/code], it ignores the input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_action_just_released" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="exact_match" type="bool" default="false">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="exact_match" type="bool" default="false" />
<description>
Returns [code]true[/code] when the user stops pressing the action event, meaning it's [code]true[/code] only on the frame that the user released the button.
+ If [code]exact_match[/code] is [code]false[/code], it ignores the input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_action_pressed" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="exact_match" type="bool" default="false">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="exact_match" type="bool" default="false" />
<description>
Returns [code]true[/code] if you are pressing the action event. Note that if an action has multiple buttons assigned and more than one of them is pressed, releasing one button will release the action, even if some other button assigned to this action is still pressed.
+ If [code]exact_match[/code] is [code]false[/code], it ignores the input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_joy_button_pressed" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="device" type="int">
- </argument>
- <argument index="1" name="button" type="int" enum="JoyButton">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="device" type="int" />
+ <argument index="1" name="button" type="int" enum="JoyButton" />
<description>
Returns [code]true[/code] if you are pressing the joypad button (see [enum JoyButton]).
</description>
</method>
<method name="is_joy_known">
- <return type="bool">
- </return>
- <argument index="0" name="device" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="device" type="int" />
<description>
Returns [code]true[/code] if the system knows the specified device. This means that it sets all button and axis indices. Unknown joypads are not expected to match these constants, but you can still retrieve events from them.
</description>
</method>
<method name="is_key_pressed" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="keycode" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="keycode" type="int" />
<description>
Returns [code]true[/code] if you are pressing the key in the current keyboard layout. You can pass a [enum Key] constant.
</description>
</method>
<method name="is_mouse_button_pressed" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="button" type="int" enum="MouseButton">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="button" type="int" enum="MouseButton" />
<description>
Returns [code]true[/code] if you are pressing the mouse button specified with [enum MouseButton].
</description>
</method>
<method name="joy_connection_changed">
- <return type="void">
- </return>
- <argument index="0" name="device" type="int">
- </argument>
- <argument index="1" name="connected" type="bool">
- </argument>
- <argument index="2" name="name" type="String">
- </argument>
- <argument index="3" name="guid" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="device" type="int" />
+ <argument index="1" name="connected" type="bool" />
+ <argument index="2" name="name" type="String" />
+ <argument index="3" name="guid" type="String" />
<description>
Notifies the [Input] singleton that a connection has changed, to update the state for the [code]device[/code] index.
This is used internally and should not have to be called from user scripts. See [signal joy_connection_changed] for the signal emitted when this is triggered internally.
</description>
</method>
<method name="parse_input_event">
- <return type="void">
- </return>
- <argument index="0" name="event" type="InputEvent">
- </argument>
+ <return type="void" />
+ <argument index="0" name="event" type="InputEvent" />
<description>
Feeds an [InputEvent] to the game. Can be used to artificially trigger input events from code. Also generates [method Node._input] calls.
Example:
@@ -326,23 +263,17 @@
</description>
</method>
<method name="remove_joy_mapping">
- <return type="void">
- </return>
- <argument index="0" name="guid" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="guid" type="String" />
<description>
Removes all mappings from the internal database that match the given GUID.
</description>
</method>
<method name="set_custom_mouse_cursor">
- <return type="void">
- </return>
- <argument index="0" name="image" type="Resource">
- </argument>
- <argument index="1" name="shape" type="int" enum="Input.CursorShape" default="0">
- </argument>
- <argument index="2" name="hotspot" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="image" type="Resource" />
+ <argument index="1" name="shape" type="int" enum="Input.CursorShape" default="0" />
+ <argument index="2" name="hotspot" type="Vector2" default="Vector2(0, 0)" />
<description>
Sets a custom mouse cursor image, which is only visible inside the game window. The hotspot can also be specified. Passing [code]null[/code] to the image parameter resets to the system cursor. See [enum CursorShape] for the list of shapes.
[code]image[/code]'s size must be lower than 256×256.
@@ -352,10 +283,8 @@
</description>
</method>
<method name="set_default_cursor_shape">
- <return type="void">
- </return>
- <argument index="0" name="shape" type="int" enum="Input.CursorShape" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shape" type="int" enum="Input.CursorShape" default="0" />
<description>
Sets the default cursor shape to be used in the viewport instead of [constant CURSOR_ARROW].
[b]Note:[/b] If you want to change the default cursor shape for [Control]'s nodes, use [member Control.mouse_default_cursor_shape] instead.
@@ -363,64 +292,49 @@
</description>
</method>
<method name="set_mouse_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="Input.MouseMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mode" type="int" enum="Input.MouseMode" />
<description>
Sets the mouse mode. See the constants for more information.
</description>
</method>
<method name="set_use_accumulated_input">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
Enables or disables the accumulation of similar input events sent by the operating system. When input accumulation is enabled, all input events generated during a frame will be merged and emitted when the frame is done rendering. Therefore, this limits the number of input method calls per second to the rendering FPS.
Input accumulation is enabled by default. It can be disabled to get slightly more precise/reactive input at the cost of increased CPU usage. In applications where drawing freehand lines is required, input accumulation should generally be disabled while the user is drawing the line to get results that closely follow the actual input.
</description>
</method>
<method name="start_joy_vibration">
- <return type="void">
- </return>
- <argument index="0" name="device" type="int">
- </argument>
- <argument index="1" name="weak_magnitude" type="float">
- </argument>
- <argument index="2" name="strong_magnitude" type="float">
- </argument>
- <argument index="3" name="duration" type="float" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="device" type="int" />
+ <argument index="1" name="weak_magnitude" type="float" />
+ <argument index="2" name="strong_magnitude" type="float" />
+ <argument index="3" name="duration" type="float" default="0" />
<description>
Starts to vibrate the joypad. Joypads usually come with two rumble motors, a strong and a weak one. [code]weak_magnitude[/code] is the strength of the weak motor (between 0 and 1) and [code]strong_magnitude[/code] is the strength of the strong motor (between 0 and 1). [code]duration[/code] is the duration of the effect in seconds (a duration of 0 will try to play the vibration indefinitely).
[b]Note:[/b] Not every hardware is compatible with long effect durations; it is recommended to restart an effect if it has to be played for more than a few seconds.
</description>
</method>
<method name="stop_joy_vibration">
- <return type="void">
- </return>
- <argument index="0" name="device" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="device" type="int" />
<description>
Stops the vibration of the joypad.
</description>
</method>
<method name="vibrate_handheld">
- <return type="void">
- </return>
- <argument index="0" name="duration_ms" type="int" default="500">
- </argument>
+ <return type="void" />
+ <argument index="0" name="duration_ms" type="int" default="500" />
<description>
Vibrate Android and iOS devices.
[b]Note:[/b] It needs [code]VIBRATE[/code] permission for Android at export settings. iOS does not support duration.
</description>
</method>
<method name="warp_mouse_position">
- <return type="void">
- </return>
- <argument index="0" name="to" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="to" type="Vector2" />
<description>
Sets the mouse position to the specified vector.
</description>
@@ -428,10 +342,8 @@
</methods>
<signals>
<signal name="joy_connection_changed">
- <argument index="0" name="device" type="int">
- </argument>
- <argument index="1" name="connected" type="bool">
- </argument>
+ <argument index="0" name="device" type="int" />
+ <argument index="1" name="connected" type="bool" />
<description>
Emitted when a joypad device has been connected or disconnected.
</description>
diff --git a/doc/classes/InputEvent.xml b/doc/classes/InputEvent.xml
index c28c4c4282..cd14965d1b 100644
--- a/doc/classes/InputEvent.xml
+++ b/doc/classes/InputEvent.xml
@@ -14,108 +14,87 @@
</tutorials>
<methods>
<method name="accumulate">
- <return type="bool">
- </return>
- <argument index="0" name="with_event" type="InputEvent">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="with_event" type="InputEvent" />
<description>
Returns [code]true[/code] if the given input event and this input event can be added together (only for events of type [InputEventMouseMotion]).
The given input event's position, global position and speed will be copied. The resulting [code]relative[/code] is a sum of both events. Both events' modifiers have to be identical.
</description>
</method>
<method name="as_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a [String] representation of the event.
</description>
</method>
<method name="get_action_strength" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="exact_match" type="bool" default="false">
- </argument>
+ <return type="float" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="exact_match" type="bool" default="false" />
<description>
Returns a value between 0.0 and 1.0 depending on the given actions' state. Useful for getting the value of events of type [InputEventJoypadMotion].
+ If [code]exact_match[/code] is [code]false[/code], it ignores the input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_action" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="exact_match" type="bool" default="false">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="exact_match" type="bool" default="false" />
<description>
Returns [code]true[/code] if this input event matches a pre-defined action of any type.
+ If [code]exact_match[/code] is [code]false[/code], it ignores the input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_action_pressed" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="allow_echo" type="bool" default="false">
- </argument>
- <argument index="2" name="exact_match" type="bool" default="false">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="allow_echo" type="bool" default="false" />
+ <argument index="2" name="exact_match" type="bool" default="false" />
<description>
Returns [code]true[/code] if the given action is being pressed (and is not an echo event for [InputEventKey] events, unless [code]allow_echo[/code] is [code]true[/code]). Not relevant for events of type [InputEventMouseMotion] or [InputEventScreenDrag].
+ If [code]exact_match[/code] is [code]false[/code], it ignores the input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_action_released" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="exact_match" type="bool" default="false">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="exact_match" type="bool" default="false" />
<description>
Returns [code]true[/code] if the given action is released (i.e. not pressed). Not relevant for events of type [InputEventMouseMotion] or [InputEventScreenDrag].
+ If [code]exact_match[/code] is [code]false[/code], it ignores the input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_action_type" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this input event's type is one that can be assigned to an input action.
</description>
</method>
<method name="is_echo" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this input event is an echo event (only for events of type [InputEventKey]).
</description>
</method>
<method name="is_match" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="event" type="InputEvent">
- </argument>
- <argument index="1" name="exact_match" type="bool" default="true">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="event" type="InputEvent" />
+ <argument index="1" name="exact_match" type="bool" default="true" />
<description>
Returns [code]true[/code] if the specified [code]event[/code] matches this event. Only valid for action events i.e key ([InputEventKey]), button ([InputEventMouseButton] or [InputEventJoypadButton]), axis [InputEventJoypadMotion] or action ([InputEventAction]) events.
If [code]exact_match[/code] is [code]false[/code], it ignores the input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="is_pressed" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this input event is pressed. Not relevant for events of type [InputEventMouseMotion] or [InputEventScreenDrag].
</description>
</method>
<method name="xformed_by" qualifiers="const">
- <return type="InputEvent">
- </return>
- <argument index="0" name="xform" type="Transform2D">
- </argument>
- <argument index="1" name="local_ofs" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="InputEvent" />
+ <argument index="0" name="xform" type="Transform2D" />
+ <argument index="1" name="local_ofs" type="Vector2" default="Vector2(0, 0)" />
<description>
Returns a copy of the given input event which has been offset by [code]local_ofs[/code] and transformed by [code]xform[/code]. Relevant for events of type [InputEventMouseButton], [InputEventMouseMotion], [InputEventScreenTouch], [InputEventScreenDrag], [InputEventMagnifyGesture] and [InputEventPanGesture].
</description>
diff --git a/doc/classes/InputEventKey.xml b/doc/classes/InputEventKey.xml
index 9f2b829823..1b09ddee94 100644
--- a/doc/classes/InputEventKey.xml
+++ b/doc/classes/InputEventKey.xml
@@ -11,16 +11,14 @@
</tutorials>
<methods>
<method name="get_keycode_with_modifiers" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the keycode combined with modifier keys such as [kbd]Shift[/kbd] or [kbd]Alt[/kbd]. See also [InputEventWithModifiers].
To get a human-readable representation of the [InputEventKey] with modifiers, use [code]OS.get_keycode_string(event.get_keycode_with_modifiers())[/code] where [code]event[/code] is the [InputEventKey].
</description>
</method>
<method name="get_physical_keycode_with_modifiers" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the physical keycode combined with modifier keys such as [kbd]Shift[/kbd] or [kbd]Alt[/kbd]. See also [InputEventWithModifiers].
To get a human-readable representation of the [InputEventKey] with modifiers, use [code]OS.get_keycode_string(event.get_physical_keycode_with_modifiers())[/code] where [code]event[/code] is the [InputEventKey].
diff --git a/doc/classes/InputMap.xml b/doc/classes/InputMap.xml
index 3948ab0208..16c2695613 100644
--- a/doc/classes/InputMap.xml
+++ b/doc/classes/InputMap.xml
@@ -11,129 +11,99 @@
</tutorials>
<methods>
<method name="action_add_event">
- <return type="void">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="event" type="InputEvent">
- </argument>
+ <return type="void" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="event" type="InputEvent" />
<description>
Adds an [InputEvent] to an action. This [InputEvent] will trigger the action.
</description>
</method>
<method name="action_erase_event">
- <return type="void">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="event" type="InputEvent">
- </argument>
+ <return type="void" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="event" type="InputEvent" />
<description>
Removes an [InputEvent] from an action.
</description>
</method>
<method name="action_erase_events">
- <return type="void">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="action" type="StringName" />
<description>
Removes all events from an action.
</description>
</method>
<method name="action_get_deadzone">
- <return type="float">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
+ <return type="float" />
+ <argument index="0" name="action" type="StringName" />
<description>
Returns a deadzone value for the action.
</description>
</method>
<method name="action_get_events">
- <return type="Array">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="action" type="StringName" />
<description>
Returns an array of [InputEvent]s associated with a given action.
</description>
</method>
<method name="action_has_event">
- <return type="bool">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="event" type="InputEvent">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="event" type="InputEvent" />
<description>
Returns [code]true[/code] if the action has the given [InputEvent] associated with it.
</description>
</method>
<method name="action_set_deadzone">
- <return type="void">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="deadzone" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="deadzone" type="float" />
<description>
Sets a deadzone value for the action.
</description>
</method>
<method name="add_action">
- <return type="void">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
- <argument index="1" name="deadzone" type="float" default="0.5">
- </argument>
+ <return type="void" />
+ <argument index="0" name="action" type="StringName" />
+ <argument index="1" name="deadzone" type="float" default="0.5" />
<description>
Adds an empty action to the [InputMap] with a configurable [code]deadzone[/code].
An [InputEvent] can then be added to this action with [method action_add_event].
</description>
</method>
<method name="erase_action">
- <return type="void">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="action" type="StringName" />
<description>
Removes an action from the [InputMap].
</description>
</method>
<method name="event_is_action" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="event" type="InputEvent">
- </argument>
- <argument index="1" name="action" type="StringName">
- </argument>
- <argument index="2" name="exact_match" type="bool" default="false">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="event" type="InputEvent" />
+ <argument index="1" name="action" type="StringName" />
+ <argument index="2" name="exact_match" type="bool" default="false" />
<description>
Returns [code]true[/code] if the given event is part of an existing action. This method ignores keyboard modifiers if the given [InputEvent] is not pressed (for proper release detection). See [method action_has_event] if you don't want this behavior.
+ If [code]exact_match[/code] is [code]false[/code], it ignores the input modifiers for [InputEventKey] and [InputEventMouseButton] events, and the direction for [InputEventJoypadMotion] events.
</description>
</method>
<method name="get_actions">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array of all actions in the [InputMap].
</description>
</method>
<method name="has_action" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="action" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="action" type="StringName" />
<description>
Returns [code]true[/code] if the [InputMap] has a registered action with the given name.
</description>
</method>
<method name="load_from_project_settings">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears all [InputEventAction] in the [InputMap] and load it anew from [ProjectSettings].
</description>
diff --git a/doc/classes/InstancePlaceholder.xml b/doc/classes/InstancePlaceholder.xml
index 934764b461..75892895d7 100644
--- a/doc/classes/InstancePlaceholder.xml
+++ b/doc/classes/InstancePlaceholder.xml
@@ -11,28 +11,22 @@
</tutorials>
<methods>
<method name="create_instance">
- <return type="Node">
- </return>
- <argument index="0" name="replace" type="bool" default="false">
- </argument>
- <argument index="1" name="custom_scene" type="PackedScene" default="null">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="replace" type="bool" default="false" />
+ <argument index="1" name="custom_scene" type="PackedScene" default="null" />
<description>
Not thread-safe. Use [method Object.call_deferred] if calling from a thread.
</description>
</method>
<method name="get_instance_path" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Gets the path to the [PackedScene] resource file that is loaded by default when calling [method create_instance]. Not thread-safe. Use [method Object.call_deferred] if calling from a thread.
</description>
</method>
<method name="get_stored_values">
- <return type="Dictionary">
- </return>
- <argument index="0" name="with_order" type="bool" default="false">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="with_order" type="bool" default="false" />
<description>
</description>
</method>
diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml
index c639e0b88e..06e98f7e57 100644
--- a/doc/classes/ItemList.xml
+++ b/doc/classes/ItemList.xml
@@ -12,25 +12,18 @@
</tutorials>
<methods>
<method name="add_icon_item">
- <return type="int">
- </return>
- <argument index="0" name="icon" type="Texture2D">
- </argument>
- <argument index="1" name="selectable" type="bool" default="true">
- </argument>
+ <return type="int" />
+ <argument index="0" name="icon" type="Texture2D" />
+ <argument index="1" name="selectable" type="bool" default="true" />
<description>
Adds an item to the item list with no text, only an icon. Returns the index of an added item.
</description>
</method>
<method name="add_item">
- <return type="int">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
- <argument index="1" name="icon" type="Texture2D" default="null">
- </argument>
- <argument index="2" name="selectable" type="bool" default="true">
- </argument>
+ <return type="int" />
+ <argument index="0" name="text" type="String" />
+ <argument index="1" name="icon" type="Texture2D" default="null" />
+ <argument index="2" name="selectable" type="bool" default="true" />
<description>
Adds an item to the item list with specified text. Returns the index of an added item.
Specify an [code]icon[/code], or use [code]null[/code] as the [code]icon[/code] for a list item with no icon.
@@ -38,433 +31,331 @@
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all items from the list.
</description>
</method>
<method name="clear_item_opentype_features">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Removes all OpenType features from the item's text.
</description>
</method>
<method name="deselect">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Ensures the item associated with the specified index is not selected.
</description>
</method>
<method name="deselect_all">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Ensures there are no items selected.
</description>
</method>
<method name="ensure_current_is_visible">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Ensure current selection is visible, adjusting the scroll position as necessary.
</description>
</method>
<method name="get_item_at_position" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="exact" type="bool" default="false">
- </argument>
+ <return type="int" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="exact" type="bool" default="false" />
<description>
Returns the item index at the given [code]position[/code].
When there is no item at that point, -1 will be returned if [code]exact[/code] is [code]true[/code], and the closest item index will be returned otherwise.
</description>
</method>
<method name="get_item_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of items currently in the list.
</description>
</method>
<method name="get_item_custom_bg_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the custom background color of the item specified by [code]idx[/code] index.
</description>
</method>
<method name="get_item_custom_fg_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the custom foreground color of the item specified by [code]idx[/code] index.
</description>
</method>
<method name="get_item_icon" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the icon associated with the specified index.
</description>
</method>
<method name="get_item_icon_modulate" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns a [Color] modulating item's icon at the specified index.
</description>
</method>
<method name="get_item_icon_region" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the region of item's icon used. The whole icon will be used if the region has no area.
</description>
</method>
<method name="get_item_language" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns item's text language code.
</description>
</method>
<method name="get_item_metadata" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the metadata value of the specified index.
</description>
</method>
<method name="get_item_opentype_feature" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="tag" type="String" />
<description>
Returns OpenType feature [code]tag[/code] of the item's text.
</description>
</method>
<method name="get_item_text" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the text associated with the specified index.
</description>
</method>
<method name="get_item_text_direction" qualifiers="const">
- <return type="int" enum="Control.TextDirection">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" enum="Control.TextDirection" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns item's text base writing direction.
</description>
</method>
<method name="get_item_tooltip" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the tooltip hint associated with the specified index.
</description>
</method>
<method name="get_selected_items">
- <return type="PackedInt32Array">
- </return>
+ <return type="PackedInt32Array" />
<description>
Returns an array with the indexes of the selected items.
</description>
</method>
<method name="get_v_scroll">
- <return type="VScrollBar">
- </return>
+ <return type="VScrollBar" />
<description>
Returns the [Object] ID associated with the list.
</description>
</method>
<method name="is_anything_selected">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if one or more items are selected.
</description>
</method>
<method name="is_item_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the item at the specified index is disabled.
</description>
</method>
<method name="is_item_icon_transposed" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the item icon will be drawn transposed, i.e. the X and Y axes are swapped.
</description>
</method>
<method name="is_item_selectable" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the item at the specified index is selectable.
</description>
</method>
<method name="is_item_tooltip_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the tooltip is enabled for specified item index.
</description>
</method>
<method name="is_selected" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the item at the specified index is currently selected.
</description>
</method>
<method name="move_item">
- <return type="void">
- </return>
- <argument index="0" name="from_idx" type="int">
- </argument>
- <argument index="1" name="to_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_idx" type="int" />
+ <argument index="1" name="to_idx" type="int" />
<description>
Moves item from index [code]from_idx[/code] to [code]to_idx[/code].
</description>
</method>
<method name="remove_item">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Removes the item specified by [code]idx[/code] index from the list.
</description>
</method>
<method name="select">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="single" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="single" type="bool" default="true" />
<description>
Select the item at the specified index.
[b]Note:[/b] This method does not trigger the item selection signal.
</description>
</method>
<method name="set_item_custom_bg_color">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="custom_bg_color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="custom_bg_color" type="Color" />
<description>
Sets the background color of the item specified by [code]idx[/code] index to the specified [Color].
</description>
</method>
<method name="set_item_custom_fg_color">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="custom_fg_color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="custom_fg_color" type="Color" />
<description>
Sets the foreground color of the item specified by [code]idx[/code] index to the specified [Color].
</description>
</method>
<method name="set_item_disabled">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="disabled" type="bool" />
<description>
Disables (or enables) the item at the specified index.
Disabled items cannot be selected and do not trigger activation signals (when double-clicking or pressing [kbd]Enter[/kbd]).
</description>
</method>
<method name="set_item_icon">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="icon" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="icon" type="Texture2D" />
<description>
Sets (or replaces) the icon's [Texture2D] associated with the specified index.
</description>
</method>
<method name="set_item_icon_modulate">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="modulate" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="modulate" type="Color" />
<description>
Sets a modulating [Color] of the item associated with the specified index.
</description>
</method>
<method name="set_item_icon_region">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="rect" type="Rect2" />
<description>
Sets the region of item's icon used. The whole icon will be used if the region has no area.
</description>
</method>
<method name="set_item_icon_transposed">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="transposed" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="transposed" type="bool" />
<description>
Sets whether the item icon will be drawn transposed.
</description>
</method>
<method name="set_item_language">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="language" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="language" type="String" />
<description>
Sets language code of item's text used for line-breaking and text shaping algorithms, if left empty current locale is used instead.
</description>
</method>
<method name="set_item_metadata">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="metadata" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="metadata" type="Variant" />
<description>
Sets a value (of any type) to be stored with the item associated with the specified index.
</description>
</method>
<method name="set_item_opentype_feature">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
- <argument index="2" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="tag" type="String" />
+ <argument index="2" name="value" type="int" />
<description>
Sets OpenType feature [code]tag[/code] for the item's text. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url].
</description>
</method>
<method name="set_item_selectable">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="selectable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="selectable" type="bool" />
<description>
Allows or disallows selection of the item associated with the specified index.
</description>
</method>
<method name="set_item_text">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="text" type="String" />
<description>
Sets text of the item associated with the specified index.
</description>
</method>
<method name="set_item_text_direction">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="direction" type="int" enum="Control.TextDirection">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="direction" type="int" enum="Control.TextDirection" />
<description>
Sets item's text base writing direction.
</description>
</method>
<method name="set_item_tooltip">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="tooltip" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="tooltip" type="String" />
<description>
Sets the tooltip hint for the item associated with the specified index.
</description>
</method>
<method name="set_item_tooltip_enabled">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
Sets whether the tooltip hint is enabled for specified item index.
</description>
</method>
<method name="sort_items_by_text">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sorts items in the list by their text.
</description>
@@ -515,17 +406,14 @@
</members>
<signals>
<signal name="item_activated">
- <argument index="0" name="index" type="int">
- </argument>
+ <argument index="0" name="index" type="int" />
<description>
Triggered when specified list item is activated via double-clicking or by pressing [kbd]Enter[/kbd].
</description>
</signal>
<signal name="item_rmb_selected">
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="at_position" type="Vector2">
- </argument>
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="at_position" type="Vector2" />
<description>
Triggered when specified list item has been selected via right mouse clicking.
The click position is also provided to allow appropriate popup of context menus at the correct location.
@@ -533,18 +421,15 @@
</description>
</signal>
<signal name="item_selected">
- <argument index="0" name="index" type="int">
- </argument>
+ <argument index="0" name="index" type="int" />
<description>
Triggered when specified item has been selected.
[member allow_reselect] must be enabled to reselect an item.
</description>
</signal>
<signal name="multi_selected">
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="selected" type="bool">
- </argument>
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="selected" type="bool" />
<description>
Triggered when a multiple selection is altered on a list allowing multiple selection.
</description>
@@ -555,8 +440,7 @@
</description>
</signal>
<signal name="rmb_clicked">
- <argument index="0" name="at_position" type="Vector2">
- </argument>
+ <argument index="0" name="at_position" type="Vector2" />
<description>
Triggered when a right mouse click is issued within the rect of the list but on empty space.
[member allow_rmb_select] must be enabled.
@@ -578,55 +462,55 @@
</constant>
</constants>
<theme_items>
- <theme_item name="bg" type="StyleBox">
+ <theme_item name="bg" data_type="style" type="StyleBox">
Default [StyleBox] for the [ItemList], i.e. used when the control is not being focused.
</theme_item>
- <theme_item name="bg_focus" type="StyleBox">
+ <theme_item name="bg_focus" data_type="style" type="StyleBox">
[StyleBox] used when the [ItemList] is being focused.
</theme_item>
- <theme_item name="cursor" type="StyleBox">
+ <theme_item name="cursor" data_type="style" type="StyleBox">
[StyleBox] used for the cursor, when the [ItemList] is being focused.
</theme_item>
- <theme_item name="cursor_unfocused" type="StyleBox">
+ <theme_item name="cursor_unfocused" data_type="style" type="StyleBox">
[StyleBox] used for the cursor, when the [ItemList] is not being focused.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
[Font] of the item's text.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.63, 0.63, 0.63, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.63, 0.63, 0.63, 1)">
Default text [Color] of the item.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the item.
</theme_item>
- <theme_item name="font_selected_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_selected_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Text [Color] used when the item is selected.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the item's text.
</theme_item>
- <theme_item name="guide_color" type="Color" default="Color(0, 0, 0, 0.1)">
+ <theme_item name="guide_color" data_type="color" type="Color" default="Color(0, 0, 0, 0.1)">
[Color] of the guideline. The guideline is a line drawn between each row of items.
</theme_item>
- <theme_item name="hseparation" type="int" default="4">
+ <theme_item name="hseparation" data_type="constant" type="int" default="4">
The horizontal spacing between items.
</theme_item>
- <theme_item name="icon_margin" type="int" default="4">
+ <theme_item name="icon_margin" data_type="constant" type="int" default="4">
The spacing between item's icon and text.
</theme_item>
- <theme_item name="line_separation" type="int" default="2">
+ <theme_item name="line_separation" data_type="constant" type="int" default="2">
The vertical spacing between each line of text.
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the item text outline.
</theme_item>
- <theme_item name="selected" type="StyleBox">
+ <theme_item name="selected" data_type="style" type="StyleBox">
[StyleBox] for the selected items, used when the [ItemList] is not being focused.
</theme_item>
- <theme_item name="selected_focus" type="StyleBox">
+ <theme_item name="selected_focus" data_type="style" type="StyleBox">
[StyleBox] for the selected items, used when the [ItemList] is being focused.
</theme_item>
- <theme_item name="vseparation" type="int" default="2">
+ <theme_item name="vseparation" data_type="constant" type="int" default="2">
The vertical spacing between items.
</theme_item>
</theme_items>
diff --git a/doc/classes/JSON.xml b/doc/classes/JSON.xml
index b95aaed143..cee7db08e9 100644
--- a/doc/classes/JSON.xml
+++ b/doc/classes/JSON.xml
@@ -30,48 +30,38 @@
</tutorials>
<methods>
<method name="get_data" qualifiers="const">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns the [Variant] containing the data of a successful [method parse].
[b]Note:[/b] It will return [code]Null[/code] if the last call to parse was unsuccessful or [method parse] has not yet been called.
</description>
</method>
<method name="get_error_line" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns [code]0[/code] if the last call to [method parse] was successful, or the line number where the parse failed.
</description>
</method>
<method name="get_error_message" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns an empty string if the last call to [method parse] was successful, or the error message if it failed.
</description>
</method>
<method name="parse">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="json_string" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="json_string" type="String" />
<description>
Attempts to parse the [code]json_string[/code] provided.
Returns an [enum Error]. If the parse was successful, it returns [code]OK[/code] and the result can be retrieved using [method get_data]. If unsuccessful, use [method get_error_line] and [method get_error_message] for identifying the source of the failure.
</description>
</method>
<method name="stringify">
- <return type="String">
- </return>
- <argument index="0" name="data" type="Variant">
- </argument>
- <argument index="1" name="indent" type="String" default="&quot;&quot;">
- </argument>
- <argument index="2" name="sort_keys" type="bool" default="true">
- </argument>
- <argument index="3" name="full_precision" type="bool" default="false">
- </argument>
+ <return type="String" />
+ <argument index="0" name="data" type="Variant" />
+ <argument index="1" name="indent" type="String" default="&quot;&quot;" />
+ <argument index="2" name="sort_keys" type="bool" default="true" />
+ <argument index="3" name="full_precision" type="bool" default="false" />
<description>
Converts a [Variant] var to JSON text and returns the result. Useful for serializing data to store or send over the network.
[b]Note:[/b] The JSON specification does not define integer or float types, but only a [i]number[/i] type. Therefore, converting a Variant to JSON text will convert all numerical values to [float] types.
diff --git a/doc/classes/JSONRPC.xml b/doc/classes/JSONRPC.xml
index 1e74159f58..30e99f4a30 100644
--- a/doc/classes/JSONRPC.xml
+++ b/doc/classes/JSONRPC.xml
@@ -8,74 +8,52 @@
</tutorials>
<methods>
<method name="make_notification">
- <return type="Dictionary">
- </return>
- <argument index="0" name="method" type="String">
- </argument>
- <argument index="1" name="params" type="Variant">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="method" type="String" />
+ <argument index="1" name="params" type="Variant" />
<description>
</description>
</method>
<method name="make_request">
- <return type="Dictionary">
- </return>
- <argument index="0" name="method" type="String">
- </argument>
- <argument index="1" name="params" type="Variant">
- </argument>
- <argument index="2" name="id" type="Variant">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="method" type="String" />
+ <argument index="1" name="params" type="Variant" />
+ <argument index="2" name="id" type="Variant" />
<description>
</description>
</method>
<method name="make_response">
- <return type="Dictionary">
- </return>
- <argument index="0" name="result" type="Variant">
- </argument>
- <argument index="1" name="id" type="Variant">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="result" type="Variant" />
+ <argument index="1" name="id" type="Variant" />
<description>
</description>
</method>
<method name="make_response_error" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="code" type="int">
- </argument>
- <argument index="1" name="message" type="String">
- </argument>
- <argument index="2" name="id" type="Variant" default="null">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="code" type="int" />
+ <argument index="1" name="message" type="String" />
+ <argument index="2" name="id" type="Variant" default="null" />
<description>
</description>
</method>
<method name="process_action">
- <return type="Variant">
- </return>
- <argument index="0" name="action" type="Variant">
- </argument>
- <argument index="1" name="recurse" type="bool" default="false">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="action" type="Variant" />
+ <argument index="1" name="recurse" type="bool" default="false" />
<description>
</description>
</method>
<method name="process_string">
- <return type="String">
- </return>
- <argument index="0" name="action" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="action" type="String" />
<description>
</description>
</method>
<method name="set_scope">
- <return type="void">
- </return>
- <argument index="0" name="scope" type="String">
- </argument>
- <argument index="1" name="target" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scope" type="String" />
+ <argument index="1" name="target" type="Object" />
<description>
</description>
</method>
diff --git a/doc/classes/JavaClassWrapper.xml b/doc/classes/JavaClassWrapper.xml
index 7bad336af9..90d988f9bb 100644
--- a/doc/classes/JavaClassWrapper.xml
+++ b/doc/classes/JavaClassWrapper.xml
@@ -8,10 +8,8 @@
</tutorials>
<methods>
<method name="wrap">
- <return type="JavaClass">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="JavaClass" />
+ <argument index="0" name="name" type="String" />
<description>
</description>
</method>
diff --git a/doc/classes/JavaScript.xml b/doc/classes/JavaScript.xml
index c87e637ff5..d68b4492c7 100644
--- a/doc/classes/JavaScript.xml
+++ b/doc/classes/JavaScript.xml
@@ -12,32 +12,24 @@
</tutorials>
<methods>
<method name="create_callback">
- <return type="JavaScriptObject">
- </return>
- <argument index="0" name="callable" type="Callable">
- </argument>
+ <return type="JavaScriptObject" />
+ <argument index="0" name="callable" type="Callable" />
<description>
Creates a reference to a [Callable] that can be used as a callback by JavaScript. The reference must be kept until the callback happens, or it won't be called at all. See [JavaScriptObject] for usage.
</description>
</method>
<method name="create_object" qualifiers="vararg">
- <return type="Variant">
- </return>
- <argument index="0" name="object" type="String">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="object" type="String" />
<description>
Creates a new JavaScript object using the [code]new[/code] constructor. The [code]object[/code] must a valid property of the JavaScript [code]window[/code]. See [JavaScriptObject] for usage.
</description>
</method>
<method name="download_buffer">
- <return type="void">
- </return>
- <argument index="0" name="buffer" type="PackedByteArray">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
- <argument index="2" name="mime" type="String" default="&quot;application/octet-stream&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="buffer" type="PackedByteArray" />
+ <argument index="1" name="name" type="String" />
+ <argument index="2" name="mime" type="String" default="&quot;application/octet-stream&quot;" />
<description>
Prompts the user to download a file containing the specified [code]buffer[/code]. The file will have the given [code]name[/code] and [code]mime[/code] type.
[b]Note:[/b] The browser may override the [url=https://en.wikipedia.org/wiki/Media_type]MIME type[/url] provided based on the file [code]name[/code]'s extension.
@@ -46,22 +38,17 @@
</description>
</method>
<method name="eval">
- <return type="Variant">
- </return>
- <argument index="0" name="code" type="String">
- </argument>
- <argument index="1" name="use_global_execution_context" type="bool" default="false">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="code" type="String" />
+ <argument index="1" name="use_global_execution_context" type="bool" default="false" />
<description>
Execute the string [code]code[/code] as JavaScript code within the browser window. This is a call to the actual global JavaScript function [code]eval()[/code].
If [code]use_global_execution_context[/code] is [code]true[/code], the code will be evaluated in the global execution context. Otherwise, it is evaluated in the execution context of a function within the engine's runtime environment.
</description>
</method>
<method name="get_interface">
- <return type="JavaScriptObject">
- </return>
- <argument index="0" name="interface" type="String">
- </argument>
+ <return type="JavaScriptObject" />
+ <argument index="0" name="interface" type="String" />
<description>
Returns an interface to a JavaScript object that can be used by scripts. The [code]interface[/code] must be a valid property of the JavaScript [code]window[/code]. The callback must accept a single [Array] argument, which will contain the JavaScript [code]arguments[/code]. See [JavaScriptObject] for usage.
</description>
diff --git a/doc/classes/Label.xml b/doc/classes/Label.xml
index ca22567ad5..3c349e052f 100644
--- a/doc/classes/Label.xml
+++ b/doc/classes/Label.xml
@@ -4,7 +4,7 @@
Displays plain text in a line or wrapped inside a rectangle. For formatted text, use [RichTextLabel].
</brief_description>
<description>
- Label displays plain text on the screen. It gives you control over the horizontal and vertical alignment, and can wrap the text inside the node's bounding rectangle. It doesn't support bold, italics or other formatting. For that, use [RichTextLabel] instead.
+ Label displays plain text on the screen. It gives you control over the horizontal and vertical alignment and can wrap the text inside the node's bounding rectangle. It doesn't support bold, italics, or other formatting. For that, use [RichTextLabel] instead.
[b]Note:[/b] Contrarily to most other [Control]s, Label's [member Control.mouse_filter] defaults to [constant Control.MOUSE_FILTER_IGNORE] (i.e. it doesn't react to mouse input events). This implies that a label won't display any configured [member Control.hint_tooltip], unless you change its mouse filter.
</description>
<tutorials>
@@ -12,24 +12,20 @@
</tutorials>
<methods>
<method name="clear_opentype_features">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all OpenType features.
</description>
</method>
<method name="get_line_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of lines of text the Label has.
</description>
</method>
<method name="get_line_height" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="line" type="int" default="-1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="line" type="int" default="-1" />
<description>
Returns the height of the line [code]line[/code].
If [code]line[/code] is set to [code]-1[/code], returns the biggest line height.
@@ -37,35 +33,28 @@
</description>
</method>
<method name="get_opentype_feature" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="tag" type="String" />
<description>
Returns OpenType feature [code]tag[/code].
</description>
</method>
<method name="get_total_character_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the total number of printable characters in the text (excluding spaces and newlines).
</description>
</method>
<method name="get_visible_line_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of lines shown. Useful if the [Label]'s height cannot currently display all lines.
</description>
</method>
<method name="set_opentype_feature">
- <return type="void">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tag" type="String" />
+ <argument index="1" name="value" type="int" />
<description>
Returns OpenType feature [code]tag[/code]. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url].
</description>
@@ -174,37 +163,37 @@
</constant>
</constants>
<theme_items>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
[Font] used for the [Label]'s text.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Default text [Color] of the [Label].
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of [Font]'s outline.
</theme_item>
- <theme_item name="font_shadow_color" type="Color" default="Color(0, 0, 0, 0)">
+ <theme_item name="font_shadow_color" data_type="color" type="Color" default="Color(0, 0, 0, 0)">
[Color] of the text's shadow effect.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the [Label]'s text.
</theme_item>
- <theme_item name="line_spacing" type="int" default="3">
+ <theme_item name="line_spacing" data_type="constant" type="int" default="3">
Vertical space between lines in multiline [Label].
</theme_item>
- <theme_item name="normal" type="StyleBox">
+ <theme_item name="normal" data_type="style" type="StyleBox">
Background [StyleBox] for the [Label].
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
Text outline size.
</theme_item>
- <theme_item name="shadow_offset_x" type="int" default="1">
+ <theme_item name="shadow_offset_x" data_type="constant" type="int" default="1">
The horizontal offset of the text's shadow.
</theme_item>
- <theme_item name="shadow_offset_y" type="int" default="1">
+ <theme_item name="shadow_offset_y" data_type="constant" type="int" default="1">
The vertical offset of the text's shadow.
</theme_item>
- <theme_item name="shadow_outline_size" type="int" default="1">
+ <theme_item name="shadow_outline_size" data_type="constant" type="int" default="1">
Shadow outline size. If set to 1 or greater, the shadow will be displayed around the whole text as an outline.
</theme_item>
</theme_items>
diff --git a/doc/classes/Light2D.xml b/doc/classes/Light2D.xml
index 0e71f29b58..918e8a5c8a 100644
--- a/doc/classes/Light2D.xml
+++ b/doc/classes/Light2D.xml
@@ -12,16 +12,13 @@
</tutorials>
<methods>
<method name="get_height" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
</description>
</method>
<method name="set_height">
- <return type="void">
- </return>
- <argument index="0" name="height" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="height" type="float" />
<description>
</description>
</method>
diff --git a/doc/classes/Light3D.xml b/doc/classes/Light3D.xml
index 815d20223d..380e9314d4 100644
--- a/doc/classes/Light3D.xml
+++ b/doc/classes/Light3D.xml
@@ -12,21 +12,16 @@
</tutorials>
<methods>
<method name="get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="Light3D.Param">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="Light3D.Param" />
<description>
Returns the value of the specified [enum Light3D.Param] parameter.
</description>
</method>
<method name="set_param">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="Light3D.Param">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="Light3D.Param" />
+ <argument index="1" name="value" type="float" />
<description>
Sets the value of the specified [enum Light3D.Param] parameter.
</description>
diff --git a/doc/classes/LightmapGIData.xml b/doc/classes/LightmapGIData.xml
index 3a37c6dcb7..c577439c8f 100644
--- a/doc/classes/LightmapGIData.xml
+++ b/doc/classes/LightmapGIData.xml
@@ -8,50 +8,38 @@
</tutorials>
<methods>
<method name="add_user">
- <return type="void">
- </return>
- <argument index="0" name="path" type="NodePath">
- </argument>
- <argument index="1" name="uv_scale" type="Rect2">
- </argument>
- <argument index="2" name="slice_index" type="int">
- </argument>
- <argument index="3" name="sub_instance" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="NodePath" />
+ <argument index="1" name="uv_scale" type="Rect2" />
+ <argument index="2" name="slice_index" type="int" />
+ <argument index="3" name="sub_instance" type="int" />
<description>
</description>
</method>
<method name="clear_users">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="get_user_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_user_path" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="user_idx" type="int">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="user_idx" type="int" />
<description>
</description>
</method>
<method name="is_using_spherical_harmonics" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="set_uses_spherical_harmonics">
- <return type="void">
- </return>
- <argument index="0" name="uses_spherical_harmonics" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="uses_spherical_harmonics" type="bool" />
<description>
</description>
</method>
diff --git a/doc/classes/Line2D.xml b/doc/classes/Line2D.xml
index 587d5833b9..093ba51755 100644
--- a/doc/classes/Line2D.xml
+++ b/doc/classes/Line2D.xml
@@ -12,56 +12,44 @@
</tutorials>
<methods>
<method name="add_point">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="at_position" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="at_position" type="int" default="-1" />
<description>
Adds a point at the [code]position[/code]. Appends the point at the end of the line.
If [code]at_position[/code] is given, the point is inserted before the point number [code]at_position[/code], moving that point (and every point after) after the inserted point. If [code]at_position[/code] is not given, or is an illegal value ([code]at_position &lt; 0[/code] or [code]at_position &gt;= [method get_point_count][/code]), the point will be appended at the end of the point list.
</description>
</method>
<method name="clear_points">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all points from the line.
</description>
</method>
<method name="get_point_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the Line2D's amount of points.
</description>
</method>
<method name="get_point_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="i" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="i" type="int" />
<description>
Returns point [code]i[/code]'s position.
</description>
</method>
<method name="remove_point">
- <return type="void">
- </return>
- <argument index="0" name="i" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="i" type="int" />
<description>
Removes the point at index [code]i[/code] from the line.
</description>
</method>
<method name="set_point_position">
- <return type="void">
- </return>
- <argument index="0" name="i" type="int">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="i" type="int" />
+ <argument index="1" name="position" type="Vector2" />
<description>
Overwrites the position in point [code]i[/code] with the supplied [code]position[/code].
</description>
diff --git a/doc/classes/LineEdit.xml b/doc/classes/LineEdit.xml
index af6fc738c7..834b5a41db 100644
--- a/doc/classes/LineEdit.xml
+++ b/doc/classes/LineEdit.xml
@@ -32,99 +32,80 @@
</tutorials>
<methods>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Erases the [LineEdit]'s [member text].
</description>
</method>
<method name="clear_opentype_features">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all OpenType features.
</description>
</method>
<method name="delete_char_at_caret">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Deletes one character at the caret's current position (equivalent to pressing [kbd]Delete[/kbd]).
</description>
</method>
<method name="delete_text">
- <return type="void">
- </return>
- <argument index="0" name="from_column" type="int">
- </argument>
- <argument index="1" name="to_column" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_column" type="int" />
+ <argument index="1" name="to_column" type="int" />
<description>
Deletes a section of the [member text] going from position [code]from_column[/code] to [code]to_column[/code]. Both parameters should be within the text's length.
</description>
</method>
<method name="deselect">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the current selection.
</description>
</method>
<method name="get_menu" qualifiers="const">
- <return type="PopupMenu">
- </return>
+ <return type="PopupMenu" />
<description>
Returns the [PopupMenu] of this [LineEdit]. By default, this menu is displayed when right-clicking on the [LineEdit].
</description>
</method>
<method name="get_opentype_feature" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="tag" type="String" />
<description>
Returns OpenType feature [code]tag[/code].
</description>
</method>
<method name="get_scroll_offset" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the scroll offset due to [member caret_column], as a number of characters.
</description>
</method>
<method name="insert_text_at_caret">
- <return type="void">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="text" type="String" />
<description>
Inserts [code]text[/code] at the caret. If the resulting value is longer than [member max_length], nothing happens.
</description>
</method>
<method name="is_menu_visible" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether the menu is visible. Use this instead of [code]get_menu().visible[/code] to improve performance (so the creation of the menu is avoided).
</description>
</method>
<method name="menu_option">
- <return type="void">
- </return>
- <argument index="0" name="option" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="option" type="int" />
<description>
Executes a given action as defined in the [enum MenuItems] enum.
</description>
</method>
<method name="select">
- <return type="void">
- </return>
- <argument index="0" name="from" type="int" default="0">
- </argument>
- <argument index="1" name="to" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from" type="int" default="0" />
+ <argument index="1" name="to" type="int" default="-1" />
<description>
Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/code]. By default, [code]from[/code] is at the beginning and [code]to[/code] at the end.
[codeblocks]
@@ -144,19 +125,15 @@
</description>
</method>
<method name="select_all">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Selects the whole [String].
</description>
</method>
<method name="set_opentype_feature">
- <return type="void">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tag" type="String" />
+ <argument index="1" name="value" type="int" />
<description>
Returns OpenType feature [code]tag[/code]. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url].
</description>
@@ -267,22 +244,19 @@
</members>
<signals>
<signal name="text_change_rejected">
- <argument index="0" name="rejected_substring" type="String">
- </argument>
+ <argument index="0" name="rejected_substring" type="String" />
<description>
Emitted when appending text that overflows the [member max_length]. The appended text is truncated to fit [member max_length], and the part that couldn't fit is passed as the [code]rejected_substring[/code] argument.
</description>
</signal>
<signal name="text_changed">
- <argument index="0" name="new_text" type="String">
- </argument>
+ <argument index="0" name="new_text" type="String" />
<description>
Emitted when the text changes.
</description>
</signal>
<signal name="text_submitted">
- <argument index="0" name="new_text" type="String">
- </argument>
+ <argument index="0" name="new_text" type="String" />
<description>
Emitted when the user presses [constant KEY_ENTER] on the [LineEdit].
</description>
@@ -391,52 +365,52 @@
</constant>
</constants>
<theme_items>
- <theme_item name="caret_color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
+ <theme_item name="caret_color" data_type="color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
Color of the [LineEdit]'s caret (text cursor).
</theme_item>
- <theme_item name="clear" type="Texture2D">
+ <theme_item name="clear" data_type="icon" type="Texture2D">
Texture for the clear button. See [member clear_button_enabled].
</theme_item>
- <theme_item name="clear_button_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="clear_button_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
Color used as default tint for the clear button.
</theme_item>
- <theme_item name="clear_button_color_pressed" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="clear_button_color_pressed" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Color used for the clear button when it's pressed.
</theme_item>
- <theme_item name="focus" type="StyleBox">
+ <theme_item name="focus" data_type="style" type="StyleBox">
Background used when [LineEdit] has GUI focus.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
Font used for the text.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
Default font color.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the [LineEdit].
</theme_item>
- <theme_item name="font_selected_color" type="Color" default="Color(0, 0, 0, 1)">
+ <theme_item name="font_selected_color" data_type="color" type="Color" default="Color(0, 0, 0, 1)">
Font color for selected text (inside the selection rectangle).
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the [LineEdit]'s text.
</theme_item>
- <theme_item name="font_uneditable_color" type="Color" default="Color(0.88, 0.88, 0.88, 0.5)">
+ <theme_item name="font_uneditable_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 0.5)">
Font color when editing is disabled.
</theme_item>
- <theme_item name="minimum_character_width" type="int" default="4">
+ <theme_item name="minimum_character_width" data_type="constant" type="int" default="4">
Minimum horizontal space for the text (not counting the clear button and content margins). This value is measured in count of 'M' characters (i.e. this amount of 'M' characters can be displayed without scrolling).
</theme_item>
- <theme_item name="normal" type="StyleBox">
+ <theme_item name="normal" data_type="style" type="StyleBox">
Default background for the [LineEdit].
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
- <theme_item name="read_only" type="StyleBox">
+ <theme_item name="read_only" data_type="style" type="StyleBox">
Background used when [LineEdit] is in read-only mode ([member editable] is set to [code]false[/code]).
</theme_item>
- <theme_item name="selection_color" type="Color" default="Color(0.49, 0.49, 0.49, 1)">
+ <theme_item name="selection_color" data_type="color" type="Color" default="Color(0.49, 0.49, 0.49, 1)">
Color of the selection rectangle.
</theme_item>
</theme_items>
diff --git a/doc/classes/LinkButton.xml b/doc/classes/LinkButton.xml
index 51b20cd04d..e4445e9076 100644
--- a/doc/classes/LinkButton.xml
+++ b/doc/classes/LinkButton.xml
@@ -11,28 +11,22 @@
</tutorials>
<methods>
<method name="clear_opentype_features">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all OpenType features.
</description>
</method>
<method name="get_opentype_feature" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="tag" type="String" />
<description>
Returns OpenType feature [code]tag[/code].
</description>
</method>
<method name="set_opentype_feature">
- <return type="void">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tag" type="String" />
+ <argument index="1" name="value" type="int" />
<description>
Returns OpenType feature [code]tag[/code]. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url].
</description>
@@ -72,31 +66,31 @@
</constant>
</constants>
<theme_items>
- <theme_item name="focus" type="StyleBox">
+ <theme_item name="focus" data_type="style" type="StyleBox">
[StyleBox] used when the [LinkButton] is focused. It is displayed over the current [StyleBox], so using [StyleBoxEmpty] will just disable the focus visual effect.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
[Font] of the [LinkButton]'s text.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
Default text [Color] of the [LinkButton].
</theme_item>
- <theme_item name="font_hover_color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
+ <theme_item name="font_hover_color" data_type="color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
Text [Color] used when the [LinkButton] is being hovered.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the [LinkButton].
</theme_item>
- <theme_item name="font_pressed_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Text [Color] used when the [LinkButton] is being pressed.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the [LinkButton]'s text.
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
- <theme_item name="underline_spacing" type="int" default="2">
+ <theme_item name="underline_spacing" data_type="constant" type="int" default="2">
The vertical space between the baseline of text and the underline.
</theme_item>
</theme_items>
diff --git a/doc/classes/Listener3D.xml b/doc/classes/Listener3D.xml
index b2fcbe534d..9cc803f241 100644
--- a/doc/classes/Listener3D.xml
+++ b/doc/classes/Listener3D.xml
@@ -11,30 +11,26 @@
</tutorials>
<methods>
<method name="clear_current">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Disables the listener to use the current camera's listener instead.
</description>
</method>
<method name="get_listener_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
+ <return type="Transform3D" />
<description>
Returns the listener's global orthonormalized [Transform3D].
</description>
</method>
<method name="is_current" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the listener was made current using [method make_current], [code]false[/code] otherwise.
[b]Note:[/b] There may be more than one Listener3D marked as "current" in the scene tree, but only the one that was made current last will be used.
</description>
</method>
<method name="make_current">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Enables the listener. This will override the current camera's listener.
</description>
diff --git a/doc/classes/MainLoop.xml b/doc/classes/MainLoop.xml
index 537ecf2b2b..11124a1436 100644
--- a/doc/classes/MainLoop.xml
+++ b/doc/classes/MainLoop.xml
@@ -45,34 +45,28 @@
</tutorials>
<methods>
<method name="_finalize" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Called before the program exits.
</description>
</method>
<method name="_initialize" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Called once during initialization.
</description>
</method>
<method name="_physics_process" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="delta" type="float" />
<description>
Called each physics frame with the time since the last physics frame as argument ([code]delta[/code], in seconds). Equivalent to [method Node._physics_process].
If implemented, the method must return a boolean value. [code]true[/code] ends the main loop, while [code]false[/code] lets it proceed to the next frame.
</description>
</method>
<method name="_process" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="delta" type="float" />
<description>
Called each process (idle) frame with the time since the last process frame as argument (in seconds). Equivalent to [method Node._process].
If implemented, the method must return a boolean value. [code]true[/code] ends the main loop, while [code]false[/code] lets it proceed to the next frame.
@@ -81,10 +75,8 @@
</methods>
<signals>
<signal name="on_request_permissions_result">
- <argument index="0" name="permission" type="String">
- </argument>
- <argument index="1" name="granted" type="bool">
- </argument>
+ <argument index="0" name="permission" type="String" />
+ <argument index="1" name="granted" type="bool" />
<description>
Emitted when a user responds to a permission request.
</description>
diff --git a/doc/classes/MarginContainer.xml b/doc/classes/MarginContainer.xml
index a51632d5f1..419857c13f 100644
--- a/doc/classes/MarginContainer.xml
+++ b/doc/classes/MarginContainer.xml
@@ -32,16 +32,16 @@
<constants>
</constants>
<theme_items>
- <theme_item name="margin_bottom" type="int" default="0">
+ <theme_item name="margin_bottom" data_type="constant" type="int" default="0">
All direct children of [MarginContainer] will have a bottom margin of [code]margin_bottom[/code] pixels.
</theme_item>
- <theme_item name="margin_left" type="int" default="0">
+ <theme_item name="margin_left" data_type="constant" type="int" default="0">
All direct children of [MarginContainer] will have a left margin of [code]margin_left[/code] pixels.
</theme_item>
- <theme_item name="margin_right" type="int" default="0">
+ <theme_item name="margin_right" data_type="constant" type="int" default="0">
All direct children of [MarginContainer] will have a right margin of [code]margin_right[/code] pixels.
</theme_item>
- <theme_item name="margin_top" type="int" default="0">
+ <theme_item name="margin_top" data_type="constant" type="int" default="0">
All direct children of [MarginContainer] will have a top margin of [code]margin_top[/code] pixels.
</theme_item>
</theme_items>
diff --git a/doc/classes/Marshalls.xml b/doc/classes/Marshalls.xml
index 4250ffd700..0f36dd11ca 100644
--- a/doc/classes/Marshalls.xml
+++ b/doc/classes/Marshalls.xml
@@ -10,60 +10,46 @@
</tutorials>
<methods>
<method name="base64_to_raw">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="base64_str" type="String">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="base64_str" type="String" />
<description>
Returns a decoded [PackedByteArray] corresponding to the Base64-encoded string [code]base64_str[/code].
</description>
</method>
<method name="base64_to_utf8">
- <return type="String">
- </return>
- <argument index="0" name="base64_str" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="base64_str" type="String" />
<description>
Returns a decoded string corresponding to the Base64-encoded string [code]base64_str[/code].
</description>
</method>
<method name="base64_to_variant">
- <return type="Variant">
- </return>
- <argument index="0" name="base64_str" type="String">
- </argument>
- <argument index="1" name="allow_objects" type="bool" default="false">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="base64_str" type="String" />
+ <argument index="1" name="allow_objects" type="bool" default="false" />
<description>
Returns a decoded [Variant] corresponding to the Base64-encoded string [code]base64_str[/code]. If [code]allow_objects[/code] is [code]true[/code], decoding objects is allowed.
[b]Warning:[/b] Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.
</description>
</method>
<method name="raw_to_base64">
- <return type="String">
- </return>
- <argument index="0" name="array" type="PackedByteArray">
- </argument>
+ <return type="String" />
+ <argument index="0" name="array" type="PackedByteArray" />
<description>
Returns a Base64-encoded string of a given [PackedByteArray].
</description>
</method>
<method name="utf8_to_base64">
- <return type="String">
- </return>
- <argument index="0" name="utf8_str" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="utf8_str" type="String" />
<description>
Returns a Base64-encoded string of the UTF-8 string [code]utf8_str[/code].
</description>
</method>
<method name="variant_to_base64">
- <return type="String">
- </return>
- <argument index="0" name="variant" type="Variant">
- </argument>
- <argument index="1" name="full_objects" type="bool" default="false">
- </argument>
+ <return type="String" />
+ <argument index="0" name="variant" type="Variant" />
+ <argument index="1" name="full_objects" type="bool" default="false" />
<description>
Returns a Base64-encoded string of the [Variant] [code]variant[/code]. If [code]full_objects[/code] is [code]true[/code], encoding objects is allowed (and can potentially include code).
</description>
diff --git a/doc/classes/Material.xml b/doc/classes/Material.xml
index 0d287a5d1d..a3e98228c6 100644
--- a/doc/classes/Material.xml
+++ b/doc/classes/Material.xml
@@ -12,8 +12,7 @@
</tutorials>
<methods>
<method name="inspect_native_shader_code">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
diff --git a/doc/classes/MenuButton.xml b/doc/classes/MenuButton.xml
index 3b37853d70..1c7e6f1f19 100644
--- a/doc/classes/MenuButton.xml
+++ b/doc/classes/MenuButton.xml
@@ -12,17 +12,14 @@
</tutorials>
<methods>
<method name="get_popup" qualifiers="const">
- <return type="PopupMenu">
- </return>
+ <return type="PopupMenu" />
<description>
Returns the [PopupMenu] contained in this button.
</description>
</method>
<method name="set_disable_shortcuts">
- <return type="void">
- </return>
- <argument index="0" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="disabled" type="bool" />
<description>
If [code]true[/code], shortcuts are disabled and cannot be used to trigger the button.
</description>
@@ -47,46 +44,46 @@
<constants>
</constants>
<theme_items>
- <theme_item name="disabled" type="StyleBox">
+ <theme_item name="disabled" data_type="style" type="StyleBox">
[StyleBox] used when the [MenuButton] is disabled.
</theme_item>
- <theme_item name="focus" type="StyleBox">
+ <theme_item name="focus" data_type="style" type="StyleBox">
[StyleBox] used when the [MenuButton] is focused. It is displayed over the current [StyleBox], so using [StyleBoxEmpty] will just disable the focus visual effect.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
[Font] of the [MenuButton]'s text.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
Default text [Color] of the [MenuButton].
</theme_item>
- <theme_item name="font_disabled_color" type="Color" default="Color(1, 1, 1, 0.3)">
+ <theme_item name="font_disabled_color" data_type="color" type="Color" default="Color(1, 1, 1, 0.3)">
Text [Color] used when the [MenuButton] is disabled.
</theme_item>
- <theme_item name="font_hover_color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
+ <theme_item name="font_hover_color" data_type="color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
Text [Color] used when the [MenuButton] is being hovered.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the [MenuButton].
</theme_item>
- <theme_item name="font_pressed_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Text [Color] used when the [MenuButton] is being pressed.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the [MenuButton]'s text.
</theme_item>
- <theme_item name="hover" type="StyleBox">
+ <theme_item name="hover" data_type="style" type="StyleBox">
[StyleBox] used when the [MenuButton] is being hovered.
</theme_item>
- <theme_item name="hseparation" type="int" default="3">
+ <theme_item name="hseparation" data_type="constant" type="int" default="3">
The horizontal space between [MenuButton]'s icon and text.
</theme_item>
- <theme_item name="normal" type="StyleBox">
+ <theme_item name="normal" data_type="style" type="StyleBox">
Default [StyleBox] for the [MenuButton].
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
- <theme_item name="pressed" type="StyleBox">
+ <theme_item name="pressed" data_type="style" type="StyleBox">
[StyleBox] used when the [MenuButton] is being pressed.
</theme_item>
</theme_items>
diff --git a/doc/classes/Mesh.xml b/doc/classes/Mesh.xml
index 2cc0bd2ef9..bfa55c2d35 100644
--- a/doc/classes/Mesh.xml
+++ b/doc/classes/Mesh.xml
@@ -14,12 +14,9 @@
</tutorials>
<methods>
<method name="create_convex_shape" qualifiers="const">
- <return type="Shape3D">
- </return>
- <argument index="0" name="clean" type="bool" default="true">
- </argument>
- <argument index="1" name="simplify" type="bool" default="false">
- </argument>
+ <return type="Shape3D" />
+ <argument index="0" name="clean" type="bool" default="true" />
+ <argument index="1" name="simplify" type="bool" default="false" />
<description>
Calculate a [ConvexPolygonShape3D] from the mesh.
If [code]clean[/code] is [code]true[/code] (default), duplicate and interior vertices are removed automatically. You can set it to [code]false[/code] to make the process faster if not needed.
@@ -27,85 +24,69 @@
</description>
</method>
<method name="create_outline" qualifiers="const">
- <return type="Mesh">
- </return>
- <argument index="0" name="margin" type="float">
- </argument>
+ <return type="Mesh" />
+ <argument index="0" name="margin" type="float" />
<description>
Calculate an outline mesh at a defined offset (margin) from the original mesh.
[b]Note:[/b] This method typically returns the vertices in reverse order (e.g. clockwise to counterclockwise).
</description>
</method>
<method name="create_trimesh_shape" qualifiers="const">
- <return type="Shape3D">
- </return>
+ <return type="Shape3D" />
<description>
Calculate a [ConcavePolygonShape3D] from the mesh.
</description>
</method>
<method name="generate_triangle_mesh" qualifiers="const">
- <return type="TriangleMesh">
- </return>
+ <return type="TriangleMesh" />
<description>
Generate a [TriangleMesh] from the mesh.
</description>
</method>
<method name="get_aabb" qualifiers="const">
- <return type="AABB">
- </return>
+ <return type="AABB" />
<description>
Returns the smallest [AABB] enclosing this mesh in local space. Not affected by [code]custom_aabb[/code]. See also [method VisualInstance3D.get_transformed_aabb].
[b]Note:[/b] This is only implemented for [ArrayMesh] and [PrimitiveMesh].
</description>
</method>
<method name="get_faces" qualifiers="const">
- <return type="PackedVector3Array">
- </return>
+ <return type="PackedVector3Array" />
<description>
Returns all the vertices that make up the faces of the mesh. Each three vertices represent one triangle.
</description>
</method>
<method name="get_surface_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of surfaces that the [Mesh] holds.
</description>
</method>
<method name="surface_get_arrays" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="surf_idx" type="int" />
<description>
Returns the arrays for the vertices, normals, uvs, etc. that make up the requested surface (see [method ArrayMesh.add_surface_from_arrays]).
</description>
</method>
<method name="surface_get_blend_shape_arrays" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="surf_idx" type="int" />
<description>
Returns the blend shape arrays for the requested surface.
</description>
</method>
<method name="surface_get_material" qualifiers="const">
- <return type="Material">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
+ <return type="Material" />
+ <argument index="0" name="surf_idx" type="int" />
<description>
Returns a [Material] in a given surface. Surface is rendered using this material.
</description>
</method>
<method name="surface_set_material">
- <return type="void">
- </return>
- <argument index="0" name="surf_idx" type="int">
- </argument>
- <argument index="1" name="material" type="Material">
- </argument>
+ <return type="void" />
+ <argument index="0" name="surf_idx" type="int" />
+ <argument index="1" name="material" type="Material" />
<description>
Sets a [Material] for a given surface. Surface will be rendered using this material.
</description>
diff --git a/doc/classes/MeshDataTool.xml b/doc/classes/MeshDataTool.xml
index c0ee1e1956..338deed0be 100644
--- a/doc/classes/MeshDataTool.xml
+++ b/doc/classes/MeshDataTool.xml
@@ -52,366 +52,281 @@
</tutorials>
<methods>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears all data currently in MeshDataTool.
</description>
</method>
<method name="commit_to_surface">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="mesh" type="ArrayMesh">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="mesh" type="ArrayMesh" />
<description>
Adds a new surface to specified [Mesh] with edited data.
</description>
</method>
<method name="create_from_surface">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="mesh" type="ArrayMesh">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="mesh" type="ArrayMesh" />
+ <argument index="1" name="surface" type="int" />
<description>
Uses specified surface of given [Mesh] to populate data for MeshDataTool.
Requires [Mesh] with primitive type [constant Mesh.PRIMITIVE_TRIANGLES].
</description>
</method>
<method name="get_edge_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of edges in this [Mesh].
</description>
</method>
<method name="get_edge_faces" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns array of faces that touch given edge.
</description>
</method>
<method name="get_edge_meta" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns meta information assigned to given edge.
</description>
</method>
<method name="get_edge_vertex" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="vertex" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="vertex" type="int" />
<description>
Returns index of specified vertex connected to given edge.
Vertex argument can only be 0 or 1 because edges are comprised of two vertices.
</description>
</method>
<method name="get_face_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of faces in this [Mesh].
</description>
</method>
<method name="get_face_edge" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="edge" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="edge" type="int" />
<description>
Returns specified edge associated with given face.
Edge argument must 2 or less because a face only has three edges.
</description>
</method>
<method name="get_face_meta" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the metadata associated with the given face.
</description>
</method>
<method name="get_face_normal" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="idx" type="int" />
<description>
Calculates and returns the face normal of the given face.
</description>
</method>
<method name="get_face_vertex" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="vertex" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="vertex" type="int" />
<description>
Returns the specified vertex of the given face.
Vertex argument must be 2 or less because faces contain three vertices.
</description>
</method>
<method name="get_format" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the [Mesh]'s format. Format is an integer made up of [Mesh] format flags combined together. For example, a mesh containing both vertices and normals would return a format of [code]3[/code] because [constant Mesh.ARRAY_FORMAT_VERTEX] is [code]1[/code] and [constant Mesh.ARRAY_FORMAT_NORMAL] is [code]2[/code].
See [enum Mesh.ArrayFormat] for a list of format flags.
</description>
</method>
<method name="get_material" qualifiers="const">
- <return type="Material">
- </return>
+ <return type="Material" />
<description>
Returns the material assigned to the [Mesh].
</description>
</method>
<method name="get_vertex" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the vertex at given index.
</description>
</method>
<method name="get_vertex_bones" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the bones of the given vertex.
</description>
</method>
<method name="get_vertex_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the color of the given vertex.
</description>
</method>
<method name="get_vertex_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the total number of vertices in [Mesh].
</description>
</method>
<method name="get_vertex_edges" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns an array of edges that share the given vertex.
</description>
</method>
<method name="get_vertex_faces" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns an array of faces that share the given vertex.
</description>
</method>
<method name="get_vertex_meta" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the metadata associated with the given vertex.
</description>
</method>
<method name="get_vertex_normal" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the normal of the given vertex.
</description>
</method>
<method name="get_vertex_tangent" qualifiers="const">
- <return type="Plane">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Plane" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the tangent of the given vertex.
</description>
</method>
<method name="get_vertex_uv" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the UV of the given vertex.
</description>
</method>
<method name="get_vertex_uv2" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the UV2 of the given vertex.
</description>
</method>
<method name="get_vertex_weights" qualifiers="const">
- <return type="PackedFloat32Array">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="PackedFloat32Array" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns bone weights of the given vertex.
</description>
</method>
<method name="set_edge_meta">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="meta" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="meta" type="Variant" />
<description>
Sets the metadata of the given edge.
</description>
</method>
<method name="set_face_meta">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="meta" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="meta" type="Variant" />
<description>
Sets the metadata of the given face.
</description>
</method>
<method name="set_material">
- <return type="void">
- </return>
- <argument index="0" name="material" type="Material">
- </argument>
+ <return type="void" />
+ <argument index="0" name="material" type="Material" />
<description>
Sets the material to be used by newly-constructed [Mesh].
</description>
</method>
<method name="set_vertex">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="vertex" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="vertex" type="Vector3" />
<description>
Sets the position of the given vertex.
</description>
</method>
<method name="set_vertex_bones">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="bones" type="PackedInt32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="bones" type="PackedInt32Array" />
<description>
Sets the bones of the given vertex.
</description>
</method>
<method name="set_vertex_color">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the color of the given vertex.
</description>
</method>
<method name="set_vertex_meta">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="meta" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="meta" type="Variant" />
<description>
Sets the metadata associated with the given vertex.
</description>
</method>
<method name="set_vertex_normal">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="normal" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="normal" type="Vector3" />
<description>
Sets the normal of the given vertex.
</description>
</method>
<method name="set_vertex_tangent">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="tangent" type="Plane">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="tangent" type="Plane" />
<description>
Sets the tangent of the given vertex.
</description>
</method>
<method name="set_vertex_uv">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="uv" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="uv" type="Vector2" />
<description>
Sets the UV of the given vertex.
</description>
</method>
<method name="set_vertex_uv2">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="uv2" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="uv2" type="Vector2" />
<description>
Sets the UV2 of the given vertex.
</description>
</method>
<method name="set_vertex_weights">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="weights" type="PackedFloat32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="weights" type="PackedFloat32Array" />
<description>
Sets the bone weights of the given vertex.
</description>
diff --git a/doc/classes/MeshInstance3D.xml b/doc/classes/MeshInstance3D.xml
index 930301a742..665d5d3c77 100644
--- a/doc/classes/MeshInstance3D.xml
+++ b/doc/classes/MeshInstance3D.xml
@@ -14,12 +14,9 @@
</tutorials>
<methods>
<method name="create_convex_collision">
- <return type="void">
- </return>
- <argument index="0" name="clean" type="bool" default="true">
- </argument>
- <argument index="1" name="simplify" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="clean" type="bool" default="true" />
+ <argument index="1" name="simplify" type="bool" default="false" />
<description>
This helper creates a [StaticBody3D] child node with a [ConvexPolygonShape3D] collision shape calculated from the mesh geometry. It's mainly used for testing.
If [code]clean[/code] is [code]true[/code] (default), duplicate and interior vertices are removed automatically. You can set it to [code]false[/code] to make the process faster if not needed.
@@ -27,58 +24,47 @@
</description>
</method>
<method name="create_debug_tangents">
- <return type="void">
- </return>
+ <return type="void" />
<description>
This helper creates a [MeshInstance3D] child node with gizmos at every vertex calculated from the mesh geometry. It's mainly used for testing.
</description>
</method>
<method name="create_multiple_convex_collisions">
- <return type="void">
- </return>
+ <return type="void" />
<description>
This helper creates a [StaticBody3D] child node with multiple [ConvexPolygonShape3D] collision shapes calculated from the mesh geometry via convex decomposition. It's mainly used for testing.
</description>
</method>
<method name="create_trimesh_collision">
- <return type="void">
- </return>
+ <return type="void" />
<description>
This helper creates a [StaticBody3D] child node with a [ConcavePolygonShape3D] collision shape calculated from the mesh geometry. It's mainly used for testing.
</description>
</method>
<method name="get_active_material" qualifiers="const">
- <return type="Material">
- </return>
- <argument index="0" name="surface" type="int">
- </argument>
+ <return type="Material" />
+ <argument index="0" name="surface" type="int" />
<description>
Returns the [Material] that will be used by the [Mesh] when drawing. This can return the [member GeometryInstance3D.material_override], the surface override [Material] defined in this [MeshInstance3D], or the surface [Material] defined in the [Mesh]. For example, if [member GeometryInstance3D.material_override] is used, all surfaces will return the override material.
</description>
</method>
<method name="get_surface_override_material" qualifiers="const">
- <return type="Material">
- </return>
- <argument index="0" name="surface" type="int">
- </argument>
+ <return type="Material" />
+ <argument index="0" name="surface" type="int" />
<description>
Returns the override [Material] for the specified surface of the [Mesh] resource.
</description>
</method>
<method name="get_surface_override_material_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of surface override materials. This is equivalent to [method Mesh.get_surface_count].
</description>
</method>
<method name="set_surface_override_material">
- <return type="void">
- </return>
- <argument index="0" name="surface" type="int">
- </argument>
- <argument index="1" name="material" type="Material">
- </argument>
+ <return type="void" />
+ <argument index="0" name="surface" type="int" />
+ <argument index="1" name="material" type="Material" />
<description>
Sets the override [Material] for the specified surface of the [Mesh] resource. This material is associated with this [MeshInstance3D] rather than with the [Mesh] resource.
</description>
diff --git a/doc/classes/MeshLibrary.xml b/doc/classes/MeshLibrary.xml
index b33bcc89e3..9e0292f946 100644
--- a/doc/classes/MeshLibrary.xml
+++ b/doc/classes/MeshLibrary.xml
@@ -12,172 +12,133 @@
</tutorials>
<methods>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the library.
</description>
</method>
<method name="create_item">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
<description>
Creates a new item in the library with the given ID.
You can get an unused ID from [method get_last_unused_item_id].
</description>
</method>
<method name="find_item_by_name" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="String" />
<description>
Returns the first item with the given name.
</description>
</method>
<method name="get_item_list" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
+ <return type="PackedInt32Array" />
<description>
Returns the list of item IDs in use.
</description>
</method>
<method name="get_item_mesh" qualifiers="const">
- <return type="Mesh">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="Mesh" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the item's mesh.
</description>
</method>
<method name="get_item_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the item's name.
</description>
</method>
<method name="get_item_navmesh" qualifiers="const">
- <return type="NavigationMesh">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="NavigationMesh" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the item's navigation mesh.
</description>
</method>
<method name="get_item_navmesh_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the transform applied to the item's navigation mesh.
</description>
</method>
<method name="get_item_preview" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="id" type="int" />
<description>
When running in the editor, returns a generated item preview (a 3D rendering in isometric perspective). When used in a running project, returns the manually-defined item preview which can be set using [method set_item_preview]. Returns an empty [Texture2D] if no preview was manually set in a running project.
</description>
</method>
<method name="get_item_shapes" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="id" type="int" />
<description>
Returns an item's collision shapes.
The array consists of each [Shape3D] followed by its [Transform3D].
</description>
</method>
<method name="get_last_unused_item_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets an unused ID for a new item.
</description>
</method>
<method name="remove_item">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
<description>
Removes the item.
</description>
</method>
<method name="set_item_mesh">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="mesh" type="Mesh">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="mesh" type="Mesh" />
<description>
Sets the item's mesh.
</description>
</method>
<method name="set_item_name">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="name" type="String" />
<description>
Sets the item's name.
This name is shown in the editor. It can also be used to look up the item later using [method find_item_by_name].
</description>
</method>
<method name="set_item_navmesh">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="navmesh" type="NavigationMesh">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="navmesh" type="NavigationMesh" />
<description>
Sets the item's navigation mesh.
</description>
</method>
<method name="set_item_navmesh_transform">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="navmesh" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="navmesh" type="Transform3D" />
<description>
Sets the transform to apply to the item's navigation mesh.
</description>
</method>
<method name="set_item_preview">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="texture" type="Texture2D" />
<description>
Sets a texture to use as the item's preview icon in the editor.
</description>
</method>
<method name="set_item_shapes">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="shapes" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="shapes" type="Array" />
<description>
Sets an item's collision shapes.
The array should consist of [Shape3D] objects, each followed by a [Transform3D] that will be applied to it. For shapes that should not have a transform, use [constant Transform3D.IDENTITY].
diff --git a/doc/classes/MethodTweener.xml b/doc/classes/MethodTweener.xml
index 42b91abf93..1b93b20d9f 100644
--- a/doc/classes/MethodTweener.xml
+++ b/doc/classes/MethodTweener.xml
@@ -4,35 +4,29 @@
Interpolates an abstract value and supplies it to a method called over time.
</brief_description>
<description>
- [MethodTweener] is similar to a combination of [CallbackTweener] and [PropertyTweener]. It calls a method providing an interpolated value as a paramater. See [method Tween.tween_method] for more usage information.
+ [MethodTweener] is similar to a combination of [CallbackTweener] and [PropertyTweener]. It calls a method providing an interpolated value as a parameter. See [method Tween.tween_method] for more usage information.
[b]Note:[/b] [method Tween.tween_method] is the only correct way to create [MethodTweener]. Any [MethodTweener] created manually will not function correctly.
</description>
<tutorials>
</tutorials>
<methods>
<method name="set_delay">
- <return type="MethodTweener">
- </return>
- <argument index="0" name="delay" type="float">
- </argument>
+ <return type="MethodTweener" />
+ <argument index="0" name="delay" type="float" />
<description>
Sets the time in seconds after which the [MethodTweener] will start interpolating. By default there's no delay.
</description>
</method>
<method name="set_ease">
- <return type="MethodTweener">
- </return>
- <argument index="0" name="ease" type="int" enum="Tween.EaseType">
- </argument>
+ <return type="MethodTweener" />
+ <argument index="0" name="ease" type="int" enum="Tween.EaseType" />
<description>
Sets the type of used easing from [enum Tween.EaseType]. If not set, the default easing is used from the [Tween] that contains this Tweener.
</description>
</method>
<method name="set_trans">
- <return type="MethodTweener">
- </return>
- <argument index="0" name="trans" type="int" enum="Tween.TransitionType">
- </argument>
+ <return type="MethodTweener" />
+ <argument index="0" name="trans" type="int" enum="Tween.TransitionType" />
<description>
Sets the type of used transition from [enum Tween.TransitionType]. If not set, the default transition is used from the [Tween] that contains this Tweener.
</description>
diff --git a/doc/classes/MultiMesh.xml b/doc/classes/MultiMesh.xml
index 45326f12e9..7b4a53a810 100644
--- a/doc/classes/MultiMesh.xml
+++ b/doc/classes/MultiMesh.xml
@@ -15,90 +15,69 @@
</tutorials>
<methods>
<method name="get_aabb" qualifiers="const">
- <return type="AABB">
- </return>
+ <return type="AABB" />
<description>
Returns the visibility axis-aligned bounding box in local space. See also [method VisualInstance3D.get_transformed_aabb].
</description>
</method>
<method name="get_instance_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="instance" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="instance" type="int" />
<description>
Gets a specific instance's color.
</description>
</method>
<method name="get_instance_custom_data" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="instance" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="instance" type="int" />
<description>
Returns the custom data that has been set for a specific instance.
</description>
</method>
<method name="get_instance_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="instance" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="instance" type="int" />
<description>
Returns the [Transform3D] of a specific instance.
</description>
</method>
<method name="get_instance_transform_2d" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="instance" type="int">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="instance" type="int" />
<description>
Returns the [Transform2D] of a specific instance.
</description>
</method>
<method name="set_instance_color">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="int">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="int" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the color of a specific instance by [i]multiplying[/i] the mesh's existing vertex colors.
For the color to take effect, ensure that [member use_colors] is [code]true[/code] on the [MultiMesh] and [member BaseMaterial3D.vertex_color_use_as_albedo] is [code]true[/code] on the material.
</description>
</method>
<method name="set_instance_custom_data">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="int">
- </argument>
- <argument index="1" name="custom_data" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="int" />
+ <argument index="1" name="custom_data" type="Color" />
<description>
Sets custom data for a specific instance. Although [Color] is used, it is just a container for 4 floating point numbers.
For the custom data to be used, ensure that [member use_custom_data] is [code]true[/code].
</description>
</method>
<method name="set_instance_transform">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="int">
- </argument>
- <argument index="1" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="int" />
+ <argument index="1" name="transform" type="Transform3D" />
<description>
Sets the [Transform3D] for a specific instance.
</description>
</method>
<method name="set_instance_transform_2d">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="int">
- </argument>
- <argument index="1" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="int" />
+ <argument index="1" name="transform" type="Transform2D" />
<description>
Sets the [Transform2D] for a specific instance.
</description>
diff --git a/doc/classes/MultiplayerAPI.xml b/doc/classes/MultiplayerAPI.xml
index 82b929c1f7..552e0fce4c 100644
--- a/doc/classes/MultiplayerAPI.xml
+++ b/doc/classes/MultiplayerAPI.xml
@@ -13,65 +13,55 @@
</tutorials>
<methods>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the current MultiplayerAPI network state (you shouldn't call this unless you know what you are doing).
</description>
</method>
<method name="get_network_connected_peers" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
+ <return type="PackedInt32Array" />
<description>
Returns the peer IDs of all connected peers of this MultiplayerAPI's [member network_peer].
</description>
</method>
<method name="get_network_unique_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the unique peer ID of this MultiplayerAPI's [member network_peer].
</description>
</method>
<method name="get_rpc_sender_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the sender's peer ID for the RPC currently being executed.
[b]Note:[/b] If not inside an RPC this method will return 0.
</description>
</method>
<method name="has_network_peer" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if there is a [member network_peer] set.
</description>
</method>
<method name="is_network_server" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this MultiplayerAPI's [member network_peer] is in server mode (listening for connections).
</description>
</method>
<method name="poll">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Method used for polling the MultiplayerAPI. You only need to worry about this if you are using [member Node.custom_multiplayer] override or you set [member SceneTree.multiplayer_poll] to [code]false[/code]. By default, [SceneTree] will poll its MultiplayerAPI for you.
[b]Note:[/b] This method results in RPCs and RSETs being called, so they will be executed in the same context of this function (e.g. [code]_process[/code], [code]physics[/code], [Thread]).
</description>
</method>
<method name="send_bytes">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="bytes" type="PackedByteArray">
- </argument>
- <argument index="1" name="id" type="int" default="0">
- </argument>
- <argument index="2" name="mode" type="int" enum="MultiplayerPeer.TransferMode" default="2">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="bytes" type="PackedByteArray" />
+ <argument index="1" name="id" type="int" default="0" />
+ <argument index="2" name="mode" type="int" enum="MultiplayerPeer.TransferMode" default="2" />
+ <argument index="3" name="channel" type="int" default="0" />
<description>
Sends the given raw [code]bytes[/code] to a specific peer identified by [code]id[/code] (see [method MultiplayerPeer.set_target_peer]). Default ID is [code]0[/code], i.e. broadcast to all peers.
</description>
@@ -105,24 +95,20 @@
</description>
</signal>
<signal name="network_peer_connected">
- <argument index="0" name="id" type="int">
- </argument>
+ <argument index="0" name="id" type="int" />
<description>
Emitted when this MultiplayerAPI's [member network_peer] connects with a new peer. ID is the peer ID of the new peer. Clients get notified when other clients connect to the same server. Upon connecting to a server, a client also receives this signal for the server (with ID being 1).
</description>
</signal>
<signal name="network_peer_disconnected">
- <argument index="0" name="id" type="int">
- </argument>
+ <argument index="0" name="id" type="int" />
<description>
Emitted when this MultiplayerAPI's [member network_peer] disconnects from a peer. Clients get notified when other clients disconnect from the same server.
</description>
</signal>
<signal name="network_peer_packet">
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="packet" type="PackedByteArray">
- </argument>
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="packet" type="PackedByteArray" />
<description>
Emitted when this MultiplayerAPI's [member network_peer] receive a [code]packet[/code] with custom data (see [method send_bytes]). ID is the peer ID of the peer that sent the packet.
</description>
diff --git a/doc/classes/MultiplayerPeer.xml b/doc/classes/MultiplayerPeer.xml
index 713cd64b82..adaa359168 100644
--- a/doc/classes/MultiplayerPeer.xml
+++ b/doc/classes/MultiplayerPeer.xml
@@ -12,39 +12,39 @@
<link title="WebRTC Signaling Demo">https://godotengine.org/asset-library/asset/537</link>
</tutorials>
<methods>
+ <method name="generate_unique_id" qualifiers="const">
+ <return type="int" />
+ <description>
+ Returns a randomly generated integer that can be used as a network unique ID.
+ </description>
+ </method>
<method name="get_connection_status" qualifiers="const">
- <return type="int" enum="MultiplayerPeer.ConnectionStatus">
- </return>
+ <return type="int" enum="MultiplayerPeer.ConnectionStatus" />
<description>
Returns the current state of the connection. See [enum ConnectionStatus].
</description>
</method>
<method name="get_packet_peer" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the ID of the [MultiplayerPeer] who sent the most recent packet.
</description>
</method>
<method name="get_unique_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the ID of this [MultiplayerPeer].
</description>
</method>
<method name="poll">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Waits up to 1 second to receive a new network event.
</description>
</method>
<method name="set_target_peer">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
<description>
Sets the peer to which packets will be sent.
The [code]id[/code] can be one of: [constant TARGET_PEER_BROADCAST] to send to all connected peers, [constant TARGET_PEER_SERVER] to send to the peer acting as server, a valid peer ID to send to that specific peer, a negative peer ID to send to all peers except that one. By default, the target peer is [constant TARGET_PEER_BROADCAST].
@@ -55,6 +55,10 @@
<member name="refuse_new_connections" type="bool" setter="set_refuse_new_connections" getter="is_refusing_new_connections" default="true">
If [code]true[/code], this [MultiplayerPeer] refuses new connections.
</member>
+ <member name="transfer_channel" type="int" setter="set_transfer_channel" getter="get_transfer_channel" default="0">
+ The channel to use to send packets. Many network APIs such as ENet and WebRTC allow the creation of multiple independent channels which behaves, in a way, like separate connections. This means that reliable data will only block delivery of other packets on that channel, and ordering will only be in respect to the channel the packet is being sent on. Using different channels to send [b]different and independent[/b] state updates is a common way to optimize network usage and decrease latency in fast-paced games.
+ [b]Note:[/b] The default channel ([code]0[/code]) actually works as 3 separate channels (one for each [enum TransferMode]) so that [constant TRANSFER_MODE_RELIABLE] and [constant TRANSFER_MODE_UNRELIABLE_ORDERED] does not interact with each other by default. Refer to the specific network API documentation (e.g. ENet or WebRTC) to learn how to set up channels correctly.
+ </member>
<member name="transfer_mode" type="int" setter="set_transfer_mode" getter="get_transfer_mode" enum="MultiplayerPeer.TransferMode" default="0">
The manner in which to send packets to the [code]target_peer[/code]. See [enum TransferMode].
</member>
@@ -71,15 +75,13 @@
</description>
</signal>
<signal name="peer_connected">
- <argument index="0" name="id" type="int">
- </argument>
+ <argument index="0" name="id" type="int" />
<description>
Emitted by the server when a client connects.
</description>
</signal>
<signal name="peer_disconnected">
- <argument index="0" name="id" type="int">
- </argument>
+ <argument index="0" name="id" type="int" />
<description>
Emitted by the server when a client disconnects.
</description>
diff --git a/doc/classes/Mutex.xml b/doc/classes/Mutex.xml
index dfda614f8e..f97b2344a5 100644
--- a/doc/classes/Mutex.xml
+++ b/doc/classes/Mutex.xml
@@ -11,22 +11,19 @@
</tutorials>
<methods>
<method name="lock">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Locks this [Mutex], blocks until it is unlocked by the current owner.
</description>
</method>
<method name="try_lock">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Tries locking this [Mutex], but does not block. Returns [constant OK] on success, [constant ERR_BUSY] otherwise.
</description>
</method>
<method name="unlock">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Unlocks this [Mutex], leaving it to other threads.
</description>
diff --git a/doc/classes/NativeExtension.xml b/doc/classes/NativeExtension.xml
index c48af7df7b..fa8575383c 100644
--- a/doc/classes/NativeExtension.xml
+++ b/doc/classes/NativeExtension.xml
@@ -8,38 +8,30 @@
</tutorials>
<methods>
<method name="close_library">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="get_minimum_library_initialization_level" qualifiers="const">
- <return type="int" enum="NativeExtension.InitializationLevel">
- </return>
+ <return type="int" enum="NativeExtension.InitializationLevel" />
<description>
</description>
</method>
<method name="initialize_library">
- <return type="void">
- </return>
- <argument index="0" name="level" type="int" enum="NativeExtension.InitializationLevel">
- </argument>
+ <return type="void" />
+ <argument index="0" name="level" type="int" enum="NativeExtension.InitializationLevel" />
<description>
</description>
</method>
<method name="is_library_open" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="open_library">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="entry_symbol" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="entry_symbol" type="String" />
<description>
</description>
</method>
diff --git a/doc/classes/NativeExtensionManager.xml b/doc/classes/NativeExtensionManager.xml
index ba9018ff4c..c14ce94aff 100644
--- a/doc/classes/NativeExtensionManager.xml
+++ b/doc/classes/NativeExtensionManager.xml
@@ -8,40 +8,31 @@
</tutorials>
<methods>
<method name="get_extension">
- <return type="NativeExtension">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="NativeExtension" />
+ <argument index="0" name="path" type="String" />
<description>
</description>
</method>
<method name="get_loaded_extensions" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
</description>
</method>
<method name="load_extension">
- <return type="int" enum="NativeExtensionManager.LoadStatus">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="NativeExtensionManager.LoadStatus" />
+ <argument index="0" name="path" type="String" />
<description>
</description>
</method>
<method name="reload_extension">
- <return type="int" enum="NativeExtensionManager.LoadStatus">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="NativeExtensionManager.LoadStatus" />
+ <argument index="0" name="path" type="String" />
<description>
</description>
</method>
<method name="unload_extension">
- <return type="int" enum="NativeExtensionManager.LoadStatus">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="NativeExtensionManager.LoadStatus" />
+ <argument index="0" name="path" type="String" />
<description>
</description>
</method>
diff --git a/doc/classes/NavigationAgent2D.xml b/doc/classes/NavigationAgent2D.xml
index de81ae4d91..c05f7c2094 100644
--- a/doc/classes/NavigationAgent2D.xml
+++ b/doc/classes/NavigationAgent2D.xml
@@ -10,88 +10,74 @@
</tutorials>
<methods>
<method name="distance_to_target" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the distance to the target location, using the agent's global position. The user must set the target location with [method set_target_location] in order for this to be accurate.
</description>
</method>
<method name="get_final_location">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the reachable final location in global coordinates. This can change if the navigation path is altered in any way.
</description>
</method>
<method name="get_nav_path" qualifiers="const">
- <return type="PackedVector2Array">
- </return>
+ <return type="PackedVector2Array" />
<description>
Returns the path from start to finish in global coordinates.
</description>
</method>
<method name="get_nav_path_index" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns which index the agent is currently on in the navigation path's [PackedVector2Array].
</description>
</method>
<method name="get_next_location">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns a [Vector2] in global coordinates, that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the position of the agent's parent.
</description>
</method>
<method name="get_rid" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="get_target_location" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the user defined [Vector2] after setting the target location.
</description>
</method>
<method name="is_navigation_finished">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns true if the navigation path's final location has been reached.
</description>
</method>
<method name="is_target_reachable">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns true if the target location is reachable. The target location is set using [method set_target_location].
</description>
</method>
<method name="is_target_reached" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns true if the target location is reached. The target location is set using [method set_target_location]. It may not always be possible to reach the target location. It should always be possible to reach the final location though. See [method get_final_location].
</description>
</method>
<method name="set_target_location">
- <return type="void">
- </return>
- <argument index="0" name="location" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="location" type="Vector2" />
<description>
Sets the user desired final location. This will clear the current navigation path.
</description>
</method>
<method name="set_velocity">
- <return type="void">
- </return>
- <argument index="0" name="velocity" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="velocity" type="Vector2" />
<description>
Sends the passed in velocity to the collision avoidance algorithm. It will adjust the velocity to avoid collisions. Once the adjustment to the velocity is complete, it will emit the [signal velocity_computed] signal.
</description>
@@ -137,8 +123,7 @@
</description>
</signal>
<signal name="velocity_computed">
- <argument index="0" name="safe_velocity" type="Vector3">
- </argument>
+ <argument index="0" name="safe_velocity" type="Vector3" />
<description>
Notifies when the collision avoidance velocity is calculated. Emitted by [method set_velocity].
</description>
diff --git a/doc/classes/NavigationAgent3D.xml b/doc/classes/NavigationAgent3D.xml
index 8942a37774..af4a058489 100644
--- a/doc/classes/NavigationAgent3D.xml
+++ b/doc/classes/NavigationAgent3D.xml
@@ -10,88 +10,74 @@
</tutorials>
<methods>
<method name="distance_to_target" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the distance to the target location, using the agent's global position. The user must set the target location with [method set_target_location] in order for this to be accurate.
</description>
</method>
<method name="get_final_location">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the reachable final location 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.
</description>
</method>
<method name="get_nav_path" qualifiers="const">
- <return type="PackedVector3Array">
- </return>
+ <return type="PackedVector3Array" />
<description>
Returns the path from start to finish in global coordinates.
</description>
</method>
<method name="get_nav_path_index" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns which index the agent is currently on in the navigation path's [PackedVector3Array].
</description>
</method>
<method name="get_next_location">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns a [Vector3] in global coordinates, that can be moved to, making sure that there are no static objects in the way. If the agent does not have a navigation path, it will return the origin of the agent's parent.
</description>
</method>
<method name="get_rid" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="get_target_location" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the user defined [Vector3] after setting the target location.
</description>
</method>
<method name="is_navigation_finished">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns true if the navigation path's final location has been reached.
</description>
</method>
<method name="is_target_reachable">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns true if the target location is reachable. The target location is set using [method set_target_location].
</description>
</method>
<method name="is_target_reached" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns true if the target location is reached. The target location is set using [method set_target_location]. It may not always be possible to reach the target location. It should always be possible to reach the final location though. See [method get_final_location].
</description>
</method>
<method name="set_target_location">
- <return type="void">
- </return>
- <argument index="0" name="location" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="location" type="Vector3" />
<description>
Sets the user desired final location. This will clear the current navigation path.
</description>
</method>
<method name="set_velocity">
- <return type="void">
- </return>
- <argument index="0" name="velocity" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="velocity" type="Vector3" />
<description>
Sends the passed in velocity to the collision avoidance algorithm. It will adjust the velocity to avoid collisions. Once the adjustment to the velocity is complete, it will emit the [signal velocity_computed] signal.
</description>
@@ -143,8 +129,7 @@
</description>
</signal>
<signal name="velocity_computed">
- <argument index="0" name="safe_velocity" type="Vector3">
- </argument>
+ <argument index="0" name="safe_velocity" type="Vector3" />
<description>
Notifies when the collision avoidance velocity is calculated. Emitted by [method set_velocity].
</description>
diff --git a/doc/classes/NavigationMesh.xml b/doc/classes/NavigationMesh.xml
index 871c92798a..1d9b2b0a36 100644
--- a/doc/classes/NavigationMesh.xml
+++ b/doc/classes/NavigationMesh.xml
@@ -9,70 +9,54 @@
</tutorials>
<methods>
<method name="add_polygon">
- <return type="void">
- </return>
- <argument index="0" name="polygon" type="PackedInt32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="polygon" type="PackedInt32Array" />
<description>
</description>
</method>
<method name="clear_polygons">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="create_from_mesh">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="Mesh">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="Mesh" />
<description>
</description>
</method>
<method name="get_collision_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
</description>
</method>
<method name="get_polygon">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="idx" type="int" />
<description>
</description>
</method>
<method name="get_polygon_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_vertices" qualifiers="const">
- <return type="PackedVector3Array">
- </return>
+ <return type="PackedVector3Array" />
<description>
</description>
</method>
<method name="set_collision_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
</description>
</method>
<method name="set_vertices">
- <return type="void">
- </return>
- <argument index="0" name="vertices" type="PackedVector3Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="vertices" type="PackedVector3Array" />
<description>
</description>
</method>
diff --git a/doc/classes/NavigationMeshGenerator.xml b/doc/classes/NavigationMeshGenerator.xml
index ce1182ffbe..9931033260 100644
--- a/doc/classes/NavigationMeshGenerator.xml
+++ b/doc/classes/NavigationMeshGenerator.xml
@@ -8,20 +8,15 @@
</tutorials>
<methods>
<method name="bake">
- <return type="void">
- </return>
- <argument index="0" name="nav_mesh" type="NavigationMesh">
- </argument>
- <argument index="1" name="root_node" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="nav_mesh" type="NavigationMesh" />
+ <argument index="1" name="root_node" type="Node" />
<description>
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
- <argument index="0" name="nav_mesh" type="NavigationMesh">
- </argument>
+ <return type="void" />
+ <argument index="0" name="nav_mesh" type="NavigationMesh" />
<description>
</description>
</method>
diff --git a/doc/classes/NavigationPolygon.xml b/doc/classes/NavigationPolygon.xml
index 38921078d7..e1e2c34a63 100644
--- a/doc/classes/NavigationPolygon.xml
+++ b/doc/classes/NavigationPolygon.xml
@@ -47,119 +47,95 @@
</tutorials>
<methods>
<method name="add_outline">
- <return type="void">
- </return>
- <argument index="0" name="outline" type="PackedVector2Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="outline" type="PackedVector2Array" />
<description>
Appends a [PackedVector2Array] that contains the vertices of an outline to the internal array that contains all the outlines. You have to call [method make_polygons_from_outlines] in order for this array to be converted to polygons that the engine will use.
</description>
</method>
<method name="add_outline_at_index">
- <return type="void">
- </return>
- <argument index="0" name="outline" type="PackedVector2Array">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="outline" type="PackedVector2Array" />
+ <argument index="1" name="index" type="int" />
<description>
Adds a [PackedVector2Array] that contains the vertices of an outline to the internal array that contains all the outlines at a fixed position. You have to call [method make_polygons_from_outlines] in order for this array to be converted to polygons that the engine will use.
</description>
</method>
<method name="add_polygon">
- <return type="void">
- </return>
- <argument index="0" name="polygon" type="PackedInt32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="polygon" type="PackedInt32Array" />
<description>
Adds a polygon using the indices of the vertices you get when calling [method get_vertices].
</description>
</method>
<method name="clear_outlines">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the array of the outlines, but it doesn't clear the vertices and the polygons that were created by them.
</description>
</method>
<method name="clear_polygons">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the array of polygons, but it doesn't clear the array of outlines and vertices.
</description>
</method>
<method name="get_outline" qualifiers="const">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns a [PackedVector2Array] containing the vertices of an outline that was created in the editor or by script.
</description>
</method>
<method name="get_outline_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of outlines that were created in the editor or by script.
</description>
</method>
<method name="get_polygon">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns a [PackedInt32Array] containing the indices of the vertices of a created polygon.
</description>
</method>
<method name="get_polygon_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the count of all polygons.
</description>
</method>
<method name="get_vertices" qualifiers="const">
- <return type="PackedVector2Array">
- </return>
+ <return type="PackedVector2Array" />
<description>
Returns a [PackedVector2Array] containing all the vertices being used to create the polygons.
</description>
</method>
<method name="make_polygons_from_outlines">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Creates polygons from the outlines added in the editor or by script.
</description>
</method>
<method name="remove_outline">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Removes an outline created in the editor or by script. You have to call [method make_polygons_from_outlines] for the polygons to update.
</description>
</method>
<method name="set_outline">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="outline" type="PackedVector2Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="outline" type="PackedVector2Array" />
<description>
Changes an outline created in the editor or by script. You have to call [method make_polygons_from_outlines] for the polygons to update.
</description>
</method>
<method name="set_vertices">
- <return type="void">
- </return>
- <argument index="0" name="vertices" type="PackedVector2Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="vertices" type="PackedVector2Array" />
<description>
Sets the vertices that can be then indexed to create polygons with the [method add_polygon] method.
</description>
diff --git a/doc/classes/NavigationRegion3D.xml b/doc/classes/NavigationRegion3D.xml
index 2904ba4200..da06641b48 100644
--- a/doc/classes/NavigationRegion3D.xml
+++ b/doc/classes/NavigationRegion3D.xml
@@ -11,8 +11,7 @@
</tutorials>
<methods>
<method name="bake_navigation_mesh">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Bakes the [NavigationMesh]. The baking is done in a separate thread because navigation baking is not a cheap operation. This can be done at runtime. When it is completed, it automatically sets the new [NavigationMesh].
</description>
diff --git a/doc/classes/NavigationServer2D.xml b/doc/classes/NavigationServer2D.xml
index b0a57ed227..042ab06e6f 100644
--- a/doc/classes/NavigationServer2D.xml
+++ b/doc/classes/NavigationServer2D.xml
@@ -16,337 +16,249 @@
</tutorials>
<methods>
<method name="agent_create" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates the agent.
</description>
</method>
<method name="agent_is_map_changed" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="agent" type="RID" />
<description>
Returns true if the map got changed the previous frame.
</description>
</method>
<method name="agent_set_callback" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="receiver" type="Object">
- </argument>
- <argument index="2" name="method" type="StringName">
- </argument>
- <argument index="3" name="userdata" type="Variant" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="receiver" type="Object" />
+ <argument index="2" name="method" type="StringName" />
+ <argument index="3" name="userdata" type="Variant" default="null" />
<description>
Callback called at the end of the RVO process.
</description>
</method>
<method name="agent_set_map" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="map" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="map" type="RID" />
<description>
Puts the agent in the map.
</description>
</method>
<method name="agent_set_max_neighbors" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="count" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="count" type="int" />
<description>
Sets the maximum number of other agents the agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe.
</description>
</method>
<method name="agent_set_max_speed" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="max_speed" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="max_speed" type="float" />
<description>
Sets the maximum speed of the agent. Must be positive.
</description>
</method>
<method name="agent_set_neighbor_dist" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="dist" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="dist" type="float" />
<description>
Sets the maximum distance to other agents this agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe.
</description>
</method>
<method name="agent_set_position" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="position" type="Vector2" />
<description>
Sets the position of the agent in world space.
</description>
</method>
<method name="agent_set_radius" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="radius" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="radius" type="float" />
<description>
Sets the radius of the agent.
</description>
</method>
<method name="agent_set_target_velocity" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="target_velocity" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="target_velocity" type="Vector2" />
<description>
Sets the new target velocity.
</description>
</method>
<method name="agent_set_time_horizon" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="time" type="float" />
<description>
The minimal amount of time for which the agent's velocities that are computed by the simulation are safe with respect to other agents. The larger this number, the sooner this agent will respond to the presence of other agents, but the less freedom this agent has in choosing its velocities. Must be positive.
</description>
</method>
<method name="agent_set_velocity" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="velocity" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="velocity" type="Vector2" />
<description>
Sets the current velocity of the agent.
</description>
</method>
<method name="free" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="object" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="object" type="RID" />
<description>
Destroy the RID
</description>
</method>
<method name="map_create" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Create a new map.
</description>
</method>
<method name="map_get_cell_size" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="map" type="RID" />
<description>
Returns the map cell size.
</description>
</method>
<method name="map_get_closest_point" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="to_point" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="to_point" type="Vector2" />
<description>
Returns the point closest to the provided [code]to_point[/code] on the navigation mesh surface.
</description>
</method>
<method name="map_get_closest_point_owner" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="to_point" type="Vector2">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="to_point" type="Vector2" />
<description>
Returns the owner region RID for the point returned by [method map_get_closest_point].
</description>
</method>
<method name="map_get_edge_connection_margin" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="map" type="RID" />
<description>
Returns the edge connection margin of the map. The edge connection margin is a distance used to connect two regions.
</description>
</method>
<method name="map_get_path" qualifiers="const">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="origin" type="Vector2">
- </argument>
- <argument index="2" name="destination" type="Vector2">
- </argument>
- <argument index="3" name="optimize" type="bool">
- </argument>
- <argument index="4" name="layers" type="int" default="1">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="origin" type="Vector2" />
+ <argument index="2" name="destination" type="Vector2" />
+ <argument index="3" name="optimize" type="bool" />
+ <argument index="4" name="layers" type="int" default="1" />
<description>
Returns the navigation path to reach the destination from the origin. [code]layers[/code] is a bitmask of all region layers that are allowed to be in the path.
</description>
</method>
<method name="map_is_active" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="nap" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="nap" type="RID" />
<description>
Returns true if the map is active.
</description>
</method>
<method name="map_set_active" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="active" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="active" type="bool" />
<description>
Sets the map active.
</description>
</method>
<method name="map_set_cell_size" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="cell_size" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="cell_size" type="float" />
<description>
Set the map cell size used to weld the navigation mesh polygons.
</description>
</method>
<method name="map_set_edge_connection_margin" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="margin" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="margin" type="float" />
<description>
Set the map edge connection margin used to weld the compatible region edges.
</description>
</method>
<method name="region_create" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a new region.
</description>
</method>
<method name="region_get_connection_pathway_end" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="connection" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="connection" type="int" />
<description>
Returns the ending point of a connection door. [code]connection[/code] is an index between 0 and the return value of [method region_get_connections_count].
</description>
</method>
<method name="region_get_connection_pathway_start" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="connection" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="connection" type="int" />
<description>
Returns the starting point of a connection door. [code]connection[/code] is an index between 0 and the return value of [method region_get_connections_count].
</description>
</method>
<method name="region_get_connections_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="region" type="RID" />
<description>
Returns how many connections this [code]region[/code] has with other regions in the map.
</description>
</method>
<method name="region_get_layers" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="region" type="RID" />
<description>
Returns the region's layers.
</description>
</method>
<method name="region_set_layers" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="layers" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="layers" type="int" />
<description>
Set the region's layers. This allows selecting regions from a path request (when using [method NavigationServer2D.map_get_path]).
</description>
</method>
<method name="region_set_map" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="map" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="map" type="RID" />
<description>
Sets the map for the region.
</description>
</method>
<method name="region_set_navpoly" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="nav_poly" type="NavigationPolygon">
- </argument>
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="nav_poly" type="NavigationPolygon" />
<description>
Sets the navigation mesh for the region.
</description>
</method>
<method name="region_set_transform" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="transform" type="Transform2D" />
<description>
Sets the global transformation for the region.
</description>
@@ -354,8 +266,7 @@
</methods>
<signals>
<signal name="map_changed">
- <argument index="0" name="map" type="RID">
- </argument>
+ <argument index="0" name="map" type="RID" />
<description>
Emitted when a navigation map is updated, when a region moves or is modified.
</description>
diff --git a/doc/classes/NavigationServer3D.xml b/doc/classes/NavigationServer3D.xml
index ef9efcb99c..73ca18655a 100644
--- a/doc/classes/NavigationServer3D.xml
+++ b/doc/classes/NavigationServer3D.xml
@@ -16,301 +16,221 @@
</tutorials>
<methods>
<method name="agent_create" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates the agent.
</description>
</method>
<method name="agent_is_map_changed" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="agent" type="RID" />
<description>
Returns true if the map got changed the previous frame.
</description>
</method>
<method name="agent_set_callback" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="receiver" type="Object">
- </argument>
- <argument index="2" name="method" type="StringName">
- </argument>
- <argument index="3" name="userdata" type="Variant" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="receiver" type="Object" />
+ <argument index="2" name="method" type="StringName" />
+ <argument index="3" name="userdata" type="Variant" default="null" />
<description>
Callback called at the end of the RVO process.
</description>
</method>
<method name="agent_set_map" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="map" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="map" type="RID" />
<description>
Puts the agent in the map.
</description>
</method>
<method name="agent_set_max_neighbors" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="count" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="count" type="int" />
<description>
Sets the maximum number of other agents the agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe.
</description>
</method>
<method name="agent_set_max_speed" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="max_speed" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="max_speed" type="float" />
<description>
Sets the maximum speed of the agent. Must be positive.
</description>
</method>
<method name="agent_set_neighbor_dist" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="dist" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="dist" type="float" />
<description>
Sets the maximum distance to other agents this agent takes into account in the navigation. The larger this number, the longer the running time of the simulation. If the number is too low, the simulation will not be safe.
</description>
</method>
<method name="agent_set_position" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="position" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="position" type="Vector3" />
<description>
Sets the position of the agent in world space.
</description>
</method>
<method name="agent_set_radius" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="radius" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="radius" type="float" />
<description>
Sets the radius of the agent.
</description>
</method>
<method name="agent_set_target_velocity" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="target_velocity" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="target_velocity" type="Vector3" />
<description>
Sets the new target velocity.
</description>
</method>
<method name="agent_set_time_horizon" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="time" type="float" />
<description>
The minimal amount of time for which the agent's velocities that are computed by the simulation are safe with respect to other agents. The larger this number, the sooner this agent will respond to the presence of other agents, but the less freedom this agent has in choosing its velocities. Must be positive.
</description>
</method>
<method name="agent_set_velocity" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="agent" type="RID">
- </argument>
- <argument index="1" name="velocity" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="agent" type="RID" />
+ <argument index="1" name="velocity" type="Vector3" />
<description>
Sets the current velocity of the agent.
</description>
</method>
<method name="free" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="object" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="object" type="RID" />
<description>
Destroy the RID
</description>
</method>
<method name="map_create" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Create a new map.
</description>
</method>
<method name="map_get_cell_size" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="map" type="RID" />
<description>
Returns the map cell size.
</description>
</method>
<method name="map_get_closest_point" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="to_point" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="to_point" type="Vector3" />
<description>
Returns the point closest to the provided [code]point[/code] on the navigation mesh surface.
</description>
</method>
<method name="map_get_closest_point_normal" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="to_point" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="to_point" type="Vector3" />
<description>
Returns the normal for the point returned by [method map_get_closest_point].
</description>
</method>
<method name="map_get_closest_point_owner" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="to_point" type="Vector3">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="to_point" type="Vector3" />
<description>
Returns the owner region RID for the point returned by [method map_get_closest_point].
</description>
</method>
<method name="map_get_closest_point_to_segment" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="start" type="Vector3">
- </argument>
- <argument index="2" name="end" type="Vector3">
- </argument>
- <argument index="3" name="use_collision" type="bool" default="false">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="start" type="Vector3" />
+ <argument index="2" name="end" type="Vector3" />
+ <argument index="3" name="use_collision" type="bool" default="false" />
<description>
Returns the closest point between the navigation surface and the segment.
</description>
</method>
<method name="map_get_edge_connection_margin" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="map" type="RID" />
<description>
Returns the edge connection margin of the map. This distance is the minimum vertex distance needed to connect two edges from different regions.
</description>
</method>
<method name="map_get_path" qualifiers="const">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="origin" type="Vector3">
- </argument>
- <argument index="2" name="destination" type="Vector3">
- </argument>
- <argument index="3" name="optimize" type="bool">
- </argument>
- <argument index="4" name="layers" type="int" default="1">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="origin" type="Vector3" />
+ <argument index="2" name="destination" type="Vector3" />
+ <argument index="3" name="optimize" type="bool" />
+ <argument index="4" name="layers" type="int" default="1" />
<description>
Returns the navigation path to reach the destination from the origin. [code]layers[/code] is a bitmask of all region layers that are allowed to be in the path.
</description>
</method>
<method name="map_get_up" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="map" type="RID" />
<description>
Returns the map's up direction.
</description>
</method>
<method name="map_is_active" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="nap" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="nap" type="RID" />
<description>
Returns true if the map is active.
</description>
</method>
<method name="map_set_active" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="active" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="active" type="bool" />
<description>
Sets the map active.
</description>
</method>
<method name="map_set_cell_size" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="cell_size" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="cell_size" type="float" />
<description>
Set the map cell size used to weld the navigation mesh polygons.
</description>
</method>
<method name="map_set_edge_connection_margin" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="margin" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="margin" type="float" />
<description>
Set the map edge connection margin used to weld the compatible region edges.
</description>
</method>
<method name="map_set_up" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="map" type="RID">
- </argument>
- <argument index="1" name="up" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="map" type="RID" />
+ <argument index="1" name="up" type="Vector3" />
<description>
Sets the map up direction.
</description>
</method>
<method name="process">
- <return type="void">
- </return>
- <argument index="0" name="delta_time" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="delta_time" type="float" />
<description>
Process the collision avoidance agents.
The result of this process is needed by the physics server, so this must be called in the main thread.
@@ -318,112 +238,84 @@
</description>
</method>
<method name="region_bake_navmesh" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="NavigationMesh">
- </argument>
- <argument index="1" name="node" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="NavigationMesh" />
+ <argument index="1" name="node" type="Node" />
<description>
Bakes the navigation mesh.
</description>
</method>
<method name="region_create" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a new region.
</description>
</method>
<method name="region_get_connection_pathway_end" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="connection" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="connection" type="int" />
<description>
Returns the ending point of a connection door. [code]connection[/code] is an index between 0 and the return value of [method region_get_connections_count].
</description>
</method>
<method name="region_get_connection_pathway_start" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="connection" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="connection" type="int" />
<description>
Returns the starting point of a connection door. [code]connection[/code] is an index between 0 and the return value of [method region_get_connections_count].
</description>
</method>
<method name="region_get_connections_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="region" type="RID" />
<description>
Returns how many connections this [code]region[/code] has with other regions in the map.
</description>
</method>
<method name="region_get_layers" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="region" type="RID" />
<description>
Returns the region's layers.
</description>
</method>
<method name="region_set_layers" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="layers" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="layers" type="int" />
<description>
Set the region's layers. This allows selecting regions from a path request (when using [method NavigationServer3D.map_get_path]).
</description>
</method>
<method name="region_set_map" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="map" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="map" type="RID" />
<description>
Sets the map for the region.
</description>
</method>
<method name="region_set_navmesh" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="nav_mesh" type="NavigationMesh">
- </argument>
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="nav_mesh" type="NavigationMesh" />
<description>
Sets the navigation mesh for the region.
</description>
</method>
<method name="region_set_transform" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="region" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="region" type="RID" />
+ <argument index="1" name="transform" type="Transform3D" />
<description>
Sets the global transformation for the region.
</description>
</method>
<method name="set_active" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="active" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="active" type="bool" />
<description>
Control activation of this server.
</description>
@@ -431,8 +323,7 @@
</methods>
<signals>
<signal name="map_changed">
- <argument index="0" name="map" type="RID">
- </argument>
+ <argument index="0" name="map" type="RID" />
<description>
Emitted when a navigation map is updated, when a region moves or is modified.
</description>
diff --git a/doc/classes/NinePatchRect.xml b/doc/classes/NinePatchRect.xml
index 5d59f994d3..77fd9165bb 100644
--- a/doc/classes/NinePatchRect.xml
+++ b/doc/classes/NinePatchRect.xml
@@ -10,21 +10,16 @@
</tutorials>
<methods>
<method name="get_patch_margin" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
+ <return type="int" />
+ <argument index="0" name="margin" type="int" enum="Side" />
<description>
Returns the size of the margin on the specified [enum Side].
</description>
</method>
<method name="set_patch_margin">
- <return type="void">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="margin" type="int" enum="Side" />
+ <argument index="1" name="value" type="int" />
<description>
Sets the size of the margin on the specified [enum Side] to [code]value[/code] pixels.
</description>
diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml
index fc971effd7..3874046628 100644
--- a/doc/classes/Node.xml
+++ b/doc/classes/Node.xml
@@ -22,24 +22,21 @@
</tutorials>
<methods>
<method name="_enter_tree" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Called when the node enters the [SceneTree] (e.g. upon instancing, scene changing, or after calling [method add_child] in a script). If the node has children, its [method _enter_tree] callback will be called first, and then that of the children.
Corresponds to the [constant NOTIFICATION_ENTER_TREE] notification in [method Object._notification].
</description>
</method>
<method name="_exit_tree" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Called when the node is about to leave the [SceneTree] (e.g. upon freeing, scene changing, or after calling [method remove_child] in a script). If the node has children, its [method _exit_tree] callback will be called last, after all its children have left the tree.
Corresponds to the [constant NOTIFICATION_EXIT_TREE] notification in [method Object._notification] and signal [signal tree_exiting]. To get notified when the node has already left the active tree, connect to the [signal tree_exited].
</description>
</method>
<method name="_get_configuration_warnings" qualifiers="virtual">
- <return type="String[]">
- </return>
+ <return type="String[]" />
<description>
The elements in the array returned from this method are displayed as warnings in the Scene Dock if the script that overrides it is a [code]tool[/code] script.
Returning an empty array produces no warnings.
@@ -47,10 +44,8 @@
</description>
</method>
<method name="_input" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="event" type="InputEvent">
- </argument>
+ <return type="void" />
+ <argument index="0" name="event" type="InputEvent" />
<description>
Called when there is an input event. The input event propagates up through the node tree until a node consumes it.
It is only called if input processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process_input].
@@ -60,10 +55,8 @@
</description>
</method>
<method name="_physics_process" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="delta" type="float" />
<description>
Called during the physics processing step of the main loop. Physics processing means that the frame rate is synced to the physics, i.e. the [code]delta[/code] variable should be constant. [code]delta[/code] is in seconds.
It is only called if physics processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_physics_process].
@@ -72,10 +65,8 @@
</description>
</method>
<method name="_process" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="delta" type="float" />
<description>
Called during the processing step of the main loop. Processing happens at every frame and as fast as possible, so the [code]delta[/code] time since the previous frame is not constant. [code]delta[/code] is in seconds.
It is only called if processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process].
@@ -84,8 +75,7 @@
</description>
</method>
<method name="_ready" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Called when the node is "ready", i.e. when both the node and its children have entered the scene tree. If the node has children, their [method _ready] callbacks get triggered first, and the parent node will receive the ready notification afterwards.
Corresponds to the [constant NOTIFICATION_READY] notification in [method Object._notification]. See also the [code]onready[/code] keyword for variables.
@@ -94,10 +84,8 @@
</description>
</method>
<method name="_unhandled_input" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="event" type="InputEvent">
- </argument>
+ <return type="void" />
+ <argument index="0" name="event" type="InputEvent" />
<description>
Called when an [InputEvent] hasn't been consumed by [method _input] or any GUI. The input event propagates up through the node tree until a node consumes it.
It is only called if unhandled input processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process_unhandled_input].
@@ -107,10 +95,8 @@
</description>
</method>
<method name="_unhandled_key_input" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="event" type="InputEventKey">
- </argument>
+ <return type="void" />
+ <argument index="0" name="event" type="InputEventKey" />
<description>
Called when an [InputEventKey] hasn't been consumed by [method _input] or any GUI. The input event propagates up through the node tree until a node consumes it.
It is only called if unhandled key input processing is enabled, which is done automatically if this method is overridden, and can be toggled with [method set_process_unhandled_key_input].
@@ -120,12 +106,9 @@
</description>
</method>
<method name="add_child">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
- <argument index="1" name="legible_unique_name" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Node" />
+ <argument index="1" name="legible_unique_name" type="bool" default="false" />
<description>
Adds a child node. Nodes can have any number of children, but every child must have a unique name. Child nodes are automatically deleted when the parent node is deleted, so an entire scene can be removed by deleting its topmost node.
If [code]legible_unique_name[/code] is [code]true[/code], the child node will have a human-readable name based on the name of the node being instantiated instead of its type.
@@ -151,12 +134,9 @@
</description>
</method>
<method name="add_sibling">
- <return type="void">
- </return>
- <argument index="0" name="sibling" type="Node">
- </argument>
- <argument index="1" name="legible_unique_name" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="sibling" type="Node" />
+ <argument index="1" name="legible_unique_name" type="bool" default="false" />
<description>
Adds a [code]sibling[/code] node to current's node parent, at the same level as that node, right below it.
If [code]legible_unique_name[/code] is [code]true[/code], the child node will have a human-readable name based on the name of the node being instantiated instead of its type.
@@ -164,27 +144,22 @@
</description>
</method>
<method name="add_to_group">
- <return type="void">
- </return>
- <argument index="0" name="group" type="StringName">
- </argument>
- <argument index="1" name="persistent" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="group" type="StringName" />
+ <argument index="1" name="persistent" type="bool" default="false" />
<description>
Adds the node to a group. Groups are helpers to name and organize a subset of nodes, for example "enemies" or "collectables". A node can be in any number of groups. Nodes can be assigned a group at any time, but will not be added until they are inside the scene tree (see [method is_inside_tree]). See notes in the description, and the group methods in [SceneTree].
The [code]persistent[/code] option is used when packing node to [PackedScene] and saving to file. Non-persistent groups aren't stored.
</description>
</method>
<method name="can_process" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the node can process while the scene tree is paused (see [member process_mode]). Always returns [code]true[/code] if the scene tree is not paused, and [code]false[/code] if the node is not in the tree.
</description>
</method>
<method name="create_tween">
- <return type="Tween">
- </return>
+ <return type="Tween" />
<description>
Creates a new [Tween] and binds it to this node. This is equivalent of doing:
[codeblock]
@@ -193,10 +168,8 @@
</description>
</method>
<method name="duplicate" qualifiers="const">
- <return type="Node">
- </return>
- <argument index="0" name="flags" type="int" default="15">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="flags" type="int" default="15" />
<description>
Duplicates the node, returning a new node.
You can fine-tune the behavior using the [code]flags[/code] (see [enum DuplicateFlags]).
@@ -204,14 +177,10 @@
</description>
</method>
<method name="find_node" qualifiers="const">
- <return type="Node">
- </return>
- <argument index="0" name="mask" type="String">
- </argument>
- <argument index="1" name="recursive" type="bool" default="true">
- </argument>
- <argument index="2" name="owned" type="bool" default="true">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="mask" type="String" />
+ <argument index="1" name="recursive" type="bool" default="true" />
+ <argument index="2" name="owned" type="bool" default="true" />
<description>
Finds a descendant of this node whose name matches [code]mask[/code] as in [method String.match] (i.e. case-sensitive, but [code]"*"[/code] matches zero or more characters and [code]"?"[/code] matches any single character except [code]"."[/code]).
[b]Note:[/b] It does not match against the full path, just against individual node names.
@@ -220,10 +189,8 @@
</description>
</method>
<method name="find_parent" qualifiers="const">
- <return type="Node">
- </return>
- <argument index="0" name="mask" type="String">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="mask" type="String" />
<description>
Finds the first parent of the current node whose name matches [code]mask[/code] as in [method String.match] (i.e. case-sensitive, but [code]"*"[/code] matches zero or more characters and [code]"?"[/code] matches any single character except [code]"."[/code]).
[b]Note:[/b] It does not match against the full path, just against individual node names.
@@ -231,10 +198,8 @@
</description>
</method>
<method name="get_child" qualifiers="const">
- <return type="Node">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns a child node by its index (see [method get_child_count]). This method is often used for iterating all children of a node.
Negative indices access the children from the last one.
@@ -242,51 +207,43 @@
</description>
</method>
<method name="get_child_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of child nodes.
</description>
</method>
<method name="get_children" qualifiers="const">
- <return type="Node[]">
- </return>
+ <return type="Node[]" />
<description>
Returns an array of references to node's children.
</description>
</method>
<method name="get_editor_description" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
<method name="get_groups" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array listing the groups that the node is a member of.
</description>
</method>
<method name="get_index" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the node's order in the scene tree branch. For example, if called on the first child node the position is [code]0[/code].
</description>
</method>
<method name="get_network_master" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the peer ID of the network master for this node. See [method set_network_master].
</description>
</method>
<method name="get_node" qualifiers="const">
- <return type="Node">
- </return>
- <argument index="0" name="path" type="NodePath">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="path" type="NodePath" />
<description>
Fetches a node. The [NodePath] can be either a relative path (from the current node) or an absolute path (in the scene tree) to a node. If the path does not exist, a [code]null instance[/code] is returned and an error is logged. Attempts to access methods on the return value will result in an "Attempt to call &lt;method&gt; on a null instance." error.
[b]Note:[/b] Fetching absolute paths only works when the node is inside the scene tree (see [method is_inside_tree]).
@@ -319,10 +276,8 @@
</description>
</method>
<method name="get_node_and_resource">
- <return type="Array">
- </return>
- <argument index="0" name="path" type="NodePath">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="path" type="NodePath" />
<description>
Fetches a node and one of its resources as specified by the [NodePath]'s subname (e.g. [code]Area2D/CollisionShape2D:shape[/code]). If several nested resources are specified in the [NodePath], the last one will be fetched.
The return value is an array of size 3: the first index points to the [Node] (or [code]null[/code] if not found), the second index points to the [Resource] (or [code]null[/code] if not found), and the third index is the remaining [NodePath], if any.
@@ -342,208 +297,172 @@
</description>
</method>
<method name="get_node_or_null" qualifiers="const">
- <return type="Node">
- </return>
- <argument index="0" name="path" type="NodePath">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="path" type="NodePath" />
<description>
Similar to [method get_node], but does not log an error if [code]path[/code] does not point to a valid [Node].
</description>
</method>
<method name="get_parent" qualifiers="const">
- <return type="Node">
- </return>
+ <return type="Node" />
<description>
Returns the parent node of the current node, or a [code]null instance[/code] if the node lacks a parent.
</description>
</method>
<method name="get_path" qualifiers="const">
- <return type="NodePath">
- </return>
+ <return type="NodePath" />
<description>
Returns the absolute path of the current node. This only works if the current node is inside the scene tree (see [method is_inside_tree]).
</description>
</method>
<method name="get_path_to" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="node" type="Node" />
<description>
Returns the relative [NodePath] from this node to the specified [code]node[/code]. Both nodes must be in the same scene or the function will fail.
</description>
</method>
<method name="get_physics_process_delta_time" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the time elapsed (in seconds) since the last physics-bound frame (see [method _physics_process]). This is always a constant value in physics processing unless the frames per second is changed via [member Engine.iterations_per_second].
</description>
</method>
<method name="get_process_delta_time" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the time elapsed (in seconds) since the last process callback. This value may vary from frame to frame.
</description>
</method>
<method name="get_scene_instance_load_placeholder" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this is an instance load placeholder. See [InstancePlaceholder].
</description>
</method>
<method name="get_tree" qualifiers="const">
- <return type="SceneTree">
- </return>
+ <return type="SceneTree" />
<description>
Returns the [SceneTree] that contains this node.
</description>
</method>
<method name="get_viewport" qualifiers="const">
- <return type="Viewport">
- </return>
+ <return type="Viewport" />
<description>
Returns the node's [Viewport].
</description>
</method>
<method name="has_node" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="path" type="NodePath">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="path" type="NodePath" />
<description>
Returns [code]true[/code] if the node that the [NodePath] points to exists.
</description>
</method>
<method name="has_node_and_resource" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="path" type="NodePath">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="path" type="NodePath" />
<description>
Returns [code]true[/code] if the [NodePath] points to a valid node and its subname points to a valid resource, e.g. [code]Area2D/CollisionShape2D:shape[/code]. Properties with a non-[Resource] type (e.g. nodes or primitive math types) are not considered resources.
</description>
</method>
<method name="is_ancestor_of" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="node" type="Node" />
<description>
Returns [code]true[/code] if the given node is a direct or indirect child of the current node.
</description>
</method>
<method name="is_displayed_folded" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the node is folded (collapsed) in the Scene dock.
</description>
</method>
<method name="is_greater_than" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="node" type="Node" />
<description>
Returns [code]true[/code] if the given node occurs later in the scene hierarchy than the current node.
</description>
</method>
<method name="is_in_group" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="group" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="group" type="StringName" />
<description>
Returns [code]true[/code] if this node is in the specified group. See notes in the description, and the group methods in [SceneTree].
</description>
</method>
<method name="is_inside_tree" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this node is currently inside a [SceneTree].
</description>
</method>
<method name="is_network_master" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the local system is the master of this node.
</description>
</method>
<method name="is_physics_processing" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if physics processing is enabled (see [method set_physics_process]).
</description>
</method>
<method name="is_physics_processing_internal" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if internal physics processing is enabled (see [method set_physics_process_internal]).
</description>
</method>
<method name="is_processing" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if processing is enabled (see [method set_process]).
</description>
</method>
<method name="is_processing_input" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the node is processing input (see [method set_process_input]).
</description>
</method>
<method name="is_processing_internal" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if internal processing is enabled (see [method set_process_internal]).
</description>
</method>
<method name="is_processing_unhandled_input" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the node is processing unhandled input (see [method set_process_unhandled_input]).
</description>
</method>
<method name="is_processing_unhandled_key_input" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the node is processing unhandled key input (see [method set_process_unhandled_key_input]).
</description>
</method>
<method name="move_child">
- <return type="void">
- </return>
- <argument index="0" name="child_node" type="Node">
- </argument>
- <argument index="1" name="to_position" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="child_node" type="Node" />
+ <argument index="1" name="to_position" type="int" />
<description>
Moves a child node to a different position (order) among the other children. Since calls, signals, etc are performed by tree order, changing the order of children nodes may be useful.
</description>
</method>
<method name="print_stray_nodes">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Prints all stray nodes (nodes outside the [SceneTree]). Used for debugging. Works only in debug builds.
</description>
</method>
<method name="print_tree">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Prints the tree to stdout. Used mainly for debugging purposes. This version displays the path relative to the current node, and is good for copy/pasting into the [method get_node] function.
[b]Example output:[/b]
@@ -558,8 +477,7 @@
</description>
</method>
<method name="print_tree_pretty">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Similar to [method print_tree], this prints the tree to stdout. This version displays a more graphical representation similar to what is displayed in the scene inspector. It is useful for inspecting larger trees.
[b]Example output:[/b]
@@ -574,226 +492,175 @@
</description>
</method>
<method name="propagate_call">
- <return type="void">
- </return>
- <argument index="0" name="method" type="StringName">
- </argument>
- <argument index="1" name="args" type="Array" default="[]">
- </argument>
- <argument index="2" name="parent_first" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="method" type="StringName" />
+ <argument index="1" name="args" type="Array" default="[]" />
+ <argument index="2" name="parent_first" type="bool" default="false" />
<description>
Calls the given method (if present) with the arguments given in [code]args[/code] on this node and recursively on all its children. If the [code]parent_first[/code] argument is [code]true[/code], the method will be called on the current node first, then on all its children. If [code]parent_first[/code] is [code]false[/code], the children will be called first.
</description>
</method>
<method name="propagate_notification">
- <return type="void">
- </return>
- <argument index="0" name="what" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="what" type="int" />
<description>
Notifies the current node and all its children recursively by calling [method Object.notification] on all of them.
</description>
</method>
<method name="queue_free">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Queues a node for deletion at the end of the current frame. When deleted, all of its child nodes will be deleted as well. This method ensures it's safe to delete the node, contrary to [method Object.free]. Use [method Object.is_queued_for_deletion] to check whether a node will be deleted at the end of the frame.
</description>
</method>
<method name="raise">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Moves this node to the bottom of parent node's children hierarchy. This is often useful in GUIs ([Control] nodes), because their order of drawing depends on their order in the tree. The top Node is drawn first, then any siblings below the top Node in the hierarchy are successively drawn on top of it. After using [code]raise[/code], a Control will be drawn on top of its siblings.
</description>
</method>
<method name="remove_and_skip">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes a node and sets all its children as children of the parent node (if it exists). All event subscriptions that pass by the removed node will be unsubscribed.
</description>
</method>
<method name="remove_child">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Node" />
<description>
Removes a child node. The node is NOT deleted and must be deleted manually.
</description>
</method>
<method name="remove_from_group">
- <return type="void">
- </return>
- <argument index="0" name="group" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="group" type="StringName" />
<description>
Removes a node from a group. See notes in the description, and the group methods in [SceneTree].
</description>
</method>
<method name="replace_by">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
- <argument index="1" name="keep_groups" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Node" />
+ <argument index="1" name="keep_groups" type="bool" default="false" />
<description>
Replaces a node in a scene by the given one. Subscriptions that pass through this node will be lost.
If [code]keep_groups[/code] is [code]true[/code], the [code]node[/code] is added to the same groups that the replaced node is in.
</description>
</method>
<method name="request_ready">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Requests that [code]_ready[/code] be called again. Note that the method won't be called immediately, but is scheduled for when the node is added to the scene tree again (see [method _ready]). [code]_ready[/code] is called only for the node which requested it, which means that you need to request ready for each child if you want them to call [code]_ready[/code] too (in which case, [code]_ready[/code] will be called in the same order as it would normally).
</description>
</method>
<method name="rpc" qualifiers="vararg">
- <return type="Variant">
- </return>
- <argument index="0" name="method" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="method" type="StringName" />
<description>
Sends a remote procedure call request for the given [code]method[/code] to peers on the network (and locally), optionally sending all additional arguments as arguments to the method called by the RPC. The call request will only be received by nodes with the same [NodePath], including the exact same node name. Behaviour depends on the RPC configuration for the given method, see [method rpc_config]. Methods are not exposed to RPCs by default. Returns an empty [Variant].
[b]Note:[/b] You can only safely use RPCs on clients after you received the [code]connected_to_server[/code] signal from the [MultiplayerAPI]. You also need to keep track of the connection state, either by the [MultiplayerAPI] signals like [code]server_disconnected[/code] or by checking [code]get_multiplayer().network_peer.get_connection_status() == CONNECTION_CONNECTED[/code].
</description>
</method>
<method name="rpc_config">
- <return type="int">
- </return>
- <argument index="0" name="method" type="StringName">
- </argument>
- <argument index="1" name="rpc_mode" type="int" enum="MultiplayerAPI.RPCMode">
- </argument>
- <argument index="2" name="transfer_mode" type="int" enum="MultiplayerPeer.TransferMode" default="2">
- </argument>
- <argument index="3" name="channel" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="method" type="StringName" />
+ <argument index="1" name="rpc_mode" type="int" enum="MultiplayerAPI.RPCMode" />
+ <argument index="2" name="transfer_mode" type="int" enum="MultiplayerPeer.TransferMode" default="2" />
+ <argument index="3" name="channel" type="int" default="0" />
<description>
Changes the RPC mode for the given [code]method[/code] to the given [code]rpc_mode[/code], optionally specifying the [code]transfer_mode[/code] and [code]channel[/code] (on supported peers). See [enum MultiplayerAPI.RPCMode] and [enum MultiplayerPeer.TransferMode]. An alternative is annotating methods and properties with the corresponding keywords ([code]remote[/code], [code]master[/code], [code]puppet[/code], [code]remotesync[/code], [code]mastersync[/code], [code]puppetsync[/code]). By default, methods are not exposed to networking (and RPCs).
</description>
</method>
<method name="rpc_id" qualifiers="vararg">
- <return type="Variant">
- </return>
- <argument index="0" name="peer_id" type="int">
- </argument>
- <argument index="1" name="method" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="peer_id" type="int" />
+ <argument index="1" name="method" type="StringName" />
<description>
Sends a [method rpc] to a specific peer identified by [code]peer_id[/code] (see [method MultiplayerPeer.set_target_peer]). Returns an empty [Variant].
</description>
</method>
<method name="set_display_folded">
- <return type="void">
- </return>
- <argument index="0" name="fold" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="fold" type="bool" />
<description>
Sets the folded state of the node in the Scene dock.
</description>
</method>
<method name="set_editor_description">
- <return type="void">
- </return>
- <argument index="0" name="editor_description" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="editor_description" type="String" />
<description>
</description>
</method>
<method name="set_network_master">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="recursive" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="recursive" type="bool" default="true" />
<description>
Sets the node's network master to the peer with the given peer ID. The network master is the peer that has authority over the node on the network. Useful in conjunction with the [code]master[/code] and [code]puppet[/code] keywords. Inherited from the parent node by default, which ultimately defaults to peer ID 1 (the server). If [code]recursive[/code], the given peer is recursively set as the master for all children of this node.
</description>
</method>
<method name="set_physics_process">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
Enables or disables physics (i.e. fixed framerate) processing. When a node is being processed, it will receive a [constant NOTIFICATION_PHYSICS_PROCESS] at a fixed (usually 60 FPS, see [member Engine.iterations_per_second] to change) interval (and the [method _physics_process] callback will be called if exists). Enabled automatically if [method _physics_process] is overridden. Any calls to this before [method _ready] will be ignored.
</description>
</method>
<method name="set_physics_process_internal">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
Enables or disables internal physics for this node. Internal physics processing happens in isolation from the normal [method _physics_process] calls and is used by some nodes internally to guarantee proper functioning even if the node is paused or physics processing is disabled for scripting ([method set_physics_process]). Only useful for advanced uses to manipulate built-in nodes' behavior.
[b]Warning:[/b] Built-in Nodes rely on the internal processing for their own logic, so changing this value from your code may lead to unexpected behavior. Script access to this internal logic is provided for specific advanced uses, but is unsafe and not supported.
</description>
</method>
<method name="set_process">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
Enables or disables processing. When a node is being processed, it will receive a [constant NOTIFICATION_PROCESS] on every drawn frame (and the [method _process] callback will be called if exists). Enabled automatically if [method _process] is overridden. Any calls to this before [method _ready] will be ignored.
</description>
</method>
<method name="set_process_input">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
Enables or disables input processing. This is not required for GUI controls! Enabled automatically if [method _input] is overridden. Any calls to this before [method _ready] will be ignored.
</description>
</method>
<method name="set_process_internal">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
Enables or disabled internal processing for this node. Internal processing happens in isolation from the normal [method _process] calls and is used by some nodes internally to guarantee proper functioning even if the node is paused or processing is disabled for scripting ([method set_process]). Only useful for advanced uses to manipulate built-in nodes' behavior.
[b]Warning:[/b] Built-in Nodes rely on the internal processing for their own logic, so changing this value from your code may lead to unexpected behavior. Script access to this internal logic is provided for specific advanced uses, but is unsafe and not supported.
</description>
</method>
<method name="set_process_unhandled_input">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
Enables unhandled input processing. This is not required for GUI controls! It enables the node to receive all input that was not previously handled (usually by a [Control]). Enabled automatically if [method _unhandled_input] is overridden. Any calls to this before [method _ready] will be ignored.
</description>
</method>
<method name="set_process_unhandled_key_input">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
Enables unhandled key input processing. Enabled automatically if [method _unhandled_key_input] is overridden. Any calls to this before [method _ready] will be ignored.
</description>
</method>
<method name="set_scene_instance_load_placeholder">
- <return type="void">
- </return>
- <argument index="0" name="load_placeholder" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="load_placeholder" type="bool" />
<description>
Sets whether this is an instance load placeholder. See [InstancePlaceholder].
</description>
</method>
<method name="update_configuration_warnings">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Updates the warning displayed for this node in the Scene Dock.
Use [method _get_configuration_warnings] to setup the warning message to display.
diff --git a/doc/classes/Node2D.xml b/doc/classes/Node2D.xml
index 9ffa333f17..cc790b7c28 100644
--- a/doc/classes/Node2D.xml
+++ b/doc/classes/Node2D.xml
@@ -12,104 +12,80 @@
</tutorials>
<methods>
<method name="apply_scale">
- <return type="void">
- </return>
- <argument index="0" name="ratio" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="ratio" type="Vector2" />
<description>
Multiplies the current scale by the [code]ratio[/code] vector.
</description>
</method>
<method name="get_angle_to" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
+ <return type="float" />
+ <argument index="0" name="point" type="Vector2" />
<description>
Returns the angle between the node and the [code]point[/code] in radians.
</description>
</method>
<method name="get_relative_transform_to_parent" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="parent" type="Node">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="parent" type="Node" />
<description>
Returns the [Transform2D] relative to this node's parent.
</description>
</method>
<method name="global_translate">
- <return type="void">
- </return>
- <argument index="0" name="offset" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="offset" type="Vector2" />
<description>
Adds the [code]offset[/code] vector to the node's global position.
</description>
</method>
<method name="look_at">
- <return type="void">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="point" type="Vector2" />
<description>
Rotates the node so it points towards the [code]point[/code], which is expected to use global coordinates.
</description>
</method>
<method name="move_local_x">
- <return type="void">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
- <argument index="1" name="scaled" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="delta" type="float" />
+ <argument index="1" name="scaled" type="bool" default="false" />
<description>
Applies a local translation on the node's X axis based on the [method Node._process]'s [code]delta[/code]. If [code]scaled[/code] is [code]false[/code], normalizes the movement.
</description>
</method>
<method name="move_local_y">
- <return type="void">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
- <argument index="1" name="scaled" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="delta" type="float" />
+ <argument index="1" name="scaled" type="bool" default="false" />
<description>
Applies a local translation on the node's Y axis based on the [method Node._process]'s [code]delta[/code]. If [code]scaled[/code] is [code]false[/code], normalizes the movement.
</description>
</method>
<method name="rotate">
- <return type="void">
- </return>
- <argument index="0" name="radians" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="radians" type="float" />
<description>
Applies a rotation to the node, in radians, starting from its current rotation.
</description>
</method>
<method name="to_global" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="local_point" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="local_point" type="Vector2" />
<description>
Transforms the provided local position into a position in global coordinate space. The input is expected to be local relative to the [Node2D] it is called on. e.g. Applying this method to the positions of child nodes will correctly transform their positions into the global coordinate space, but applying it to a node's own position will give an incorrect result, as it will incorporate the node's own transformation into its global position.
</description>
</method>
<method name="to_local" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="global_point" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="global_point" type="Vector2" />
<description>
Transforms the provided global position into a position in local coordinate space. The output will be local relative to the [Node2D] it is called on. e.g. It is appropriate for determining the positions of child nodes, but it is not appropriate for determining its own position relative to its parent.
</description>
</method>
<method name="translate">
- <return type="void">
- </return>
- <argument index="0" name="offset" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="offset" type="Vector2" />
<description>
Translates the node by the given [code]offset[/code] in local coordinates.
</description>
diff --git a/doc/classes/Node3D.xml b/doc/classes/Node3D.xml
index 14e03a2186..983d8961fb 100644
--- a/doc/classes/Node3D.xml
+++ b/doc/classes/Node3D.xml
@@ -13,98 +13,105 @@
<link title="All 3D Demos">https://github.com/godotengine/godot-demo-projects/tree/master/3d</link>
</tutorials>
<methods>
+ <method name="add_gizmo">
+ <return type="void" />
+ <argument index="0" name="gizmo" type="Node3DGizmo" />
+ <description>
+ Attach a gizmo to this [code]Node3D[/code].
+ </description>
+ </method>
+ <method name="clear_gizmos">
+ <return type="void" />
+ <description>
+ Clear all gizmos attached to this [code]Node3D[/code].
+ </description>
+ </method>
+ <method name="clear_subgizmo_selection">
+ <return type="void" />
+ <description>
+ Clears subgizmo selection for this node in the editor. Useful when subgizmo IDs become invalid after a property change.
+ </description>
+ </method>
<method name="force_update_transform">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Forces the transform to update. Transform changes in physics are not instant for performance reasons. Transforms are accumulated and then set. Use this if you need an up-to-date transform when doing physics operations.
</description>
</method>
+ <method name="get_gizmos" qualifiers="const">
+ <return type="Array" />
+ <description>
+ Returns all the gizmos attached to this [code]Node3D[/code].
+ </description>
+ </method>
<method name="get_parent_node_3d" qualifiers="const">
- <return type="Node3D">
- </return>
+ <return type="Node3D" />
<description>
Returns the parent [Node3D], or an empty [Object] if no parent exists or parent is not of type [Node3D].
</description>
</method>
<method name="get_world_3d" qualifiers="const">
- <return type="World3D">
- </return>
+ <return type="World3D" />
<description>
Returns the current [World3D] resource this [Node3D] node is registered to.
</description>
</method>
<method name="global_rotate">
- <return type="void">
- </return>
- <argument index="0" name="axis" type="Vector3">
- </argument>
- <argument index="1" name="angle" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="axis" type="Vector3" />
+ <argument index="1" name="angle" type="float" />
<description>
Rotates the global (world) transformation around axis, a unit [Vector3], by specified angle in radians. The rotation axis is in global coordinate system.
</description>
</method>
<method name="global_scale">
- <return type="void">
- </return>
- <argument index="0" name="scale" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scale" type="Vector3" />
<description>
Scales the global (world) transformation by the given [Vector3] scale factors.
</description>
</method>
<method name="global_translate">
- <return type="void">
- </return>
- <argument index="0" name="offset" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="offset" type="Vector3" />
<description>
Moves the global (world) transformation by [Vector3] offset. The offset is in global coordinate system.
</description>
</method>
<method name="hide">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Disables rendering of this node. Changes [member visible] to [code]false[/code].
</description>
</method>
<method name="is_local_transform_notification_enabled" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether node notifies about its local transformation changes. [Node3D] will not propagate this by default.
</description>
</method>
<method name="is_scale_disabled" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether this node uses a scale of [code](1, 1, 1)[/code] or its local transformation scale.
</description>
</method>
<method name="is_transform_notification_enabled" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether the node notifies about its global and local transformation changes. [Node3D] will not propagate this by default.
</description>
</method>
<method name="is_visible_in_tree" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the node is present in the [SceneTree], its [member visible] property is [code]true[/code] and all its antecedents are also visible. If any antecedent is hidden, this node will not be visible in the scene tree.
</description>
</method>
<method name="look_at">
- <return type="void">
- </return>
- <argument index="0" name="target" type="Vector3">
- </argument>
- <argument index="1" name="up" type="Vector3" default="Vector3(0, 1, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="target" type="Vector3" />
+ <argument index="1" name="up" type="Vector3" default="Vector3(0, 1, 0)" />
<description>
Rotates itself so that the local -Z axis points towards the [code]target[/code] position.
The transform will first be rotated around the given [code]up[/code] vector, and then fully aligned to the target by a further rotation around an axis perpendicular to both the [code]target[/code] and [code]up[/code] vectors.
@@ -112,182 +119,141 @@
</description>
</method>
<method name="look_at_from_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector3">
- </argument>
- <argument index="1" name="target" type="Vector3">
- </argument>
- <argument index="2" name="up" type="Vector3" default="Vector3(0, 1, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector3" />
+ <argument index="1" name="target" type="Vector3" />
+ <argument index="2" name="up" type="Vector3" default="Vector3(0, 1, 0)" />
<description>
Moves the node to the specified [code]position[/code], and then rotates itself to point toward the [code]target[/code] as per [method look_at]. Operations take place in global space.
</description>
</method>
<method name="orthonormalize">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Resets this node's transformations (like scale, skew and taper) preserving its rotation and translation by performing Gram-Schmidt orthonormalization on this node's [Transform3D].
</description>
</method>
<method name="rotate">
- <return type="void">
- </return>
- <argument index="0" name="axis" type="Vector3">
- </argument>
- <argument index="1" name="angle" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="axis" type="Vector3" />
+ <argument index="1" name="angle" type="float" />
<description>
Rotates the local transformation around axis, a unit [Vector3], by specified angle in radians.
</description>
</method>
<method name="rotate_object_local">
- <return type="void">
- </return>
- <argument index="0" name="axis" type="Vector3">
- </argument>
- <argument index="1" name="angle" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="axis" type="Vector3" />
+ <argument index="1" name="angle" type="float" />
<description>
Rotates the local transformation around axis, a unit [Vector3], by specified angle in radians. The rotation axis is in object-local coordinate system.
</description>
</method>
<method name="rotate_x">
- <return type="void">
- </return>
- <argument index="0" name="angle" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="angle" type="float" />
<description>
Rotates the local transformation around the X axis by angle in radians.
</description>
</method>
<method name="rotate_y">
- <return type="void">
- </return>
- <argument index="0" name="angle" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="angle" type="float" />
<description>
Rotates the local transformation around the Y axis by angle in radians.
</description>
</method>
<method name="rotate_z">
- <return type="void">
- </return>
- <argument index="0" name="angle" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="angle" type="float" />
<description>
Rotates the local transformation around the Z axis by angle in radians.
</description>
</method>
<method name="scale_object_local">
- <return type="void">
- </return>
- <argument index="0" name="scale" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scale" type="Vector3" />
<description>
Scales the local transformation by given 3D scale factors in object-local coordinate system.
</description>
</method>
<method name="set_disable_scale">
- <return type="void">
- </return>
- <argument index="0" name="disable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="disable" type="bool" />
<description>
Sets whether the node uses a scale of [code](1, 1, 1)[/code] or its local transformation scale. Changes to the local transformation scale are preserved.
</description>
</method>
<method name="set_identity">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Reset all transformations for this node (sets its [Transform3D] to the identity matrix).
</description>
</method>
<method name="set_ignore_transform_notification">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enabled" type="bool" />
<description>
Sets whether the node ignores notification that its transformation (global or local) changed.
</description>
</method>
<method name="set_notify_local_transform">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
Sets whether the node notifies about its local transformation changes. [Node3D] will not propagate this by default.
</description>
</method>
<method name="set_notify_transform">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
Sets whether the node notifies about its global and local transformation changes. [Node3D] will not propagate this by default, unless it is in the editor context and it has a valid gizmo.
</description>
</method>
<method name="show">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Enables rendering of this node. Changes [member visible] to [code]true[/code].
</description>
</method>
<method name="to_global" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="local_point" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="local_point" type="Vector3" />
<description>
Transforms [code]local_point[/code] from this node's local space to world space.
</description>
</method>
<method name="to_local" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="global_point" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="global_point" type="Vector3" />
<description>
Transforms [code]global_point[/code] from world space to this node's local space.
</description>
</method>
<method name="translate">
- <return type="void">
- </return>
- <argument index="0" name="offset" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="offset" type="Vector3" />
<description>
Changes the node's position by the given offset [Vector3].
Note that the translation [code]offset[/code] is affected by the node's scale, so if scaled by e.g. [code](10, 1, 1)[/code], a translation by an offset of [code](2, 0, 0)[/code] would actually add 20 ([code]2 * 10[/code]) to the X coordinate.
</description>
</method>
<method name="translate_object_local">
- <return type="void">
- </return>
- <argument index="0" name="offset" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="offset" type="Vector3" />
<description>
Changes the node's position by the given offset [Vector3] in local space.
</description>
</method>
- <method name="update_gizmo">
- <return type="void">
- </return>
+ <method name="update_gizmos">
+ <return type="void" />
<description>
- Updates the [Node3DGizmo] of this node.
+ Updates all the [Node3DGizmo]s attached to this node.
</description>
</method>
</methods>
<members>
- <member name="gizmo" type="Node3DGizmo" setter="set_gizmo" getter="get_gizmo">
- The [Node3DGizmo] for this node. Used for example in [EditorNode3DGizmo] as custom visualization and editing handles in Editor.
- </member>
<member name="global_transform" type="Transform3D" setter="set_global_transform" getter="get_global_transform">
World3D space (global) [Transform3D] of this node.
</member>
@@ -308,7 +274,7 @@
Local space [Transform3D] of this node, with respect to the parent node.
</member>
<member name="visibility_parent" type="NodePath" setter="set_visibility_parent" getter="get_visibility_parent" default="NodePath(&quot;&quot;)">
- Defines the visibility range parent for this node and its subtree. The visibility parent must be a GeometryInstance3D. Any visual instance will only be visible if the visibility parent (and all of its visibility ancestors) is hidden by being closer to the camera than its own [member GeometryInstance3D.visibility_range_begin]. Nodes hidden via the [member Node3D.visible] property are essentially removed from the visibility dependency tree, so dependant instances will not take the hidden node or its ancestors into account.
+ Defines the visibility range parent for this node and its subtree. The visibility parent must be a GeometryInstance3D. Any visual instance will only be visible if the visibility parent (and all of its visibility ancestors) is hidden by being closer to the camera than its own [member GeometryInstance3D.visibility_range_begin]. Nodes hidden via the [member Node3D.visible] property are essentially removed from the visibility dependency tree, so dependent instances will not take the hidden node or its ancestors into account.
</member>
<member name="visible" type="bool" setter="set_visible" getter="is_visible" default="true">
If [code]true[/code], this node is drawn. The node is only visible if all of its antecedents are visible as well (in other words, [method is_visible_in_tree] must return [code]true[/code]).
@@ -324,7 +290,7 @@
<constants>
<constant name="NOTIFICATION_TRANSFORM_CHANGED" value="2000">
Node3D nodes receives this notification when their global transform changes. This means that either the current or a parent node changed its transform.
- In order for [constant NOTIFICATION_TRANSFORM_CHANGED] to work, users first need to ask for it, with [method set_notify_transform]. The notification is also sent if the node is in the editor context and it has a valid gizmo.
+ In order for [constant NOTIFICATION_TRANSFORM_CHANGED] to work, users first need to ask for it, with [method set_notify_transform]. The notification is also sent if the node is in the editor context and it has at least one valid gizmo.
</constant>
<constant name="NOTIFICATION_ENTER_WORLD" value="41">
Node3D nodes receives this notification when they are registered to new [World3D] resource.
diff --git a/doc/classes/NodePath.xml b/doc/classes/NodePath.xml
index 0ba2e73ad4..d05630d277 100644
--- a/doc/classes/NodePath.xml
+++ b/doc/classes/NodePath.xml
@@ -27,26 +27,21 @@
</tutorials>
<methods>
<method name="NodePath" qualifiers="constructor">
- <return type="NodePath">
- </return>
+ <return type="NodePath" />
<description>
Constructs an empty [NodePath].
</description>
</method>
<method name="NodePath" qualifiers="constructor">
- <return type="NodePath">
- </return>
- <argument index="0" name="from" type="NodePath">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="from" type="NodePath" />
<description>
Constructs a [NodePath] as a copy of the given [NodePath].
</description>
</method>
<method name="NodePath" qualifiers="constructor">
- <return type="NodePath">
- </return>
- <argument index="0" name="from" type="String">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="from" type="String" />
<description>
Creates a NodePath from a string, e.g. [code]"Path2D/PathFollow2D/Sprite2D:texture:size"[/code]. A path is absolute if it starts with a slash. Absolute paths are only valid in the global scene tree, not within individual scenes. In a relative path, [code]"."[/code] and [code]".."[/code] indicate the current node and its parent.
The "subnames" optionally included after the path to the target node can point to resources or properties, and can also be nested.
@@ -68,8 +63,7 @@
</description>
</method>
<method name="get_as_property_path" qualifiers="const">
- <return type="NodePath">
- </return>
+ <return type="NodePath" />
<description>
Returns a node path with a colon character ([code]:[/code]) prepended, transforming it to a pure property path with no node name (defaults to resolving from the current node).
[codeblocks]
@@ -91,8 +85,7 @@
</description>
</method>
<method name="get_concatenated_subnames" qualifiers="const">
- <return type="StringName">
- </return>
+ <return type="StringName" />
<description>
Returns all subnames concatenated with a colon character ([code]:[/code]) as separator, i.e. the right side of the first colon in a node path.
[codeblocks]
@@ -108,10 +101,8 @@
</description>
</method>
<method name="get_name" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="idx" type="int" />
<description>
Gets the node name indicated by [code]idx[/code] (0 to [method get_name_count]).
[codeblocks]
@@ -131,18 +122,15 @@
</description>
</method>
<method name="get_name_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets the number of node names which make up the path. Subnames (see [method get_subname_count]) are not included.
For example, [code]"Path2D/PathFollow2D/Sprite2D"[/code] has 3 names.
</description>
</method>
<method name="get_subname" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="idx" type="int" />
<description>
Gets the resource or property name indicated by [code]idx[/code] (0 to [method get_subname_count]).
[codeblocks]
@@ -160,40 +148,33 @@
</description>
</method>
<method name="get_subname_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets the number of resource or property names ("subnames") in the path. Each subname is listed after a colon character ([code]:[/code]) in the node path.
For example, [code]"Path2D/PathFollow2D/Sprite2D:texture:load_path"[/code] has 2 subnames.
</description>
</method>
<method name="is_absolute" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the node path is absolute (as opposed to relative), which means that it starts with a slash character ([code]/[/code]). Absolute node paths can be used to access the root node ([code]"/root"[/code]) or autoloads (e.g. [code]"/global"[/code] if a "global" autoload was registered).
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the node path is empty.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="NodePath">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="NodePath" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="NodePath">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="NodePath" />
<description>
</description>
</method>
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index 4cbbf4e238..e5d45189c7 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -10,28 +10,31 @@
<link title="OS Test Demo">https://godotengine.org/asset-library/asset/677</link>
</tutorials>
<methods>
+ <method name="alert">
+ <return type="void" />
+ <argument index="0" name="text" type="String" />
+ <argument index="1" name="title" type="String" default="&quot;Alert!&quot;" />
+ <description>
+ Displays a modal dialog box using the host OS' facilities. Execution is blocked until the dialog is closed.
+ </description>
+ </method>
<method name="can_use_threads" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the current host platform is using multiple threads.
</description>
</method>
<method name="close_midi_inputs">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Shuts down system MIDI driver.
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="create_process">
- <return type="int">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="arguments" type="PackedStringArray">
- </argument>
+ <return type="int" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="arguments" type="PackedStringArray" />
<description>
Creates a new process that runs independently of Godot. It will not terminate if Godot terminates. The file specified in [code]path[/code] must exist and be executable. Platform path resolution will be used. The [code]arguments[/code] are used in the given order and separated by a space.
If the process creation succeeds, the method will return the new process ID, which you can use to monitor the process (and potentially terminate it with [method kill]). If the process creation fails, the method will return [code]-1[/code].
@@ -49,38 +52,30 @@
</description>
</method>
<method name="delay_msec" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="msec" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="msec" type="int" />
<description>
Delay execution of the current thread by [code]msec[/code] milliseconds. [code]msec[/code] must be greater than or equal to [code]0[/code]. Otherwise, [method delay_msec] will do nothing and will print an error message.
</description>
</method>
<method name="delay_usec" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="usec" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="usec" type="int" />
<description>
Delay execution of the current thread by [code]usec[/code] microseconds. [code]usec[/code] must be greater than or equal to [code]0[/code]. Otherwise, [method delay_usec] will do nothing and will print an error message.
</description>
</method>
<method name="dump_memory_to_file">
- <return type="void">
- </return>
- <argument index="0" name="file" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="file" type="String" />
<description>
Dumps the memory allocation ringlist to a file (only works in debug).
Entry format per line: "Address - Size - Description".
</description>
</method>
<method name="dump_resources_to_file">
- <return type="void">
- </return>
- <argument index="0" name="file" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="file" type="String" />
<description>
Dumps all used resources to file (only works in debug).
Entry format per line: "Resource Type : Resource Location".
@@ -88,16 +83,11 @@
</description>
</method>
<method name="execute">
- <return type="int">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="arguments" type="PackedStringArray">
- </argument>
- <argument index="2" name="output" type="Array" default="[]">
- </argument>
- <argument index="3" name="read_stderr" type="bool" default="false">
- </argument>
+ <return type="int" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="arguments" type="PackedStringArray" />
+ <argument index="2" name="output" type="Array" default="[]" />
+ <argument index="3" name="read_stderr" type="bool" default="false" />
<description>
Executes a command. The file specified in [code]path[/code] must exist and be executable. Platform path resolution will be used. The [code]arguments[/code] are used in the given order and separated by a space. If an [code]output[/code] [Array] is provided, the complete shell output of the process will be appended as a single [String] element in [code]output[/code]. If [code]read_stderr[/code] is [code]true[/code], the output to the standard error stream will be included too.
If the command is successfully executed, the method will return the exit code of the command, or [code]-1[/code] if it fails.
@@ -128,25 +118,21 @@
</description>
</method>
<method name="find_keycode_from_string" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="string" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="string" type="String" />
<description>
Returns the keycode of the given string (e.g. "Escape").
</description>
</method>
<method name="get_cache_dir" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the [i]global[/i] cache data directory according to the operating system's standards. On desktop platforms, this path can be overridden by setting the [code]XDG_CACHE_HOME[/code] environment variable before starting the project. See [url=https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html]File paths in Godot projects[/url] in the documentation for more information. See also [method get_config_dir] and [method get_data_dir].
Not to be confused with [method get_user_data_dir], which returns the [i]project-specific[/i] user data path.
</description>
</method>
<method name="get_cmdline_args">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns the command-line arguments passed to the engine.
Command-line arguments can be written in any form, including both [code]--key value[/code] and [code]--key=value[/code] forms so they can be properly parsed, as long as custom command-line arguments do not conflict with engine arguments.
@@ -176,16 +162,14 @@
</description>
</method>
<method name="get_config_dir" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the [i]global[/i] user configuration directory according to the operating system's standards. On desktop platforms, this path can be overridden by setting the [code]XDG_CONFIG_HOME[/code] environment variable before starting the project. See [url=https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html]File paths in Godot projects[/url] in the documentation for more information. See also [method get_cache_dir] and [method get_data_dir].
Not to be confused with [method get_user_data_dir], which returns the [i]project-specific[/i] user data path.
</description>
</method>
<method name="get_connected_midi_inputs">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns an array of MIDI device names.
The returned array will be empty if the system MIDI driver has not previously been initialised with [method open_midi_inputs].
@@ -193,141 +177,121 @@
</description>
</method>
<method name="get_data_dir" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the [i]global[/i] user data directory according to the operating system's standards. On desktop platforms, this path can be overridden by setting the [code]XDG_DATA_HOME[/code] environment variable before starting the project. See [url=https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html]File paths in Godot projects[/url] in the documentation for more information. See also [method get_cache_dir] and [method get_config_dir].
Not to be confused with [method get_user_data_dir], which returns the [i]project-specific[/i] user data path.
</description>
</method>
<method name="get_environment" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="variable" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="variable" type="String" />
<description>
Returns the value of an environment variable. Returns an empty string if the environment variable doesn't exist.
[b]Note:[/b] Double-check the casing of [code]variable[/code]. Environment variable names are case-sensitive on all platforms except Windows.
</description>
</method>
<method name="get_executable_path" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the path to the current engine executable.
</description>
</method>
<method name="get_external_data_dir" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
On Android, returns the absolute directory path where user data can be written to external storage if available. On all other platforms, this will return the same location as [method get_user_data_dir].
</description>
</method>
<method name="get_granted_permissions" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
- With this function you can get the list of dangerous permissions that have been granted to the Android application.
+ With this function, you can get the list of dangerous permissions that have been granted to the Android application.
[b]Note:[/b] This method is implemented on Android.
</description>
</method>
<method name="get_keycode_string" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="code" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="code" type="int" />
<description>
Returns the given keycode as a string (e.g. Return values: [code]"Escape"[/code], [code]"Shift+Escape"[/code]).
See also [member InputEventKey.keycode] and [method InputEventKey.get_keycode_with_modifiers].
</description>
</method>
<method name="get_locale" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the host OS locale as a string of the form [code]language_Script_COUNTRY_VARIANT@extra[/code].
[code]language[/code] - 2 or 3-letter [url=https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes]language code[/url], in lower case.
[code]Script[/code] - optional, 4-letter [url=https://en.wikipedia.org/wiki/ISO_15924]script code[/url], in title case.
[code]COUNTRY[/code] - optional, 2 or 3-letter [url=https://en.wikipedia.org/wiki/ISO_3166-1]country code[/url], in upper case.
- [code]VARIANT[/code] - optional, language variant, region and sort order. Variant can have any number of underscored key words.
+ [code]VARIANT[/code] - optional, language variant, region and sort order. Variant can have any number of underscored keywords.
[code]extra[/code] - optional, semicolon separated list of additional key words. Currency, calendar, sort order and numbering system information.
</description>
</method>
<method name="get_model_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the model name of the current device.
[b]Note:[/b] This method is implemented on Android and iOS. Returns [code]"GenericDevice"[/code] on unsupported platforms.
</description>
</method>
<method name="get_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the name of the host OS. Possible values are: [code]"Android"[/code], [code]"iOS"[/code], [code]"HTML5"[/code], [code]"OSX"[/code], [code]"Server"[/code], [code]"Windows"[/code], [code]"UWP"[/code], [code]"X11"[/code].
</description>
</method>
<method name="get_process_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the project's process ID.
[b]Note:[/b] This method is implemented on Android, iOS, Linux, macOS and Windows.
</description>
</method>
<method name="get_processor_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of threads available on the host machine.
</description>
</method>
<method name="get_static_memory_peak_usage" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the maximum amount of static memory used (only works in debug).
</description>
</method>
<method name="get_static_memory_usage" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of static memory being used by the program in bytes.
</description>
</method>
<method name="get_system_dir" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="dir" type="int" enum="OS.SystemDir">
- </argument>
+ <return type="String" />
+ <argument index="0" name="dir" type="int" enum="OS.SystemDir" />
<description>
Returns the actual path to commonly used folders across different platforms. Available locations are specified in [enum SystemDir].
[b]Note:[/b] This method is implemented on Android, Linux, macOS and Windows.
</description>
</method>
<method name="get_thread_caller_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the ID of the current thread. This can be used in logs to ease debugging of multi-threaded applications.
[b]Note:[/b] Thread IDs are not deterministic and may be reused across application restarts.
</description>
</method>
<method name="get_unique_id" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a string that is unique to the device.
- [b]Note:[/b] This string may change without notice if the user reinstalls/upgrades their operating system or changes their hardware. This means it should generally not be used to encrypt persistent data as the data saved prior to an unexpected ID change would become inaccessible. The returned string may also be falsified using external programs, so do not rely on the string returned by [method get_unique_id] for security purposes.
+ [b]Note:[/b] This string may change without notice if the user reinstalls/upgrades their operating system or changes their hardware. This means it should generally not be used to encrypt persistent data as the data saved before an unexpected ID change would become inaccessible. The returned string may also be falsified using external programs, so do not rely on the string returned by [method get_unique_id] for security purposes.
[b]Note:[/b] Returns an empty string on HTML5 and UWP, as this method isn't implemented on those platforms yet.
</description>
</method>
<method name="get_user_data_dir" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the absolute directory path where user data is written ([code]user://[/code]).
On Linux, this is [code]~/.local/share/godot/app_userdata/[project_name][/code], or [code]~/.local/share/[custom_name][/code] if [code]use_custom_user_dir[/code] is set.
@@ -338,28 +302,23 @@
</description>
</method>
<method name="has_environment" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="variable" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="variable" type="String" />
<description>
Returns [code]true[/code] if the environment variable with the name [code]variable[/code] exists.
[b]Note:[/b] Double-check the casing of [code]variable[/code]. Environment variable names are case-sensitive on all platforms except Windows.
</description>
</method>
<method name="has_feature" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="tag_name" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="tag_name" type="String" />
<description>
- Returns [code]true[/code] if the feature for the given feature tag is supported in the currently running instance, depending on platform, build etc. Can be used to check whether you're currently running a debug build, on a certain platform or arch, etc. Refer to the [url=https://docs.godotengine.org/en/latest/getting_started/workflow/export/feature_tags.html]Feature Tags[/url] documentation for more details.
+ Returns [code]true[/code] if the feature for the given feature tag is supported in the currently running instance, depending on the platform, build, etc. Can be used to check whether you're currently running a debug build, on a certain platform or arch, etc. Refer to the [url=https://docs.godotengine.org/en/latest/getting_started/workflow/export/feature_tags.html]Feature Tags[/url] documentation for more details.
[b]Note:[/b] Tag names are case-sensitive.
</description>
</method>
<method name="is_debug_build" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the Godot binary used to run the project is a [i]debug[/i] export template, or when running in the editor.
Returns [code]false[/code] if the Godot binary used to run the project is a [i]release[/i] export template.
@@ -367,33 +326,27 @@
</description>
</method>
<method name="is_keycode_unicode" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="code" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="code" type="int" />
<description>
Returns [code]true[/code] if the input keycode corresponds to a Unicode character.
</description>
</method>
<method name="is_stdout_verbose" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the engine was executed with [code]-v[/code] (verbose stdout).
</description>
</method>
<method name="is_userfs_persistent" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
If [code]true[/code], the [code]user://[/code] file system is persistent, so that its state is the same after a player quits and starts the game again. Relevant to the HTML5 platform, where this persistence may be unavailable.
</description>
</method>
<method name="kill">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="pid" type="int">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="pid" type="int" />
<description>
Kill (terminate) the process identified by the given process ID ([code]pid[/code]), e.g. the one returned by [method execute] in non-blocking mode.
[b]Note:[/b] This method can also be used to kill processes that were not spawned by the game.
@@ -401,99 +354,79 @@
</description>
</method>
<method name="open_midi_inputs">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Initialises the singleton for the system MIDI driver.
[b]Note:[/b] This method is implemented on Linux, macOS and Windows.
</description>
</method>
<method name="print_all_resources">
- <return type="void">
- </return>
- <argument index="0" name="tofile" type="String" default="&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tofile" type="String" default="&quot;&quot;" />
<description>
Shows all resources in the game. Optionally, the list can be written to a file by specifying a file path in [code]tofile[/code].
</description>
</method>
<method name="print_all_textures_by_size">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Shows the list of loaded textures sorted by size in memory.
</description>
</method>
<method name="print_resources_by_type">
- <return type="void">
- </return>
- <argument index="0" name="types" type="PackedStringArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="types" type="PackedStringArray" />
<description>
Shows the number of resources loaded by the game of the given types.
</description>
</method>
<method name="print_resources_in_use">
- <return type="void">
- </return>
- <argument index="0" name="short" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="short" type="bool" default="false" />
<description>
Shows all resources currently used by the game.
</description>
</method>
<method name="request_permission">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="String" />
<description>
At the moment this function is only used by [code]AudioDriverOpenSL[/code] to request permission for [code]RECORD_AUDIO[/code] on Android.
</description>
</method>
<method name="request_permissions">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
- With this function you can request dangerous permissions since normal permissions are automatically granted at install time in Android application.
+ With this function, you can request dangerous permissions since normal permissions are automatically granted at install time in Android applications.
[b]Note:[/b] This method is implemented on Android.
</description>
</method>
<method name="set_environment" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="variable" type="String">
- </argument>
- <argument index="1" name="value" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="variable" type="String" />
+ <argument index="1" name="value" type="String" />
<description>
Sets the value of the environment variable [code]variable[/code] to [code]value[/code]. The environment variable will be set for the Godot process and any process executed with [method execute] after running [method set_environment]. The environment variable will [i]not[/i] persist to processes run after the Godot process was terminated.
[b]Note:[/b] Double-check the casing of [code]variable[/code]. Environment variable names are case-sensitive on all platforms except Windows.
</description>
</method>
<method name="set_thread_name">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="name" type="String" />
<description>
Sets the name of the current thread.
</description>
</method>
<method name="set_use_file_access_save_and_swap">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enabled" type="bool" />
<description>
Enables backup saves if [code]enabled[/code] is [code]true[/code].
</description>
</method>
<method name="shell_open">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="uri" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="uri" type="String" />
<description>
Requests the OS to open a resource with the most appropriate program. For example:
- [code]OS.shell_open("C:\\Users\name\Downloads")[/code] on Windows opens the file explorer at the user's Downloads folder.
diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml
index fe7529bceb..9ad79dc17a 100644
--- a/doc/classes/Object.xml
+++ b/doc/classes/Object.xml
@@ -33,18 +33,15 @@
</tutorials>
<methods>
<method name="_get" qualifiers="virtual">
- <return type="Variant">
- </return>
- <argument index="0" name="property" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="property" type="StringName" />
<description>
Virtual method which can be overridden to customize the return value of [method get].
Returns the given property. Returns [code]null[/code] if the [code]property[/code] does not exist.
</description>
</method>
<method name="_get_property_list" qualifiers="virtual">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Virtual method which can be overridden to customize the return value of [method get_property_list].
Returns the object's property list as an [Array] of dictionaries.
@@ -52,57 +49,45 @@
</description>
</method>
<method name="_init" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Called when the object is initialized.
</description>
</method>
<method name="_notification" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="what" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="what" type="int" />
<description>
Called whenever the object receives a notification, which is identified in [code]what[/code] by a constant. The base [Object] has two constants [constant NOTIFICATION_POSTINITIALIZE] and [constant NOTIFICATION_PREDELETE], but subclasses such as [Node] define a lot more notifications which are also received by this method.
</description>
</method>
<method name="_set" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="property" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="property" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
Virtual method which can be overridden to customize the return value of [method set].
Sets a property. Returns [code]true[/code] if the [code]property[/code] exists.
</description>
</method>
<method name="_to_string" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Virtual method which can be overridden to customize the return value of [method to_string], and thus the object's representation where it is converted to a string, e.g. with [code]print(obj)[/code].
Returns a [String] representing the object. If not overridden, defaults to [code]"[ClassName:RID]"[/code].
</description>
</method>
<method name="add_user_signal">
- <return type="void">
- </return>
- <argument index="0" name="signal" type="String">
- </argument>
- <argument index="1" name="arguments" type="Array" default="[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="signal" type="String" />
+ <argument index="1" name="arguments" type="Array" default="[]" />
<description>
Adds a user-defined [code]signal[/code]. Arguments are optional, but can be added as an [Array] of dictionaries, each containing [code]name: String[/code] and [code]type: int[/code] (see [enum Variant.Type]) entries.
</description>
</method>
<method name="call" qualifiers="vararg">
- <return type="Variant">
- </return>
- <argument index="0" name="method" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="method" type="StringName" />
<description>
Calls the [code]method[/code] on the object and returns the result. This method supports a variable number of arguments, so parameters are passed as a comma separated list. Example:
[codeblocks]
@@ -119,10 +104,8 @@
</description>
</method>
<method name="call_deferred" qualifiers="vararg">
- <return type="void">
- </return>
- <argument index="0" name="method" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="method" type="StringName" />
<description>
Calls the [code]method[/code] on the object during idle time. This method supports a variable number of arguments, so parameters are passed as a comma separated list. Example:
[codeblocks]
@@ -139,12 +122,9 @@
</description>
</method>
<method name="callv">
- <return type="Variant">
- </return>
- <argument index="0" name="method" type="StringName">
- </argument>
- <argument index="1" name="arg_array" type="Array">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="method" type="StringName" />
+ <argument index="1" name="arg_array" type="Array" />
<description>
Calls the [code]method[/code] on the object and returns the result. Contrarily to [method call], this method does not support a variable number of arguments but expects all parameters to be via a single [Array].
[codeblocks]
@@ -160,23 +140,17 @@
</description>
</method>
<method name="can_translate_messages" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the object can translate strings. See [method set_message_translation] and [method tr].
</description>
</method>
<method name="connect">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="signal" type="StringName">
- </argument>
- <argument index="1" name="callable" type="Callable">
- </argument>
- <argument index="2" name="binds" type="Array" default="[]">
- </argument>
- <argument index="3" name="flags" type="int" default="0">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="signal" type="StringName" />
+ <argument index="1" name="callable" type="Callable" />
+ <argument index="2" name="binds" type="Array" default="[]" />
+ <argument index="3" name="flags" type="int" default="0" />
<description>
Connects a [code]signal[/code] to a [code]callable[/code]. Pass optional [code]binds[/code] to the call as an [Array] of parameters. These parameters will be passed to the [Callable]'s method after any parameter used in the call to [method emit_signal]. Use [code]flags[/code] to set deferred or one-shot connections. See [enum ConnectFlags] constants.
[b]Note:[/b] This method is the legacy implementation for connecting signals. The recommended modern approach is to use [method Signal.connect] and to use [method Callable.bind] to add and validate parameter binds. Both syntaxes are shown below.
@@ -315,22 +289,17 @@
</description>
</method>
<method name="disconnect">
- <return type="void">
- </return>
- <argument index="0" name="signal" type="StringName">
- </argument>
- <argument index="1" name="callable" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="signal" type="StringName" />
+ <argument index="1" name="callable" type="Callable" />
<description>
Disconnects a [code]signal[/code] from a given [code]callable[/code].
If you try to disconnect a connection that does not exist, the method will throw an error. Use [method is_connected] to ensure that the connection exists.
</description>
</method>
<method name="emit_signal" qualifiers="vararg">
- <return type="void">
- </return>
- <argument index="0" name="signal" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="signal" type="StringName" />
<description>
Emits the given [code]signal[/code]. The signal must exist, so it should be a built-in signal of this class or one of its parent classes, or a user-defined signal. This method supports a variable number of arguments, so parameters are passed as a comma separated list. Example:
[codeblocks]
@@ -346,32 +315,27 @@
</description>
</method>
<method name="free">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Deletes the object from memory. Any pre-existing reference to the freed object will become invalid, e.g. [code]is_instance_valid(object)[/code] will return [code]false[/code].
</description>
</method>
<method name="get" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="property" type="String">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="property" type="String" />
<description>
Returns the [Variant] value of the given [code]property[/code]. If the [code]property[/code] doesn't exist, this will return [code]null[/code].
[b]Note:[/b] In C#, the property name must be specified as snake_case if it is defined by a built-in Godot node. This doesn't apply to user-defined properties where you should use the same convention as in the C# source (typically PascalCase).
</description>
</method>
<method name="get_class" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the object's class as a [String].
</description>
</method>
<method name="get_incoming_connections" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an [Array] of dictionaries with information about signals that are connected to the object.
Each [Dictionary] contains three String entries:
@@ -381,214 +345,170 @@
</description>
</method>
<method name="get_indexed" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="property" type="NodePath">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="property" type="NodePath" />
<description>
Gets the object's property indexed by the given [NodePath]. The node path should be relative to the current object and can use the colon character ([code]:[/code]) to access nested properties. Examples: [code]"position:x"[/code] or [code]"material:next_pass:blend_mode"[/code].
</description>
</method>
<method name="get_instance_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the object's unique instance ID.
This ID can be saved in [EncodedObjectAsID], and can be used to retrieve the object instance with [method @GlobalScope.instance_from_id].
</description>
</method>
<method name="get_meta" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns the object's metadata entry for the given [code]name[/code].
</description>
</method>
<method name="get_meta_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns the object's metadata as a [PackedStringArray].
</description>
</method>
<method name="get_method_list" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the object's methods and their signatures as an [Array].
</description>
</method>
<method name="get_property_list" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the object's property list as an [Array] of dictionaries.
Each property's [Dictionary] contain at least [code]name: String[/code] and [code]type: int[/code] (see [enum Variant.Type]) entries. Optionally, it can also include [code]hint: int[/code] (see [enum PropertyHint]), [code]hint_string: String[/code], and [code]usage: int[/code] (see [enum PropertyUsageFlags]).
</description>
</method>
<method name="get_script" qualifiers="const">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns the object's [Script] instance, or [code]null[/code] if none is assigned.
</description>
</method>
<method name="get_signal_connection_list" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="signal" type="String">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="signal" type="String" />
<description>
Returns an [Array] of connections for the given [code]signal[/code].
</description>
</method>
<method name="get_signal_list" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the list of signals as an [Array] of dictionaries.
</description>
</method>
<method name="has_meta" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if a metadata entry is found with the given [code]name[/code].
</description>
</method>
<method name="has_method" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="method" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="method" type="StringName" />
<description>
Returns [code]true[/code] if the object contains the given [code]method[/code].
</description>
</method>
<method name="has_signal" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="signal" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="signal" type="StringName" />
<description>
Returns [code]true[/code] if the given [code]signal[/code] exists.
</description>
</method>
<method name="has_user_signal" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="signal" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="signal" type="StringName" />
<description>
Returns [code]true[/code] if the given user-defined [code]signal[/code] exists. Only signals added using [method add_user_signal] are taken into account.
</description>
</method>
<method name="is_blocking_signals" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if signal emission blocking is enabled.
</description>
</method>
<method name="is_class" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="class" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="class" type="String" />
<description>
Returns [code]true[/code] if the object inherits from the given [code]class[/code].
</description>
</method>
<method name="is_connected" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="signal" type="StringName">
- </argument>
- <argument index="1" name="callable" type="Callable">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="signal" type="StringName" />
+ <argument index="1" name="callable" type="Callable" />
<description>
Returns [code]true[/code] if a connection exists for a given [code]signal[/code] and [code]callable[/code].
</description>
</method>
<method name="is_queued_for_deletion" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the [method Node.queue_free] method was called for the object.
</description>
</method>
<method name="notification">
- <return type="void">
- </return>
- <argument index="0" name="what" type="int">
- </argument>
- <argument index="1" name="reversed" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="what" type="int" />
+ <argument index="1" name="reversed" type="bool" default="false" />
<description>
Send a given notification to the object, which will also trigger a call to the [method _notification] method of all classes that the object inherits from.
If [code]reversed[/code] is [code]true[/code], [method _notification] is called first on the object's own class, and then up to its successive parent classes. If [code]reversed[/code] is [code]false[/code], [method _notification] is called first on the highest ancestor ([Object] itself), and then down to its successive inheriting classes.
</description>
</method>
<method name="notify_property_list_changed">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Notify the editor that the property list has changed by emitting the [signal property_list_changed] signal, so that editor plugins can take the new values into account.
</description>
</method>
<method name="remove_meta">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Removes a given entry from the object's metadata. See also [method set_meta].
</description>
</method>
<method name="set">
- <return type="void">
- </return>
- <argument index="0" name="property" type="String">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="property" type="String" />
+ <argument index="1" name="value" type="Variant" />
<description>
Assigns a new value to the given property. If the [code]property[/code] does not exist, nothing will happen.
[b]Note:[/b] In C#, the property name must be specified as snake_case if it is defined by a built-in Godot node. This doesn't apply to user-defined properties where you should use the same convention as in the C# source (typically PascalCase).
</description>
</method>
<method name="set_block_signals">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
If set to [code]true[/code], signal emission is blocked.
</description>
</method>
<method name="set_deferred">
- <return type="void">
- </return>
- <argument index="0" name="property" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="property" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
Assigns a new value to the given property, after the current frame's physics step. This is equivalent to calling [method set] via [method call_deferred], i.e. [code]call_deferred("set", property, value)[/code].
[b]Note:[/b] In C#, the property name must be specified as snake_case if it is defined by a built-in Godot node. This doesn't apply to user-defined properties where you should use the same convention as in the C# source (typically PascalCase).
</description>
</method>
<method name="set_indexed">
- <return type="void">
- </return>
- <argument index="0" name="property" type="NodePath">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="property" type="NodePath" />
+ <argument index="1" name="value" type="Variant" />
<description>
Assigns a new value to the property identified by the [NodePath]. The node path should be relative to the current object and can use the colon character ([code]:[/code]) to access nested properties. Example:
[codeblocks]
@@ -608,51 +528,40 @@
</description>
</method>
<method name="set_message_translation">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
Defines whether the object can translate strings (with calls to [method tr]). Enabled by default.
</description>
</method>
<method name="set_meta">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
Adds, changes or removes a given entry in the object's metadata. Metadata are serialized and can take any [Variant] value.
To remove a given entry from the object's metadata, use [method remove_meta]. Metadata is also removed if its value is set to [code]null[/code]. This means you can also use [code]set_meta("name", null)[/code] to remove metadata for [code]"name"[/code].
</description>
</method>
<method name="set_script">
- <return type="void">
- </return>
- <argument index="0" name="script" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="script" type="Variant" />
<description>
Assigns a script to the object. Each object can have a single script assigned to it, which are used to extend its functionality.
If the object already had a script, the previous script instance will be freed and its variables and state will be lost. The new script's [method _init] method will be called.
</description>
</method>
<method name="to_string">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a [String] representing the object. If not overridden, defaults to [code]"[ClassName:RID]"[/code].
Override the method [method _to_string] to customize the [String] representation.
</description>
</method>
<method name="tr" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="message" type="StringName">
- </argument>
- <argument index="1" name="context" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="String" />
+ <argument index="0" name="message" type="StringName" />
+ <argument index="1" name="context" type="StringName" default="&quot;&quot;" />
<description>
Translates a message using translation catalogs configured in the Project Settings. An additional context could be used to specify the translation context.
Only works if message translation is enabled (which it is by default), otherwise it returns the [code]message[/code] unchanged. See [method set_message_translation].
@@ -660,16 +569,11 @@
</description>
</method>
<method name="tr_n" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="message" type="StringName">
- </argument>
- <argument index="1" name="plural_message" type="StringName">
- </argument>
- <argument index="2" name="n" type="int">
- </argument>
- <argument index="3" name="context" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="String" />
+ <argument index="0" name="message" type="StringName" />
+ <argument index="1" name="plural_message" type="StringName" />
+ <argument index="2" name="n" type="int" />
+ <argument index="3" name="context" type="StringName" default="&quot;&quot;" />
<description>
Translates a message involving plurals using translation catalogs configured in the Project Settings. An additional context could be used to specify the translation context.
Only works if message translation is enabled (which it is by default), otherwise it returns the [code]message[/code] or [code]plural_message[/code] unchanged. See [method set_message_translation].
diff --git a/doc/classes/OccluderInstance3D.xml b/doc/classes/OccluderInstance3D.xml
index 76b784d21d..150bfd9257 100644
--- a/doc/classes/OccluderInstance3D.xml
+++ b/doc/classes/OccluderInstance3D.xml
@@ -8,20 +8,15 @@
</tutorials>
<methods>
<method name="get_bake_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="layer" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="layer" type="int" />
<description>
</description>
</method>
<method name="set_bake_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="layer" type="int">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="enabled" type="bool" />
<description>
</description>
</method>
diff --git a/doc/classes/OptimizedTranslation.xml b/doc/classes/OptimizedTranslation.xml
index a5ca93c7ff..195fa28188 100644
--- a/doc/classes/OptimizedTranslation.xml
+++ b/doc/classes/OptimizedTranslation.xml
@@ -10,10 +10,8 @@
</tutorials>
<methods>
<method name="generate">
- <return type="void">
- </return>
- <argument index="0" name="from" type="Translation">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from" type="Translation" />
<description>
Generates and sets an optimized translation from the given [Translation] resource.
</description>
diff --git a/doc/classes/OptionButton.xml b/doc/classes/OptionButton.xml
index 4c03c59f8b..8aa0ad073d 100644
--- a/doc/classes/OptionButton.xml
+++ b/doc/classes/OptionButton.xml
@@ -11,195 +11,151 @@
</tutorials>
<methods>
<method name="add_icon_item">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="Texture2D">
- </argument>
- <argument index="1" name="label" type="String">
- </argument>
- <argument index="2" name="id" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="Texture2D" />
+ <argument index="1" name="label" type="String" />
+ <argument index="2" name="id" type="int" default="-1" />
<description>
Adds an item, with a [code]texture[/code] icon, text [code]label[/code] and (optionally) [code]id[/code]. If no [code]id[/code] is passed, the item index will be used as the item's ID. New items are appended at the end.
</description>
</method>
<method name="add_item">
- <return type="void">
- </return>
- <argument index="0" name="label" type="String">
- </argument>
- <argument index="1" name="id" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="label" type="String" />
+ <argument index="1" name="id" type="int" default="-1" />
<description>
Adds an item, with text [code]label[/code] and (optionally) [code]id[/code]. If no [code]id[/code] is passed, the item index will be used as the item's ID. New items are appended at the end.
</description>
</method>
<method name="add_separator">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Adds a separator to the list of items. Separators help to group items. Separator also takes up an index and is appended at the end.
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears all the items in the [OptionButton].
</description>
</method>
<method name="get_item_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of items in the OptionButton, including separators.
</description>
</method>
<method name="get_item_icon" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the icon of the item at index [code]idx[/code].
</description>
</method>
<method name="get_item_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the ID of the item at index [code]idx[/code].
</description>
</method>
<method name="get_item_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the index of the item with the given [code]id[/code].
</description>
</method>
<method name="get_item_metadata" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="idx" type="int" />
<description>
Retrieves the metadata of an item. Metadata may be any type and can be used to store extra information about an item, such as an external string ID.
</description>
</method>
<method name="get_item_text" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the text of the item at index [code]idx[/code].
</description>
</method>
<method name="get_popup" qualifiers="const">
- <return type="PopupMenu">
- </return>
+ <return type="PopupMenu" />
<description>
Returns the [PopupMenu] contained in this button.
</description>
</method>
<method name="get_selected_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the ID of the selected item, or [code]0[/code] if no item is selected.
</description>
</method>
<method name="get_selected_metadata" qualifiers="const">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Gets the metadata of the selected item. Metadata for items can be set using [method set_item_metadata].
</description>
</method>
<method name="is_item_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the item at index [code]idx[/code] is disabled.
</description>
</method>
<method name="remove_item">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Removes the item at index [code]idx[/code].
</description>
</method>
<method name="select">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Selects an item by index and makes it the current item. This will work even if the item is disabled.
</description>
</method>
<method name="set_item_disabled">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="disabled" type="bool" />
<description>
Sets whether the item at index [code]idx[/code] is disabled.
Disabled items are drawn differently in the dropdown and are not selectable by the user. If the current selected item is set as disabled, it will remain selected.
</description>
</method>
<method name="set_item_icon">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="texture" type="Texture2D" />
<description>
Sets the icon of the item at index [code]idx[/code].
</description>
</method>
<method name="set_item_id">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="id" type="int" />
<description>
Sets the ID of the item at index [code]idx[/code].
</description>
</method>
<method name="set_item_metadata">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="metadata" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="metadata" type="Variant" />
<description>
Sets the metadata of an item. Metadata may be of any type and can be used to store extra information about an item, such as an external string ID.
</description>
</method>
<method name="set_item_text">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="text" type="String" />
<description>
Sets the text of the item at index [code]idx[/code].
</description>
@@ -215,15 +171,13 @@
</members>
<signals>
<signal name="item_focused">
- <argument index="0" name="index" type="int">
- </argument>
+ <argument index="0" name="index" type="int" />
<description>
Emitted when the user navigates to an item using the [code]ui_up[/code] or [code]ui_down[/code] actions. The index of the item selected is passed as argument.
</description>
</signal>
<signal name="item_selected">
- <argument index="0" name="index" type="int">
- </argument>
+ <argument index="0" name="index" type="int" />
<description>
Emitted when the current item has been changed by the user. The index of the item selected is passed as argument.
</description>
@@ -232,64 +186,64 @@
<constants>
</constants>
<theme_items>
- <theme_item name="arrow" type="Texture2D">
+ <theme_item name="arrow" data_type="icon" type="Texture2D">
The arrow icon to be drawn on the right end of the button.
</theme_item>
- <theme_item name="arrow_margin" type="int" default="2">
+ <theme_item name="arrow_margin" data_type="constant" type="int" default="2">
The horizontal space between the arrow icon and the right edge of the button.
</theme_item>
- <theme_item name="disabled" type="StyleBox">
+ <theme_item name="disabled" data_type="style" type="StyleBox">
[StyleBox] used when the [OptionButton] is disabled (for left-to-right layouts).
</theme_item>
- <theme_item name="disabled_mirrored" type="StyleBox">
+ <theme_item name="disabled_mirrored" data_type="style" type="StyleBox">
[StyleBox] used when the [OptionButton] is disabled (for right-to-left layouts).
</theme_item>
- <theme_item name="focus" type="StyleBox">
+ <theme_item name="focus" data_type="style" type="StyleBox">
[StyleBox] used when the [OptionButton] is focused. It is displayed over the current [StyleBox], so using [StyleBoxEmpty] will just disable the focus visual effect.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
[Font] of the [OptionButton]'s text.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
Default text [Color] of the [OptionButton].
</theme_item>
- <theme_item name="font_disabled_color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
+ <theme_item name="font_disabled_color" data_type="color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
Text [Color] used when the [OptionButton] is disabled.
</theme_item>
- <theme_item name="font_hover_color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
+ <theme_item name="font_hover_color" data_type="color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
Text [Color] used when the [OptionButton] is being hovered.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the [OptionButton].
</theme_item>
- <theme_item name="font_pressed_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_pressed_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Text [Color] used when the [OptionButton] is being pressed.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the [OptionButton]'s text.
</theme_item>
- <theme_item name="hover" type="StyleBox">
+ <theme_item name="hover" data_type="style" type="StyleBox">
[StyleBox] used when the [OptionButton] is being hovered (for left-to-right layouts).
</theme_item>
- <theme_item name="hover_mirrored" type="StyleBox">
+ <theme_item name="hover_mirrored" data_type="style" type="StyleBox">
[StyleBox] used when the [OptionButton] is being hovered (for right-to-left layouts).
</theme_item>
- <theme_item name="hseparation" type="int" default="2">
+ <theme_item name="hseparation" data_type="constant" type="int" default="2">
The horizontal space between [OptionButton]'s icon and text.
</theme_item>
- <theme_item name="normal" type="StyleBox">
+ <theme_item name="normal" data_type="style" type="StyleBox">
Default [StyleBox] for the [OptionButton] (for left-to-right layouts).
</theme_item>
- <theme_item name="normal_mirrored" type="StyleBox">
+ <theme_item name="normal_mirrored" data_type="style" type="StyleBox">
Default [StyleBox] for the [OptionButton] (for right-to-left layouts).
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
- <theme_item name="pressed" type="StyleBox">
+ <theme_item name="pressed" data_type="style" type="StyleBox">
[StyleBox] used when the [OptionButton] is being pressed (for left-to-right layouts).
</theme_item>
- <theme_item name="pressed_mirrored" type="StyleBox">
+ <theme_item name="pressed_mirrored" data_type="style" type="StyleBox">
[StyleBox] used when the [OptionButton] is being pressed (for right-to-left layouts).
</theme_item>
</theme_items>
diff --git a/doc/classes/PCKPacker.xml b/doc/classes/PCKPacker.xml
index 40e8683c93..0af329983d 100644
--- a/doc/classes/PCKPacker.xml
+++ b/doc/classes/PCKPacker.xml
@@ -25,38 +25,27 @@
</tutorials>
<methods>
<method name="add_file">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="pck_path" type="String">
- </argument>
- <argument index="1" name="source_path" type="String">
- </argument>
- <argument index="2" name="encrypt" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="pck_path" type="String" />
+ <argument index="1" name="source_path" type="String" />
+ <argument index="2" name="encrypt" type="bool" default="false" />
<description>
Adds the [code]source_path[/code] file to the current PCK package at the [code]pck_path[/code] internal path (should start with [code]res://[/code]).
</description>
</method>
<method name="flush">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="verbose" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="verbose" type="bool" default="false" />
<description>
Writes the files specified using all [method add_file] calls since the last flush. If [code]verbose[/code] is [code]true[/code], a list of files added will be printed to the console for easier debugging.
</description>
</method>
<method name="pck_start">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="pck_name" type="String">
- </argument>
- <argument index="1" name="alignment" type="int" default="0">
- </argument>
- <argument index="2" name="key" type="String" default="&quot;&quot;">
- </argument>
- <argument index="3" name="encrypt_directory" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="pck_name" type="String" />
+ <argument index="1" name="alignment" type="int" default="0" />
+ <argument index="2" name="key" type="String" default="&quot;&quot;" />
+ <argument index="3" name="encrypt_directory" type="bool" default="false" />
<description>
Creates a new PCK file with the name [code]pck_name[/code]. The [code].pck[/code] file extension isn't added automatically, so it should be part of [code]pck_name[/code] (even though it's not required).
</description>
diff --git a/doc/classes/PackedByteArray.xml b/doc/classes/PackedByteArray.xml
index 0652cf0aa1..af92590da3 100644
--- a/doc/classes/PackedByteArray.xml
+++ b/doc/classes/PackedByteArray.xml
@@ -10,183 +10,138 @@
</tutorials>
<methods>
<method name="PackedByteArray" qualifiers="constructor">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Constructs an empty [PackedByteArray].
</description>
</method>
<method name="PackedByteArray" qualifiers="constructor">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="from" type="PackedByteArray">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="from" type="PackedByteArray" />
<description>
Constructs a [PackedByteArray] as a copy of the given [PackedByteArray].
</description>
</method>
<method name="PackedByteArray" qualifiers="constructor">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="from" type="Array">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="from" type="Array" />
<description>
Constructs a new [PackedByteArray]. Optionally, you can pass in a generic [Array] that will be converted.
</description>
</method>
<method name="append">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="int" />
<description>
Appends an element at the end of the array (alias of [method push_back]).
</description>
</method>
<method name="append_array">
- <return type="void">
- </return>
- <argument index="0" name="array" type="PackedByteArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="array" type="PackedByteArray" />
<description>
Appends a [PackedByteArray] at the end of this array.
</description>
</method>
<method name="compress" qualifiers="const">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="compression_mode" type="int" default="0">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="compression_mode" type="int" default="0" />
<description>
Returns a new [PackedByteArray] with the data compressed. Set the compression mode using one of [enum File.CompressionMode]'s constants.
</description>
</method>
<method name="decode_double" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="byte_offset" type="int" />
<description>
</description>
</method>
<method name="decode_float" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="byte_offset" type="int" />
<description>
</description>
</method>
<method name="decode_half" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="byte_offset" type="int" />
<description>
</description>
</method>
<method name="decode_s16" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="byte_offset" type="int" />
<description>
</description>
</method>
<method name="decode_s32" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="byte_offset" type="int" />
<description>
</description>
</method>
<method name="decode_s64" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="byte_offset" type="int" />
<description>
</description>
</method>
<method name="decode_s8" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="byte_offset" type="int" />
<description>
</description>
</method>
<method name="decode_u16" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="byte_offset" type="int" />
<description>
</description>
</method>
<method name="decode_u32" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="byte_offset" type="int" />
<description>
</description>
</method>
<method name="decode_u64" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="byte_offset" type="int" />
<description>
</description>
</method>
<method name="decode_u8" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="byte_offset" type="int" />
<description>
</description>
</method>
<method name="decode_var" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="allow_objects" type="bool" default="false">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="allow_objects" type="bool" default="false" />
<description>
</description>
</method>
<method name="decode_var_size" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="allow_objects" type="bool" default="false">
- </argument>
+ <return type="int" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="allow_objects" type="bool" default="false" />
<description>
</description>
</method>
<method name="decompress" qualifiers="const">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="buffer_size" type="int">
- </argument>
- <argument index="1" name="compression_mode" type="int" default="0">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="buffer_size" type="int" />
+ <argument index="1" name="compression_mode" type="int" default="0" />
<description>
Returns a new [PackedByteArray] with the data decompressed. Set [code]buffer_size[/code] to the size of the uncompressed data. Set the compression mode using one of [enum File.CompressionMode]'s constants.
</description>
</method>
<method name="decompress_dynamic" qualifiers="const">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="max_output_size" type="int">
- </argument>
- <argument index="1" name="compression_mode" type="int" default="0">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="max_output_size" type="int" />
+ <argument index="1" name="compression_mode" type="int" default="0" />
<description>
Returns a new [PackedByteArray] with the data decompressed. Set the compression mode using one of [enum File.CompressionMode]'s constants. [b]This method only accepts gzip and deflate compression modes.[/b]
This method is potentially slower than [code]decompress[/code], as it may have to re-allocate its output buffer multiple times while decompressing, whereas [code]decompress[/code] knows it's output buffer size from the beginning.
@@ -194,193 +149,143 @@
</description>
</method>
<method name="duplicate">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Creates a copy of the array, and returns it.
</description>
</method>
<method name="encode_double">
- <return type="void">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="float" />
<description>
</description>
</method>
<method name="encode_float">
- <return type="void">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="float" />
<description>
</description>
</method>
<method name="encode_half">
- <return type="void">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="float" />
<description>
</description>
</method>
<method name="encode_s16">
- <return type="void">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
</description>
</method>
<method name="encode_s32">
- <return type="void">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
</description>
</method>
<method name="encode_s64">
- <return type="void">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
</description>
</method>
<method name="encode_s8">
- <return type="void">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
</description>
</method>
<method name="encode_u16">
- <return type="void">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
</description>
</method>
<method name="encode_u32">
- <return type="void">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
</description>
</method>
<method name="encode_u64">
- <return type="void">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
</description>
</method>
<method name="encode_u8">
- <return type="void">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
</description>
</method>
<method name="encode_var">
- <return type="int">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
- <argument index="2" name="allow_objects" type="bool" default="false">
- </argument>
+ <return type="int" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="value" type="Variant" />
+ <argument index="2" name="allow_objects" type="bool" default="false" />
<description>
</description>
</method>
<method name="fill">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.
</description>
</method>
<method name="get_string_from_ascii" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Converts ASCII/Latin-1 encoded array to [String]. Fast alternative to [method get_string_from_utf8] if the content is ASCII/Latin-1 only. Unlike the UTF-8 function this function maps every byte to a character in the array. Multibyte sequences will not be interpreted correctly. For parsing user input always use [method get_string_from_utf8].
</description>
</method>
<method name="get_string_from_utf16" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Converts UTF-16 encoded array to [String]. If the BOM is missing, system endianness is assumed. Returns empty string if source array is not valid UTF-16 string.
</description>
</method>
<method name="get_string_from_utf32" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Converts UTF-32 encoded array to [String]. System endianness is assumed. Returns empty string if source array is not valid UTF-32 string.
</description>
</method>
<method name="get_string_from_utf8" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Converts UTF-8 encoded array to [String]. Slower than [method get_string_from_ascii] but supports UTF-8 encoded data. Use this function if you are unsure about the source of the data. For user input this function should always be preferred. Returns empty string if source array is not valid UTF-8 string.
</description>
</method>
<method name="has">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="int" />
<description>
Returns [code]true[/code] if the array contains [code]value[/code].
</description>
</method>
<method name="has_encoded_var" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="byte_offset" type="int">
- </argument>
- <argument index="1" name="allow_objects" type="bool" default="false">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="byte_offset" type="int" />
+ <argument index="1" name="allow_objects" type="bool" default="false" />
<description>
</description>
</method>
<method name="hex_encode" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a hexadecimal representation of this array as a [String].
[codeblocks]
@@ -396,125 +301,130 @@
</description>
</method>
<method name="insert">
- <return type="int">
- </return>
- <argument index="0" name="at_index" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="at_index" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
Inserts a new element at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]).
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the array is empty.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedByteArray">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedByteArray" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="right" type="PackedByteArray">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="right" type="PackedByteArray" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedByteArray">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedByteArray" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="push_back">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="int" />
<description>
Appends an element at the end of the array.
</description>
</method>
<method name="remove">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an element from the array by index.
</description>
</method>
<method name="resize">
- <return type="int">
- </return>
- <argument index="0" name="new_size" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="new_size" type="int" />
<description>
Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size.
</description>
</method>
<method name="reverse">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Reverses the order of the elements in the array.
</description>
</method>
<method name="set">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
Changes the byte at the given index.
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the size of the array.
</description>
</method>
<method name="sort">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sorts the elements of the array in ascending order.
</description>
</method>
<method name="subarray" qualifiers="const">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
Returns the slice of the [PackedByteArray] between indices (inclusive) as a new [PackedByteArray]. Any negative index is considered to be from the end of the array.
</description>
</method>
+ <method name="to_float32_array" qualifiers="const">
+ <return type="PackedFloat32Array" />
+ <description>
+ Returns a copy of the data converted to a [PackedFloat32Array], where each block of 4 bytes has been converted to a 32-bit float (C++ [code]float[/code]).
+ The size of the new array will be [code]byte_array.size() / 4[/code].
+ If the original data can't be converted to 32-bit floats, the resulting data is undefined.
+ </description>
+ </method>
+ <method name="to_float64_array" qualifiers="const">
+ <return type="PackedFloat64Array" />
+ <description>
+ Returns a copy of the data converted to a [PackedFloat64Array], where each block of 8 bytes has been converted to a 64-bit float (C++ [code]double[/code], Godot [float]).
+ The size of the new array will be [code]byte_array.size() / 8[/code].
+ If the original data can't be converted to 64-bit floats, the resulting data is undefined.
+ </description>
+ </method>
+ <method name="to_int32_array" qualifiers="const">
+ <return type="PackedInt32Array" />
+ <description>
+ Returns a copy of the data converted to a [PackedInt32Array], where each block of 4 bytes has been converted to a signed 32-bit integer (C++ [code]int32_t[/code]).
+ The size of the new array will be [code]byte_array.size() / 4[/code].
+ If the original data can't be converted to signed 32-bit integers, the resulting data is undefined.
+ </description>
+ </method>
+ <method name="to_int64_array" qualifiers="const">
+ <return type="PackedInt64Array" />
+ <description>
+ Returns a copy of the data converted to a [PackedInt64Array], where each block of 4 bytes has been converted to a signed 64-bit integer (C++ [code]int64_t[/code], Godot [int]).
+ The size of the new array will be [code]byte_array.size() / 8[/code].
+ If the original data can't be converted to signed 64-bit integers, the resulting data is undefined.
+ </description>
+ </method>
</methods>
<constants>
</constants>
diff --git a/doc/classes/PackedColorArray.xml b/doc/classes/PackedColorArray.xml
index 19cfcd7c87..a5a5703bfa 100644
--- a/doc/classes/PackedColorArray.xml
+++ b/doc/classes/PackedColorArray.xml
@@ -10,195 +10,153 @@
</tutorials>
<methods>
<method name="PackedColorArray" qualifiers="constructor">
- <return type="PackedColorArray">
- </return>
+ <return type="PackedColorArray" />
<description>
Constructs an empty [PackedColorArray].
</description>
</method>
<method name="PackedColorArray" qualifiers="constructor">
- <return type="PackedColorArray">
- </return>
- <argument index="0" name="from" type="PackedColorArray">
- </argument>
+ <return type="PackedColorArray" />
+ <argument index="0" name="from" type="PackedColorArray" />
<description>
Constructs a [PackedColorArray] as a copy of the given [PackedColorArray].
</description>
</method>
<method name="PackedColorArray" qualifiers="constructor">
- <return type="PackedColorArray">
- </return>
- <argument index="0" name="from" type="Array">
- </argument>
+ <return type="PackedColorArray" />
+ <argument index="0" name="from" type="Array" />
<description>
Constructs a new [PackedColorArray]. Optionally, you can pass in a generic [Array] that will be converted.
</description>
</method>
<method name="append">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="Color">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="Color" />
<description>
Appends an element at the end of the array (alias of [method push_back]).
</description>
</method>
<method name="append_array">
- <return type="void">
- </return>
- <argument index="0" name="array" type="PackedColorArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="array" type="PackedColorArray" />
<description>
Appends a [PackedColorArray] at the end of this array.
</description>
</method>
<method name="duplicate">
- <return type="PackedColorArray">
- </return>
+ <return type="PackedColorArray" />
<description>
Creates a copy of the array, and returns it.
</description>
</method>
<method name="fill">
- <return type="void">
- </return>
- <argument index="0" name="value" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="Color" />
<description>
Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.
</description>
</method>
<method name="has">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="Color">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="Color" />
<description>
Returns [code]true[/code] if the array contains [code]value[/code].
</description>
</method>
<method name="insert">
- <return type="int">
- </return>
- <argument index="0" name="at_index" type="int">
- </argument>
- <argument index="1" name="value" type="Color">
- </argument>
+ <return type="int" />
+ <argument index="0" name="at_index" type="int" />
+ <argument index="1" name="value" type="Color" />
<description>
Inserts a new element at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]).
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the array is empty.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedColorArray">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedColorArray" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="PackedColorArray">
- </return>
- <argument index="0" name="right" type="PackedColorArray">
- </argument>
+ <return type="PackedColorArray" />
+ <argument index="0" name="right" type="PackedColorArray" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedColorArray">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedColorArray" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="Color">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="push_back">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="Color">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="Color" />
<description>
Appends a value to the array.
</description>
</method>
<method name="remove">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an element from the array by index.
</description>
</method>
<method name="resize">
- <return type="int">
- </return>
- <argument index="0" name="new_size" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="new_size" type="int" />
<description>
Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size.
</description>
</method>
<method name="reverse">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Reverses the order of the elements in the array.
</description>
</method>
<method name="set">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="value" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="value" type="Color" />
<description>
Changes the [Color] at the given index.
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the size of the array.
</description>
</method>
<method name="sort">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sorts the elements of the array in ascending order.
</description>
</method>
<method name="subarray" qualifiers="const">
- <return type="PackedColorArray">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="PackedColorArray" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
</description>
</method>
<method name="to_byte_array" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
</description>
</method>
diff --git a/doc/classes/PackedDataContainer.xml b/doc/classes/PackedDataContainer.xml
index f72db514f0..0a765fcc75 100644
--- a/doc/classes/PackedDataContainer.xml
+++ b/doc/classes/PackedDataContainer.xml
@@ -8,16 +8,13 @@
</tutorials>
<methods>
<method name="pack">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="value" type="Variant" />
<description>
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
diff --git a/doc/classes/PackedDataContainerRef.xml b/doc/classes/PackedDataContainerRef.xml
index bfd5a6f1c1..5e42079b97 100644
--- a/doc/classes/PackedDataContainerRef.xml
+++ b/doc/classes/PackedDataContainerRef.xml
@@ -9,8 +9,7 @@
</tutorials>
<methods>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
diff --git a/doc/classes/PackedFloat32Array.xml b/doc/classes/PackedFloat32Array.xml
index ab97c9a695..9e7dd8f99e 100644
--- a/doc/classes/PackedFloat32Array.xml
+++ b/doc/classes/PackedFloat32Array.xml
@@ -11,196 +11,156 @@
</tutorials>
<methods>
<method name="PackedFloat32Array" qualifiers="constructor">
- <return type="PackedFloat32Array">
- </return>
+ <return type="PackedFloat32Array" />
<description>
Constructs an empty [PackedFloat32Array].
</description>
</method>
<method name="PackedFloat32Array" qualifiers="constructor">
- <return type="PackedFloat32Array">
- </return>
- <argument index="0" name="from" type="PackedFloat32Array">
- </argument>
+ <return type="PackedFloat32Array" />
+ <argument index="0" name="from" type="PackedFloat32Array" />
<description>
Constructs a [PackedFloat32Array] as a copy of the given [PackedFloat32Array].
</description>
</method>
<method name="PackedFloat32Array" qualifiers="constructor">
- <return type="PackedFloat32Array">
- </return>
- <argument index="0" name="from" type="Array">
- </argument>
+ <return type="PackedFloat32Array" />
+ <argument index="0" name="from" type="Array" />
<description>
Constructs a new [PackedFloat32Array]. Optionally, you can pass in a generic [Array] that will be converted.
</description>
</method>
<method name="append">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="float" />
<description>
Appends an element at the end of the array (alias of [method push_back]).
</description>
</method>
<method name="append_array">
- <return type="void">
- </return>
- <argument index="0" name="array" type="PackedFloat32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="array" type="PackedFloat32Array" />
<description>
Appends a [PackedFloat32Array] at the end of this array.
</description>
</method>
<method name="duplicate">
- <return type="PackedFloat32Array">
- </return>
+ <return type="PackedFloat32Array" />
<description>
Creates a copy of the array, and returns it.
</description>
</method>
<method name="fill">
- <return type="void">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="float" />
<description>
Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.
</description>
</method>
<method name="has">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="float" />
<description>
Returns [code]true[/code] if the array contains [code]value[/code].
</description>
</method>
<method name="insert">
- <return type="int">
- </return>
- <argument index="0" name="at_index" type="int">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="int" />
+ <argument index="0" name="at_index" type="int" />
+ <argument index="1" name="value" type="float" />
<description>
Inserts a new element at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]).
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the array is empty.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedFloat32Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedFloat32Array" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="PackedFloat32Array">
- </return>
- <argument index="0" name="right" type="PackedFloat32Array">
- </argument>
+ <return type="PackedFloat32Array" />
+ <argument index="0" name="right" type="PackedFloat32Array" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedFloat32Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedFloat32Array" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="push_back">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="float" />
<description>
Appends an element at the end of the array.
</description>
</method>
<method name="remove">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an element from the array by index.
</description>
</method>
<method name="resize">
- <return type="int">
- </return>
- <argument index="0" name="new_size" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="new_size" type="int" />
<description>
Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size.
</description>
</method>
<method name="reverse">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Reverses the order of the elements in the array.
</description>
</method>
<method name="set">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="value" type="float" />
<description>
Changes the float at the given index.
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the size of the array.
</description>
</method>
<method name="sort">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sorts the elements of the array in ascending order.
</description>
</method>
<method name="subarray" qualifiers="const">
- <return type="PackedFloat32Array">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="PackedFloat32Array" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
</description>
</method>
<method name="to_byte_array" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
+ Returns a copy of the data converted to a [PackedByteArray], where each element have been encoded as 4 bytes.
+ The size of the new array will be [code]float32_array.size() * 4[/code].
</description>
</method>
</methods>
diff --git a/doc/classes/PackedFloat64Array.xml b/doc/classes/PackedFloat64Array.xml
index ad20801b01..ff4cf0edf8 100644
--- a/doc/classes/PackedFloat64Array.xml
+++ b/doc/classes/PackedFloat64Array.xml
@@ -11,196 +11,156 @@
</tutorials>
<methods>
<method name="PackedFloat64Array" qualifiers="constructor">
- <return type="PackedFloat64Array">
- </return>
+ <return type="PackedFloat64Array" />
<description>
Constructs an empty [PackedFloat64Array].
</description>
</method>
<method name="PackedFloat64Array" qualifiers="constructor">
- <return type="PackedFloat64Array">
- </return>
- <argument index="0" name="from" type="PackedFloat64Array">
- </argument>
+ <return type="PackedFloat64Array" />
+ <argument index="0" name="from" type="PackedFloat64Array" />
<description>
Constructs a [PackedFloat64Array] as a copy of the given [PackedFloat64Array].
</description>
</method>
<method name="PackedFloat64Array" qualifiers="constructor">
- <return type="PackedFloat64Array">
- </return>
- <argument index="0" name="from" type="Array">
- </argument>
+ <return type="PackedFloat64Array" />
+ <argument index="0" name="from" type="Array" />
<description>
Constructs a new [PackedFloat64Array]. Optionally, you can pass in a generic [Array] that will be converted.
</description>
</method>
<method name="append">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="float" />
<description>
Appends an element at the end of the array (alias of [method push_back]).
</description>
</method>
<method name="append_array">
- <return type="void">
- </return>
- <argument index="0" name="array" type="PackedFloat64Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="array" type="PackedFloat64Array" />
<description>
Appends a [PackedFloat64Array] at the end of this array.
</description>
</method>
<method name="duplicate">
- <return type="PackedFloat64Array">
- </return>
+ <return type="PackedFloat64Array" />
<description>
Creates a copy of the array, and returns it.
</description>
</method>
<method name="fill">
- <return type="void">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="float" />
<description>
Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.
</description>
</method>
<method name="has">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="float" />
<description>
Returns [code]true[/code] if the array contains [code]value[/code].
</description>
</method>
<method name="insert">
- <return type="int">
- </return>
- <argument index="0" name="at_index" type="int">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="int" />
+ <argument index="0" name="at_index" type="int" />
+ <argument index="1" name="value" type="float" />
<description>
Inserts a new element at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]).
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the array is empty.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedFloat64Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedFloat64Array" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="PackedFloat64Array">
- </return>
- <argument index="0" name="right" type="PackedFloat64Array">
- </argument>
+ <return type="PackedFloat64Array" />
+ <argument index="0" name="right" type="PackedFloat64Array" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedFloat64Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedFloat64Array" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="push_back">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="float" />
<description>
Appends an element at the end of the array.
</description>
</method>
<method name="remove">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an element from the array by index.
</description>
</method>
<method name="resize">
- <return type="int">
- </return>
- <argument index="0" name="new_size" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="new_size" type="int" />
<description>
Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size.
</description>
</method>
<method name="reverse">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Reverses the order of the elements in the array.
</description>
</method>
<method name="set">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="value" type="float" />
<description>
Changes the float at the given index.
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the size of the array.
</description>
</method>
<method name="sort">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sorts the elements of the array in ascending order.
</description>
</method>
<method name="subarray" qualifiers="const">
- <return type="PackedFloat64Array">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="PackedFloat64Array" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
</description>
</method>
<method name="to_byte_array" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
+ Returns a copy of the data converted to a [PackedByteArray], where each element have been encoded as 8 bytes.
+ The size of the new array will be [code]float64_array.size() * 8[/code].
</description>
</method>
</methods>
diff --git a/doc/classes/PackedInt32Array.xml b/doc/classes/PackedInt32Array.xml
index ff4729082e..2e9716b665 100644
--- a/doc/classes/PackedInt32Array.xml
+++ b/doc/classes/PackedInt32Array.xml
@@ -11,196 +11,156 @@
</tutorials>
<methods>
<method name="PackedInt32Array" qualifiers="constructor">
- <return type="PackedInt32Array">
- </return>
+ <return type="PackedInt32Array" />
<description>
Constructs an empty [PackedInt32Array].
</description>
</method>
<method name="PackedInt32Array" qualifiers="constructor">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="from" type="PackedInt32Array">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="from" type="PackedInt32Array" />
<description>
Constructs a [PackedInt32Array] as a copy of the given [PackedInt32Array].
</description>
</method>
<method name="PackedInt32Array" qualifiers="constructor">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="from" type="Array">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="from" type="Array" />
<description>
Constructs a new [PackedInt32Array]. Optionally, you can pass in a generic [Array] that will be converted.
</description>
</method>
<method name="append">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="int" />
<description>
Appends an element at the end of the array (alias of [method push_back]).
</description>
</method>
<method name="append_array">
- <return type="void">
- </return>
- <argument index="0" name="array" type="PackedInt32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="array" type="PackedInt32Array" />
<description>
Appends a [PackedInt32Array] at the end of this array.
</description>
</method>
<method name="duplicate">
- <return type="PackedInt32Array">
- </return>
+ <return type="PackedInt32Array" />
<description>
Creates a copy of the array, and returns it.
</description>
</method>
<method name="fill">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.
</description>
</method>
<method name="has">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="int" />
<description>
Returns [code]true[/code] if the array contains [code]value[/code].
</description>
</method>
<method name="insert">
- <return type="int">
- </return>
- <argument index="0" name="at_index" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="at_index" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
Inserts a new integer at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]).
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the array is empty.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedInt32Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedInt32Array" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="right" type="PackedInt32Array">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="right" type="PackedInt32Array" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedInt32Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedInt32Array" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="push_back">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="int" />
<description>
Appends a value to the array.
</description>
</method>
<method name="remove">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an element from the array by index.
</description>
</method>
<method name="resize">
- <return type="int">
- </return>
- <argument index="0" name="new_size" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="new_size" type="int" />
<description>
Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size.
</description>
</method>
<method name="reverse">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Reverses the order of the elements in the array.
</description>
</method>
<method name="set">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
Changes the integer at the given index.
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the array size.
</description>
</method>
<method name="sort">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sorts the elements of the array in ascending order.
</description>
</method>
<method name="subarray" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
</description>
</method>
<method name="to_byte_array" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
+ Returns a copy of the data converted to a [PackedByteArray], where each element have been encoded as 4 bytes.
+ The size of the new array will be [code]int32_array.size() * 4[/code].
</description>
</method>
</methods>
diff --git a/doc/classes/PackedInt64Array.xml b/doc/classes/PackedInt64Array.xml
index 195b12b129..1e7fff3bc6 100644
--- a/doc/classes/PackedInt64Array.xml
+++ b/doc/classes/PackedInt64Array.xml
@@ -11,196 +11,156 @@
</tutorials>
<methods>
<method name="PackedInt64Array" qualifiers="constructor">
- <return type="PackedInt64Array">
- </return>
+ <return type="PackedInt64Array" />
<description>
Constructs an empty [PackedInt64Array].
</description>
</method>
<method name="PackedInt64Array" qualifiers="constructor">
- <return type="PackedInt64Array">
- </return>
- <argument index="0" name="from" type="PackedInt64Array">
- </argument>
+ <return type="PackedInt64Array" />
+ <argument index="0" name="from" type="PackedInt64Array" />
<description>
Constructs a [PackedInt64Array] as a copy of the given [PackedInt64Array].
</description>
</method>
<method name="PackedInt64Array" qualifiers="constructor">
- <return type="PackedInt64Array">
- </return>
- <argument index="0" name="from" type="Array">
- </argument>
+ <return type="PackedInt64Array" />
+ <argument index="0" name="from" type="Array" />
<description>
Constructs a new [PackedInt64Array]. Optionally, you can pass in a generic [Array] that will be converted.
</description>
</method>
<method name="append">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="int" />
<description>
Appends an element at the end of the array (alias of [method push_back]).
</description>
</method>
<method name="append_array">
- <return type="void">
- </return>
- <argument index="0" name="array" type="PackedInt64Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="array" type="PackedInt64Array" />
<description>
Appends a [PackedInt64Array] at the end of this array.
</description>
</method>
<method name="duplicate">
- <return type="PackedInt64Array">
- </return>
+ <return type="PackedInt64Array" />
<description>
Creates a copy of the array, and returns it.
</description>
</method>
<method name="fill">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.
</description>
</method>
<method name="has">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="int" />
<description>
Returns [code]true[/code] if the array contains [code]value[/code].
</description>
</method>
<method name="insert">
- <return type="int">
- </return>
- <argument index="0" name="at_index" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="at_index" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
Inserts a new integer at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]).
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the array is empty.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedInt64Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedInt64Array" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="PackedInt64Array">
- </return>
- <argument index="0" name="right" type="PackedInt64Array">
- </argument>
+ <return type="PackedInt64Array" />
+ <argument index="0" name="right" type="PackedInt64Array" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedInt64Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedInt64Array" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="push_back">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="int" />
<description>
Appends a value to the array.
</description>
</method>
<method name="remove">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an element from the array by index.
</description>
</method>
<method name="resize">
- <return type="int">
- </return>
- <argument index="0" name="new_size" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="new_size" type="int" />
<description>
Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size.
</description>
</method>
<method name="reverse">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Reverses the order of the elements in the array.
</description>
</method>
<method name="set">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="value" type="int" />
<description>
Changes the integer at the given index.
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the array size.
</description>
</method>
<method name="sort">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sorts the elements of the array in ascending order.
</description>
</method>
<method name="subarray" qualifiers="const">
- <return type="PackedInt64Array">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="PackedInt64Array" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
</description>
</method>
<method name="to_byte_array" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
+ Returns a copy of the data converted to a [PackedByteArray], where each element have been encoded as 8 bytes.
+ The size of the new array will be [code]int64_array.size() * 8[/code].
</description>
</method>
</methods>
diff --git a/doc/classes/PackedScene.xml b/doc/classes/PackedScene.xml
index f39cae8be5..1374496b52 100644
--- a/doc/classes/PackedScene.xml
+++ b/doc/classes/PackedScene.xml
@@ -77,33 +77,27 @@
</tutorials>
<methods>
<method name="can_instantiate" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the scene file has nodes.
</description>
</method>
<method name="get_state">
- <return type="SceneState">
- </return>
+ <return type="SceneState" />
<description>
Returns the [code]SceneState[/code] representing the scene file contents.
</description>
</method>
<method name="instantiate" qualifiers="const">
- <return type="Node">
- </return>
- <argument index="0" name="edit_state" type="int" enum="PackedScene.GenEditState" default="0">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="edit_state" type="int" enum="PackedScene.GenEditState" default="0" />
<description>
Instantiates the scene's node hierarchy. Triggers child scene instantiation(s). Triggers a [constant Node.NOTIFICATION_INSTANCED] notification on the root node.
</description>
</method>
<method name="pack">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="Node">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="Node" />
<description>
Pack will ignore any sub-nodes not owned by given node. See [member Node.owner].
</description>
diff --git a/doc/classes/PackedStringArray.xml b/doc/classes/PackedStringArray.xml
index 22458832da..04113d4a2e 100644
--- a/doc/classes/PackedStringArray.xml
+++ b/doc/classes/PackedStringArray.xml
@@ -11,195 +11,153 @@
</tutorials>
<methods>
<method name="PackedStringArray" qualifiers="constructor">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Constructs an empty [PackedStringArray].
</description>
</method>
<method name="PackedStringArray" qualifiers="constructor">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="from" type="PackedStringArray">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="from" type="PackedStringArray" />
<description>
Constructs a [PackedStringArray] as a copy of the given [PackedStringArray].
</description>
</method>
<method name="PackedStringArray" qualifiers="constructor">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="from" type="Array">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="from" type="Array" />
<description>
Constructs a new [PackedStringArray]. Optionally, you can pass in a generic [Array] that will be converted.
</description>
</method>
<method name="append">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="String" />
<description>
Appends an element at the end of the array (alias of [method push_back]).
</description>
</method>
<method name="append_array">
- <return type="void">
- </return>
- <argument index="0" name="array" type="PackedStringArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="array" type="PackedStringArray" />
<description>
Appends a [PackedStringArray] at the end of this array.
</description>
</method>
<method name="duplicate">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Creates a copy of the array, and returns it.
</description>
</method>
<method name="fill">
- <return type="void">
- </return>
- <argument index="0" name="value" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="String" />
<description>
Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.
</description>
</method>
<method name="has">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="String" />
<description>
Returns [code]true[/code] if the array contains [code]value[/code].
</description>
</method>
<method name="insert">
- <return type="int">
- </return>
- <argument index="0" name="at_index" type="int">
- </argument>
- <argument index="1" name="value" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="at_index" type="int" />
+ <argument index="1" name="value" type="String" />
<description>
Inserts a new element at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]).
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the array is empty.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedStringArray">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedStringArray" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="right" type="PackedStringArray">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="right" type="PackedStringArray" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedStringArray">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedStringArray" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="String">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="push_back">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="String" />
<description>
Appends a string element at end of the array.
</description>
</method>
<method name="remove">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an element from the array by index.
</description>
</method>
<method name="resize">
- <return type="int">
- </return>
- <argument index="0" name="new_size" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="new_size" type="int" />
<description>
Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size.
</description>
</method>
<method name="reverse">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Reverses the order of the elements in the array.
</description>
</method>
<method name="set">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="value" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="value" type="String" />
<description>
Changes the [String] at the given index.
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the size of the array.
</description>
</method>
<method name="sort">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sorts the elements of the array in ascending order.
</description>
</method>
<method name="subarray" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
</description>
</method>
<method name="to_byte_array" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
</description>
</method>
diff --git a/doc/classes/PackedVector2Array.xml b/doc/classes/PackedVector2Array.xml
index 6c8791f988..76d3aff20e 100644
--- a/doc/classes/PackedVector2Array.xml
+++ b/doc/classes/PackedVector2Array.xml
@@ -11,203 +11,159 @@
</tutorials>
<methods>
<method name="PackedVector2Array" qualifiers="constructor">
- <return type="PackedVector2Array">
- </return>
+ <return type="PackedVector2Array" />
<description>
Constructs an empty [PackedVector2Array].
</description>
</method>
<method name="PackedVector2Array" qualifiers="constructor">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="from" type="PackedVector2Array">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="from" type="PackedVector2Array" />
<description>
Constructs a [PackedVector2Array] as a copy of the given [PackedVector2Array].
</description>
</method>
<method name="PackedVector2Array" qualifiers="constructor">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="from" type="Array">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="from" type="Array" />
<description>
Constructs a new [PackedVector2Array]. Optionally, you can pass in a generic [Array] that will be converted.
</description>
</method>
<method name="append">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="Vector2" />
<description>
Appends an element at the end of the array (alias of [method push_back]).
</description>
</method>
<method name="append_array">
- <return type="void">
- </return>
- <argument index="0" name="array" type="PackedVector2Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="array" type="PackedVector2Array" />
<description>
Appends a [PackedVector2Array] at the end of this array.
</description>
</method>
<method name="duplicate">
- <return type="PackedVector2Array">
- </return>
+ <return type="PackedVector2Array" />
<description>
Creates a copy of the array, and returns it.
</description>
</method>
<method name="fill">
- <return type="void">
- </return>
- <argument index="0" name="value" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="Vector2" />
<description>
Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.
</description>
</method>
<method name="has">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="Vector2" />
<description>
Returns [code]true[/code] if the array contains [code]value[/code].
</description>
</method>
<method name="insert">
- <return type="int">
- </return>
- <argument index="0" name="at_index" type="int">
- </argument>
- <argument index="1" name="value" type="Vector2">
- </argument>
+ <return type="int" />
+ <argument index="0" name="at_index" type="int" />
+ <argument index="1" name="value" type="Vector2" />
<description>
Inserts a new element at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]).
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the array is empty.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedVector2Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedVector2Array" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="right" type="Transform2D">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="right" type="Transform2D" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="right" type="PackedVector2Array">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="right" type="PackedVector2Array" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedVector2Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedVector2Array" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="push_back">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="Vector2" />
<description>
Inserts a [Vector2] at the end.
</description>
</method>
<method name="remove">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an element from the array by index.
</description>
</method>
<method name="resize">
- <return type="int">
- </return>
- <argument index="0" name="new_size" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="new_size" type="int" />
<description>
Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size.
</description>
</method>
<method name="reverse">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Reverses the order of the elements in the array.
</description>
</method>
<method name="set">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="value" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="value" type="Vector2" />
<description>
Changes the [Vector2] at the given index.
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the size of the array.
</description>
</method>
<method name="sort">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sorts the elements of the array in ascending order.
</description>
</method>
<method name="subarray" qualifiers="const">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
</description>
</method>
<method name="to_byte_array" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
</description>
</method>
diff --git a/doc/classes/PackedVector3Array.xml b/doc/classes/PackedVector3Array.xml
index 00ded39082..1a35f71619 100644
--- a/doc/classes/PackedVector3Array.xml
+++ b/doc/classes/PackedVector3Array.xml
@@ -10,203 +10,159 @@
</tutorials>
<methods>
<method name="PackedVector3Array" qualifiers="constructor">
- <return type="PackedVector3Array">
- </return>
+ <return type="PackedVector3Array" />
<description>
Constructs an empty [PackedVector3Array].
</description>
</method>
<method name="PackedVector3Array" qualifiers="constructor">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="from" type="PackedVector3Array">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="from" type="PackedVector3Array" />
<description>
Constructs a [PackedVector3Array] as a copy of the given [PackedVector3Array].
</description>
</method>
<method name="PackedVector3Array" qualifiers="constructor">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="from" type="Array">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="from" type="Array" />
<description>
Constructs a new [PackedVector3Array]. Optionally, you can pass in a generic [Array] that will be converted.
</description>
</method>
<method name="append">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="Vector3" />
<description>
Appends an element at the end of the array (alias of [method push_back]).
</description>
</method>
<method name="append_array">
- <return type="void">
- </return>
- <argument index="0" name="array" type="PackedVector3Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="array" type="PackedVector3Array" />
<description>
Appends a [PackedVector3Array] at the end of this array.
</description>
</method>
<method name="duplicate">
- <return type="PackedVector3Array">
- </return>
+ <return type="PackedVector3Array" />
<description>
Creates a copy of the array, and returns it.
</description>
</method>
<method name="fill">
- <return type="void">
- </return>
- <argument index="0" name="value" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="Vector3" />
<description>
Assigns the given value to all elements in the array. This can typically be used together with [method resize] to create an array with a given size and initialized elements.
</description>
</method>
<method name="has">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="Vector3" />
<description>
Returns [code]true[/code] if the array contains [code]value[/code].
</description>
</method>
<method name="insert">
- <return type="int">
- </return>
- <argument index="0" name="at_index" type="int">
- </argument>
- <argument index="1" name="value" type="Vector3">
- </argument>
+ <return type="int" />
+ <argument index="0" name="at_index" type="int" />
+ <argument index="1" name="value" type="Vector3" />
<description>
Inserts a new element at a given position in the array. The position must be valid, or at the end of the array ([code]idx == size()[/code]).
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the array is empty.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedVector3Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedVector3Array" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="right" type="Transform3D">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="right" type="Transform3D" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="right" type="PackedVector3Array">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="right" type="PackedVector3Array" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="PackedVector3Array">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="PackedVector3Array" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="push_back">
- <return type="bool">
- </return>
- <argument index="0" name="value" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="value" type="Vector3" />
<description>
Inserts a [Vector3] at the end.
</description>
</method>
<method name="remove">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an element from the array by index.
</description>
</method>
<method name="resize">
- <return type="int">
- </return>
- <argument index="0" name="new_size" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="new_size" type="int" />
<description>
Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size.
</description>
</method>
<method name="reverse">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Reverses the order of the elements in the array.
</description>
</method>
<method name="set">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="value" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="value" type="Vector3" />
<description>
Changes the [Vector3] at the given index.
</description>
</method>
<method name="size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the size of the array.
</description>
</method>
<method name="sort">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sorts the elements of the array in ascending order.
</description>
</method>
<method name="subarray" qualifiers="const">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
</description>
</method>
<method name="to_byte_array" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
</description>
</method>
diff --git a/doc/classes/PacketPeer.xml b/doc/classes/PacketPeer.xml
index 0a758c2cd6..8d0aa89287 100644
--- a/doc/classes/PacketPeer.xml
+++ b/doc/classes/PacketPeer.xml
@@ -10,52 +10,42 @@
</tutorials>
<methods>
<method name="get_available_packet_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of packets currently available in the ring-buffer.
</description>
</method>
<method name="get_packet">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Gets a raw packet.
</description>
</method>
<method name="get_packet_error" qualifiers="const">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Returns the error state of the last packet received (via [method get_packet] and [method get_var]).
</description>
</method>
<method name="get_var">
- <return type="Variant">
- </return>
- <argument index="0" name="allow_objects" type="bool" default="false">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="allow_objects" type="bool" default="false" />
<description>
Gets a Variant. If [code]allow_objects[/code] is [code]true[/code], decoding objects is allowed.
[b]Warning:[/b] Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.
</description>
</method>
<method name="put_packet">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="buffer" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="buffer" type="PackedByteArray" />
<description>
Sends a raw packet.
</description>
</method>
<method name="put_var">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="var" type="Variant">
- </argument>
- <argument index="1" name="full_objects" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="var" type="Variant" />
+ <argument index="1" name="full_objects" type="bool" default="false" />
<description>
Sends a [Variant] as a packet. If [code]full_objects[/code] is [code]true[/code], encoding objects is allowed (and can potentially include code).
</description>
diff --git a/doc/classes/PacketPeerDTLS.xml b/doc/classes/PacketPeerDTLS.xml
index 19ebb9d81e..99a1aea5a6 100644
--- a/doc/classes/PacketPeerDTLS.xml
+++ b/doc/classes/PacketPeerDTLS.xml
@@ -10,37 +10,29 @@
</tutorials>
<methods>
<method name="connect_to_peer">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="packet_peer" type="PacketPeerUDP">
- </argument>
- <argument index="1" name="validate_certs" type="bool" default="true">
- </argument>
- <argument index="2" name="for_hostname" type="String" default="&quot;&quot;">
- </argument>
- <argument index="3" name="valid_certificate" type="X509Certificate" default="null">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="packet_peer" type="PacketPeerUDP" />
+ <argument index="1" name="validate_certs" type="bool" default="true" />
+ <argument index="2" name="for_hostname" type="String" default="&quot;&quot;" />
+ <argument index="3" name="valid_certificate" type="X509Certificate" default="null" />
<description>
Connects a [code]peer[/code] beginning the DTLS handshake using the underlying [PacketPeerUDP] which must be connected (see [method PacketPeerUDP.connect_to_host]). If [code]validate_certs[/code] is [code]true[/code], [PacketPeerDTLS] will validate that the certificate presented by the remote peer and match it with the [code]for_hostname[/code] argument. You can specify a custom [X509Certificate] to use for validation via the [code]valid_certificate[/code] argument.
</description>
</method>
<method name="disconnect_from_peer">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Disconnects this peer, terminating the DTLS session.
</description>
</method>
<method name="get_status" qualifiers="const">
- <return type="int" enum="PacketPeerDTLS.Status">
- </return>
+ <return type="int" enum="PacketPeerDTLS.Status" />
<description>
Returns the status of the connection. See [enum Status] for values.
</description>
</method>
<method name="poll">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Poll the connection to check for incoming packets. Call this frequently to update the status and keep the connection working.
</description>
diff --git a/doc/classes/PacketPeerUDP.xml b/doc/classes/PacketPeerUDP.xml
index 2707df612c..e2acb91058 100644
--- a/doc/classes/PacketPeerUDP.xml
+++ b/doc/classes/PacketPeerUDP.xml
@@ -10,14 +10,10 @@
</tutorials>
<methods>
<method name="bind">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
- <argument index="1" name="bind_address" type="String" default="&quot;*&quot;">
- </argument>
- <argument index="2" name="recv_buf_size" type="int" default="65536">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="port" type="int" />
+ <argument index="1" name="bind_address" type="String" default="&quot;*&quot;" />
+ <argument index="2" name="recv_buf_size" type="int" default="65536" />
<description>
Binds this [PacketPeerUDP] to the specified [code]port[/code] and [code]address[/code] with a buffer size [code]recv_buf_size[/code], allowing it to receive incoming packets.
If [code]address[/code] is set to [code]"*"[/code] (default), the peer will be bound on all available addresses (both IPv4 and IPv6).
@@ -26,66 +22,54 @@
</description>
</method>
<method name="close">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Closes the [PacketPeerUDP]'s underlying UDP socket.
</description>
</method>
<method name="connect_to_host">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="host" type="String">
- </argument>
- <argument index="1" name="port" type="int">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="host" type="String" />
+ <argument index="1" name="port" type="int" />
<description>
Calling this method connects this UDP peer to the given [code]host[/code]/[code]port[/code] pair. UDP is in reality connectionless, so this option only means that incoming packets from different addresses are automatically discarded, and that outgoing packets are always sent to the connected address (future calls to [method set_dest_address] are not allowed). This method does not send any data to the remote peer, to do that, use [method PacketPeer.put_var] or [method PacketPeer.put_packet] as usual. See also [UDPServer].
[b]Note:[/b] Connecting to the remote peer does not help to protect from malicious attacks like IP spoofing, etc. Think about using an encryption technique like SSL or DTLS if you feel like your application is transferring sensitive information.
</description>
</method>
<method name="get_local_port" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the local port to which this peer is bound.
</description>
</method>
<method name="get_packet_ip" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the IP of the remote peer that sent the last packet(that was received with [method PacketPeer.get_packet] or [method PacketPeer.get_var]).
</description>
</method>
<method name="get_packet_port" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the port of the remote peer that sent the last packet(that was received with [method PacketPeer.get_packet] or [method PacketPeer.get_var]).
</description>
</method>
<method name="is_bound" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether this [PacketPeerUDP] is bound to an address and can receive packets.
</description>
</method>
<method name="is_connected_to_host" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the UDP socket is open and has been connected to a remote address. See [method connect_to_host].
</description>
</method>
<method name="join_multicast_group">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="multicast_address" type="String">
- </argument>
- <argument index="1" name="interface_name" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="multicast_address" type="String" />
+ <argument index="1" name="interface_name" type="String" />
<description>
Joins the multicast group specified by [code]multicast_address[/code] using the interface identified by [code]interface_name[/code].
You can join the same multicast group with multiple interfaces. Use [method IP.get_local_interfaces] to know which are available.
@@ -93,41 +77,32 @@
</description>
</method>
<method name="leave_multicast_group">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="multicast_address" type="String">
- </argument>
- <argument index="1" name="interface_name" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="multicast_address" type="String" />
+ <argument index="1" name="interface_name" type="String" />
<description>
Removes the interface identified by [code]interface_name[/code] from the multicast group specified by [code]multicast_address[/code].
</description>
</method>
<method name="set_broadcast_enabled">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enabled" type="bool" />
<description>
Enable or disable sending of broadcast packets (e.g. [code]set_dest_address("255.255.255.255", 4343)[/code]. This option is disabled by default.
Note: Some Android devices might require the [code]CHANGE_WIFI_MULTICAST_STATE[/code] permission and this option to be enabled to receive broadcast packets too.
</description>
</method>
<method name="set_dest_address">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="host" type="String">
- </argument>
- <argument index="1" name="port" type="int">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="host" type="String" />
+ <argument index="1" name="port" type="int" />
<description>
Sets the destination address and port for sending packets and variables. A hostname will be resolved using DNS if needed.
Note: [method set_broadcast_enabled] must be enabled before sending packets to a broadcast address (e.g. [code]255.255.255.255[/code]).
</description>
</method>
<method name="wait">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Waits for a packet to arrive on the bound address. See [method bind].
[b]Note:[/b] [method wait] can't be interrupted once it has been called. This can be worked around by allowing the other party to send a specific "death pill" packet like this:
diff --git a/doc/classes/Panel.xml b/doc/classes/Panel.xml
index b65c2c956d..9906abf895 100644
--- a/doc/classes/Panel.xml
+++ b/doc/classes/Panel.xml
@@ -24,10 +24,10 @@
</constant>
</constants>
<theme_items>
- <theme_item name="panel" type="StyleBox">
+ <theme_item name="panel" data_type="style" type="StyleBox">
The style of this [Panel].
</theme_item>
- <theme_item name="panel_fg" type="StyleBox">
+ <theme_item name="panel_fg" data_type="style" type="StyleBox">
</theme_item>
</theme_items>
</class>
diff --git a/doc/classes/PanelContainer.xml b/doc/classes/PanelContainer.xml
index ad6080c780..f3f2f6839a 100644
--- a/doc/classes/PanelContainer.xml
+++ b/doc/classes/PanelContainer.xml
@@ -17,7 +17,7 @@
<constants>
</constants>
<theme_items>
- <theme_item name="panel" type="StyleBox">
+ <theme_item name="panel" data_type="style" type="StyleBox">
The style of [PanelContainer]'s background.
</theme_item>
</theme_items>
diff --git a/doc/classes/ParticlesMaterial.xml b/doc/classes/ParticlesMaterial.xml
index 640a26b8cb..3520d3b966 100644
--- a/doc/classes/ParticlesMaterial.xml
+++ b/doc/classes/ParticlesMaterial.xml
@@ -12,81 +12,61 @@
</tutorials>
<methods>
<method name="get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter" />
<description>
Returns the value of the specified parameter.
</description>
</method>
<method name="get_param_randomness" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter" />
<description>
Returns the randomness ratio associated with the specified parameter.
</description>
</method>
<method name="get_param_texture" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter" />
<description>
Returns the [Texture2D] used by the specified parameter.
</description>
</method>
<method name="get_particle_flag" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="particle_flag" type="int" enum="ParticlesMaterial.ParticleFlags">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="particle_flag" type="int" enum="ParticlesMaterial.ParticleFlags" />
<description>
Returns [code]true[/code] if the specified particle flag is enabled. See [enum ParticleFlags] for options.
</description>
</method>
<method name="set_param">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter" />
+ <argument index="1" name="value" type="float" />
<description>
Sets the specified [enum Parameter].
</description>
</method>
<method name="set_param_randomness">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter">
- </argument>
- <argument index="1" name="randomness" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter" />
+ <argument index="1" name="randomness" type="float" />
<description>
Sets the randomness ratio for the specified [enum Parameter].
</description>
</method>
<method name="set_param_texture">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="ParticlesMaterial.Parameter" />
+ <argument index="1" name="texture" type="Texture2D" />
<description>
Sets the [Texture2D] for the specified [enum Parameter].
</description>
</method>
<method name="set_particle_flag">
- <return type="void">
- </return>
- <argument index="0" name="particle_flag" type="int" enum="ParticlesMaterial.ParticleFlags">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particle_flag" type="int" enum="ParticlesMaterial.ParticleFlags" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], enables the specified particle flag. See [enum ParticleFlags] for options.
</description>
diff --git a/doc/classes/Performance.xml b/doc/classes/Performance.xml
index a141961df5..335c3d254b 100644
--- a/doc/classes/Performance.xml
+++ b/doc/classes/Performance.xml
@@ -14,14 +14,10 @@
</tutorials>
<methods>
<method name="add_custom_monitor">
- <return type="void">
- </return>
- <argument index="0" name="id" type="StringName">
- </argument>
- <argument index="1" name="callable" type="Callable">
- </argument>
- <argument index="2" name="arguments" type="Array" default="[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="StringName" />
+ <argument index="1" name="callable" type="Callable" />
+ <argument index="2" name="arguments" type="Array" default="[]" />
<description>
Adds a custom monitor with name same as id. You can specify the category of monitor using '/' in id. If there are more than one '/' then default category is used. Default category is "Custom".
[codeblocks]
@@ -77,27 +73,22 @@
</description>
</method>
<method name="get_custom_monitor">
- <return type="Variant">
- </return>
- <argument index="0" name="id" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="id" type="StringName" />
<description>
Returns the value of custom monitor with given id. The callable is called to get the value of custom monitor.
[b]Note:[/b] It throws an error if the given id is absent.
</description>
</method>
<method name="get_custom_monitor_names">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the names of active custom monitors in an array.
</description>
</method>
<method name="get_monitor" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="monitor" type="int" enum="Performance.Monitor">
- </argument>
+ <return type="float" />
+ <argument index="0" name="monitor" type="int" enum="Performance.Monitor" />
<description>
Returns the value of one of the available monitors. You should provide one of the [enum Monitor] constants as the argument, like this:
[codeblocks]
@@ -111,26 +102,21 @@
</description>
</method>
<method name="get_monitor_modification_time">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the last tick in which custom monitor was added/removed.
</description>
</method>
<method name="has_custom_monitor">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="StringName" />
<description>
Returns true if custom monitor with the given id is present otherwise returns false.
</description>
</method>
<method name="remove_custom_monitor">
- <return type="void">
- </return>
- <argument index="0" name="id" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="StringName" />
<description>
Removes the custom monitor with given id.
[b]Note:[/b] It throws an error if the given id is already absent.
diff --git a/doc/classes/PhysicalBone2D.xml b/doc/classes/PhysicalBone2D.xml
index cea75bad52..b4d92475a1 100644
--- a/doc/classes/PhysicalBone2D.xml
+++ b/doc/classes/PhysicalBone2D.xml
@@ -12,15 +12,13 @@
</tutorials>
<methods>
<method name="get_joint" qualifiers="const">
- <return type="Joint2D">
- </return>
+ <return type="Joint2D" />
<description>
Returns the first [Joint2D] child node, if one exists. This is mainly a helper function to make it easier to get the [Joint2D] that the [code]PhysicalBone2D[/code] is autoconfiguring.
</description>
</method>
<method name="is_simulating_physics" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns a boolean that indicates whether the [code]PhysicalBone2D[/code] node is running and simulating using the Godot 2D physics engine. When [code]true[/code], the PhysicalBone2D node is using physics.
</description>
diff --git a/doc/classes/PhysicalBone3D.xml b/doc/classes/PhysicalBone3D.xml
index 2ed862e9ce..710e96239b 100644
--- a/doc/classes/PhysicalBone3D.xml
+++ b/doc/classes/PhysicalBone3D.xml
@@ -8,38 +8,30 @@
</tutorials>
<methods>
<method name="apply_central_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector3" />
<description>
</description>
</method>
<method name="apply_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector3">
- </argument>
- <argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector3" />
+ <argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
</description>
</method>
<method name="get_bone_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_simulate_physics">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="is_simulating_physics">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
diff --git a/doc/classes/PhysicsBody2D.xml b/doc/classes/PhysicsBody2D.xml
index 654b0fb668..4d1cd072d0 100644
--- a/doc/classes/PhysicsBody2D.xml
+++ b/doc/classes/PhysicsBody2D.xml
@@ -11,34 +11,25 @@
</tutorials>
<methods>
<method name="add_collision_exception_with">
- <return type="void">
- </return>
- <argument index="0" name="body" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="Node" />
<description>
Adds a body to the list of bodies that this body can't collide with.
</description>
</method>
<method name="get_collision_exceptions">
- <return type="PhysicsBody2D[]">
- </return>
+ <return type="PhysicsBody2D[]" />
<description>
Returns an array of nodes that were added as collision exceptions for this body.
</description>
</method>
<method name="move_and_collide">
- <return type="KinematicCollision2D">
- </return>
- <argument index="0" name="rel_vec" type="Vector2">
- </argument>
- <argument index="1" name="infinite_inertia" type="bool" default="true">
- </argument>
- <argument index="2" name="exclude_raycast_shapes" type="bool" default="true">
- </argument>
- <argument index="3" name="test_only" type="bool" default="false">
- </argument>
- <argument index="4" name="safe_margin" type="float" default="0.08">
- </argument>
+ <return type="KinematicCollision2D" />
+ <argument index="0" name="rel_vec" type="Vector2" />
+ <argument index="1" name="infinite_inertia" type="bool" default="true" />
+ <argument index="2" name="exclude_raycast_shapes" type="bool" default="true" />
+ <argument index="3" name="test_only" type="bool" default="false" />
+ <argument index="4" name="safe_margin" type="float" default="0.08" />
<description>
Moves the body along the vector [code]rel_vec[/code]. The body will stop if it collides. Returns a [KinematicCollision2D], which contains information about the collision.
If [code]test_only[/code] is [code]true[/code], the body does not move but the would-be collision information is given.
@@ -46,29 +37,20 @@
</description>
</method>
<method name="remove_collision_exception_with">
- <return type="void">
- </return>
- <argument index="0" name="body" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="Node" />
<description>
Removes a body from the list of bodies that this body can't collide with.
</description>
</method>
<method name="test_move">
- <return type="bool">
- </return>
- <argument index="0" name="from" type="Transform2D">
- </argument>
- <argument index="1" name="rel_vec" type="Vector2">
- </argument>
- <argument index="2" name="infinite_inertia" type="bool" default="true">
- </argument>
- <argument index="3" name="exclude_raycast_shapes" type="bool" default="true">
- </argument>
- <argument index="4" name="collision" type="KinematicCollision2D" default="null">
- </argument>
- <argument index="5" name="safe_margin" type="float" default="0.08">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="from" type="Transform2D" />
+ <argument index="1" name="rel_vec" type="Vector2" />
+ <argument index="2" name="infinite_inertia" type="bool" default="true" />
+ <argument index="3" name="exclude_raycast_shapes" type="bool" default="true" />
+ <argument index="4" name="collision" type="KinematicCollision2D" default="null" />
+ <argument index="5" name="safe_margin" type="float" default="0.08" />
<description>
Checks for collisions without moving the body. Virtually sets the node's position, scale and rotation to that of the given [Transform2D], then tries to move the body along the vector [code]rel_vec[/code]. Returns [code]true[/code] if a collision would occur.
[code]collision[/code] is an optional object of type [KinematicCollision2D], which contains additional information about the collision (should there be one).
diff --git a/doc/classes/PhysicsBody3D.xml b/doc/classes/PhysicsBody3D.xml
index 1ec38000be..a2a68115d0 100644
--- a/doc/classes/PhysicsBody3D.xml
+++ b/doc/classes/PhysicsBody3D.xml
@@ -11,43 +11,32 @@
</tutorials>
<methods>
<method name="add_collision_exception_with">
- <return type="void">
- </return>
- <argument index="0" name="body" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="Node" />
<description>
Adds a body to the list of bodies that this body can't collide with.
</description>
</method>
<method name="get_axis_lock" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="axis" type="int" enum="PhysicsServer3D.BodyAxis">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="axis" type="int" enum="PhysicsServer3D.BodyAxis" />
<description>
Returns [code]true[/code] if the specified linear or rotational [code]axis[/code] is locked.
</description>
</method>
<method name="get_collision_exceptions">
- <return type="PhysicsBody3D[]">
- </return>
+ <return type="PhysicsBody3D[]" />
<description>
Returns an array of nodes that were added as collision exceptions for this body.
</description>
</method>
<method name="move_and_collide">
- <return type="KinematicCollision3D">
- </return>
- <argument index="0" name="rel_vec" type="Vector3">
- </argument>
- <argument index="1" name="infinite_inertia" type="bool" default="true">
- </argument>
- <argument index="2" name="exclude_raycast_shapes" type="bool" default="true">
- </argument>
- <argument index="3" name="test_only" type="bool" default="false">
- </argument>
- <argument index="4" name="safe_margin" type="float" default="0.001">
- </argument>
+ <return type="KinematicCollision3D" />
+ <argument index="0" name="rel_vec" type="Vector3" />
+ <argument index="1" name="infinite_inertia" type="bool" default="true" />
+ <argument index="2" name="exclude_raycast_shapes" type="bool" default="true" />
+ <argument index="3" name="test_only" type="bool" default="false" />
+ <argument index="4" name="safe_margin" type="float" default="0.001" />
<description>
Moves the body along the vector [code]rel_vec[/code]. The body will stop if it collides. Returns a [KinematicCollision3D], which contains information about the collision.
If [code]test_only[/code] is [code]true[/code], the body does not move but the would-be collision information is given.
@@ -55,40 +44,28 @@
</description>
</method>
<method name="remove_collision_exception_with">
- <return type="void">
- </return>
- <argument index="0" name="body" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="Node" />
<description>
Removes a body from the list of bodies that this body can't collide with.
</description>
</method>
<method name="set_axis_lock">
- <return type="void">
- </return>
- <argument index="0" name="axis" type="int" enum="PhysicsServer3D.BodyAxis">
- </argument>
- <argument index="1" name="lock" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="axis" type="int" enum="PhysicsServer3D.BodyAxis" />
+ <argument index="1" name="lock" type="bool" />
<description>
Locks or unlocks the specified linear or rotational [code]axis[/code] depending on the value of [code]lock[/code].
</description>
</method>
<method name="test_move">
- <return type="bool">
- </return>
- <argument index="0" name="from" type="Transform3D">
- </argument>
- <argument index="1" name="rel_vec" type="Vector3">
- </argument>
- <argument index="2" name="infinite_inertia" type="bool" default="true">
- </argument>
- <argument index="3" name="exclude_raycast_shapes" type="bool" default="true">
- </argument>
- <argument index="4" name="collision" type="KinematicCollision3D" default="null">
- </argument>
- <argument index="5" name="safe_margin" type="float" default="0.001">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="from" type="Transform3D" />
+ <argument index="1" name="rel_vec" type="Vector3" />
+ <argument index="2" name="infinite_inertia" type="bool" default="true" />
+ <argument index="3" name="exclude_raycast_shapes" type="bool" default="true" />
+ <argument index="4" name="collision" type="KinematicCollision3D" default="null" />
+ <argument index="5" name="safe_margin" type="float" default="0.001" />
<description>
Checks for collisions without moving the body. Virtually sets the node's position, scale and rotation to that of the given [Transform3D], then tries to move the body along the vector [code]rel_vec[/code]. Returns [code]true[/code] if a collision would occur.
[code]collision[/code] is an optional object of type [KinematicCollision3D], which contains additional information about the collision (should there be one).
diff --git a/doc/classes/PhysicsDirectBodyState2D.xml b/doc/classes/PhysicsDirectBodyState2D.xml
index 65cb3e7f38..ab3a04698f 100644
--- a/doc/classes/PhysicsDirectBodyState2D.xml
+++ b/doc/classes/PhysicsDirectBodyState2D.xml
@@ -11,171 +11,134 @@
</tutorials>
<methods>
<method name="add_central_force">
- <return type="void">
- </return>
- <argument index="0" name="force" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="force" type="Vector2" />
<description>
Adds a constant directional force without affecting rotation.
</description>
</method>
<method name="add_force">
- <return type="void">
- </return>
- <argument index="0" name="force" type="Vector2">
- </argument>
- <argument index="1" name="position" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="force" type="Vector2" />
+ <argument index="1" name="position" type="Vector2" default="Vector2(0, 0)" />
<description>
Adds a positioned force to the body. Both the force and the offset from the body origin are in global coordinates.
</description>
</method>
<method name="add_torque">
- <return type="void">
- </return>
- <argument index="0" name="torque" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="torque" type="float" />
<description>
Adds a constant rotational force.
</description>
</method>
<method name="apply_central_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector2" />
<description>
Applies a directional impulse without affecting rotation.
</description>
</method>
<method name="apply_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector2">
- </argument>
- <argument index="1" name="position" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector2" />
+ <argument index="1" name="position" type="Vector2" default="Vector2(0, 0)" />
<description>
Applies a positioned impulse to the body. An impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason, it should only be used when simulating one-time impacts (use the "_force" functions otherwise). The offset uses the rotation of the global coordinate system, but is centered at the object's origin.
</description>
</method>
<method name="apply_torque_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="float" />
<description>
Applies a rotational impulse to the body.
</description>
</method>
<method name="get_contact_collider" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider's [RID].
</description>
</method>
<method name="get_contact_collider_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider's object id.
</description>
</method>
<method name="get_contact_collider_object" qualifiers="const">
- <return type="Object">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="Object" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider object. This depends on how it was created (will return a scene node if such was used to create it).
</description>
</method>
<method name="get_contact_collider_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the contact position in the collider.
</description>
</method>
<method name="get_contact_collider_shape" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider's shape index.
</description>
</method>
<method name="get_contact_collider_shape_metadata" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the collided shape's metadata. This metadata is different from [method Object.get_meta], and is set with [method PhysicsServer2D.shape_set_data].
</description>
</method>
<method name="get_contact_collider_velocity_at_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the linear velocity vector at the collider's contact point.
</description>
</method>
<method name="get_contact_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of contacts this body has with other bodies.
[b]Note:[/b] By default, this returns 0 unless bodies are configured to monitor contacts. See [member RigidBody2D.contact_monitor].
</description>
</method>
<method name="get_contact_local_normal" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the local normal at the contact point.
</description>
</method>
<method name="get_contact_local_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the local position of the contact point.
</description>
</method>
<method name="get_contact_local_shape" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the local shape index of the collision.
</description>
</method>
<method name="get_space_state">
- <return type="PhysicsDirectSpaceState2D">
- </return>
+ <return type="PhysicsDirectSpaceState2D" />
<description>
Returns the current state of the space, useful for queries.
</description>
</method>
<method name="integrate_forces">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Calls the built-in force integration code.
</description>
diff --git a/doc/classes/PhysicsDirectBodyState3D.xml b/doc/classes/PhysicsDirectBodyState3D.xml
index 85feeef86e..6af62c2bcc 100644
--- a/doc/classes/PhysicsDirectBodyState3D.xml
+++ b/doc/classes/PhysicsDirectBodyState3D.xml
@@ -10,173 +10,136 @@
</tutorials>
<methods>
<method name="add_central_force">
- <return type="void">
- </return>
- <argument index="0" name="force" type="Vector3" default="Vector3(0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="force" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
Adds a constant directional force without affecting rotation.
This is equivalent to [code]add_force(force, Vector3(0,0,0))[/code].
</description>
</method>
<method name="add_force">
- <return type="void">
- </return>
- <argument index="0" name="force" type="Vector3">
- </argument>
- <argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="force" type="Vector3" />
+ <argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
Adds a positioned force to the body. Both the force and the offset from the body origin are in global coordinates.
</description>
</method>
<method name="add_torque">
- <return type="void">
- </return>
- <argument index="0" name="torque" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="torque" type="Vector3" />
<description>
Adds a constant rotational force without affecting position.
</description>
</method>
<method name="apply_central_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector3" default="Vector3(0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
Applies a single directional impulse without affecting rotation.
This is equivalent to [code]apply_impulse(Vector3(0, 0, 0), impulse)[/code].
</description>
</method>
<method name="apply_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector3">
- </argument>
- <argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector3" />
+ <argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
Applies a positioned impulse to the body. An impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason it should only be used when simulating one-time impacts. The position uses the rotation of the global coordinate system, but is centered at the object's origin.
</description>
</method>
<method name="apply_torque_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector3" />
<description>
Apply a torque impulse (which will be affected by the body mass and shape). This will rotate the body around the vector [code]j[/code] passed as parameter.
</description>
</method>
<method name="get_contact_collider" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider's [RID].
</description>
</method>
<method name="get_contact_collider_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider's object id.
</description>
</method>
<method name="get_contact_collider_object" qualifiers="const">
- <return type="Object">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="Object" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider object.
</description>
</method>
<method name="get_contact_collider_position" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the contact position in the collider.
</description>
</method>
<method name="get_contact_collider_shape" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the collider's shape index.
</description>
</method>
<method name="get_contact_collider_velocity_at_position" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the linear velocity vector at the collider's contact point.
</description>
</method>
<method name="get_contact_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of contacts this body has with other bodies.
[b]Note:[/b] By default, this returns 0 unless bodies are configured to monitor contacts. See [member RigidBody3D.contact_monitor].
</description>
</method>
<method name="get_contact_impulse" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Impulse created by the contact. Only implemented for Bullet physics.
</description>
</method>
<method name="get_contact_local_normal" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the local normal at the contact point.
</description>
</method>
<method name="get_contact_local_position" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the local position of the contact point.
</description>
</method>
<method name="get_contact_local_shape" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="contact_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="contact_idx" type="int" />
<description>
Returns the local shape index of the collision.
</description>
</method>
<method name="get_space_state">
- <return type="PhysicsDirectSpaceState3D">
- </return>
+ <return type="PhysicsDirectSpaceState3D" />
<description>
Returns the current state of the space, useful for queries.
</description>
</method>
<method name="integrate_forces">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Calls the built-in force integration code.
</description>
diff --git a/doc/classes/PhysicsDirectSpaceState2D.xml b/doc/classes/PhysicsDirectSpaceState2D.xml
index 6c8c957e5d..2a32bc1cb9 100644
--- a/doc/classes/PhysicsDirectSpaceState2D.xml
+++ b/doc/classes/PhysicsDirectSpaceState2D.xml
@@ -11,10 +11,8 @@
</tutorials>
<methods>
<method name="cast_motion">
- <return type="Array">
- </return>
- <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D" />
<description>
Checks how far a [Shape2D] can move without colliding. All the parameters for the query, including the shape and the motion, are supplied through a [PhysicsShapeQueryParameters2D] object.
Returns an array with the safe and unsafe proportions (between 0 and 1) of the motion. The safe proportion is the maximum fraction of the motion that can be made without a collision. The unsafe proportion is the minimum fraction of the distance that must be moved for a collision. If no collision is detected a result of [code][1.0, 1.0][/code] will be returned.
@@ -22,21 +20,16 @@
</description>
</method>
<method name="collide_shape">
- <return type="Array">
- </return>
- <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D">
- </argument>
- <argument index="1" name="max_results" type="int" default="32">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D" />
+ <argument index="1" name="max_results" type="int" default="32" />
<description>
Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters2D] object, against the space. The resulting array contains a list of points where the shape intersects another. Like with [method intersect_shape], the number of returned results can be limited to save processing time.
</description>
</method>
<method name="get_rest_info">
- <return type="Dictionary">
- </return>
- <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D" />
<description>
Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters2D] object, against the space. If it collides with more than one shape, the nearest one is selected. If the shape did not intersect anything, then an empty dictionary is returned instead.
[b]Note:[/b] This method does not take into account the [code]motion[/code] property of the object. The returned object is a dictionary containing the following fields:
@@ -50,20 +43,13 @@
</description>
</method>
<method name="intersect_point">
- <return type="Array">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
- <argument index="1" name="max_results" type="int" default="32">
- </argument>
- <argument index="2" name="exclude" type="Array" default="[]">
- </argument>
- <argument index="3" name="collision_layer" type="int" default="2147483647">
- </argument>
- <argument index="4" name="collide_with_bodies" type="bool" default="true">
- </argument>
- <argument index="5" name="collide_with_areas" type="bool" default="false">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="point" type="Vector2" />
+ <argument index="1" name="max_results" type="int" default="32" />
+ <argument index="2" name="exclude" type="Array" default="[]" />
+ <argument index="3" name="collision_layer" type="int" default="2147483647" />
+ <argument index="4" name="collide_with_bodies" type="bool" default="true" />
+ <argument index="5" name="collide_with_areas" type="bool" default="false" />
<description>
Checks whether a point is inside any solid shape. The shapes the point is inside of are returned in an array containing dictionaries with the following fields:
[code]collider[/code]: The colliding object.
@@ -76,40 +62,25 @@
</description>
</method>
<method name="intersect_point_on_canvas">
- <return type="Array">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
- <argument index="1" name="canvas_instance_id" type="int">
- </argument>
- <argument index="2" name="max_results" type="int" default="32">
- </argument>
- <argument index="3" name="exclude" type="Array" default="[]">
- </argument>
- <argument index="4" name="collision_layer" type="int" default="2147483647">
- </argument>
- <argument index="5" name="collide_with_bodies" type="bool" default="true">
- </argument>
- <argument index="6" name="collide_with_areas" type="bool" default="false">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="point" type="Vector2" />
+ <argument index="1" name="canvas_instance_id" type="int" />
+ <argument index="2" name="max_results" type="int" default="32" />
+ <argument index="3" name="exclude" type="Array" default="[]" />
+ <argument index="4" name="collision_layer" type="int" default="2147483647" />
+ <argument index="5" name="collide_with_bodies" type="bool" default="true" />
+ <argument index="6" name="collide_with_areas" type="bool" default="false" />
<description>
</description>
</method>
<method name="intersect_ray">
- <return type="Dictionary">
- </return>
- <argument index="0" name="from" type="Vector2">
- </argument>
- <argument index="1" name="to" type="Vector2">
- </argument>
- <argument index="2" name="exclude" type="Array" default="[]">
- </argument>
- <argument index="3" name="collision_layer" type="int" default="2147483647">
- </argument>
- <argument index="4" name="collide_with_bodies" type="bool" default="true">
- </argument>
- <argument index="5" name="collide_with_areas" type="bool" default="false">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="from" type="Vector2" />
+ <argument index="1" name="to" type="Vector2" />
+ <argument index="2" name="exclude" type="Array" default="[]" />
+ <argument index="3" name="collision_layer" type="int" default="2147483647" />
+ <argument index="4" name="collide_with_bodies" type="bool" default="true" />
+ <argument index="5" name="collide_with_areas" type="bool" default="false" />
<description>
Intersects a ray in a given space. The returned object is a dictionary with the following fields:
[code]collider[/code]: The colliding object.
@@ -124,12 +95,9 @@
</description>
</method>
<method name="intersect_shape">
- <return type="Array">
- </return>
- <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D">
- </argument>
- <argument index="1" name="max_results" type="int" default="32">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shape" type="PhysicsShapeQueryParameters2D" />
+ <argument index="1" name="max_results" type="int" default="32" />
<description>
Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters2D] object, against the space.
[b]Note:[/b] This method does not take into account the [code]motion[/code] property of the object. The intersected shapes are returned in an array containing dictionaries with the following fields:
diff --git a/doc/classes/PhysicsDirectSpaceState3D.xml b/doc/classes/PhysicsDirectSpaceState3D.xml
index a69b6f07fd..a6bfc8754d 100644
--- a/doc/classes/PhysicsDirectSpaceState3D.xml
+++ b/doc/classes/PhysicsDirectSpaceState3D.xml
@@ -11,12 +11,9 @@
</tutorials>
<methods>
<method name="cast_motion">
- <return type="Array">
- </return>
- <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D">
- </argument>
- <argument index="1" name="motion" type="Vector3">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D" />
+ <argument index="1" name="motion" type="Vector3" />
<description>
Checks how far a [Shape3D] can move without colliding. All the parameters for the query, including the shape, are supplied through a [PhysicsShapeQueryParameters3D] object.
Returns an array with the safe and unsafe proportions (between 0 and 1) of the motion. The safe proportion is the maximum fraction of the motion that can be made without a collision. The unsafe proportion is the minimum fraction of the distance that must be moved for a collision. If no collision is detected a result of [code][1.0, 1.0][/code] will be returned.
@@ -24,21 +21,16 @@
</description>
</method>
<method name="collide_shape">
- <return type="Array">
- </return>
- <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D">
- </argument>
- <argument index="1" name="max_results" type="int" default="32">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D" />
+ <argument index="1" name="max_results" type="int" default="32" />
<description>
Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters3D] object, against the space. The resulting array contains a list of points where the shape intersects another. Like with [method intersect_shape], the number of returned results can be limited to save processing time.
</description>
</method>
<method name="get_rest_info">
- <return type="Dictionary">
- </return>
- <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D" />
<description>
Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters3D] object, against the space. If it collides with more than one shape, the nearest one is selected. The returned object is a dictionary containing the following fields:
[code]collider_id[/code]: The colliding object's ID.
@@ -51,20 +43,13 @@
</description>
</method>
<method name="intersect_ray">
- <return type="Dictionary">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
- <argument index="1" name="to" type="Vector3">
- </argument>
- <argument index="2" name="exclude" type="Array" default="[]">
- </argument>
- <argument index="3" name="collision_mask" type="int" default="2147483647">
- </argument>
- <argument index="4" name="collide_with_bodies" type="bool" default="true">
- </argument>
- <argument index="5" name="collide_with_areas" type="bool" default="false">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="from" type="Vector3" />
+ <argument index="1" name="to" type="Vector3" />
+ <argument index="2" name="exclude" type="Array" default="[]" />
+ <argument index="3" name="collision_mask" type="int" default="2147483647" />
+ <argument index="4" name="collide_with_bodies" type="bool" default="true" />
+ <argument index="5" name="collide_with_areas" type="bool" default="false" />
<description>
Intersects a ray in a given space. The returned object is a dictionary with the following fields:
[code]collider[/code]: The colliding object.
@@ -78,12 +63,9 @@
</description>
</method>
<method name="intersect_shape">
- <return type="Array">
- </return>
- <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D">
- </argument>
- <argument index="1" name="max_results" type="int" default="32">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shape" type="PhysicsShapeQueryParameters3D" />
+ <argument index="1" name="max_results" type="int" default="32" />
<description>
Checks the intersections of a shape, given through a [PhysicsShapeQueryParameters3D] object, against the space. The intersected shapes are returned in an array containing dictionaries with the following fields:
[code]collider[/code]: The colliding object.
diff --git a/doc/classes/PhysicsServer2D.xml b/doc/classes/PhysicsServer2D.xml
index b492ddaa25..cf23fecd08 100644
--- a/doc/classes/PhysicsServer2D.xml
+++ b/doc/classes/PhysicsServer2D.xml
@@ -10,197 +10,145 @@
</tutorials>
<methods>
<method name="area_add_shape">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape" type="RID">
- </argument>
- <argument index="2" name="transform" type="Transform2D" default="Transform2D(1, 0, 0, 1, 0, 0)">
- </argument>
- <argument index="3" name="disabled" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape" type="RID" />
+ <argument index="2" name="transform" type="Transform2D" default="Transform2D(1, 0, 0, 1, 0, 0)" />
+ <argument index="3" name="disabled" type="bool" default="false" />
<description>
Adds a shape to the area, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.
</description>
</method>
<method name="area_attach_canvas_instance_id">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="id" type="int" />
<description>
</description>
</method>
<method name="area_attach_object_instance_id">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="id" type="int" />
<description>
Assigns the area to a descendant of [Object], so it can exist in the node tree.
</description>
</method>
<method name="area_clear_shapes">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
<description>
Removes all shapes from an area. It does not delete the shapes, so they can be reassigned later.
</description>
</method>
<method name="area_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates an [Area2D]. After creating an [Area2D] with this method, assign it to a space using [method area_set_space] to use the created [Area2D] in the physics world.
</description>
</method>
<method name="area_get_canvas_instance_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="area" type="RID" />
<description>
</description>
</method>
<method name="area_get_object_instance_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="area" type="RID" />
<description>
Gets the instance ID of the object the area is assigned to.
</description>
</method>
<method name="area_get_param" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer2D.AreaParameter">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer2D.AreaParameter" />
<description>
Returns an area parameter value. See [enum AreaParameter] for a list of available parameters.
</description>
</method>
<method name="area_get_shape" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Returns the [RID] of the nth shape of an area.
</description>
</method>
<method name="area_get_shape_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="area" type="RID" />
<description>
Returns the number of shapes assigned to an area.
</description>
</method>
<method name="area_get_shape_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Returns the transform matrix of a shape within an area.
</description>
</method>
<method name="area_get_space" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="area" type="RID" />
<description>
Returns the space assigned to the area.
</description>
</method>
<method name="area_get_space_override_mode" qualifiers="const">
- <return type="int" enum="PhysicsServer2D.AreaSpaceOverrideMode">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="int" enum="PhysicsServer2D.AreaSpaceOverrideMode" />
+ <argument index="0" name="area" type="RID" />
<description>
Returns the space override mode for the area.
</description>
</method>
<method name="area_get_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="area" type="RID" />
<description>
Returns the transform matrix for an area.
</description>
</method>
<method name="area_remove_shape">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Removes a shape from an area. It does not delete the shape, so it can be reassigned later.
</description>
</method>
<method name="area_set_area_monitor_callback">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="receiver" type="Object">
- </argument>
- <argument index="2" name="method" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="receiver" type="Object" />
+ <argument index="2" name="method" type="StringName" />
<description>
</description>
</method>
<method name="area_set_collision_layer">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="layer" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="layer" type="int" />
<description>
Assigns the area to one or many physics layers.
</description>
</method>
<method name="area_set_collision_mask">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
Sets which physics layers the area will monitor.
</description>
</method>
<method name="area_set_monitor_callback">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="receiver" type="Object">
- </argument>
- <argument index="2" name="method" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="receiver" type="Object" />
+ <argument index="2" name="method" type="StringName" />
<description>
Sets the function to call when any body/area enters or exits the area. This callback will be called for any object interacting with the area, and takes five parameters:
1: [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED], depending on whether the object entered or exited the area.
@@ -211,911 +159,662 @@
</description>
</method>
<method name="area_set_monitorable">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="monitorable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="monitorable" type="bool" />
<description>
</description>
</method>
<method name="area_set_param">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer2D.AreaParameter">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer2D.AreaParameter" />
+ <argument index="2" name="value" type="Variant" />
<description>
Sets the value for an area parameter. See [enum AreaParameter] for a list of available parameters.
</description>
</method>
<method name="area_set_shape">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="shape" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="shape" type="RID" />
<description>
Substitutes a given area shape by another. The old shape is selected by its index, the new one by its [RID].
</description>
</method>
<method name="area_set_shape_disabled">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="disabled" type="bool" />
<description>
Disables a given shape in an area.
</description>
</method>
<method name="area_set_shape_transform">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="transform" type="Transform2D" />
<description>
Sets the transform matrix for an area shape.
</description>
</method>
<method name="area_set_space">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="space" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="space" type="RID" />
<description>
Assigns a space to the area.
</description>
</method>
<method name="area_set_space_override_mode">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="PhysicsServer2D.AreaSpaceOverrideMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="mode" type="int" enum="PhysicsServer2D.AreaSpaceOverrideMode" />
<description>
Sets the space override mode for the area. See [enum AreaSpaceOverrideMode] for a list of available modes.
</description>
</method>
<method name="area_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="transform" type="Transform2D" />
<description>
Sets the transform matrix for an area.
</description>
</method>
<method name="body_add_central_force">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="force" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="force" type="Vector2" />
<description>
</description>
</method>
<method name="body_add_collision_exception">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="excepted_body" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="excepted_body" type="RID" />
<description>
Adds a body to the list of bodies exempt from collisions.
</description>
</method>
<method name="body_add_force">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="force" type="Vector2">
- </argument>
- <argument index="2" name="position" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="force" type="Vector2" />
+ <argument index="2" name="position" type="Vector2" default="Vector2(0, 0)" />
<description>
Adds a positioned force to the applied force and torque. As with [method body_apply_impulse], both the force and the offset from the body origin are in global coordinates. A force differs from an impulse in that, while the two are forces, the impulse clears itself after being applied.
</description>
</method>
<method name="body_add_shape">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape" type="RID">
- </argument>
- <argument index="2" name="transform" type="Transform2D" default="Transform2D(1, 0, 0, 1, 0, 0)">
- </argument>
- <argument index="3" name="disabled" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape" type="RID" />
+ <argument index="2" name="transform" type="Transform2D" default="Transform2D(1, 0, 0, 1, 0, 0)" />
+ <argument index="3" name="disabled" type="bool" default="false" />
<description>
Adds a shape to the body, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.
</description>
</method>
<method name="body_add_torque">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="torque" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="torque" type="float" />
<description>
</description>
</method>
<method name="body_apply_central_impulse">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="impulse" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="impulse" type="Vector2" />
<description>
</description>
</method>
<method name="body_apply_impulse">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="impulse" type="Vector2">
- </argument>
- <argument index="2" name="position" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="impulse" type="Vector2" />
+ <argument index="2" name="position" type="Vector2" default="Vector2(0, 0)" />
<description>
Adds a positioned impulse to the applied force and torque. Both the force and the offset from the body origin are in global coordinates.
</description>
</method>
<method name="body_apply_torque_impulse">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="impulse" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="impulse" type="float" />
<description>
</description>
</method>
<method name="body_attach_canvas_instance_id">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="id" type="int" />
<description>
</description>
</method>
<method name="body_attach_object_instance_id">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="id" type="int" />
<description>
Assigns the area to a descendant of [Object], so it can exist in the node tree.
</description>
</method>
<method name="body_clear_shapes">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
<description>
Removes all shapes from a body.
</description>
</method>
<method name="body_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a physics body.
</description>
</method>
<method name="body_get_canvas_instance_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="body" type="RID" />
<description>
</description>
</method>
<method name="body_get_collision_layer" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the physics layer or layers a body belongs to.
</description>
</method>
<method name="body_get_collision_mask" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the physics layer or layers a body can collide with.
</description>
</method>
<method name="body_get_continuous_collision_detection_mode" qualifiers="const">
- <return type="int" enum="PhysicsServer2D.CCDMode">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" enum="PhysicsServer2D.CCDMode" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the continuous collision detection mode.
</description>
</method>
<method name="body_get_direct_state">
- <return type="PhysicsDirectBodyState2D">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="PhysicsDirectBodyState2D" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the [PhysicsDirectBodyState2D] of the body.
</description>
</method>
<method name="body_get_max_contacts_reported" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the maximum contacts that can be reported. See [method body_set_max_contacts_reported].
</description>
</method>
<method name="body_get_mode" qualifiers="const">
- <return type="int" enum="PhysicsServer2D.BodyMode">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" enum="PhysicsServer2D.BodyMode" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the body mode.
</description>
</method>
<method name="body_get_object_instance_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="body" type="RID" />
<description>
Gets the instance ID of the object the area is assigned to.
</description>
</method>
<method name="body_get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer2D.BodyParameter">
- </argument>
+ <return type="float" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer2D.BodyParameter" />
<description>
Returns the value of a body parameter. See [enum BodyParameter] for a list of available parameters.
</description>
</method>
<method name="body_get_shape" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Returns the [RID] of the nth shape of a body.
</description>
</method>
<method name="body_get_shape_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the number of shapes assigned to a body.
</description>
</method>
<method name="body_get_shape_metadata" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Returns the metadata of a shape of a body.
</description>
</method>
<method name="body_get_shape_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Returns the transform matrix of a body shape.
</description>
</method>
<method name="body_get_space" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the [RID] of the space assigned to a body.
</description>
</method>
<method name="body_get_state" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="state" type="int" enum="PhysicsServer2D.BodyState">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="state" type="int" enum="PhysicsServer2D.BodyState" />
<description>
Returns a body state.
</description>
</method>
<method name="body_is_omitting_force_integration" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
</description>
</method>
<method name="body_remove_collision_exception">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="excepted_body" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="excepted_body" type="RID" />
<description>
Removes a body from the list of bodies exempt from collisions.
</description>
</method>
<method name="body_remove_shape">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Removes a shape from a body. The shape is not deleted, so it can be reused afterwards.
</description>
</method>
<method name="body_set_axis_velocity">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="axis_velocity" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="axis_velocity" type="Vector2" />
<description>
Sets an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.
</description>
</method>
<method name="body_set_collision_layer">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="layer" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="layer" type="int" />
<description>
Sets the physics layer or layers a body belongs to.
</description>
</method>
<method name="body_set_collision_mask">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
Sets the physics layer or layers a body can collide with.
</description>
</method>
<method name="body_set_continuous_collision_detection_mode">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="PhysicsServer2D.CCDMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="mode" type="int" enum="PhysicsServer2D.CCDMode" />
<description>
Sets the continuous collision detection mode using one of the [enum CCDMode] constants.
Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided.
</description>
</method>
<method name="body_set_force_integration_callback">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="callable" type="Callable">
- </argument>
- <argument index="2" name="userdata" type="Variant" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="callable" type="Callable" />
+ <argument index="2" name="userdata" type="Variant" default="null" />
<description>
Sets the function used to calculate physics for an object, if that object allows it (see [method body_set_omit_force_integration]).
</description>
</method>
<method name="body_set_max_contacts_reported">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="amount" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="amount" type="int" />
<description>
Sets the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0.
</description>
</method>
<method name="body_set_mode">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="PhysicsServer2D.BodyMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="mode" type="int" enum="PhysicsServer2D.BodyMode" />
<description>
Sets the body mode using one of the [enum BodyMode] constants.
</description>
</method>
<method name="body_set_omit_force_integration">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
Sets whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
</description>
</method>
<method name="body_set_param">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer2D.BodyParameter">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer2D.BodyParameter" />
+ <argument index="2" name="value" type="float" />
<description>
Sets a body parameter. See [enum BodyParameter] for a list of available parameters.
</description>
</method>
<method name="body_set_shape">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="shape" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="shape" type="RID" />
<description>
Substitutes a given body shape by another. The old shape is selected by its index, the new one by its [RID].
</description>
</method>
<method name="body_set_shape_as_one_way_collision">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="enable" type="bool">
- </argument>
- <argument index="3" name="margin" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="enable" type="bool" />
+ <argument index="3" name="margin" type="float" />
<description>
Enables one way collision on body if [code]enable[/code] is [code]true[/code].
</description>
</method>
<method name="body_set_shape_disabled">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="disabled" type="bool" />
<description>
Disables shape in body if [code]disable[/code] is [code]true[/code].
</description>
</method>
<method name="body_set_shape_metadata">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="metadata" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="metadata" type="Variant" />
<description>
Sets metadata of a shape within a body. This metadata is different from [method Object.set_meta], and can be retrieved on shape queries.
</description>
</method>
<method name="body_set_shape_transform">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="transform" type="Transform2D" />
<description>
Sets the transform matrix for a body shape.
</description>
</method>
<method name="body_set_space">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="space" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="space" type="RID" />
<description>
Assigns a space to the body (see [method space_create]).
</description>
</method>
<method name="body_set_state">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="state" type="int" enum="PhysicsServer2D.BodyState">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="state" type="int" enum="PhysicsServer2D.BodyState" />
+ <argument index="2" name="value" type="Variant" />
<description>
Sets a body state using one of the [enum BodyState] constants.
Note that the method doesn't take effect immediately. The state will change on the next physics frame.
</description>
</method>
<method name="body_test_motion">
- <return type="bool">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="from" type="Transform2D">
- </argument>
- <argument index="2" name="motion" type="Vector2">
- </argument>
- <argument index="3" name="infinite_inertia" type="bool">
- </argument>
- <argument index="4" name="margin" type="float" default="0.08">
- </argument>
- <argument index="5" name="result" type="PhysicsTestMotionResult2D" default="null">
- </argument>
- <argument index="6" name="exclude_raycast_shapes" type="bool" default="true">
- </argument>
- <argument index="7" name="exclude" type="Array" default="[]">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="from" type="Transform2D" />
+ <argument index="2" name="motion" type="Vector2" />
+ <argument index="3" name="infinite_inertia" type="bool" />
+ <argument index="4" name="margin" type="float" default="0.08" />
+ <argument index="5" name="result" type="PhysicsTestMotionResult2D" default="null" />
+ <argument index="6" name="exclude_raycast_shapes" type="bool" default="true" />
+ <argument index="7" name="exclude" type="Array" default="[]" />
<description>
Returns [code]true[/code] if a collision would result from moving in the given direction from a given point in space. Margin increases the size of the shapes involved in the collision detection. [PhysicsTestMotionResult2D] can be passed to return additional information in.
</description>
</method>
<method name="capsule_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="circle_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="concave_polygon_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="convex_polygon_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="damped_spring_joint_get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer2D.DampedSpringParam">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer2D.DampedSpringParam" />
<description>
Returns the value of a damped spring joint parameter. See [enum DampedSpringParam] for a list of available parameters.
</description>
</method>
<method name="damped_spring_joint_set_param">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer2D.DampedSpringParam">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer2D.DampedSpringParam" />
+ <argument index="2" name="value" type="float" />
<description>
Sets a damped spring joint parameter. See [enum DampedSpringParam] for a list of available parameters.
</description>
</method>
<method name="free_rid">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
Destroys any of the objects created by PhysicsServer2D. If the [RID] passed is not one of the objects that can be created by PhysicsServer2D, an error will be sent to the console.
</description>
</method>
<method name="get_process_info">
- <return type="int">
- </return>
- <argument index="0" name="process_info" type="int" enum="PhysicsServer2D.ProcessInfo">
- </argument>
+ <return type="int" />
+ <argument index="0" name="process_info" type="int" enum="PhysicsServer2D.ProcessInfo" />
<description>
Returns information about the current state of the 2D physics engine. See [enum ProcessInfo] for a list of available states.
</description>
</method>
<method name="joint_clear">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
<description>
</description>
</method>
<method name="joint_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="joint_get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer2D.JointParam">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer2D.JointParam" />
<description>
Returns the value of a joint parameter.
</description>
</method>
<method name="joint_get_type" qualifiers="const">
- <return type="int" enum="PhysicsServer2D.JointType">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
+ <return type="int" enum="PhysicsServer2D.JointType" />
+ <argument index="0" name="joint" type="RID" />
<description>
Returns a joint's type (see [enum JointType]).
</description>
</method>
<method name="joint_make_damped_spring">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="anchor_a" type="Vector2">
- </argument>
- <argument index="2" name="anchor_b" type="Vector2">
- </argument>
- <argument index="3" name="body_a" type="RID">
- </argument>
- <argument index="4" name="body_b" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="anchor_a" type="Vector2" />
+ <argument index="2" name="anchor_b" type="Vector2" />
+ <argument index="3" name="body_a" type="RID" />
+ <argument index="4" name="body_b" type="RID" />
<description>
</description>
</method>
<method name="joint_make_groove">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="groove1_a" type="Vector2">
- </argument>
- <argument index="2" name="groove2_a" type="Vector2">
- </argument>
- <argument index="3" name="anchor_b" type="Vector2">
- </argument>
- <argument index="4" name="body_a" type="RID">
- </argument>
- <argument index="5" name="body_b" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="groove1_a" type="Vector2" />
+ <argument index="2" name="groove2_a" type="Vector2" />
+ <argument index="3" name="anchor_b" type="Vector2" />
+ <argument index="4" name="body_a" type="RID" />
+ <argument index="5" name="body_b" type="RID" />
<description>
</description>
</method>
<method name="joint_make_pin">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="anchor" type="Vector2">
- </argument>
- <argument index="2" name="body_a" type="RID">
- </argument>
- <argument index="3" name="body_b" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="anchor" type="Vector2" />
+ <argument index="2" name="body_a" type="RID" />
+ <argument index="3" name="body_b" type="RID" />
<description>
</description>
</method>
<method name="joint_set_param">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer2D.JointParam">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer2D.JointParam" />
+ <argument index="2" name="value" type="float" />
<description>
Sets a joint parameter. See [enum JointParam] for a list of available parameters.
</description>
</method>
<method name="line_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="ray_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="rectangle_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="segment_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="set_active">
- <return type="void">
- </return>
- <argument index="0" name="active" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="active" type="bool" />
<description>
Activates or deactivates the 2D physics engine.
</description>
</method>
<method name="set_collision_iterations">
- <return type="void">
- </return>
- <argument index="0" name="iterations" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="iterations" type="int" />
<description>
Sets the amount of iterations for calculating velocities of colliding bodies. The greater the amount of iterations, the more accurate the collisions will be. However, a greater amount of iterations requires more CPU power, which can decrease performance. The default value is [code]8[/code].
</description>
</method>
<method name="shape_get_data" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="shape" type="RID">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="shape" type="RID" />
<description>
Returns the shape data.
</description>
</method>
<method name="shape_get_type" qualifiers="const">
- <return type="int" enum="PhysicsServer2D.ShapeType">
- </return>
- <argument index="0" name="shape" type="RID">
- </argument>
+ <return type="int" enum="PhysicsServer2D.ShapeType" />
+ <argument index="0" name="shape" type="RID" />
<description>
Returns a shape's type (see [enum ShapeType]).
</description>
</method>
<method name="shape_set_data">
- <return type="void">
- </return>
- <argument index="0" name="shape" type="RID">
- </argument>
- <argument index="1" name="data" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shape" type="RID" />
+ <argument index="1" name="data" type="Variant" />
<description>
Sets the shape data that defines its shape and size. The data to be passed depends on the kind of shape created [method shape_get_type].
</description>
</method>
<method name="space_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a space. A space is a collection of parameters for the physics engine that can be assigned to an area or a body. It can be assigned to an area with [method area_set_space], or to a body with [method body_set_space].
</description>
</method>
<method name="space_get_direct_state">
- <return type="PhysicsDirectSpaceState2D">
- </return>
- <argument index="0" name="space" type="RID">
- </argument>
+ <return type="PhysicsDirectSpaceState2D" />
+ <argument index="0" name="space" type="RID" />
<description>
Returns the state of a space, a [PhysicsDirectSpaceState2D]. This object can be used to make collision/intersection queries.
</description>
</method>
<method name="space_get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="space" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer2D.SpaceParameter">
- </argument>
+ <return type="float" />
+ <argument index="0" name="space" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer2D.SpaceParameter" />
<description>
Returns the value of a space parameter.
</description>
</method>
<method name="space_is_active" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="space" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="space" type="RID" />
<description>
Returns whether the space is active.
</description>
</method>
<method name="space_set_active">
- <return type="void">
- </return>
- <argument index="0" name="space" type="RID">
- </argument>
- <argument index="1" name="active" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="space" type="RID" />
+ <argument index="1" name="active" type="bool" />
<description>
Marks a space as active. It will not have an effect, unless it is assigned to an area or body.
</description>
</method>
<method name="space_set_param">
- <return type="void">
- </return>
- <argument index="0" name="space" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer2D.SpaceParameter">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="space" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer2D.SpaceParameter" />
+ <argument index="2" name="value" type="float" />
<description>
Sets the value for a space parameter. See [enum SpaceParameter] for a list of available parameters.
</description>
diff --git a/doc/classes/PhysicsServer3D.xml b/doc/classes/PhysicsServer3D.xml
index 9db7ff5c12..7bca8afdda 100644
--- a/doc/classes/PhysicsServer3D.xml
+++ b/doc/classes/PhysicsServer3D.xml
@@ -10,179 +10,132 @@
</tutorials>
<methods>
<method name="area_add_shape">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape" type="RID">
- </argument>
- <argument index="2" name="transform" type="Transform3D" default="Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)">
- </argument>
- <argument index="3" name="disabled" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape" type="RID" />
+ <argument index="2" name="transform" type="Transform3D" default="Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)" />
+ <argument index="3" name="disabled" type="bool" default="false" />
<description>
Adds a shape to the area, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.
</description>
</method>
<method name="area_attach_object_instance_id">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="id" type="int" />
<description>
Assigns the area to a descendant of [Object], so it can exist in the node tree.
</description>
</method>
<method name="area_clear_shapes">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
<description>
Removes all shapes from an area. It does not delete the shapes, so they can be reassigned later.
</description>
</method>
<method name="area_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates an [Area3D].
</description>
</method>
<method name="area_get_object_instance_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="area" type="RID" />
<description>
Gets the instance ID of the object the area is assigned to.
</description>
</method>
<method name="area_get_param" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.AreaParameter">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.AreaParameter" />
<description>
Returns an area parameter value. A list of available parameters is on the [enum AreaParameter] constants.
</description>
</method>
<method name="area_get_shape" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Returns the [RID] of the nth shape of an area.
</description>
</method>
<method name="area_get_shape_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="area" type="RID" />
<description>
Returns the number of shapes assigned to an area.
</description>
</method>
<method name="area_get_shape_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Returns the transform matrix of a shape within an area.
</description>
</method>
<method name="area_get_space" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="area" type="RID" />
<description>
Returns the space assigned to the area.
</description>
</method>
<method name="area_get_space_override_mode" qualifiers="const">
- <return type="int" enum="PhysicsServer3D.AreaSpaceOverrideMode">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="int" enum="PhysicsServer3D.AreaSpaceOverrideMode" />
+ <argument index="0" name="area" type="RID" />
<description>
Returns the space override mode for the area.
</description>
</method>
<method name="area_get_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="area" type="RID" />
<description>
Returns the transform matrix for an area.
</description>
</method>
<method name="area_remove_shape">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Removes a shape from an area. It does not delete the shape, so it can be reassigned later.
</description>
</method>
<method name="area_set_area_monitor_callback">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="receiver" type="Object">
- </argument>
- <argument index="2" name="method" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="receiver" type="Object" />
+ <argument index="2" name="method" type="StringName" />
<description>
</description>
</method>
<method name="area_set_collision_layer">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="layer" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="layer" type="int" />
<description>
Assigns the area to one or many physics layers.
</description>
</method>
<method name="area_set_collision_mask">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
Sets which physics layers the area will monitor.
</description>
</method>
<method name="area_set_monitor_callback">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="receiver" type="Object">
- </argument>
- <argument index="2" name="method" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="receiver" type="Object" />
+ <argument index="2" name="method" type="StringName" />
<description>
Sets the function to call when any body/area enters or exits the area. This callback will be called for any object interacting with the area, and takes five parameters:
1: [constant AREA_BODY_ADDED] or [constant AREA_BODY_REMOVED], depending on whether the object entered or exited the area.
@@ -193,1134 +146,821 @@
</description>
</method>
<method name="area_set_monitorable">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="monitorable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="monitorable" type="bool" />
<description>
</description>
</method>
<method name="area_set_param">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.AreaParameter">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.AreaParameter" />
+ <argument index="2" name="value" type="Variant" />
<description>
Sets the value for an area parameter. A list of available parameters is on the [enum AreaParameter] constants.
</description>
</method>
<method name="area_set_ray_pickable">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
Sets object pickable with rays.
</description>
</method>
<method name="area_set_shape">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="shape" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="shape" type="RID" />
<description>
Substitutes a given area shape by another. The old shape is selected by its index, the new one by its [RID].
</description>
</method>
<method name="area_set_shape_disabled">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="disabled" type="bool" />
<description>
</description>
</method>
<method name="area_set_shape_transform">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="transform" type="Transform3D" />
<description>
Sets the transform matrix for an area shape.
</description>
</method>
<method name="area_set_space">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="space" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="space" type="RID" />
<description>
Assigns a space to the area.
</description>
</method>
<method name="area_set_space_override_mode">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="PhysicsServer3D.AreaSpaceOverrideMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="mode" type="int" enum="PhysicsServer3D.AreaSpaceOverrideMode" />
<description>
Sets the space override mode for the area. The modes are described in the [enum AreaSpaceOverrideMode] constants.
</description>
</method>
<method name="area_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="area" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="area" type="RID" />
+ <argument index="1" name="transform" type="Transform3D" />
<description>
Sets the transform matrix for an area.
</description>
</method>
<method name="body_add_central_force">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="force" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="force" type="Vector3" />
<description>
</description>
</method>
<method name="body_add_collision_exception">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="excepted_body" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="excepted_body" type="RID" />
<description>
Adds a body to the list of bodies exempt from collisions.
</description>
</method>
<method name="body_add_force">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="force" type="Vector3">
- </argument>
- <argument index="2" name="position" type="Vector3" default="Vector3(0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="force" type="Vector3" />
+ <argument index="2" name="position" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
</description>
</method>
<method name="body_add_shape">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape" type="RID">
- </argument>
- <argument index="2" name="transform" type="Transform3D" default="Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)">
- </argument>
- <argument index="3" name="disabled" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape" type="RID" />
+ <argument index="2" name="transform" type="Transform3D" default="Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)" />
+ <argument index="3" name="disabled" type="bool" default="false" />
<description>
Adds a shape to the body, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.
</description>
</method>
<method name="body_add_torque">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="torque" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="torque" type="Vector3" />
<description>
</description>
</method>
<method name="body_apply_central_impulse">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="impulse" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="impulse" type="Vector3" />
<description>
</description>
</method>
<method name="body_apply_impulse">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="impulse" type="Vector3">
- </argument>
- <argument index="2" name="position" type="Vector3" default="Vector3(0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="impulse" type="Vector3" />
+ <argument index="2" name="position" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
Gives the body a push at a [code]position[/code] in the direction of the [code]impulse[/code].
</description>
</method>
<method name="body_apply_torque_impulse">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="impulse" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="impulse" type="Vector3" />
<description>
Gives the body a push to rotate it.
</description>
</method>
<method name="body_attach_object_instance_id">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="id" type="int" />
<description>
Assigns the area to a descendant of [Object], so it can exist in the node tree.
</description>
</method>
<method name="body_clear_shapes">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
<description>
Removes all shapes from a body.
</description>
</method>
<method name="body_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="body_get_collision_layer" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the physics layer or layers a body belongs to.
</description>
</method>
<method name="body_get_collision_mask" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the physics layer or layers a body can collide with.
-
</description>
</method>
<method name="body_get_direct_state">
- <return type="PhysicsDirectBodyState3D">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="PhysicsDirectBodyState3D" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the [PhysicsDirectBodyState3D] of the body.
</description>
</method>
<method name="body_get_max_contacts_reported" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the maximum contacts that can be reported. See [method body_set_max_contacts_reported].
</description>
</method>
<method name="body_get_mode" qualifiers="const">
- <return type="int" enum="PhysicsServer3D.BodyMode">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" enum="PhysicsServer3D.BodyMode" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the body mode.
</description>
</method>
<method name="body_get_object_instance_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="body" type="RID" />
<description>
Gets the instance ID of the object the area is assigned to.
</description>
</method>
<method name="body_get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.BodyParameter">
- </argument>
+ <return type="float" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.BodyParameter" />
<description>
Returns the value of a body parameter. A list of available parameters is on the [enum BodyParameter] constants.
</description>
</method>
<method name="body_get_shape" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Returns the [RID] of the nth shape of a body.
</description>
</method>
<method name="body_get_shape_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the number of shapes assigned to a body.
</description>
</method>
<method name="body_get_shape_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Returns the transform matrix of a body shape.
</description>
</method>
<method name="body_get_space" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns the [RID] of the space assigned to a body.
</description>
</method>
<method name="body_get_state" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="state" type="int" enum="PhysicsServer3D.BodyState">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="state" type="int" enum="PhysicsServer3D.BodyState" />
<description>
Returns a body state.
</description>
</method>
<method name="body_is_axis_locked" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="axis" type="int" enum="PhysicsServer3D.BodyAxis">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="axis" type="int" enum="PhysicsServer3D.BodyAxis" />
<description>
</description>
</method>
<method name="body_is_continuous_collision_detection_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="body" type="RID" />
<description>
If [code]true[/code], the continuous collision detection mode is enabled.
</description>
</method>
<method name="body_is_omitting_force_integration" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="body" type="RID" />
<description>
Returns whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
</description>
</method>
<method name="body_remove_collision_exception">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="excepted_body" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="excepted_body" type="RID" />
<description>
Removes a body from the list of bodies exempt from collisions.
Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided.
</description>
</method>
<method name="body_remove_shape">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
<description>
Removes a shape from a body. The shape is not deleted, so it can be reused afterwards.
</description>
</method>
<method name="body_set_axis_lock">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="axis" type="int" enum="PhysicsServer3D.BodyAxis">
- </argument>
- <argument index="2" name="lock" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="axis" type="int" enum="PhysicsServer3D.BodyAxis" />
+ <argument index="2" name="lock" type="bool" />
<description>
</description>
</method>
<method name="body_set_axis_velocity">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="axis_velocity" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="axis_velocity" type="Vector3" />
<description>
Sets an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.
</description>
</method>
<method name="body_set_collision_layer">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="layer" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="layer" type="int" />
<description>
Sets the physics layer or layers a body belongs to.
</description>
</method>
<method name="body_set_collision_mask">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
Sets the physics layer or layers a body can collide with.
</description>
</method>
<method name="body_set_enable_continuous_collision_detection">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], the continuous collision detection mode is enabled.
Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided.
</description>
</method>
<method name="body_set_force_integration_callback">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="callable" type="Callable">
- </argument>
- <argument index="2" name="userdata" type="Variant" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="callable" type="Callable" />
+ <argument index="2" name="userdata" type="Variant" default="null" />
<description>
Sets the function used to calculate physics for an object, if that object allows it (see [method body_set_omit_force_integration]).
</description>
</method>
<method name="body_set_max_contacts_reported">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="amount" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="amount" type="int" />
<description>
Sets the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0.
</description>
</method>
<method name="body_set_mode">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="PhysicsServer3D.BodyMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="mode" type="int" enum="PhysicsServer3D.BodyMode" />
<description>
Sets the body mode, from one of the [enum BodyMode] constants.
</description>
</method>
<method name="body_set_omit_force_integration">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
Sets whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
</description>
</method>
<method name="body_set_param">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.BodyParameter">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.BodyParameter" />
+ <argument index="2" name="value" type="float" />
<description>
Sets a body parameter. A list of available parameters is on the [enum BodyParameter] constants.
</description>
</method>
<method name="body_set_ray_pickable">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
Sets the body pickable with rays if [code]enabled[/code] is set.
</description>
</method>
<method name="body_set_shape">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="shape" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="shape" type="RID" />
<description>
Substitutes a given body shape by another. The old shape is selected by its index, the new one by its [RID].
</description>
</method>
<method name="body_set_shape_disabled">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="disabled" type="bool" />
<description>
</description>
</method>
<method name="body_set_shape_transform">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="shape_idx" type="int">
- </argument>
- <argument index="2" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="shape_idx" type="int" />
+ <argument index="2" name="transform" type="Transform3D" />
<description>
Sets the transform matrix for a body shape.
</description>
</method>
<method name="body_set_space">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="space" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="space" type="RID" />
<description>
Assigns a space to the body (see [method space_create]).
</description>
</method>
<method name="body_set_state">
- <return type="void">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="state" type="int" enum="PhysicsServer3D.BodyState">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="state" type="int" enum="PhysicsServer3D.BodyState" />
+ <argument index="2" name="value" type="Variant" />
<description>
Sets a body state (see [enum BodyState] constants).
</description>
</method>
<method name="body_test_motion">
- <return type="bool">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
- <argument index="1" name="from" type="Transform3D">
- </argument>
- <argument index="2" name="motion" type="Vector3">
- </argument>
- <argument index="3" name="infinite_inertia" type="bool">
- </argument>
- <argument index="4" name="margin" type="float" default="0.001">
- </argument>
- <argument index="5" name="result" type="PhysicsTestMotionResult3D" default="null">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="body" type="RID" />
+ <argument index="1" name="from" type="Transform3D" />
+ <argument index="2" name="motion" type="Vector3" />
+ <argument index="3" name="infinite_inertia" type="bool" />
+ <argument index="4" name="margin" type="float" default="0.001" />
+ <argument index="5" name="result" type="PhysicsTestMotionResult3D" default="null" />
<description>
Returns [code]true[/code] if a collision would result from moving in the given direction from a given point in space. Margin increases the size of the shapes involved in the collision detection. [PhysicsTestMotionResult3D] can be passed to return additional information in.
</description>
</method>
<method name="box_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="capsule_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="concave_polygon_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="cone_twist_joint_get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.ConeTwistJointParam">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.ConeTwistJointParam" />
<description>
Gets a cone_twist_joint parameter (see [enum ConeTwistJointParam] constants).
</description>
</method>
<method name="cone_twist_joint_set_param">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.ConeTwistJointParam">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.ConeTwistJointParam" />
+ <argument index="2" name="value" type="float" />
<description>
Sets a cone_twist_joint parameter (see [enum ConeTwistJointParam] constants).
</description>
</method>
<method name="convex_polygon_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="custom_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="cylinder_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="free_rid">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
Destroys any of the objects created by PhysicsServer3D. If the [RID] passed is not one of the objects that can be created by PhysicsServer3D, an error will be sent to the console.
</description>
</method>
<method name="generic_6dof_joint_get_flag" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="axis" type="int" enum="Vector3.Axis">
- </argument>
- <argument index="2" name="flag" type="int" enum="PhysicsServer3D.G6DOFJointAxisFlag">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="axis" type="int" enum="Vector3.Axis" />
+ <argument index="2" name="flag" type="int" enum="PhysicsServer3D.G6DOFJointAxisFlag" />
<description>
Gets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants).
</description>
</method>
<method name="generic_6dof_joint_get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="axis" type="int" enum="Vector3.Axis">
- </argument>
- <argument index="2" name="param" type="int" enum="PhysicsServer3D.G6DOFJointAxisParam">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="axis" type="int" enum="Vector3.Axis" />
+ <argument index="2" name="param" type="int" enum="PhysicsServer3D.G6DOFJointAxisParam" />
<description>
Gets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] constants).
</description>
</method>
<method name="generic_6dof_joint_set_flag">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="axis" type="int" enum="Vector3.Axis">
- </argument>
- <argument index="2" name="flag" type="int" enum="PhysicsServer3D.G6DOFJointAxisFlag">
- </argument>
- <argument index="3" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="axis" type="int" enum="Vector3.Axis" />
+ <argument index="2" name="flag" type="int" enum="PhysicsServer3D.G6DOFJointAxisFlag" />
+ <argument index="3" name="enable" type="bool" />
<description>
Sets a generic_6_DOF_joint flag (see [enum G6DOFJointAxisFlag] constants).
</description>
</method>
<method name="generic_6dof_joint_set_param">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="axis" type="int" enum="Vector3.Axis">
- </argument>
- <argument index="2" name="param" type="int" enum="PhysicsServer3D.G6DOFJointAxisParam">
- </argument>
- <argument index="3" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="axis" type="int" enum="Vector3.Axis" />
+ <argument index="2" name="param" type="int" enum="PhysicsServer3D.G6DOFJointAxisParam" />
+ <argument index="3" name="value" type="float" />
<description>
Sets a generic_6_DOF_joint parameter (see [enum G6DOFJointAxisParam] constants).
</description>
</method>
<method name="get_process_info">
- <return type="int">
- </return>
- <argument index="0" name="process_info" type="int" enum="PhysicsServer3D.ProcessInfo">
- </argument>
+ <return type="int" />
+ <argument index="0" name="process_info" type="int" enum="PhysicsServer3D.ProcessInfo" />
<description>
Returns an Info defined by the [enum ProcessInfo] input given.
</description>
</method>
<method name="heightmap_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="hinge_joint_get_flag" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="flag" type="int" enum="PhysicsServer3D.HingeJointFlag">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="flag" type="int" enum="PhysicsServer3D.HingeJointFlag" />
<description>
Gets a hinge_joint flag (see [enum HingeJointFlag] constants).
</description>
</method>
<method name="hinge_joint_get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.HingeJointParam">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.HingeJointParam" />
<description>
Gets a hinge_joint parameter (see [enum HingeJointParam]).
</description>
</method>
<method name="hinge_joint_set_flag">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="flag" type="int" enum="PhysicsServer3D.HingeJointFlag">
- </argument>
- <argument index="2" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="flag" type="int" enum="PhysicsServer3D.HingeJointFlag" />
+ <argument index="2" name="enabled" type="bool" />
<description>
Sets a hinge_joint flag (see [enum HingeJointFlag] constants).
</description>
</method>
<method name="hinge_joint_set_param">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.HingeJointParam">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.HingeJointParam" />
+ <argument index="2" name="value" type="float" />
<description>
Sets a hinge_joint parameter (see [enum HingeJointParam] constants).
</description>
</method>
<method name="joint_clear">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
<description>
</description>
</method>
<method name="joint_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="joint_get_solver_priority" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="joint" type="RID" />
<description>
Gets the priority value of the Joint3D.
</description>
</method>
<method name="joint_get_type" qualifiers="const">
- <return type="int" enum="PhysicsServer3D.JointType">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
+ <return type="int" enum="PhysicsServer3D.JointType" />
+ <argument index="0" name="joint" type="RID" />
<description>
Returns the type of the Joint3D.
</description>
</method>
<method name="joint_make_cone_twist">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="body_A" type="RID">
- </argument>
- <argument index="2" name="local_ref_A" type="Transform3D">
- </argument>
- <argument index="3" name="body_B" type="RID">
- </argument>
- <argument index="4" name="local_ref_B" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="body_A" type="RID" />
+ <argument index="2" name="local_ref_A" type="Transform3D" />
+ <argument index="3" name="body_B" type="RID" />
+ <argument index="4" name="local_ref_B" type="Transform3D" />
<description>
</description>
</method>
<method name="joint_make_generic_6dof">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="body_A" type="RID">
- </argument>
- <argument index="2" name="local_ref_A" type="Transform3D">
- </argument>
- <argument index="3" name="body_B" type="RID">
- </argument>
- <argument index="4" name="local_ref_B" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="body_A" type="RID" />
+ <argument index="2" name="local_ref_A" type="Transform3D" />
+ <argument index="3" name="body_B" type="RID" />
+ <argument index="4" name="local_ref_B" type="Transform3D" />
<description>
</description>
</method>
<method name="joint_make_hinge">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="body_A" type="RID">
- </argument>
- <argument index="2" name="hinge_A" type="Transform3D">
- </argument>
- <argument index="3" name="body_B" type="RID">
- </argument>
- <argument index="4" name="hinge_B" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="body_A" type="RID" />
+ <argument index="2" name="hinge_A" type="Transform3D" />
+ <argument index="3" name="body_B" type="RID" />
+ <argument index="4" name="hinge_B" type="Transform3D" />
<description>
</description>
</method>
<method name="joint_make_pin">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="body_A" type="RID">
- </argument>
- <argument index="2" name="local_A" type="Vector3">
- </argument>
- <argument index="3" name="body_B" type="RID">
- </argument>
- <argument index="4" name="local_B" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="body_A" type="RID" />
+ <argument index="2" name="local_A" type="Vector3" />
+ <argument index="3" name="body_B" type="RID" />
+ <argument index="4" name="local_B" type="Vector3" />
<description>
</description>
</method>
<method name="joint_make_slider">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="body_A" type="RID">
- </argument>
- <argument index="2" name="local_ref_A" type="Transform3D">
- </argument>
- <argument index="3" name="body_B" type="RID">
- </argument>
- <argument index="4" name="local_ref_B" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="body_A" type="RID" />
+ <argument index="2" name="local_ref_A" type="Transform3D" />
+ <argument index="3" name="body_B" type="RID" />
+ <argument index="4" name="local_ref_B" type="Transform3D" />
<description>
</description>
</method>
<method name="joint_set_solver_priority">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="priority" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="priority" type="int" />
<description>
Sets the priority value of the Joint3D.
</description>
</method>
<method name="pin_joint_get_local_a" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="joint" type="RID" />
<description>
Returns position of the joint in the local space of body a of the joint.
</description>
</method>
<method name="pin_joint_get_local_b" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="joint" type="RID" />
<description>
Returns position of the joint in the local space of body b of the joint.
</description>
</method>
<method name="pin_joint_get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.PinJointParam">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.PinJointParam" />
<description>
Gets a pin_joint parameter (see [enum PinJointParam] constants).
</description>
</method>
<method name="pin_joint_set_local_a">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="local_A" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="local_A" type="Vector3" />
<description>
Sets position of the joint in the local space of body a of the joint.
</description>
</method>
<method name="pin_joint_set_local_b">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="local_B" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="local_B" type="Vector3" />
<description>
Sets position of the joint in the local space of body b of the joint.
</description>
</method>
<method name="pin_joint_set_param">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.PinJointParam">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.PinJointParam" />
+ <argument index="2" name="value" type="float" />
<description>
Sets a pin_joint parameter (see [enum PinJointParam] constants).
</description>
</method>
<method name="plane_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="ray_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="set_active">
- <return type="void">
- </return>
- <argument index="0" name="active" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="active" type="bool" />
<description>
Activates or deactivates the 3D physics engine.
</description>
</method>
<method name="set_collision_iterations">
- <return type="void">
- </return>
- <argument index="0" name="iterations" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="iterations" type="int" />
<description>
Sets the amount of iterations for calculating velocities of colliding bodies. The greater the amount of iterations, the more accurate the collisions will be. However, a greater amount of iterations requires more CPU power, which can decrease performance. The default value is [code]8[/code].
[b]Note:[/b] Only has an effect when using the default GodotPhysics engine, not the Bullet physics engine.
</description>
</method>
<method name="shape_get_data" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="shape" type="RID">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="shape" type="RID" />
<description>
Returns the shape data.
</description>
</method>
<method name="shape_get_type" qualifiers="const">
- <return type="int" enum="PhysicsServer3D.ShapeType">
- </return>
- <argument index="0" name="shape" type="RID">
- </argument>
+ <return type="int" enum="PhysicsServer3D.ShapeType" />
+ <argument index="0" name="shape" type="RID" />
<description>
Returns the type of shape (see [enum ShapeType] constants).
</description>
</method>
<method name="shape_set_data">
- <return type="void">
- </return>
- <argument index="0" name="shape" type="RID">
- </argument>
- <argument index="1" name="data" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shape" type="RID" />
+ <argument index="1" name="data" type="Variant" />
<description>
Sets the shape data that defines its shape and size. The data to be passed depends on the kind of shape created [method shape_get_type].
</description>
</method>
<method name="slider_joint_get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.SliderJointParam">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.SliderJointParam" />
<description>
Gets a slider_joint parameter (see [enum SliderJointParam] constants).
</description>
</method>
<method name="slider_joint_set_param">
- <return type="void">
- </return>
- <argument index="0" name="joint" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.SliderJointParam">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.SliderJointParam" />
+ <argument index="2" name="value" type="float" />
<description>
Gets a slider_joint parameter (see [enum SliderJointParam] constants).
</description>
</method>
<method name="soft_body_get_bounds" qualifiers="const">
- <return type="AABB">
- </return>
- <argument index="0" name="body" type="RID">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="body" type="RID" />
<description>
</description>
</method>
<method name="space_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a space. A space is a collection of parameters for the physics engine that can be assigned to an area or a body. It can be assigned to an area with [method area_set_space], or to a body with [method body_set_space].
</description>
</method>
<method name="space_get_direct_state">
- <return type="PhysicsDirectSpaceState3D">
- </return>
- <argument index="0" name="space" type="RID">
- </argument>
+ <return type="PhysicsDirectSpaceState3D" />
+ <argument index="0" name="space" type="RID" />
<description>
Returns the state of a space, a [PhysicsDirectSpaceState3D]. This object can be used to make collision/intersection queries.
</description>
</method>
<method name="space_get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="space" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.SpaceParameter">
- </argument>
+ <return type="float" />
+ <argument index="0" name="space" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.SpaceParameter" />
<description>
Returns the value of a space parameter.
</description>
</method>
<method name="space_is_active" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="space" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="space" type="RID" />
<description>
Returns whether the space is active.
</description>
</method>
<method name="space_set_active">
- <return type="void">
- </return>
- <argument index="0" name="space" type="RID">
- </argument>
- <argument index="1" name="active" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="space" type="RID" />
+ <argument index="1" name="active" type="bool" />
<description>
Marks a space as active. It will not have an effect, unless it is assigned to an area or body.
</description>
</method>
<method name="space_set_param">
- <return type="void">
- </return>
- <argument index="0" name="space" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="PhysicsServer3D.SpaceParameter">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="space" type="RID" />
+ <argument index="1" name="param" type="int" enum="PhysicsServer3D.SpaceParameter" />
+ <argument index="2" name="value" type="float" />
<description>
Sets the value for a space parameter. A list of available parameters is on the [enum SpaceParameter] constants.
</description>
</method>
<method name="sphere_shape_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
diff --git a/doc/classes/PinJoint3D.xml b/doc/classes/PinJoint3D.xml
index 37a85e497f..84b60c0d8c 100644
--- a/doc/classes/PinJoint3D.xml
+++ b/doc/classes/PinJoint3D.xml
@@ -10,21 +10,16 @@
</tutorials>
<methods>
<method name="get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="PinJoint3D.Param">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="PinJoint3D.Param" />
<description>
Returns the value of the specified parameter.
</description>
</method>
<method name="set_param">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="PinJoint3D.Param">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="PinJoint3D.Param" />
+ <argument index="1" name="value" type="float" />
<description>
Sets the value of the specified parameter.
</description>
diff --git a/doc/classes/Plane.xml b/doc/classes/Plane.xml
index 12869061c4..c243c3ad15 100644
--- a/doc/classes/Plane.xml
+++ b/doc/classes/Plane.xml
@@ -11,189 +11,143 @@
</tutorials>
<methods>
<method name="Plane" qualifiers="constructor">
- <return type="Plane">
- </return>
+ <return type="Plane" />
<description>
Constructs a default-initialized [Plane] with all components set to [code]0[/code].
</description>
</method>
<method name="Plane" qualifiers="constructor">
- <return type="Plane">
- </return>
- <argument index="0" name="from" type="Plane">
- </argument>
+ <return type="Plane" />
+ <argument index="0" name="from" type="Plane" />
<description>
Constructs a [Plane] as a copy of the given [Plane].
</description>
</method>
<method name="Plane" qualifiers="constructor">
- <return type="Plane">
- </return>
- <argument index="0" name="a" type="float">
- </argument>
- <argument index="1" name="b" type="float">
- </argument>
- <argument index="2" name="c" type="float">
- </argument>
- <argument index="3" name="d" type="float">
- </argument>
+ <return type="Plane" />
+ <argument index="0" name="a" type="float" />
+ <argument index="1" name="b" type="float" />
+ <argument index="2" name="c" type="float" />
+ <argument index="3" name="d" type="float" />
<description>
Creates a plane from the four parameters. The three components of the resulting plane's [member normal] are [code]a[/code], [code]b[/code] and [code]c[/code], and the plane has a distance of [code]d[/code] from the origin.
</description>
</method>
<method name="Plane" qualifiers="constructor">
- <return type="Plane">
- </return>
- <argument index="0" name="normal" type="Vector3">
- </argument>
- <argument index="1" name="d" type="float">
- </argument>
+ <return type="Plane" />
+ <argument index="0" name="normal" type="Vector3" />
+ <argument index="1" name="d" type="float" />
<description>
Creates a plane from the normal and the plane's distance to the origin.
</description>
</method>
<method name="Plane" qualifiers="constructor">
- <return type="Plane">
- </return>
- <argument index="0" name="point" type="Vector3">
- </argument>
- <argument index="1" name="normal" type="Vector3">
- </argument>
+ <return type="Plane" />
+ <argument index="0" name="point" type="Vector3" />
+ <argument index="1" name="normal" type="Vector3" />
<description>
Creates a plane from the given position and a plane normal.
</description>
</method>
<method name="Plane" qualifiers="constructor">
- <return type="Plane">
- </return>
- <argument index="0" name="point1" type="Vector3">
- </argument>
- <argument index="1" name="point2" type="Vector3">
- </argument>
- <argument index="2" name="point3" type="Vector3">
- </argument>
+ <return type="Plane" />
+ <argument index="0" name="point1" type="Vector3" />
+ <argument index="1" name="point2" type="Vector3" />
+ <argument index="2" name="point3" type="Vector3" />
<description>
Creates a plane from the three points, given in clockwise order.
</description>
</method>
<method name="center" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the center of the plane.
</description>
</method>
<method name="distance_to" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="point" type="Vector3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="point" type="Vector3" />
<description>
Returns the shortest distance from the plane to the position [code]point[/code].
</description>
</method>
<method name="has_point" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="point" type="Vector3">
- </argument>
- <argument index="1" name="epsilon" type="float" default="1e-05">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="point" type="Vector3" />
+ <argument index="1" name="epsilon" type="float" default="1e-05" />
<description>
Returns [code]true[/code] if [code]point[/code] is inside the plane. Comparison uses a custom minimum [code]epsilon[/code] threshold.
</description>
</method>
<method name="intersect_3" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="b" type="Plane">
- </argument>
- <argument index="1" name="c" type="Plane">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="b" type="Plane" />
+ <argument index="1" name="c" type="Plane" />
<description>
Returns the intersection point of the three planes [code]b[/code], [code]c[/code] and this plane. If no intersection is found, [code]null[/code] is returned.
</description>
</method>
<method name="intersects_ray" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
- <argument index="1" name="dir" type="Vector3">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="from" type="Vector3" />
+ <argument index="1" name="dir" type="Vector3" />
<description>
Returns the intersection point of a ray consisting of the position [code]from[/code] and the direction normal [code]dir[/code] with this plane. If no intersection is found, [code]null[/code] is returned.
</description>
</method>
<method name="intersects_segment" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
- <argument index="1" name="to" type="Vector3">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="from" type="Vector3" />
+ <argument index="1" name="to" type="Vector3" />
<description>
Returns the intersection point of a segment from position [code]begin[/code] to position [code]end[/code] with this plane. If no intersection is found, [code]null[/code] is returned.
</description>
</method>
<method name="is_equal_approx" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="to_plane" type="Plane">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="to_plane" type="Plane" />
<description>
Returns [code]true[/code] if this plane and [code]plane[/code] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.
</description>
</method>
<method name="is_point_over" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="plane" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="plane" type="Vector3" />
<description>
Returns [code]true[/code] if [code]point[/code] is located above the plane.
</description>
</method>
<method name="normalized" qualifiers="const">
- <return type="Plane">
- </return>
+ <return type="Plane" />
<description>
Returns a copy of the plane, normalized.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Plane">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Plane" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Plane">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Plane" />
<description>
</description>
</method>
<method name="operator unary+" qualifiers="operator">
- <return type="Plane">
- </return>
+ <return type="Plane" />
<description>
</description>
</method>
<method name="operator unary-" qualifiers="operator">
- <return type="Plane">
- </return>
+ <return type="Plane" />
<description>
</description>
</method>
<method name="project" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="point" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="point" type="Vector3" />
<description>
Returns the orthogonal projection of [code]point[/code] into a point in the plane.
</description>
diff --git a/doc/classes/Polygon2D.xml b/doc/classes/Polygon2D.xml
index 5a53063148..23106cddf7 100644
--- a/doc/classes/Polygon2D.xml
+++ b/doc/classes/Polygon2D.xml
@@ -10,75 +10,58 @@
</tutorials>
<methods>
<method name="add_bone">
- <return type="void">
- </return>
- <argument index="0" name="path" type="NodePath">
- </argument>
- <argument index="1" name="weights" type="PackedFloat32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="NodePath" />
+ <argument index="1" name="weights" type="PackedFloat32Array" />
<description>
Adds a bone with the specified [code]path[/code] and [code]weights[/code].
</description>
</method>
<method name="clear_bones">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all bones from this [Polygon2D].
</description>
</method>
<method name="erase_bone">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes the specified bone from this [Polygon2D].
</description>
</method>
<method name="get_bone_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of bones in this [Polygon2D].
</description>
</method>
<method name="get_bone_path" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the path to the node associated with the specified bone.
</description>
</method>
<method name="get_bone_weights" qualifiers="const">
- <return type="PackedFloat32Array">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="PackedFloat32Array" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the height values of the specified bone.
</description>
</method>
<method name="set_bone_path">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="path" type="NodePath">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="path" type="NodePath" />
<description>
Sets the path to the node associated with the specified bone.
</description>
</method>
<method name="set_bone_weights">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="weights" type="PackedFloat32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="weights" type="PackedFloat32Array" />
<description>
Sets the weight values for the specified bone.
</description>
diff --git a/doc/classes/PolygonPathFinder.xml b/doc/classes/PolygonPathFinder.xml
index 49453d32ac..f77912bafe 100644
--- a/doc/classes/PolygonPathFinder.xml
+++ b/doc/classes/PolygonPathFinder.xml
@@ -8,72 +8,53 @@
</tutorials>
<methods>
<method name="find_path">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="from" type="Vector2">
- </argument>
- <argument index="1" name="to" type="Vector2">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="from" type="Vector2" />
+ <argument index="1" name="to" type="Vector2" />
<description>
</description>
</method>
<method name="get_bounds" qualifiers="const">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
</description>
</method>
<method name="get_closest_point" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="point" type="Vector2" />
<description>
</description>
</method>
<method name="get_intersections" qualifiers="const">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="from" type="Vector2">
- </argument>
- <argument index="1" name="to" type="Vector2">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="from" type="Vector2" />
+ <argument index="1" name="to" type="Vector2" />
<description>
</description>
</method>
<method name="get_point_penalty" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="idx" type="int" />
<description>
</description>
</method>
<method name="is_point_inside" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="point" type="Vector2" />
<description>
</description>
</method>
<method name="set_point_penalty">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="penalty" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="penalty" type="float" />
<description>
</description>
</method>
<method name="setup">
- <return type="void">
- </return>
- <argument index="0" name="points" type="PackedVector2Array">
- </argument>
- <argument index="1" name="connections" type="PackedInt32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="points" type="PackedVector2Array" />
+ <argument index="1" name="connections" type="PackedInt32Array" />
<description>
</description>
</method>
diff --git a/doc/classes/PopupMenu.xml b/doc/classes/PopupMenu.xml
index 3489c5435a..61b5aa89a6 100644
--- a/doc/classes/PopupMenu.xml
+++ b/doc/classes/PopupMenu.xml
@@ -12,14 +12,10 @@
</tutorials>
<methods>
<method name="add_check_item">
- <return type="void">
- </return>
- <argument index="0" name="label" type="String">
- </argument>
- <argument index="1" name="id" type="int" default="-1">
- </argument>
- <argument index="2" name="accel" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="label" type="String" />
+ <argument index="1" name="id" type="int" default="-1" />
+ <argument index="2" name="accel" type="int" default="0" />
<description>
Adds a new checkable item with text [code]label[/code].
An [code]id[/code] can optionally be provided, as well as an accelerator ([code]accel[/code]). If no [code]id[/code] is provided, one will be created from the index. If no [code]accel[/code] is provided then the default [code]0[/code] will be assigned to it. See [method get_item_accelerator] for more info on accelerators.
@@ -27,14 +23,10 @@
</description>
</method>
<method name="add_check_shortcut">
- <return type="void">
- </return>
- <argument index="0" name="shortcut" type="Shortcut">
- </argument>
- <argument index="1" name="id" type="int" default="-1">
- </argument>
- <argument index="2" name="global" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shortcut" type="Shortcut" />
+ <argument index="1" name="id" type="int" default="-1" />
+ <argument index="2" name="global" type="bool" default="false" />
<description>
Adds a new checkable item and assigns the specified [Shortcut] to it. Sets the label of the checkbox to the [Shortcut]'s name.
An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
@@ -42,16 +34,11 @@
</description>
</method>
<method name="add_icon_check_item">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="Texture2D">
- </argument>
- <argument index="1" name="label" type="String">
- </argument>
- <argument index="2" name="id" type="int" default="-1">
- </argument>
- <argument index="3" name="accel" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="Texture2D" />
+ <argument index="1" name="label" type="String" />
+ <argument index="2" name="id" type="int" default="-1" />
+ <argument index="3" name="accel" type="int" default="0" />
<description>
Adds a new checkable item with text [code]label[/code] and icon [code]texture[/code].
An [code]id[/code] can optionally be provided, as well as an accelerator ([code]accel[/code]). If no [code]id[/code] is provided, one will be created from the index. If no [code]accel[/code] is provided then the default [code]0[/code] will be assigned to it. See [method get_item_accelerator] for more info on accelerators.
@@ -59,16 +46,11 @@
</description>
</method>
<method name="add_icon_check_shortcut">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="Texture2D">
- </argument>
- <argument index="1" name="shortcut" type="Shortcut">
- </argument>
- <argument index="2" name="id" type="int" default="-1">
- </argument>
- <argument index="3" name="global" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="Texture2D" />
+ <argument index="1" name="shortcut" type="Shortcut" />
+ <argument index="2" name="id" type="int" default="-1" />
+ <argument index="3" name="global" type="bool" default="false" />
<description>
Adds a new checkable item and assigns the specified [Shortcut] and icon [code]texture[/code] to it. Sets the label of the checkbox to the [Shortcut]'s name.
An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
@@ -76,94 +58,64 @@
</description>
</method>
<method name="add_icon_item">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="Texture2D">
- </argument>
- <argument index="1" name="label" type="String">
- </argument>
- <argument index="2" name="id" type="int" default="-1">
- </argument>
- <argument index="3" name="accel" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="Texture2D" />
+ <argument index="1" name="label" type="String" />
+ <argument index="2" name="id" type="int" default="-1" />
+ <argument index="3" name="accel" type="int" default="0" />
<description>
Adds a new item with text [code]label[/code] and icon [code]texture[/code].
An [code]id[/code] can optionally be provided, as well as an accelerator ([code]accel[/code]). If no [code]id[/code] is provided, one will be created from the index. If no [code]accel[/code] is provided then the default [code]0[/code] will be assigned to it. See [method get_item_accelerator] for more info on accelerators.
</description>
</method>
<method name="add_icon_radio_check_item">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="Texture2D">
- </argument>
- <argument index="1" name="label" type="String">
- </argument>
- <argument index="2" name="id" type="int" default="-1">
- </argument>
- <argument index="3" name="accel" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="Texture2D" />
+ <argument index="1" name="label" type="String" />
+ <argument index="2" name="id" type="int" default="-1" />
+ <argument index="3" name="accel" type="int" default="0" />
<description>
Same as [method add_icon_check_item], but uses a radio check button.
</description>
</method>
<method name="add_icon_radio_check_shortcut">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="Texture2D">
- </argument>
- <argument index="1" name="shortcut" type="Shortcut">
- </argument>
- <argument index="2" name="id" type="int" default="-1">
- </argument>
- <argument index="3" name="global" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="Texture2D" />
+ <argument index="1" name="shortcut" type="Shortcut" />
+ <argument index="2" name="id" type="int" default="-1" />
+ <argument index="3" name="global" type="bool" default="false" />
<description>
Same as [method add_icon_check_shortcut], but uses a radio check button.
</description>
</method>
<method name="add_icon_shortcut">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="Texture2D">
- </argument>
- <argument index="1" name="shortcut" type="Shortcut">
- </argument>
- <argument index="2" name="id" type="int" default="-1">
- </argument>
- <argument index="3" name="global" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="Texture2D" />
+ <argument index="1" name="shortcut" type="Shortcut" />
+ <argument index="2" name="id" type="int" default="-1" />
+ <argument index="3" name="global" type="bool" default="false" />
<description>
Adds a new item and assigns the specified [Shortcut] and icon [code]texture[/code] to it. Sets the label of the checkbox to the [Shortcut]'s name.
An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
</description>
</method>
<method name="add_item">
- <return type="void">
- </return>
- <argument index="0" name="label" type="String">
- </argument>
- <argument index="1" name="id" type="int" default="-1">
- </argument>
- <argument index="2" name="accel" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="label" type="String" />
+ <argument index="1" name="id" type="int" default="-1" />
+ <argument index="2" name="accel" type="int" default="0" />
<description>
Adds a new item with text [code]label[/code].
An [code]id[/code] can optionally be provided, as well as an accelerator ([code]accel[/code]). If no [code]id[/code] is provided, one will be created from the index. If no [code]accel[/code] is provided then the default [code]0[/code] will be assigned to it. See [method get_item_accelerator] for more info on accelerators.
</description>
</method>
<method name="add_multistate_item">
- <return type="void">
- </return>
- <argument index="0" name="label" type="String">
- </argument>
- <argument index="1" name="max_states" type="int">
- </argument>
- <argument index="2" name="default_state" type="int" default="0">
- </argument>
- <argument index="3" name="id" type="int" default="-1">
- </argument>
- <argument index="4" name="accel" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="label" type="String" />
+ <argument index="1" name="max_states" type="int" />
+ <argument index="2" name="default_state" type="int" default="0" />
+ <argument index="3" name="id" type="int" default="-1" />
+ <argument index="4" name="accel" type="int" default="0" />
<description>
Adds a new multistate item with text [code]label[/code].
Contrarily to normal binary items, multistate items can have more than two states, as defined by [code]max_states[/code]. Each press or activate of the item will increase the state by one. The default value is defined by [code]default_state[/code].
@@ -171,14 +123,10 @@
</description>
</method>
<method name="add_radio_check_item">
- <return type="void">
- </return>
- <argument index="0" name="label" type="String">
- </argument>
- <argument index="1" name="id" type="int" default="-1">
- </argument>
- <argument index="2" name="accel" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="label" type="String" />
+ <argument index="1" name="id" type="int" default="-1" />
+ <argument index="2" name="accel" type="int" default="0" />
<description>
Adds a new radio check button with text [code]label[/code].
An [code]id[/code] can optionally be provided, as well as an accelerator ([code]accel[/code]). If no [code]id[/code] is provided, one will be created from the index. If no [code]accel[/code] is provided then the default [code]0[/code] will be assigned to it. See [method get_item_accelerator] for more info on accelerators.
@@ -186,14 +134,10 @@
</description>
</method>
<method name="add_radio_check_shortcut">
- <return type="void">
- </return>
- <argument index="0" name="shortcut" type="Shortcut">
- </argument>
- <argument index="1" name="id" type="int" default="-1">
- </argument>
- <argument index="2" name="global" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shortcut" type="Shortcut" />
+ <argument index="1" name="id" type="int" default="-1" />
+ <argument index="2" name="global" type="bool" default="false" />
<description>
Adds a new radio check button and assigns a [Shortcut] to it. Sets the label of the checkbox to the [Shortcut]'s name.
An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
@@ -201,469 +145,354 @@
</description>
</method>
<method name="add_separator">
- <return type="void">
- </return>
- <argument index="0" name="label" type="String" default="&quot;&quot;">
- </argument>
- <argument index="1" name="id" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="label" type="String" default="&quot;&quot;" />
+ <argument index="1" name="id" type="int" default="-1" />
<description>
Adds a separator between items. Separators also occupy an index, which you can set by using the [code]id[/code] parameter.
A [code]label[/code] can optionally be provided, which will appear at the center of the separator.
</description>
</method>
<method name="add_shortcut">
- <return type="void">
- </return>
- <argument index="0" name="shortcut" type="Shortcut">
- </argument>
- <argument index="1" name="id" type="int" default="-1">
- </argument>
- <argument index="2" name="global" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shortcut" type="Shortcut" />
+ <argument index="1" name="id" type="int" default="-1" />
+ <argument index="2" name="global" type="bool" default="false" />
<description>
Adds a [Shortcut].
An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
</description>
</method>
<method name="add_submenu_item">
- <return type="void">
- </return>
- <argument index="0" name="label" type="String">
- </argument>
- <argument index="1" name="submenu" type="String">
- </argument>
- <argument index="2" name="id" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="label" type="String" />
+ <argument index="1" name="submenu" type="String" />
+ <argument index="2" name="id" type="int" default="-1" />
<description>
Adds an item that will act as a submenu of the parent [PopupMenu] node when clicked. The [code]submenu[/code] argument is the name of the child [PopupMenu] node that will be shown when the item is clicked.
An [code]id[/code] can optionally be provided. If no [code]id[/code] is provided, one will be created from the index.
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all items from the [PopupMenu].
</description>
</method>
<method name="clear_item_opentype_features">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Removes all OpenType features form the item's text.
</description>
</method>
<method name="get_current_index" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the index of the currently focused item. Returns [code]-1[/code] if no item is focused.
</description>
</method>
<method name="get_item_accelerator" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the accelerator of the item at index [code]idx[/code]. Accelerators are special combinations of keys that activate the item, no matter which control is focused.
</description>
</method>
<method name="get_item_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of items in the [PopupMenu].
</description>
</method>
<method name="get_item_icon" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the icon of the item at index [code]idx[/code].
</description>
</method>
<method name="get_item_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the id of the item at index [code]idx[/code]. [code]id[/code] can be manually assigned, while index can not.
</description>
</method>
<method name="get_item_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the index of the item containing the specified [code]id[/code]. Index is automatically assigned to each item by the engine. Index can not be set manually.
</description>
</method>
<method name="get_item_language" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns item's text language code.
</description>
</method>
<method name="get_item_metadata" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the metadata of the specified item, which might be of any type. You can set it with [method set_item_metadata], which provides a simple way of assigning context data to items.
</description>
</method>
<method name="get_item_opentype_feature" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="tag" type="String" />
<description>
Returns OpenType feature [code]tag[/code] of the item's text.
</description>
</method>
<method name="get_item_shortcut" qualifiers="const">
- <return type="Shortcut">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Shortcut" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the [Shortcut] associated with the specified [code]idx[/code] item.
</description>
</method>
<method name="get_item_submenu" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the submenu name of the item at index [code]idx[/code]. See [method add_submenu_item] for more info on how to add a submenu.
</description>
</method>
<method name="get_item_text" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the text of the item at index [code]idx[/code].
</description>
</method>
<method name="get_item_text_direction" qualifiers="const">
- <return type="int" enum="Control.TextDirection">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" enum="Control.TextDirection" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns item's text base writing direction.
</description>
</method>
<method name="get_item_tooltip" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the tooltip associated with the specified index index [code]idx[/code].
</description>
</method>
<method name="is_item_checkable" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the item at index [code]idx[/code] is checkable in some way, i.e. if it has a checkbox or radio button.
[b]Note:[/b] Checkable items just display a checkmark or radio button, but don't have any built-in checking behavior and must be checked/unchecked manually.
</description>
</method>
<method name="is_item_checked" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the item at index [code]idx[/code] is checked.
</description>
</method>
<method name="is_item_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the item at index [code]idx[/code] is disabled. When it is disabled it can't be selected, or its action invoked.
See [method set_item_disabled] for more info on how to disable an item.
</description>
</method>
<method name="is_item_radio_checkable" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the item at index [code]idx[/code] has radio button-style checkability.
[b]Note:[/b] This is purely cosmetic; you must add the logic for checking/unchecking items in radio groups.
</description>
</method>
<method name="is_item_separator" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the item is a separator. If it is, it will be displayed as a line. See [method add_separator] for more info on how to add a separator.
</description>
</method>
<method name="is_item_shortcut_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the specified item's shortcut is disabled.
</description>
</method>
<method name="remove_item">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Removes the item at index [code]idx[/code] from the menu.
[b]Note:[/b] The indices of items after the removed item will be shifted by one.
</description>
</method>
<method name="set_item_accelerator">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="accel" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="accel" type="int" />
<description>
Sets the accelerator of the item at index [code]idx[/code]. Accelerators are special combinations of keys that activate the item, no matter which control is focused.
</description>
</method>
<method name="set_item_as_checkable">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
Sets whether the item at index [code]idx[/code] has a checkbox. If [code]false[/code], sets the type of the item to plain text.
[b]Note:[/b] Checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually.
</description>
</method>
<method name="set_item_as_radio_checkable">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
Sets the type of the item at the specified index [code]idx[/code] to radio button. If [code]false[/code], sets the type of the item to plain text.
</description>
</method>
<method name="set_item_as_separator">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
Mark the item at index [code]idx[/code] as a separator, which means that it would be displayed as a line. If [code]false[/code], sets the type of the item to plain text.
</description>
</method>
<method name="set_item_checked">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="checked" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="checked" type="bool" />
<description>
Sets the checkstate status of the item at index [code]idx[/code].
</description>
</method>
<method name="set_item_disabled">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="disabled" type="bool" />
<description>
Enables/disables the item at index [code]idx[/code]. When it is disabled, it can't be selected and its action can't be invoked.
</description>
</method>
<method name="set_item_icon">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="icon" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="icon" type="Texture2D" />
<description>
Replaces the [Texture2D] icon of the specified [code]idx[/code].
</description>
</method>
<method name="set_item_id">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="id" type="int" />
<description>
Sets the [code]id[/code] of the item at index [code]idx[/code].
</description>
</method>
<method name="set_item_language">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="language" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="language" type="String" />
<description>
Sets language code of item's text used for line-breaking and text shaping algorithms, if left empty current locale is used instead.
</description>
</method>
<method name="set_item_metadata">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="metadata" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="metadata" type="Variant" />
<description>
Sets the metadata of an item, which may be of any type. You can later get it with [method get_item_metadata], which provides a simple way of assigning context data to items.
</description>
</method>
<method name="set_item_multistate">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="state" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="state" type="int" />
<description>
Sets the state of a multistate item. See [method add_multistate_item] for details.
</description>
</method>
<method name="set_item_opentype_feature">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
- <argument index="2" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="tag" type="String" />
+ <argument index="2" name="value" type="int" />
<description>
Sets OpenType feature [code]tag[/code] for the item's text. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url].
</description>
</method>
<method name="set_item_shortcut">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="shortcut" type="Shortcut">
- </argument>
- <argument index="2" name="global" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="shortcut" type="Shortcut" />
+ <argument index="2" name="global" type="bool" default="false" />
<description>
Sets a [Shortcut] for the specified item [code]idx[/code].
</description>
</method>
<method name="set_item_shortcut_disabled">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="disabled" type="bool" />
<description>
Disables the [Shortcut] of the specified index [code]idx[/code].
</description>
</method>
<method name="set_item_submenu">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="submenu" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="submenu" type="String" />
<description>
Sets the submenu of the item at index [code]idx[/code]. The submenu is the name of a child [PopupMenu] node that would be shown when the item is clicked.
</description>
</method>
<method name="set_item_text">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="text" type="String" />
<description>
Sets the text of the item at index [code]idx[/code].
</description>
</method>
<method name="set_item_text_direction">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="direction" type="int" enum="Control.TextDirection">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="direction" type="int" enum="Control.TextDirection" />
<description>
Sets item's text base writing direction.
</description>
</method>
<method name="set_item_tooltip">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="tooltip" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="tooltip" type="String" />
<description>
Sets the [String] tooltip of the item at the specified index [code]idx[/code].
</description>
</method>
<method name="toggle_item_checked">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Toggles the check state of the item of the specified index [code]idx[/code].
</description>
</method>
<method name="toggle_item_multistate">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Cycle to the next state of a multistate item. See [method add_multistate_item] for details.
</description>
@@ -688,22 +517,19 @@
</members>
<signals>
<signal name="id_focused">
- <argument index="0" name="id" type="int">
- </argument>
+ <argument index="0" name="id" type="int" />
<description>
Emitted when user navigated to an item of some [code]id[/code] using [code]ui_up[/code] or [code]ui_down[/code] action.
</description>
</signal>
<signal name="id_pressed">
- <argument index="0" name="id" type="int">
- </argument>
+ <argument index="0" name="id" type="int" />
<description>
Emitted when an item of some [code]id[/code] is pressed or its accelerator is activated.
</description>
</signal>
<signal name="index_pressed">
- <argument index="0" name="index" type="int">
- </argument>
+ <argument index="0" name="index" type="int" />
<description>
Emitted when an item of some [code]index[/code] is pressed or its accelerator is activated.
</description>
@@ -712,77 +538,77 @@
<constants>
</constants>
<theme_items>
- <theme_item name="checked" type="Texture2D">
+ <theme_item name="checked" data_type="icon" type="Texture2D">
[Texture2D] icon for the checked checkbox items.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
[Font] used for the menu items.
</theme_item>
- <theme_item name="font_accelerator_color" type="Color" default="Color(0.7, 0.7, 0.7, 0.8)">
+ <theme_item name="font_accelerator_color" data_type="color" type="Color" default="Color(0.7, 0.7, 0.7, 0.8)">
The text [Color] used for shortcuts and accelerators that show next to the menu item name when defined. See [method get_item_accelerator] for more info on accelerators.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
The default text [Color] for menu items' names.
</theme_item>
- <theme_item name="font_disabled_color" type="Color" default="Color(0.4, 0.4, 0.4, 0.8)">
+ <theme_item name="font_disabled_color" data_type="color" type="Color" default="Color(0.4, 0.4, 0.4, 0.8)">
[Color] used for disabled menu items' text.
</theme_item>
- <theme_item name="font_hover_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_hover_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
[Color] used for the hovered text.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the menu item.
</theme_item>
- <theme_item name="font_separator_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_separator_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
[Color] used for labeled separators' text. See [method add_separator].
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the menu items.
</theme_item>
- <theme_item name="hover" type="StyleBox">
+ <theme_item name="hover" data_type="style" type="StyleBox">
[StyleBox] displayed when the [PopupMenu] item is hovered.
</theme_item>
- <theme_item name="hseparation" type="int" default="4">
+ <theme_item name="hseparation" data_type="constant" type="int" default="4">
The horizontal space between the item's name and the shortcut text/submenu arrow.
</theme_item>
- <theme_item name="item_end_padding" type="int" default="2">
+ <theme_item name="item_end_padding" data_type="constant" type="int" default="2">
</theme_item>
- <theme_item name="item_start_padding" type="int" default="2">
+ <theme_item name="item_start_padding" data_type="constant" type="int" default="2">
</theme_item>
- <theme_item name="labeled_separator_left" type="StyleBox">
+ <theme_item name="labeled_separator_left" data_type="style" type="StyleBox">
[StyleBox] for the left side of labeled separator. See [method add_separator].
</theme_item>
- <theme_item name="labeled_separator_right" type="StyleBox">
+ <theme_item name="labeled_separator_right" data_type="style" type="StyleBox">
[StyleBox] for the right side of labeled separator. See [method add_separator].
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the item text outline.
</theme_item>
- <theme_item name="panel" type="StyleBox">
+ <theme_item name="panel" data_type="style" type="StyleBox">
Default [StyleBox] of the [PopupMenu] items.
</theme_item>
- <theme_item name="panel_disabled" type="StyleBox">
+ <theme_item name="panel_disabled" data_type="style" type="StyleBox">
[StyleBox] used when the [PopupMenu] item is disabled.
</theme_item>
- <theme_item name="radio_checked" type="Texture2D">
+ <theme_item name="radio_checked" data_type="icon" type="Texture2D">
[Texture2D] icon for the checked radio button items.
</theme_item>
- <theme_item name="radio_unchecked" type="Texture2D">
+ <theme_item name="radio_unchecked" data_type="icon" type="Texture2D">
[Texture2D] icon for the unchecked radio button items.
</theme_item>
- <theme_item name="separator" type="StyleBox">
+ <theme_item name="separator" data_type="style" type="StyleBox">
[StyleBox] used for the separators. See [method add_separator].
</theme_item>
- <theme_item name="submenu" type="Texture2D">
+ <theme_item name="submenu" data_type="icon" type="Texture2D">
[Texture2D] icon for the submenu arrow (for left-to-right layouts).
</theme_item>
- <theme_item name="submenu_mirrored" type="Texture2D">
+ <theme_item name="submenu_mirrored" data_type="icon" type="Texture2D">
[Texture2D] icon for the submenu arrow (for right-to-left layouts).
</theme_item>
- <theme_item name="unchecked" type="Texture2D">
+ <theme_item name="unchecked" data_type="icon" type="Texture2D">
[Texture2D] icon for the unchecked checkbox items.
</theme_item>
- <theme_item name="vseparation" type="int" default="4">
+ <theme_item name="vseparation" data_type="constant" type="int" default="4">
The vertical space between each menu item.
</theme_item>
</theme_items>
diff --git a/doc/classes/PopupPanel.xml b/doc/classes/PopupPanel.xml
index 72045c5559..56833f3f79 100644
--- a/doc/classes/PopupPanel.xml
+++ b/doc/classes/PopupPanel.xml
@@ -13,7 +13,7 @@
<constants>
</constants>
<theme_items>
- <theme_item name="panel" type="StyleBox">
+ <theme_item name="panel" data_type="style" type="StyleBox">
The background panel style of this [PopupPanel].
</theme_item>
</theme_items>
diff --git a/doc/classes/PrimitiveMesh.xml b/doc/classes/PrimitiveMesh.xml
index ca41c367c8..36bec3ff61 100644
--- a/doc/classes/PrimitiveMesh.xml
+++ b/doc/classes/PrimitiveMesh.xml
@@ -10,8 +10,7 @@
</tutorials>
<methods>
<method name="get_mesh_arrays" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns mesh arrays used to constitute surface of [Mesh]. The result can be passed to [method ArrayMesh.add_surface_from_arrays] to create a new surface. For example:
[codeblocks]
diff --git a/doc/classes/ProgressBar.xml b/doc/classes/ProgressBar.xml
index c33f6f636d..8bd013c86c 100644
--- a/doc/classes/ProgressBar.xml
+++ b/doc/classes/ProgressBar.xml
@@ -20,28 +20,28 @@
<constants>
</constants>
<theme_items>
- <theme_item name="bg" type="StyleBox">
+ <theme_item name="bg" data_type="style" type="StyleBox">
The style of the background.
</theme_item>
- <theme_item name="fg" type="StyleBox">
+ <theme_item name="fg" data_type="style" type="StyleBox">
The style of the progress (i.e. the part that fills the bar).
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
Font used to draw the fill percentage if [member percent_visible] is [code]true[/code].
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
The color of the text.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the [ProgressBar].
</theme_item>
- <theme_item name="font_shadow_color" type="Color" default="Color(0, 0, 0, 1)">
+ <theme_item name="font_shadow_color" data_type="color" type="Color" default="Color(0, 0, 0, 1)">
The color of the text's shadow.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size used to draw the fill percentage if [member percent_visible] is [code]true[/code].
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
</theme_items>
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index c3ef9f2425..383049fb3e 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -16,10 +16,8 @@
</tutorials>
<methods>
<method name="add_property_info">
- <return type="void">
- </return>
- <argument index="0" name="hint" type="Dictionary">
- </argument>
+ <return type="void" />
+ <argument index="0" name="hint" type="Dictionary" />
<description>
Adds a custom property info to a property. The dictionary must contain:
- [code]name[/code]: [String] (the property's name)
@@ -56,28 +54,22 @@
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
<description>
Clears the whole configuration (not recommended, may break things).
</description>
</method>
<method name="get_order" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="String" />
<description>
Returns the order of a configuration value (influences when saved to the config file).
</description>
</method>
<method name="get_setting" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="name" type="String" />
<description>
Returns the value of a setting.
[b]Example:[/b]
@@ -92,10 +84,8 @@
</description>
</method>
<method name="globalize_path" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="path" type="String" />
<description>
Returns the absolute, native OS path corresponding to the localized [code]path[/code] (starting with [code]res://[/code] or [code]user://[/code]). The returned path will vary depending on the operating system and user preferences. See [url=https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html]File paths in Godot projects[/url] to see what those paths convert to. See also [method localize_path].
[b]Note:[/b] [method globalize_path] with [code]res://[/code] will not work in an exported project. Instead, prepend the executable's base directory to the path when running from an exported project:
@@ -115,23 +105,17 @@
</description>
</method>
<method name="has_setting" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="String" />
<description>
Returns [code]true[/code] if a configuration value is present.
</description>
</method>
<method name="load_resource_pack">
- <return type="bool">
- </return>
- <argument index="0" name="pack" type="String">
- </argument>
- <argument index="1" name="replace_files" type="bool" default="true">
- </argument>
- <argument index="2" name="offset" type="int" default="0">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="pack" type="String" />
+ <argument index="1" name="replace_files" type="bool" default="true" />
+ <argument index="2" name="offset" type="int" default="0" />
<description>
Loads the contents of the .pck or .zip file specified by [code]pack[/code] into the resource filesystem ([code]res://[/code]). Returns [code]true[/code] on success.
[b]Note:[/b] If a file from [code]pack[/code] shares the same path as a file already in the resource filesystem, any attempts to load that file will use the file from [code]pack[/code] unless [code]replace_files[/code] is set to [code]false[/code].
@@ -139,78 +123,60 @@
</description>
</method>
<method name="localize_path" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="path" type="String" />
<description>
Returns the localized path (starting with [code]res://[/code]) corresponding to the absolute, native OS [code]path[/code]. See also [method globalize_path].
</description>
</method>
<method name="property_can_revert">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="String" />
<description>
Returns [code]true[/code] if the specified property exists and its initial value differs from the current value.
</description>
</method>
<method name="property_get_revert">
- <return type="Variant">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="name" type="String" />
<description>
Returns the specified property's initial value. Returns [code]null[/code] if the property does not exist.
</description>
</method>
<method name="save">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Saves the configuration to the [code]project.godot[/code] file.
[b]Note:[/b] This method is intended to be used by editor plugins, as modified [ProjectSettings] can't be loaded back in the running app. If you want to change project settings in exported projects, use [method save_custom] to save [code]override.cfg[/code] file.
</description>
</method>
<method name="save_custom">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="file" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="file" type="String" />
<description>
Saves the configuration to a custom file. The file extension must be [code].godot[/code] (to save in text-based [ConfigFile] format) or [code].binary[/code] (to save in binary format). You can also save [code]override.cfg[/code] file, which is also text, but can be used in exported projects unlike other formats.
</description>
</method>
<method name="set_initial_value">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="value" type="Variant" />
<description>
Sets the specified property's initial value. This is the value the property reverts to.
</description>
</method>
<method name="set_order">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="position" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="position" type="int" />
<description>
Sets the order of a configuration value (influences when saved to the config file).
</description>
</method>
<method name="set_setting">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="value" type="Variant" />
<description>
Sets the value of a setting.
[b]Example:[/b]
@@ -820,9 +786,45 @@
<member name="layer_names/2d_navigation/layer_2" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D navigation layer 2. If left empty, the layer will display as "Layer 2".
</member>
+ <member name="layer_names/2d_navigation/layer_20" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 20. If left empty, the layer will display as "Layer 20".
+ </member>
+ <member name="layer_names/2d_navigation/layer_21" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 21. If left empty, the layer will display as "Layer 21".
+ </member>
+ <member name="layer_names/2d_navigation/layer_22" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 22. If left empty, the layer will display as "Layer 22".
+ </member>
+ <member name="layer_names/2d_navigation/layer_23" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 23. If left empty, the layer will display as "Layer 23".
+ </member>
+ <member name="layer_names/2d_navigation/layer_24" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 24. If left empty, the layer will display as "Layer 24".
+ </member>
+ <member name="layer_names/2d_navigation/layer_25" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 25. If left empty, the layer will display as "Layer 25".
+ </member>
+ <member name="layer_names/2d_navigation/layer_26" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 26. If left empty, the layer will display as "Layer 26".
+ </member>
+ <member name="layer_names/2d_navigation/layer_27" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 27. If left empty, the layer will display as "Layer 27".
+ </member>
+ <member name="layer_names/2d_navigation/layer_28" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 28. If left empty, the layer will display as "Layer 28".
+ </member>
+ <member name="layer_names/2d_navigation/layer_29" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 29. If left empty, the layer will display as "Layer 29".
+ </member>
<member name="layer_names/2d_navigation/layer_3" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D navigation layer 3. If left empty, the layer will display as "Layer 3".
</member>
+ <member name="layer_names/2d_navigation/layer_30" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 30. If left empty, the layer will display as "Layer 30".
+ </member>
+ <member name="layer_names/2d_navigation/layer_31" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D navigation layer 31. If left empty, the layer will display as "Layer 31".
+ </member>
<member name="layer_names/2d_navigation/layer_4" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D navigation layer 4. If left empty, the layer will display as "Layer 4".
</member>
@@ -880,9 +882,45 @@
<member name="layer_names/2d_physics/layer_2" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D physics layer 2. If left empty, the layer will display as "Layer 2".
</member>
+ <member name="layer_names/2d_physics/layer_20" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 20. If left empty, the layer will display as "Layer 20".
+ </member>
+ <member name="layer_names/2d_physics/layer_21" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 21. If left empty, the layer will display as "Layer 21".
+ </member>
+ <member name="layer_names/2d_physics/layer_22" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 22. If left empty, the layer will display as "Layer 22".
+ </member>
+ <member name="layer_names/2d_physics/layer_23" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 23. If left empty, the layer will display as "Layer 23".
+ </member>
+ <member name="layer_names/2d_physics/layer_24" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 24. If left empty, the layer will display as "Layer 24".
+ </member>
+ <member name="layer_names/2d_physics/layer_25" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 25. If left empty, the layer will display as "Layer 25".
+ </member>
+ <member name="layer_names/2d_physics/layer_26" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 26. If left empty, the layer will display as "Layer 26".
+ </member>
+ <member name="layer_names/2d_physics/layer_27" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 27. If left empty, the layer will display as "Layer 27".
+ </member>
+ <member name="layer_names/2d_physics/layer_28" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 28. If left empty, the layer will display as "Layer 28".
+ </member>
+ <member name="layer_names/2d_physics/layer_29" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 29. If left empty, the layer will display as "Layer 29".
+ </member>
<member name="layer_names/2d_physics/layer_3" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D physics layer 3. If left empty, the layer will display as "Layer 3".
</member>
+ <member name="layer_names/2d_physics/layer_30" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 30. If left empty, the layer will display as "Layer 30".
+ </member>
+ <member name="layer_names/2d_physics/layer_31" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 2D physics layer 31. If left empty, the layer will display as "Layer 31".
+ </member>
<member name="layer_names/2d_physics/layer_4" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 2D physics layer 4. If left empty, the layer will display as "Layer 4".
</member>
@@ -1000,9 +1038,45 @@
<member name="layer_names/3d_navigation/layer_2" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D navigation layer 2. If left empty, the layer will display as "Layer 2".
</member>
+ <member name="layer_names/3d_navigation/layer_20" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 20. If left empty, the layer will display as "Layer 20".
+ </member>
+ <member name="layer_names/3d_navigation/layer_21" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 21. If left empty, the layer will display as "Layer 21".
+ </member>
+ <member name="layer_names/3d_navigation/layer_22" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 22. If left empty, the layer will display as "Layer 22".
+ </member>
+ <member name="layer_names/3d_navigation/layer_23" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 23. If left empty, the layer will display as "Layer 23".
+ </member>
+ <member name="layer_names/3d_navigation/layer_24" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 24. If left empty, the layer will display as "Layer 24".
+ </member>
+ <member name="layer_names/3d_navigation/layer_25" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 25. If left empty, the layer will display as "Layer 25".
+ </member>
+ <member name="layer_names/3d_navigation/layer_26" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 26. If left empty, the layer will display as "Layer 26".
+ </member>
+ <member name="layer_names/3d_navigation/layer_27" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 27. If left empty, the layer will display as "Layer 27".
+ </member>
+ <member name="layer_names/3d_navigation/layer_28" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 28. If left empty, the layer will display as "Layer 28".
+ </member>
+ <member name="layer_names/3d_navigation/layer_29" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 29. If left empty, the layer will display as "Layer 29".
+ </member>
<member name="layer_names/3d_navigation/layer_3" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D navigation layer 3. If left empty, the layer will display as "Layer 3".
</member>
+ <member name="layer_names/3d_navigation/layer_30" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 30. If left empty, the layer will display as "Layer 30".
+ </member>
+ <member name="layer_names/3d_navigation/layer_31" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D navigation layer 31. If left empty, the layer will display as "Layer 31".
+ </member>
<member name="layer_names/3d_navigation/layer_4" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D navigation layer 4. If left empty, the layer will display as "Layer 4".
</member>
@@ -1060,9 +1134,45 @@
<member name="layer_names/3d_physics/layer_2" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D physics layer 2. If left empty, the layer will display as "Layer 2".
</member>
+ <member name="layer_names/3d_physics/layer_20" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 20. If left empty, the layer will display as "Layer 20".
+ </member>
+ <member name="layer_names/3d_physics/layer_21" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 21. If left empty, the layer will display as "Layer 21".
+ </member>
+ <member name="layer_names/3d_physics/layer_22" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 22. If left empty, the layer will display as "Layer 22".
+ </member>
+ <member name="layer_names/3d_physics/layer_23" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 23. If left empty, the layer will display as "Layer 23".
+ </member>
+ <member name="layer_names/3d_physics/layer_24" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 24. If left empty, the layer will display as "Layer 24".
+ </member>
+ <member name="layer_names/3d_physics/layer_25" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 25. If left empty, the layer will display as "Layer 25".
+ </member>
+ <member name="layer_names/3d_physics/layer_26" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 26. If left empty, the layer will display as "Layer 26".
+ </member>
+ <member name="layer_names/3d_physics/layer_27" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 27. If left empty, the layer will display as "Layer 27".
+ </member>
+ <member name="layer_names/3d_physics/layer_28" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 28. If left empty, the layer will display as "Layer 28".
+ </member>
+ <member name="layer_names/3d_physics/layer_29" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 29. If left empty, the layer will display as "Layer 29".
+ </member>
<member name="layer_names/3d_physics/layer_3" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D physics layer 3. If left empty, the layer will display as "Layer 3".
</member>
+ <member name="layer_names/3d_physics/layer_30" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 30. If left empty, the layer will display as "Layer 30".
+ </member>
+ <member name="layer_names/3d_physics/layer_31" type="String" setter="" getter="" default="&quot;&quot;">
+ Optional name for the 3D physics layer 31. If left empty, the layer will display as "Layer 31".
+ </member>
<member name="layer_names/3d_physics/layer_4" type="String" setter="" getter="" default="&quot;&quot;">
Optional name for the 3D physics layer 4. If left empty, the layer will display as "Layer 4".
</member>
diff --git a/doc/classes/PropertyTweener.xml b/doc/classes/PropertyTweener.xml
index 1e77bb33c6..7914b26676 100644
--- a/doc/classes/PropertyTweener.xml
+++ b/doc/classes/PropertyTweener.xml
@@ -11,8 +11,7 @@
</tutorials>
<methods>
<method name="as_relative">
- <return type="PropertyTweener">
- </return>
+ <return type="PropertyTweener" />
<description>
When called, the final value will be used as a relative value instead. Example:
[codeblock]
@@ -22,10 +21,8 @@
</description>
</method>
<method name="from">
- <return type="PropertyTweener">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
+ <return type="PropertyTweener" />
+ <argument index="0" name="value" type="Variant" />
<description>
Sets a custom initial value to the [PropertyTweener]. Example:
[codeblock]
@@ -35,8 +32,7 @@
</description>
</method>
<method name="from_current">
- <return type="PropertyTweener">
- </return>
+ <return type="PropertyTweener" />
<description>
Makes the [PropertyTweener] use the current property value (i.e. at the time of creating this [PropertyTweener]) as a starting point. This is equivalent of using [method from] with the current value. These two calls will do the same:
[codeblock]
@@ -46,28 +42,22 @@
</description>
</method>
<method name="set_delay">
- <return type="PropertyTweener">
- </return>
- <argument index="0" name="delay" type="float">
- </argument>
+ <return type="PropertyTweener" />
+ <argument index="0" name="delay" type="float" />
<description>
Sets the time in seconds after which the [PropertyTweener] will start interpolating. By default there's no delay.
</description>
</method>
<method name="set_ease">
- <return type="PropertyTweener">
- </return>
- <argument index="0" name="ease" type="int" enum="Tween.EaseType">
- </argument>
+ <return type="PropertyTweener" />
+ <argument index="0" name="ease" type="int" enum="Tween.EaseType" />
<description>
Sets the type of used easing from [enum Tween.EaseType]. If not set, the default easing is used from the [Tween] that contains this Tweener.
</description>
</method>
<method name="set_trans">
- <return type="PropertyTweener">
- </return>
- <argument index="0" name="trans" type="int" enum="Tween.TransitionType">
- </argument>
+ <return type="PropertyTweener" />
+ <argument index="0" name="trans" type="int" enum="Tween.TransitionType" />
<description>
Sets the type of used transition from [enum Tween.TransitionType]. If not set, the default transition is used from the [Tween] that contains this Tweener.
</description>
diff --git a/doc/classes/ProximityGroup3D.xml b/doc/classes/ProximityGroup3D.xml
index 22e397b832..15735bd6f6 100644
--- a/doc/classes/ProximityGroup3D.xml
+++ b/doc/classes/ProximityGroup3D.xml
@@ -10,12 +10,9 @@
</tutorials>
<methods>
<method name="broadcast">
- <return type="void">
- </return>
- <argument index="0" name="method" type="String">
- </argument>
- <argument index="1" name="parameters" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="method" type="String" />
+ <argument index="1" name="parameters" type="Variant" />
<description>
</description>
</method>
@@ -30,10 +27,8 @@
</members>
<signals>
<signal name="broadcast">
- <argument index="0" name="method" type="String">
- </argument>
- <argument index="1" name="parameters" type="Array">
- </argument>
+ <argument index="0" name="method" type="String" />
+ <argument index="1" name="parameters" type="Array" />
<description>
</description>
</signal>
diff --git a/doc/classes/Quaternion.xml b/doc/classes/Quaternion.xml
index 06434ab268..720188f67e 100644
--- a/doc/classes/Quaternion.xml
+++ b/doc/classes/Quaternion.xml
@@ -14,279 +14,214 @@
</tutorials>
<methods>
<method name="Quaternion" qualifiers="constructor">
- <return type="Quaternion">
- </return>
+ <return type="Quaternion" />
<description>
Constructs a default-initialized quaternion with all components set to [code]0[/code].
</description>
</method>
<method name="Quaternion" qualifiers="constructor">
- <return type="Quaternion">
- </return>
- <argument index="0" name="from" type="Quaternion">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="from" type="Quaternion" />
<description>
Constructs a [Quaternion] as a copy of the given [Quaternion].
</description>
</method>
<method name="Quaternion" qualifiers="constructor">
- <return type="Quaternion">
- </return>
- <argument index="0" name="arc_from" type="Vector3">
- </argument>
- <argument index="1" name="arc_to" type="Vector3">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="arc_from" type="Vector3" />
+ <argument index="1" name="arc_to" type="Vector3" />
<description>
</description>
</method>
<method name="Quaternion" qualifiers="constructor">
- <return type="Quaternion">
- </return>
- <argument index="0" name="axis" type="Vector3">
- </argument>
- <argument index="1" name="angle" type="float">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="axis" type="Vector3" />
+ <argument index="1" name="angle" type="float" />
<description>
Constructs a quaternion that will rotate around the given axis by the specified angle. The axis must be a normalized vector.
</description>
</method>
<method name="Quaternion" qualifiers="constructor">
- <return type="Quaternion">
- </return>
- <argument index="0" name="euler" type="Vector3">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="euler" type="Vector3" />
<description>
Constructs a quaternion that will perform a rotation specified by Euler angles (in the YXZ convention: when decomposing, first Z, then X, and Y last), given in the vector format as (X angle, Y angle, Z angle).
</description>
</method>
<method name="Quaternion" qualifiers="constructor">
- <return type="Quaternion">
- </return>
- <argument index="0" name="from" type="Basis">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="from" type="Basis" />
<description>
Constructs a quaternion from the given [Basis].
</description>
</method>
<method name="Quaternion" qualifiers="constructor">
- <return type="Quaternion">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="y" type="float">
- </argument>
- <argument index="2" name="z" type="float">
- </argument>
- <argument index="3" name="w" type="float">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
+ <argument index="2" name="z" type="float" />
+ <argument index="3" name="w" type="float" />
<description>
Constructs a quaternion defined by the given values.
</description>
</method>
<method name="angle_to" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="to" type="Quaternion">
- </argument>
+ <return type="float" />
+ <argument index="0" name="to" type="Quaternion" />
<description>
Returns the angle between this quaternion and [code]to[/code]. This is the magnitude of the angle you would need to rotate by to get from one to the other.
[b]Note:[/b] This method has an abnormally high amount of floating-point error, so methods such as [code]is_zero_approx[/code] will not work reliably.
</description>
</method>
<method name="cubic_slerp" qualifiers="const">
- <return type="Quaternion">
- </return>
- <argument index="0" name="b" type="Quaternion">
- </argument>
- <argument index="1" name="pre_a" type="Quaternion">
- </argument>
- <argument index="2" name="post_b" type="Quaternion">
- </argument>
- <argument index="3" name="weight" type="float">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="b" type="Quaternion" />
+ <argument index="1" name="pre_a" type="Quaternion" />
+ <argument index="2" name="post_b" type="Quaternion" />
+ <argument index="3" name="weight" type="float" />
<description>
Performs a cubic spherical interpolation between quaternions [code]pre_a[/code], this vector, [code]b[/code], and [code]post_b[/code], by the given amount [code]weight[/code].
</description>
</method>
<method name="dot" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="with" type="Quaternion">
- </argument>
+ <return type="float" />
+ <argument index="0" name="with" type="Quaternion" />
<description>
Returns the dot product of two quaternions.
</description>
</method>
<method name="get_euler" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns Euler angles (in the YXZ convention: when decomposing, first Z, then X, and Y last) corresponding to the rotation represented by the unit quaternion. Returned vector contains the rotation angles in the format (X angle, Y angle, Z angle).
</description>
</method>
<method name="inverse" qualifiers="const">
- <return type="Quaternion">
- </return>
+ <return type="Quaternion" />
<description>
Returns the inverse of the quaternion.
</description>
</method>
<method name="is_equal_approx" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="to" type="Quaternion">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="to" type="Quaternion" />
<description>
Returns [code]true[/code] if this quaternion and [code]quat[/code] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.
</description>
</method>
<method name="is_normalized" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether the quaternion is normalized or not.
</description>
</method>
<method name="length" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the length of the quaternion.
</description>
</method>
<method name="length_squared" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the length of the quaternion, squared.
</description>
</method>
<method name="normalized" qualifiers="const">
- <return type="Quaternion">
- </return>
+ <return type="Quaternion" />
<description>
Returns a copy of the quaternion, normalized to unit length.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Quaternion">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Quaternion" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Quaternion">
- </return>
- <argument index="0" name="right" type="Quaternion">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="right" type="Quaternion" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Quaternion">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Quaternion">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="Quaternion">
- </return>
- <argument index="0" name="right" type="Quaternion">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="right" type="Quaternion" />
<description>
</description>
</method>
<method name="operator -" qualifiers="operator">
- <return type="Quaternion">
- </return>
- <argument index="0" name="right" type="Quaternion">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="right" type="Quaternion" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Quaternion">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Quaternion">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Quaternion">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Quaternion" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="operator unary+" qualifiers="operator">
- <return type="Quaternion">
- </return>
+ <return type="Quaternion" />
<description>
</description>
</method>
<method name="operator unary-" qualifiers="operator">
- <return type="Quaternion">
- </return>
+ <return type="Quaternion" />
<description>
</description>
</method>
<method name="slerp" qualifiers="const">
- <return type="Quaternion">
- </return>
- <argument index="0" name="to" type="Quaternion">
- </argument>
- <argument index="1" name="weight" type="float">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="to" type="Quaternion" />
+ <argument index="1" name="weight" type="float" />
<description>
Returns the result of the spherical linear interpolation between this quaternion and [code]to[/code] by amount [code]weight[/code].
[b]Note:[/b] Both quaternions must be normalized.
</description>
</method>
<method name="slerpni" qualifiers="const">
- <return type="Quaternion">
- </return>
- <argument index="0" name="to" type="Quaternion">
- </argument>
- <argument index="1" name="weight" type="float">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="to" type="Quaternion" />
+ <argument index="1" name="weight" type="float" />
<description>
Returns the result of the spherical linear interpolation between this quaternion and [code]to[/code] by amount [code]weight[/code], but without checking if the rotation path is not bigger than 90 degrees.
</description>
diff --git a/doc/classes/RDPipelineColorBlendStateAttachment.xml b/doc/classes/RDPipelineColorBlendStateAttachment.xml
index a6a1900cb5..30430d6670 100644
--- a/doc/classes/RDPipelineColorBlendStateAttachment.xml
+++ b/doc/classes/RDPipelineColorBlendStateAttachment.xml
@@ -8,8 +8,7 @@
</tutorials>
<methods>
<method name="set_as_mix">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
diff --git a/doc/classes/RDShaderFile.xml b/doc/classes/RDShaderFile.xml
index 346a97a1c0..22fcf9867c 100644
--- a/doc/classes/RDShaderFile.xml
+++ b/doc/classes/RDShaderFile.xml
@@ -7,27 +7,21 @@
<tutorials>
</tutorials>
<methods>
- <method name="get_bytecode" qualifiers="const">
- <return type="RDShaderBytecode">
- </return>
- <argument index="0" name="version" type="StringName" default="&amp;&quot;&quot;">
- </argument>
+ <method name="get_spirv" qualifiers="const">
+ <return type="RDShaderSPIRV" />
+ <argument index="0" name="version" type="StringName" default="&amp;&quot;&quot;" />
<description>
</description>
</method>
<method name="get_version_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
</description>
</method>
<method name="set_bytecode">
- <return type="void">
- </return>
- <argument index="0" name="bytecode" type="RDShaderBytecode">
- </argument>
- <argument index="1" name="version" type="StringName" default="&amp;&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bytecode" type="RDShaderSPIRV" />
+ <argument index="1" name="version" type="StringName" default="&amp;&quot;&quot;" />
<description>
</description>
</method>
diff --git a/doc/classes/RDShaderBytecode.xml b/doc/classes/RDShaderSPIRV.xml
index 20bf9bdd72..20de8230aa 100644
--- a/doc/classes/RDShaderBytecode.xml
+++ b/doc/classes/RDShaderSPIRV.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="RDShaderBytecode" inherits="Resource" version="4.0">
+<class name="RDShaderSPIRV" inherits="Resource" version="4.0">
<brief_description>
</brief_description>
<description>
@@ -8,38 +8,28 @@
</tutorials>
<methods>
<method name="get_stage_bytecode" qualifiers="const">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage" />
<description>
</description>
</method>
<method name="get_stage_compile_error" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage">
- </argument>
+ <return type="String" />
+ <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage" />
<description>
</description>
</method>
<method name="set_stage_bytecode">
- <return type="void">
- </return>
- <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage">
- </argument>
- <argument index="1" name="bytecode" type="PackedByteArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage" />
+ <argument index="1" name="bytecode" type="PackedByteArray" />
<description>
</description>
</method>
<method name="set_stage_compile_error">
- <return type="void">
- </return>
- <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage">
- </argument>
- <argument index="1" name="compile_error" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage" />
+ <argument index="1" name="compile_error" type="String" />
<description>
</description>
</method>
diff --git a/doc/classes/RDShaderSource.xml b/doc/classes/RDShaderSource.xml
index 68fc43d8ef..2d37ce37f2 100644
--- a/doc/classes/RDShaderSource.xml
+++ b/doc/classes/RDShaderSource.xml
@@ -8,20 +8,15 @@
</tutorials>
<methods>
<method name="get_stage_source" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage">
- </argument>
+ <return type="String" />
+ <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage" />
<description>
</description>
</method>
<method name="set_stage_source">
- <return type="void">
- </return>
- <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage">
- </argument>
- <argument index="1" name="source" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="stage" type="int" enum="RenderingDevice.ShaderStage" />
+ <argument index="1" name="source" type="String" />
<description>
</description>
</method>
diff --git a/doc/classes/RDTextureFormat.xml b/doc/classes/RDTextureFormat.xml
index ccfa6d1b95..2588dcfc40 100644
--- a/doc/classes/RDTextureFormat.xml
+++ b/doc/classes/RDTextureFormat.xml
@@ -8,18 +8,14 @@
</tutorials>
<methods>
<method name="add_shareable_format">
- <return type="void">
- </return>
- <argument index="0" name="format" type="int" enum="RenderingDevice.DataFormat">
- </argument>
+ <return type="void" />
+ <argument index="0" name="format" type="int" enum="RenderingDevice.DataFormat" />
<description>
</description>
</method>
<method name="remove_shareable_format">
- <return type="void">
- </return>
- <argument index="0" name="format" type="int" enum="RenderingDevice.DataFormat">
- </argument>
+ <return type="void" />
+ <argument index="0" name="format" type="int" enum="RenderingDevice.DataFormat" />
<description>
</description>
</method>
diff --git a/doc/classes/RDUniform.xml b/doc/classes/RDUniform.xml
index 666935d663..93adecc7de 100644
--- a/doc/classes/RDUniform.xml
+++ b/doc/classes/RDUniform.xml
@@ -8,22 +8,18 @@
</tutorials>
<methods>
<method name="add_id">
- <return type="void">
- </return>
- <argument index="0" name="id" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="RID" />
<description>
</description>
</method>
<method name="clear_ids">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="get_ids" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
diff --git a/doc/classes/RID.xml b/doc/classes/RID.xml
index e686a4b8fd..ddd30dbc82 100644
--- a/doc/classes/RID.xml
+++ b/doc/classes/RID.xml
@@ -10,73 +10,57 @@
</tutorials>
<methods>
<method name="RID" qualifiers="constructor">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Constructs an empty [RID] with the invalid ID [code]0[/code].
</description>
</method>
<method name="RID" qualifiers="constructor">
- <return type="RID">
- </return>
- <argument index="0" name="from" type="RID">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="from" type="RID" />
<description>
Constructs a [RID] as a copy of the given [RID].
</description>
</method>
<method name="get_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the ID of the referenced resource.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="RID" />
<description>
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="RID" />
<description>
</description>
</method>
<method name="operator &lt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="RID" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="RID" />
<description>
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="RID" />
<description>
</description>
</method>
<method name="operator &gt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="RID" />
<description>
</description>
</method>
diff --git a/doc/classes/RandomNumberGenerator.xml b/doc/classes/RandomNumberGenerator.xml
index 9c84cdd03e..2cf3cbb83d 100644
--- a/doc/classes/RandomNumberGenerator.xml
+++ b/doc/classes/RandomNumberGenerator.xml
@@ -20,55 +20,43 @@
</tutorials>
<methods>
<method name="randf">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns a pseudo-random float between [code]0.0[/code] and [code]1.0[/code] (inclusive).
</description>
</method>
<method name="randf_range">
- <return type="float">
- </return>
- <argument index="0" name="from" type="float">
- </argument>
- <argument index="1" name="to" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from" type="float" />
+ <argument index="1" name="to" type="float" />
<description>
Returns a pseudo-random float between [code]from[/code] and [code]to[/code] (inclusive).
</description>
</method>
<method name="randfn">
- <return type="float">
- </return>
- <argument index="0" name="mean" type="float" default="0.0">
- </argument>
- <argument index="1" name="deviation" type="float" default="1.0">
- </argument>
+ <return type="float" />
+ <argument index="0" name="mean" type="float" default="0.0" />
+ <argument index="1" name="deviation" type="float" default="1.0" />
<description>
Returns a [url=https://en.wikipedia.org/wiki/Normal_distribution]normally-distributed[/url] pseudo-random number, using Box-Muller transform with the specified [code]mean[/code] and a standard [code]deviation[/code]. This is also called Gaussian distribution.
</description>
</method>
<method name="randi">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns a pseudo-random 32-bit unsigned integer between [code]0[/code] and [code]4294967295[/code] (inclusive).
</description>
</method>
<method name="randi_range">
- <return type="int">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
Returns a pseudo-random 32-bit signed integer between [code]from[/code] and [code]to[/code] (inclusive).
</description>
</method>
<method name="randomize">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Setups a time-based seed to for this [RandomNumberGenerator] instance. Unlike the [@GlobalScope] random number generation functions, different [RandomNumberGenerator] instances can use different seeds.
</description>
diff --git a/doc/classes/Range.xml b/doc/classes/Range.xml
index 8690f6d7e7..30b915b437 100644
--- a/doc/classes/Range.xml
+++ b/doc/classes/Range.xml
@@ -10,17 +10,14 @@
</tutorials>
<methods>
<method name="share">
- <return type="void">
- </return>
- <argument index="0" name="with" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="with" type="Node" />
<description>
Binds two ranges together along with any ranges previously grouped with either of them. When any of range's member variables change, it will share the new value with all other ranges in its group.
</description>
</method>
<method name="unshare">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops range from sharing its member variables with any other.
</description>
@@ -65,8 +62,7 @@
</description>
</signal>
<signal name="value_changed">
- <argument index="0" name="value" type="float">
- </argument>
+ <argument index="0" name="value" type="float" />
<description>
Emitted when [member value] changes.
</description>
diff --git a/doc/classes/RayCast2D.xml b/doc/classes/RayCast2D.xml
index 14b67b46df..d8a5fc8508 100644
--- a/doc/classes/RayCast2D.xml
+++ b/doc/classes/RayCast2D.xml
@@ -15,108 +15,88 @@
</tutorials>
<methods>
<method name="add_exception">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Object" />
<description>
Adds a collision exception so the ray does not report collisions with the specified node.
</description>
</method>
<method name="add_exception_rid">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
Adds a collision exception so the ray does not report collisions with the specified [RID].
</description>
</method>
<method name="clear_exceptions">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all collision exceptions for this ray.
</description>
</method>
<method name="force_raycast_update">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Updates the collision information for the ray. Use this method to update the collision information immediately instead of waiting for the next [code]_physics_process[/code] call, for example if the ray or its parent has changed state.
[b]Note:[/b] [member enabled] does not need to be [code]true[/code] for this to work.
</description>
</method>
<method name="get_collider" qualifiers="const">
- <return type="Object">
- </return>
+ <return type="Object" />
<description>
Returns the first object that the ray intersects, or [code]null[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
</description>
</method>
<method name="get_collider_shape" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the shape ID of the first object that the ray intersects, or [code]0[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
</description>
</method>
<method name="get_collision_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns an individual bit on the collision mask.
</description>
</method>
<method name="get_collision_normal" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the normal of the intersecting object's shape at the collision point.
</description>
</method>
<method name="get_collision_point" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the collision point at which the ray intersects the closest object.
[b]Note:[/b] this point is in the [b]global[/b] coordinate system.
</description>
</method>
<method name="is_colliding" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether any object is intersecting with the ray's vector (considering the vector length).
</description>
</method>
<method name="remove_exception">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Object" />
<description>
Removes a collision exception so the ray does report collisions with the specified node.
</description>
</method>
<method name="remove_exception_rid">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
Removes a collision exception so the ray does report collisions with the specified [RID].
</description>
</method>
<method name="set_collision_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
Sets or clears individual bits on the collision mask. This makes selecting the areas scanned easier.
</description>
diff --git a/doc/classes/RayCast3D.xml b/doc/classes/RayCast3D.xml
index 98c8c96403..4e8eb960db 100644
--- a/doc/classes/RayCast3D.xml
+++ b/doc/classes/RayCast3D.xml
@@ -16,33 +16,27 @@
</tutorials>
<methods>
<method name="add_exception">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Object" />
<description>
Adds a collision exception so the ray does not report collisions with the specified node.
</description>
</method>
<method name="add_exception_rid">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
Adds a collision exception so the ray does not report collisions with the specified [RID].
</description>
</method>
<method name="clear_exceptions">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all collision exceptions for this ray.
</description>
</method>
<method name="force_raycast_update">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Updates the collision information for the ray.
Use this method to update the collision information immediately instead of waiting for the next [code]_physics_process[/code] call, for example if the ray or its parent has changed state.
@@ -50,76 +44,62 @@
</description>
</method>
<method name="get_collider" qualifiers="const">
- <return type="Object">
- </return>
+ <return type="Object" />
<description>
Returns the first object that the ray intersects, or [code]null[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
</description>
</method>
<method name="get_collider_shape" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the shape ID of the first object that the ray intersects, or [code]0[/code] if no object is intersecting the ray (i.e. [method is_colliding] returns [code]false[/code]).
</description>
</method>
<method name="get_collision_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns [code]true[/code] if the bit index passed is turned on.
[b]Note:[/b] Bit indices range from 0-19.
</description>
</method>
<method name="get_collision_normal" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the normal of the intersecting object's shape at the collision point.
</description>
</method>
<method name="get_collision_point" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the collision point at which the ray intersects the closest object.
[b]Note:[/b] This point is in the [b]global[/b] coordinate system.
</description>
</method>
<method name="is_colliding" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether any object is intersecting with the ray's vector (considering the vector length).
</description>
</method>
<method name="remove_exception">
- <return type="void">
- </return>
- <argument index="0" name="node" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="node" type="Object" />
<description>
Removes a collision exception so the ray does report collisions with the specified node.
</description>
</method>
<method name="remove_exception_rid">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
Removes a collision exception so the ray does report collisions with the specified [RID].
</description>
</method>
<method name="set_collision_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
Sets the bit index passed to the [code]value[/code] passed.
[b]Note:[/b] Bit indexes range from 0-19.
diff --git a/doc/classes/Rect2.xml b/doc/classes/Rect2.xml
index 627c488b01..e6c8ff86b6 100644
--- a/doc/classes/Rect2.xml
+++ b/doc/classes/Rect2.xml
@@ -15,200 +15,153 @@
</tutorials>
<methods>
<method name="Rect2" qualifiers="constructor">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Constructs a default-initialized [Rect2] with default (zero) values of [member position] and [member size].
</description>
</method>
<method name="Rect2" qualifiers="constructor">
- <return type="Rect2">
- </return>
- <argument index="0" name="from" type="Rect2">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="from" type="Rect2" />
<description>
Constructs a [Rect2] as a copy of the given [Rect2].
</description>
</method>
<method name="Rect2" qualifiers="constructor">
- <return type="Rect2">
- </return>
- <argument index="0" name="from" type="Rect2i">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="from" type="Rect2i" />
<description>
Constructs a [Rect2] from a [Rect2i].
</description>
</method>
<method name="Rect2" qualifiers="constructor">
- <return type="Rect2">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
- <argument index="1" name="size" type="Vector2">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="position" type="Vector2" />
+ <argument index="1" name="size" type="Vector2" />
<description>
Constructs a [Rect2] by position and size.
</description>
</method>
<method name="Rect2" qualifiers="constructor">
- <return type="Rect2">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="y" type="float">
- </argument>
- <argument index="2" name="width" type="float">
- </argument>
- <argument index="3" name="height" type="float">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
+ <argument index="2" name="width" type="float" />
+ <argument index="3" name="height" type="float" />
<description>
Constructs a [Rect2] by x, y, width, and height.
</description>
</method>
<method name="abs" qualifiers="const">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Returns a [Rect2] with equivalent position and area, modified so that the top-left corner is the origin and [code]width[/code] and [code]height[/code] are positive.
</description>
</method>
<method name="encloses" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="b" type="Rect2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="b" type="Rect2" />
<description>
Returns [code]true[/code] if this [Rect2] completely encloses another one.
</description>
</method>
<method name="expand" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="to" type="Vector2">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="to" type="Vector2" />
<description>
Returns this [Rect2] expanded to include a given point.
</description>
</method>
<method name="get_area" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the area of the [Rect2].
</description>
</method>
<method name="grow" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="amount" type="float">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="amount" type="float" />
<description>
Returns a copy of the [Rect2] grown by the specified [code]amount[/code] on all sides.
</description>
</method>
<method name="grow_individual" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="left" type="float">
- </argument>
- <argument index="1" name="top" type="float">
- </argument>
- <argument index="2" name="right" type="float">
- </argument>
- <argument index="3" name="bottom" type="float">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="left" type="float" />
+ <argument index="1" name="top" type="float" />
+ <argument index="2" name="right" type="float" />
+ <argument index="3" name="bottom" type="float" />
<description>
Returns a copy of the [Rect2] grown by the specified amount on each side individually.
</description>
</method>
<method name="grow_side" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="side" type="int">
- </argument>
- <argument index="1" name="amount" type="float">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="side" type="int" />
+ <argument index="1" name="amount" type="float" />
<description>
Returns a copy of the [Rect2] grown by the specified [code]amount[/code] on the specified [enum Side].
</description>
</method>
<method name="has_no_area" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the [Rect2] is flat or empty.
</description>
</method>
<method name="has_point" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="point" type="Vector2" />
<description>
Returns [code]true[/code] if the [Rect2] contains a point.
</description>
</method>
<method name="intersection" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="b" type="Rect2">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="b" type="Rect2" />
<description>
Returns the intersection of this [Rect2] and [code]b[/code].
If the rectangles do not intersect, an empty [Rect2] is returned.
</description>
</method>
<method name="intersects" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="b" type="Rect2">
- </argument>
- <argument index="1" name="include_borders" type="bool" default="false">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="b" type="Rect2" />
+ <argument index="1" name="include_borders" type="bool" default="false" />
<description>
Returns [code]true[/code] if the [Rect2] overlaps with [code]b[/code] (i.e. they have at least one point in common).
If [code]include_borders[/code] is [code]true[/code], they will also be considered overlapping if their borders touch, even without intersection.
</description>
</method>
<method name="is_equal_approx" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="rect" type="Rect2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="rect" type="Rect2" />
<description>
Returns [code]true[/code] if this [Rect2] and [code]rect[/code] are approximately equal, by calling [code]is_equal_approx[/code] on each component.
</description>
</method>
<method name="merge" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="b" type="Rect2">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="b" type="Rect2" />
<description>
Returns a larger [Rect2] that contains this [Rect2] and [code]b[/code].
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Rect2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Rect2" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Rect2">
- </return>
- <argument index="0" name="right" type="Transform2D">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="right" type="Transform2D" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Rect2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Rect2" />
<description>
</description>
</method>
diff --git a/doc/classes/Rect2i.xml b/doc/classes/Rect2i.xml
index 67d148084f..a75c31a007 100644
--- a/doc/classes/Rect2i.xml
+++ b/doc/classes/Rect2i.xml
@@ -13,181 +13,139 @@
</tutorials>
<methods>
<method name="Rect2i" qualifiers="constructor">
- <return type="Rect2i">
- </return>
+ <return type="Rect2i" />
<description>
Constructs a default-initialized [Rect2i] with default (zero) values of [member position] and [member size].
</description>
</method>
<method name="Rect2i" qualifiers="constructor">
- <return type="Rect2i">
- </return>
- <argument index="0" name="from" type="Rect2i">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="from" type="Rect2i" />
<description>
Constructs a [Rect2i] as a copy of the given [Rect2i].
</description>
</method>
<method name="Rect2i" qualifiers="constructor">
- <return type="Rect2i">
- </return>
- <argument index="0" name="from" type="Rect2">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="from" type="Rect2" />
<description>
Constructs a new [Rect2i] from [Rect2]. The floating point coordinates will be truncated.
</description>
</method>
<method name="Rect2i" qualifiers="constructor">
- <return type="Rect2i">
- </return>
- <argument index="0" name="position" type="Vector2i">
- </argument>
- <argument index="1" name="size" type="Vector2i">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="position" type="Vector2i" />
+ <argument index="1" name="size" type="Vector2i" />
<description>
Constructs a [Rect2i] by position and size.
</description>
</method>
<method name="Rect2i" qualifiers="constructor">
- <return type="Rect2i">
- </return>
- <argument index="0" name="x" type="int">
- </argument>
- <argument index="1" name="y" type="int">
- </argument>
- <argument index="2" name="width" type="int">
- </argument>
- <argument index="3" name="height" type="int">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="x" type="int" />
+ <argument index="1" name="y" type="int" />
+ <argument index="2" name="width" type="int" />
+ <argument index="3" name="height" type="int" />
<description>
Constructs a [Rect2i] by x, y, width, and height.
</description>
</method>
<method name="abs" qualifiers="const">
- <return type="Rect2i">
- </return>
+ <return type="Rect2i" />
<description>
Returns a [Rect2i] with equivalent position and area, modified so that the top-left corner is the origin and [code]width[/code] and [code]height[/code] are positive.
</description>
</method>
<method name="encloses" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="b" type="Rect2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="b" type="Rect2i" />
<description>
Returns [code]true[/code] if this [Rect2i] completely encloses another one.
</description>
</method>
<method name="expand" qualifiers="const">
- <return type="Rect2i">
- </return>
- <argument index="0" name="to" type="Vector2i">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="to" type="Vector2i" />
<description>
Returns this [Rect2i] expanded to include a given point.
</description>
</method>
<method name="get_area" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the area of the [Rect2i].
</description>
</method>
<method name="grow" qualifiers="const">
- <return type="Rect2i">
- </return>
- <argument index="0" name="amount" type="int">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="amount" type="int" />
<description>
Returns a copy of the [Rect2i] grown by the specified [code]amount[/code] on all sides.
</description>
</method>
<method name="grow_individual" qualifiers="const">
- <return type="Rect2i">
- </return>
- <argument index="0" name="left" type="int">
- </argument>
- <argument index="1" name="top" type="int">
- </argument>
- <argument index="2" name="right" type="int">
- </argument>
- <argument index="3" name="bottom" type="int">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="left" type="int" />
+ <argument index="1" name="top" type="int" />
+ <argument index="2" name="right" type="int" />
+ <argument index="3" name="bottom" type="int" />
<description>
Returns a copy of the [Rect2i] grown by the specified amount on each side individually.
</description>
</method>
<method name="grow_side" qualifiers="const">
- <return type="Rect2i">
- </return>
- <argument index="0" name="side" type="int">
- </argument>
- <argument index="1" name="amount" type="int">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="side" type="int" />
+ <argument index="1" name="amount" type="int" />
<description>
Returns a copy of the [Rect2i] grown by the specified [code]amount[/code] on the specified [enum Side].
</description>
</method>
<method name="has_no_area" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the [Rect2i] is flat or empty.
</description>
</method>
<method name="has_point" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="point" type="Vector2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="point" type="Vector2i" />
<description>
Returns [code]true[/code] if the [Rect2i] contains a point.
</description>
</method>
<method name="intersection" qualifiers="const">
- <return type="Rect2i">
- </return>
- <argument index="0" name="b" type="Rect2i">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="b" type="Rect2i" />
<description>
Returns the intersection of this [Rect2i] and [code]b[/code].
If the rectangles do not intersect, an empty [Rect2i] is returned.
</description>
</method>
<method name="intersects" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="b" type="Rect2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="b" type="Rect2i" />
<description>
Returns [code]true[/code] if the [Rect2i] overlaps with [code]b[/code] (i.e. they have at least one point in common).
If [code]include_borders[/code] is [code]true[/code], they will also be considered overlapping if their borders touch, even without intersection.
</description>
</method>
<method name="merge" qualifiers="const">
- <return type="Rect2i">
- </return>
- <argument index="0" name="b" type="Rect2i">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="b" type="Rect2i" />
<description>
Returns a larger [Rect2i] that contains this [Rect2i] and [code]b[/code].
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Rect2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Rect2i" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Rect2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Rect2i" />
<description>
</description>
</method>
diff --git a/doc/classes/RefCounted.xml b/doc/classes/RefCounted.xml
index cf96514203..bf52c34777 100644
--- a/doc/classes/RefCounted.xml
+++ b/doc/classes/RefCounted.xml
@@ -14,24 +14,21 @@
</tutorials>
<methods>
<method name="init_ref">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Initializes the internal reference counter. Use this only if you really know what you are doing.
Returns whether the initialization was successful.
</description>
</method>
<method name="reference">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Increments the internal reference counter. Use this only if you really know what you are doing.
Returns [code]true[/code] if the increment was successful, [code]false[/code] otherwise.
</description>
</method>
<method name="unreference">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Decrements the internal reference counter. Use this only if you really know what you are doing.
Returns [code]true[/code] if the decrement was successful, [code]false[/code] otherwise.
diff --git a/doc/classes/RemoteTransform2D.xml b/doc/classes/RemoteTransform2D.xml
index 84ec673920..613726b555 100644
--- a/doc/classes/RemoteTransform2D.xml
+++ b/doc/classes/RemoteTransform2D.xml
@@ -11,8 +11,7 @@
</tutorials>
<methods>
<method name="force_update_cache">
- <return type="void">
- </return>
+ <return type="void" />
<description>
[RemoteTransform2D] caches the remote node. It may not notice if the remote node disappears; [method force_update_cache] forces it to update the cache again.
</description>
diff --git a/doc/classes/RemoteTransform3D.xml b/doc/classes/RemoteTransform3D.xml
index 453177496f..cc19d5c25d 100644
--- a/doc/classes/RemoteTransform3D.xml
+++ b/doc/classes/RemoteTransform3D.xml
@@ -11,8 +11,7 @@
</tutorials>
<methods>
<method name="force_update_cache">
- <return type="void">
- </return>
+ <return type="void" />
<description>
[RemoteTransform3D] caches the remote node. It may not notice if the remote node disappears; [method force_update_cache] forces it to update the cache again.
</description>
diff --git a/doc/classes/RenderingDevice.xml b/doc/classes/RenderingDevice.xml
index 901a985961..c017bcaa1a 100644
--- a/doc/classes/RenderingDevice.xml
+++ b/doc/classes/RenderingDevice.xml
@@ -8,888 +8,627 @@
</tutorials>
<methods>
<method name="barrier">
- <return type="void">
- </return>
- <argument index="0" name="from" type="int" default="7">
- </argument>
- <argument index="1" name="to" type="int" default="7">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from" type="int" default="7" />
+ <argument index="1" name="to" type="int" default="7" />
<description>
</description>
</method>
<method name="buffer_clear">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="buffer" type="RID">
- </argument>
- <argument index="1" name="offset" type="int">
- </argument>
- <argument index="2" name="size_bytes" type="int">
- </argument>
- <argument index="3" name="post_barrier" type="int" default="7">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="buffer" type="RID" />
+ <argument index="1" name="offset" type="int" />
+ <argument index="2" name="size_bytes" type="int" />
+ <argument index="3" name="post_barrier" type="int" default="7" />
<description>
</description>
</method>
<method name="buffer_get_data">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="buffer" type="RID">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="buffer" type="RID" />
<description>
</description>
</method>
<method name="buffer_update">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="buffer" type="RID">
- </argument>
- <argument index="1" name="offset" type="int">
- </argument>
- <argument index="2" name="size_bytes" type="int">
- </argument>
- <argument index="3" name="data" type="PackedByteArray">
- </argument>
- <argument index="4" name="post_barrier" type="int" default="7">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="buffer" type="RID" />
+ <argument index="1" name="offset" type="int" />
+ <argument index="2" name="size_bytes" type="int" />
+ <argument index="3" name="data" type="PackedByteArray" />
+ <argument index="4" name="post_barrier" type="int" default="7" />
<description>
</description>
</method>
<method name="capture_timestamp">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
<description>
</description>
</method>
<method name="compute_list_add_barrier">
- <return type="void">
- </return>
- <argument index="0" name="compute_list" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="compute_list" type="int" />
<description>
</description>
</method>
<method name="compute_list_begin">
- <return type="int">
- </return>
- <argument index="0" name="allow_draw_overlap" type="bool" default="false">
- </argument>
+ <return type="int" />
+ <argument index="0" name="allow_draw_overlap" type="bool" default="false" />
<description>
</description>
</method>
<method name="compute_list_bind_compute_pipeline">
- <return type="void">
- </return>
- <argument index="0" name="compute_list" type="int">
- </argument>
- <argument index="1" name="compute_pipeline" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="compute_list" type="int" />
+ <argument index="1" name="compute_pipeline" type="RID" />
<description>
</description>
</method>
<method name="compute_list_bind_uniform_set">
- <return type="void">
- </return>
- <argument index="0" name="compute_list" type="int">
- </argument>
- <argument index="1" name="uniform_set" type="RID">
- </argument>
- <argument index="2" name="set_index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="compute_list" type="int" />
+ <argument index="1" name="uniform_set" type="RID" />
+ <argument index="2" name="set_index" type="int" />
<description>
</description>
</method>
<method name="compute_list_dispatch">
- <return type="void">
- </return>
- <argument index="0" name="compute_list" type="int">
- </argument>
- <argument index="1" name="x_groups" type="int">
- </argument>
- <argument index="2" name="y_groups" type="int">
- </argument>
- <argument index="3" name="z_groups" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="compute_list" type="int" />
+ <argument index="1" name="x_groups" type="int" />
+ <argument index="2" name="y_groups" type="int" />
+ <argument index="3" name="z_groups" type="int" />
<description>
</description>
</method>
<method name="compute_list_end">
- <return type="void">
- </return>
- <argument index="0" name="post_barrier" type="int" default="7">
- </argument>
+ <return type="void" />
+ <argument index="0" name="post_barrier" type="int" default="7" />
<description>
</description>
</method>
<method name="compute_list_set_push_constant">
- <return type="void">
- </return>
- <argument index="0" name="compute_list" type="int">
- </argument>
- <argument index="1" name="buffer" type="PackedByteArray">
- </argument>
- <argument index="2" name="size_bytes" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="compute_list" type="int" />
+ <argument index="1" name="buffer" type="PackedByteArray" />
+ <argument index="2" name="size_bytes" type="int" />
<description>
</description>
</method>
<method name="compute_pipeline_create">
- <return type="RID">
- </return>
- <argument index="0" name="shader" type="RID">
- </argument>
- <argument index="1" name="specialization_constants" type="RDPipelineSpecializationConstant[]" default="[]">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="shader" type="RID" />
+ <argument index="1" name="specialization_constants" type="RDPipelineSpecializationConstant[]" default="[]" />
<description>
</description>
</method>
<method name="compute_pipeline_is_valid">
- <return type="bool">
- </return>
- <argument index="0" name="compute_pieline" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="compute_pieline" type="RID" />
<description>
</description>
</method>
<method name="create_local_device">
- <return type="RenderingDevice">
- </return>
+ <return type="RenderingDevice" />
<description>
</description>
</method>
<method name="draw_command_begin_label">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="color" type="Color" />
<description>
</description>
</method>
<method name="draw_command_end_label">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="draw_command_insert_label">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="color" type="Color" />
<description>
</description>
</method>
<method name="draw_list_begin">
- <return type="int">
- </return>
- <argument index="0" name="framebuffer" type="RID">
- </argument>
- <argument index="1" name="initial_color_action" type="int" enum="RenderingDevice.InitialAction">
- </argument>
- <argument index="2" name="final_color_action" type="int" enum="RenderingDevice.FinalAction">
- </argument>
- <argument index="3" name="initial_depth_action" type="int" enum="RenderingDevice.InitialAction">
- </argument>
- <argument index="4" name="final_depth_action" type="int" enum="RenderingDevice.FinalAction">
- </argument>
- <argument index="5" name="clear_color_values" type="PackedColorArray" default="PackedColorArray()">
- </argument>
- <argument index="6" name="clear_depth" type="float" default="1.0">
- </argument>
- <argument index="7" name="clear_stencil" type="int" default="0">
- </argument>
- <argument index="8" name="region" type="Rect2" default="Rect2i(0, 0, 0, 0)">
- </argument>
- <argument index="9" name="storage_textures" type="Array" default="[]">
- </argument>
+ <return type="int" />
+ <argument index="0" name="framebuffer" type="RID" />
+ <argument index="1" name="initial_color_action" type="int" enum="RenderingDevice.InitialAction" />
+ <argument index="2" name="final_color_action" type="int" enum="RenderingDevice.FinalAction" />
+ <argument index="3" name="initial_depth_action" type="int" enum="RenderingDevice.InitialAction" />
+ <argument index="4" name="final_depth_action" type="int" enum="RenderingDevice.FinalAction" />
+ <argument index="5" name="clear_color_values" type="PackedColorArray" default="PackedColorArray()" />
+ <argument index="6" name="clear_depth" type="float" default="1.0" />
+ <argument index="7" name="clear_stencil" type="int" default="0" />
+ <argument index="8" name="region" type="Rect2" default="Rect2i(0, 0, 0, 0)" />
+ <argument index="9" name="storage_textures" type="Array" default="[]" />
<description>
</description>
</method>
<method name="draw_list_begin_for_screen">
- <return type="int">
- </return>
- <argument index="0" name="screen" type="int" default="0">
- </argument>
- <argument index="1" name="clear_color" type="Color" default="Color(0, 0, 0, 1)">
- </argument>
+ <return type="int" />
+ <argument index="0" name="screen" type="int" default="0" />
+ <argument index="1" name="clear_color" type="Color" default="Color(0, 0, 0, 1)" />
<description>
</description>
</method>
<method name="draw_list_begin_split">
- <return type="PackedInt64Array">
- </return>
- <argument index="0" name="framebuffer" type="RID">
- </argument>
- <argument index="1" name="splits" type="int">
- </argument>
- <argument index="2" name="initial_color_action" type="int" enum="RenderingDevice.InitialAction">
- </argument>
- <argument index="3" name="final_color_action" type="int" enum="RenderingDevice.FinalAction">
- </argument>
- <argument index="4" name="initial_depth_action" type="int" enum="RenderingDevice.InitialAction">
- </argument>
- <argument index="5" name="final_depth_action" type="int" enum="RenderingDevice.FinalAction">
- </argument>
- <argument index="6" name="clear_color_values" type="PackedColorArray" default="PackedColorArray()">
- </argument>
- <argument index="7" name="clear_depth" type="float" default="1.0">
- </argument>
- <argument index="8" name="clear_stencil" type="int" default="0">
- </argument>
- <argument index="9" name="region" type="Rect2" default="Rect2i(0, 0, 0, 0)">
- </argument>
- <argument index="10" name="storage_textures" type="RID[]" default="[]">
- </argument>
+ <return type="PackedInt64Array" />
+ <argument index="0" name="framebuffer" type="RID" />
+ <argument index="1" name="splits" type="int" />
+ <argument index="2" name="initial_color_action" type="int" enum="RenderingDevice.InitialAction" />
+ <argument index="3" name="final_color_action" type="int" enum="RenderingDevice.FinalAction" />
+ <argument index="4" name="initial_depth_action" type="int" enum="RenderingDevice.InitialAction" />
+ <argument index="5" name="final_depth_action" type="int" enum="RenderingDevice.FinalAction" />
+ <argument index="6" name="clear_color_values" type="PackedColorArray" default="PackedColorArray()" />
+ <argument index="7" name="clear_depth" type="float" default="1.0" />
+ <argument index="8" name="clear_stencil" type="int" default="0" />
+ <argument index="9" name="region" type="Rect2" default="Rect2i(0, 0, 0, 0)" />
+ <argument index="10" name="storage_textures" type="RID[]" default="[]" />
<description>
</description>
</method>
<method name="draw_list_bind_index_array">
- <return type="void">
- </return>
- <argument index="0" name="draw_list" type="int">
- </argument>
- <argument index="1" name="index_array" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="draw_list" type="int" />
+ <argument index="1" name="index_array" type="RID" />
<description>
</description>
</method>
<method name="draw_list_bind_render_pipeline">
- <return type="void">
- </return>
- <argument index="0" name="draw_list" type="int">
- </argument>
- <argument index="1" name="render_pipeline" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="draw_list" type="int" />
+ <argument index="1" name="render_pipeline" type="RID" />
<description>
</description>
</method>
<method name="draw_list_bind_uniform_set">
- <return type="void">
- </return>
- <argument index="0" name="draw_list" type="int">
- </argument>
- <argument index="1" name="uniform_set" type="RID">
- </argument>
- <argument index="2" name="set_index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="draw_list" type="int" />
+ <argument index="1" name="uniform_set" type="RID" />
+ <argument index="2" name="set_index" type="int" />
<description>
</description>
</method>
<method name="draw_list_bind_vertex_array">
- <return type="void">
- </return>
- <argument index="0" name="draw_list" type="int">
- </argument>
- <argument index="1" name="vertex_array" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="draw_list" type="int" />
+ <argument index="1" name="vertex_array" type="RID" />
<description>
</description>
</method>
<method name="draw_list_disable_scissor">
- <return type="void">
- </return>
- <argument index="0" name="draw_list" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="draw_list" type="int" />
<description>
</description>
</method>
<method name="draw_list_draw">
- <return type="void">
- </return>
- <argument index="0" name="draw_list" type="int">
- </argument>
- <argument index="1" name="use_indices" type="bool">
- </argument>
- <argument index="2" name="instances" type="int">
- </argument>
- <argument index="3" name="procedural_vertex_count" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="draw_list" type="int" />
+ <argument index="1" name="use_indices" type="bool" />
+ <argument index="2" name="instances" type="int" />
+ <argument index="3" name="procedural_vertex_count" type="int" default="0" />
<description>
</description>
</method>
<method name="draw_list_enable_scissor">
- <return type="void">
- </return>
- <argument index="0" name="draw_list" type="int">
- </argument>
- <argument index="1" name="rect" type="Rect2" default="Rect2i(0, 0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="draw_list" type="int" />
+ <argument index="1" name="rect" type="Rect2" default="Rect2i(0, 0, 0, 0)" />
<description>
</description>
</method>
<method name="draw_list_end">
- <return type="void">
- </return>
- <argument index="0" name="post_barrier" type="int" default="7">
- </argument>
+ <return type="void" />
+ <argument index="0" name="post_barrier" type="int" default="7" />
<description>
</description>
</method>
<method name="draw_list_set_push_constant">
- <return type="void">
- </return>
- <argument index="0" name="draw_list" type="int">
- </argument>
- <argument index="1" name="buffer" type="PackedByteArray">
- </argument>
- <argument index="2" name="size_bytes" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="draw_list" type="int" />
+ <argument index="1" name="buffer" type="PackedByteArray" />
+ <argument index="2" name="size_bytes" type="int" />
<description>
</description>
</method>
<method name="draw_list_switch_to_next_pass">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="draw_list_switch_to_next_pass_split">
- <return type="PackedInt64Array">
- </return>
- <argument index="0" name="splits" type="int">
- </argument>
+ <return type="PackedInt64Array" />
+ <argument index="0" name="splits" type="int" />
<description>
</description>
</method>
<method name="framebuffer_create">
- <return type="RID">
- </return>
- <argument index="0" name="textures" type="RID[]">
- </argument>
- <argument index="1" name="validate_with_format" type="int" default="-1">
- </argument>
- <argument index="2" name="view_count" type="int" default="1">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="textures" type="RID[]" />
+ <argument index="1" name="validate_with_format" type="int" default="-1" />
+ <argument index="2" name="view_count" type="int" default="1" />
<description>
</description>
</method>
<method name="framebuffer_create_empty">
- <return type="RID">
- </return>
- <argument index="0" name="size" type="Vector2i">
- </argument>
- <argument index="1" name="samples" type="int" enum="RenderingDevice.TextureSamples" default="0">
- </argument>
- <argument index="2" name="validate_with_format" type="int" default="-1">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="size" type="Vector2i" />
+ <argument index="1" name="samples" type="int" enum="RenderingDevice.TextureSamples" default="0" />
+ <argument index="2" name="validate_with_format" type="int" default="-1" />
<description>
</description>
</method>
<method name="framebuffer_create_multipass">
- <return type="RID">
- </return>
- <argument index="0" name="textures" type="RID[]">
- </argument>
- <argument index="1" name="passes" type="RDFramebufferPass[]">
- </argument>
- <argument index="2" name="validate_with_format" type="int" default="-1">
- </argument>
- <argument index="3" name="view_count" type="int" default="1">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="textures" type="RID[]" />
+ <argument index="1" name="passes" type="RDFramebufferPass[]" />
+ <argument index="2" name="validate_with_format" type="int" default="-1" />
+ <argument index="3" name="view_count" type="int" default="1" />
<description>
</description>
</method>
<method name="framebuffer_format_create">
- <return type="int">
- </return>
- <argument index="0" name="attachments" type="RDAttachmentFormat[]">
- </argument>
- <argument index="1" name="view_count" type="int" default="1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="attachments" type="RDAttachmentFormat[]" />
+ <argument index="1" name="view_count" type="int" default="1" />
<description>
</description>
</method>
<method name="framebuffer_format_create_empty">
- <return type="int">
- </return>
- <argument index="0" name="samples" type="int" enum="RenderingDevice.TextureSamples" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="samples" type="int" enum="RenderingDevice.TextureSamples" default="0" />
<description>
</description>
</method>
<method name="framebuffer_format_create_multipass">
- <return type="int">
- </return>
- <argument index="0" name="attachments" type="RDAttachmentFormat[]">
- </argument>
- <argument index="1" name="passes" type="RDFramebufferPass[]">
- </argument>
- <argument index="2" name="view_count" type="int" default="1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="attachments" type="RDAttachmentFormat[]" />
+ <argument index="1" name="passes" type="RDFramebufferPass[]" />
+ <argument index="2" name="view_count" type="int" default="1" />
<description>
</description>
</method>
<method name="framebuffer_format_get_texture_samples">
- <return type="int" enum="RenderingDevice.TextureSamples">
- </return>
- <argument index="0" name="format" type="int">
- </argument>
- <argument index="1" name="render_pass" type="int" default="0">
- </argument>
+ <return type="int" enum="RenderingDevice.TextureSamples" />
+ <argument index="0" name="format" type="int" />
+ <argument index="1" name="render_pass" type="int" default="0" />
<description>
</description>
</method>
<method name="framebuffer_get_format">
- <return type="int">
- </return>
- <argument index="0" name="framebuffer" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="framebuffer" type="RID" />
<description>
</description>
</method>
<method name="free">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
</description>
</method>
<method name="full_barrier">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="get_captured_timestamp_cpu_time" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="get_captured_timestamp_gpu_time" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="get_captured_timestamp_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="get_captured_timestamps_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_captured_timestamps_frame" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_device_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
<method name="get_device_pipeline_cache_uuid" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
<method name="get_device_vendor_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
</description>
</method>
<method name="get_frame_delay" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_memory_usage" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="arg0" type="int" enum="RenderingDevice.MemoryType">
- </argument>
+ <return type="int" />
+ <argument index="0" name="arg0" type="int" enum="RenderingDevice.MemoryType" />
<description>
</description>
</method>
<method name="index_array_create">
- <return type="RID">
- </return>
- <argument index="0" name="index_buffer" type="RID">
- </argument>
- <argument index="1" name="index_offset" type="int">
- </argument>
- <argument index="2" name="index_count" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="index_buffer" type="RID" />
+ <argument index="1" name="index_offset" type="int" />
+ <argument index="2" name="index_count" type="int" />
<description>
</description>
</method>
<method name="index_buffer_create">
- <return type="RID">
- </return>
- <argument index="0" name="size_indices" type="int">
- </argument>
- <argument index="1" name="format" type="int" enum="RenderingDevice.IndexBufferFormat">
- </argument>
- <argument index="2" name="data" type="PackedByteArray" default="PackedByteArray()">
- </argument>
- <argument index="3" name="use_restart_indices" type="bool" default="false">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="size_indices" type="int" />
+ <argument index="1" name="format" type="int" enum="RenderingDevice.IndexBufferFormat" />
+ <argument index="2" name="data" type="PackedByteArray" default="PackedByteArray()" />
+ <argument index="3" name="use_restart_indices" type="bool" default="false" />
<description>
</description>
</method>
<method name="limit_get">
- <return type="int">
- </return>
- <argument index="0" name="limit" type="int" enum="RenderingDevice.Limit">
- </argument>
+ <return type="int" />
+ <argument index="0" name="limit" type="int" enum="RenderingDevice.Limit" />
<description>
</description>
</method>
<method name="render_pipeline_create">
- <return type="RID">
- </return>
- <argument index="0" name="shader" type="RID">
- </argument>
- <argument index="1" name="framebuffer_format" type="int">
- </argument>
- <argument index="2" name="vertex_format" type="int">
- </argument>
- <argument index="3" name="primitive" type="int" enum="RenderingDevice.RenderPrimitive">
- </argument>
- <argument index="4" name="rasterization_state" type="RDPipelineRasterizationState">
- </argument>
- <argument index="5" name="multisample_state" type="RDPipelineMultisampleState">
- </argument>
- <argument index="6" name="stencil_state" type="RDPipelineDepthStencilState">
- </argument>
- <argument index="7" name="color_blend_state" type="RDPipelineColorBlendState">
- </argument>
- <argument index="8" name="dynamic_state_flags" type="int" default="0">
- </argument>
- <argument index="9" name="for_render_pass" type="int" default="0">
- </argument>
- <argument index="10" name="specialization_constants" type="RDPipelineSpecializationConstant[]" default="[]">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="shader" type="RID" />
+ <argument index="1" name="framebuffer_format" type="int" />
+ <argument index="2" name="vertex_format" type="int" />
+ <argument index="3" name="primitive" type="int" enum="RenderingDevice.RenderPrimitive" />
+ <argument index="4" name="rasterization_state" type="RDPipelineRasterizationState" />
+ <argument index="5" name="multisample_state" type="RDPipelineMultisampleState" />
+ <argument index="6" name="stencil_state" type="RDPipelineDepthStencilState" />
+ <argument index="7" name="color_blend_state" type="RDPipelineColorBlendState" />
+ <argument index="8" name="dynamic_state_flags" type="int" default="0" />
+ <argument index="9" name="for_render_pass" type="int" default="0" />
+ <argument index="10" name="specialization_constants" type="RDPipelineSpecializationConstant[]" default="[]" />
<description>
</description>
</method>
<method name="render_pipeline_is_valid">
- <return type="bool">
- </return>
- <argument index="0" name="render_pipeline" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="render_pipeline" type="RID" />
<description>
</description>
</method>
<method name="sampler_create">
- <return type="RID">
- </return>
- <argument index="0" name="state" type="RDSamplerState">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="state" type="RDSamplerState" />
<description>
</description>
</method>
<method name="screen_get_framebuffer_format" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="screen_get_height" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="screen" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="screen" type="int" default="0" />
<description>
</description>
</method>
<method name="screen_get_width" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="screen" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="screen" type="int" default="0" />
<description>
</description>
</method>
<method name="set_resource_name">
- <return type="void">
- </return>
- <argument index="0" name="id" type="RID">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="RID" />
+ <argument index="1" name="name" type="String" />
<description>
</description>
</method>
- <method name="shader_compile_from_source">
- <return type="RDShaderBytecode">
- </return>
- <argument index="0" name="shader_source" type="RDShaderSource">
- </argument>
- <argument index="1" name="allow_cache" type="bool" default="true">
- </argument>
+ <method name="shader_compile_binary_from_spirv">
+ <return type="PackedByteArray" />
+ <argument index="0" name="spirv_data" type="RDShaderSPIRV" />
<description>
</description>
</method>
- <method name="shader_create">
- <return type="RID">
- </return>
- <argument index="0" name="shader_data" type="RDShaderBytecode">
- </argument>
+ <method name="shader_compile_spirv_from_source">
+ <return type="RDShaderSPIRV" />
+ <argument index="0" name="shader_source" type="RDShaderSource" />
+ <argument index="1" name="allow_cache" type="bool" default="true" />
+ <description>
+ </description>
+ </method>
+ <method name="shader_create_from_bytecode">
+ <return type="RID" />
+ <argument index="0" name="binary_data" type="PackedByteArray" />
+ <description>
+ </description>
+ </method>
+ <method name="shader_create_from_spirv">
+ <return type="PackedByteArray" />
+ <argument index="0" name="spirv_data" type="RDShaderSPIRV" />
<description>
</description>
</method>
<method name="shader_get_vertex_input_attribute_mask">
- <return type="int">
- </return>
- <argument index="0" name="shader" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="shader" type="RID" />
<description>
</description>
</method>
<method name="storage_buffer_create">
- <return type="RID">
- </return>
- <argument index="0" name="size_bytes" type="int">
- </argument>
- <argument index="1" name="data" type="PackedByteArray" default="PackedByteArray()">
- </argument>
- <argument index="2" name="usage" type="int" default="0">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="size_bytes" type="int" />
+ <argument index="1" name="data" type="PackedByteArray" default="PackedByteArray()" />
+ <argument index="2" name="usage" type="int" default="0" />
<description>
</description>
</method>
<method name="submit">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="sync">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="texture_buffer_create">
- <return type="RID">
- </return>
- <argument index="0" name="size_bytes" type="int">
- </argument>
- <argument index="1" name="format" type="int" enum="RenderingDevice.DataFormat">
- </argument>
- <argument index="2" name="data" type="PackedByteArray" default="PackedByteArray()">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="size_bytes" type="int" />
+ <argument index="1" name="format" type="int" enum="RenderingDevice.DataFormat" />
+ <argument index="2" name="data" type="PackedByteArray" default="PackedByteArray()" />
<description>
</description>
</method>
<method name="texture_clear">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
- <argument index="2" name="base_mipmap" type="int">
- </argument>
- <argument index="3" name="mipmap_count" type="int">
- </argument>
- <argument index="4" name="base_layer" type="int">
- </argument>
- <argument index="5" name="layer_count" type="int">
- </argument>
- <argument index="6" name="post_barrier" type="int" default="7">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="texture" type="RID" />
+ <argument index="1" name="color" type="Color" />
+ <argument index="2" name="base_mipmap" type="int" />
+ <argument index="3" name="mipmap_count" type="int" />
+ <argument index="4" name="base_layer" type="int" />
+ <argument index="5" name="layer_count" type="int" />
+ <argument index="6" name="post_barrier" type="int" default="7" />
<description>
</description>
</method>
<method name="texture_copy">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="from_texture" type="RID">
- </argument>
- <argument index="1" name="to_texture" type="RID">
- </argument>
- <argument index="2" name="from_pos" type="Vector3">
- </argument>
- <argument index="3" name="to_pos" type="Vector3">
- </argument>
- <argument index="4" name="size" type="Vector3">
- </argument>
- <argument index="5" name="src_mipmap" type="int">
- </argument>
- <argument index="6" name="dst_mipmap" type="int">
- </argument>
- <argument index="7" name="src_layer" type="int">
- </argument>
- <argument index="8" name="dst_layer" type="int">
- </argument>
- <argument index="9" name="post_barrier" type="int" default="7">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="from_texture" type="RID" />
+ <argument index="1" name="to_texture" type="RID" />
+ <argument index="2" name="from_pos" type="Vector3" />
+ <argument index="3" name="to_pos" type="Vector3" />
+ <argument index="4" name="size" type="Vector3" />
+ <argument index="5" name="src_mipmap" type="int" />
+ <argument index="6" name="dst_mipmap" type="int" />
+ <argument index="7" name="src_layer" type="int" />
+ <argument index="8" name="dst_layer" type="int" />
+ <argument index="9" name="post_barrier" type="int" default="7" />
<description>
</description>
</method>
<method name="texture_create">
- <return type="RID">
- </return>
- <argument index="0" name="format" type="RDTextureFormat">
- </argument>
- <argument index="1" name="view" type="RDTextureView">
- </argument>
- <argument index="2" name="data" type="PackedByteArray[]" default="[]">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="format" type="RDTextureFormat" />
+ <argument index="1" name="view" type="RDTextureView" />
+ <argument index="2" name="data" type="PackedByteArray[]" default="[]" />
<description>
</description>
</method>
<method name="texture_create_shared">
- <return type="RID">
- </return>
- <argument index="0" name="view" type="RDTextureView">
- </argument>
- <argument index="1" name="with_texture" type="RID">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="view" type="RDTextureView" />
+ <argument index="1" name="with_texture" type="RID" />
<description>
</description>
</method>
<method name="texture_create_shared_from_slice">
- <return type="RID">
- </return>
- <argument index="0" name="view" type="RDTextureView">
- </argument>
- <argument index="1" name="with_texture" type="RID">
- </argument>
- <argument index="2" name="layer" type="int">
- </argument>
- <argument index="3" name="mipmap" type="int">
- </argument>
- <argument index="4" name="slice_type" type="int" enum="RenderingDevice.TextureSliceType" default="0">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="view" type="RDTextureView" />
+ <argument index="1" name="with_texture" type="RID" />
+ <argument index="2" name="layer" type="int" />
+ <argument index="3" name="mipmap" type="int" />
+ <argument index="4" name="slice_type" type="int" enum="RenderingDevice.TextureSliceType" default="0" />
<description>
</description>
</method>
<method name="texture_get_data">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
- <argument index="1" name="layer" type="int">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="texture" type="RID" />
+ <argument index="1" name="layer" type="int" />
<description>
</description>
</method>
<method name="texture_is_format_supported_for_usage" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="format" type="int" enum="RenderingDevice.DataFormat">
- </argument>
- <argument index="1" name="usage_flags" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="format" type="int" enum="RenderingDevice.DataFormat" />
+ <argument index="1" name="usage_flags" type="int" />
<description>
</description>
</method>
<method name="texture_is_shared">
- <return type="bool">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="texture" type="RID" />
<description>
</description>
</method>
<method name="texture_is_valid">
- <return type="bool">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="texture" type="RID" />
<description>
</description>
</method>
<method name="texture_resolve_multisample">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="from_texture" type="RID">
- </argument>
- <argument index="1" name="to_texture" type="RID">
- </argument>
- <argument index="2" name="post_barrier" type="int" default="7">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="from_texture" type="RID" />
+ <argument index="1" name="to_texture" type="RID" />
+ <argument index="2" name="post_barrier" type="int" default="7" />
<description>
</description>
</method>
<method name="texture_update">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
- <argument index="1" name="layer" type="int">
- </argument>
- <argument index="2" name="data" type="PackedByteArray">
- </argument>
- <argument index="3" name="post_barrier" type="int" default="7">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="texture" type="RID" />
+ <argument index="1" name="layer" type="int" />
+ <argument index="2" name="data" type="PackedByteArray" />
+ <argument index="3" name="post_barrier" type="int" default="7" />
<description>
</description>
</method>
<method name="uniform_buffer_create">
- <return type="RID">
- </return>
- <argument index="0" name="size_bytes" type="int">
- </argument>
- <argument index="1" name="data" type="PackedByteArray" default="PackedByteArray()">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="size_bytes" type="int" />
+ <argument index="1" name="data" type="PackedByteArray" default="PackedByteArray()" />
<description>
</description>
</method>
<method name="uniform_set_create">
- <return type="RID">
- </return>
- <argument index="0" name="uniforms" type="Array">
- </argument>
- <argument index="1" name="shader" type="RID">
- </argument>
- <argument index="2" name="shader_set" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="uniforms" type="Array" />
+ <argument index="1" name="shader" type="RID" />
+ <argument index="2" name="shader_set" type="int" />
<description>
</description>
</method>
<method name="uniform_set_is_valid">
- <return type="bool">
- </return>
- <argument index="0" name="uniform_set" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="uniform_set" type="RID" />
<description>
</description>
</method>
<method name="vertex_buffer_create">
- <return type="RID">
- </return>
- <argument index="0" name="size_bytes" type="int">
- </argument>
- <argument index="1" name="data" type="PackedByteArray" default="PackedByteArray()">
- </argument>
- <argument index="2" name="use_as_storage" type="bool" default="false">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="size_bytes" type="int" />
+ <argument index="1" name="data" type="PackedByteArray" default="PackedByteArray()" />
+ <argument index="2" name="use_as_storage" type="bool" default="false" />
<description>
</description>
</method>
<method name="vertex_format_create">
- <return type="int">
- </return>
- <argument index="0" name="vertex_descriptions" type="RDVertexAttribute[]">
- </argument>
+ <return type="int" />
+ <argument index="0" name="vertex_descriptions" type="RDVertexAttribute[]" />
<description>
</description>
</method>
diff --git a/doc/classes/RenderingServer.xml b/doc/classes/RenderingServer.xml
index 31ced67ac4..df8bfb7e34 100644
--- a/doc/classes/RenderingServer.xml
+++ b/doc/classes/RenderingServer.xml
@@ -19,1207 +19,840 @@
</tutorials>
<methods>
<method name="bake_render_uv2">
- <return type="Image[]">
- </return>
- <argument index="0" name="base" type="RID">
- </argument>
- <argument index="1" name="material_overrides" type="Array">
- </argument>
- <argument index="2" name="image_size" type="Vector2i">
- </argument>
+ <return type="Image[]" />
+ <argument index="0" name="base" type="RID" />
+ <argument index="1" name="material_overrides" type="Array" />
+ <argument index="2" name="image_size" type="Vector2i" />
<description>
</description>
</method>
<method name="camera_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a camera and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]camera_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="camera_effects_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="camera_effects_set_custom_exposure">
- <return type="void">
- </return>
- <argument index="0" name="camera_effects" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
- <argument index="2" name="exposure" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="camera_effects" type="RID" />
+ <argument index="1" name="enable" type="bool" />
+ <argument index="2" name="exposure" type="float" />
<description>
</description>
</method>
<method name="camera_effects_set_dof_blur">
- <return type="void">
- </return>
- <argument index="0" name="camera_effects" type="RID">
- </argument>
- <argument index="1" name="far_enable" type="bool">
- </argument>
- <argument index="2" name="far_distance" type="float">
- </argument>
- <argument index="3" name="far_transition" type="float">
- </argument>
- <argument index="4" name="near_enable" type="bool">
- </argument>
- <argument index="5" name="near_distance" type="float">
- </argument>
- <argument index="6" name="near_transition" type="float">
- </argument>
- <argument index="7" name="amount" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="camera_effects" type="RID" />
+ <argument index="1" name="far_enable" type="bool" />
+ <argument index="2" name="far_distance" type="float" />
+ <argument index="3" name="far_transition" type="float" />
+ <argument index="4" name="near_enable" type="bool" />
+ <argument index="5" name="near_distance" type="float" />
+ <argument index="6" name="near_transition" type="float" />
+ <argument index="7" name="amount" type="float" />
<description>
</description>
</method>
<method name="camera_effects_set_dof_blur_bokeh_shape">
- <return type="void">
- </return>
- <argument index="0" name="shape" type="int" enum="RenderingServer.DOFBokehShape">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shape" type="int" enum="RenderingServer.DOFBokehShape" />
<description>
</description>
</method>
<method name="camera_effects_set_dof_blur_quality">
- <return type="void">
- </return>
- <argument index="0" name="quality" type="int" enum="RenderingServer.DOFBlurQuality">
- </argument>
- <argument index="1" name="use_jitter" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="quality" type="int" enum="RenderingServer.DOFBlurQuality" />
+ <argument index="1" name="use_jitter" type="bool" />
<description>
</description>
</method>
<method name="camera_set_camera_effects">
- <return type="void">
- </return>
- <argument index="0" name="camera" type="RID">
- </argument>
- <argument index="1" name="effects" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="camera" type="RID" />
+ <argument index="1" name="effects" type="RID" />
<description>
</description>
</method>
<method name="camera_set_cull_mask">
- <return type="void">
- </return>
- <argument index="0" name="camera" type="RID">
- </argument>
- <argument index="1" name="layers" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="camera" type="RID" />
+ <argument index="1" name="layers" type="int" />
<description>
Sets the cull mask associated with this camera. The cull mask describes which 3D layers are rendered by this camera. Equivalent to [member Camera3D.cull_mask].
</description>
</method>
<method name="camera_set_environment">
- <return type="void">
- </return>
- <argument index="0" name="camera" type="RID">
- </argument>
- <argument index="1" name="env" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="camera" type="RID" />
+ <argument index="1" name="env" type="RID" />
<description>
Sets the environment used by this camera. Equivalent to [member Camera3D.environment].
</description>
</method>
<method name="camera_set_frustum">
- <return type="void">
- </return>
- <argument index="0" name="camera" type="RID">
- </argument>
- <argument index="1" name="size" type="float">
- </argument>
- <argument index="2" name="offset" type="Vector2">
- </argument>
- <argument index="3" name="z_near" type="float">
- </argument>
- <argument index="4" name="z_far" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="camera" type="RID" />
+ <argument index="1" name="size" type="float" />
+ <argument index="2" name="offset" type="Vector2" />
+ <argument index="3" name="z_near" type="float" />
+ <argument index="4" name="z_far" type="float" />
<description>
Sets camera to use frustum projection. This mode allows adjusting the [code]offset[/code] argument to create "tilted frustum" effects.
</description>
</method>
<method name="camera_set_orthogonal">
- <return type="void">
- </return>
- <argument index="0" name="camera" type="RID">
- </argument>
- <argument index="1" name="size" type="float">
- </argument>
- <argument index="2" name="z_near" type="float">
- </argument>
- <argument index="3" name="z_far" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="camera" type="RID" />
+ <argument index="1" name="size" type="float" />
+ <argument index="2" name="z_near" type="float" />
+ <argument index="3" name="z_far" type="float" />
<description>
Sets camera to use orthogonal projection, also known as orthographic projection. Objects remain the same size on the screen no matter how far away they are.
</description>
</method>
<method name="camera_set_perspective">
- <return type="void">
- </return>
- <argument index="0" name="camera" type="RID">
- </argument>
- <argument index="1" name="fovy_degrees" type="float">
- </argument>
- <argument index="2" name="z_near" type="float">
- </argument>
- <argument index="3" name="z_far" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="camera" type="RID" />
+ <argument index="1" name="fovy_degrees" type="float" />
+ <argument index="2" name="z_near" type="float" />
+ <argument index="3" name="z_far" type="float" />
<description>
Sets camera to use perspective projection. Objects on the screen becomes smaller when they are far away.
</description>
</method>
<method name="camera_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="camera" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="camera" type="RID" />
+ <argument index="1" name="transform" type="Transform3D" />
<description>
Sets [Transform3D] of camera.
</description>
</method>
<method name="camera_set_use_vertical_aspect">
- <return type="void">
- </return>
- <argument index="0" name="camera" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="camera" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], preserves the horizontal aspect ratio which is equivalent to [constant Camera3D.KEEP_WIDTH]. If [code]false[/code], preserves the vertical aspect ratio which is equivalent to [constant Camera3D.KEEP_HEIGHT].
</description>
</method>
<method name="canvas_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a canvas and returns the assigned [RID]. It can be accessed with the RID that is returned. This RID will be used in all [code]canvas_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="canvas_item_add_circle">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="radius" type="float">
- </argument>
- <argument index="3" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="radius" type="float" />
+ <argument index="3" name="color" type="Color" />
<description>
</description>
</method>
<method name="canvas_item_add_clip_ignore">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="ignore" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="ignore" type="bool" />
<description>
</description>
</method>
<method name="canvas_item_add_line">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="from" type="Vector2">
- </argument>
- <argument index="2" name="to" type="Vector2">
- </argument>
- <argument index="3" name="color" type="Color">
- </argument>
- <argument index="4" name="width" type="float" default="1.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="from" type="Vector2" />
+ <argument index="2" name="to" type="Vector2" />
+ <argument index="3" name="color" type="Color" />
+ <argument index="4" name="width" type="float" default="1.0" />
<description>
</description>
</method>
<method name="canvas_item_add_mesh">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="mesh" type="RID">
- </argument>
- <argument index="2" name="transform" type="Transform2D" default="Transform2D(1, 0, 0, 1, 0, 0)">
- </argument>
- <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="4" name="texture" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="mesh" type="RID" />
+ <argument index="2" name="transform" type="Transform2D" default="Transform2D(1, 0, 0, 1, 0, 0)" />
+ <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="4" name="texture" type="RID" />
<description>
</description>
</method>
<method name="canvas_item_add_multimesh">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="mesh" type="RID">
- </argument>
- <argument index="2" name="texture" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="mesh" type="RID" />
+ <argument index="2" name="texture" type="RID" />
<description>
</description>
</method>
<method name="canvas_item_add_nine_patch">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
- <argument index="2" name="source" type="Rect2">
- </argument>
- <argument index="3" name="texture" type="RID">
- </argument>
- <argument index="4" name="topleft" type="Vector2">
- </argument>
- <argument index="5" name="bottomright" type="Vector2">
- </argument>
- <argument index="6" name="x_axis_mode" type="int" enum="RenderingServer.NinePatchAxisMode" default="0">
- </argument>
- <argument index="7" name="y_axis_mode" type="int" enum="RenderingServer.NinePatchAxisMode" default="0">
- </argument>
- <argument index="8" name="draw_center" type="bool" default="true">
- </argument>
- <argument index="9" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="rect" type="Rect2" />
+ <argument index="2" name="source" type="Rect2" />
+ <argument index="3" name="texture" type="RID" />
+ <argument index="4" name="topleft" type="Vector2" />
+ <argument index="5" name="bottomright" type="Vector2" />
+ <argument index="6" name="x_axis_mode" type="int" enum="RenderingServer.NinePatchAxisMode" default="0" />
+ <argument index="7" name="y_axis_mode" type="int" enum="RenderingServer.NinePatchAxisMode" default="0" />
+ <argument index="8" name="draw_center" type="bool" default="true" />
+ <argument index="9" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
<description>
</description>
</method>
<method name="canvas_item_add_particles">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="particles" type="RID">
- </argument>
- <argument index="2" name="texture" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="particles" type="RID" />
+ <argument index="2" name="texture" type="RID" />
<description>
</description>
</method>
<method name="canvas_item_add_polygon">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="points" type="PackedVector2Array">
- </argument>
- <argument index="2" name="colors" type="PackedColorArray">
- </argument>
- <argument index="3" name="uvs" type="PackedVector2Array" default="PackedVector2Array()">
- </argument>
- <argument index="4" name="texture" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="points" type="PackedVector2Array" />
+ <argument index="2" name="colors" type="PackedColorArray" />
+ <argument index="3" name="uvs" type="PackedVector2Array" default="PackedVector2Array()" />
+ <argument index="4" name="texture" type="RID" />
<description>
</description>
</method>
<method name="canvas_item_add_polyline">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="points" type="PackedVector2Array">
- </argument>
- <argument index="2" name="colors" type="PackedColorArray">
- </argument>
- <argument index="3" name="width" type="float" default="1.0">
- </argument>
- <argument index="4" name="antialiased" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="points" type="PackedVector2Array" />
+ <argument index="2" name="colors" type="PackedColorArray" />
+ <argument index="3" name="width" type="float" default="1.0" />
+ <argument index="4" name="antialiased" type="bool" default="false" />
<description>
</description>
</method>
<method name="canvas_item_add_primitive">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="points" type="PackedVector2Array">
- </argument>
- <argument index="2" name="colors" type="PackedColorArray">
- </argument>
- <argument index="3" name="uvs" type="PackedVector2Array">
- </argument>
- <argument index="4" name="texture" type="RID">
- </argument>
- <argument index="5" name="width" type="float" default="1.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="points" type="PackedVector2Array" />
+ <argument index="2" name="colors" type="PackedColorArray" />
+ <argument index="3" name="uvs" type="PackedVector2Array" />
+ <argument index="4" name="texture" type="RID" />
+ <argument index="5" name="width" type="float" default="1.0" />
<description>
</description>
</method>
<method name="canvas_item_add_rect">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
- <argument index="2" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="rect" type="Rect2" />
+ <argument index="2" name="color" type="Color" />
<description>
</description>
</method>
<method name="canvas_item_add_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="transform" type="Transform2D" />
<description>
</description>
</method>
<method name="canvas_item_add_texture_rect">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
- <argument index="2" name="texture" type="RID">
- </argument>
- <argument index="3" name="tile" type="bool" default="false">
- </argument>
- <argument index="4" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="5" name="transpose" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="rect" type="Rect2" />
+ <argument index="2" name="texture" type="RID" />
+ <argument index="3" name="tile" type="bool" default="false" />
+ <argument index="4" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="5" name="transpose" type="bool" default="false" />
<description>
</description>
</method>
<method name="canvas_item_add_texture_rect_region">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
- <argument index="2" name="texture" type="RID">
- </argument>
- <argument index="3" name="src_rect" type="Rect2">
- </argument>
- <argument index="4" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="5" name="transpose" type="bool" default="false">
- </argument>
- <argument index="6" name="clip_uv" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="rect" type="Rect2" />
+ <argument index="2" name="texture" type="RID" />
+ <argument index="3" name="src_rect" type="Rect2" />
+ <argument index="4" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="5" name="transpose" type="bool" default="false" />
+ <argument index="6" name="clip_uv" type="bool" default="true" />
<description>
</description>
</method>
<method name="canvas_item_add_triangle_array">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="indices" type="PackedInt32Array">
- </argument>
- <argument index="2" name="points" type="PackedVector2Array">
- </argument>
- <argument index="3" name="colors" type="PackedColorArray">
- </argument>
- <argument index="4" name="uvs" type="PackedVector2Array" default="PackedVector2Array()">
- </argument>
- <argument index="5" name="bones" type="PackedInt32Array" default="PackedInt32Array()">
- </argument>
- <argument index="6" name="weights" type="PackedFloat32Array" default="PackedFloat32Array()">
- </argument>
- <argument index="7" name="texture" type="RID">
- </argument>
- <argument index="8" name="count" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="indices" type="PackedInt32Array" />
+ <argument index="2" name="points" type="PackedVector2Array" />
+ <argument index="3" name="colors" type="PackedColorArray" />
+ <argument index="4" name="uvs" type="PackedVector2Array" default="PackedVector2Array()" />
+ <argument index="5" name="bones" type="PackedInt32Array" default="PackedInt32Array()" />
+ <argument index="6" name="weights" type="PackedFloat32Array" default="PackedFloat32Array()" />
+ <argument index="7" name="texture" type="RID" />
+ <argument index="8" name="count" type="int" default="-1" />
<description>
</description>
</method>
<method name="canvas_item_clear">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
<description>
Clears the [CanvasItem] and removes all commands in it.
</description>
</method>
<method name="canvas_item_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="canvas_item_set_canvas_group_mode">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="RenderingServer.CanvasGroupMode">
- </argument>
- <argument index="2" name="clear_margin" type="float" default="5.0">
- </argument>
- <argument index="3" name="fit_empty" type="bool" default="false">
- </argument>
- <argument index="4" name="fit_margin" type="float" default="0.0">
- </argument>
- <argument index="5" name="blur_mipmaps" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="mode" type="int" enum="RenderingServer.CanvasGroupMode" />
+ <argument index="2" name="clear_margin" type="float" default="5.0" />
+ <argument index="3" name="fit_empty" type="bool" default="false" />
+ <argument index="4" name="fit_margin" type="float" default="0.0" />
+ <argument index="5" name="blur_mipmaps" type="bool" default="false" />
<description>
</description>
</method>
<method name="canvas_item_set_clip">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="clip" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="clip" type="bool" />
<description>
</description>
</method>
<method name="canvas_item_set_copy_to_backbuffer">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
- <argument index="2" name="rect" type="Rect2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
+ <argument index="2" name="rect" type="Rect2" />
<description>
Sets the [CanvasItem] to copy a rect to the backbuffer.
</description>
</method>
<method name="canvas_item_set_custom_rect">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="use_custom_rect" type="bool">
- </argument>
- <argument index="2" name="rect" type="Rect2" default="Rect2(0, 0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="use_custom_rect" type="bool" />
+ <argument index="2" name="rect" type="Rect2" default="Rect2(0, 0, 0, 0)" />
<description>
</description>
</method>
<method name="canvas_item_set_default_texture_filter">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="filter" type="int" enum="RenderingServer.CanvasItemTextureFilter">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="filter" type="int" enum="RenderingServer.CanvasItemTextureFilter" />
<description>
</description>
</method>
<method name="canvas_item_set_default_texture_repeat">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="repeat" type="int" enum="RenderingServer.CanvasItemTextureRepeat">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="repeat" type="int" enum="RenderingServer.CanvasItemTextureRepeat" />
<description>
</description>
</method>
<method name="canvas_item_set_distance_field_mode">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
</description>
</method>
<method name="canvas_item_set_draw_behind_parent">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
</description>
</method>
<method name="canvas_item_set_draw_index">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="index" type="int" />
<description>
Sets the index for the [CanvasItem].
</description>
</method>
<method name="canvas_item_set_light_mask">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
</description>
</method>
<method name="canvas_item_set_material">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="material" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="material" type="RID" />
<description>
Sets a new material to the [CanvasItem].
</description>
</method>
<method name="canvas_item_set_modulate">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="color" type="Color" />
<description>
</description>
</method>
<method name="canvas_item_set_parent">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="parent" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="parent" type="RID" />
<description>
</description>
</method>
<method name="canvas_item_set_self_modulate">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="color" type="Color" />
<description>
</description>
</method>
<method name="canvas_item_set_sort_children_by_y">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
</description>
</method>
<method name="canvas_item_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="transform" type="Transform2D" />
<description>
</description>
</method>
<method name="canvas_item_set_use_parent_material">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
Sets if the [CanvasItem] uses its parent's material.
</description>
</method>
<method name="canvas_item_set_visibility_notifier">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
- <argument index="2" name="area" type="Rect2">
- </argument>
- <argument index="3" name="enter_callable" type="Callable">
- </argument>
- <argument index="4" name="exit_callable" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="enable" type="bool" />
+ <argument index="2" name="area" type="Rect2" />
+ <argument index="3" name="enter_callable" type="Callable" />
+ <argument index="4" name="exit_callable" type="Callable" />
<description>
</description>
</method>
<method name="canvas_item_set_visible">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="visible" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="visible" type="bool" />
<description>
</description>
</method>
<method name="canvas_item_set_z_as_relative_to_parent">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
If this is enabled, the Z index of the parent will be added to the children's Z index.
</description>
</method>
<method name="canvas_item_set_z_index">
- <return type="void">
- </return>
- <argument index="0" name="item" type="RID">
- </argument>
- <argument index="1" name="z_index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="RID" />
+ <argument index="1" name="z_index" type="int" />
<description>
Sets the [CanvasItem]'s Z index, i.e. its draw order (lower indexes are drawn first).
</description>
</method>
<method name="canvas_light_attach_to_canvas">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="canvas" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="canvas" type="RID" />
<description>
Attaches the canvas light to the canvas. Removes it from its previous canvas.
</description>
</method>
<method name="canvas_light_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a canvas light and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]canvas_light_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="canvas_light_occluder_attach_to_canvas">
- <return type="void">
- </return>
- <argument index="0" name="occluder" type="RID">
- </argument>
- <argument index="1" name="canvas" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="occluder" type="RID" />
+ <argument index="1" name="canvas" type="RID" />
<description>
Attaches a light occluder to the canvas. Removes it from its previous canvas.
</description>
</method>
<method name="canvas_light_occluder_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a light occluder and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]canvas_light_ocluder_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="canvas_light_occluder_set_as_sdf_collision">
- <return type="void">
- </return>
- <argument index="0" name="occluder" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="occluder" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
</description>
</method>
<method name="canvas_light_occluder_set_enabled">
- <return type="void">
- </return>
- <argument index="0" name="occluder" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="occluder" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
Enables or disables light occluder.
</description>
</method>
<method name="canvas_light_occluder_set_light_mask">
- <return type="void">
- </return>
- <argument index="0" name="occluder" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="occluder" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
The light mask. See [LightOccluder2D] for more information on light masks.
</description>
</method>
<method name="canvas_light_occluder_set_polygon">
- <return type="void">
- </return>
- <argument index="0" name="occluder" type="RID">
- </argument>
- <argument index="1" name="polygon" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="occluder" type="RID" />
+ <argument index="1" name="polygon" type="RID" />
<description>
Sets a light occluder's polygon.
</description>
</method>
<method name="canvas_light_occluder_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="occluder" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="occluder" type="RID" />
+ <argument index="1" name="transform" type="Transform2D" />
<description>
Sets a light occluder's [Transform2D].
</description>
</method>
<method name="canvas_light_set_color">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the color for a light.
</description>
</method>
<method name="canvas_light_set_enabled">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
Enables or disables a canvas light.
</description>
</method>
<method name="canvas_light_set_energy">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="energy" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="energy" type="float" />
<description>
Sets a canvas light's energy.
</description>
</method>
<method name="canvas_light_set_height">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="height" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="height" type="float" />
<description>
Sets a canvas light's height.
</description>
</method>
<method name="canvas_light_set_item_cull_mask">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
The light mask. See [LightOccluder2D] for more information on light masks.
</description>
</method>
<method name="canvas_light_set_item_shadow_cull_mask">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
The binary mask used to determine which layers this canvas light's shadows affects. See [LightOccluder2D] for more information on light masks.
</description>
</method>
<method name="canvas_light_set_layer_range">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="min_layer" type="int">
- </argument>
- <argument index="2" name="max_layer" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="min_layer" type="int" />
+ <argument index="2" name="max_layer" type="int" />
<description>
The layer range that gets rendered with this light.
</description>
</method>
<method name="canvas_light_set_mode">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="RenderingServer.CanvasLightMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="mode" type="int" enum="RenderingServer.CanvasLightMode" />
<description>
The mode of the light, see [enum CanvasLightMode] constants.
</description>
</method>
<method name="canvas_light_set_shadow_color">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the color of the canvas light's shadow.
</description>
</method>
<method name="canvas_light_set_shadow_enabled">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
Enables or disables the canvas light's shadow.
</description>
</method>
<method name="canvas_light_set_shadow_filter">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="filter" type="int" enum="RenderingServer.CanvasLightShadowFilter">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="filter" type="int" enum="RenderingServer.CanvasLightShadowFilter" />
<description>
Sets the canvas light's shadow's filter, see [enum CanvasLightShadowFilter] constants.
</description>
</method>
<method name="canvas_light_set_shadow_smooth">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="smooth" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="smooth" type="float" />
<description>
Smoothens the shadow. The lower, the smoother.
</description>
</method>
<method name="canvas_light_set_texture">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="texture" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="texture" type="RID" />
<description>
Sets the texture to be used by a [PointLight2D]. Equivalent to [member PointLight2D.texture].
</description>
</method>
<method name="canvas_light_set_texture_offset">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="offset" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="offset" type="Vector2" />
<description>
Sets the offset of a [PointLight2D]'s texture. Equivalent to [member PointLight2D.offset].
</description>
</method>
<method name="canvas_light_set_texture_scale">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="scale" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="scale" type="float" />
<description>
Sets the scale factor of a [PointLight2D]'s texture. Equivalent to [member PointLight2D.texture_scale].
</description>
</method>
<method name="canvas_light_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="transform" type="Transform2D" />
<description>
Sets the canvas light's [Transform2D].
</description>
</method>
<method name="canvas_light_set_z_range">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="min_z" type="int">
- </argument>
- <argument index="2" name="max_z" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="min_z" type="int" />
+ <argument index="2" name="max_z" type="int" />
<description>
Sets the Z range of objects that will be affected by this light. Equivalent to [member Light2D.range_z_min] and [member Light2D.range_z_max].
</description>
</method>
<method name="canvas_occluder_polygon_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a new light occluder polygon and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]canvas_occluder_polygon_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="canvas_occluder_polygon_set_cull_mode">
- <return type="void">
- </return>
- <argument index="0" name="occluder_polygon" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="RenderingServer.CanvasOccluderPolygonCullMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="occluder_polygon" type="RID" />
+ <argument index="1" name="mode" type="int" enum="RenderingServer.CanvasOccluderPolygonCullMode" />
<description>
Sets an occluder polygons cull mode. See [enum CanvasOccluderPolygonCullMode] constants.
</description>
</method>
<method name="canvas_occluder_polygon_set_shape">
- <return type="void">
- </return>
- <argument index="0" name="occluder_polygon" type="RID">
- </argument>
- <argument index="1" name="shape" type="PackedVector2Array">
- </argument>
- <argument index="2" name="closed" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="occluder_polygon" type="RID" />
+ <argument index="1" name="shape" type="PackedVector2Array" />
+ <argument index="2" name="closed" type="bool" />
<description>
Sets the shape of the occluder polygon.
</description>
</method>
<method name="canvas_set_disable_scale">
- <return type="void">
- </return>
- <argument index="0" name="disable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="disable" type="bool" />
<description>
</description>
</method>
<method name="canvas_set_item_mirroring">
- <return type="void">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="item" type="RID">
- </argument>
- <argument index="2" name="mirroring" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="item" type="RID" />
+ <argument index="2" name="mirroring" type="Vector2" />
<description>
A copy of the canvas item will be drawn with a local offset of the mirroring [Vector2].
</description>
</method>
<method name="canvas_set_modulate">
- <return type="void">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="color" type="Color" />
<description>
Modulates all colors in the given canvas.
</description>
</method>
<method name="canvas_set_shadow_texture_size">
- <return type="void">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="int" />
<description>
</description>
</method>
<method name="canvas_texture_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="canvas_texture_set_channel">
- <return type="void">
- </return>
- <argument index="0" name="canvas_texture" type="RID">
- </argument>
- <argument index="1" name="channel" type="int" enum="RenderingServer.CanvasTextureChannel">
- </argument>
- <argument index="2" name="texture" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas_texture" type="RID" />
+ <argument index="1" name="channel" type="int" enum="RenderingServer.CanvasTextureChannel" />
+ <argument index="2" name="texture" type="RID" />
<description>
</description>
</method>
<method name="canvas_texture_set_shading_parameters">
- <return type="void">
- </return>
- <argument index="0" name="canvas_texture" type="RID">
- </argument>
- <argument index="1" name="base_color" type="Color">
- </argument>
- <argument index="2" name="shininess" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas_texture" type="RID" />
+ <argument index="1" name="base_color" type="Color" />
+ <argument index="2" name="shininess" type="float" />
<description>
</description>
</method>
<method name="canvas_texture_set_texture_filter">
- <return type="void">
- </return>
- <argument index="0" name="canvas_texture" type="RID">
- </argument>
- <argument index="1" name="filter" type="int" enum="RenderingServer.CanvasItemTextureFilter">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas_texture" type="RID" />
+ <argument index="1" name="filter" type="int" enum="RenderingServer.CanvasItemTextureFilter" />
<description>
</description>
</method>
<method name="canvas_texture_set_texture_repeat">
- <return type="void">
- </return>
- <argument index="0" name="canvas_texture" type="RID">
- </argument>
- <argument index="1" name="repeat" type="int" enum="RenderingServer.CanvasItemTextureRepeat">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas_texture" type="RID" />
+ <argument index="1" name="repeat" type="int" enum="RenderingServer.CanvasItemTextureRepeat" />
<description>
</description>
</method>
<method name="create_local_rendering_device" qualifiers="const">
- <return type="RenderingDevice">
- </return>
+ <return type="RenderingDevice" />
<description>
</description>
</method>
<method name="decal_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="decal_set_albedo_mix">
- <return type="void">
- </return>
- <argument index="0" name="decal" type="RID">
- </argument>
- <argument index="1" name="albedo_mix" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="decal" type="RID" />
+ <argument index="1" name="albedo_mix" type="float" />
<description>
</description>
</method>
<method name="decal_set_cull_mask">
- <return type="void">
- </return>
- <argument index="0" name="decal" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="decal" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
</description>
</method>
<method name="decal_set_distance_fade">
- <return type="void">
- </return>
- <argument index="0" name="decal" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
- <argument index="2" name="begin" type="float">
- </argument>
- <argument index="3" name="length" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="decal" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
+ <argument index="2" name="begin" type="float" />
+ <argument index="3" name="length" type="float" />
<description>
</description>
</method>
<method name="decal_set_emission_energy">
- <return type="void">
- </return>
- <argument index="0" name="decal" type="RID">
- </argument>
- <argument index="1" name="energy" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="decal" type="RID" />
+ <argument index="1" name="energy" type="float" />
<description>
</description>
</method>
<method name="decal_set_extents">
- <return type="void">
- </return>
- <argument index="0" name="decal" type="RID">
- </argument>
- <argument index="1" name="extents" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="decal" type="RID" />
+ <argument index="1" name="extents" type="Vector3" />
<description>
</description>
</method>
<method name="decal_set_fade">
- <return type="void">
- </return>
- <argument index="0" name="decal" type="RID">
- </argument>
- <argument index="1" name="above" type="float">
- </argument>
- <argument index="2" name="below" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="decal" type="RID" />
+ <argument index="1" name="above" type="float" />
+ <argument index="2" name="below" type="float" />
<description>
</description>
</method>
<method name="decal_set_modulate">
- <return type="void">
- </return>
- <argument index="0" name="decal" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="decal" type="RID" />
+ <argument index="1" name="color" type="Color" />
<description>
</description>
</method>
<method name="decal_set_normal_fade">
- <return type="void">
- </return>
- <argument index="0" name="decal" type="RID">
- </argument>
- <argument index="1" name="fade" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="decal" type="RID" />
+ <argument index="1" name="fade" type="float" />
<description>
</description>
</method>
<method name="decal_set_texture">
- <return type="void">
- </return>
- <argument index="0" name="decal" type="RID">
- </argument>
- <argument index="1" name="type" type="int" enum="RenderingServer.DecalTexture">
- </argument>
- <argument index="2" name="texture" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="decal" type="RID" />
+ <argument index="1" name="type" type="int" enum="RenderingServer.DecalTexture" />
+ <argument index="2" name="texture" type="RID" />
<description>
</description>
</method>
<method name="decals_set_filter">
- <return type="void">
- </return>
- <argument index="0" name="filter" type="int" enum="RenderingServer.DecalFilter">
- </argument>
+ <return type="void" />
+ <argument index="0" name="filter" type="int" enum="RenderingServer.DecalFilter" />
<description>
</description>
</method>
<method name="directional_light_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a directional light and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID can be used in most [code]light_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
@@ -1227,610 +860,423 @@
</description>
</method>
<method name="directional_shadow_atlas_set_size">
- <return type="void">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
- <argument index="1" name="is_16bits" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="int" />
+ <argument index="1" name="is_16bits" type="bool" />
<description>
</description>
</method>
<method name="directional_shadow_quality_set">
- <return type="void">
- </return>
- <argument index="0" name="quality" type="int" enum="RenderingServer.ShadowQuality">
- </argument>
+ <return type="void" />
+ <argument index="0" name="quality" type="int" enum="RenderingServer.ShadowQuality" />
<description>
</description>
</method>
<method name="environment_bake_panorama">
- <return type="Image">
- </return>
- <argument index="0" name="environment" type="RID">
- </argument>
- <argument index="1" name="bake_irradiance" type="bool">
- </argument>
- <argument index="2" name="size" type="Vector2i">
- </argument>
+ <return type="Image" />
+ <argument index="0" name="environment" type="RID" />
+ <argument index="1" name="bake_irradiance" type="bool" />
+ <argument index="2" name="size" type="Vector2i" />
<description>
</description>
</method>
<method name="environment_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates an environment and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]environment_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="environment_glow_set_use_bicubic_upscale">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
</description>
</method>
<method name="environment_glow_set_use_high_quality">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
</description>
</method>
<method name="environment_set_adjustment">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
- <argument index="2" name="brightness" type="float">
- </argument>
- <argument index="3" name="contrast" type="float">
- </argument>
- <argument index="4" name="saturation" type="float">
- </argument>
- <argument index="5" name="use_1d_color_correction" type="bool">
- </argument>
- <argument index="6" name="color_correction" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="enable" type="bool" />
+ <argument index="2" name="brightness" type="float" />
+ <argument index="3" name="contrast" type="float" />
+ <argument index="4" name="saturation" type="float" />
+ <argument index="5" name="use_1d_color_correction" type="bool" />
+ <argument index="6" name="color_correction" type="RID" />
<description>
Sets the values to be used with the "Adjustment" post-process effect. See [Environment] for more details.
</description>
</method>
<method name="environment_set_ambient_light">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
- <argument index="2" name="ambient" type="int" enum="RenderingServer.EnvironmentAmbientSource" default="0">
- </argument>
- <argument index="3" name="energy" type="float" default="1.0">
- </argument>
- <argument index="4" name="sky_contibution" type="float" default="0.0">
- </argument>
- <argument index="5" name="reflection_source" type="int" enum="RenderingServer.EnvironmentReflectionSource" default="0">
- </argument>
- <argument index="6" name="ao_color" type="Color" default="Color(0, 0, 0, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="color" type="Color" />
+ <argument index="2" name="ambient" type="int" enum="RenderingServer.EnvironmentAmbientSource" default="0" />
+ <argument index="3" name="energy" type="float" default="1.0" />
+ <argument index="4" name="sky_contibution" type="float" default="0.0" />
+ <argument index="5" name="reflection_source" type="int" enum="RenderingServer.EnvironmentReflectionSource" default="0" />
+ <argument index="6" name="ao_color" type="Color" default="Color(0, 0, 0, 1)" />
<description>
</description>
</method>
<method name="environment_set_background">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="bg" type="int" enum="RenderingServer.EnvironmentBG">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="bg" type="int" enum="RenderingServer.EnvironmentBG" />
<description>
Sets the [i]BGMode[/i] of the environment. Equivalent to [member Environment.background_mode].
</description>
</method>
<method name="environment_set_bg_color">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="color" type="Color" />
<description>
Color displayed for clear areas of the scene (if using Custom color or Color+Sky background modes).
</description>
</method>
<method name="environment_set_bg_energy">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="energy" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="energy" type="float" />
<description>
Sets the intensity of the background color.
</description>
</method>
<method name="environment_set_canvas_max_layer">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="max_layer" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="max_layer" type="int" />
<description>
Sets the maximum layer to use if using Canvas background mode.
</description>
</method>
<method name="environment_set_fog">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
- <argument index="2" name="light_color" type="Color">
- </argument>
- <argument index="3" name="light_energy" type="float">
- </argument>
- <argument index="4" name="sun_scatter" type="float">
- </argument>
- <argument index="5" name="density" type="float">
- </argument>
- <argument index="6" name="height" type="float">
- </argument>
- <argument index="7" name="height_density" type="float">
- </argument>
- <argument index="8" name="aerial_perspective" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="enable" type="bool" />
+ <argument index="2" name="light_color" type="Color" />
+ <argument index="3" name="light_energy" type="float" />
+ <argument index="4" name="sun_scatter" type="float" />
+ <argument index="5" name="density" type="float" />
+ <argument index="6" name="height" type="float" />
+ <argument index="7" name="height_density" type="float" />
+ <argument index="8" name="aerial_perspective" type="float" />
<description>
</description>
</method>
<method name="environment_set_glow">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
- <argument index="2" name="levels" type="PackedFloat32Array">
- </argument>
- <argument index="3" name="intensity" type="float">
- </argument>
- <argument index="4" name="strength" type="float">
- </argument>
- <argument index="5" name="mix" type="float">
- </argument>
- <argument index="6" name="bloom_threshold" type="float">
- </argument>
- <argument index="7" name="blend_mode" type="int" enum="RenderingServer.EnvironmentGlowBlendMode">
- </argument>
- <argument index="8" name="hdr_bleed_threshold" type="float">
- </argument>
- <argument index="9" name="hdr_bleed_scale" type="float">
- </argument>
- <argument index="10" name="hdr_luminance_cap" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="enable" type="bool" />
+ <argument index="2" name="levels" type="PackedFloat32Array" />
+ <argument index="3" name="intensity" type="float" />
+ <argument index="4" name="strength" type="float" />
+ <argument index="5" name="mix" type="float" />
+ <argument index="6" name="bloom_threshold" type="float" />
+ <argument index="7" name="blend_mode" type="int" enum="RenderingServer.EnvironmentGlowBlendMode" />
+ <argument index="8" name="hdr_bleed_threshold" type="float" />
+ <argument index="9" name="hdr_bleed_scale" type="float" />
+ <argument index="10" name="hdr_luminance_cap" type="float" />
<description>
</description>
</method>
<method name="environment_set_sdfgi">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
- <argument index="2" name="cascades" type="int" enum="RenderingServer.EnvironmentSDFGICascades">
- </argument>
- <argument index="3" name="min_cell_size" type="float">
- </argument>
- <argument index="4" name="y_scale" type="int" enum="RenderingServer.EnvironmentSDFGIYScale">
- </argument>
- <argument index="5" name="use_occlusion" type="bool">
- </argument>
- <argument index="6" name="bounce_feedback" type="float">
- </argument>
- <argument index="7" name="read_sky" type="bool">
- </argument>
- <argument index="8" name="energy" type="float">
- </argument>
- <argument index="9" name="normal_bias" type="float">
- </argument>
- <argument index="10" name="probe_bias" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="enable" type="bool" />
+ <argument index="2" name="cascades" type="int" enum="RenderingServer.EnvironmentSDFGICascades" />
+ <argument index="3" name="min_cell_size" type="float" />
+ <argument index="4" name="y_scale" type="int" enum="RenderingServer.EnvironmentSDFGIYScale" />
+ <argument index="5" name="use_occlusion" type="bool" />
+ <argument index="6" name="bounce_feedback" type="float" />
+ <argument index="7" name="read_sky" type="bool" />
+ <argument index="8" name="energy" type="float" />
+ <argument index="9" name="normal_bias" type="float" />
+ <argument index="10" name="probe_bias" type="float" />
<description>
</description>
</method>
<method name="environment_set_sdfgi_frames_to_converge">
- <return type="void">
- </return>
- <argument index="0" name="frames" type="int" enum="RenderingServer.EnvironmentSDFGIFramesToConverge">
- </argument>
+ <return type="void" />
+ <argument index="0" name="frames" type="int" enum="RenderingServer.EnvironmentSDFGIFramesToConverge" />
<description>
</description>
</method>
<method name="environment_set_sdfgi_frames_to_update_light">
- <return type="void">
- </return>
- <argument index="0" name="frames" type="int" enum="RenderingServer.EnvironmentSDFGIFramesToUpdateLight">
- </argument>
+ <return type="void" />
+ <argument index="0" name="frames" type="int" enum="RenderingServer.EnvironmentSDFGIFramesToUpdateLight" />
<description>
</description>
</method>
<method name="environment_set_sdfgi_ray_count">
- <return type="void">
- </return>
- <argument index="0" name="ray_count" type="int" enum="RenderingServer.EnvironmentSDFGIRayCount">
- </argument>
+ <return type="void" />
+ <argument index="0" name="ray_count" type="int" enum="RenderingServer.EnvironmentSDFGIRayCount" />
<description>
</description>
</method>
<method name="environment_set_sky">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="sky" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="sky" type="RID" />
<description>
Sets the [Sky] to be used as the environment's background when using [i]BGMode[/i] sky. Equivalent to [member Environment.sky].
</description>
</method>
<method name="environment_set_sky_custom_fov">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="scale" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="scale" type="float" />
<description>
Sets a custom field of view for the background [Sky]. Equivalent to [member Environment.sky_custom_fov].
</description>
</method>
<method name="environment_set_sky_orientation">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="orientation" type="Basis">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="orientation" type="Basis" />
<description>
Sets the rotation of the background [Sky] expressed as a [Basis]. Equivalent to [member Environment.sky_rotation], where the rotation vector is used to construct the [Basis].
</description>
</method>
<method name="environment_set_ssao">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
- <argument index="2" name="radius" type="float">
- </argument>
- <argument index="3" name="intensity" type="float">
- </argument>
- <argument index="4" name="power" type="float">
- </argument>
- <argument index="5" name="detail" type="float">
- </argument>
- <argument index="6" name="horizon" type="float">
- </argument>
- <argument index="7" name="sharpness" type="float">
- </argument>
- <argument index="8" name="light_affect" type="float">
- </argument>
- <argument index="9" name="ao_channel_affect" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="enable" type="bool" />
+ <argument index="2" name="radius" type="float" />
+ <argument index="3" name="intensity" type="float" />
+ <argument index="4" name="power" type="float" />
+ <argument index="5" name="detail" type="float" />
+ <argument index="6" name="horizon" type="float" />
+ <argument index="7" name="sharpness" type="float" />
+ <argument index="8" name="light_affect" type="float" />
+ <argument index="9" name="ao_channel_affect" type="float" />
<description>
Sets the variables to be used with the "screen space ambient occlusion" post-process effect. See [Environment] for more details.
</description>
</method>
<method name="environment_set_ssao_quality">
- <return type="void">
- </return>
- <argument index="0" name="quality" type="int" enum="RenderingServer.EnvironmentSSAOQuality">
- </argument>
- <argument index="1" name="half_size" type="bool">
- </argument>
- <argument index="2" name="adaptive_target" type="float">
- </argument>
- <argument index="3" name="blur_passes" type="int">
- </argument>
- <argument index="4" name="fadeout_from" type="float">
- </argument>
- <argument index="5" name="fadeout_to" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="quality" type="int" enum="RenderingServer.EnvironmentSSAOQuality" />
+ <argument index="1" name="half_size" type="bool" />
+ <argument index="2" name="adaptive_target" type="float" />
+ <argument index="3" name="blur_passes" type="int" />
+ <argument index="4" name="fadeout_from" type="float" />
+ <argument index="5" name="fadeout_to" type="float" />
<description>
</description>
</method>
<method name="environment_set_ssr">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
- <argument index="2" name="max_steps" type="int">
- </argument>
- <argument index="3" name="fade_in" type="float">
- </argument>
- <argument index="4" name="fade_out" type="float">
- </argument>
- <argument index="5" name="depth_tolerance" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="enable" type="bool" />
+ <argument index="2" name="max_steps" type="int" />
+ <argument index="3" name="fade_in" type="float" />
+ <argument index="4" name="fade_out" type="float" />
+ <argument index="5" name="depth_tolerance" type="float" />
<description>
Sets the variables to be used with the "screen space reflections" post-process effect. See [Environment] for more details.
</description>
</method>
<method name="environment_set_ssr_roughness_quality">
- <return type="void">
- </return>
- <argument index="0" name="quality" type="int" enum="RenderingServer.EnvironmentSSRRoughnessQuality">
- </argument>
+ <return type="void" />
+ <argument index="0" name="quality" type="int" enum="RenderingServer.EnvironmentSSRRoughnessQuality" />
<description>
</description>
</method>
<method name="environment_set_tonemap">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="tone_mapper" type="int" enum="RenderingServer.EnvironmentToneMapper">
- </argument>
- <argument index="2" name="exposure" type="float">
- </argument>
- <argument index="3" name="white" type="float">
- </argument>
- <argument index="4" name="auto_exposure" type="bool">
- </argument>
- <argument index="5" name="min_luminance" type="float">
- </argument>
- <argument index="6" name="max_luminance" type="float">
- </argument>
- <argument index="7" name="auto_exp_speed" type="float">
- </argument>
- <argument index="8" name="auto_exp_grey" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="tone_mapper" type="int" enum="RenderingServer.EnvironmentToneMapper" />
+ <argument index="2" name="exposure" type="float" />
+ <argument index="3" name="white" type="float" />
+ <argument index="4" name="auto_exposure" type="bool" />
+ <argument index="5" name="min_luminance" type="float" />
+ <argument index="6" name="max_luminance" type="float" />
+ <argument index="7" name="auto_exp_speed" type="float" />
+ <argument index="8" name="auto_exp_grey" type="float" />
<description>
Sets the variables to be used with the "tonemap" post-process effect. See [Environment] for more details.
</description>
</method>
<method name="environment_set_volumetric_fog">
- <return type="void">
- </return>
- <argument index="0" name="env" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
- <argument index="2" name="density" type="float">
- </argument>
- <argument index="3" name="light" type="Color">
- </argument>
- <argument index="4" name="light_energy" type="float">
- </argument>
- <argument index="5" name="length" type="float">
- </argument>
- <argument index="6" name="p_detail_spread" type="float">
- </argument>
- <argument index="7" name="gi_inject" type="float">
- </argument>
- <argument index="8" name="temporal_reprojection" type="bool">
- </argument>
- <argument index="9" name="temporal_reprojection_amount" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="env" type="RID" />
+ <argument index="1" name="enable" type="bool" />
+ <argument index="2" name="density" type="float" />
+ <argument index="3" name="light" type="Color" />
+ <argument index="4" name="light_energy" type="float" />
+ <argument index="5" name="length" type="float" />
+ <argument index="6" name="p_detail_spread" type="float" />
+ <argument index="7" name="gi_inject" type="float" />
+ <argument index="8" name="temporal_reprojection" type="bool" />
+ <argument index="9" name="temporal_reprojection_amount" type="float" />
<description>
</description>
</method>
<method name="environment_set_volumetric_fog_filter_active">
- <return type="void">
- </return>
- <argument index="0" name="active" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="active" type="bool" />
<description>
</description>
</method>
<method name="environment_set_volumetric_fog_volume_size">
- <return type="void">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
- <argument index="1" name="depth" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="int" />
+ <argument index="1" name="depth" type="int" />
<description>
</description>
</method>
<method name="force_draw">
- <return type="void">
- </return>
- <argument index="0" name="swap_buffers" type="bool" default="true">
- </argument>
- <argument index="1" name="frame_step" type="float" default="0.0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="swap_buffers" type="bool" default="true" />
+ <argument index="1" name="frame_step" type="float" default="0.0" />
<description>
</description>
</method>
<method name="force_sync">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="free_rid">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
Tries to free an object in the RenderingServer.
</description>
</method>
<method name="get_frame_setup_time_cpu" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
</description>
</method>
<method name="get_rendering_info">
- <return type="int">
- </return>
- <argument index="0" name="info" type="int" enum="RenderingServer.RenderingInfo">
- </argument>
+ <return type="int" />
+ <argument index="0" name="info" type="int" enum="RenderingServer.RenderingInfo" />
<description>
</description>
</method>
<method name="get_test_cube">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the id of the test cube. Creates one if none exists.
</description>
</method>
<method name="get_test_texture">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the id of the test texture. Creates one if none exists.
</description>
</method>
<method name="get_video_adapter_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the name of the video adapter (e.g. "GeForce GTX 1080/PCIe/SSE2").
[b]Note:[/b] When running a headless or server binary, this function returns an empty string.
</description>
</method>
<method name="get_video_adapter_vendor" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the vendor of the video adapter (e.g. "NVIDIA Corporation").
[b]Note:[/b] When running a headless or server binary, this function returns an empty string.
</description>
</method>
<method name="get_white_texture">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the id of a white texture. Creates one if none exists.
</description>
</method>
<method name="global_variable_add">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="type" type="int" enum="RenderingServer.GlobalVariableType">
- </argument>
- <argument index="2" name="default_value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="type" type="int" enum="RenderingServer.GlobalVariableType" />
+ <argument index="2" name="default_value" type="Variant" />
<description>
</description>
</method>
<method name="global_variable_get" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="name" type="StringName" />
<description>
</description>
</method>
<method name="global_variable_get_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
</description>
</method>
<method name="global_variable_get_type" qualifiers="const">
- <return type="int" enum="RenderingServer.GlobalVariableType">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="int" enum="RenderingServer.GlobalVariableType" />
+ <argument index="0" name="name" type="StringName" />
<description>
</description>
</method>
<method name="global_variable_remove">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
</description>
</method>
<method name="global_variable_set">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
</description>
</method>
<method name="global_variable_set_override">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
</description>
</method>
<method name="has_changed" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if changes have been made to the RenderingServer's data. [method force_draw] is usually called if this happens.
</description>
</method>
<method name="has_feature" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="feature" type="int" enum="RenderingServer.Features">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="feature" type="int" enum="RenderingServer.Features" />
<description>
Not yet implemented. Always returns [code]false[/code].
</description>
</method>
<method name="has_os_feature" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="feature" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="feature" type="String" />
<description>
Returns [code]true[/code] if the OS supports a certain feature. Features might be [code]s3tc[/code], [code]etc[/code], [code]etc2[/code] and [code]pvrtc[/code].
</description>
</method>
<method name="instance_attach_object_instance_id">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="id" type="int" />
<description>
Attaches a unique Object ID to instance. Object ID must be attached to instance for proper culling with [method instances_cull_aabb], [method instances_cull_convex], and [method instances_cull_ray].
</description>
</method>
<method name="instance_attach_skeleton">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="skeleton" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="skeleton" type="RID" />
<description>
Attaches a skeleton to an instance. Removes the previous skeleton from the instance.
</description>
</method>
<method name="instance_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a visual instance and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]instance_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
@@ -1838,660 +1284,473 @@
</description>
</method>
<method name="instance_create2">
- <return type="RID">
- </return>
- <argument index="0" name="base" type="RID">
- </argument>
- <argument index="1" name="scenario" type="RID">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="base" type="RID" />
+ <argument index="1" name="scenario" type="RID" />
<description>
Creates a visual instance, adds it to the RenderingServer, and sets both base and scenario. It can be accessed with the RID that is returned. This RID will be used in all [code]instance_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="instance_geometry_get_shader_parameter" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="parameter" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="parameter" type="StringName" />
<description>
</description>
</method>
<method name="instance_geometry_get_shader_parameter_default_value" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="parameter" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="parameter" type="StringName" />
<description>
</description>
</method>
<method name="instance_geometry_get_shader_parameter_list" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="instance" type="RID" />
<description>
</description>
</method>
<method name="instance_geometry_set_cast_shadows_setting">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="shadow_casting_setting" type="int" enum="RenderingServer.ShadowCastingSetting">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="shadow_casting_setting" type="int" enum="RenderingServer.ShadowCastingSetting" />
<description>
Sets the shadow casting setting to one of [enum ShadowCastingSetting]. Equivalent to [member GeometryInstance3D.cast_shadow].
</description>
</method>
<method name="instance_geometry_set_flag">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="flag" type="int" enum="RenderingServer.InstanceFlags">
- </argument>
- <argument index="2" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="flag" type="int" enum="RenderingServer.InstanceFlags" />
+ <argument index="2" name="enabled" type="bool" />
<description>
Sets the flag for a given [enum InstanceFlags]. See [enum InstanceFlags] for more details.
</description>
</method>
<method name="instance_geometry_set_lightmap">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="lightmap" type="RID">
- </argument>
- <argument index="2" name="lightmap_uv_scale" type="Rect2">
- </argument>
- <argument index="3" name="lightmap_slice" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="lightmap" type="RID" />
+ <argument index="2" name="lightmap_uv_scale" type="Rect2" />
+ <argument index="3" name="lightmap_slice" type="int" />
<description>
</description>
</method>
<method name="instance_geometry_set_lod_bias">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="lod_bias" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="lod_bias" type="float" />
<description>
</description>
</method>
<method name="instance_geometry_set_material_override">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="material" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="material" type="RID" />
<description>
Sets a material that will override the material for all surfaces on the mesh associated with this instance. Equivalent to [member GeometryInstance3D.material_override].
</description>
</method>
<method name="instance_geometry_set_shader_parameter">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="parameter" type="StringName">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="parameter" type="StringName" />
+ <argument index="2" name="value" type="Variant" />
<description>
</description>
</method>
<method name="instance_geometry_set_visibility_range">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="min" type="float">
- </argument>
- <argument index="2" name="max" type="float">
- </argument>
- <argument index="3" name="min_margin" type="float">
- </argument>
- <argument index="4" name="max_margin" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="min" type="float" />
+ <argument index="2" name="max" type="float" />
+ <argument index="3" name="min_margin" type="float" />
+ <argument index="4" name="max_margin" type="float" />
<description>
Sets the visibility range values for the given geometry instance. Equivalent to [member GeometryInstance3D.visibility_range_begin] and related properties.
</description>
</method>
<method name="instance_set_base">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="base" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="base" type="RID" />
<description>
Sets the base of the instance. A base can be any of the 3D objects that are created in the RenderingServer that can be displayed. For example, any of the light types, mesh, multimesh, immediate geometry, particle system, reflection probe, lightmap, and the GI probe are all types that can be set as the base of an instance in order to be displayed in the scenario.
</description>
</method>
<method name="instance_set_blend_shape_weight">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="shape" type="int">
- </argument>
- <argument index="2" name="weight" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="shape" type="int" />
+ <argument index="2" name="weight" type="float" />
<description>
Sets the weight for a given blend shape associated with this instance.
</description>
</method>
<method name="instance_set_custom_aabb">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="aabb" type="AABB">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="aabb" type="AABB" />
<description>
Sets a custom AABB to use when culling objects from the view frustum. Equivalent to [method GeometryInstance3D.set_custom_aabb].
</description>
</method>
<method name="instance_set_extra_visibility_margin">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="margin" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="margin" type="float" />
<description>
Sets a margin to increase the size of the AABB when culling objects from the view frustum. This allows you to avoid culling objects that fall outside the view frustum. Equivalent to [member GeometryInstance3D.extra_cull_margin].
</description>
</method>
<method name="instance_set_layer_mask">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
Sets the render layers that this instance will be drawn to. Equivalent to [member VisualInstance3D.layers].
</description>
</method>
<method name="instance_set_scenario">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="scenario" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="scenario" type="RID" />
<description>
Sets the scenario that the instance is in. The scenario is the 3D world that the objects will be displayed in.
</description>
</method>
<method name="instance_set_surface_override_material">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
- <argument index="2" name="material" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="surface" type="int" />
+ <argument index="2" name="material" type="RID" />
<description>
Sets the override material of a specific surface. Equivalent to [method MeshInstance3D.set_surface_override_material].
</description>
</method>
<method name="instance_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="transform" type="Transform3D" />
<description>
Sets the world space transform of the instance. Equivalent to [member Node3D.transform].
</description>
</method>
<method name="instance_set_visibility_parent">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="parent" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="parent" type="RID" />
<description>
Sets the visibility parent for the given instance. Equivalent to [member Node3D.visibility_parent].
</description>
</method>
<method name="instance_set_visible">
- <return type="void">
- </return>
- <argument index="0" name="instance" type="RID">
- </argument>
- <argument index="1" name="visible" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="instance" type="RID" />
+ <argument index="1" name="visible" type="bool" />
<description>
Sets whether an instance is drawn or not. Equivalent to [member Node3D.visible].
</description>
</method>
<method name="instances_cull_aabb" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="aabb" type="AABB">
- </argument>
- <argument index="1" name="scenario" type="RID">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="aabb" type="AABB" />
+ <argument index="1" name="scenario" type="RID" />
<description>
Returns an array of object IDs intersecting with the provided AABB. Only visual 3D nodes are considered, such as [MeshInstance3D] or [DirectionalLight3D]. Use [method @GlobalScope.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World3D] you want to query. This forces an update for all resources queued to update.
[b]Warning:[/b] This function is primarily intended for editor usage. For in-game use cases, prefer physics collision.
</description>
</method>
<method name="instances_cull_convex" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="convex" type="Array">
- </argument>
- <argument index="1" name="scenario" type="RID">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="convex" type="Array" />
+ <argument index="1" name="scenario" type="RID" />
<description>
Returns an array of object IDs intersecting with the provided convex shape. Only visual 3D nodes are considered, such as [MeshInstance3D] or [DirectionalLight3D]. Use [method @GlobalScope.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World3D] you want to query. This forces an update for all resources queued to update.
[b]Warning:[/b] This function is primarily intended for editor usage. For in-game use cases, prefer physics collision.
</description>
</method>
<method name="instances_cull_ray" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
- <argument index="1" name="to" type="Vector3">
- </argument>
- <argument index="2" name="scenario" type="RID">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="from" type="Vector3" />
+ <argument index="1" name="to" type="Vector3" />
+ <argument index="2" name="scenario" type="RID" />
<description>
Returns an array of object IDs intersecting with the provided 3D ray. Only visual 3D nodes are considered, such as [MeshInstance3D] or [DirectionalLight3D]. Use [method @GlobalScope.instance_from_id] to obtain the actual nodes. A scenario RID must be provided, which is available in the [World3D] you want to query. This forces an update for all resources queued to update.
[b]Warning:[/b] This function is primarily intended for editor usage. For in-game use cases, prefer physics collision.
</description>
</method>
<method name="light_directional_set_blend_splits">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], this directional light will blend between shadow map splits resulting in a smoother transition between them. Equivalent to [member DirectionalLight3D.directional_shadow_blend_splits].
</description>
</method>
<method name="light_directional_set_shadow_mode">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="RenderingServer.LightDirectionalShadowMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="mode" type="int" enum="RenderingServer.LightDirectionalShadowMode" />
<description>
Sets the shadow mode for this directional light. Equivalent to [member DirectionalLight3D.directional_shadow_mode]. See [enum LightDirectionalShadowMode] for options.
</description>
</method>
<method name="light_directional_set_sky_only">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], this light will not be used for anything except sky shaders. Use this for lights that impact your sky shader that you may want to hide from affecting the rest of the scene. For example, you may want to enable this when the sun in your sky shader falls below the horizon.
</description>
</method>
<method name="light_omni_set_shadow_mode">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="RenderingServer.LightOmniShadowMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="mode" type="int" enum="RenderingServer.LightOmniShadowMode" />
<description>
Sets whether to use a dual paraboloid or a cubemap for the shadow map. Dual paraboloid is faster but may suffer from artifacts. Equivalent to [member OmniLight3D.omni_shadow_mode].
</description>
</method>
<method name="light_projectors_set_filter">
- <return type="void">
- </return>
- <argument index="0" name="filter" type="int" enum="RenderingServer.LightProjectorFilter">
- </argument>
+ <return type="void" />
+ <argument index="0" name="filter" type="int" enum="RenderingServer.LightProjectorFilter" />
<description>
</description>
</method>
<method name="light_set_bake_mode">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="bake_mode" type="int" enum="RenderingServer.LightBakeMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="bake_mode" type="int" enum="RenderingServer.LightBakeMode" />
<description>
</description>
</method>
<method name="light_set_color">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the color of the light. Equivalent to [member Light3D.light_color].
</description>
</method>
<method name="light_set_cull_mask">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
Sets the cull mask for this Light3D. Lights only affect objects in the selected layers. Equivalent to [member Light3D.light_cull_mask].
</description>
</method>
<method name="light_set_max_sdfgi_cascade">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="cascade" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="cascade" type="int" />
<description>
</description>
</method>
<method name="light_set_negative">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], light will subtract light instead of adding light. Equivalent to [member Light3D.light_negative].
</description>
</method>
<method name="light_set_param">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="param" type="int" enum="RenderingServer.LightParam">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="param" type="int" enum="RenderingServer.LightParam" />
+ <argument index="2" name="value" type="float" />
<description>
Sets the specified light parameter. See [enum LightParam] for options. Equivalent to [method Light3D.set_param].
</description>
</method>
<method name="light_set_projector">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="texture" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="texture" type="RID" />
<description>
Not implemented in Godot 3.x.
</description>
</method>
<method name="light_set_reverse_cull_face_mode">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
If [code]true[/code], reverses the backface culling of the mesh. This can be useful when you have a flat mesh that has a light behind it. If you need to cast a shadow on both sides of the mesh, set the mesh to use double-sided shadows with [method instance_geometry_set_cast_shadows_setting]. Equivalent to [member Light3D.shadow_reverse_cull_face].
</description>
</method>
<method name="light_set_shadow">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
If [code]true[/code], light will cast shadows. Equivalent to [member Light3D.shadow_enabled].
</description>
</method>
<method name="light_set_shadow_color">
- <return type="void">
- </return>
- <argument index="0" name="light" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="light" type="RID" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the color of the shadow cast by the light. Equivalent to [member Light3D.shadow_color].
</description>
</method>
<method name="lightmap_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="lightmap_get_probe_capture_bsp_tree" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="lightmap" type="RID">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="lightmap" type="RID" />
<description>
</description>
</method>
<method name="lightmap_get_probe_capture_points" qualifiers="const">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="lightmap" type="RID">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="lightmap" type="RID" />
<description>
</description>
</method>
<method name="lightmap_get_probe_capture_sh" qualifiers="const">
- <return type="PackedColorArray">
- </return>
- <argument index="0" name="lightmap" type="RID">
- </argument>
+ <return type="PackedColorArray" />
+ <argument index="0" name="lightmap" type="RID" />
<description>
</description>
</method>
<method name="lightmap_get_probe_capture_tetrahedra" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="lightmap" type="RID">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="lightmap" type="RID" />
<description>
</description>
</method>
<method name="lightmap_set_probe_bounds">
- <return type="void">
- </return>
- <argument index="0" name="lightmap" type="RID">
- </argument>
- <argument index="1" name="bounds" type="AABB">
- </argument>
+ <return type="void" />
+ <argument index="0" name="lightmap" type="RID" />
+ <argument index="1" name="bounds" type="AABB" />
<description>
</description>
</method>
<method name="lightmap_set_probe_capture_data">
- <return type="void">
- </return>
- <argument index="0" name="lightmap" type="RID">
- </argument>
- <argument index="1" name="points" type="PackedVector3Array">
- </argument>
- <argument index="2" name="point_sh" type="PackedColorArray">
- </argument>
- <argument index="3" name="tetrahedra" type="PackedInt32Array">
- </argument>
- <argument index="4" name="bsp_tree" type="PackedInt32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="lightmap" type="RID" />
+ <argument index="1" name="points" type="PackedVector3Array" />
+ <argument index="2" name="point_sh" type="PackedColorArray" />
+ <argument index="3" name="tetrahedra" type="PackedInt32Array" />
+ <argument index="4" name="bsp_tree" type="PackedInt32Array" />
<description>
</description>
</method>
<method name="lightmap_set_probe_capture_update_speed">
- <return type="void">
- </return>
- <argument index="0" name="speed" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="speed" type="float" />
<description>
</description>
</method>
<method name="lightmap_set_probe_interior">
- <return type="void">
- </return>
- <argument index="0" name="lightmap" type="RID">
- </argument>
- <argument index="1" name="interior" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="lightmap" type="RID" />
+ <argument index="1" name="interior" type="bool" />
<description>
</description>
</method>
<method name="lightmap_set_textures">
- <return type="void">
- </return>
- <argument index="0" name="lightmap" type="RID">
- </argument>
- <argument index="1" name="light" type="RID">
- </argument>
- <argument index="2" name="uses_sh" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="lightmap" type="RID" />
+ <argument index="1" name="light" type="RID" />
+ <argument index="2" name="uses_sh" type="bool" />
<description>
</description>
</method>
<method name="make_sphere_mesh">
- <return type="RID">
- </return>
- <argument index="0" name="latitudes" type="int">
- </argument>
- <argument index="1" name="longitudes" type="int">
- </argument>
- <argument index="2" name="radius" type="float">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="latitudes" type="int" />
+ <argument index="1" name="longitudes" type="int" />
+ <argument index="2" name="radius" type="float" />
<description>
Returns a mesh of a sphere with the given amount of horizontal and vertical subdivisions.
</description>
</method>
<method name="material_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates an empty material and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]material_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="material_get_param" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="material" type="RID">
- </argument>
- <argument index="1" name="parameter" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="material" type="RID" />
+ <argument index="1" name="parameter" type="StringName" />
<description>
Returns the value of a certain material's parameter.
</description>
</method>
<method name="material_set_next_pass">
- <return type="void">
- </return>
- <argument index="0" name="material" type="RID">
- </argument>
- <argument index="1" name="next_material" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="material" type="RID" />
+ <argument index="1" name="next_material" type="RID" />
<description>
Sets an object's next material.
</description>
</method>
<method name="material_set_param">
- <return type="void">
- </return>
- <argument index="0" name="material" type="RID">
- </argument>
- <argument index="1" name="parameter" type="StringName">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="material" type="RID" />
+ <argument index="1" name="parameter" type="StringName" />
+ <argument index="2" name="value" type="Variant" />
<description>
Sets a material's parameter.
</description>
</method>
<method name="material_set_render_priority">
- <return type="void">
- </return>
- <argument index="0" name="material" type="RID">
- </argument>
- <argument index="1" name="priority" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="material" type="RID" />
+ <argument index="1" name="priority" type="int" />
<description>
Sets a material's render priority.
</description>
</method>
<method name="material_set_shader">
- <return type="void">
- </return>
- <argument index="0" name="shader_material" type="RID">
- </argument>
- <argument index="1" name="shader" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shader_material" type="RID" />
+ <argument index="1" name="shader" type="RID" />
<description>
Sets a shader material's shader.
</description>
</method>
<method name="mesh_add_surface">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="surface" type="Dictionary">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="surface" type="Dictionary" />
<description>
</description>
</method>
<method name="mesh_add_surface_from_arrays">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="primitive" type="int" enum="RenderingServer.PrimitiveType">
- </argument>
- <argument index="2" name="arrays" type="Array">
- </argument>
- <argument index="3" name="blend_shapes" type="Array" default="[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="primitive" type="int" enum="RenderingServer.PrimitiveType" />
+ <argument index="2" name="arrays" type="Array" />
+ <argument index="3" name="blend_shapes" type="Array" default="[]" />
<argument index="4" name="lods" type="Dictionary" default="{
-}">
- </argument>
- <argument index="5" name="compress_format" type="int" default="0">
- </argument>
+}" />
+ <argument index="5" name="compress_format" type="int" default="0" />
<description>
</description>
</method>
<method name="mesh_clear">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="RID" />
<description>
Removes all surfaces from a mesh.
</description>
</method>
<method name="mesh_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a new mesh and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]mesh_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
@@ -2499,242 +1758,171 @@
</description>
</method>
<method name="mesh_create_from_surfaces">
- <return type="RID">
- </return>
- <argument index="0" name="surfaces" type="Dictionary[]">
- </argument>
- <argument index="1" name="blend_shape_count" type="int" default="0">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="surfaces" type="Dictionary[]" />
+ <argument index="1" name="blend_shape_count" type="int" default="0" />
<description>
</description>
</method>
<method name="mesh_get_blend_shape_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="mesh" type="RID" />
<description>
Returns a mesh's blend shape count.
</description>
</method>
<method name="mesh_get_blend_shape_mode" qualifiers="const">
- <return type="int" enum="RenderingServer.BlendShapeMode">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
+ <return type="int" enum="RenderingServer.BlendShapeMode" />
+ <argument index="0" name="mesh" type="RID" />
<description>
Returns a mesh's blend shape mode.
</description>
</method>
<method name="mesh_get_custom_aabb" qualifiers="const">
- <return type="AABB">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="mesh" type="RID" />
<description>
Returns a mesh's custom aabb.
</description>
</method>
<method name="mesh_get_surface">
- <return type="Dictionary">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="surface" type="int" />
<description>
</description>
</method>
<method name="mesh_get_surface_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="mesh" type="RID" />
<description>
Returns a mesh's number of surfaces.
</description>
</method>
<method name="mesh_set_blend_shape_mode">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="RenderingServer.BlendShapeMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="mode" type="int" enum="RenderingServer.BlendShapeMode" />
<description>
Sets a mesh's blend shape mode.
</description>
</method>
<method name="mesh_set_custom_aabb">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="aabb" type="AABB">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="aabb" type="AABB" />
<description>
Sets a mesh's custom aabb.
</description>
</method>
<method name="mesh_set_shadow_mesh">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="shadow_mesh" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="shadow_mesh" type="RID" />
<description>
</description>
</method>
<method name="mesh_surface_get_arrays" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="surface" type="int" />
<description>
Returns a mesh's surface's buffer arrays.
</description>
</method>
<method name="mesh_surface_get_blend_shape_arrays" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="surface" type="int" />
<description>
Returns a mesh's surface's arrays for blend shapes.
</description>
</method>
<method name="mesh_surface_get_format_attribute_stride" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="format" type="int">
- </argument>
- <argument index="1" name="vertex_count" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="format" type="int" />
+ <argument index="1" name="vertex_count" type="int" />
<description>
</description>
</method>
<method name="mesh_surface_get_format_offset" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="format" type="int">
- </argument>
- <argument index="1" name="vertex_count" type="int">
- </argument>
- <argument index="2" name="array_index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="format" type="int" />
+ <argument index="1" name="vertex_count" type="int" />
+ <argument index="2" name="array_index" type="int" />
<description>
</description>
</method>
<method name="mesh_surface_get_format_skin_stride" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="format" type="int">
- </argument>
- <argument index="1" name="vertex_count" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="format" type="int" />
+ <argument index="1" name="vertex_count" type="int" />
<description>
</description>
</method>
<method name="mesh_surface_get_format_vertex_stride" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="format" type="int">
- </argument>
- <argument index="1" name="vertex_count" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="format" type="int" />
+ <argument index="1" name="vertex_count" type="int" />
<description>
</description>
</method>
<method name="mesh_surface_get_material" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="surface" type="int" />
<description>
Returns a mesh's surface's material.
</description>
</method>
<method name="mesh_surface_set_material">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
- <argument index="2" name="material" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="surface" type="int" />
+ <argument index="2" name="material" type="RID" />
<description>
Sets a mesh's surface's material.
</description>
</method>
<method name="mesh_surface_update_attribute_region">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
- <argument index="2" name="offset" type="int">
- </argument>
- <argument index="3" name="data" type="PackedByteArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="surface" type="int" />
+ <argument index="2" name="offset" type="int" />
+ <argument index="3" name="data" type="PackedByteArray" />
<description>
</description>
</method>
<method name="mesh_surface_update_skin_region">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
- <argument index="2" name="offset" type="int">
- </argument>
- <argument index="3" name="data" type="PackedByteArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="surface" type="int" />
+ <argument index="2" name="offset" type="int" />
+ <argument index="3" name="data" type="PackedByteArray" />
<description>
</description>
</method>
<method name="mesh_surface_update_vertex_region">
- <return type="void">
- </return>
- <argument index="0" name="mesh" type="RID">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
- <argument index="2" name="offset" type="int">
- </argument>
- <argument index="3" name="data" type="PackedByteArray">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mesh" type="RID" />
+ <argument index="1" name="surface" type="int" />
+ <argument index="2" name="offset" type="int" />
+ <argument index="3" name="data" type="PackedByteArray" />
<description>
</description>
</method>
<method name="multimesh_allocate_data">
- <return type="void">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="instances" type="int">
- </argument>
- <argument index="2" name="transform_format" type="int" enum="RenderingServer.MultimeshTransformFormat">
- </argument>
- <argument index="3" name="color_format" type="bool" default="false">
- </argument>
- <argument index="4" name="custom_data_format" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="instances" type="int" />
+ <argument index="2" name="transform_format" type="int" enum="RenderingServer.MultimeshTransformFormat" />
+ <argument index="3" name="color_format" type="bool" default="false" />
+ <argument index="4" name="custom_data_format" type="bool" default="false" />
<description>
</description>
</method>
<method name="multimesh_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a new multimesh on the RenderingServer and returns an [RID] handle. This RID will be used in all [code]multimesh_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
@@ -2742,198 +1930,145 @@
</description>
</method>
<method name="multimesh_get_aabb" qualifiers="const">
- <return type="AABB">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="multimesh" type="RID" />
<description>
Calculates and returns the axis-aligned bounding box that encloses all instances within the multimesh.
</description>
</method>
<method name="multimesh_get_buffer" qualifiers="const">
- <return type="PackedFloat32Array">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
+ <return type="PackedFloat32Array" />
+ <argument index="0" name="multimesh" type="RID" />
<description>
</description>
</method>
<method name="multimesh_get_instance_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="multimesh" type="RID" />
<description>
Returns the number of instances allocated for this multimesh.
</description>
</method>
<method name="multimesh_get_mesh" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="multimesh" type="RID" />
<description>
Returns the RID of the mesh that will be used in drawing this multimesh.
</description>
</method>
<method name="multimesh_get_visible_instances" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="multimesh" type="RID" />
<description>
Returns the number of visible instances for this multimesh.
</description>
</method>
<method name="multimesh_instance_get_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="index" type="int" />
<description>
Returns the color by which the specified instance will be modulated.
</description>
</method>
<method name="multimesh_instance_get_custom_data" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="index" type="int" />
<description>
Returns the custom data associated with the specified instance.
</description>
</method>
<method name="multimesh_instance_get_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="index" type="int" />
<description>
Returns the [Transform3D] of the specified instance.
</description>
</method>
<method name="multimesh_instance_get_transform_2d" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="index" type="int" />
<description>
Returns the [Transform2D] of the specified instance. For use when the multimesh is set to use 2D transforms.
</description>
</method>
<method name="multimesh_instance_set_color">
- <return type="void">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
- <argument index="2" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="index" type="int" />
+ <argument index="2" name="color" type="Color" />
<description>
Sets the color by which this instance will be modulated. Equivalent to [method MultiMesh.set_instance_color].
</description>
</method>
<method name="multimesh_instance_set_custom_data">
- <return type="void">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
- <argument index="2" name="custom_data" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="index" type="int" />
+ <argument index="2" name="custom_data" type="Color" />
<description>
Sets the custom data for this instance. Custom data is passed as a [Color], but is interpreted as a [code]vec4[/code] in the shader. Equivalent to [method MultiMesh.set_instance_custom_data].
</description>
</method>
<method name="multimesh_instance_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
- <argument index="2" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="index" type="int" />
+ <argument index="2" name="transform" type="Transform3D" />
<description>
Sets the [Transform3D] for this instance. Equivalent to [method MultiMesh.set_instance_transform].
</description>
</method>
<method name="multimesh_instance_set_transform_2d">
- <return type="void">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
- <argument index="2" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="index" type="int" />
+ <argument index="2" name="transform" type="Transform2D" />
<description>
Sets the [Transform2D] for this instance. For use when multimesh is used in 2D. Equivalent to [method MultiMesh.set_instance_transform_2d].
</description>
</method>
<method name="multimesh_set_buffer">
- <return type="void">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="buffer" type="PackedFloat32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="buffer" type="PackedFloat32Array" />
<description>
</description>
</method>
<method name="multimesh_set_mesh">
- <return type="void">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="mesh" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="mesh" type="RID" />
<description>
Sets the mesh to be drawn by the multimesh. Equivalent to [member MultiMesh.mesh].
</description>
</method>
<method name="multimesh_set_visible_instances">
- <return type="void">
- </return>
- <argument index="0" name="multimesh" type="RID">
- </argument>
- <argument index="1" name="visible" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="multimesh" type="RID" />
+ <argument index="1" name="visible" type="int" />
<description>
Sets the number of instances visible at a given time. If -1, all instances that have been allocated are drawn. Equivalent to [member MultiMesh.visible_instance_count].
</description>
</method>
<method name="occluder_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="occluder_set_mesh">
- <return type="void">
- </return>
- <argument index="0" name="occluder" type="RID">
- </argument>
- <argument index="1" name="vertices" type="PackedVector3Array">
- </argument>
- <argument index="2" name="indices" type="PackedInt32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="occluder" type="RID" />
+ <argument index="1" name="vertices" type="PackedVector3Array" />
+ <argument index="2" name="indices" type="PackedInt32Array" />
<description>
</description>
</method>
<method name="omni_light_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a new omni light and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID can be used in most [code]light_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
@@ -2941,112 +2076,81 @@
</description>
</method>
<method name="particles_collision_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="particles_collision_height_field_update">
- <return type="void">
- </return>
- <argument index="0" name="particles_collision" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles_collision" type="RID" />
<description>
</description>
</method>
<method name="particles_collision_set_attractor_attenuation">
- <return type="void">
- </return>
- <argument index="0" name="particles_collision" type="RID">
- </argument>
- <argument index="1" name="curve" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles_collision" type="RID" />
+ <argument index="1" name="curve" type="float" />
<description>
</description>
</method>
<method name="particles_collision_set_attractor_directionality">
- <return type="void">
- </return>
- <argument index="0" name="particles_collision" type="RID">
- </argument>
- <argument index="1" name="amount" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles_collision" type="RID" />
+ <argument index="1" name="amount" type="float" />
<description>
</description>
</method>
<method name="particles_collision_set_attractor_strength">
- <return type="void">
- </return>
- <argument index="0" name="particles_collision" type="RID">
- </argument>
- <argument index="1" name="setrngth" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles_collision" type="RID" />
+ <argument index="1" name="setrngth" type="float" />
<description>
</description>
</method>
<method name="particles_collision_set_box_extents">
- <return type="void">
- </return>
- <argument index="0" name="particles_collision" type="RID">
- </argument>
- <argument index="1" name="extents" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles_collision" type="RID" />
+ <argument index="1" name="extents" type="Vector3" />
<description>
</description>
</method>
<method name="particles_collision_set_collision_type">
- <return type="void">
- </return>
- <argument index="0" name="particles_collision" type="RID">
- </argument>
- <argument index="1" name="type" type="int" enum="RenderingServer.ParticlesCollisionType">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles_collision" type="RID" />
+ <argument index="1" name="type" type="int" enum="RenderingServer.ParticlesCollisionType" />
<description>
</description>
</method>
<method name="particles_collision_set_cull_mask">
- <return type="void">
- </return>
- <argument index="0" name="particles_collision" type="RID">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles_collision" type="RID" />
+ <argument index="1" name="mask" type="int" />
<description>
</description>
</method>
<method name="particles_collision_set_field_texture">
- <return type="void">
- </return>
- <argument index="0" name="particles_collision" type="RID">
- </argument>
- <argument index="1" name="texture" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles_collision" type="RID" />
+ <argument index="1" name="texture" type="RID" />
<description>
</description>
</method>
<method name="particles_collision_set_height_field_resolution">
- <return type="void">
- </return>
- <argument index="0" name="particles_collision" type="RID">
- </argument>
- <argument index="1" name="resolution" type="int" enum="RenderingServer.ParticlesCollisionHeightfieldResolution">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles_collision" type="RID" />
+ <argument index="1" name="resolution" type="int" enum="RenderingServer.ParticlesCollisionHeightfieldResolution" />
<description>
</description>
</method>
<method name="particles_collision_set_sphere_radius">
- <return type="void">
- </return>
- <argument index="0" name="particles_collision" type="RID">
- </argument>
- <argument index="1" name="radius" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles_collision" type="RID" />
+ <argument index="1" name="radius" type="float" />
<description>
</description>
</method>
<method name="particles_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a particle system and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]particles_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
@@ -3054,332 +2158,240 @@
</description>
</method>
<method name="particles_emit">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform3D">
- </argument>
- <argument index="2" name="velocity" type="Vector3">
- </argument>
- <argument index="3" name="color" type="Color">
- </argument>
- <argument index="4" name="custom" type="Color">
- </argument>
- <argument index="5" name="emit_flags" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="transform" type="Transform3D" />
+ <argument index="2" name="velocity" type="Vector3" />
+ <argument index="3" name="color" type="Color" />
+ <argument index="4" name="custom" type="Color" />
+ <argument index="5" name="emit_flags" type="int" />
<description>
</description>
</method>
<method name="particles_get_current_aabb">
- <return type="AABB">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="particles" type="RID" />
<description>
Calculates and returns the axis-aligned bounding box that contains all the particles. Equivalent to [method GPUParticles3D.capture_aabb].
</description>
</method>
<method name="particles_get_emitting">
- <return type="bool">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="particles" type="RID" />
<description>
Returns [code]true[/code] if particles are currently set to emitting.
</description>
</method>
<method name="particles_is_inactive">
- <return type="bool">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="particles" type="RID" />
<description>
Returns [code]true[/code] if particles are not emitting and particles are set to inactive.
</description>
</method>
<method name="particles_request_process">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
<description>
Add particle system to list of particle systems that need to be updated. Update will take place on the next frame, or on the next call to [method instances_cull_aabb], [method instances_cull_convex], or [method instances_cull_ray].
</description>
</method>
<method name="particles_restart">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
<description>
Reset the particles on the next update. Equivalent to [method GPUParticles3D.restart].
</description>
</method>
<method name="particles_set_amount">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="amount" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="amount" type="int" />
<description>
Sets the number of particles to be drawn and allocates the memory for them. Equivalent to [member GPUParticles3D.amount].
</description>
</method>
<method name="particles_set_collision_base_size">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="size" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="size" type="float" />
<description>
</description>
</method>
<method name="particles_set_custom_aabb">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="aabb" type="AABB">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="aabb" type="AABB" />
<description>
Sets a custom axis-aligned bounding box for the particle system. Equivalent to [member GPUParticles3D.visibility_aabb].
</description>
</method>
<method name="particles_set_draw_order">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="order" type="int" enum="RenderingServer.ParticlesDrawOrder">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="order" type="int" enum="RenderingServer.ParticlesDrawOrder" />
<description>
Sets the draw order of the particles to one of the named enums from [enum ParticlesDrawOrder]. See [enum ParticlesDrawOrder] for options. Equivalent to [member GPUParticles3D.draw_order].
</description>
</method>
<method name="particles_set_draw_pass_mesh">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="pass" type="int">
- </argument>
- <argument index="2" name="mesh" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="pass" type="int" />
+ <argument index="2" name="mesh" type="RID" />
<description>
Sets the mesh to be used for the specified draw pass. Equivalent to [member GPUParticles3D.draw_pass_1], [member GPUParticles3D.draw_pass_2], [member GPUParticles3D.draw_pass_3], and [member GPUParticles3D.draw_pass_4].
</description>
</method>
<method name="particles_set_draw_passes">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="count" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="count" type="int" />
<description>
Sets the number of draw passes to use. Equivalent to [member GPUParticles3D.draw_passes].
</description>
</method>
<method name="particles_set_emission_transform">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="transform" type="Transform3D" />
<description>
Sets the [Transform3D] that will be used by the particles when they first emit.
</description>
</method>
<method name="particles_set_emitting">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="emitting" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="emitting" type="bool" />
<description>
If [code]true[/code], particles will emit over time. Setting to false does not reset the particles, but only stops their emission. Equivalent to [member GPUParticles3D.emitting].
</description>
</method>
<method name="particles_set_explosiveness_ratio">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="ratio" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="ratio" type="float" />
<description>
Sets the explosiveness ratio. Equivalent to [member GPUParticles3D.explosiveness].
</description>
</method>
<method name="particles_set_fixed_fps">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="fps" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="fps" type="int" />
<description>
Sets the frame rate that the particle system rendering will be fixed to. Equivalent to [member GPUParticles3D.fixed_fps].
</description>
</method>
<method name="particles_set_fractional_delta">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], uses fractional delta which smooths the movement of the particles. Equivalent to [member GPUParticles3D.fract_delta].
</description>
</method>
<method name="particles_set_interpolate">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
</description>
</method>
<method name="particles_set_lifetime">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="lifetime" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="lifetime" type="float" />
<description>
Sets the lifetime of each particle in the system. Equivalent to [member GPUParticles3D.lifetime].
</description>
</method>
<method name="particles_set_mode">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="RenderingServer.ParticlesMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="mode" type="int" enum="RenderingServer.ParticlesMode" />
<description>
</description>
</method>
<method name="particles_set_one_shot">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="one_shot" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="one_shot" type="bool" />
<description>
If [code]true[/code], particles will emit once and then stop. Equivalent to [member GPUParticles3D.one_shot].
</description>
</method>
<method name="particles_set_pre_process_time">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="time" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="time" type="float" />
<description>
Sets the preprocess time for the particles' animation. This lets you delay starting an animation until after the particles have begun emitting. Equivalent to [member GPUParticles3D.preprocess].
</description>
</method>
<method name="particles_set_process_material">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="material" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="material" type="RID" />
<description>
Sets the material for processing the particles. Note: this is not the material used to draw the materials. Equivalent to [member GPUParticles3D.process_material].
</description>
</method>
<method name="particles_set_randomness_ratio">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="ratio" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="ratio" type="float" />
<description>
Sets the emission randomness ratio. This randomizes the emission of particles within their phase. Equivalent to [member GPUParticles3D.randomness].
</description>
</method>
<method name="particles_set_speed_scale">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="scale" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="scale" type="float" />
<description>
Sets the speed scale of the particle system. Equivalent to [member GPUParticles3D.speed_scale].
</description>
</method>
<method name="particles_set_subemitter">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="subemitter_particles" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="subemitter_particles" type="RID" />
<description>
</description>
</method>
<method name="particles_set_trail_bind_poses">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="bind_poses" type="Transform3D[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="bind_poses" type="Transform3D[]" />
<description>
</description>
</method>
<method name="particles_set_trails">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
- <argument index="2" name="length_sec" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="enable" type="bool" />
+ <argument index="2" name="length_sec" type="float" />
<description>
</description>
</method>
<method name="particles_set_transform_align">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="align" type="int" enum="RenderingServer.ParticlesTransformAlign">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="align" type="int" enum="RenderingServer.ParticlesTransformAlign" />
<description>
</description>
</method>
<method name="particles_set_use_local_coordinates">
- <return type="void">
- </return>
- <argument index="0" name="particles" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="particles" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], particles use local coordinates. If [code]false[/code] they use global coordinates. Equivalent to [member GPUParticles3D.local_coords].
</description>
</method>
<method name="reflection_probe_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a reflection probe and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]reflection_probe_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
@@ -3387,171 +2399,124 @@
</description>
</method>
<method name="reflection_probe_set_ambient_color">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="color" type="Color" />
<description>
</description>
</method>
<method name="reflection_probe_set_ambient_energy">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="energy" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="energy" type="float" />
<description>
</description>
</method>
<method name="reflection_probe_set_ambient_mode">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="RenderingServer.ReflectionProbeAmbientMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="mode" type="int" enum="RenderingServer.ReflectionProbeAmbientMode" />
<description>
</description>
</method>
<method name="reflection_probe_set_as_interior">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], reflections will ignore sky contribution. Equivalent to [member ReflectionProbe.interior].
</description>
</method>
<method name="reflection_probe_set_cull_mask">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="layers" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="layers" type="int" />
<description>
Sets the render cull mask for this reflection probe. Only instances with a matching cull mask will be rendered by this probe. Equivalent to [member ReflectionProbe.cull_mask].
</description>
</method>
<method name="reflection_probe_set_enable_box_projection">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], uses box projection. This can make reflections look more correct in certain situations. Equivalent to [member ReflectionProbe.box_projection].
</description>
</method>
<method name="reflection_probe_set_enable_shadows">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], computes shadows in the reflection probe. This makes the reflection much slower to compute. Equivalent to [member ReflectionProbe.enable_shadows].
</description>
</method>
<method name="reflection_probe_set_extents">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="extents" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="extents" type="Vector3" />
<description>
Sets the size of the area that the reflection probe will capture. Equivalent to [member ReflectionProbe.extents].
</description>
</method>
<method name="reflection_probe_set_intensity">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="intensity" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="intensity" type="float" />
<description>
Sets the intensity of the reflection probe. Intensity modulates the strength of the reflection. Equivalent to [member ReflectionProbe.intensity].
</description>
</method>
<method name="reflection_probe_set_lod_threshold">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="pixels" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="pixels" type="float" />
<description>
</description>
</method>
<method name="reflection_probe_set_max_distance">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="distance" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="distance" type="float" />
<description>
Sets the max distance away from the probe an object can be before it is culled. Equivalent to [member ReflectionProbe.max_distance].
</description>
</method>
<method name="reflection_probe_set_origin_offset">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="offset" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="offset" type="Vector3" />
<description>
Sets the origin offset to be used when this reflection probe is in box project mode. Equivalent to [member ReflectionProbe.origin_offset].
</description>
</method>
<method name="reflection_probe_set_resolution">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="resolution" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="resolution" type="int" />
<description>
</description>
</method>
<method name="reflection_probe_set_update_mode">
- <return type="void">
- </return>
- <argument index="0" name="probe" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="RenderingServer.ReflectionProbeUpdateMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="probe" type="RID" />
+ <argument index="1" name="mode" type="int" enum="RenderingServer.ReflectionProbeUpdateMode" />
<description>
Sets how often the reflection probe updates. Can either be once or every frame. See [enum ReflectionProbeUpdateMode] for options.
</description>
</method>
<method name="request_frame_drawn_callback">
- <return type="void">
- </return>
- <argument index="0" name="where" type="Object">
- </argument>
- <argument index="1" name="method" type="StringName">
- </argument>
- <argument index="2" name="userdata" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="where" type="Object" />
+ <argument index="1" name="method" type="StringName" />
+ <argument index="2" name="userdata" type="Variant" />
<description>
Schedules a callback to the corresponding named [code]method[/code] on [code]where[/code] after a frame has been drawn.
The callback method must use only 1 argument which will be called with [code]userdata[/code].
</description>
</method>
<method name="scenario_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a scenario and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]scenario_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
@@ -3559,293 +2524,214 @@
</description>
</method>
<method name="scenario_set_camera_effects">
- <return type="void">
- </return>
- <argument index="0" name="scenario" type="RID">
- </argument>
- <argument index="1" name="effects" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scenario" type="RID" />
+ <argument index="1" name="effects" type="RID" />
<description>
</description>
</method>
<method name="scenario_set_environment">
- <return type="void">
- </return>
- <argument index="0" name="scenario" type="RID">
- </argument>
- <argument index="1" name="environment" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scenario" type="RID" />
+ <argument index="1" name="environment" type="RID" />
<description>
Sets the environment that will be used with this scenario.
</description>
</method>
<method name="scenario_set_fallback_environment">
- <return type="void">
- </return>
- <argument index="0" name="scenario" type="RID">
- </argument>
- <argument index="1" name="environment" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scenario" type="RID" />
+ <argument index="1" name="environment" type="RID" />
<description>
Sets the fallback environment to be used by this scenario. The fallback environment is used if no environment is set. Internally, this is used by the editor to provide a default environment.
</description>
</method>
<method name="screen_space_roughness_limiter_set_active">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <argument index="1" name="amount" type="float">
- </argument>
- <argument index="2" name="limit" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
+ <argument index="1" name="amount" type="float" />
+ <argument index="2" name="limit" type="float" />
<description>
</description>
</method>
<method name="set_boot_image">
- <return type="void">
- </return>
- <argument index="0" name="image" type="Image">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
- <argument index="2" name="scale" type="bool">
- </argument>
- <argument index="3" name="use_filter" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="image" type="Image" />
+ <argument index="1" name="color" type="Color" />
+ <argument index="2" name="scale" type="bool" />
+ <argument index="3" name="use_filter" type="bool" default="true" />
<description>
Sets a boot image. The color defines the background color. If [code]scale[/code] is [code]true[/code], the image will be scaled to fit the screen size. If [code]use_filter[/code] is [code]true[/code], the image will be scaled with linear interpolation. If [code]use_filter[/code] is [code]false[/code], the image will be scaled with nearest-neighbor interpolation.
</description>
</method>
<method name="set_debug_generate_wireframes">
- <return type="void">
- </return>
- <argument index="0" name="generate" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="generate" type="bool" />
<description>
If [code]true[/code], the engine will generate wireframes for use with the wireframe debug mode.
</description>
</method>
<method name="set_default_clear_color">
- <return type="void">
- </return>
- <argument index="0" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="color" type="Color" />
<description>
Sets the default clear color which is used when a specific clear color has not been selected.
</description>
</method>
<method name="shader_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates an empty shader and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]shader_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="shader_get_code" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="shader" type="RID">
- </argument>
+ <return type="String" />
+ <argument index="0" name="shader" type="RID" />
<description>
Returns a shader's code.
</description>
</method>
<method name="shader_get_default_texture_param" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="shader" type="RID">
- </argument>
- <argument index="1" name="param" type="StringName">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="shader" type="RID" />
+ <argument index="1" name="param" type="StringName" />
<description>
Returns a default texture from a shader searched by name.
</description>
</method>
<method name="shader_get_param_default" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="shader" type="RID">
- </argument>
- <argument index="1" name="param" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="shader" type="RID" />
+ <argument index="1" name="param" type="StringName" />
<description>
</description>
</method>
<method name="shader_get_param_list" qualifiers="const">
- <return type="Dictionary[]">
- </return>
- <argument index="0" name="shader" type="RID">
- </argument>
+ <return type="Dictionary[]" />
+ <argument index="0" name="shader" type="RID" />
<description>
Returns the parameters of a shader.
</description>
</method>
<method name="shader_set_default_texture_param">
- <return type="void">
- </return>
- <argument index="0" name="shader" type="RID">
- </argument>
- <argument index="1" name="param" type="StringName">
- </argument>
- <argument index="2" name="texture" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shader" type="RID" />
+ <argument index="1" name="param" type="StringName" />
+ <argument index="2" name="texture" type="RID" />
<description>
Sets a shader's default texture. Overwrites the texture given by name.
</description>
</method>
<method name="shadows_quality_set">
- <return type="void">
- </return>
- <argument index="0" name="quality" type="int" enum="RenderingServer.ShadowQuality">
- </argument>
+ <return type="void" />
+ <argument index="0" name="quality" type="int" enum="RenderingServer.ShadowQuality" />
<description>
</description>
</method>
<method name="skeleton_allocate_data">
- <return type="void">
- </return>
- <argument index="0" name="skeleton" type="RID">
- </argument>
- <argument index="1" name="bones" type="int">
- </argument>
- <argument index="2" name="is_2d_skeleton" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="skeleton" type="RID" />
+ <argument index="1" name="bones" type="int" />
+ <argument index="2" name="is_2d_skeleton" type="bool" default="false" />
<description>
</description>
</method>
<method name="skeleton_bone_get_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="skeleton" type="RID">
- </argument>
- <argument index="1" name="bone" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="skeleton" type="RID" />
+ <argument index="1" name="bone" type="int" />
<description>
Returns the [Transform3D] set for a specific bone of this skeleton.
</description>
</method>
<method name="skeleton_bone_get_transform_2d" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="skeleton" type="RID">
- </argument>
- <argument index="1" name="bone" type="int">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="skeleton" type="RID" />
+ <argument index="1" name="bone" type="int" />
<description>
Returns the [Transform2D] set for a specific bone of this skeleton.
</description>
</method>
<method name="skeleton_bone_set_transform">
- <return type="void">
- </return>
- <argument index="0" name="skeleton" type="RID">
- </argument>
- <argument index="1" name="bone" type="int">
- </argument>
- <argument index="2" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="skeleton" type="RID" />
+ <argument index="1" name="bone" type="int" />
+ <argument index="2" name="transform" type="Transform3D" />
<description>
Sets the [Transform3D] for a specific bone of this skeleton.
</description>
</method>
<method name="skeleton_bone_set_transform_2d">
- <return type="void">
- </return>
- <argument index="0" name="skeleton" type="RID">
- </argument>
- <argument index="1" name="bone" type="int">
- </argument>
- <argument index="2" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="skeleton" type="RID" />
+ <argument index="1" name="bone" type="int" />
+ <argument index="2" name="transform" type="Transform2D" />
<description>
Sets the [Transform2D] for a specific bone of this skeleton.
</description>
</method>
<method name="skeleton_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a skeleton and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]skeleton_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="skeleton_get_bone_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="skeleton" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="skeleton" type="RID" />
<description>
Returns the number of bones allocated for this skeleton.
</description>
</method>
<method name="skeleton_set_base_transform_2d">
- <return type="void">
- </return>
- <argument index="0" name="skeleton" type="RID">
- </argument>
- <argument index="1" name="base_transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="skeleton" type="RID" />
+ <argument index="1" name="base_transform" type="Transform2D" />
<description>
</description>
</method>
<method name="sky_bake_panorama">
- <return type="Image">
- </return>
- <argument index="0" name="sky" type="RID">
- </argument>
- <argument index="1" name="energy" type="float">
- </argument>
- <argument index="2" name="bake_irradiance" type="bool">
- </argument>
- <argument index="3" name="size" type="Vector2i">
- </argument>
+ <return type="Image" />
+ <argument index="0" name="sky" type="RID" />
+ <argument index="1" name="energy" type="float" />
+ <argument index="2" name="bake_irradiance" type="bool" />
+ <argument index="3" name="size" type="Vector2i" />
<description>
</description>
</method>
<method name="sky_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates an empty sky and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]sky_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="sky_set_material">
- <return type="void">
- </return>
- <argument index="0" name="sky" type="RID">
- </argument>
- <argument index="1" name="material" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="sky" type="RID" />
+ <argument index="1" name="material" type="RID" />
<description>
Sets the material that the sky uses to render the background and reflection maps.
</description>
</method>
<method name="sky_set_mode">
- <return type="void">
- </return>
- <argument index="0" name="sky" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="RenderingServer.SkyMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="sky" type="RID" />
+ <argument index="1" name="mode" type="int" enum="RenderingServer.SkyMode" />
<description>
</description>
</method>
<method name="sky_set_radiance_size">
- <return type="void">
- </return>
- <argument index="0" name="sky" type="RID">
- </argument>
- <argument index="1" name="radiance_size" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="sky" type="RID" />
+ <argument index="1" name="radiance_size" type="int" />
<description>
</description>
</method>
<method name="spot_light_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates a spot light and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID can be used in most [code]light_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
@@ -3853,226 +2739,161 @@
</description>
</method>
<method name="sub_surface_scattering_set_quality">
- <return type="void">
- </return>
- <argument index="0" name="quality" type="int" enum="RenderingServer.SubSurfaceScatteringQuality">
- </argument>
+ <return type="void" />
+ <argument index="0" name="quality" type="int" enum="RenderingServer.SubSurfaceScatteringQuality" />
<description>
</description>
</method>
<method name="sub_surface_scattering_set_scale">
- <return type="void">
- </return>
- <argument index="0" name="scale" type="float">
- </argument>
- <argument index="1" name="depth_scale" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="scale" type="float" />
+ <argument index="1" name="depth_scale" type="float" />
<description>
</description>
</method>
<method name="texture_2d_create">
- <return type="RID">
- </return>
- <argument index="0" name="image" type="Image">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="image" type="Image" />
<description>
</description>
</method>
<method name="texture_2d_get" qualifiers="const">
- <return type="Image">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
+ <return type="Image" />
+ <argument index="0" name="texture" type="RID" />
<description>
</description>
</method>
<method name="texture_2d_layer_get" qualifiers="const">
- <return type="Image">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
- <argument index="1" name="layer" type="int">
- </argument>
+ <return type="Image" />
+ <argument index="0" name="texture" type="RID" />
+ <argument index="1" name="layer" type="int" />
<description>
</description>
</method>
<method name="texture_2d_layered_create">
- <return type="RID">
- </return>
- <argument index="0" name="layers" type="Image[]">
- </argument>
- <argument index="1" name="layered_type" type="int" enum="RenderingServer.TextureLayeredType">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="layers" type="Image[]" />
+ <argument index="1" name="layered_type" type="int" enum="RenderingServer.TextureLayeredType" />
<description>
</description>
</method>
<method name="texture_2d_layered_placeholder_create">
- <return type="RID">
- </return>
- <argument index="0" name="layered_type" type="int" enum="RenderingServer.TextureLayeredType">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="layered_type" type="int" enum="RenderingServer.TextureLayeredType" />
<description>
</description>
</method>
<method name="texture_2d_placeholder_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="texture_2d_update">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
- <argument index="1" name="image" type="Image">
- </argument>
- <argument index="2" name="layer" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="RID" />
+ <argument index="1" name="image" type="Image" />
+ <argument index="2" name="layer" type="int" />
<description>
</description>
</method>
<method name="texture_3d_create">
- <return type="RID">
- </return>
- <argument index="0" name="format" type="int" enum="Image.Format">
- </argument>
- <argument index="1" name="width" type="int">
- </argument>
- <argument index="2" name="height" type="int">
- </argument>
- <argument index="3" name="depth" type="int">
- </argument>
- <argument index="4" name="mipmaps" type="bool">
- </argument>
- <argument index="5" name="data" type="Image[]">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="format" type="int" enum="Image.Format" />
+ <argument index="1" name="width" type="int" />
+ <argument index="2" name="height" type="int" />
+ <argument index="3" name="depth" type="int" />
+ <argument index="4" name="mipmaps" type="bool" />
+ <argument index="5" name="data" type="Image[]" />
<description>
</description>
</method>
<method name="texture_3d_get" qualifiers="const">
- <return type="Image[]">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
+ <return type="Image[]" />
+ <argument index="0" name="texture" type="RID" />
<description>
</description>
</method>
<method name="texture_3d_placeholder_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="texture_3d_update">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
- <argument index="1" name="data" type="Image[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="RID" />
+ <argument index="1" name="data" type="Image[]" />
<description>
</description>
</method>
<method name="texture_get_path" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
+ <return type="String" />
+ <argument index="0" name="texture" type="RID" />
<description>
</description>
</method>
<method name="texture_proxy_create">
- <return type="RID">
- </return>
- <argument index="0" name="base" type="RID">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="base" type="RID" />
<description>
</description>
</method>
<method name="texture_proxy_update">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
- <argument index="1" name="proxy_to" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="RID" />
+ <argument index="1" name="proxy_to" type="RID" />
<description>
</description>
</method>
<method name="texture_replace">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
- <argument index="1" name="by_texture" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="RID" />
+ <argument index="1" name="by_texture" type="RID" />
<description>
</description>
</method>
<method name="texture_set_force_redraw_if_visible">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
</description>
</method>
<method name="texture_set_path">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
- <argument index="1" name="path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="RID" />
+ <argument index="1" name="path" type="String" />
<description>
</description>
</method>
<method name="texture_set_size_override">
- <return type="void">
- </return>
- <argument index="0" name="texture" type="RID">
- </argument>
- <argument index="1" name="width" type="int">
- </argument>
- <argument index="2" name="height" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="texture" type="RID" />
+ <argument index="1" name="width" type="int" />
+ <argument index="2" name="height" type="int" />
<description>
</description>
</method>
<method name="viewport_attach_camera">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="camera" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="camera" type="RID" />
<description>
Sets a viewport's camera.
</description>
</method>
<method name="viewport_attach_canvas">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="canvas" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="canvas" type="RID" />
<description>
Sets a viewport's canvas.
</description>
</method>
<method name="viewport_attach_to_screen">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="rect" type="Rect2" default="Rect2(0, 0, 0, 0)">
- </argument>
- <argument index="2" name="screen" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="rect" type="Rect2" default="Rect2(0, 0, 0, 0)" />
+ <argument index="2" name="screen" type="int" default="0" />
<description>
Copies the viewport to a region of the screen specified by [code]rect[/code]. If [method viewport_set_render_direct_to_screen] is [code]true[/code], then the viewport does not use a framebuffer and the contents of the viewport are rendered directly to screen. However, note that the root viewport is drawn last, therefore it will draw over the screen. Accordingly, you must set the root viewport to an area that does not cover the area that you have attached this viewport to.
For example, you can set the root viewport to not render at all with the following code:
@@ -4088,570 +2909,408 @@
</description>
</method>
<method name="viewport_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Creates an empty viewport and adds it to the RenderingServer. It can be accessed with the RID that is returned. This RID will be used in all [code]viewport_*[/code] RenderingServer functions.
Once finished with your RID, you will want to free the RID using the RenderingServer's [method free_rid] static method.
</description>
</method>
<method name="viewport_get_measured_render_time_cpu" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="viewport" type="RID" />
<description>
</description>
</method>
<method name="viewport_get_measured_render_time_gpu" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="viewport" type="RID" />
<description>
</description>
</method>
<method name="viewport_get_render_info">
- <return type="int">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="type" type="int" enum="RenderingServer.ViewportRenderInfoType">
- </argument>
- <argument index="2" name="info" type="int" enum="RenderingServer.ViewportRenderInfo">
- </argument>
+ <return type="int" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="type" type="int" enum="RenderingServer.ViewportRenderInfoType" />
+ <argument index="2" name="info" type="int" enum="RenderingServer.ViewportRenderInfo" />
<description>
</description>
</method>
<method name="viewport_get_texture" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="viewport" type="RID" />
<description>
Returns the viewport's last rendered frame.
</description>
</method>
<method name="viewport_remove_canvas">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="canvas" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="canvas" type="RID" />
<description>
Detaches a viewport from a canvas and vice versa.
</description>
</method>
<method name="viewport_set_active">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="active" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="active" type="bool" />
<description>
If [code]true[/code], sets the viewport active, else sets it inactive.
</description>
</method>
<method name="viewport_set_canvas_stacking">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="canvas" type="RID">
- </argument>
- <argument index="2" name="layer" type="int">
- </argument>
- <argument index="3" name="sublayer" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="canvas" type="RID" />
+ <argument index="2" name="layer" type="int" />
+ <argument index="3" name="sublayer" type="int" />
<description>
Sets the stacking order for a viewport's canvas.
[code]layer[/code] is the actual canvas layer, while [code]sublayer[/code] specifies the stacking order of the canvas among those in the same layer.
</description>
</method>
<method name="viewport_set_canvas_transform">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="canvas" type="RID">
- </argument>
- <argument index="2" name="offset" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="canvas" type="RID" />
+ <argument index="2" name="offset" type="Transform2D" />
<description>
Sets the transformation of a viewport's canvas.
</description>
</method>
<method name="viewport_set_clear_mode">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="clear_mode" type="int" enum="RenderingServer.ViewportClearMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="clear_mode" type="int" enum="RenderingServer.ViewportClearMode" />
<description>
Sets the clear mode of a viewport. See [enum ViewportClearMode] for options.
</description>
</method>
<method name="viewport_set_debug_draw">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="draw" type="int" enum="RenderingServer.ViewportDebugDraw">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="draw" type="int" enum="RenderingServer.ViewportDebugDraw" />
<description>
Sets the debug draw mode of a viewport. See [enum ViewportDebugDraw] for options.
</description>
</method>
<method name="viewport_set_default_canvas_item_texture_filter">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="filter" type="int" enum="RenderingServer.CanvasItemTextureFilter">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="filter" type="int" enum="RenderingServer.CanvasItemTextureFilter" />
<description>
</description>
</method>
<method name="viewport_set_default_canvas_item_texture_repeat">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="repeat" type="int" enum="RenderingServer.CanvasItemTextureRepeat">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="repeat" type="int" enum="RenderingServer.CanvasItemTextureRepeat" />
<description>
</description>
</method>
<method name="viewport_set_disable_2d">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="disable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="disable" type="bool" />
<description>
If [code]true[/code], the viewport's canvas is not rendered.
</description>
</method>
<method name="viewport_set_disable_3d">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="disable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="disable" type="bool" />
<description>
</description>
</method>
<method name="viewport_set_disable_environment">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="disabled" type="bool" />
<description>
If [code]true[/code], rendering of a viewport's environment is disabled.
</description>
</method>
<method name="viewport_set_global_canvas_transform">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="transform" type="Transform2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="transform" type="Transform2D" />
<description>
Sets the viewport's global transformation matrix.
</description>
</method>
<method name="viewport_set_measure_render_time">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
</description>
</method>
<method name="viewport_set_msaa">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="msaa" type="int" enum="RenderingServer.ViewportMSAA">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="msaa" type="int" enum="RenderingServer.ViewportMSAA" />
<description>
Sets the anti-aliasing mode. See [enum ViewportMSAA] for options.
</description>
</method>
<method name="viewport_set_occlusion_culling_build_quality">
- <return type="void">
- </return>
- <argument index="0" name="quality" type="int" enum="RenderingServer.ViewportOcclusionCullingBuildQuality">
- </argument>
+ <return type="void" />
+ <argument index="0" name="quality" type="int" enum="RenderingServer.ViewportOcclusionCullingBuildQuality" />
<description>
</description>
</method>
<method name="viewport_set_occlusion_rays_per_thread">
- <return type="void">
- </return>
- <argument index="0" name="rays_per_thread" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rays_per_thread" type="int" />
<description>
</description>
</method>
<method name="viewport_set_parent_viewport">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="parent_viewport" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="parent_viewport" type="RID" />
<description>
Sets the viewport's parent to another viewport.
</description>
</method>
<method name="viewport_set_render_direct_to_screen">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
If [code]true[/code], render the contents of the viewport directly to screen. This allows a low-level optimization where you can skip drawing a viewport to the root viewport. While this optimization can result in a significant increase in speed (especially on older devices), it comes at a cost of usability. When this is enabled, you cannot read from the viewport or from the [code]SCREEN_TEXTURE[/code]. You also lose the benefit of certain window settings, such as the various stretch modes. Another consequence to be aware of is that in 2D the rendering happens in window coordinates, so if you have a viewport that is double the size of the window, and you set this, then only the portion that fits within the window will be drawn, no automatic scaling is possible, even if your game scene is significantly larger than the window size.
</description>
</method>
<method name="viewport_set_scenario">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="scenario" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="scenario" type="RID" />
<description>
Sets a viewport's scenario.
The scenario contains information about environment information, reflection atlas etc.
</description>
</method>
<method name="viewport_set_screen_space_aa">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="mode" type="int" enum="RenderingServer.ViewportScreenSpaceAA">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="mode" type="int" enum="RenderingServer.ViewportScreenSpaceAA" />
<description>
</description>
</method>
<method name="viewport_set_sdf_oversize_and_scale">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="oversize" type="int" enum="RenderingServer.ViewportSDFOversize">
- </argument>
- <argument index="2" name="scale" type="int" enum="RenderingServer.ViewportSDFScale">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="oversize" type="int" enum="RenderingServer.ViewportSDFOversize" />
+ <argument index="2" name="scale" type="int" enum="RenderingServer.ViewportSDFScale" />
<description>
</description>
</method>
<method name="viewport_set_shadow_atlas_quadrant_subdivision">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="quadrant" type="int">
- </argument>
- <argument index="2" name="subdivision" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="quadrant" type="int" />
+ <argument index="2" name="subdivision" type="int" />
<description>
Sets the shadow atlas quadrant's subdivision.
</description>
</method>
<method name="viewport_set_shadow_atlas_size">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="size" type="int">
- </argument>
- <argument index="2" name="use_16_bits" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="size" type="int" />
+ <argument index="2" name="use_16_bits" type="bool" default="false" />
<description>
Sets the size of the shadow atlas's images (used for omni and spot lights). The value will be rounded up to the nearest power of 2.
</description>
</method>
<method name="viewport_set_size">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="width" type="int">
- </argument>
- <argument index="2" name="height" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="width" type="int" />
+ <argument index="2" name="height" type="int" />
<description>
Sets the viewport's width and height.
</description>
</method>
<method name="viewport_set_snap_2d_transforms_to_pixel">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
</description>
</method>
<method name="viewport_set_snap_2d_vertices_to_pixel">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
</description>
</method>
<method name="viewport_set_transparent_background">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
If [code]true[/code], the viewport renders its background as transparent.
</description>
</method>
<method name="viewport_set_update_mode">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="update_mode" type="int" enum="RenderingServer.ViewportUpdateMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="update_mode" type="int" enum="RenderingServer.ViewportUpdateMode" />
<description>
Sets when the viewport should be updated. See [enum ViewportUpdateMode] constants for options.
</description>
</method>
<method name="viewport_set_use_debanding">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
</description>
</method>
<method name="viewport_set_use_occlusion_culling">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
</description>
</method>
<method name="viewport_set_use_xr">
- <return type="void">
- </return>
- <argument index="0" name="viewport" type="RID">
- </argument>
- <argument index="1" name="use_xr" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="viewport" type="RID" />
+ <argument index="1" name="use_xr" type="bool" />
<description>
If [code]true[/code], the viewport uses augmented or virtual reality technologies. See [XRInterface].
</description>
</method>
<method name="visibility_notifier_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="visibility_notifier_set_aabb">
- <return type="void">
- </return>
- <argument index="0" name="notifier" type="RID">
- </argument>
- <argument index="1" name="aabb" type="AABB">
- </argument>
+ <return type="void" />
+ <argument index="0" name="notifier" type="RID" />
+ <argument index="1" name="aabb" type="AABB" />
<description>
</description>
</method>
<method name="visibility_notifier_set_callbacks">
- <return type="void">
- </return>
- <argument index="0" name="notifier" type="RID">
- </argument>
- <argument index="1" name="enter_callable" type="Callable">
- </argument>
- <argument index="2" name="exit_callable" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="notifier" type="RID" />
+ <argument index="1" name="enter_callable" type="Callable" />
+ <argument index="2" name="exit_callable" type="Callable" />
<description>
</description>
</method>
<method name="voxel_gi_allocate_data">
- <return type="void">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
- <argument index="1" name="to_cell_xform" type="Transform3D">
- </argument>
- <argument index="2" name="aabb" type="AABB">
- </argument>
- <argument index="3" name="octree_size" type="Vector3i">
- </argument>
- <argument index="4" name="octree_cells" type="PackedByteArray">
- </argument>
- <argument index="5" name="data_cells" type="PackedByteArray">
- </argument>
- <argument index="6" name="distance_field" type="PackedByteArray">
- </argument>
- <argument index="7" name="level_counts" type="PackedInt32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voxel_gi" type="RID" />
+ <argument index="1" name="to_cell_xform" type="Transform3D" />
+ <argument index="2" name="aabb" type="AABB" />
+ <argument index="3" name="octree_size" type="Vector3i" />
+ <argument index="4" name="octree_cells" type="PackedByteArray" />
+ <argument index="5" name="data_cells" type="PackedByteArray" />
+ <argument index="6" name="distance_field" type="PackedByteArray" />
+ <argument index="7" name="level_counts" type="PackedInt32Array" />
<description>
</description>
</method>
<method name="voxel_gi_create">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="voxel_gi_get_data_cells" qualifiers="const">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="voxel_gi" type="RID" />
<description>
</description>
</method>
<method name="voxel_gi_get_distance_field" qualifiers="const">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="voxel_gi" type="RID" />
<description>
</description>
</method>
<method name="voxel_gi_get_level_counts" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="voxel_gi" type="RID" />
<description>
</description>
</method>
<method name="voxel_gi_get_octree_cells" qualifiers="const">
- <return type="PackedByteArray">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
+ <return type="PackedByteArray" />
+ <argument index="0" name="voxel_gi" type="RID" />
<description>
</description>
</method>
<method name="voxel_gi_get_octree_size" qualifiers="const">
- <return type="Vector3i">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="voxel_gi" type="RID" />
<description>
</description>
</method>
<method name="voxel_gi_get_to_cell_xform" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="voxel_gi" type="RID" />
<description>
</description>
</method>
<method name="voxel_gi_set_bias">
- <return type="void">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
- <argument index="1" name="bias" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voxel_gi" type="RID" />
+ <argument index="1" name="bias" type="float" />
<description>
</description>
</method>
<method name="voxel_gi_set_dynamic_range">
- <return type="void">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
- <argument index="1" name="range" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voxel_gi" type="RID" />
+ <argument index="1" name="range" type="float" />
<description>
</description>
</method>
<method name="voxel_gi_set_energy">
- <return type="void">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
- <argument index="1" name="energy" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voxel_gi" type="RID" />
+ <argument index="1" name="energy" type="float" />
<description>
</description>
</method>
<method name="voxel_gi_set_interior">
- <return type="void">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voxel_gi" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
</description>
</method>
<method name="voxel_gi_set_normal_bias">
- <return type="void">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
- <argument index="1" name="bias" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voxel_gi" type="RID" />
+ <argument index="1" name="bias" type="float" />
<description>
</description>
</method>
<method name="voxel_gi_set_propagation">
- <return type="void">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
- <argument index="1" name="amount" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voxel_gi" type="RID" />
+ <argument index="1" name="amount" type="float" />
<description>
</description>
</method>
<method name="voxel_gi_set_quality">
- <return type="void">
- </return>
- <argument index="0" name="quality" type="int" enum="RenderingServer.VoxelGIQuality">
- </argument>
+ <return type="void" />
+ <argument index="0" name="quality" type="int" enum="RenderingServer.VoxelGIQuality" />
<description>
</description>
</method>
<method name="voxel_gi_set_use_two_bounces">
- <return type="void">
- </return>
- <argument index="0" name="voxel_gi" type="RID">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="voxel_gi" type="RID" />
+ <argument index="1" name="enable" type="bool" />
<description>
</description>
</method>
diff --git a/doc/classes/Resource.xml b/doc/classes/Resource.xml
index c8800a3c25..701ecf815c 100644
--- a/doc/classes/Resource.xml
+++ b/doc/classes/Resource.xml
@@ -13,17 +13,14 @@
</tutorials>
<methods>
<method name="_setup_local_to_scene" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Virtual function which can be overridden to customize the behavior value of [method setup_local_to_scene].
</description>
</method>
<method name="duplicate" qualifiers="const">
- <return type="Resource">
- </return>
- <argument index="0" name="subresources" type="bool" default="false">
- </argument>
+ <return type="Resource" />
+ <argument index="0" name="subresources" type="bool" default="false" />
<description>
Duplicates the resource, returning a new resource. By default, sub-resources are shared between resource copies for efficiency. This can be changed by passing [code]true[/code] to the [code]subresources[/code] argument which will copy the subresources.
[b]Note:[/b] If [code]subresources[/code] is [code]true[/code], this method will only perform a shallow copy. Nested resources within subresources will not be duplicated and will still be shared.
@@ -31,8 +28,7 @@
</description>
</method>
<method name="emit_changed">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Emits the [signal changed] signal.
If external objects which depend on this resource should be updated, this method must be called manually whenever the state of this resource has changed (such as modification of properties).
@@ -44,32 +40,27 @@
</description>
</method>
<method name="get_local_scene" qualifiers="const">
- <return type="Node">
- </return>
+ <return type="Node" />
<description>
If [member resource_local_to_scene] is enabled and the resource was loaded from a [PackedScene] instantiation, returns the local scene where this resource's unique copy is in use. Otherwise, returns [code]null[/code].
</description>
</method>
<method name="get_rid" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the RID of the resource (or an empty RID). Many resources (such as [Texture2D], [Mesh], etc) are high-level abstractions of resources stored in a server, so this function will return the original RID.
</description>
</method>
<method name="setup_local_to_scene">
- <return type="void">
- </return>
+ <return type="void" />
<description>
This method is called when a resource with [member resource_local_to_scene] enabled is loaded from a [PackedScene] instantiation. Its behavior can be customized by overriding [method _setup_local_to_scene] from script.
For most resources, this method performs no base logic. [ViewportTexture] performs custom logic to properly set the proxy texture and flags in the local viewport.
</description>
</method>
<method name="take_over_path">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
<description>
Sets the path of the resource, potentially overriding an existing cache entry for this path. This differs from setting [member resource_path], as the latter would error out if another resource was already cached for the given path.
</description>
diff --git a/doc/classes/ResourceFormatLoader.xml b/doc/classes/ResourceFormatLoader.xml
index 6abe5c813b..bce5785cc1 100644
--- a/doc/classes/ResourceFormatLoader.xml
+++ b/doc/classes/ResourceFormatLoader.xml
@@ -12,67 +12,51 @@
</tutorials>
<methods>
<method name="_get_dependencies" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="add_types" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="add_types" type="String" />
<description>
If implemented, gets the dependencies of a given resource. If [code]add_types[/code] is [code]true[/code], paths should be appended [code]::TypeName[/code], where [code]TypeName[/code] is the class name of the dependency.
[b]Note:[/b] Custom resource types defined by scripts aren't known by the [ClassDB], so you might just return [code]"Resource"[/code] for them.
</description>
</method>
<method name="_get_recognized_extensions" qualifiers="virtual">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Gets the list of extensions for files this loader is able to read.
</description>
</method>
<method name="_get_resource_type" qualifiers="virtual">
- <return type="String">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="path" type="String" />
<description>
Gets the class name of the resource associated with the given path. If the loader cannot handle it, it should return [code]""[/code].
[b]Note:[/b] Custom resource types defined by scripts aren't known by the [ClassDB], so you might just return [code]"Resource"[/code] for them.
</description>
</method>
<method name="_handles_type" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="typename" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="typename" type="StringName" />
<description>
Tells which resource class this loader can load.
[b]Note:[/b] Custom resource types defined by scripts aren't known by the [ClassDB], so you might just handle [code]"Resource"[/code] for them.
</description>
</method>
<method name="_load" qualifiers="virtual">
- <return type="Variant">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="original_path" type="String">
- </argument>
- <argument index="2" name="use_sub_threads" type="bool">
- </argument>
- <argument index="3" name="cache_mode" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="original_path" type="String" />
+ <argument index="2" name="use_sub_threads" type="bool" />
+ <argument index="3" name="cache_mode" type="int" />
<description>
Loads a resource when the engine finds this loader to be compatible. If the loaded resource is the result of an import, [code]original_path[/code] will target the source file. Returns a [Resource] object on success, or an [enum Error] constant in case of failure.
The [code]cache_mode[/code] property defines whether and how the cache should be used or updated when loading the resource. See [enum CacheMode] for details.
</description>
</method>
<method name="_rename_dependencies" qualifiers="virtual">
- <return type="int">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="renames" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="renames" type="String" />
<description>
If implemented, renames dependencies within the given resource and saves it. [code]renames[/code] is a dictionary [code]{ String =&gt; String }[/code] mapping old dependency paths to new paths.
Returns [constant OK] on success, or an [enum Error] constant in case of failure.
diff --git a/doc/classes/ResourceFormatSaver.xml b/doc/classes/ResourceFormatSaver.xml
index df71e05d02..ef9eebc953 100644
--- a/doc/classes/ResourceFormatSaver.xml
+++ b/doc/classes/ResourceFormatSaver.xml
@@ -11,32 +11,24 @@
</tutorials>
<methods>
<method name="_get_recognized_extensions" qualifiers="virtual">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="resource" type="Resource">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="resource" type="Resource" />
<description>
Returns the list of extensions available for saving the resource object, provided it is recognized (see [method _recognize]).
</description>
</method>
<method name="_recognize" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="resource" type="Resource">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="resource" type="Resource" />
<description>
Returns whether the given resource object can be saved by this saver.
</description>
</method>
<method name="_save" qualifiers="virtual">
- <return type="int">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="resource" type="Resource">
- </argument>
- <argument index="2" name="flags" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="resource" type="Resource" />
+ <argument index="2" name="flags" type="int" />
<description>
Saves the given resource object to a file at the target [code]path[/code]. [code]flags[/code] is a bitmask composed with [enum ResourceSaver.SaverFlags] constants.
Returns [constant OK] on success, or an [enum Error] constant in case of failure.
diff --git a/doc/classes/ResourceImporter.xml b/doc/classes/ResourceImporter.xml
index 59900b1b73..03d47ee518 100644
--- a/doc/classes/ResourceImporter.xml
+++ b/doc/classes/ResourceImporter.xml
@@ -1,13 +1,22 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="ResourceImporter" inherits="RefCounted" version="4.0">
<brief_description>
+ Base class for the implementation of core resource importers.
</brief_description>
<description>
+ This is the base class for the resource importers implemented in core. To implement your own resource importers using editor plugins, see [EditorImportPlugin].
</description>
<tutorials>
+ <link title="Import plugins">https://docs.godotengine.org/en/latest/tutorials/plugins/editor/import_plugins.html</link>
</tutorials>
<methods>
</methods>
<constants>
+ <constant name="IMPORT_ORDER_DEFAULT" value="0" enum="ImportOrder">
+ The default import order.
+ </constant>
+ <constant name="IMPORT_ORDER_SCENE" value="100" enum="ImportOrder">
+ The import order for scenes, which ensures scenes are imported [i]after[/i] all other core resources such as textures. Custom importers should generally have an import order lower than [code]100[/code] to avoid issues when importing scenes that rely on custom resources.
+ </constant>
</constants>
</class>
diff --git a/doc/classes/ResourceLoader.xml b/doc/classes/ResourceLoader.xml
index 682d7b97f3..3a3ce189d5 100644
--- a/doc/classes/ResourceLoader.xml
+++ b/doc/classes/ResourceLoader.xml
@@ -12,54 +12,41 @@
</tutorials>
<methods>
<method name="exists">
- <return type="bool">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="type_hint" type="String" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="type_hint" type="String" default="&quot;&quot;" />
<description>
Returns whether a recognized resource exists for the given [code]path[/code].
An optional [code]type_hint[/code] can be used to further specify the [Resource] type that should be handled by the [ResourceFormatLoader]. Anything that inherits from [Resource] can be used as a type hint, for example [Image].
</description>
</method>
<method name="get_dependencies">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="path" type="String" />
<description>
Returns the dependencies for the resource at the given [code]path[/code].
</description>
</method>
<method name="get_recognized_extensions_for_type">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="type" type="String">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="type" type="String" />
<description>
Returns the list of recognized extensions for a resource type.
</description>
</method>
<method name="has_cached">
- <return type="bool">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="path" type="String" />
<description>
Returns whether a cached resource is available for the given [code]path[/code].
Once a resource has been loaded by the engine, it is cached in memory for faster access, and future calls to the [method load] method will use the cached version. The cached resource can be overridden by using [method Resource.take_over_path] on a new resource for that same path.
</description>
</method>
<method name="load">
- <return type="Resource">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="type_hint" type="String" default="&quot;&quot;">
- </argument>
- <argument index="2" name="cache_mode" type="int" enum="ResourceLoader.CacheMode" default="1">
- </argument>
+ <return type="Resource" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="type_hint" type="String" default="&quot;&quot;" />
+ <argument index="2" name="cache_mode" type="int" enum="ResourceLoader.CacheMode" default="1" />
<description>
Loads a resource at the given [code]path[/code], caching the result for further access.
The registered [ResourceFormatLoader]s are queried sequentially to find the first one which can handle the file's extension, and then attempt loading. If loading fails, the remaining ResourceFormatLoaders are also attempted.
@@ -70,45 +57,34 @@
</description>
</method>
<method name="load_threaded_get">
- <return type="Resource">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="Resource" />
+ <argument index="0" name="path" type="String" />
<description>
Returns the resource loaded by [method load_threaded_request].
If this is called before the loading thread is done (i.e. [method load_threaded_get_status] is not [constant THREAD_LOAD_LOADED]), the calling thread will be blocked until the resource has finished loading.
</description>
</method>
<method name="load_threaded_get_status">
- <return type="int" enum="ResourceLoader.ThreadLoadStatus">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="progress" type="Array" default="[]">
- </argument>
+ <return type="int" enum="ResourceLoader.ThreadLoadStatus" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="progress" type="Array" default="[]" />
<description>
Returns the status of a threaded loading operation started with [method load_threaded_request] for the resource at [code]path[/code]. See [enum ThreadLoadStatus] for possible return values.
An array variable can optionally be passed via [code]progress[/code], and will return a one-element array containing the percentage of completion of the threaded loading.
</description>
</method>
<method name="load_threaded_request">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="type_hint" type="String" default="&quot;&quot;">
- </argument>
- <argument index="2" name="use_sub_threads" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="type_hint" type="String" default="&quot;&quot;" />
+ <argument index="2" name="use_sub_threads" type="bool" default="false" />
<description>
Loads the resource using threads. If [code]use_sub_threads[/code] is [code]true[/code], multiple threads will be used to load the resource, which makes loading faster, but may affect the main thread (and thus cause game slowdowns).
</description>
</method>
<method name="set_abort_on_missing_resources">
- <return type="void">
- </return>
- <argument index="0" name="abort" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="abort" type="bool" />
<description>
Changes the behavior on missing sub-resources. The default behavior is to abort loading.
</description>
diff --git a/doc/classes/ResourcePreloader.xml b/doc/classes/ResourcePreloader.xml
index 3159a4c424..8ac8717581 100644
--- a/doc/classes/ResourcePreloader.xml
+++ b/doc/classes/ResourcePreloader.xml
@@ -11,57 +11,44 @@
</tutorials>
<methods>
<method name="add_resource">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="resource" type="Resource">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="resource" type="Resource" />
<description>
Adds a resource to the preloader with the given [code]name[/code]. If a resource with the given [code]name[/code] already exists, the new resource will be renamed to "[code]name[/code] N" where N is an incrementing number starting from 2.
</description>
</method>
<method name="get_resource" qualifiers="const">
- <return type="Resource">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="Resource" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns the resource associated to [code]name[/code].
</description>
</method>
<method name="get_resource_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns the list of resources inside the preloader.
</description>
</method>
<method name="has_resource" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if the preloader contains a resource associated to [code]name[/code].
</description>
</method>
<method name="remove_resource">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Removes the resource associated to [code]name[/code] from the preloader.
</description>
</method>
<method name="rename_resource">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="newname" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="newname" type="StringName" />
<description>
Renames a resource inside the preloader from [code]name[/code] to [code]newname[/code].
</description>
diff --git a/doc/classes/ResourceSaver.xml b/doc/classes/ResourceSaver.xml
index 437b0ce730..39f166db2e 100644
--- a/doc/classes/ResourceSaver.xml
+++ b/doc/classes/ResourceSaver.xml
@@ -11,23 +11,17 @@
</tutorials>
<methods>
<method name="get_recognized_extensions">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="type" type="Resource">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="type" type="Resource" />
<description>
Returns the list of extensions available for saving a resource of a given type.
</description>
</method>
<method name="save">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="resource" type="Resource">
- </argument>
- <argument index="2" name="flags" type="int" enum="ResourceSaver.SaverFlags" default="0">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="resource" type="Resource" />
+ <argument index="2" name="flags" type="int" enum="ResourceSaver.SaverFlags" default="0" />
<description>
Saves a resource to disk to the given path, using a [ResourceFormatSaver] that recognizes the resource object.
The [code]flags[/code] bitmask can be specified to customize the save behavior.
diff --git a/doc/classes/ResourceUID.xml b/doc/classes/ResourceUID.xml
new file mode 100644
index 0000000000..9e3d647ccf
--- /dev/null
+++ b/doc/classes/ResourceUID.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="ResourceUID" inherits="Object" version="4.0">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+ <methods>
+ <method name="add_id">
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="path" type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="create_id" qualifiers="const">
+ <return type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="get_id_path" qualifiers="const">
+ <return type="String" />
+ <argument index="0" name="id" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="has_id" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="id_to_text" qualifiers="const">
+ <return type="String" />
+ <argument index="0" name="id" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="remove_id">
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="set_id">
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="path" type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="text_to_id" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="text_id" type="String" />
+ <description>
+ </description>
+ </method>
+ </methods>
+ <constants>
+ <constant name="INVALID_ID" value="-1">
+ </constant>
+ </constants>
+</class>
diff --git a/doc/classes/RichTextEffect.xml b/doc/classes/RichTextEffect.xml
index edab35f162..142afbb860 100644
--- a/doc/classes/RichTextEffect.xml
+++ b/doc/classes/RichTextEffect.xml
@@ -24,10 +24,8 @@
</tutorials>
<methods>
<method name="_process_custom_fx" qualifiers="virtual">
- <return type="bool">
- </return>
- <argument index="0" name="char_fx" type="CharFXTransform">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="char_fx" type="CharFXTransform" />
<description>
Override this method to modify properties in [code]char_fx[/code]. The method must return [code]true[/code] if the character could be transformed successfully. If the method returns [code]false[/code], it will skip transformation to avoid displaying broken text.
</description>
diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml
index 38884a027f..538e93d505 100644
--- a/doc/classes/RichTextLabel.xml
+++ b/doc/classes/RichTextLabel.xml
@@ -16,443 +16,346 @@
</tutorials>
<methods>
<method name="add_image">
- <return type="void">
- </return>
- <argument index="0" name="image" type="Texture2D">
- </argument>
- <argument index="1" name="width" type="int" default="0">
- </argument>
- <argument index="2" name="height" type="int" default="0">
- </argument>
- <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="4" name="inline_align" type="int" enum="VAlign" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="image" type="Texture2D" />
+ <argument index="1" name="width" type="int" default="0" />
+ <argument index="2" name="height" type="int" default="0" />
+ <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="4" name="inline_align" type="int" enum="VAlign" default="0" />
<description>
Adds an image's opening and closing tags to the tag stack, optionally providing a [code]width[/code] and [code]height[/code] to resize the image and a [code]color[/code] to tint the image.
If [code]width[/code] or [code]height[/code] is set to 0, the image size will be adjusted in order to keep the original aspect ratio.
</description>
</method>
<method name="add_text">
- <return type="void">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="text" type="String" />
<description>
Adds raw non-BBCode-parsed text to the tag stack.
</description>
</method>
<method name="append_bbcode">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="bbcode" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="bbcode" type="String" />
<description>
Parses [code]bbcode[/code] and adds tags to the tag stack as needed. Returns the result of the parsing, [constant OK] if successful.
[b]Note:[/b] Using this method, you can't close a tag that was opened in a previous [method append_bbcode] call. This is done to improve performance, especially when updating large RichTextLabels since rebuilding the whole BBCode every time would be slower. If you absolutely need to close a tag in a future method call, append the [member bbcode_text] instead of using [method append_bbcode].
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the tag stack and sets [member bbcode_text] to an empty string.
</description>
</method>
<method name="get_content_height" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the height of the content.
</description>
</method>
<method name="get_line_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the total number of lines in the text. Wrapped text is counted as multiple lines.
</description>
</method>
<method name="get_paragraph_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the total number of paragraphs (newlines or [code]p[/code] tags in the tag stack's text tags). Considers wrapped text as one paragraph.
</description>
</method>
<method name="get_selected_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the current selection text. Does not include BBCodes.
</description>
</method>
<method name="get_selection_from" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the current selection first character index if a selection is active, [code]-1[/code] otherwise. Does not include BBCodes.
</description>
</method>
<method name="get_selection_to" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the current selection last character index if a selection is active, [code]-1[/code] otherwise. Does not include BBCodes.
</description>
</method>
<method name="get_total_character_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the total number of characters from text tags. Does not include BBCodes.
</description>
</method>
<method name="get_v_scroll">
- <return type="VScrollBar">
- </return>
+ <return type="VScrollBar" />
<description>
Returns the vertical scrollbar.
</description>
</method>
<method name="get_visible_line_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of visible lines.
</description>
</method>
<method name="get_visible_paragraph_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of visible paragraphs. A paragraph is considered visible if at least one of its lines is visible.
</description>
</method>
<method name="install_effect">
- <return type="void">
- </return>
- <argument index="0" name="effect" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="effect" type="Variant" />
<description>
Installs a custom effect. [code]effect[/code] should be a valid [RichTextEffect].
</description>
</method>
<method name="newline">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Adds a newline tag to the tag stack.
</description>
</method>
<method name="parse_bbcode">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="bbcode" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="bbcode" type="String" />
<description>
The assignment version of [method append_bbcode]. Clears the tag stack and inserts the new content. Returns [constant OK] if parses [code]bbcode[/code] successfully.
</description>
</method>
<method name="parse_expressions_for_values">
- <return type="Dictionary">
- </return>
- <argument index="0" name="expressions" type="PackedStringArray">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="expressions" type="PackedStringArray" />
<description>
Parses BBCode parameter [code]expressions[/code] into a dictionary.
</description>
</method>
<method name="pop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Terminates the current tag. Use after [code]push_*[/code] methods to close BBCodes manually. Does not need to follow [code]add_*[/code] methods.
</description>
</method>
<method name="push_bgcolor">
- <return type="void">
- </return>
- <argument index="0" name="bgcolor" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bgcolor" type="Color" />
<description>
Adds a [code][bgcolor][/code] tag to the tag stack.
</description>
</method>
<method name="push_bold">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Adds a [code][font][/code] tag with a bold font to the tag stack. This is the same as adding a [code][b][/code] tag if not currently in a [code][i][/code] tag.
</description>
</method>
<method name="push_bold_italics">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Adds a [code][font][/code] tag with a bold italics font to the tag stack.
</description>
</method>
<method name="push_cell">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Adds a [code][cell][/code] tag to the tag stack. Must be inside a [code][table][/code] tag. See [method push_table] for details.
</description>
</method>
<method name="push_color">
- <return type="void">
- </return>
- <argument index="0" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="color" type="Color" />
<description>
Adds a [code][color][/code] tag to the tag stack.
</description>
</method>
<method name="push_dropcap">
- <return type="void">
- </return>
- <argument index="0" name="string" type="String">
- </argument>
- <argument index="1" name="font" type="Font">
- </argument>
- <argument index="2" name="size" type="int">
- </argument>
- <argument index="3" name="dropcap_margins" type="Rect2" default="Rect2(0, 0, 0, 0)">
- </argument>
- <argument index="4" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="5" name="outline_size" type="int" default="0">
- </argument>
- <argument index="6" name="outline_color" type="Color" default="Color(0, 0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="string" type="String" />
+ <argument index="1" name="font" type="Font" />
+ <argument index="2" name="size" type="int" />
+ <argument index="3" name="dropcap_margins" type="Rect2" default="Rect2(0, 0, 0, 0)" />
+ <argument index="4" name="color" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="5" name="outline_size" type="int" default="0" />
+ <argument index="6" name="outline_color" type="Color" default="Color(0, 0, 0, 0)" />
<description>
Adds a [code][dropcap][/code] tag to the tag stack. Drop cap (dropped capital) is a decorative element at the beginning of a paragraph that is larger than the rest of the text.
</description>
</method>
<method name="push_fgcolor">
- <return type="void">
- </return>
- <argument index="0" name="fgcolor" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="fgcolor" type="Color" />
<description>
Adds a [code][fgcolor][/code] tag to the tag stack.
</description>
</method>
<method name="push_font">
- <return type="void">
- </return>
- <argument index="0" name="font" type="Font">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="Font" />
<description>
Adds a [code][font][/code] tag to the tag stack. Overrides default fonts for its duration.
</description>
</method>
<method name="push_font_features">
- <return type="void">
- </return>
- <argument index="0" name="opentype_features" type="Dictionary">
- </argument>
+ <return type="void" />
+ <argument index="0" name="opentype_features" type="Dictionary" />
<description>
Adds a [code][ot_feature][/code] tag to the tag stack. Overrides default OpenType font feature for its duration.
</description>
</method>
<method name="push_font_size">
- <return type="void">
- </return>
- <argument index="0" name="font_size" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font_size" type="int" />
<description>
Adds a [code][font_size][/code] tag to the tag stack. Overrides default font size for its duration.
</description>
</method>
<method name="push_indent">
- <return type="void">
- </return>
- <argument index="0" name="level" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="level" type="int" />
<description>
Adds an [code][indent][/code] tag to the tag stack. Multiplies [code]level[/code] by current [member tab_size] to determine new margin length.
</description>
</method>
<method name="push_italics">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Adds a [code][font][/code] tag with a italics font to the tag stack. This is the same as adding a [code][i][/code] tag if not currently in a [code][b][/code] tag.
</description>
</method>
<method name="push_list">
- <return type="void">
- </return>
- <argument index="0" name="level" type="int">
- </argument>
- <argument index="1" name="type" type="int" enum="RichTextLabel.ListType">
- </argument>
- <argument index="2" name="capitalize" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="level" type="int" />
+ <argument index="1" name="type" type="int" enum="RichTextLabel.ListType" />
+ <argument index="2" name="capitalize" type="bool" />
<description>
Adds [code][ol][/code] or [code][ul][/code] tag to the tag stack. Multiplies [code]level[/code] by current [member tab_size] to determine new margin length.
</description>
</method>
<method name="push_meta">
- <return type="void">
- </return>
- <argument index="0" name="data" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="data" type="Variant" />
<description>
Adds a [code][meta][/code] tag to the tag stack. Similar to the BBCode [code][url=something]{text}[/url][/code], but supports non-[String] metadata types.
</description>
</method>
<method name="push_mono">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Adds a [code][font][/code] tag with a monospace font to the tag stack.
</description>
</method>
<method name="push_normal">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Adds a [code][font][/code] tag with a normal font to the tag stack.
</description>
</method>
<method name="push_outline_color">
- <return type="void">
- </return>
- <argument index="0" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="color" type="Color" />
<description>
Adds a [code][outline_color][/code] tag to the tag stack. Adds text outline for its duration.
</description>
</method>
<method name="push_outline_size">
- <return type="void">
- </return>
- <argument index="0" name="outline_size" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="outline_size" type="int" />
<description>
Adds a [code][outline_size][/code] tag to the tag stack. Overrides default text outline size for its duration.
</description>
</method>
<method name="push_paragraph">
- <return type="void">
- </return>
- <argument index="0" name="align" type="int" enum="RichTextLabel.Align">
- </argument>
- <argument index="1" name="base_direction" type="int" enum="Control.TextDirection" default="0">
- </argument>
- <argument index="2" name="language" type="String" default="&quot;&quot;">
- </argument>
- <argument index="3" name="st_parser" type="int" enum="Control.StructuredTextParser" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="align" type="int" enum="RichTextLabel.Align" />
+ <argument index="1" name="base_direction" type="int" enum="Control.TextDirection" default="0" />
+ <argument index="2" name="language" type="String" default="&quot;&quot;" />
+ <argument index="3" name="st_parser" type="int" enum="Control.StructuredTextParser" default="0" />
<description>
Adds a [code][p][/code] tag to the tag stack.
</description>
</method>
<method name="push_strikethrough">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Adds a [code][s][/code] tag to the tag stack.
</description>
</method>
<method name="push_table">
- <return type="void">
- </return>
- <argument index="0" name="columns" type="int">
- </argument>
- <argument index="1" name="inline_align" type="int" enum="VAlign" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="columns" type="int" />
+ <argument index="1" name="inline_align" type="int" enum="VAlign" default="0" />
<description>
Adds a [code][table=columns,inline_align][/code] tag to the tag stack.
</description>
</method>
<method name="push_underline">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Adds a [code][u][/code] tag to the tag stack.
</description>
</method>
<method name="remove_line">
- <return type="bool">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="line" type="int" />
<description>
Removes a line of content from the label. Returns [code]true[/code] if the line exists.
The [code]line[/code] argument is the index of the line to remove, it can take values in the interval [code][0, get_line_count() - 1][/code].
</description>
</method>
<method name="scroll_to_line">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
<description>
Scrolls the window's top line to match [code]line[/code].
</description>
</method>
<method name="scroll_to_paragraph">
- <return type="void">
- </return>
- <argument index="0" name="paragraph" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="paragraph" type="int" />
<description>
Scrolls the window's top line to match first line of the [code]paragraph[/code].
</description>
</method>
<method name="set_cell_border_color">
- <return type="void">
- </return>
- <argument index="0" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="color" type="Color" />
<description>
Sets color of a table cell border.
</description>
</method>
<method name="set_cell_padding">
- <return type="void">
- </return>
- <argument index="0" name="padding" type="Rect2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="padding" type="Rect2" />
<description>
Sets inner padding of a table cell.
</description>
</method>
<method name="set_cell_row_background_color">
- <return type="void">
- </return>
- <argument index="0" name="odd_row_bg" type="Color">
- </argument>
- <argument index="1" name="even_row_bg" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="odd_row_bg" type="Color" />
+ <argument index="1" name="even_row_bg" type="Color" />
<description>
Sets color of a table cell. Separate colors for alternating rows can be specified.
</description>
</method>
<method name="set_cell_size_override">
- <return type="void">
- </return>
- <argument index="0" name="min_size" type="Vector2">
- </argument>
- <argument index="1" name="max_size" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="min_size" type="Vector2" />
+ <argument index="1" name="max_size" type="Vector2" />
<description>
Sets minimum and maximum size overrides for a table cell.
</description>
</method>
<method name="set_table_column_expand">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="expand" type="bool">
- </argument>
- <argument index="2" name="ratio" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="expand" type="bool" />
+ <argument index="2" name="ratio" type="int" />
<description>
Edits the selected column's expansion options. If [code]expand[/code] is [code]true[/code], the column expands in proportion to its expansion ratio versus the other columns' ratios.
For example, 2 columns with ratios 3 and 4 plus 70 pixels in available width would expand 30 and 40 pixels, respectively.
@@ -522,22 +425,19 @@
</members>
<signals>
<signal name="meta_clicked">
- <argument index="0" name="meta" type="Variant">
- </argument>
+ <argument index="0" name="meta" type="Variant" />
<description>
Triggered when the user clicks on content between meta tags. If the meta is defined in text, e.g. [code][url={"data"="hi"}]hi[/url][/code], then the parameter for this signal will be a [String] type. If a particular type or an object is desired, the [method push_meta] method must be used to manually insert the data into the tag stack.
</description>
</signal>
<signal name="meta_hover_ended">
- <argument index="0" name="meta" type="Variant">
- </argument>
+ <argument index="0" name="meta" type="Variant" />
<description>
Triggers when the mouse exits a meta tag.
</description>
</signal>
<signal name="meta_hover_started">
- <argument index="0" name="meta" type="Variant">
- </argument>
+ <argument index="0" name="meta" type="Variant" />
<description>
Triggers when the mouse enters a meta tag.
</description>
@@ -622,85 +522,85 @@
</constant>
</constants>
<theme_items>
- <theme_item name="bold_font" type="Font">
+ <theme_item name="bold_font" data_type="font" type="Font">
The font used for bold text.
</theme_item>
- <theme_item name="bold_font_size" type="int">
+ <theme_item name="bold_font_size" data_type="font_size" type="int">
The font size used for bold text.
</theme_item>
- <theme_item name="bold_italics_font" type="Font">
+ <theme_item name="bold_italics_font" data_type="font" type="Font">
The font used for bold italics text.
</theme_item>
- <theme_item name="bold_italics_font_size" type="int">
+ <theme_item name="bold_italics_font_size" data_type="font_size" type="int">
The font size used for bold italics text.
</theme_item>
- <theme_item name="default_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="default_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The default text color.
</theme_item>
- <theme_item name="focus" type="StyleBox">
+ <theme_item name="focus" data_type="style" type="StyleBox">
The background The background used when the [RichTextLabel] is focused.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The default tint of text outline.
</theme_item>
- <theme_item name="font_selected_color" type="Color" default="Color(0, 0, 0, 1)">
+ <theme_item name="font_selected_color" data_type="color" type="Color" default="Color(0, 0, 0, 1)">
The color of selected text, used when [member selection_enabled] is [code]true[/code].
</theme_item>
- <theme_item name="font_shadow_color" type="Color" default="Color(0, 0, 0, 0)">
+ <theme_item name="font_shadow_color" data_type="color" type="Color" default="Color(0, 0, 0, 0)">
The color of the font's shadow.
</theme_item>
- <theme_item name="italics_font" type="Font">
+ <theme_item name="italics_font" data_type="font" type="Font">
The font used for italics text.
</theme_item>
- <theme_item name="italics_font_size" type="int">
+ <theme_item name="italics_font_size" data_type="font_size" type="int">
The font size used for italics text.
</theme_item>
- <theme_item name="line_separation" type="int" default="1">
+ <theme_item name="line_separation" data_type="constant" type="int" default="1">
The vertical space between lines.
</theme_item>
- <theme_item name="mono_font" type="Font">
+ <theme_item name="mono_font" data_type="font" type="Font">
The font used for monospace text.
</theme_item>
- <theme_item name="mono_font_size" type="int">
+ <theme_item name="mono_font_size" data_type="font_size" type="int">
The font size used for monospace text.
</theme_item>
- <theme_item name="normal" type="StyleBox">
+ <theme_item name="normal" data_type="style" type="StyleBox">
The normal background for the [RichTextLabel].
</theme_item>
- <theme_item name="normal_font" type="Font">
+ <theme_item name="normal_font" data_type="font" type="Font">
The default text font.
</theme_item>
- <theme_item name="normal_font_size" type="int">
+ <theme_item name="normal_font_size" data_type="font_size" type="int">
The default text font size.
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
- <theme_item name="selection_color" type="Color" default="Color(0.1, 0.1, 1, 0.8)">
+ <theme_item name="selection_color" data_type="color" type="Color" default="Color(0.1, 0.1, 1, 0.8)">
The color of the selection box.
</theme_item>
- <theme_item name="shadow_as_outline" type="int" default="0">
+ <theme_item name="shadow_as_outline" data_type="constant" type="int" default="0">
Boolean value. If 1 ([code]true[/code]), the shadow will be displayed around the whole text as an outline.
</theme_item>
- <theme_item name="shadow_offset_x" type="int" default="1">
+ <theme_item name="shadow_offset_x" data_type="constant" type="int" default="1">
The horizontal offset of the font's shadow.
</theme_item>
- <theme_item name="shadow_offset_y" type="int" default="1">
+ <theme_item name="shadow_offset_y" data_type="constant" type="int" default="1">
The vertical offset of the font's shadow.
</theme_item>
- <theme_item name="table_border" type="Color" default="Color(0, 0, 0, 0)">
+ <theme_item name="table_border" data_type="color" type="Color" default="Color(0, 0, 0, 0)">
The default cell border color.
</theme_item>
- <theme_item name="table_even_row_bg" type="Color" default="Color(0, 0, 0, 0)">
+ <theme_item name="table_even_row_bg" data_type="color" type="Color" default="Color(0, 0, 0, 0)">
The default background color for even rows.
</theme_item>
- <theme_item name="table_hseparation" type="int" default="3">
+ <theme_item name="table_hseparation" data_type="constant" type="int" default="3">
The horizontal separation of elements in a table.
</theme_item>
- <theme_item name="table_odd_row_bg" type="Color" default="Color(0, 0, 0, 0)">
+ <theme_item name="table_odd_row_bg" data_type="color" type="Color" default="Color(0, 0, 0, 0)">
The default background color for odd rows.
</theme_item>
- <theme_item name="table_vseparation" type="int" default="3">
+ <theme_item name="table_vseparation" data_type="constant" type="int" default="3">
The vertical separation of elements in a table.
</theme_item>
</theme_items>
diff --git a/doc/classes/RigidBody2D.xml b/doc/classes/RigidBody2D.xml
index 64573b7282..db16552db3 100644
--- a/doc/classes/RigidBody2D.xml
+++ b/doc/classes/RigidBody2D.xml
@@ -17,85 +17,66 @@
</tutorials>
<methods>
<method name="_integrate_forces" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="state" type="PhysicsDirectBodyState2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="state" type="PhysicsDirectBodyState2D" />
<description>
Allows you to read and safely modify the simulation state for the object. Use this instead of [method Node._physics_process] if you need to directly change the body's [code]position[/code] or other physics properties. By default, it works in addition to the usual physics behavior, but [member custom_integrator] allows you to disable the default behavior and write custom force integration for a body.
</description>
</method>
<method name="add_central_force">
- <return type="void">
- </return>
- <argument index="0" name="force" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="force" type="Vector2" />
<description>
Adds a constant directional force without affecting rotation.
</description>
</method>
<method name="add_force">
- <return type="void">
- </return>
- <argument index="0" name="force" type="Vector2">
- </argument>
- <argument index="1" name="position" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="force" type="Vector2" />
+ <argument index="1" name="position" type="Vector2" default="Vector2(0, 0)" />
<description>
Adds a positioned force to the body. Both the force and the offset from the body origin are in global coordinates.
</description>
</method>
<method name="add_torque">
- <return type="void">
- </return>
- <argument index="0" name="torque" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="torque" type="float" />
<description>
Adds a constant rotational force.
</description>
</method>
<method name="apply_central_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector2" default="Vector2(0, 0)" />
<description>
Applies a directional impulse without affecting rotation.
</description>
</method>
<method name="apply_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector2">
- </argument>
- <argument index="1" name="position" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector2" />
+ <argument index="1" name="position" type="Vector2" default="Vector2(0, 0)" />
<description>
Applies a positioned impulse to the body. An impulse is time-independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason it should only be used when simulating one-time impacts (use the "_force" functions otherwise). The position uses the rotation of the global coordinate system, but is centered at the object's origin.
</description>
</method>
<method name="apply_torque_impulse">
- <return type="void">
- </return>
- <argument index="0" name="torque" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="torque" type="float" />
<description>
Applies a rotational impulse to the body.
</description>
</method>
<method name="get_colliding_bodies" qualifiers="const">
- <return type="Node2D[]">
- </return>
+ <return type="Node2D[]" />
<description>
Returns a list of the bodies colliding with this one. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions.
[b]Note:[/b] The result of this test is not immediate after moving objects. For performance, list of collisions is updated once per frame and before the physics step. Consider using signals instead.
</description>
</method>
<method name="set_axis_velocity">
- <return type="void">
- </return>
- <argument index="0" name="axis_velocity" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="axis_velocity" type="Vector2" />
<description>
Sets the body's velocity on the given axis. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.
</description>
@@ -161,30 +142,24 @@
</members>
<signals>
<signal name="body_entered">
- <argument index="0" name="body" type="Node">
- </argument>
+ <argument index="0" name="body" type="Node" />
<description>
Emitted when a collision with another [PhysicsBody2D] or [TileMap] occurs. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody2D] or [TileMap].
</description>
</signal>
<signal name="body_exited">
- <argument index="0" name="body" type="Node">
- </argument>
+ <argument index="0" name="body" type="Node" />
<description>
Emitted when the collision with another [PhysicsBody2D] or [TileMap] ends. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody2D] or [TileMap].
</description>
</signal>
<signal name="body_shape_entered">
- <argument index="0" name="body_rid" type="RID">
- </argument>
- <argument index="1" name="body" type="Node">
- </argument>
- <argument index="2" name="body_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="body_rid" type="RID" />
+ <argument index="1" name="body" type="Node" />
+ <argument index="2" name="body_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when one of this RigidBody2D's [Shape2D]s collides with another [PhysicsBody2D] or [TileMap]'s [Shape2D]s. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
@@ -194,14 +169,10 @@
</description>
</signal>
<signal name="body_shape_exited">
- <argument index="0" name="body_rid" type="RID">
- </argument>
- <argument index="1" name="body" type="Node">
- </argument>
- <argument index="2" name="body_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="body_rid" type="RID" />
+ <argument index="1" name="body" type="Node" />
+ <argument index="2" name="body_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when the collision between one of this RigidBody2D's [Shape2D]s and another [PhysicsBody2D] or [TileMap]'s [Shape2D]s ends. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [TileMap]s are detected if the [TileSet] has Collision [Shape2D]s.
[code]body_id[/code] the [RID] of the other [PhysicsBody2D] or [TileSet]'s [CollisionObject2D] used by the [PhysicsServer2D].
diff --git a/doc/classes/RigidBody3D.xml b/doc/classes/RigidBody3D.xml
index fb2b9690a3..f4299335bf 100644
--- a/doc/classes/RigidBody3D.xml
+++ b/doc/classes/RigidBody3D.xml
@@ -17,95 +17,75 @@
</tutorials>
<methods>
<method name="_integrate_forces" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="state" type="PhysicsDirectBodyState3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="state" type="PhysicsDirectBodyState3D" />
<description>
Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default, it works in addition to the usual physics behavior, but the [member custom_integrator] property allows you to disable the default behavior and do fully custom force integration for a body.
</description>
</method>
<method name="add_central_force">
- <return type="void">
- </return>
- <argument index="0" name="force" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="force" type="Vector3" />
<description>
Adds a constant directional force (i.e. acceleration) without affecting rotation.
This is equivalent to [code]add_force(force, Vector3(0,0,0))[/code].
</description>
</method>
<method name="add_force">
- <return type="void">
- </return>
- <argument index="0" name="force" type="Vector3">
- </argument>
- <argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="force" type="Vector3" />
+ <argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
Adds a constant directional force (i.e. acceleration).
The position uses the rotation of the global coordinate system, but is centered at the object's origin.
</description>
</method>
<method name="add_torque">
- <return type="void">
- </return>
- <argument index="0" name="torque" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="torque" type="Vector3" />
<description>
Adds a constant rotational force (i.e. a motor) without affecting position.
</description>
</method>
<method name="apply_central_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector3" />
<description>
Applies a directional impulse without affecting rotation.
This is equivalent to [code]apply_impulse(Vector3(0,0,0), impulse)[/code].
</description>
</method>
<method name="apply_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector3">
- </argument>
- <argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector3" />
+ <argument index="1" name="position" type="Vector3" default="Vector3(0, 0, 0)" />
<description>
Applies a positioned impulse to the body. An impulse is time independent! Applying an impulse every frame would result in a framerate-dependent force. For this reason it should only be used when simulating one-time impacts. The position uses the rotation of the global coordinate system, but is centered at the object's origin.
</description>
</method>
<method name="apply_torque_impulse">
- <return type="void">
- </return>
- <argument index="0" name="impulse" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="impulse" type="Vector3" />
<description>
Applies a torque impulse which will be affected by the body mass and shape. This will rotate the body around the [code]impulse[/code] vector passed.
</description>
</method>
<method name="get_colliding_bodies" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns a list of the bodies colliding with this one. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions.
[b]Note:[/b] The result of this test is not immediate after moving objects. For performance, list of collisions is updated once per frame and before the physics step. Consider using signals instead.
</description>
</method>
<method name="get_inverse_inertia_tensor" qualifiers="const">
- <return type="Basis">
- </return>
+ <return type="Basis" />
<description>
Returns the inverse inertia tensor basis. This is used to calculate the angular acceleration resulting from a torque applied to the [RigidBody3D].
</description>
</method>
<method name="set_axis_velocity">
- <return type="void">
- </return>
- <argument index="0" name="axis_velocity" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="axis_velocity" type="Vector3" />
<description>
Sets an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.
</description>
@@ -162,30 +142,24 @@
</members>
<signals>
<signal name="body_entered">
- <argument index="0" name="body" type="Node">
- </argument>
+ <argument index="0" name="body" type="Node" />
<description>
Emitted when a collision with another [PhysicsBody3D] or [GridMap] occurs. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody3D] or [GridMap].
</description>
</signal>
<signal name="body_exited">
- <argument index="0" name="body" type="Node">
- </argument>
+ <argument index="0" name="body" type="Node" />
<description>
Emitted when the collision with another [PhysicsBody3D] or [GridMap] ends. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
[code]body[/code] the [Node], if it exists in the tree, of the other [PhysicsBody3D] or [GridMap].
</description>
</signal>
<signal name="body_shape_entered">
- <argument index="0" name="body_rid" type="RID">
- </argument>
- <argument index="1" name="body" type="Node">
- </argument>
- <argument index="2" name="body_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="body_rid" type="RID" />
+ <argument index="1" name="body" type="Node" />
+ <argument index="2" name="body_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when one of this RigidBody3D's [Shape3D]s collides with another [PhysicsBody3D] or [GridMap]'s [Shape3D]s. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
[code]body_id[/code] the [RID] of the other [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D].
@@ -196,14 +170,10 @@
</description>
</signal>
<signal name="body_shape_exited">
- <argument index="0" name="body_rid" type="RID">
- </argument>
- <argument index="1" name="body" type="Node">
- </argument>
- <argument index="2" name="body_shape" type="int">
- </argument>
- <argument index="3" name="local_shape" type="int">
- </argument>
+ <argument index="0" name="body_rid" type="RID" />
+ <argument index="1" name="body" type="Node" />
+ <argument index="2" name="body_shape" type="int" />
+ <argument index="3" name="local_shape" type="int" />
<description>
Emitted when the collision between one of this RigidBody3D's [Shape3D]s and another [PhysicsBody3D] or [GridMap]'s [Shape3D]s ends. Requires [member contact_monitor] to be set to [code]true[/code] and [member contacts_reported] to be set high enough to detect all the collisions. [GridMap]s are detected if the [MeshLibrary] has Collision [Shape3D]s.
[code]body_id[/code] the [RID] of the other [PhysicsBody3D] or [MeshLibrary]'s [CollisionObject3D] used by the [PhysicsServer3D]. [GridMap]s are detected if the Meshes have [Shape3D]s.
diff --git a/doc/classes/SceneState.xml b/doc/classes/SceneState.xml
index 6d804cc697..1c3bac9270 100644
--- a/doc/classes/SceneState.xml
+++ b/doc/classes/SceneState.xml
@@ -11,187 +11,146 @@
</tutorials>
<methods>
<method name="get_connection_binds" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the list of bound parameters for the signal at [code]idx[/code].
</description>
</method>
<method name="get_connection_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of signal connections in the scene.
The [code]idx[/code] argument used to query connection metadata in other [code]get_connection_*[/code] methods in the interval [code][0, get_connection_count() - 1][/code].
</description>
</method>
<method name="get_connection_flags" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the connection flags for the signal at [code]idx[/code]. See [enum Object.ConnectFlags] constants.
</description>
</method>
<method name="get_connection_method" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the method connected to the signal at [code]idx[/code].
</description>
</method>
<method name="get_connection_signal" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the name of the signal at [code]idx[/code].
</description>
</method>
<method name="get_connection_source" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the path to the node that owns the signal at [code]idx[/code], relative to the root node.
</description>
</method>
<method name="get_connection_target" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the path to the node that owns the method connected to the signal at [code]idx[/code], relative to the root node.
</description>
</method>
<method name="get_node_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of nodes in the scene.
The [code]idx[/code] argument used to query node data in other [code]get_node_*[/code] methods in the interval [code][0, get_node_count() - 1][/code].
</description>
</method>
<method name="get_node_groups" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the list of group names associated with the node at [code]idx[/code].
</description>
</method>
<method name="get_node_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the node's index, which is its position relative to its siblings. This is only relevant and saved in scenes for cases where new nodes are added to an instantiated or inherited scene among siblings from the base scene. Despite the name, this index is not related to the [code]idx[/code] argument used here and in other methods.
</description>
</method>
<method name="get_node_instance" qualifiers="const">
- <return type="PackedScene">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="PackedScene" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns a [PackedScene] for the node at [code]idx[/code] (i.e. the whole branch starting at this node, with its child nodes and resources), or [code]null[/code] if the node is not an instance.
</description>
</method>
<method name="get_node_instance_placeholder" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the path to the represented scene file if the node at [code]idx[/code] is an [InstancePlaceholder].
</description>
</method>
<method name="get_node_name" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the name of the node at [code]idx[/code].
</description>
</method>
<method name="get_node_owner_path" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the path to the owner of the node at [code]idx[/code], relative to the root node.
</description>
</method>
<method name="get_node_path" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="for_parent" type="bool" default="false">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="for_parent" type="bool" default="false" />
<description>
Returns the path to the node at [code]idx[/code].
If [code]for_parent[/code] is [code]true[/code], returns the path of the [code]idx[/code] node's parent instead.
</description>
</method>
<method name="get_node_property_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the number of exported or overridden properties for the node at [code]idx[/code].
The [code]prop_idx[/code] argument used to query node property data in other [code]get_node_property_*[/code] methods in the interval [code][0, get_node_property_count() - 1][/code].
</description>
</method>
<method name="get_node_property_name" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="prop_idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="prop_idx" type="int" />
<description>
Returns the name of the property at [code]prop_idx[/code] for the node at [code]idx[/code].
</description>
</method>
<method name="get_node_property_value" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
- <argument index="1" name="prop_idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="idx" type="int" />
+ <argument index="1" name="prop_idx" type="int" />
<description>
Returns the value of the property at [code]prop_idx[/code] for the node at [code]idx[/code].
</description>
</method>
<method name="get_node_type" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the type of the node at [code]idx[/code].
</description>
</method>
<method name="is_node_instance_placeholder" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns [code]true[/code] if the node at [code]idx[/code] is an [InstancePlaceholder].
</description>
diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml
index bf51b4dfa7..59e3190213 100644
--- a/doc/classes/SceneTree.xml
+++ b/doc/classes/SceneTree.xml
@@ -14,36 +14,27 @@
</tutorials>
<methods>
<method name="call_group" qualifiers="vararg">
- <return type="Variant">
- </return>
- <argument index="0" name="group" type="StringName">
- </argument>
- <argument index="1" name="method" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="group" type="StringName" />
+ <argument index="1" name="method" type="StringName" />
<description>
Calls [code]method[/code] on each member of the given group. You can pass arguments to [code]method[/code] by specifying them at the end of the method call.
[b]Note:[/b] [method call_group] will always call methods with an one-frame delay, in a way similar to [method Object.call_deferred]. To call methods immediately, use [method call_group_flags] with the [constant GROUP_CALL_REALTIME] flag.
</description>
</method>
<method name="call_group_flags" qualifiers="vararg">
- <return type="Variant">
- </return>
- <argument index="0" name="flags" type="int">
- </argument>
- <argument index="1" name="group" type="StringName">
- </argument>
- <argument index="2" name="method" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="flags" type="int" />
+ <argument index="1" name="group" type="StringName" />
+ <argument index="2" name="method" type="StringName" />
<description>
Calls [code]method[/code] on each member of the given group, respecting the given [enum GroupCallFlags]. You can pass arguments to [code]method[/code] by specifying them at the end of the method call.
[b]Note:[/b] Group call flags are used to control the method calling behavior. If the [constant GROUP_CALL_REALTIME] flag is present in the [code]flags[/code] argument, methods will be called immediately. If this flag isn't present in [code]flags[/code], methods will be called with a one-frame delay in a way similar to [method call_group].
</description>
</method>
<method name="change_scene">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Changes the running scene to the one at the given [code]path[/code], after loading it into a [PackedScene] and creating a new instance.
Returns [constant OK] on success, [constant ERR_CANT_OPEN] if the [code]path[/code] cannot be loaded into a [PackedScene], or [constant ERR_CANT_CREATE] if that scene cannot be instantiated.
@@ -51,10 +42,8 @@
</description>
</method>
<method name="change_scene_to">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="packed_scene" type="PackedScene">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="packed_scene" type="PackedScene" />
<description>
Changes the running scene to a new instance of the given [PackedScene].
Returns [constant OK] on success or [constant ERR_CANT_CREATE] if the scene cannot be instantiated.
@@ -62,12 +51,9 @@
</description>
</method>
<method name="create_timer">
- <return type="SceneTreeTimer">
- </return>
- <argument index="0" name="time_sec" type="float">
- </argument>
- <argument index="1" name="process_always" type="bool" default="true">
- </argument>
+ <return type="SceneTreeTimer" />
+ <argument index="0" name="time_sec" type="float" />
+ <argument index="1" name="process_always" type="bool" default="true" />
<description>
Returns a [SceneTreeTimer] which will [signal SceneTreeTimer.timeout] after the given time in seconds elapsed in this [SceneTree]. If [code]process_always[/code] is set to [code]false[/code], pausing the [SceneTree] will also pause the timer.
Commonly used to create a one-shot delay timer as in the following example:
@@ -91,97 +77,76 @@
</description>
</method>
<method name="create_tween">
- <return type="Tween">
- </return>
+ <return type="Tween" />
<description>
Creates and returns a new [Tween].
</description>
</method>
<method name="get_first_node_in_group">
- <return type="Node">
- </return>
- <argument index="0" name="group" type="StringName">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="group" type="StringName" />
<description>
</description>
</method>
<method name="get_frame" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the current frame number, i.e. the total frame count since the application started.
</description>
</method>
<method name="get_node_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of nodes in this [SceneTree].
</description>
</method>
<method name="get_nodes_in_group">
- <return type="Array">
- </return>
- <argument index="0" name="group" type="StringName">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="group" type="StringName" />
<description>
Returns a list of all nodes assigned to the given group.
</description>
</method>
<method name="get_processed_tweens">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
- Returns an array of currently exising [Tween]s in the [SceneTree] (both running and paused).
+ Returns an array of currently existing [Tween]s in the [SceneTree] (both running and paused).
</description>
</method>
<method name="has_group" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if the given group exists.
</description>
</method>
<method name="notify_group">
- <return type="void">
- </return>
- <argument index="0" name="group" type="StringName">
- </argument>
- <argument index="1" name="notification" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="group" type="StringName" />
+ <argument index="1" name="notification" type="int" />
<description>
Sends the given notification to all members of the [code]group[/code].
</description>
</method>
<method name="notify_group_flags">
- <return type="void">
- </return>
- <argument index="0" name="call_flags" type="int">
- </argument>
- <argument index="1" name="group" type="StringName">
- </argument>
- <argument index="2" name="notification" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="call_flags" type="int" />
+ <argument index="1" name="group" type="StringName" />
+ <argument index="2" name="notification" type="int" />
<description>
Sends the given notification to all members of the [code]group[/code], respecting the given [enum GroupCallFlags].
</description>
</method>
<method name="queue_delete">
- <return type="void">
- </return>
- <argument index="0" name="obj" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="obj" type="Object" />
<description>
Queues the given object for deletion, delaying the call to [method Object.free] to after the current frame.
</description>
</method>
<method name="quit">
- <return type="void">
- </return>
- <argument index="0" name="exit_code" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="exit_code" type="int" default="0" />
<description>
Quits the application at the end of the current iteration. Argument [code]exit_code[/code] can optionally be given (defaulting to 0) to customize the exit status code.
By convention, an exit code of [code]0[/code] indicates success whereas a non-zero exit code indicates an error.
@@ -190,56 +155,42 @@
</description>
</method>
<method name="reload_current_scene">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Reloads the currently active scene.
Returns [constant OK] on success, [constant ERR_UNCONFIGURED] if no [member current_scene] was defined yet, [constant ERR_CANT_OPEN] if [member current_scene] cannot be loaded into a [PackedScene], or [constant ERR_CANT_CREATE] if the scene cannot be instantiated.
</description>
</method>
<method name="set_auto_accept_quit">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enabled" type="bool" />
<description>
If [code]true[/code], the application automatically accepts quitting. Enabled by default.
For mobile platforms, see [method set_quit_on_go_back].
</description>
</method>
<method name="set_group">
- <return type="void">
- </return>
- <argument index="0" name="group" type="StringName">
- </argument>
- <argument index="1" name="property" type="String">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="group" type="StringName" />
+ <argument index="1" name="property" type="String" />
+ <argument index="2" name="value" type="Variant" />
<description>
Sets the given [code]property[/code] to [code]value[/code] on all members of the given group.
</description>
</method>
<method name="set_group_flags">
- <return type="void">
- </return>
- <argument index="0" name="call_flags" type="int">
- </argument>
- <argument index="1" name="group" type="StringName">
- </argument>
- <argument index="2" name="property" type="String">
- </argument>
- <argument index="3" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="call_flags" type="int" />
+ <argument index="1" name="group" type="StringName" />
+ <argument index="2" name="property" type="String" />
+ <argument index="3" name="value" type="Variant" />
<description>
Sets the given [code]property[/code] to [code]value[/code] on all members of the given group, respecting the given [enum GroupCallFlags].
</description>
</method>
<method name="set_quit_on_go_back">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enabled" type="bool" />
<description>
If [code]true[/code], the application quits automatically on going back (e.g. on Android). Enabled by default.
To handle 'Go Back' button when this option is disabled, use [constant DisplayServer.WINDOW_EVENT_GO_BACK_REQUEST].
@@ -277,38 +228,32 @@
</members>
<signals>
<signal name="files_dropped">
- <argument index="0" name="files" type="PackedStringArray">
- </argument>
- <argument index="1" name="screen" type="int">
- </argument>
+ <argument index="0" name="files" type="PackedStringArray" />
+ <argument index="1" name="screen" type="int" />
<description>
Emitted when files are dragged from the OS file manager and dropped in the game window. The arguments are a list of file paths and the identifier of the screen where the drag originated.
</description>
</signal>
<signal name="node_added">
- <argument index="0" name="node" type="Node">
- </argument>
+ <argument index="0" name="node" type="Node" />
<description>
Emitted whenever a node is added to the [SceneTree].
</description>
</signal>
<signal name="node_configuration_warning_changed">
- <argument index="0" name="node" type="Node">
- </argument>
+ <argument index="0" name="node" type="Node" />
<description>
Emitted when a node's configuration changed. Only emitted in [code]tool[/code] mode.
</description>
</signal>
<signal name="node_removed">
- <argument index="0" name="node" type="Node">
- </argument>
+ <argument index="0" name="node" type="Node" />
<description>
Emitted whenever a node is removed from the [SceneTree].
</description>
</signal>
<signal name="node_renamed">
- <argument index="0" name="node" type="Node">
- </argument>
+ <argument index="0" name="node" type="Node" />
<description>
Emitted whenever a node is renamed.
</description>
diff --git a/doc/classes/Script.xml b/doc/classes/Script.xml
index e7527d73e2..843d8ef9cb 100644
--- a/doc/classes/Script.xml
+++ b/doc/classes/Script.xml
@@ -12,100 +12,83 @@
</tutorials>
<methods>
<method name="can_instantiate" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the script can be instantiated.
</description>
</method>
<method name="get_base_script" qualifiers="const">
- <return type="Script">
- </return>
+ <return type="Script" />
<description>
Returns the script directly inherited by this script.
</description>
</method>
<method name="get_instance_base_type" qualifiers="const">
- <return type="StringName">
- </return>
+ <return type="StringName" />
<description>
Returns the script's base type.
</description>
</method>
<method name="get_property_default_value">
- <return type="Variant">
- </return>
- <argument index="0" name="property" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="property" type="StringName" />
<description>
Returns the default value of the specified property.
</description>
</method>
<method name="get_script_constant_map">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Returns a dictionary containing constant names and their values.
</description>
</method>
<method name="get_script_method_list">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the list of methods in this [Script].
</description>
</method>
<method name="get_script_property_list">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the list of properties in this [Script].
</description>
</method>
<method name="get_script_signal_list">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the list of user signals defined in this [Script].
</description>
</method>
<method name="has_script_signal" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="signal_name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="signal_name" type="StringName" />
<description>
Returns [code]true[/code] if the script, or a base class, defines a signal with the given name.
</description>
</method>
<method name="has_source_code" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the script contains non-empty source code.
</description>
</method>
<method name="instance_has" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="base_object" type="Object">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="base_object" type="Object" />
<description>
Returns [code]true[/code] if [code]base_object[/code] is an instance of this script.
</description>
</method>
<method name="is_tool" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the script is a tool script. A tool script can run in the editor.
</description>
</method>
<method name="reload">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="keep_state" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="keep_state" type="bool" default="false" />
<description>
Reloads the script's class implementation. Returns an error code.
</description>
diff --git a/doc/classes/ScriptCreateDialog.xml b/doc/classes/ScriptCreateDialog.xml
index 7185213c44..189bfdc3b8 100644
--- a/doc/classes/ScriptCreateDialog.xml
+++ b/doc/classes/ScriptCreateDialog.xml
@@ -28,16 +28,11 @@
</tutorials>
<methods>
<method name="config">
- <return type="void">
- </return>
- <argument index="0" name="inherits" type="String">
- </argument>
- <argument index="1" name="path" type="String">
- </argument>
- <argument index="2" name="built_in_enabled" type="bool" default="true">
- </argument>
- <argument index="3" name="load_enabled" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="inherits" type="String" />
+ <argument index="1" name="path" type="String" />
+ <argument index="2" name="built_in_enabled" type="bool" default="true" />
+ <argument index="3" name="load_enabled" type="bool" default="true" />
<description>
Prefills required fields to configure the ScriptCreateDialog for use.
</description>
@@ -49,8 +44,7 @@
</members>
<signals>
<signal name="script_created">
- <argument index="0" name="script" type="Script">
- </argument>
+ <argument index="0" name="script" type="Script" />
<description>
Emitted when the user clicks the OK button.
</description>
diff --git a/doc/classes/ScriptEditor.xml b/doc/classes/ScriptEditor.xml
index 31dbf7453f..628be54e1d 100644
--- a/doc/classes/ScriptEditor.xml
+++ b/doc/classes/ScriptEditor.xml
@@ -10,68 +10,55 @@
</tutorials>
<methods>
<method name="get_current_editor" qualifiers="const">
- <return type="ScriptEditorBase">
- </return>
+ <return type="ScriptEditorBase" />
<description>
Returns the [ScriptEditorBase] object that the user is currently editing.
</description>
</method>
<method name="get_current_script">
- <return type="Script">
- </return>
+ <return type="Script" />
<description>
Returns a [Script] that is currently active in editor.
</description>
</method>
<method name="get_open_script_editors" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array with all [ScriptEditorBase] objects which are currently open in editor.
</description>
</method>
<method name="get_open_scripts" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array with all [Script] objects which are currently open in editor.
</description>
</method>
<method name="goto_line">
- <return type="void">
- </return>
- <argument index="0" name="line_number" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line_number" type="int" />
<description>
Goes to the specified line in the current script.
</description>
</method>
<method name="open_script_create_dialog">
- <return type="void">
- </return>
- <argument index="0" name="base_name" type="String">
- </argument>
- <argument index="1" name="base_path" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="base_name" type="String" />
+ <argument index="1" name="base_path" type="String" />
<description>
Opens the script create dialog. The script will extend [code]base_name[/code]. The file extension can be omitted from [code]base_path[/code]. It will be added based on the selected scripting language.
</description>
</method>
<method name="register_syntax_highlighter">
- <return type="void">
- </return>
- <argument index="0" name="syntax_highlighter" type="EditorSyntaxHighlighter">
- </argument>
+ <return type="void" />
+ <argument index="0" name="syntax_highlighter" type="EditorSyntaxHighlighter" />
<description>
Registers the [EditorSyntaxHighlighter] to the editor, the [EditorSyntaxHighlighter] will be available on all open scripts.
[b]Note:[/b] Does not apply to scripts that are already opened.
</description>
</method>
<method name="unregister_syntax_highlighter">
- <return type="void">
- </return>
- <argument index="0" name="syntax_highlighter" type="EditorSyntaxHighlighter">
- </argument>
+ <return type="void" />
+ <argument index="0" name="syntax_highlighter" type="EditorSyntaxHighlighter" />
<description>
Unregisters the [EditorSyntaxHighlighter] from the editor.
[b]Note:[/b] The [EditorSyntaxHighlighter] will still be applied to scripts that are already opened.
@@ -80,15 +67,13 @@
</methods>
<signals>
<signal name="editor_script_changed">
- <argument index="0" name="script" type="Script">
- </argument>
+ <argument index="0" name="script" type="Script" />
<description>
Emitted when user changed active script. Argument is a freshly activated [Script].
</description>
</signal>
<signal name="script_close">
- <argument index="0" name="script" type="Script">
- </argument>
+ <argument index="0" name="script" type="Script" />
<description>
Emitted when editor is about to close the active script. Argument is a [Script] that is going to be closed.
</description>
diff --git a/doc/classes/ScriptEditorBase.xml b/doc/classes/ScriptEditorBase.xml
index a135062bd8..0efcde5638 100644
--- a/doc/classes/ScriptEditorBase.xml
+++ b/doc/classes/ScriptEditorBase.xml
@@ -10,17 +10,14 @@
</tutorials>
<methods>
<method name="_add_syntax_highlighter" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="highlighter" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="highlighter" type="Object" />
<description>
Adds a [EditorSyntaxHighlighter] to the open script.
</description>
</method>
<method name="get_base_editor" qualifiers="const">
- <return type="Control">
- </return>
+ <return type="Control" />
<description>
Returns the underlying [Control] used for editing scripts. This can be either [CodeEdit] (for text scripts) or [GraphEdit] (for visual scripts).
</description>
@@ -33,8 +30,7 @@
</description>
</signal>
<signal name="go_to_help">
- <argument index="0" name="what" type="String">
- </argument>
+ <argument index="0" name="what" type="String" />
<description>
Emitted when the user requests a specific documentation page.
</description>
@@ -45,24 +41,20 @@
</description>
</signal>
<signal name="replace_in_files_requested">
- <argument index="0" name="text" type="String">
- </argument>
+ <argument index="0" name="text" type="String" />
<description>
Emitted when the user request to find and replace text in the file system. Not used by visual scripts.
</description>
</signal>
<signal name="request_help">
- <argument index="0" name="topic" type="String">
- </argument>
+ <argument index="0" name="topic" type="String" />
<description>
Emitted when the user requests contextual help.
</description>
</signal>
<signal name="request_open_script_at_line">
- <argument index="0" name="script" type="Object">
- </argument>
- <argument index="1" name="line" type="int">
- </argument>
+ <argument index="0" name="script" type="Object" />
+ <argument index="1" name="line" type="int" />
<description>
Emitted when the user requests a script.
</description>
@@ -73,8 +65,7 @@
</description>
</signal>
<signal name="search_in_files_requested">
- <argument index="0" name="text" type="String">
- </argument>
+ <argument index="0" name="text" type="String" />
<description>
Emitted when the user request to search text in the file system. Not used by visual scripts.
</description>
diff --git a/doc/classes/ScrollContainer.xml b/doc/classes/ScrollContainer.xml
index 60f3106b4b..953ab24748 100644
--- a/doc/classes/ScrollContainer.xml
+++ b/doc/classes/ScrollContainer.xml
@@ -12,24 +12,20 @@
</tutorials>
<methods>
<method name="ensure_control_visible">
- <return type="void">
- </return>
- <argument index="0" name="control" type="Control">
- </argument>
+ <return type="void" />
+ <argument index="0" name="control" type="Control" />
<description>
Ensures the given [code]control[/code] is visible (must be a direct or indirect child of the ScrollContainer). Used by [member follow_focus].
</description>
</method>
<method name="get_h_scrollbar">
- <return type="HScrollBar">
- </return>
+ <return type="HScrollBar" />
<description>
Returns the horizontal scrollbar [HScrollBar] of this [ScrollContainer].
</description>
</method>
<method name="get_v_scrollbar">
- <return type="VScrollBar">
- </return>
+ <return type="VScrollBar" />
<description>
Returns the vertical scrollbar [VScrollBar] of this [ScrollContainer].
</description>
@@ -76,7 +72,7 @@
<constants>
</constants>
<theme_items>
- <theme_item name="bg" type="StyleBox">
+ <theme_item name="bg" data_type="style" type="StyleBox">
The background [StyleBox] of the [ScrollContainer].
</theme_item>
</theme_items>
diff --git a/doc/classes/Semaphore.xml b/doc/classes/Semaphore.xml
index e8b405e52a..7794161ac4 100644
--- a/doc/classes/Semaphore.xml
+++ b/doc/classes/Semaphore.xml
@@ -11,22 +11,19 @@
</tutorials>
<methods>
<method name="post">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Lowers the [Semaphore], allowing one more thread in.
</description>
</method>
<method name="try_wait">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Like [method wait], but won't block, so if the value is zero, fails immediately and returns [constant ERR_BUSY]. If non-zero, it returns [constant OK] to report success.
</description>
</method>
<method name="wait">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Waits for the [Semaphore], if its value is zero, blocks until non-zero.
</description>
diff --git a/doc/classes/Shader.xml b/doc/classes/Shader.xml
index a717eba438..bc5457b8ce 100644
--- a/doc/classes/Shader.xml
+++ b/doc/classes/Shader.xml
@@ -12,39 +12,31 @@
</tutorials>
<methods>
<method name="get_default_texture_param" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="param" type="StringName">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="param" type="StringName" />
<description>
Returns the texture that is set as default for the specified parameter.
[b]Note:[/b] [code]param[/code] must match the name of the uniform in the code exactly.
</description>
</method>
<method name="get_mode" qualifiers="const">
- <return type="int" enum="Shader.Mode">
- </return>
+ <return type="int" enum="Shader.Mode" />
<description>
Returns the shader mode for the shader, either [constant MODE_CANVAS_ITEM], [constant MODE_SPATIAL] or [constant MODE_PARTICLES].
</description>
</method>
<method name="has_param" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns [code]true[/code] if the shader has this param defined as a uniform in its code.
[b]Note:[/b] [code]param[/code] must match the name of the uniform in the code exactly.
</description>
</method>
<method name="set_default_texture_param">
- <return type="void">
- </return>
- <argument index="0" name="param" type="StringName">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="StringName" />
+ <argument index="1" name="texture" type="Texture2D" />
<description>
Sets the default texture to be used with a texture uniform. The default is used if a texture is not set in the [ShaderMaterial].
[b]Note:[/b] [code]param[/code] must match the name of the uniform in the code exactly.
diff --git a/doc/classes/ShaderMaterial.xml b/doc/classes/ShaderMaterial.xml
index b1748703ff..fe3ddc1b60 100644
--- a/doc/classes/ShaderMaterial.xml
+++ b/doc/classes/ShaderMaterial.xml
@@ -11,39 +11,30 @@
</tutorials>
<methods>
<method name="get_shader_param" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="param" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="param" type="StringName" />
<description>
Returns the current value set for this material of a uniform in the shader.
</description>
</method>
<method name="property_can_revert">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="String" />
<description>
Returns [code]true[/code] if the property identified by [code]name[/code] can be reverted to a default value.
</description>
</method>
<method name="property_get_revert">
- <return type="Variant">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="name" type="String" />
<description>
Returns the default value of the material property with given [code]name[/code].
</description>
</method>
<method name="set_shader_param">
- <return type="void">
- </return>
- <argument index="0" name="param" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
Changes the value set for this material of a uniform in the shader. [b]Note:[/b] [code]param[/code] must match the name of the uniform in the code exactly.
</description>
diff --git a/doc/classes/Shape2D.xml b/doc/classes/Shape2D.xml
index 65a37314f6..c1191aa9de 100644
--- a/doc/classes/Shape2D.xml
+++ b/doc/classes/Shape2D.xml
@@ -11,76 +11,53 @@
</tutorials>
<methods>
<method name="collide">
- <return type="bool">
- </return>
- <argument index="0" name="local_xform" type="Transform2D">
- </argument>
- <argument index="1" name="with_shape" type="Shape2D">
- </argument>
- <argument index="2" name="shape_xform" type="Transform2D">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="local_xform" type="Transform2D" />
+ <argument index="1" name="with_shape" type="Shape2D" />
+ <argument index="2" name="shape_xform" type="Transform2D" />
<description>
Returns [code]true[/code] if this shape is colliding with another.
This method needs the transformation matrix for this shape ([code]local_xform[/code]), the shape to check collisions with ([code]with_shape[/code]), and the transformation matrix of that shape ([code]shape_xform[/code]).
</description>
</method>
<method name="collide_and_get_contacts">
- <return type="Array">
- </return>
- <argument index="0" name="local_xform" type="Transform2D">
- </argument>
- <argument index="1" name="with_shape" type="Shape2D">
- </argument>
- <argument index="2" name="shape_xform" type="Transform2D">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="local_xform" type="Transform2D" />
+ <argument index="1" name="with_shape" type="Shape2D" />
+ <argument index="2" name="shape_xform" type="Transform2D" />
<description>
Returns a list of the points where this shape touches another. If there are no collisions the list is empty.
This method needs the transformation matrix for this shape ([code]local_xform[/code]), the shape to check collisions with ([code]with_shape[/code]), and the transformation matrix of that shape ([code]shape_xform[/code]).
</description>
</method>
<method name="collide_with_motion">
- <return type="bool">
- </return>
- <argument index="0" name="local_xform" type="Transform2D">
- </argument>
- <argument index="1" name="local_motion" type="Vector2">
- </argument>
- <argument index="2" name="with_shape" type="Shape2D">
- </argument>
- <argument index="3" name="shape_xform" type="Transform2D">
- </argument>
- <argument index="4" name="shape_motion" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="local_xform" type="Transform2D" />
+ <argument index="1" name="local_motion" type="Vector2" />
+ <argument index="2" name="with_shape" type="Shape2D" />
+ <argument index="3" name="shape_xform" type="Transform2D" />
+ <argument index="4" name="shape_motion" type="Vector2" />
<description>
Returns whether this shape would collide with another, if a given movement was applied.
This method needs the transformation matrix for this shape ([code]local_xform[/code]), the movement to test on this shape ([code]local_motion[/code]), the shape to check collisions with ([code]with_shape[/code]), the transformation matrix of that shape ([code]shape_xform[/code]), and the movement to test onto the other object ([code]shape_motion[/code]).
</description>
</method>
<method name="collide_with_motion_and_get_contacts">
- <return type="Array">
- </return>
- <argument index="0" name="local_xform" type="Transform2D">
- </argument>
- <argument index="1" name="local_motion" type="Vector2">
- </argument>
- <argument index="2" name="with_shape" type="Shape2D">
- </argument>
- <argument index="3" name="shape_xform" type="Transform2D">
- </argument>
- <argument index="4" name="shape_motion" type="Vector2">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="local_xform" type="Transform2D" />
+ <argument index="1" name="local_motion" type="Vector2" />
+ <argument index="2" name="with_shape" type="Shape2D" />
+ <argument index="3" name="shape_xform" type="Transform2D" />
+ <argument index="4" name="shape_motion" type="Vector2" />
<description>
Returns a list of the points where this shape would touch another, if a given movement was applied. If there are no collisions the list is empty.
This method needs the transformation matrix for this shape ([code]local_xform[/code]), the movement to test on this shape ([code]local_motion[/code]), the shape to check collisions with ([code]with_shape[/code]), the transformation matrix of that shape ([code]shape_xform[/code]), and the movement to test onto the other object ([code]shape_motion[/code]).
</description>
</method>
<method name="draw">
- <return type="void">
- </return>
- <argument index="0" name="canvas_item" type="RID">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas_item" type="RID" />
+ <argument index="1" name="color" type="Color" />
<description>
Draws a solid shape onto a [CanvasItem] with the [RenderingServer] API filled with the specified [code]color[/code]. The exact drawing method is specific for each shape and cannot be configured.
</description>
diff --git a/doc/classes/Shape3D.xml b/doc/classes/Shape3D.xml
index b5f70132d7..5fd16d8d36 100644
--- a/doc/classes/Shape3D.xml
+++ b/doc/classes/Shape3D.xml
@@ -11,8 +11,7 @@
</tutorials>
<methods>
<method name="get_debug_mesh">
- <return type="ArrayMesh">
- </return>
+ <return type="ArrayMesh" />
<description>
Returns the [ArrayMesh] used to draw the debug collision for this [Shape3D].
</description>
diff --git a/doc/classes/Shortcut.xml b/doc/classes/Shortcut.xml
index 55bbb083c9..d9f7f98888 100644
--- a/doc/classes/Shortcut.xml
+++ b/doc/classes/Shortcut.xml
@@ -5,39 +5,35 @@
</brief_description>
<description>
A shortcut for binding input.
- Shortcuts are commonly used for interacting with a [Control] element from a [InputEvent].
+ Shortcuts are commonly used for interacting with a [Control] element from an [InputEvent] (also known as hotkeys).
</description>
<tutorials>
</tutorials>
<methods>
<method name="get_as_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the shortcut's [InputEvent] as a [String].
</description>
</method>
- <method name="is_shortcut" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="event" type="InputEvent">
- </argument>
+ <method name="has_valid_event" qualifiers="const">
+ <return type="bool" />
<description>
- Returns [code]true[/code] if the shortcut's [InputEvent] equals [code]event[/code].
+ Returns whether the shortcut has a valid [member event] assigned to it.
</description>
</method>
- <method name="is_valid" qualifiers="const">
- <return type="bool">
- </return>
+ <method name="matches_event" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="event" type="InputEvent" />
<description>
- If [code]true[/code], this shortcut is valid.
+ Returns whether the shortcut's [member event] matches [code]event[/code].
</description>
</method>
</methods>
<members>
- <member name="shortcut" type="InputEvent" setter="set_shortcut" getter="get_shortcut">
+ <member name="event" type="InputEvent" setter="set_event" getter="get_event">
The shortcut's [InputEvent].
- Generally the [InputEvent] is a keyboard key, though it can be any [InputEvent].
+ Generally the [InputEvent] is a keyboard key, though it can be any [InputEvent], including an [InputEventAction].
</member>
</members>
<constants>
diff --git a/doc/classes/Signal.xml b/doc/classes/Signal.xml
index 1fd70a43fd..0e44abef42 100644
--- a/doc/classes/Signal.xml
+++ b/doc/classes/Signal.xml
@@ -9,117 +9,93 @@
</tutorials>
<methods>
<method name="Signal" qualifiers="constructor">
- <return type="Signal">
- </return>
+ <return type="Signal" />
<description>
Constructs a null [Signal] with no object nor signal name bound.
</description>
</method>
<method name="Signal" qualifiers="constructor">
- <return type="Signal">
- </return>
- <argument index="0" name="from" type="Signal">
- </argument>
+ <return type="Signal" />
+ <argument index="0" name="from" type="Signal" />
<description>
Constructs a [Signal] as a copy of the given [Signal].
</description>
</method>
<method name="Signal" qualifiers="constructor">
- <return type="Signal">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
- <argument index="1" name="signal" type="StringName">
- </argument>
+ <return type="Signal" />
+ <argument index="0" name="object" type="Object" />
+ <argument index="1" name="signal" type="StringName" />
<description>
Creates a new [Signal] with the name [code]signal[/code] in the specified [code]object[/code].
</description>
</method>
<method name="connect">
- <return type="int">
- </return>
- <argument index="0" name="callable" type="Callable">
- </argument>
- <argument index="1" name="binds" type="Array" default="[]">
- </argument>
- <argument index="2" name="flags" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="callable" type="Callable" />
+ <argument index="1" name="binds" type="Array" default="[]" />
+ <argument index="2" name="flags" type="int" default="0" />
<description>
Connects this signal to the specified [Callable], optionally providing binds and connection flags.
</description>
</method>
<method name="disconnect">
- <return type="void">
- </return>
- <argument index="0" name="callable" type="Callable">
- </argument>
+ <return type="void" />
+ <argument index="0" name="callable" type="Callable" />
<description>
Disconnects this signal from the specified [Callable].
</description>
</method>
<method name="emit" qualifiers="vararg const">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Emits this signal to all connected objects.
</description>
</method>
<method name="get_connections" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns the list of [Callable]s connected to this signal.
</description>
</method>
<method name="get_name" qualifiers="const">
- <return type="StringName">
- </return>
+ <return type="StringName" />
<description>
Returns the name of this signal.
</description>
</method>
<method name="get_object" qualifiers="const">
- <return type="Object">
- </return>
+ <return type="Object" />
<description>
Returns the object emitting this signal.
</description>
</method>
<method name="get_object_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the ID of the object emitting this signal (see [method Object.get_instance_id]).
</description>
</method>
<method name="is_connected" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="callable" type="Callable">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="callable" type="Callable" />
<description>
Returns [code]true[/code] if the specified [Callable] is connected to this signal.
</description>
</method>
<method name="is_null" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Signal">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Signal" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Signal">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Signal" />
<description>
</description>
</method>
diff --git a/doc/classes/Skeleton2D.xml b/doc/classes/Skeleton2D.xml
index 6665a4a9f6..828d24338b 100644
--- a/doc/classes/Skeleton2D.xml
+++ b/doc/classes/Skeleton2D.xml
@@ -11,77 +11,60 @@
</tutorials>
<methods>
<method name="execute_modifications">
- <return type="void">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
- <argument index="1" name="execution_mode" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="delta" type="float" />
+ <argument index="1" name="execution_mode" type="int" />
<description>
Executes all the modifications on the [SkeletonModificationStack2D], if the Skeleton3D has one assigned.
</description>
</method>
<method name="get_bone">
- <return type="Bone2D">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Bone2D" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns a [Bone2D] from the node hierarchy parented by Skeleton2D. The object to return is identified by the parameter [code]idx[/code]. Bones are indexed by descending the node hierarchy from top to bottom, adding the children of each branch before moving to the next sibling.
</description>
</method>
<method name="get_bone_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of [Bone2D] nodes in the node hierarchy parented by Skeleton2D.
</description>
</method>
<method name="get_bone_local_pose_override">
- <return type="Transform2D">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Returns the local pose override transform for [code]bone_idx[/code].
</description>
</method>
<method name="get_modification_stack" qualifiers="const">
- <return type="SkeletonModificationStack2D">
- </return>
+ <return type="SkeletonModificationStack2D" />
<description>
Returns the [SkeletonModificationStack2D] attached to this skeleton, if one exists.
</description>
</method>
<method name="get_skeleton" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the [RID] of a Skeleton2D instance.
</description>
</method>
<method name="set_bone_local_pose_override">
- <return type="void">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
- <argument index="1" name="override_pose" type="Transform2D">
- </argument>
- <argument index="2" name="strength" type="float">
- </argument>
- <argument index="3" name="persistent" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
+ <argument index="1" name="override_pose" type="Transform2D" />
+ <argument index="2" name="strength" type="float" />
+ <argument index="3" name="persistent" type="bool" />
<description>
Sets the local pose transform, [code]pose[/code], for the bone at [code]bone_idx[/code].
- [code]amount[/code] is the interpolation strengh that will be used when applying the pose, and [code]persistent[/code] determines if the applied pose will remain.
+ [code]amount[/code] is the interpolation strength that will be used when applying the pose, and [code]persistent[/code] determines if the applied pose will remain.
[b]Note:[/b] The pose transform needs to be a local transform relative to the [Bone2D] node at [code]bone_idx[/code]!
</description>
</method>
<method name="set_modification_stack">
- <return type="void">
- </return>
- <argument index="0" name="modification_stack" type="SkeletonModificationStack2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="modification_stack" type="SkeletonModificationStack2D" />
<description>
Sets the [SkeletonModificationStack2D] attached to this skeleton.
</description>
diff --git a/doc/classes/Skeleton3D.xml b/doc/classes/Skeleton3D.xml
index 136f2f0a63..0ec2f6b7ca 100644
--- a/doc/classes/Skeleton3D.xml
+++ b/doc/classes/Skeleton3D.xml
@@ -14,220 +14,173 @@
</tutorials>
<methods>
<method name="add_bone">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
<description>
Adds a bone, with name [code]name[/code]. [method get_bone_count] will become the bone index.
</description>
</method>
<method name="bone_transform_to_world_transform">
- <return type="Transform3D">
- </return>
- <argument index="0" name="bone_transform" type="Transform3D">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="bone_transform" type="Transform3D" />
<description>
Takes the given bone pose/transform and converts it to a world transform, relative to the [Skeleton3D] node.
This is useful for using the bone transform in calculations with transforms from [Node3D]-based nodes.
</description>
</method>
<method name="clear_bones">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clear all the bones in this skeleton.
</description>
</method>
<method name="clear_bones_global_pose_override">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes the global pose override on all bones in the skeleton.
</description>
</method>
<method name="find_bone" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="String" />
<description>
Returns the bone index that matches [code]name[/code] as its name.
</description>
</method>
<method name="get_bone_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of bones in the skeleton.
</description>
</method>
<method name="get_bone_custom_pose" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Returns the custom pose of the specified bone. Custom pose is applied on top of the rest pose.
</description>
</method>
<method name="get_bone_global_pose" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Returns the overall transform of the specified bone, with respect to the skeleton. Being relative to the skeleton frame, this is not the actual "global" transform of the bone.
</description>
</method>
<method name="get_bone_global_pose_no_override" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Returns the overall transform of the specified bone, with respect to the skeleton, but without any global pose overrides. Being relative to the skeleton frame, this is not the actual "global" transform of the bone.
</description>
</method>
<method name="get_bone_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Returns the name of the bone at index [code]index[/code].
</description>
</method>
<method name="get_bone_parent" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Returns the bone index which is the parent of the bone at [code]bone_idx[/code]. If -1, then bone has no parent.
[b]Note:[/b] The parent bone returned will always be less than [code]bone_idx[/code].
</description>
</method>
<method name="get_bone_pose" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Returns the pose transform of the specified bone. Pose is applied on top of the custom pose, which is applied on top the rest pose.
</description>
</method>
<method name="get_bone_process_orders">
- <return type="PackedInt32Array">
- </return>
+ <return type="PackedInt32Array" />
<description>
</description>
</method>
<method name="get_bone_rest" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Returns the rest transform for a bone [code]bone_idx[/code].
</description>
</method>
<method name="is_bone_rest_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Returns whether the bone rest for the bone at [code]bone_idx[/code] is disabled.
</description>
</method>
<method name="localize_rests">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Returns all bones in the skeleton to their rest poses.
</description>
</method>
<method name="physical_bones_add_collision_exception">
- <return type="void">
- </return>
- <argument index="0" name="exception" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="exception" type="RID" />
<description>
Adds a collision exception to the physical bone.
Works just like the [RigidBody3D] node.
</description>
</method>
<method name="physical_bones_remove_collision_exception">
- <return type="void">
- </return>
- <argument index="0" name="exception" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="exception" type="RID" />
<description>
Removes a collision exception to the physical bone.
Works just like the [RigidBody3D] node.
</description>
</method>
<method name="physical_bones_start_simulation">
- <return type="void">
- </return>
- <argument index="0" name="bones" type="StringName[]" default="[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bones" type="StringName[]" default="[]" />
<description>
Tells the [PhysicalBone3D] nodes in the Skeleton to start simulating and reacting to the physics world.
Optionally, a list of bone names can be passed-in, allowing only the passed-in bones to be simulated.
</description>
</method>
<method name="physical_bones_stop_simulation">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Tells the [PhysicalBone3D] nodes in the Skeleton to stop simulating.
</description>
</method>
<method name="register_skin">
- <return type="SkinReference">
- </return>
- <argument index="0" name="skin" type="Skin">
- </argument>
+ <return type="SkinReference" />
+ <argument index="0" name="skin" type="Skin" />
<description>
Binds the given Skin to the Skeleton.
</description>
</method>
<method name="set_bone_custom_pose">
- <return type="void">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
- <argument index="1" name="custom_pose" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
+ <argument index="1" name="custom_pose" type="Transform3D" />
<description>
Sets the custom pose transform, [code]custom_pose[/code], for the bone at [code]bone_idx[/code]. This pose is an addition to the bone rest pose.
[b]Note[/b]: The pose transform needs to be in bone space. Use [method world_transform_to_bone_transform] to convert a world transform, like one you can get from a [Node3D], to bone space.
</description>
</method>
<method name="set_bone_disable_rest">
- <return type="void">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
- <argument index="1" name="disable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
+ <argument index="1" name="disable" type="bool" />
<description>
Disables the rest pose for the bone at [code]bone_idx[/code] if [code]true[/code], enables the bone rest if [code]false[/code].
</description>
</method>
<method name="set_bone_global_pose_override">
- <return type="void">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
- <argument index="1" name="pose" type="Transform3D">
- </argument>
- <argument index="2" name="amount" type="float">
- </argument>
- <argument index="3" name="persistent" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
+ <argument index="1" name="pose" type="Transform3D" />
+ <argument index="2" name="amount" type="float" />
+ <argument index="3" name="persistent" type="bool" default="false" />
<description>
Sets the global pose transform, [code]pose[/code], for the bone at [code]bone_idx[/code].
[code]amount[/code] is the interpolation strength that will be used when applying the pose, and [code]persistent[/code] determines if the applied pose will remain.
@@ -235,64 +188,48 @@
</description>
</method>
<method name="set_bone_name">
- <return type="void">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
+ <argument index="1" name="name" type="String" />
<description>
</description>
</method>
<method name="set_bone_parent">
- <return type="void">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
- <argument index="1" name="parent_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
+ <argument index="1" name="parent_idx" type="int" />
<description>
Sets the bone index [code]parent_idx[/code] as the parent of the bone at [code]bone_idx[/code]. If -1, then bone has no parent.
[b]Note:[/b] [code]parent_idx[/code] must be less than [code]bone_idx[/code].
</description>
</method>
<method name="set_bone_pose">
- <return type="void">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
- <argument index="1" name="pose" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
+ <argument index="1" name="pose" type="Transform3D" />
<description>
Sets the pose transform for bone [code]bone_idx[/code].
[b]Note[/b]: The pose transform needs to be in bone space. Use [method world_transform_to_bone_transform] to convert a world transform, like one you can get from a [Node3D], to bone space.
</description>
</method>
<method name="set_bone_rest">
- <return type="void">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
- <argument index="1" name="rest" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
+ <argument index="1" name="rest" type="Transform3D" />
<description>
Sets the rest transform for bone [code]bone_idx[/code].
</description>
</method>
<method name="unparent_bone_and_rest">
- <return type="void">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Unparents the bone at [code]bone_idx[/code] and sets its rest position to that of its parent prior to being reset.
</description>
</method>
<method name="world_transform_to_bone_transform">
- <return type="Transform3D">
- </return>
- <argument index="0" name="world_transform" type="Transform3D">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="world_transform" type="Transform3D" />
<description>
Takes the given world transform, relative to the [Skeleton3D], and converts it to a bone pose/transform.
This is useful for using setting bone poses using transforms from [Node3D]-based nodes.
diff --git a/doc/classes/SkeletonIK3D.xml b/doc/classes/SkeletonIK3D.xml
index 138ebe4411..93cdd770cc 100644
--- a/doc/classes/SkeletonIK3D.xml
+++ b/doc/classes/SkeletonIK3D.xml
@@ -9,28 +9,23 @@
</tutorials>
<methods>
<method name="get_parent_skeleton" qualifiers="const">
- <return type="Skeleton3D">
- </return>
+ <return type="Skeleton3D" />
<description>
</description>
</method>
<method name="is_running">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="start">
- <return type="void">
- </return>
- <argument index="0" name="one_time" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="one_time" type="bool" default="false" />
<description>
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
diff --git a/doc/classes/SkeletonModification2D.xml b/doc/classes/SkeletonModification2D.xml
index 8596dac76e..cff55b6a17 100644
--- a/doc/classes/SkeletonModification2D.xml
+++ b/doc/classes/SkeletonModification2D.xml
@@ -11,81 +11,64 @@
</tutorials>
<methods>
<method name="_draw_editor_gizmo" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
- Used for drawing [b]editor-only[/b] modification gizmos. This function will only be called in the Godot editor and can be overriden to draw custom gizmos.
+ Used for drawing [b]editor-only[/b] modification gizmos. This function will only be called in the Godot editor and can be overridden to draw custom gizmos.
[b]Note:[/b] You will need to use the Skeleton2D from [method SkeletonModificationStack2D.get_skeleton] and it's draw functions, as the [SkeletonModification2D] resource cannot draw on its own.
</description>
</method>
<method name="_execute" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="delta" type="float" />
<description>
Executes the given modification. This is where the modification performs whatever function it is designed to do.
</description>
</method>
<method name="_setup_modification" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="modification_stack" type="SkeletonModificationStack2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="modification_stack" type="SkeletonModificationStack2D" />
<description>
Called when the modification is setup. This is where the modification performs initialization.
</description>
</method>
<method name="clamp_angle">
- <return type="float">
- </return>
- <argument index="0" name="angle" type="float">
- </argument>
- <argument index="1" name="min" type="float">
- </argument>
- <argument index="2" name="max" type="float">
- </argument>
- <argument index="3" name="invert" type="bool">
- </argument>
+ <return type="float" />
+ <argument index="0" name="angle" type="float" />
+ <argument index="1" name="min" type="float" />
+ <argument index="2" name="max" type="float" />
+ <argument index="3" name="invert" type="bool" />
<description>
Takes a angle and clamps it so it is within the passed-in [code]min[/code] and [code]max[/code] range. [code]invert[/code] will inversely clamp the angle, clamping it to the range outside of the given bounds.
</description>
</method>
<method name="get_editor_draw_gizmo" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether this modification will call [method _draw_editor_gizmo] in the Godot editor to draw modification-specific gizmos.
</description>
</method>
<method name="get_is_setup" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether this modification has been successfully setup or not.
</description>
</method>
<method name="get_modification_stack">
- <return type="SkeletonModificationStack2D">
- </return>
+ <return type="SkeletonModificationStack2D" />
<description>
Returns the [SkeletonModificationStack2D] that this modification is bound to. Through the modification stack, you can access the Skeleton3D the modification is operating on.
</description>
</method>
<method name="set_editor_draw_gizmo">
- <return type="void">
- </return>
- <argument index="0" name="draw_gizmo" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="draw_gizmo" type="bool" />
<description>
Sets whether this modification will call [method _draw_editor_gizmo] in the Godot editor to draw modification-specific gizmos.
</description>
</method>
<method name="set_is_setup">
- <return type="void">
- </return>
- <argument index="0" name="is_setup" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="is_setup" type="bool" />
<description>
Manually allows you to set the setup state of the modification. This function should only rarely be used, as the [SkeletonModificationStack2D] the modification is bound to should handle setting the modification up.
</description>
@@ -96,7 +79,7 @@
If [code]true[/code], the modification's [method _execute] function will be called by the [SkeletonModificationStack2D].
</member>
<member name="execution_mode" type="int" setter="set_execution_mode" getter="get_execution_mode" default="0">
- The execution mode for the modification. This tells the modification stack when to execute the modification. Some modifications have settings that are only availible in certain execution modes.
+ The execution mode for the modification. This tells the modification stack when to execute the modification. Some modifications have settings that are only available in certain execution modes.
</member>
</members>
<constants>
diff --git a/doc/classes/SkeletonModification2DCCDIK.xml b/doc/classes/SkeletonModification2DCCDIK.xml
index 014d366a42..f876615de7 100644
--- a/doc/classes/SkeletonModification2DCCDIK.xml
+++ b/doc/classes/SkeletonModification2DCCDIK.xml
@@ -4,7 +4,7 @@
A modification that uses CCDIK to manipulate a series of bones to reach a target in 2D.
</brief_description>
<description>
- This [SkeletonModification2D] uses an algorithm called [b]C[/b]yclic [b]C[/b]oordinate [b]D[/b]escent [b]I[/b]nverse [b]K[/b]inematics, or CCDIK, to maniuplate a chain of bones in a [Skeleton2D] so it reaches a defined target.
+ This [SkeletonModification2D] uses an algorithm called [b]C[/b]yclic [b]C[/b]oordinate [b]D[/b]escent [b]I[/b]nverse [b]K[/b]inematics, or CCDIK, to manipulate a chain of bones in a [Skeleton2D] so it reaches a defined target.
CCDIK works by rotating a set of bones, typically called a "bone chain", on a single axis. Each bone is rotated to face the target from the tip (by default), which over a chain of bones allow it to rotate properly to reach the target. Because the bones only rotate on a single axis, CCDIK [i]can[/i] look more robotic than other IK solvers.
[b]Note:[/b] The CCDIK modifier has [code]ccdik_joints[/code], which are the data objects that hold the data for each joint in the CCDIK chain. This is different from a bone! CCDIK joints hold the data needed for each bone in the bone chain used by CCDIK.
CCDIK also fully supports angle constraints, allowing for more control over how a solution is met.
@@ -13,142 +13,107 @@
</tutorials>
<methods>
<method name="get_ccdik_joint_bone2d_node" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the [Bone2D] node assigned to the CCDIK joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_ccdik_joint_bone_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the index of the [Bone2D] node assigned to the CCDIK joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_ccdik_joint_constraint_angle_invert" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns whether the CCDIK joint at [code]joint_idx[/code] uses an inverted joint constraint. See [method set_ccdik_joint_constraint_angle_invert] for details.
</description>
</method>
<method name="get_ccdik_joint_constraint_angle_max" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the maximum angle constraint for the joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_ccdik_joint_constraint_angle_min" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the minimum angle constraint for the joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_ccdik_joint_enable_constraint" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns whether angle constraints on the CCDIK joint at [code]joint_idx[/code] are enabled.
</description>
</method>
<method name="get_ccdik_joint_rotate_from_joint" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns whether the joint at [code]joint_idx[/code] is set to rotate from the joint, [code]true[/code], or to rotate from the tip, [code]false[/code]. The default is to rotate from the tip.
</description>
</method>
<method name="set_ccdik_joint_bone2d_node">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="bone2d_nodepath" type="NodePath">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="bone2d_nodepath" type="NodePath" />
<description>
Sets the [Bone2D] node assigned to the CCDIK joint at [code]joint_idx[/code].
</description>
</method>
<method name="set_ccdik_joint_bone_index">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="bone_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="bone_idx" type="int" />
<description>
Sets the bone index, [code]bone_index[/code], of the CCDIK joint at [code]joint_idx[/code]. When possible, this will also update the [code]bone2d_node[/code] of the CCDIK joint based on data provided by the linked skeleton.
</description>
</method>
<method name="set_ccdik_joint_constraint_angle_invert">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="invert" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="invert" type="bool" />
<description>
Sets whether the CCDIK joint at [code]joint_idx[/code] uses an inverted joint constraint.
An inverted joint constraint only constraints the CCDIK joint to the angles [i]outside of[/i] the inputted minimum and maximum angles. For this reason, it is referred to as an inverted joint constraint, as it constraints the joint to the outside of the inputted values.
</description>
</method>
<method name="set_ccdik_joint_constraint_angle_max">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="angle_max" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="angle_max" type="float" />
<description>
Sets the maximum angle constraint for the joint at [code]joint_idx[/code].
</description>
</method>
<method name="set_ccdik_joint_constraint_angle_min">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="angle_min" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="angle_min" type="float" />
<description>
Sets the minimum angle constraint for the joint at [code]joint_idx[/code].
</description>
</method>
<method name="set_ccdik_joint_enable_constraint">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="enable_constraint" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="enable_constraint" type="bool" />
<description>
Determines whether angle constraints on the CCDIK joint at [code]joint_idx[/code] are enabled. When [code]true[/code], constraints will be enabled and taken into account when solving.
</description>
</method>
<method name="set_ccdik_joint_rotate_from_joint">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="rotate_from_joint" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="rotate_from_joint" type="bool" />
<description>
Sets whether the joint at [code]joint_idx[/code] is set to rotate from the joint, [code]true[/code], or to rotate from the tip, [code]false[/code].
</description>
diff --git a/doc/classes/SkeletonModification2DFABRIK.xml b/doc/classes/SkeletonModification2DFABRIK.xml
index 62ab34b06f..314405498a 100644
--- a/doc/classes/SkeletonModification2DFABRIK.xml
+++ b/doc/classes/SkeletonModification2DFABRIK.xml
@@ -14,81 +14,61 @@
</tutorials>
<methods>
<method name="get_fabrik_joint_bone2d_node" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the [Bone2D] node assigned to the FABRIK joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_fabrik_joint_bone_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the index of the [Bone2D] node assigned to the FABRIK joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_fabrik_joint_magnet_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the magnet position vector for the joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_fabrik_joint_use_target_rotation" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns whether the joint is using the target's rotation rather than allowing FABRIK to rotate the joint. This option only applies to the tip/final joint in the chain.
</description>
</method>
<method name="set_fabrik_joint_bone2d_node">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="bone2d_nodepath" type="NodePath">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="bone2d_nodepath" type="NodePath" />
<description>
Sets the [Bone2D] node assigned to the FABRIK joint at [code]joint_idx[/code].
</description>
</method>
<method name="set_fabrik_joint_bone_index">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="bone_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="bone_idx" type="int" />
<description>
Sets the bone index, [code]bone_index[/code], of the FABRIK joint at [code]joint_idx[/code]. When possible, this will also update the [code]bone2d_node[/code] of the FABRIK joint based on data provided by the linked skeleton.
</description>
</method>
<method name="set_fabrik_joint_magnet_position">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="magnet_position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="magnet_position" type="Vector2" />
<description>
Sets the magnet position vector for the joint at [code]joint_idx[/code].
</description>
</method>
<method name="set_fabrik_joint_use_target_rotation">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="use_target_rotation" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="use_target_rotation" type="bool" />
<description>
Sets whether the joint at [code]joint_idx[/code] will use the target node's rotation rather than letting FABRIK rotate the node.
[b]Note:[/b] This option only works for the tip/final joint in the chain. For all other nodes, this option will be ignored.
diff --git a/doc/classes/SkeletonModification2DJiggle.xml b/doc/classes/SkeletonModification2DJiggle.xml
index ae46acd0d0..8d3732e225 100644
--- a/doc/classes/SkeletonModification2DJiggle.xml
+++ b/doc/classes/SkeletonModification2DJiggle.xml
@@ -12,193 +12,147 @@
</tutorials>
<methods>
<method name="get_collision_mask" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the collision mask used by the Jiggle modifier when collisions are enabled.
</description>
</method>
<method name="get_jiggle_joint_bone2d_node" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the [Bone2D] node assigned to the Jiggle joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_jiggle_joint_bone_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the index of the [Bone2D] node assigned to the Jiggle joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_jiggle_joint_damping" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the amount of damping of the Jiggle joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_jiggle_joint_gravity" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns a [Vector2] representing the amount of gravity the Jiggle joint at [code]joint_idx[/code] is influenced by.
</description>
</method>
<method name="get_jiggle_joint_mass" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the amount of mass of the jiggle joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_jiggle_joint_override" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
- Returns a boolean that indiciates whether the joint at [code]joint_idx[/code] is overriding the default Jiggle joint data defined in the modification.
+ Returns a boolean that indicates whether the joint at [code]joint_idx[/code] is overriding the default Jiggle joint data defined in the modification.
</description>
</method>
<method name="get_jiggle_joint_stiffness" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the stiffness of the Jiggle joint at [code]joint_idx[/code].
</description>
</method>
<method name="get_jiggle_joint_use_gravity" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
- Returns a boolean that indiciates whether the joint at [code]joint_idx[/code] is using gravity or not.
+ Returns a boolean that indicates whether the joint at [code]joint_idx[/code] is using gravity or not.
</description>
</method>
<method name="get_use_colliders" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether the jiggle modifier is taking physics colliders into account when solving.
</description>
</method>
<method name="set_collision_mask">
- <return type="void">
- </return>
- <argument index="0" name="collision_mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="collision_mask" type="int" />
<description>
Sets the collision mask that the Jiggle modifier will use when reacting to colliders, if the Jiggle modifier is set to take colliders into account.
</description>
</method>
<method name="set_jiggle_joint_bone2d_node">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="bone2d_node" type="NodePath">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="bone2d_node" type="NodePath" />
<description>
Sets the [Bone2D] node assigned to the Jiggle joint at [code]joint_idx[/code].
</description>
</method>
<method name="set_jiggle_joint_bone_index">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="bone_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="bone_idx" type="int" />
<description>
Sets the bone index, [code]bone_index[/code], of the Jiggle joint at [code]joint_idx[/code]. When possible, this will also update the [code]bone2d_node[/code] of the Jiggle joint based on data provided by the linked skeleton.
</description>
</method>
<method name="set_jiggle_joint_damping">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="damping" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="damping" type="float" />
<description>
Sets the amount of dampening of the Jiggle joint at [code]joint_idx[/code].
</description>
</method>
<method name="set_jiggle_joint_gravity">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="gravity" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="gravity" type="Vector2" />
<description>
Sets the gravity vector of the Jiggle joint at [code]joint_idx[/code].
</description>
</method>
<method name="set_jiggle_joint_mass">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="mass" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="mass" type="float" />
<description>
Sets the of mass of the Jiggle joint at [code]joint_idx[/code].
</description>
</method>
<method name="set_jiggle_joint_override">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="override" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="override" type="bool" />
<description>
Sets whether the Jiggle joint at [code]joint_idx[/code] should override the default Jiggle joint settings. Setting this to [code]true[/code] will make the joint use its own settings rather than the default ones attached to the modification.
</description>
</method>
<method name="set_jiggle_joint_stiffness">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="stiffness" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="stiffness" type="float" />
<description>
Sets the of stiffness of the Jiggle joint at [code]joint_idx[/code].
</description>
</method>
<method name="set_jiggle_joint_use_gravity">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="use_gravity" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="use_gravity" type="bool" />
<description>
Sets whether the Jiggle joint at [code]joint_idx[/code] should use gravity.
</description>
</method>
<method name="set_use_colliders">
- <return type="void">
- </return>
- <argument index="0" name="use_colliders" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="use_colliders" type="bool" />
<description>
If [code]true[/code], the Jiggle modifier will take colliders into account, keeping them from entering into these collision objects.
</description>
@@ -206,19 +160,19 @@
</methods>
<members>
<member name="damping" type="float" setter="set_damping" getter="get_damping" default="0.75">
- The default amount of dampening applied to the Jiggle joints, if they are not overriden. Higher values lead to more of the calculated velocity being applied.
+ The default amount of dampening applied to the Jiggle joints, if they are not overridden. Higher values lead to more of the calculated velocity being applied.
</member>
<member name="gravity" type="Vector2" setter="set_gravity" getter="get_gravity" default="Vector2(0, 6)">
- The default amount of gravity applied to the Jiggle joints, if they are not overriden.
+ The default amount of gravity applied to the Jiggle joints, if they are not overridden.
</member>
<member name="jiggle_data_chain_length" type="int" setter="set_jiggle_data_chain_length" getter="get_jiggle_data_chain_length" default="0">
The amount of Jiggle joints in the Jiggle modification.
</member>
<member name="mass" type="float" setter="set_mass" getter="get_mass" default="0.75">
- The default amount of mass assigned to the Jiggle joints, if they are not overriden. Higher values lead to faster movements and more overshooting.
+ The default amount of mass assigned to the Jiggle joints, if they are not overridden. Higher values lead to faster movements and more overshooting.
</member>
<member name="stiffness" type="float" setter="set_stiffness" getter="get_stiffness" default="3.0">
- The default amount of stiffness assigned to the Jiggle joints, if they are not overriden. Higher values act more like springs, quickly moving into the correct position.
+ The default amount of stiffness assigned to the Jiggle joints, if they are not overridden. Higher values act more like springs, quickly moving into the correct position.
</member>
<member name="target_nodepath" type="NodePath" setter="set_target_node" getter="get_target_node" default="NodePath(&quot;&quot;)">
The NodePath to the node that is the target for the Jiggle modification. This node is what the Jiggle chain will attempt to rotate the bone chain to.
diff --git a/doc/classes/SkeletonModification2DLookAt.xml b/doc/classes/SkeletonModification2DLookAt.xml
index b0fa0e5a01..998a897d20 100644
--- a/doc/classes/SkeletonModification2DLookAt.xml
+++ b/doc/classes/SkeletonModification2DLookAt.xml
@@ -10,82 +10,67 @@
</tutorials>
<methods>
<method name="get_additional_rotation" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the amount of additional rotation that is applied after the LookAt modification executes.
</description>
</method>
<method name="get_constraint_angle_invert" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether the constraints to this modification are inverted or not.
</description>
</method>
<method name="get_constraint_angle_max" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the constraint's maximum allowed angle.
</description>
</method>
<method name="get_constraint_angle_min" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the constraint's minimum allowed angle.
</description>
</method>
<method name="get_enable_constraint" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the LookAt modification is using constraints.
</description>
</method>
<method name="set_additional_rotation">
- <return type="void">
- </return>
- <argument index="0" name="rotation" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rotation" type="float" />
<description>
Sets the amount of additional rotation that is to be applied after executing the modification. This allows for offsetting the results by the inputted rotation amount.
</description>
</method>
<method name="set_constraint_angle_invert">
- <return type="void">
- </return>
- <argument index="0" name="invert" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="invert" type="bool" />
<description>
When [code]true[/code], the modification will use an inverted joint constraint.
An inverted joint constraint only constraints the [Bone2D] to the angles [i]outside of[/i] the inputted minimum and maximum angles. For this reason, it is referred to as an inverted joint constraint, as it constraints the joint to the outside of the inputted values.
</description>
</method>
<method name="set_constraint_angle_max">
- <return type="void">
- </return>
- <argument index="0" name="angle_max" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="angle_max" type="float" />
<description>
Sets the constraint's maximum allowed angle.
</description>
</method>
<method name="set_constraint_angle_min">
- <return type="void">
- </return>
- <argument index="0" name="angle_min" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="angle_min" type="float" />
<description>
Sets the constraint's minimum allowed angle.
</description>
</method>
<method name="set_enable_constraint">
- <return type="void">
- </return>
- <argument index="0" name="enable_constraint" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable_constraint" type="bool" />
<description>
Sets whether this modification will use constraints or not. When [code]true[/code], constraints will be applied when solving the LookAt modification.
</description>
diff --git a/doc/classes/SkeletonModification2DPhysicalBones.xml b/doc/classes/SkeletonModification2DPhysicalBones.xml
index 2547727097..e6bcb3c9d7 100644
--- a/doc/classes/SkeletonModification2DPhysicalBones.xml
+++ b/doc/classes/SkeletonModification2DPhysicalBones.xml
@@ -10,48 +10,38 @@
</tutorials>
<methods>
<method name="fetch_physical_bones">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Empties the list of [PhysicalBone2D] nodes and populates it will all [PhysicalBone2D] nodes that are children of the [Skeleton2D].
</description>
</method>
<method name="get_physical_bone_node" qualifiers="const">
- <return type="NodePath">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
+ <return type="NodePath" />
+ <argument index="0" name="joint_idx" type="int" />
<description>
Returns the [PhysicalBone2D] node at [code]joint_idx[/code].
</description>
</method>
<method name="set_physical_bone_node">
- <return type="void">
- </return>
- <argument index="0" name="joint_idx" type="int">
- </argument>
- <argument index="1" name="physicalbone2d_node" type="NodePath">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_idx" type="int" />
+ <argument index="1" name="physicalbone2d_node" type="NodePath" />
<description>
Sets the [PhysicalBone2D] node at [code]joint_idx[/code].
[b]Note:[/b] This is just the index used for this modification, not the bone index used in the [Skeleton2D].
</description>
</method>
<method name="start_simulation">
- <return type="void">
- </return>
- <argument index="0" name="bones" type="StringName[]" default="[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bones" type="StringName[]" default="[]" />
<description>
Tell the [PhysicalBone2D] nodes to start simulating and interacting with the physics world.
Optionally, an array of bone names can be passed to this function, and that will cause only [PhysicalBone2D] nodes with those names to start simulating.
</description>
</method>
<method name="stop_simulation">
- <return type="void">
- </return>
- <argument index="0" name="bones" type="StringName[]" default="[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bones" type="StringName[]" default="[]" />
<description>
Tell the [PhysicalBone2D] nodes to stop simulating and interacting with the physics world.
Optionally, an array of bone names can be passed to this function, and that will cause only [PhysicalBone2D] nodes with those names to stop simulating.
diff --git a/doc/classes/SkeletonModification2DStackHolder.xml b/doc/classes/SkeletonModification2DStackHolder.xml
index 313cf81482..e5d9f2194a 100644
--- a/doc/classes/SkeletonModification2DStackHolder.xml
+++ b/doc/classes/SkeletonModification2DStackHolder.xml
@@ -11,17 +11,14 @@
</tutorials>
<methods>
<method name="get_held_modification_stack" qualifiers="const">
- <return type="SkeletonModificationStack2D">
- </return>
+ <return type="SkeletonModificationStack2D" />
<description>
Returns the [SkeletonModificationStack2D] that this modification is holding.
</description>
</method>
<method name="set_held_modification_stack">
- <return type="void">
- </return>
- <argument index="0" name="held_modification_stack" type="SkeletonModificationStack2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="held_modification_stack" type="SkeletonModificationStack2D" />
<description>
Sets the [SkeletonModificationStack2D] that this modification is holding. This modification stack will then be executed when this modification is executed.
</description>
diff --git a/doc/classes/SkeletonModification2DTwoBoneIK.xml b/doc/classes/SkeletonModification2DTwoBoneIK.xml
index 554515556b..25ee981d5d 100644
--- a/doc/classes/SkeletonModification2DTwoBoneIK.xml
+++ b/doc/classes/SkeletonModification2DTwoBoneIK.xml
@@ -4,72 +4,60 @@
A modification that rotates two bones using the law of cosigns to reach the target.
</brief_description>
<description>
- This [SkeletonModification2D] uses an algorithm typically called TwoBoneIK. This algorithm works by leveraging the law of cosigns and the lengths of the bones to figure out what rotation the bones currently have, and what rotation they need to make a complete triangle, where the first bone, the second bone, and the target form the three verticies of the triangle. Because the algorithm works by making a triangle, it can only opperate on two bones.
+ This [SkeletonModification2D] uses an algorithm typically called TwoBoneIK. This algorithm works by leveraging the law of cosigns and the lengths of the bones to figure out what rotation the bones currently have, and what rotation they need to make a complete triangle, where the first bone, the second bone, and the target form the three vertices of the triangle. Because the algorithm works by making a triangle, it can only operate on two bones.
TwoBoneIK is great for arms, legs, and really any joints that can be represented by just two bones that bend to reach a target. This solver is more lightweight than [SkeletonModification2DFABRIK], but gives similar, natural looking results.
</description>
<tutorials>
</tutorials>
<methods>
<method name="get_joint_one_bone2d_node" qualifiers="const">
- <return type="NodePath">
- </return>
+ <return type="NodePath" />
<description>
Returns the [Bone2D] node that is being used as the first bone in the TwoBoneIK modification.
</description>
</method>
<method name="get_joint_one_bone_idx" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the index of the [Bone2D] node that is being used as the first bone in the TwoBoneIK modification.
</description>
</method>
<method name="get_joint_two_bone2d_node" qualifiers="const">
- <return type="NodePath">
- </return>
+ <return type="NodePath" />
<description>
Returns the [Bone2D] node that is being used as the second bone in the TwoBoneIK modification.
</description>
</method>
<method name="get_joint_two_bone_idx" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the index of the [Bone2D] node that is being used as the second bone in the TwoBoneIK modification.
</description>
</method>
<method name="set_joint_one_bone2d_node">
- <return type="void">
- </return>
- <argument index="0" name="bone2d_node" type="NodePath">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone2d_node" type="NodePath" />
<description>
Sets the [Bone2D] node that is being used as the first bone in the TwoBoneIK modification.
</description>
</method>
<method name="set_joint_one_bone_idx">
- <return type="void">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Sets the index of the [Bone2D] node that is being used as the first bone in the TwoBoneIK modification.
</description>
</method>
<method name="set_joint_two_bone2d_node">
- <return type="void">
- </return>
- <argument index="0" name="bone2d_node" type="NodePath">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone2d_node" type="NodePath" />
<description>
Sets the [Bone2D] node that is being used as the second bone in the TwoBoneIK modification.
</description>
</method>
<method name="set_joint_two_bone_idx">
- <return type="void">
- </return>
- <argument index="0" name="bone_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone_idx" type="int" />
<description>
Sets the index of the [Bone2D] node that is being used as the second bone in the TwoBoneIK modification.
</description>
diff --git a/doc/classes/SkeletonModificationStack2D.xml b/doc/classes/SkeletonModificationStack2D.xml
index 35b899fe08..97b8e3b945 100644
--- a/doc/classes/SkeletonModificationStack2D.xml
+++ b/doc/classes/SkeletonModificationStack2D.xml
@@ -12,81 +12,64 @@
</tutorials>
<methods>
<method name="add_modification">
- <return type="void">
- </return>
- <argument index="0" name="modification" type="SkeletonModification2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="modification" type="SkeletonModification2D" />
<description>
Adds the passed-in [SkeletonModification2D] to the stack.
</description>
</method>
<method name="delete_modification">
- <return type="void">
- </return>
- <argument index="0" name="mod_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mod_idx" type="int" />
<description>
Deletes the [SkeletonModification2D] at the index position [code]mod_idx[/code], if it exists.
</description>
</method>
<method name="enable_all_modifications">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enabled" type="bool" />
<description>
Enables all [SkeletonModification2D]s in the stack.
</description>
</method>
<method name="execute">
- <return type="void">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
- <argument index="1" name="execution_mode" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="delta" type="float" />
+ <argument index="1" name="execution_mode" type="int" />
<description>
Executes all of the [SkeletonModification2D]s in the stack that use the same execution mode as the passed-in [code]execution_mode[/code], starting from index [code]0[/code] to [member modification_count].
[b]Note:[/b] The order of the modifications can matter depending on the modifications. For example, modifications on a spine should operate before modifications on the arms in order to get proper results.
</description>
</method>
<method name="get_is_setup" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
- Returns a boolean that indiciates whether the modification stack is setup and can execute.
+ Returns a boolean that indicates whether the modification stack is setup and can execute.
</description>
</method>
<method name="get_modification" qualifiers="const">
- <return type="SkeletonModification2D">
- </return>
- <argument index="0" name="mod_idx" type="int">
- </argument>
+ <return type="SkeletonModification2D" />
+ <argument index="0" name="mod_idx" type="int" />
<description>
Returns the [SkeletonModification2D] at the passed-in index, [code]mod_idx[/code].
</description>
</method>
<method name="get_skeleton" qualifiers="const">
- <return type="Skeleton2D">
- </return>
+ <return type="Skeleton2D" />
<description>
Returns the [Skeleton2D] node that the SkeletonModificationStack2D is bound to.
</description>
</method>
<method name="set_modification">
- <return type="void">
- </return>
- <argument index="0" name="mod_idx" type="int">
- </argument>
- <argument index="1" name="modification" type="SkeletonModification2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mod_idx" type="int" />
+ <argument index="1" name="modification" type="SkeletonModification2D" />
<description>
Sets the modification at [code]mod_idx[/code] to the passed-in modification, [code]modification[/code].
</description>
</method>
<method name="setup">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sets up the modification stack so it can execute. This function should be called by [Skeleton2D] and shouldn't be manually called unless you know what you are doing.
</description>
diff --git a/doc/classes/Skin.xml b/doc/classes/Skin.xml
index f409b6c80c..67ca36f4d6 100644
--- a/doc/classes/Skin.xml
+++ b/doc/classes/Skin.xml
@@ -8,86 +8,64 @@
</tutorials>
<methods>
<method name="add_bind">
- <return type="void">
- </return>
- <argument index="0" name="bone" type="int">
- </argument>
- <argument index="1" name="pose" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bone" type="int" />
+ <argument index="1" name="pose" type="Transform3D" />
<description>
</description>
</method>
<method name="clear_binds">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="get_bind_bone" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="bind_index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="bind_index" type="int" />
<description>
</description>
</method>
<method name="get_bind_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_bind_name" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="bind_index" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="bind_index" type="int" />
<description>
</description>
</method>
<method name="get_bind_pose" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="bind_index" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="bind_index" type="int" />
<description>
</description>
</method>
<method name="set_bind_bone">
- <return type="void">
- </return>
- <argument index="0" name="bind_index" type="int">
- </argument>
- <argument index="1" name="bone" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bind_index" type="int" />
+ <argument index="1" name="bone" type="int" />
<description>
</description>
</method>
<method name="set_bind_count">
- <return type="void">
- </return>
- <argument index="0" name="bind_count" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bind_count" type="int" />
<description>
</description>
</method>
<method name="set_bind_name">
- <return type="void">
- </return>
- <argument index="0" name="bind_index" type="int">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bind_index" type="int" />
+ <argument index="1" name="name" type="StringName" />
<description>
</description>
</method>
<method name="set_bind_pose">
- <return type="void">
- </return>
- <argument index="0" name="bind_index" type="int">
- </argument>
- <argument index="1" name="pose" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bind_index" type="int" />
+ <argument index="1" name="pose" type="Transform3D" />
<description>
</description>
</method>
diff --git a/doc/classes/SkinReference.xml b/doc/classes/SkinReference.xml
index 3f8bc3be82..d0634c543c 100644
--- a/doc/classes/SkinReference.xml
+++ b/doc/classes/SkinReference.xml
@@ -8,14 +8,12 @@
</tutorials>
<methods>
<method name="get_skeleton" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="get_skin" qualifiers="const">
- <return type="Skin">
- </return>
+ <return type="Skin" />
<description>
</description>
</method>
diff --git a/doc/classes/SliderJoint3D.xml b/doc/classes/SliderJoint3D.xml
index ef9c9a48b6..dc9760b667 100644
--- a/doc/classes/SliderJoint3D.xml
+++ b/doc/classes/SliderJoint3D.xml
@@ -10,20 +10,15 @@
</tutorials>
<methods>
<method name="get_param" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="param" type="int" enum="SliderJoint3D.Param">
- </argument>
+ <return type="float" />
+ <argument index="0" name="param" type="int" enum="SliderJoint3D.Param" />
<description>
</description>
</method>
<method name="set_param">
- <return type="void">
- </return>
- <argument index="0" name="param" type="int" enum="SliderJoint3D.Param">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="param" type="int" enum="SliderJoint3D.Param" />
+ <argument index="1" name="value" type="float" />
<description>
</description>
</method>
diff --git a/doc/classes/SoftBody3D.xml b/doc/classes/SoftBody3D.xml
index b143c60d9d..53bd7e67bf 100644
--- a/doc/classes/SoftBody3D.xml
+++ b/doc/classes/SoftBody3D.xml
@@ -11,72 +11,56 @@
</tutorials>
<methods>
<method name="add_collision_exception_with">
- <return type="void">
- </return>
- <argument index="0" name="body" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="Node" />
<description>
Adds a body to the list of bodies that this body can't collide with.
</description>
</method>
<method name="get_collision_exceptions">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array of nodes that were added as collision exceptions for this body.
</description>
</method>
<method name="get_collision_layer_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns an individual bit on the collision mask.
</description>
</method>
<method name="get_collision_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns an individual bit on the collision mask.
</description>
</method>
<method name="get_physics_rid" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
</description>
</method>
<method name="remove_collision_exception_with">
- <return type="void">
- </return>
- <argument index="0" name="body" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="body" type="Node" />
<description>
Removes a body from the list of bodies that this body can't collide with.
</description>
</method>
<method name="set_collision_layer_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
Sets individual bits on the layer mask. Use this if you only need to change one layer's value.
</description>
</method>
<method name="set_collision_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
Sets individual bits on the collision mask. Use this if you only need to change one layer's value.
</description>
@@ -84,12 +68,12 @@
</methods>
<members>
<member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer" default="1">
- The physics layers this SoftBody3D is in.
- Collidable objects can exist in any of 32 different layers. These layers work like a tagging system, and are not visual. A collidable can use these layers to select with which objects it can collide, using the collision_mask property.
- A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
+ The physics layers this SoftBody3D [b]is in[/b]. Collision objects can exist in one or more of 32 different layers. See also [member collision_mask].
+ [b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
</member>
<member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask" default="1">
- The physics layers this SoftBody3D scans for collisions. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
+ The physics layers this SoftBody3D [b]scans[/b]. Collision objects can scan one or more of 32 different layers. See also [member collision_layer].
+ [b]Note:[/b] Object A can detect a contact with object B only if object B is in any of the layers that object A scans. See [url=https://docs.godotengine.org/en/latest/tutorials/physics/physics_introduction.html#collision-layers-and-masks]Collision layers and masks[/url] in the documentation for more information.
</member>
<member name="damping_coefficient" type="float" setter="set_damping_coefficient" getter="get_damping_coefficient" default="0.01">
</member>
diff --git a/doc/classes/SpinBox.xml b/doc/classes/SpinBox.xml
index 7e2481f458..4303fa52f1 100644
--- a/doc/classes/SpinBox.xml
+++ b/doc/classes/SpinBox.xml
@@ -30,15 +30,13 @@
</tutorials>
<methods>
<method name="apply">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Applies the current value of this [SpinBox].
</description>
</method>
<method name="get_line_edit">
- <return type="LineEdit">
- </return>
+ <return type="LineEdit" />
<description>
Returns the [LineEdit] instance from this [SpinBox]. You can use it to access properties and methods of [LineEdit].
</description>
@@ -61,7 +59,7 @@
<constants>
</constants>
<theme_items>
- <theme_item name="updown" type="Texture2D">
+ <theme_item name="updown" data_type="icon" type="Texture2D">
Sets a custom [Texture2D] for up and down arrows of the [SpinBox].
</theme_item>
</theme_items>
diff --git a/doc/classes/SplitContainer.xml b/doc/classes/SplitContainer.xml
index b3f85ce7e1..be49a99988 100644
--- a/doc/classes/SplitContainer.xml
+++ b/doc/classes/SplitContainer.xml
@@ -10,8 +10,7 @@
</tutorials>
<methods>
<method name="clamp_split_offset">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clamps the [member split_offset] value to not go outside the currently possible minimal and maximum values.
</description>
@@ -30,8 +29,7 @@
</members>
<signals>
<signal name="dragged">
- <argument index="0" name="offset" type="int">
- </argument>
+ <argument index="0" name="offset" type="int" />
<description>
Emitted when the dragger is dragged by user.
</description>
diff --git a/doc/classes/SpringArm3D.xml b/doc/classes/SpringArm3D.xml
index 3ffdbebae8..50aa3d39b8 100644
--- a/doc/classes/SpringArm3D.xml
+++ b/doc/classes/SpringArm3D.xml
@@ -13,33 +13,27 @@
</tutorials>
<methods>
<method name="add_excluded_object">
- <return type="void">
- </return>
- <argument index="0" name="RID" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="RID" type="RID" />
<description>
Adds the [PhysicsBody3D] object with the given [RID] to the list of [PhysicsBody3D] objects excluded from the collision check.
</description>
</method>
<method name="clear_excluded_objects">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the list of [PhysicsBody3D] objects excluded from the collision check.
</description>
</method>
<method name="get_hit_length">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the spring arm's current length.
</description>
</method>
<method name="remove_excluded_object">
- <return type="bool">
- </return>
- <argument index="0" name="RID" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="RID" type="RID" />
<description>
Removes the given [RID] from the list of [PhysicsBody3D] objects excluded from the collision check.
</description>
diff --git a/doc/classes/Sprite2D.xml b/doc/classes/Sprite2D.xml
index b419b003bf..0b26fdc055 100644
--- a/doc/classes/Sprite2D.xml
+++ b/doc/classes/Sprite2D.xml
@@ -11,8 +11,7 @@
</tutorials>
<methods>
<method name="get_rect" qualifiers="const">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Returns a [Rect2] representing the Sprite2D's boundary in local coordinates. Can be used to detect if the Sprite2D was clicked. Example:
[codeblocks]
@@ -41,10 +40,8 @@
</description>
</method>
<method name="is_pixel_opaque" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="pos" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="pos" type="Vector2" />
<description>
Returns [code]true[/code], if the pixel at the given position is opaque and [code]false[/code] in other case.
[b]Note:[/b] It also returns [code]false[/code], if the sprite's texture is [code]null[/code] or if the given position is invalid.
diff --git a/doc/classes/SpriteBase3D.xml b/doc/classes/SpriteBase3D.xml
index 3168e2d848..b723c9f4d4 100644
--- a/doc/classes/SpriteBase3D.xml
+++ b/doc/classes/SpriteBase3D.xml
@@ -10,35 +10,28 @@
</tutorials>
<methods>
<method name="generate_triangle_mesh" qualifiers="const">
- <return type="TriangleMesh">
- </return>
+ <return type="TriangleMesh" />
<description>
Returns a [TriangleMesh] with the sprite's vertices following its current configuration (such as its [member axis] and [member pixel_size]).
</description>
</method>
<method name="get_draw_flag" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="flag" type="int" enum="SpriteBase3D.DrawFlags">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="flag" type="int" enum="SpriteBase3D.DrawFlags" />
<description>
Returns the value of the specified flag.
</description>
</method>
<method name="get_item_rect" qualifiers="const">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Returns the rectangle representing this sprite.
</description>
</method>
<method name="set_draw_flag">
- <return type="void">
- </return>
- <argument index="0" name="flag" type="int" enum="SpriteBase3D.DrawFlags">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="flag" type="int" enum="SpriteBase3D.DrawFlags" />
+ <argument index="1" name="enabled" type="bool" />
<description>
If [code]true[/code], the specified flag will be enabled. See [enum SpriteBase3D.DrawFlags] for a list of flags.
</description>
diff --git a/doc/classes/SpriteFrames.xml b/doc/classes/SpriteFrames.xml
index 1c7d84c5a2..3bd40ff6f4 100644
--- a/doc/classes/SpriteFrames.xml
+++ b/doc/classes/SpriteFrames.xml
@@ -11,159 +11,120 @@
</tutorials>
<methods>
<method name="add_animation">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim" type="StringName" />
<description>
Adds a new animation to the library.
</description>
</method>
<method name="add_frame">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
- <argument index="1" name="frame" type="Texture2D">
- </argument>
- <argument index="2" name="at_position" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim" type="StringName" />
+ <argument index="1" name="frame" type="Texture2D" />
+ <argument index="2" name="at_position" type="int" default="-1" />
<description>
Adds a frame to the given animation.
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim" type="StringName" />
<description>
Removes all frames from the given animation.
</description>
</method>
<method name="clear_all">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all animations. A "default" animation will be created.
</description>
</method>
<method name="get_animation_loop" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="anim" type="StringName" />
<description>
Returns [code]true[/code] if the given animation is configured to loop when it finishes playing. Otherwise, returns [code]false[/code].
</description>
</method>
<method name="get_animation_names" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns an array containing the names associated to each animation. Values are placed in alphabetical order.
</description>
</method>
<method name="get_animation_speed" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
+ <return type="float" />
+ <argument index="0" name="anim" type="StringName" />
<description>
The animation's speed in frames per second.
</description>
</method>
<method name="get_frame" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="anim" type="StringName" />
+ <argument index="1" name="idx" type="int" />
<description>
Returns the animation's selected frame.
</description>
</method>
<method name="get_frame_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
+ <return type="int" />
+ <argument index="0" name="anim" type="StringName" />
<description>
Returns the number of frames in the animation.
</description>
</method>
<method name="has_animation" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="anim" type="StringName" />
<description>
If [code]true[/code], the named animation exists.
</description>
</method>
<method name="remove_animation">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim" type="StringName" />
<description>
Removes the given animation.
</description>
</method>
<method name="remove_frame">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim" type="StringName" />
+ <argument index="1" name="idx" type="int" />
<description>
Removes the animation's selected frame.
</description>
</method>
<method name="rename_animation">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
- <argument index="1" name="newname" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim" type="StringName" />
+ <argument index="1" name="newname" type="StringName" />
<description>
Changes the animation's name to [code]newname[/code].
</description>
</method>
<method name="set_animation_loop">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
- <argument index="1" name="loop" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim" type="StringName" />
+ <argument index="1" name="loop" type="bool" />
<description>
If [code]true[/code], the animation will loop.
</description>
</method>
<method name="set_animation_speed">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
- <argument index="1" name="speed" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim" type="StringName" />
+ <argument index="1" name="speed" type="float" />
<description>
The animation's speed in frames per second.
</description>
</method>
<method name="set_frame">
- <return type="void">
- </return>
- <argument index="0" name="anim" type="StringName">
- </argument>
- <argument index="1" name="idx" type="int">
- </argument>
- <argument index="2" name="txt" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="anim" type="StringName" />
+ <argument index="1" name="idx" type="int" />
+ <argument index="2" name="txt" type="Texture2D" />
<description>
Sets the texture of the given frame.
</description>
diff --git a/doc/classes/StreamPeer.xml b/doc/classes/StreamPeer.xml
index 5367a572f1..e3d77d22c5 100644
--- a/doc/classes/StreamPeer.xml
+++ b/doc/classes/StreamPeer.xml
@@ -10,205 +10,166 @@
</tutorials>
<methods>
<method name="get_16">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets a signed 16-bit value from the stream.
</description>
</method>
<method name="get_32">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets a signed 32-bit value from the stream.
</description>
</method>
<method name="get_64">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets a signed 64-bit value from the stream.
</description>
</method>
<method name="get_8">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets a signed byte from the stream.
</description>
</method>
<method name="get_available_bytes" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of bytes this [StreamPeer] has available.
</description>
</method>
<method name="get_data">
- <return type="Array">
- </return>
- <argument index="0" name="bytes" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="bytes" type="int" />
<description>
Returns a chunk data with the received bytes. The amount of bytes to be received can be requested in the [code]bytes[/code] argument. If not enough bytes are available, the function will block until the desired amount is received. This function returns two values, an [enum @GlobalScope.Error] code and a data array.
</description>
</method>
<method name="get_double">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Gets a double-precision float from the stream.
</description>
</method>
<method name="get_float">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Gets a single-precision float from the stream.
</description>
</method>
<method name="get_partial_data">
- <return type="Array">
- </return>
- <argument index="0" name="bytes" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="bytes" type="int" />
<description>
Returns a chunk data with the received bytes. The amount of bytes to be received can be requested in the "bytes" argument. If not enough bytes are available, the function will return how many were actually received. This function returns two values, an [enum @GlobalScope.Error] code, and a data array.
</description>
</method>
<method name="get_string">
- <return type="String">
- </return>
- <argument index="0" name="bytes" type="int" default="-1">
- </argument>
+ <return type="String" />
+ <argument index="0" name="bytes" type="int" default="-1" />
<description>
Gets a string with byte-length [code]bytes[/code] from the stream. If [code]bytes[/code] is negative (default) the length will be read from the stream using the reverse process of [method put_string].
</description>
</method>
<method name="get_u16">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets an unsigned 16-bit value from the stream.
</description>
</method>
<method name="get_u32">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets an unsigned 32-bit value from the stream.
</description>
</method>
<method name="get_u64">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets an unsigned 64-bit value from the stream.
</description>
</method>
<method name="get_u8">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets an unsigned byte from the stream.
</description>
</method>
<method name="get_utf8_string">
- <return type="String">
- </return>
- <argument index="0" name="bytes" type="int" default="-1">
- </argument>
+ <return type="String" />
+ <argument index="0" name="bytes" type="int" default="-1" />
<description>
Gets an UTF-8 string with byte-length [code]bytes[/code] from the stream (this decodes the string sent as UTF-8). If [code]bytes[/code] is negative (default) the length will be read from the stream using the reverse process of [method put_utf8_string].
</description>
</method>
<method name="get_var">
- <return type="Variant">
- </return>
- <argument index="0" name="allow_objects" type="bool" default="false">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="allow_objects" type="bool" default="false" />
<description>
Gets a Variant from the stream. If [code]allow_objects[/code] is [code]true[/code], decoding objects is allowed.
[b]Warning:[/b] Deserialized objects can contain code which gets executed. Do not use this option if the serialized object comes from untrusted sources to avoid potential security threats such as remote code execution.
</description>
</method>
<method name="put_16">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Puts a signed 16-bit value into the stream.
</description>
</method>
<method name="put_32">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Puts a signed 32-bit value into the stream.
</description>
</method>
<method name="put_64">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Puts a signed 64-bit value into the stream.
</description>
</method>
<method name="put_8">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Puts a signed byte into the stream.
</description>
</method>
<method name="put_data">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="data" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="data" type="PackedByteArray" />
<description>
Sends a chunk of data through the connection, blocking if necessary until the data is done sending. This function returns an [enum @GlobalScope.Error] code.
</description>
</method>
<method name="put_double">
- <return type="void">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="float" />
<description>
Puts a double-precision float into the stream.
</description>
</method>
<method name="put_float">
- <return type="void">
- </return>
- <argument index="0" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="float" />
<description>
Puts a single-precision float into the stream.
</description>
</method>
<method name="put_partial_data">
- <return type="Array">
- </return>
- <argument index="0" name="data" type="PackedByteArray">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="data" type="PackedByteArray" />
<description>
Sends a chunk of data through the connection. If all the data could not be sent at once, only part of it will. This function returns two values, an [enum @GlobalScope.Error] code and an integer, describing how much data was actually sent.
</description>
</method>
<method name="put_string">
- <return type="void">
- </return>
- <argument index="0" name="value" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="String" />
<description>
Puts a zero-terminated ASCII string into the stream prepended by a 32-bit unsigned integer representing its size.
Note: To put an ASCII string without prepending its size, you can use [method put_data]:
@@ -223,46 +184,36 @@
</description>
</method>
<method name="put_u16">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Puts an unsigned 16-bit value into the stream.
</description>
</method>
<method name="put_u32">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Puts an unsigned 32-bit value into the stream.
</description>
</method>
<method name="put_u64">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Puts an unsigned 64-bit value into the stream.
</description>
</method>
<method name="put_u8">
- <return type="void">
- </return>
- <argument index="0" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="int" />
<description>
Puts an unsigned byte into the stream.
</description>
</method>
<method name="put_utf8_string">
- <return type="void">
- </return>
- <argument index="0" name="value" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="String" />
<description>
Puts a zero-terminated UTF-8 string into the stream prepended by a 32 bits unsigned integer representing its size.
Note: To put an UTF-8 string without prepending its size, you can use [method put_data]:
@@ -277,12 +228,9 @@
</description>
</method>
<method name="put_var">
- <return type="void">
- </return>
- <argument index="0" name="value" type="Variant">
- </argument>
- <argument index="1" name="full_objects" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="value" type="Variant" />
+ <argument index="1" name="full_objects" type="bool" default="false" />
<description>
Puts a Variant into the stream. If [code]full_objects[/code] is [code]true[/code] encoding objects is allowed (and can potentially include code).
</description>
diff --git a/doc/classes/StreamPeerBuffer.xml b/doc/classes/StreamPeerBuffer.xml
index 03a150b90f..62476ca166 100644
--- a/doc/classes/StreamPeerBuffer.xml
+++ b/doc/classes/StreamPeerBuffer.xml
@@ -8,42 +8,34 @@
</tutorials>
<methods>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="duplicate" qualifiers="const">
- <return type="StreamPeerBuffer">
- </return>
+ <return type="StreamPeerBuffer" />
<description>
</description>
</method>
<method name="get_position" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="resize">
- <return type="void">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="int" />
<description>
</description>
</method>
<method name="seek">
- <return type="void">
- </return>
- <argument index="0" name="position" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="int" />
<description>
</description>
</method>
diff --git a/doc/classes/StreamPeerSSL.xml b/doc/classes/StreamPeerSSL.xml
index 6a06c0b3f4..034168c2a0 100644
--- a/doc/classes/StreamPeerSSL.xml
+++ b/doc/classes/StreamPeerSSL.xml
@@ -11,53 +11,40 @@
</tutorials>
<methods>
<method name="accept_stream">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="stream" type="StreamPeer">
- </argument>
- <argument index="1" name="private_key" type="CryptoKey">
- </argument>
- <argument index="2" name="certificate" type="X509Certificate">
- </argument>
- <argument index="3" name="chain" type="X509Certificate" default="null">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="stream" type="StreamPeer" />
+ <argument index="1" name="private_key" type="CryptoKey" />
+ <argument index="2" name="certificate" type="X509Certificate" />
+ <argument index="3" name="chain" type="X509Certificate" default="null" />
<description>
Accepts a peer connection as a server using the given [code]private_key[/code] and providing the given [code]certificate[/code] to the client. You can pass the optional [code]chain[/code] parameter to provide additional CA chain information along with the certificate.
</description>
</method>
<method name="connect_to_stream">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="stream" type="StreamPeer">
- </argument>
- <argument index="1" name="validate_certs" type="bool" default="false">
- </argument>
- <argument index="2" name="for_hostname" type="String" default="&quot;&quot;">
- </argument>
- <argument index="3" name="valid_certificate" type="X509Certificate" default="null">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="stream" type="StreamPeer" />
+ <argument index="1" name="validate_certs" type="bool" default="false" />
+ <argument index="2" name="for_hostname" type="String" default="&quot;&quot;" />
+ <argument index="3" name="valid_certificate" type="X509Certificate" default="null" />
<description>
Connects to a peer using an underlying [StreamPeer] [code]stream[/code]. If [code]validate_certs[/code] is [code]true[/code], [StreamPeerSSL] will validate that the certificate presented by the peer matches the [code]for_hostname[/code].
[b]Note:[/b] Specifying a custom [code]valid_certificate[/code] is not supported in HTML5 exports due to browsers restrictions.
</description>
</method>
<method name="disconnect_from_stream">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Disconnects from host.
</description>
</method>
<method name="get_status" qualifiers="const">
- <return type="int" enum="StreamPeerSSL.Status">
- </return>
+ <return type="int" enum="StreamPeerSSL.Status" />
<description>
Returns the status of the connection. See [enum Status] for values.
</description>
</method>
<method name="poll">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Poll the connection to check for incoming bytes. Call this right before [method StreamPeer.get_available_bytes] for it to work properly.
</description>
diff --git a/doc/classes/StreamPeerTCP.xml b/doc/classes/StreamPeerTCP.xml
index 7b7c1d7426..bba48e7275 100644
--- a/doc/classes/StreamPeerTCP.xml
+++ b/doc/classes/StreamPeerTCP.xml
@@ -10,75 +10,61 @@
</tutorials>
<methods>
<method name="bind">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
- <argument index="1" name="host" type="String" default="&quot;*&quot;">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="port" type="int" />
+ <argument index="1" name="host" type="String" default="&quot;*&quot;" />
<description>
Opens the TCP socket, and binds it to the specified local address.
This method is generally not needed, and only used to force the subsequent call to [method connect_to_host] to use the specified [code]host[/code] and [code]port[/code] as source address. This can be desired in some NAT punchthrough techniques, or when forcing the source network interface.
</description>
</method>
<method name="connect_to_host">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="host" type="String">
- </argument>
- <argument index="1" name="port" type="int">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="host" type="String" />
+ <argument index="1" name="port" type="int" />
<description>
Connects to the specified [code]host:port[/code] pair. A hostname will be resolved if valid. Returns [constant OK] on success.
</description>
</method>
<method name="disconnect_from_host">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Disconnects from host.
</description>
</method>
<method name="get_connected_host" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the IP of this peer.
</description>
</method>
<method name="get_connected_port" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the port of this peer.
</description>
</method>
<method name="get_local_port" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the local port to which this peer is bound.
</description>
</method>
<method name="get_status">
- <return type="int" enum="StreamPeerTCP.Status">
- </return>
+ <return type="int" enum="StreamPeerTCP.Status" />
<description>
Returns the status of the connection, see [enum Status].
</description>
</method>
<method name="is_connected_to_host" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this peer is currently connected or is connecting to a host, [code]false[/code] otherwise.
</description>
</method>
<method name="set_no_delay">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enabled" type="bool" />
<description>
If [code]enabled[/code] is [code]true[/code], packets will be sent immediately. If [code]enabled[/code] is [code]false[/code] (the default), packet transfers will be delayed and combined using [url=https://en.wikipedia.org/wiki/Nagle%27s_algorithm]Nagle's algorithm[/url].
[b]Note:[/b] It's recommended to leave this disabled for applications that send large packets or need to transfer a lot of data, as enabling this can decrease the total available bandwidth.
diff --git a/doc/classes/StreamTexture2D.xml b/doc/classes/StreamTexture2D.xml
index 214298475c..7b6c594786 100644
--- a/doc/classes/StreamTexture2D.xml
+++ b/doc/classes/StreamTexture2D.xml
@@ -10,10 +10,8 @@
</tutorials>
<methods>
<method name="load">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Loads the texture from the given path.
</description>
diff --git a/doc/classes/StreamTexture3D.xml b/doc/classes/StreamTexture3D.xml
index 7054a4ee99..4b2eb16ba3 100644
--- a/doc/classes/StreamTexture3D.xml
+++ b/doc/classes/StreamTexture3D.xml
@@ -8,10 +8,8 @@
</tutorials>
<methods>
<method name="load">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
</description>
</method>
diff --git a/doc/classes/StreamTextureLayered.xml b/doc/classes/StreamTextureLayered.xml
index 10a7aae976..888fb339db 100644
--- a/doc/classes/StreamTextureLayered.xml
+++ b/doc/classes/StreamTextureLayered.xml
@@ -8,10 +8,8 @@
</tutorials>
<methods>
<method name="load">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
</description>
</method>
diff --git a/doc/classes/String.xml b/doc/classes/String.xml
index 3bf05e7c92..027ae2000a 100644
--- a/doc/classes/String.xml
+++ b/doc/classes/String.xml
@@ -11,58 +11,47 @@
</tutorials>
<methods>
<method name="String" qualifiers="constructor">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Constructs an empty [String] ([code]""[/code]).
</description>
</method>
<method name="String" qualifiers="constructor">
- <return type="String">
- </return>
- <argument index="0" name="from" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="from" type="String" />
<description>
Constructs a [String] as a copy of the given [String].
</description>
</method>
<method name="String" qualifiers="constructor">
- <return type="String">
- </return>
- <argument index="0" name="from" type="NodePath">
- </argument>
+ <return type="String" />
+ <argument index="0" name="from" type="NodePath" />
<description>
Constructs a new String from the given [NodePath].
</description>
</method>
<method name="String" qualifiers="constructor">
- <return type="String">
- </return>
- <argument index="0" name="from" type="StringName">
- </argument>
+ <return type="String" />
+ <argument index="0" name="from" type="StringName" />
<description>
Constructs a new String from the given [StringName].
</description>
</method>
<method name="begins_with" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="text" type="String" />
<description>
Returns [code]true[/code] if the string begins with the given string.
</description>
</method>
<method name="bigrams" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns the bigrams (pairs of consecutive letters) of this string.
</description>
</method>
<method name="bin_to_int" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Converts a string containing a binary number into an integer. Binary strings can either be prefixed with [code]0b[/code] or not, and they can also start with a [code]-[/code] before the optional prefix.
[codeblocks]
@@ -78,32 +67,27 @@
</description>
</method>
<method name="c_escape" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a copy of the string with special characters escaped using the C language standard.
</description>
</method>
<method name="c_unescape" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a copy of the string with escaped characters replaced by their meanings. Supported escape sequences are [code]\'[/code], [code]\"[/code], [code]\?[/code], [code]\\[/code], [code]\a[/code], [code]\b[/code], [code]\f[/code], [code]\n[/code], [code]\r[/code], [code]\t[/code], [code]\v[/code].
[b]Note:[/b] Unlike the GDScript parser, this method doesn't support the [code]\uXXXX[/code] escape sequence.
</description>
</method>
<method name="capitalize" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Changes the case of some letters. Replaces underscores with spaces, adds spaces before in-word uppercase characters, converts all letters to lowercase, then capitalizes the first letter and every letter following a space character. For [code]capitalize camelCase mixed_with_underscores[/code], it will return [code]Capitalize Camel Case Mixed With Underscores[/code].
</description>
</method>
<method name="casecmp_to" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="to" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="to" type="String" />
<description>
Performs a case-sensitive comparison to another string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/code] if equal. "less than" or "greater than" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/code] of each string, which roughly matches the alphabetical order.
[b]Behavior with different string lengths:[/b] Returns [code]1[/code] if the "base" string is longer than the [code]to[/code] string or [code]-1[/code] if the "base" string is shorter than the [code]to[/code] string. Keep in mind this length is determined by the number of Unicode codepoints, [i]not[/i] the actual visible characters.
@@ -112,62 +96,46 @@
</description>
</method>
<method name="chr" qualifiers="static">
- <return type="String">
- </return>
- <argument index="0" name="char" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="char" type="int" />
<description>
</description>
</method>
<method name="count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="what" type="String">
- </argument>
- <argument index="1" name="from" type="int" default="0">
- </argument>
- <argument index="2" name="to" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="what" type="String" />
+ <argument index="1" name="from" type="int" default="0" />
+ <argument index="2" name="to" type="int" default="0" />
<description>
Returns the number of occurrences of substring [code]what[/code] between [code]from[/code] and [code]to[/code] positions. If [code]from[/code] and [code]to[/code] equals 0 the whole string will be used. If only [code]to[/code] equals 0 the remained substring will be used.
</description>
</method>
<method name="countn" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="what" type="String">
- </argument>
- <argument index="1" name="from" type="int" default="0">
- </argument>
- <argument index="2" name="to" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="what" type="String" />
+ <argument index="1" name="from" type="int" default="0" />
+ <argument index="2" name="to" type="int" default="0" />
<description>
Returns the number of occurrences of substring [code]what[/code] (ignoring case) between [code]from[/code] and [code]to[/code] positions. If [code]from[/code] and [code]to[/code] equals 0 the whole string will be used. If only [code]to[/code] equals 0 the remained substring will be used.
</description>
</method>
<method name="dedent" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a copy of the string with indentation (leading tabs and spaces) removed.
</description>
</method>
<method name="ends_with" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="text" type="String" />
<description>
Returns [code]true[/code] if the string ends with the given string.
</description>
</method>
<method name="find" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="what" type="String">
- </argument>
- <argument index="1" name="from" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="what" type="String" />
+ <argument index="1" name="from" type="int" default="0" />
<description>
Returns the index of the [b]first[/b] case-sensitive occurrence of the specified string in this instance, or [code]-1[/code]. Optionally, the starting search index can be specified, continuing to the end of the string.
[b]Note:[/b] If you just want to know whether a string contains a substring, use the [code]in[/code] operator as follows:
@@ -183,65 +151,53 @@
</description>
</method>
<method name="findn" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="what" type="String">
- </argument>
- <argument index="1" name="from" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="what" type="String" />
+ <argument index="1" name="from" type="int" default="0" />
<description>
Returns the index of the [b]first[/b] case-insensitive occurrence of the specified string in this instance, or [code]-1[/code]. Optionally, the starting search index can be specified, continuing to the end of the string.
</description>
</method>
<method name="format" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="values" type="Variant">
- </argument>
- <argument index="1" name="placeholder" type="String" default="&quot;{_}&quot;">
- </argument>
+ <return type="String" />
+ <argument index="0" name="values" type="Variant" />
+ <argument index="1" name="placeholder" type="String" default="&quot;{_}&quot;" />
<description>
Formats the string by replacing all occurrences of [code]placeholder[/code] with [code]values[/code].
</description>
</method>
<method name="get_base_dir" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
If the string is a valid file path, returns the base directory name.
</description>
</method>
<method name="get_basename" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
If the string is a valid file path, returns the full file path without the extension.
</description>
</method>
<method name="get_extension" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
If the string is a valid file path, returns the extension.
</description>
</method>
<method name="get_file" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
If the string is a valid file path, returns the filename.
</description>
</method>
<method name="hash" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Hashes the string and returns a 32-bit integer.
</description>
</method>
<method name="hex_to_int" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Converts a string containing a hexadecimal number into an integer. Hexadecimal strings can either be prefixed with [code]0x[/code] or not, and they can also start with a [code]-[/code] before the optional prefix.
[codeblocks]
@@ -257,120 +213,98 @@
</description>
</method>
<method name="humanize_size" qualifiers="static">
- <return type="String">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="size" type="int" />
<description>
</description>
</method>
<method name="insert" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="position" type="int">
- </argument>
- <argument index="1" name="what" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="position" type="int" />
+ <argument index="1" name="what" type="String" />
<description>
Returns a copy of the string with the substring [code]what[/code] inserted at the given position.
</description>
</method>
<method name="is_absolute_path" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
If the string is a path to a file or directory, returns [code]true[/code] if the path is absolute.
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the length of the string equals [code]0[/code].
</description>
</method>
<method name="is_rel_path" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
If the string is a path to a file or directory, returns [code]true[/code] if the path is relative.
</description>
</method>
<method name="is_subsequence_of" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="text" type="String" />
<description>
Returns [code]true[/code] if this string is a subsequence of the given string.
</description>
</method>
<method name="is_subsequence_ofi" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="text" type="String" />
<description>
Returns [code]true[/code] if this string is a subsequence of the given string, without considering case.
</description>
</method>
<method name="is_valid_filename" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this string is free from characters that aren't allowed in file names, those being:
[code]: / \ ? * " | % &lt; &gt;[/code]
</description>
</method>
<method name="is_valid_float" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this string contains a valid float.
</description>
</method>
<method name="is_valid_hex_number" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="with_prefix" type="bool" default="false">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="with_prefix" type="bool" default="false" />
<description>
Returns [code]true[/code] if this string contains a valid hexadecimal number. If [code]with_prefix[/code] is [code]true[/code], then a validity of the hexadecimal number is determined by [code]0x[/code] prefix, for instance: [code]0xDEADC0DE[/code].
</description>
</method>
<method name="is_valid_html_color" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this string contains a valid color in hexadecimal HTML notation. Other HTML notations such as named colors or [code]hsl()[/code] colors aren't considered valid by this method and will return [code]false[/code].
</description>
</method>
<method name="is_valid_identifier" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this string is a valid identifier. A valid identifier may contain only letters, digits and underscores ([code]_[/code]) and the first character may not be a digit.
</description>
</method>
<method name="is_valid_int" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this string contains a valid integer.
</description>
</method>
<method name="is_valid_ip_address" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this string contains only a well-formatted IPv4 or IPv6 address. This method considers [url=https://en.wikipedia.org/wiki/Reserved_IP_addresses]reserved IP addresses[/url] such as [code]0.0.0.0[/code] as valid.
</description>
</method>
<method name="join" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="parts" type="PackedStringArray">
- </argument>
+ <return type="String" />
+ <argument index="0" name="parts" type="PackedStringArray" />
<description>
Return a [String] which is the concatenation of the [code]parts[/code]. The separator between elements is the string providing this method.
Example:
@@ -385,17 +319,14 @@
</description>
</method>
<method name="json_escape" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a copy of the string with special characters escaped using the JSON standard.
</description>
</method>
<method name="left" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="position" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="position" type="int" />
<description>
Returns a number of characters from the left of the string. If negative [code]position[/code] is used, the characters are counted downwards from [String]'s length.
Examples:
@@ -406,70 +337,56 @@
</description>
</method>
<method name="length" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the string's amount of characters.
</description>
</method>
<method name="lpad" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="min_length" type="int">
- </argument>
- <argument index="1" name="character" type="String" default="&quot; &quot;">
- </argument>
+ <return type="String" />
+ <argument index="0" name="min_length" type="int" />
+ <argument index="1" name="character" type="String" default="&quot; &quot;" />
<description>
Formats a string to be at least [code]min_length[/code] long by adding [code]character[/code]s to the left of the string.
</description>
</method>
<method name="lstrip" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="chars" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="chars" type="String" />
<description>
Returns a copy of the string with characters removed from the left. The [code]chars[/code] argument is a string specifying the set of characters to be removed.
[b]Note:[/b] The [code]chars[/code] is not a prefix. See [method trim_prefix] method that will remove a single prefix string rather than a set of characters.
</description>
</method>
<method name="match" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="expr" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="expr" type="String" />
<description>
Does a simple case-sensitive expression match, where [code]"*"[/code] matches zero or more arbitrary characters and [code]"?"[/code] matches any single character except a period ([code]"."[/code]).
</description>
</method>
<method name="matchn" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="expr" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="expr" type="String" />
<description>
Does a simple case-insensitive expression match, where [code]"*"[/code] matches zero or more arbitrary characters and [code]"?"[/code] matches any single character except a period ([code]"."[/code]).
</description>
</method>
<method name="md5_buffer" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Returns the MD5 hash of the string as an array of bytes.
</description>
</method>
<method name="md5_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the MD5 hash of the string as a string.
</description>
</method>
<method name="naturalnocasecmp_to" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="to" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="to" type="String" />
<description>
Performs a case-insensitive [i]natural order[/i] comparison to another string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/code] if equal. "less than" or "greater than" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/code] of each string, which roughly matches the alphabetical order. Internally, lowercase characters will be converted to uppercase during the comparison.
When used for sorting, natural order comparison will order suites of numbers as expected by most people. If you sort the numbers from 1 to 10 using natural order, you will get [code][1, 2, 3, ...][/code] instead of [code][1, 10, 2, 3, ...][/code].
@@ -479,10 +396,8 @@
</description>
</method>
<method name="nocasecmp_to" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="to" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="to" type="String" />
<description>
Performs a case-insensitive comparison to another string. Returns [code]-1[/code] if less than, [code]1[/code] if greater than, or [code]0[/code] if equal. "less than" or "greater than" are determined by the [url=https://en.wikipedia.org/wiki/List_of_Unicode_characters]Unicode code points[/code] of each string, which roughly matches the alphabetical order. Internally, lowercase characters will be converted to uppercase during the comparison.
[b]Behavior with different string lengths:[/b] Returns [code]1[/code] if the "base" string is longer than the [code]to[/code] string or [code]-1[/code] if the "base" string is shorter than the [code]to[/code] string. Keep in mind this length is determined by the number of Unicode codepoints, [i]not[/i] the actual visible characters.
@@ -491,188 +406,141 @@
</description>
</method>
<method name="num" qualifiers="static">
- <return type="String">
- </return>
- <argument index="0" name="number" type="float">
- </argument>
- <argument index="1" name="decimals" type="int" default="-1">
- </argument>
+ <return type="String" />
+ <argument index="0" name="number" type="float" />
+ <argument index="1" name="decimals" type="int" default="-1" />
<description>
</description>
</method>
<method name="num_scientific" qualifiers="static">
- <return type="String">
- </return>
- <argument index="0" name="number" type="float">
- </argument>
+ <return type="String" />
+ <argument index="0" name="number" type="float" />
<description>
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="String" />
<description>
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="StringName" />
<description>
</description>
</method>
<method name="operator %" qualifiers="operator">
- <return type="String">
- </return>
- <argument index="0" name="right" type="Variant">
- </argument>
+ <return type="String" />
+ <argument index="0" name="right" type="Variant" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="String">
- </return>
- <argument index="0" name="right" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="right" type="String" />
<description>
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="String" />
<description>
</description>
</method>
<method name="operator &lt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="String" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="String" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="StringName" />
<description>
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="String" />
<description>
</description>
</method>
<method name="operator &gt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="String" />
<description>
</description>
</method>
<method name="pad_decimals" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="digits" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="digits" type="int" />
<description>
Formats a number to have an exact number of [code]digits[/code] after the decimal point.
</description>
</method>
<method name="pad_zeros" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="digits" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="digits" type="int" />
<description>
Formats a number to have an exact number of [code]digits[/code] before the decimal point.
</description>
</method>
<method name="plus_file" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="file" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="file" type="String" />
<description>
If the string is a path, this concatenates [code]file[/code] at the end of the string as a subpath. E.g. [code]"this/is".plus_file("path") == "this/is/path"[/code].
</description>
</method>
<method name="repeat" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="count" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="count" type="int" />
<description>
Returns original string repeated a number of times. The number of repetitions is given by the argument.
</description>
</method>
<method name="replace" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="what" type="String">
- </argument>
- <argument index="1" name="forwhat" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="what" type="String" />
+ <argument index="1" name="forwhat" type="String" />
<description>
Replaces occurrences of a case-sensitive substring with the given one inside the string.
</description>
</method>
<method name="replacen" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="what" type="String">
- </argument>
- <argument index="1" name="forwhat" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="what" type="String" />
+ <argument index="1" name="forwhat" type="String" />
<description>
Replaces occurrences of a case-insensitive substring with the given one inside the string.
</description>
</method>
<method name="rfind" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="what" type="String">
- </argument>
- <argument index="1" name="from" type="int" default="-1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="what" type="String" />
+ <argument index="1" name="from" type="int" default="-1" />
<description>
Returns the index of the [b]last[/b] case-sensitive occurrence of the specified string in this instance, or [code]-1[/code]. Optionally, the starting search index can be specified, continuing to the beginning of the string.
</description>
</method>
<method name="rfindn" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="what" type="String">
- </argument>
- <argument index="1" name="from" type="int" default="-1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="what" type="String" />
+ <argument index="1" name="from" type="int" default="-1" />
<description>
Returns the index of the [b]last[/b] case-insensitive occurrence of the specified string in this instance, or [code]-1[/code]. Optionally, the starting search index can be specified, continuing to the beginning of the string.
</description>
</method>
<method name="right" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="position" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="position" type="int" />
<description>
Returns a number of characters from the right of the string. If negative [code]position[/code] is used, the characters are counted downwards from [String]'s length.
Examples:
@@ -683,25 +551,18 @@
</description>
</method>
<method name="rpad" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="min_length" type="int">
- </argument>
- <argument index="1" name="character" type="String" default="&quot; &quot;">
- </argument>
+ <return type="String" />
+ <argument index="0" name="min_length" type="int" />
+ <argument index="1" name="character" type="String" default="&quot; &quot;" />
<description>
Formats a string to be at least [code]min_length[/code] long by adding [code]character[/code]s to the right of the string.
</description>
</method>
<method name="rsplit" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="delimiter" type="String">
- </argument>
- <argument index="1" name="allow_empty" type="bool" default="true">
- </argument>
- <argument index="2" name="maxsplit" type="int" default="0">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="delimiter" type="String" />
+ <argument index="1" name="allow_empty" type="bool" default="true" />
+ <argument index="2" name="maxsplit" type="int" default="0" />
<description>
Splits the string by a [code]delimiter[/code] string and returns an array of the substrings, starting from right.
The splits in the returned array are sorted in the same order as the original string, from left to right.
@@ -722,61 +583,49 @@
</description>
</method>
<method name="rstrip" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="chars" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="chars" type="String" />
<description>
Returns a copy of the string with characters removed from the right. The [code]chars[/code] argument is a string specifying the set of characters to be removed.
[b]Note:[/b] The [code]chars[/code] is not a suffix. See [method trim_suffix] method that will remove a single suffix string rather than a set of characters.
</description>
</method>
<method name="sha1_buffer" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Returns the SHA-1 hash of the string as an array of bytes.
</description>
</method>
<method name="sha1_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the SHA-1 hash of the string as a string.
</description>
</method>
<method name="sha256_buffer" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Returns the SHA-256 hash of the string as an array of bytes.
</description>
</method>
<method name="sha256_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the SHA-256 hash of the string as a string.
</description>
</method>
<method name="similarity" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
+ <return type="float" />
+ <argument index="0" name="text" type="String" />
<description>
Returns the similarity index of the text compared to this string. 1 means totally similar and 0 means totally dissimilar.
</description>
</method>
<method name="split" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="delimiter" type="String">
- </argument>
- <argument index="1" name="allow_empty" type="bool" default="true">
- </argument>
- <argument index="2" name="maxsplit" type="int" default="0">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="delimiter" type="String" />
+ <argument index="1" name="allow_empty" type="bool" default="true" />
+ <argument index="2" name="maxsplit" type="int" default="0" />
<description>
Splits the string by a [code]delimiter[/code] string and returns an array of the substrings. The [code]delimiter[/code] can be of any length.
If [code]maxsplit[/code] is specified, it defines the number of splits to do from the left up to [code]maxsplit[/code]. The default value of [code]0[/code] means that all items are split.
@@ -800,132 +649,107 @@
</description>
</method>
<method name="split_floats" qualifiers="const">
- <return type="PackedFloat32Array">
- </return>
- <argument index="0" name="delimiter" type="String">
- </argument>
- <argument index="1" name="allow_empty" type="bool" default="true">
- </argument>
+ <return type="PackedFloat32Array" />
+ <argument index="0" name="delimiter" type="String" />
+ <argument index="1" name="allow_empty" type="bool" default="true" />
<description>
Splits the string in floats by using a delimiter string and returns an array of the substrings.
For example, [code]"1,2.5,3"[/code] will return [code][1,2.5,3][/code] if split by [code]","[/code].
</description>
</method>
<method name="strip_edges" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="left" type="bool" default="true">
- </argument>
- <argument index="1" name="right" type="bool" default="true">
- </argument>
+ <return type="String" />
+ <argument index="0" name="left" type="bool" default="true" />
+ <argument index="1" name="right" type="bool" default="true" />
<description>
Returns a copy of the string stripped of any non-printable character (including tabulations, spaces and line breaks) at the beginning and the end. The optional arguments are used to toggle stripping on the left and right edges respectively.
</description>
</method>
<method name="strip_escapes" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a copy of the string stripped of any escape character. These include all non-printable control characters of the first page of the ASCII table (&lt; 32), such as tabulation ([code]\t[/code] in C) and newline ([code]\n[/code] and [code]\r[/code]) characters, but not spaces.
</description>
</method>
<method name="substr" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="len" type="int" default="-1">
- </argument>
+ <return type="String" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="len" type="int" default="-1" />
<description>
Returns part of the string from the position [code]from[/code] with length [code]len[/code]. Argument [code]len[/code] is optional and using [code]-1[/code] will return remaining characters from given position.
</description>
</method>
<method name="to_ascii_buffer" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Converts the String (which is a character array) to ASCII/Latin-1 encoded [PackedByteArray] (which is an array of bytes). The conversion is faster compared to [method to_utf8_buffer], as this method assumes that all the characters in the String are ASCII/Latin-1 characters, unsupported characters are replaced with spaces.
</description>
</method>
<method name="to_float" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Converts a string containing a decimal number into a [code]float[/code].
</description>
</method>
<method name="to_int" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Converts a string containing an integer number into an [code]int[/code].
</description>
</method>
<method name="to_lower" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the string converted to lowercase.
</description>
</method>
<method name="to_upper" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the string converted to uppercase.
</description>
</method>
<method name="to_utf16_buffer" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Converts the String (which is an array of characters) to UTF-16 encoded [PackedByteArray] (which is an array of bytes).
</description>
</method>
<method name="to_utf32_buffer" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Converts the String (which is an array of characters) to UTF-32 encoded [PackedByteArray] (which is an array of bytes).
</description>
</method>
<method name="to_utf8_buffer" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Converts the String (which is an array of characters) to UTF-8 encode [PackedByteArray] (which is an array of bytes). The conversion is a bit slower than [method to_ascii_buffer], but supports all UTF-8 characters. Therefore, you should prefer this function over [method to_ascii_buffer].
</description>
</method>
<method name="trim_prefix" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="prefix" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="prefix" type="String" />
<description>
Removes a given string from the start if it starts with it or leaves the string unchanged.
</description>
</method>
<method name="trim_suffix" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="suffix" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="suffix" type="String" />
<description>
Removes a given string from the end if it ends with it or leaves the string unchanged.
</description>
</method>
<method name="unicode_at" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="at" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="at" type="int" />
<description>
Returns the character code at position [code]at[/code].
</description>
</method>
<method name="uri_decode" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Decodes a string in URL encoded format. This is meant to decode parameters in a URL when receiving an HTTP request.
[codeblocks]
@@ -939,8 +763,7 @@
</description>
</method>
<method name="uri_encode" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Encodes a string to URL friendly format. This is meant to encode parameters in a URL when sending an HTTP request.
[codeblocks]
@@ -954,24 +777,20 @@
</description>
</method>
<method name="validate_node_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Removes any characters from the string that are prohibited in [Node] names ([code].[/code] [code]:[/code] [code]@[/code] [code]/[/code] [code]"[/code]).
</description>
</method>
<method name="xml_escape" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="escape_quotes" type="bool" default="false">
- </argument>
+ <return type="String" />
+ <argument index="0" name="escape_quotes" type="bool" default="false" />
<description>
Returns a copy of the string with special characters escaped using the XML standard. If [code]escape_quotes[/code] is [code]true[/code], the single quote ([code]'[/code]) and double quote ([code]"[/code]) characters are also escaped.
</description>
</method>
<method name="xml_unescape" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a copy of the string with escaped characters replaced by their meanings according to the XML standard.
</description>
diff --git a/doc/classes/StringName.xml b/doc/classes/StringName.xml
index be32f6a234..4c2619e782 100644
--- a/doc/classes/StringName.xml
+++ b/doc/classes/StringName.xml
@@ -10,59 +10,46 @@
</tutorials>
<methods>
<method name="StringName" qualifiers="constructor">
- <return type="StringName">
- </return>
+ <return type="StringName" />
<description>
Constructs an empty [StringName].
</description>
</method>
<method name="StringName" qualifiers="constructor">
- <return type="StringName">
- </return>
- <argument index="0" name="from" type="StringName">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="from" type="StringName" />
<description>
Constructs a [StringName] as a copy of the given [StringName].
</description>
</method>
<method name="StringName" qualifiers="constructor">
- <return type="StringName">
- </return>
- <argument index="0" name="from" type="String">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="from" type="String" />
<description>
Creates a new [StringName] from the given [String].
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="String" />
<description>
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="StringName" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="String" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="StringName" />
<description>
</description>
</method>
diff --git a/doc/classes/StyleBox.xml b/doc/classes/StyleBox.xml
index a01dfbd4b8..024524251d 100644
--- a/doc/classes/StyleBox.xml
+++ b/doc/classes/StyleBox.xml
@@ -11,82 +11,65 @@
</tutorials>
<methods>
<method name="draw" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas_item" type="RID">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas_item" type="RID" />
+ <argument index="1" name="rect" type="Rect2" />
<description>
Draws this stylebox using a [CanvasItem] with given [RID].
You can get a [RID] value using [method Object.get_instance_id] on a [CanvasItem]-derived node.
</description>
</method>
<method name="get_center_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the size of this [StyleBox] without the margins.
</description>
</method>
<method name="get_current_item_drawn" qualifiers="const">
- <return type="CanvasItem">
- </return>
+ <return type="CanvasItem" />
<description>
Returns the [CanvasItem] that handles its [constant CanvasItem.NOTIFICATION_DRAW] or [method CanvasItem._draw] callback at this moment.
</description>
</method>
<method name="get_default_margin" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
+ <return type="float" />
+ <argument index="0" name="margin" type="int" enum="Side" />
<description>
Returns the default margin of the specified [enum Side].
</description>
</method>
<method name="get_margin" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
+ <return type="float" />
+ <argument index="0" name="margin" type="int" enum="Side" />
<description>
Returns the content margin offset for the specified [enum Side].
Positive values reduce size inwards, unlike [Control]'s margin values.
</description>
</method>
<method name="get_minimum_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the minimum size that this stylebox can be shrunk to.
</description>
</method>
<method name="get_offset" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the "offset" of a stylebox. This helper function returns a value equivalent to [code]Vector2(style.get_margin(MARGIN_LEFT), style.get_margin(MARGIN_TOP))[/code].
</description>
</method>
<method name="set_default_margin">
- <return type="void">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
- <argument index="1" name="offset" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="margin" type="int" enum="Side" />
+ <argument index="1" name="offset" type="float" />
<description>
Sets the default value of the specified [enum Side] to [code]offset[/code] pixels.
</description>
</method>
<method name="test_mask" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="point" type="Vector2">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="point" type="Vector2" />
+ <argument index="1" name="rect" type="Rect2" />
<description>
Test a position in a rectangle, return whether it passes the mask test.
</description>
diff --git a/doc/classes/StyleBoxFlat.xml b/doc/classes/StyleBoxFlat.xml
index 9e02fb57c3..540b007341 100644
--- a/doc/classes/StyleBoxFlat.xml
+++ b/doc/classes/StyleBoxFlat.xml
@@ -25,125 +25,93 @@
</tutorials>
<methods>
<method name="get_border_width" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
+ <return type="int" />
+ <argument index="0" name="margin" type="int" enum="Side" />
<description>
Returns the specified [enum Side]'s border width.
</description>
</method>
<method name="get_border_width_min" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the smallest border width out of all four borders.
</description>
</method>
<method name="get_corner_radius" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="corner" type="int" enum="Corner">
- </argument>
+ <return type="int" />
+ <argument index="0" name="corner" type="int" enum="Corner" />
<description>
Returns the given [code]corner[/code]'s radius. See [enum Corner] for possible values.
</description>
</method>
<method name="get_expand_margin" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
+ <return type="float" />
+ <argument index="0" name="margin" type="int" enum="Side" />
<description>
Returns the size of the specified [enum Side]'s expand margin.
</description>
</method>
<method name="set_border_width">
- <return type="void">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
- <argument index="1" name="width" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="margin" type="int" enum="Side" />
+ <argument index="1" name="width" type="int" />
<description>
Sets the specified [enum Side]'s border width to [code]width[/code] pixels.
</description>
</method>
<method name="set_border_width_all">
- <return type="void">
- </return>
- <argument index="0" name="width" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="width" type="int" />
<description>
Sets the border width to [code]width[/code] pixels for all sides.
</description>
</method>
<method name="set_corner_radius">
- <return type="void">
- </return>
- <argument index="0" name="corner" type="int" enum="Corner">
- </argument>
- <argument index="1" name="radius" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="corner" type="int" enum="Corner" />
+ <argument index="1" name="radius" type="int" />
<description>
Sets the corner radius to [code]radius[/code] pixels for the given [code]corner[/code]. See [enum Corner] for possible values.
</description>
</method>
<method name="set_corner_radius_all">
- <return type="void">
- </return>
- <argument index="0" name="radius" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="radius" type="int" />
<description>
Sets the corner radius to [code]radius[/code] pixels for all corners.
</description>
</method>
<method name="set_corner_radius_individual">
- <return type="void">
- </return>
- <argument index="0" name="radius_top_left" type="int">
- </argument>
- <argument index="1" name="radius_top_right" type="int">
- </argument>
- <argument index="2" name="radius_bottom_right" type="int">
- </argument>
- <argument index="3" name="radius_bottom_left" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="radius_top_left" type="int" />
+ <argument index="1" name="radius_top_right" type="int" />
+ <argument index="2" name="radius_bottom_right" type="int" />
+ <argument index="3" name="radius_bottom_left" type="int" />
<description>
Sets the corner radius for each corner to [code]radius_top_left[/code], [code]radius_top_right[/code], [code]radius_bottom_right[/code], and [code]radius_bottom_left[/code] pixels.
</description>
</method>
<method name="set_expand_margin">
- <return type="void">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
- <argument index="1" name="size" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="margin" type="int" enum="Side" />
+ <argument index="1" name="size" type="float" />
<description>
Sets the expand margin to [code]size[/code] pixels for the specified [enum Side].
</description>
</method>
<method name="set_expand_margin_all">
- <return type="void">
- </return>
- <argument index="0" name="size" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="float" />
<description>
Sets the expand margin to [code]size[/code] pixels for all margins.
</description>
</method>
<method name="set_expand_margin_individual">
- <return type="void">
- </return>
- <argument index="0" name="size_left" type="float">
- </argument>
- <argument index="1" name="size_top" type="float">
- </argument>
- <argument index="2" name="size_right" type="float">
- </argument>
- <argument index="3" name="size_bottom" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size_left" type="float" />
+ <argument index="1" name="size_top" type="float" />
+ <argument index="2" name="size_right" type="float" />
+ <argument index="3" name="size_bottom" type="float" />
<description>
Sets the expand margin for each margin to [code]size_left[/code], [code]size_top[/code], [code]size_right[/code], and [code]size_bottom[/code] pixels.
</description>
diff --git a/doc/classes/StyleBoxTexture.xml b/doc/classes/StyleBoxTexture.xml
index be14048126..92939dfbf5 100644
--- a/doc/classes/StyleBoxTexture.xml
+++ b/doc/classes/StyleBoxTexture.xml
@@ -10,65 +10,48 @@
</tutorials>
<methods>
<method name="get_expand_margin_size" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
+ <return type="float" />
+ <argument index="0" name="margin" type="int" enum="Side" />
<description>
Returns the expand margin size of the specified [enum Side].
</description>
</method>
<method name="get_margin_size" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
+ <return type="float" />
+ <argument index="0" name="margin" type="int" enum="Side" />
<description>
Returns the margin size of the specified [enum Side].
</description>
</method>
<method name="set_expand_margin_all">
- <return type="void">
- </return>
- <argument index="0" name="size" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="float" />
<description>
Sets the expand margin to [code]size[/code] pixels for all margins.
</description>
</method>
<method name="set_expand_margin_individual">
- <return type="void">
- </return>
- <argument index="0" name="size_left" type="float">
- </argument>
- <argument index="1" name="size_top" type="float">
- </argument>
- <argument index="2" name="size_right" type="float">
- </argument>
- <argument index="3" name="size_bottom" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size_left" type="float" />
+ <argument index="1" name="size_top" type="float" />
+ <argument index="2" name="size_right" type="float" />
+ <argument index="3" name="size_bottom" type="float" />
<description>
Sets the expand margin for each margin to [code]size_left[/code], [code]size_top[/code], [code]size_right[/code], and [code]size_bottom[/code] pixels.
</description>
</method>
<method name="set_expand_margin_size">
- <return type="void">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
- <argument index="1" name="size" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="margin" type="int" enum="Side" />
+ <argument index="1" name="size" type="float" />
<description>
Sets the expand margin to [code]size[/code] pixels for the specified [enum Side].
</description>
</method>
<method name="set_margin_size">
- <return type="void">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
- <argument index="1" name="size" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="margin" type="int" enum="Side" />
+ <argument index="1" name="size" type="float" />
<description>
Sets the margin to [code]size[/code] pixels for the specified [enum Side].
</description>
diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml
index a8b836ff0c..e5b03eb4d4 100644
--- a/doc/classes/SurfaceTool.xml
+++ b/doc/classes/SurfaceTool.xml
@@ -32,294 +32,225 @@
</tutorials>
<methods>
<method name="add_index">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Adds an index to index array if you are using indexed vertices. Does not need to be called before adding vertices.
</description>
</method>
<method name="add_triangle_fan">
- <return type="void">
- </return>
- <argument index="0" name="vertices" type="PackedVector3Array">
- </argument>
- <argument index="1" name="uvs" type="PackedVector2Array" default="PackedVector2Array()">
- </argument>
- <argument index="2" name="colors" type="PackedColorArray" default="PackedColorArray()">
- </argument>
- <argument index="3" name="uv2s" type="PackedVector2Array" default="PackedVector2Array()">
- </argument>
- <argument index="4" name="normals" type="PackedVector3Array" default="PackedVector3Array()">
- </argument>
- <argument index="5" name="tangents" type="Array" default="[]">
- </argument>
+ <return type="void" />
+ <argument index="0" name="vertices" type="PackedVector3Array" />
+ <argument index="1" name="uvs" type="PackedVector2Array" default="PackedVector2Array()" />
+ <argument index="2" name="colors" type="PackedColorArray" default="PackedColorArray()" />
+ <argument index="3" name="uv2s" type="PackedVector2Array" default="PackedVector2Array()" />
+ <argument index="4" name="normals" type="PackedVector3Array" default="PackedVector3Array()" />
+ <argument index="5" name="tangents" type="Array" default="[]" />
<description>
Inserts a triangle fan made of array data into [Mesh] being constructed.
Requires the primitive type be set to [constant Mesh.PRIMITIVE_TRIANGLES].
</description>
</method>
<method name="add_vertex">
- <return type="void">
- </return>
- <argument index="0" name="vertex" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="vertex" type="Vector3" />
<description>
Specifies the position of current vertex. Should be called after specifying other vertex properties (e.g. Color, UV).
</description>
</method>
<method name="append_from">
- <return type="void">
- </return>
- <argument index="0" name="existing" type="Mesh">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
- <argument index="2" name="transform" type="Transform3D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="existing" type="Mesh" />
+ <argument index="1" name="surface" type="int" />
+ <argument index="2" name="transform" type="Transform3D" />
<description>
Append vertices from a given [Mesh] surface onto the current vertex array with specified [Transform3D].
</description>
</method>
<method name="begin">
- <return type="void">
- </return>
- <argument index="0" name="primitive" type="int" enum="Mesh.PrimitiveType">
- </argument>
+ <return type="void" />
+ <argument index="0" name="primitive" type="int" enum="Mesh.PrimitiveType" />
<description>
Called before adding any vertices. Takes the primitive type as an argument (e.g. [constant Mesh.PRIMITIVE_TRIANGLES]).
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clear all information passed into the surface tool so far.
</description>
</method>
<method name="commit">
- <return type="ArrayMesh">
- </return>
- <argument index="0" name="existing" type="ArrayMesh" default="null">
- </argument>
- <argument index="1" name="flags" type="int" default="0">
- </argument>
+ <return type="ArrayMesh" />
+ <argument index="0" name="existing" type="ArrayMesh" default="null" />
+ <argument index="1" name="flags" type="int" default="0" />
<description>
Returns a constructed [ArrayMesh] from current information passed in. If an existing [ArrayMesh] is passed in as an argument, will add an extra surface to the existing [ArrayMesh].
[b]FIXME:[/b] Document possible values for [code]flags[/code], it changed in 4.0. Likely some combinations of [enum Mesh.ArrayFormat].
</description>
</method>
<method name="commit_to_arrays">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Commits the data to the same format used by [method ArrayMesh.add_surface_from_arrays]. This way you can further process the mesh data using the [ArrayMesh] API.
</description>
</method>
<method name="create_from">
- <return type="void">
- </return>
- <argument index="0" name="existing" type="Mesh">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="existing" type="Mesh" />
+ <argument index="1" name="surface" type="int" />
<description>
Creates a vertex array from an existing [Mesh].
</description>
</method>
<method name="create_from_blend_shape">
- <return type="void">
- </return>
- <argument index="0" name="existing" type="Mesh">
- </argument>
- <argument index="1" name="surface" type="int">
- </argument>
- <argument index="2" name="blend_shape" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="existing" type="Mesh" />
+ <argument index="1" name="surface" type="int" />
+ <argument index="2" name="blend_shape" type="String" />
<description>
Creates a vertex array from the specified blend shape of an existing [Mesh]. This can be used to extract a specific pose from a blend shape.
</description>
</method>
<method name="deindex">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes the index array by expanding the vertex array.
</description>
</method>
<method name="generate_lod">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="nd_threshold" type="float">
- </argument>
- <argument index="1" name="target_index_count" type="int" default="3">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="nd_threshold" type="float" />
+ <argument index="1" name="target_index_count" type="int" default="3" />
<description>
</description>
</method>
<method name="generate_normals">
- <return type="void">
- </return>
- <argument index="0" name="flip" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="flip" type="bool" default="false" />
<description>
Generates normals from vertices so you do not have to do it manually. If [code]flip[/code] is [code]true[/code], the resulting normals will be inverted. [method generate_normals] should be called [i]after[/i] generating geometry and [i]before[/i] committing the mesh using [method commit] or [method commit_to_arrays].
[b]Note:[/b] [method generate_normals] only works if the primitive type to be set to [constant Mesh.PRIMITIVE_TRIANGLES].
</description>
</method>
<method name="generate_tangents">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Generates a tangent vector for each vertex. Requires that each vertex have UVs and normals set already.
</description>
</method>
<method name="get_custom_format" qualifiers="const">
- <return type="int" enum="SurfaceTool.CustomFormat">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" enum="SurfaceTool.CustomFormat" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="get_max_axis_length" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
</description>
</method>
<method name="get_primitive" qualifiers="const">
- <return type="int" enum="Mesh.PrimitiveType">
- </return>
+ <return type="int" enum="Mesh.PrimitiveType" />
<description>
</description>
</method>
<method name="get_skin_weight_count" qualifiers="const">
- <return type="int" enum="SurfaceTool.SkinWeightCount">
- </return>
+ <return type="int" enum="SurfaceTool.SkinWeightCount" />
<description>
</description>
</method>
<method name="index">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Shrinks the vertex array by creating an index array. This can improve performance by avoiding vertex reuse.
</description>
</method>
<method name="optimize_indices_for_cache">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="set_bones">
- <return type="void">
- </return>
- <argument index="0" name="bones" type="PackedInt32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bones" type="PackedInt32Array" />
<description>
Specifies an array of bones to use for the [i]next[/i] vertex. [code]bones[/code] must contain 4 integers.
</description>
</method>
<method name="set_color">
- <return type="void">
- </return>
- <argument index="0" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="color" type="Color" />
<description>
Specifies a [Color] to use for the [i]next[/i] vertex. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.
[b]Note:[/b] The material must have [member BaseMaterial3D.vertex_color_use_as_albedo] enabled for the vertex color to be visible.
</description>
</method>
<method name="set_custom">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="custom" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="custom" type="Color" />
<description>
</description>
</method>
<method name="set_custom_format">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="format" type="int" enum="SurfaceTool.CustomFormat">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="format" type="int" enum="SurfaceTool.CustomFormat" />
<description>
</description>
</method>
<method name="set_material">
- <return type="void">
- </return>
- <argument index="0" name="material" type="Material">
- </argument>
+ <return type="void" />
+ <argument index="0" name="material" type="Material" />
<description>
Sets [Material] to be used by the [Mesh] you are constructing.
</description>
</method>
<method name="set_normal">
- <return type="void">
- </return>
- <argument index="0" name="normal" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="normal" type="Vector3" />
<description>
Specifies a normal to use for the [i]next[/i] vertex. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.
</description>
</method>
<method name="set_skin_weight_count">
- <return type="void">
- </return>
- <argument index="0" name="count" type="int" enum="SurfaceTool.SkinWeightCount">
- </argument>
+ <return type="void" />
+ <argument index="0" name="count" type="int" enum="SurfaceTool.SkinWeightCount" />
<description>
</description>
</method>
<method name="set_smooth_group">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Specifies whether the current vertex (if using only vertex arrays) or current index (if also using index arrays) should use smooth normals for normal calculation.
</description>
</method>
<method name="set_tangent">
- <return type="void">
- </return>
- <argument index="0" name="tangent" type="Plane">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tangent" type="Plane" />
<description>
Specifies a tangent to use for the [i]next[/i] vertex. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.
</description>
</method>
<method name="set_uv">
- <return type="void">
- </return>
- <argument index="0" name="uv" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="uv" type="Vector2" />
<description>
Specifies a set of UV coordinates to use for the [i]next[/i] vertex. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.
</description>
</method>
<method name="set_uv2">
- <return type="void">
- </return>
- <argument index="0" name="uv2" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="uv2" type="Vector2" />
<description>
Specifies an optional second set of UV coordinates to use for the [i]next[/i] vertex. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.
</description>
</method>
<method name="set_weights">
- <return type="void">
- </return>
- <argument index="0" name="weights" type="PackedFloat32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="weights" type="PackedFloat32Array" />
<description>
Specifies weight values to use for the [i]next[/i] vertex. [code]weights[/code] must contain 4 values. If every vertex needs to have this information set and you fail to submit it for the first vertex, this information may not be used at all.
</description>
diff --git a/doc/classes/SyntaxHighlighter.xml b/doc/classes/SyntaxHighlighter.xml
index 642d75fa9b..ea0d1c27a3 100644
--- a/doc/classes/SyntaxHighlighter.xml
+++ b/doc/classes/SyntaxHighlighter.xml
@@ -12,42 +12,35 @@
</tutorials>
<methods>
<method name="_clear_highlighting_cache" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Virtual method which can be overridden to clear any local caches.
</description>
</method>
<method name="_get_line_syntax_highlighting" qualifiers="virtual">
- <return type="Dictionary">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="line" type="int" />
<description>
Virtual method which can be overridden to return syntax highlighting data.
See [method get_line_syntax_highlighting] for more details.
</description>
</method>
<method name="_update_cache" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Virtual method which can be overridden to update any local caches.
</description>
</method>
<method name="clear_highlighting_cache">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears all cached syntax highlighting data.
Then calls overridable method [method _clear_highlighting_cache].
</description>
</method>
<method name="get_line_syntax_highlighting">
- <return type="Dictionary">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="line" type="int" />
<description>
Returns syntax highlighting data for a single line. If the line is not cached, calls [method _get_line_syntax_highlighting] to calculate the data.
The return [Dictionary] is column number to [Dictionary]. The column number notes the start of a region, the region will end if another region is found, or at the end of the line. The nested [Dictionary] contains the data for that region, currently only the key "color" is supported.
@@ -66,15 +59,13 @@
</description>
</method>
<method name="get_text_edit">
- <return type="TextEdit">
- </return>
+ <return type="TextEdit" />
<description>
Returns the associated [TextEdit] node.
</description>
</method>
<method name="update_cache">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears then updates the [SyntaxHighlighter] caches. Override [method _update_cache] for a callback.
[b]Note:[/b] This is called automatically when the associated [TextEdit] node, updates its own cache.
diff --git a/doc/classes/TCPServer.xml b/doc/classes/TCPServer.xml
index 7160055c6d..9692693eff 100644
--- a/doc/classes/TCPServer.xml
+++ b/doc/classes/TCPServer.xml
@@ -10,33 +10,27 @@
</tutorials>
<methods>
<method name="get_local_port" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the local port this server is listening to.
</description>
</method>
<method name="is_connection_available" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if a connection is available for taking.
</description>
</method>
<method name="is_listening" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the server is currently listening for connections.
</description>
</method>
<method name="listen">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
- <argument index="1" name="bind_address" type="String" default="&quot;*&quot;">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="port" type="int" />
+ <argument index="1" name="bind_address" type="String" default="&quot;*&quot;" />
<description>
Listen on the [code]port[/code] binding to [code]bind_address[/code].
If [code]bind_address[/code] is set as [code]"*"[/code] (default), the server will listen on all available addresses (both IPv4 and IPv6).
@@ -45,15 +39,13 @@
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops listening.
</description>
</method>
<method name="take_connection">
- <return type="StreamPeerTCP">
- </return>
+ <return type="StreamPeerTCP" />
<description>
If a connection is available, returns a StreamPeerTCP with the connection.
</description>
diff --git a/doc/classes/TabContainer.xml b/doc/classes/TabContainer.xml
index 3f24509ec7..fbda005865 100644
--- a/doc/classes/TabContainer.xml
+++ b/doc/classes/TabContainer.xml
@@ -13,124 +13,98 @@
</tutorials>
<methods>
<method name="get_current_tab_control" qualifiers="const">
- <return type="Control">
- </return>
+ <return type="Control" />
<description>
Returns the child [Control] node located at the active tab index.
</description>
</method>
<method name="get_popup" qualifiers="const">
- <return type="Popup">
- </return>
+ <return type="Popup" />
<description>
Returns the [Popup] node instance if one has been set already with [method set_popup].
</description>
</method>
<method name="get_previous_tab" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the previously active tab index.
</description>
</method>
<method name="get_tab_control" qualifiers="const">
- <return type="Control">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="Control" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Returns the [Control] node from the tab at index [code]tab_idx[/code].
</description>
</method>
<method name="get_tab_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of tabs.
</description>
</method>
<method name="get_tab_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is disabled.
</description>
</method>
<method name="get_tab_icon" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Returns the [Texture2D] for the tab at index [code]tab_idx[/code] or [code]null[/code] if the tab has no [Texture2D].
</description>
</method>
<method name="get_tab_title" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Returns the title of the tab at index [code]tab_idx[/code]. Tab titles default to the name of the indexed child node, but this can be overridden with [method set_tab_title].
</description>
</method>
<method name="get_tabs_rearrange_group" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the [TabContainer] rearrange group id.
</description>
</method>
<method name="set_popup">
- <return type="void">
- </return>
- <argument index="0" name="popup" type="Node">
- </argument>
+ <return type="void" />
+ <argument index="0" name="popup" type="Node" />
<description>
If set on a [Popup] node instance, a popup menu icon appears in the top-right corner of the [TabContainer]. Clicking it will expand the [Popup] node.
</description>
</method>
<method name="set_tab_disabled">
- <return type="void">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
- <argument index="1" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_idx" type="int" />
+ <argument index="1" name="disabled" type="bool" />
<description>
If [code]disabled[/code] is [code]false[/code], hides the tab at index [code]tab_idx[/code].
[b]Note:[/b] Its title text will remain, unless also removed with [method set_tab_title].
</description>
</method>
<method name="set_tab_icon">
- <return type="void">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
- <argument index="1" name="icon" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_idx" type="int" />
+ <argument index="1" name="icon" type="Texture2D" />
<description>
Sets an icon for the tab at index [code]tab_idx[/code].
</description>
</method>
<method name="set_tab_title">
- <return type="void">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
- <argument index="1" name="title" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_idx" type="int" />
+ <argument index="1" name="title" type="String" />
<description>
Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default to the name of the indexed child node, but this can be overridden with [method set_tab_title].
</description>
</method>
<method name="set_tabs_rearrange_group">
- <return type="void">
- </return>
- <argument index="0" name="group_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="group_id" type="int" />
<description>
Defines rearrange group id, choose for each [TabContainer] the same value to enable tab drag between [TabContainer]. Enable drag with [code]set_drag_to_rearrange_enabled(true)[/code].
</description>
@@ -163,15 +137,13 @@
</description>
</signal>
<signal name="tab_changed">
- <argument index="0" name="tab" type="int">
- </argument>
+ <argument index="0" name="tab" type="int" />
<description>
Emitted when switching to another tab.
</description>
</signal>
<signal name="tab_selected">
- <argument index="0" name="tab" type="int">
- </argument>
+ <argument index="0" name="tab" type="int" />
<description>
Emitted when a tab is selected, even if it is the current tab.
</description>
@@ -189,61 +161,61 @@
</constant>
</constants>
<theme_items>
- <theme_item name="decrement" type="Texture2D">
+ <theme_item name="decrement" data_type="icon" type="Texture2D">
Icon for the left arrow button that appears when there are too many tabs to fit in the container width. When the button is disabled (i.e. the first tab is visible), it appears semi-transparent.
</theme_item>
- <theme_item name="decrement_highlight" type="Texture2D">
+ <theme_item name="decrement_highlight" data_type="icon" type="Texture2D">
Icon for the left arrow button that appears when there are too many tabs to fit in the container width. Used when the button is being hovered with the cursor.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
The font used to draw tab names.
</theme_item>
- <theme_item name="font_disabled_color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
+ <theme_item name="font_disabled_color" data_type="color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
Font color of disabled tabs.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the tab name.
</theme_item>
- <theme_item name="font_selected_color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
+ <theme_item name="font_selected_color" data_type="color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
Font color of the currently selected tab.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the tab names.
</theme_item>
- <theme_item name="font_unselected_color" type="Color" default="Color(0.69, 0.69, 0.69, 1)">
+ <theme_item name="font_unselected_color" data_type="color" type="Color" default="Color(0.69, 0.69, 0.69, 1)">
Font color of the other, unselected tabs.
</theme_item>
- <theme_item name="icon_separation" type="int" default="4">
+ <theme_item name="icon_separation" data_type="constant" type="int" default="4">
Space between tab's name and its icon.
</theme_item>
- <theme_item name="increment" type="Texture2D">
+ <theme_item name="increment" data_type="icon" type="Texture2D">
Icon for the right arrow button that appears when there are too many tabs to fit in the container width. When the button is disabled (i.e. the last tab is visible) it appears semi-transparent.
</theme_item>
- <theme_item name="increment_highlight" type="Texture2D">
+ <theme_item name="increment_highlight" data_type="icon" type="Texture2D">
Icon for the right arrow button that appears when there are too many tabs to fit in the container width. Used when the button is being hovered with the cursor.
</theme_item>
- <theme_item name="menu" type="Texture2D">
+ <theme_item name="menu" data_type="icon" type="Texture2D">
The icon for the menu button (see [method set_popup]).
</theme_item>
- <theme_item name="menu_highlight" type="Texture2D">
+ <theme_item name="menu_highlight" data_type="icon" type="Texture2D">
The icon for the menu button (see [method set_popup]) when it's being hovered with the cursor.
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the tab text outline.
</theme_item>
- <theme_item name="panel" type="StyleBox">
+ <theme_item name="panel" data_type="style" type="StyleBox">
The style for the background fill.
</theme_item>
- <theme_item name="side_margin" type="int" default="8">
+ <theme_item name="side_margin" data_type="constant" type="int" default="8">
The space at the left and right edges of the tab bar.
</theme_item>
- <theme_item name="tab_disabled" type="StyleBox">
+ <theme_item name="tab_disabled" data_type="style" type="StyleBox">
The style of disabled tabs.
</theme_item>
- <theme_item name="tab_selected" type="StyleBox">
+ <theme_item name="tab_selected" data_type="style" type="StyleBox">
The style of the currently selected tab.
</theme_item>
- <theme_item name="tab_unselected" type="StyleBox">
+ <theme_item name="tab_unselected" data_type="style" type="StyleBox">
The style of the other, unselected tabs.
</theme_item>
</theme_items>
diff --git a/doc/classes/Tabs.xml b/doc/classes/Tabs.xml
index aff104c922..f4c89a8b16 100644
--- a/doc/classes/Tabs.xml
+++ b/doc/classes/Tabs.xml
@@ -10,244 +10,188 @@
</tutorials>
<methods>
<method name="add_tab">
- <return type="void">
- </return>
- <argument index="0" name="title" type="String" default="&quot;&quot;">
- </argument>
- <argument index="1" name="icon" type="Texture2D" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="title" type="String" default="&quot;&quot;" />
+ <argument index="1" name="icon" type="Texture2D" default="null" />
<description>
Adds a new tab.
</description>
</method>
<method name="clear_tab_opentype_features">
- <return type="void">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Removes all OpenType features from the tab title.
</description>
</method>
<method name="ensure_tab_visible">
- <return type="void">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="idx" type="int" />
<description>
Moves the scroll view to make the tab visible.
</description>
</method>
<method name="get_offset_buttons_visible" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the offset buttons (the ones that appear when there's not enough space for all tabs) are visible.
</description>
</method>
<method name="get_previous_tab" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the previously active tab index.
</description>
</method>
<method name="get_select_with_rmb" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if select with right mouse button is enabled.
</description>
</method>
<method name="get_tab_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of tabs.
</description>
</method>
<method name="get_tab_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is disabled.
</description>
</method>
<method name="get_tab_icon" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Returns the [Texture2D] for the tab at index [code]tab_idx[/code] or [code]null[/code] if the tab has no [Texture2D].
</description>
</method>
<method name="get_tab_language" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Returns tab title language code.
</description>
</method>
<method name="get_tab_offset" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of hidden tabs offsetted to the left.
</description>
</method>
<method name="get_tab_opentype_feature" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="tab_idx" type="int" />
+ <argument index="1" name="tag" type="String" />
<description>
Returns OpenType feature [code]tag[/code] of the tab title.
</description>
</method>
<method name="get_tab_rect" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Returns tab [Rect2] with local position and size.
</description>
</method>
<method name="get_tab_text_direction" qualifiers="const">
- <return type="int" enum="Control.TextDirection">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="int" enum="Control.TextDirection" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Returns tab title text base writing direction.
</description>
</method>
<method name="get_tab_title" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Returns the title of the tab at index [code]tab_idx[/code]. Tab titles default to the name of the indexed child node, but this can be overridden with [method set_tab_title].
</description>
</method>
<method name="get_tabs_rearrange_group" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the [Tabs]' rearrange group ID.
</description>
</method>
<method name="move_tab">
- <return type="void">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
- <argument index="1" name="to" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from" type="int" />
+ <argument index="1" name="to" type="int" />
<description>
Moves a tab from [code]from[/code] to [code]to[/code].
</description>
</method>
<method name="remove_tab">
- <return type="void">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_idx" type="int" />
<description>
Removes the tab at index [code]tab_idx[/code].
</description>
</method>
<method name="set_select_with_rmb">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enabled" type="bool" />
<description>
If [code]true[/code], enables selecting a tab with the right mouse button.
</description>
</method>
<method name="set_tab_disabled">
- <return type="void">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
- <argument index="1" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_idx" type="int" />
+ <argument index="1" name="disabled" type="bool" />
<description>
If [code]disabled[/code] is [code]false[/code], hides the tab at index [code]tab_idx[/code].
[b]Note:[/b] Its title text will remain unless it is also removed with [method set_tab_title].
</description>
</method>
<method name="set_tab_icon">
- <return type="void">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
- <argument index="1" name="icon" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_idx" type="int" />
+ <argument index="1" name="icon" type="Texture2D" />
<description>
Sets an [code]icon[/code] for the tab at index [code]tab_idx[/code].
</description>
</method>
<method name="set_tab_language">
- <return type="void">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
- <argument index="1" name="language" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_idx" type="int" />
+ <argument index="1" name="language" type="String" />
<description>
Sets language code of tab title used for line-breaking and text shaping algorithms, if left empty current locale is used instead.
</description>
</method>
<method name="set_tab_opentype_feature">
- <return type="void">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
- <argument index="2" name="values" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_idx" type="int" />
+ <argument index="1" name="tag" type="String" />
+ <argument index="2" name="values" type="int" />
<description>
Sets OpenType feature [code]tag[/code] for the tab title. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url].
</description>
</method>
<method name="set_tab_text_direction">
- <return type="void">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
- <argument index="1" name="direction" type="int" enum="Control.TextDirection">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_idx" type="int" />
+ <argument index="1" name="direction" type="int" enum="Control.TextDirection" />
<description>
Sets tab title base writing direction.
</description>
</method>
<method name="set_tab_title">
- <return type="void">
- </return>
- <argument index="0" name="tab_idx" type="int">
- </argument>
- <argument index="1" name="title" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_idx" type="int" />
+ <argument index="1" name="title" type="String" />
<description>
Sets a [code]title[/code] for the tab at index [code]tab_idx[/code].
</description>
</method>
<method name="set_tabs_rearrange_group">
- <return type="void">
- </return>
- <argument index="0" name="group_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="group_id" type="int" />
<description>
Defines the rearrange group ID. Choose for each [Tabs] the same value to dragging tabs between [Tabs]. Enable drag with [code]set_drag_to_rearrange_enabled(true)[/code].
</description>
@@ -275,43 +219,37 @@
</members>
<signals>
<signal name="reposition_active_tab_request">
- <argument index="0" name="idx_to" type="int">
- </argument>
+ <argument index="0" name="idx_to" type="int" />
<description>
Emitted when the active tab is rearranged via mouse drag. See [member drag_to_rearrange_enabled].
</description>
</signal>
<signal name="right_button_pressed">
- <argument index="0" name="tab" type="int">
- </argument>
+ <argument index="0" name="tab" type="int" />
<description>
Emitted when a tab is right-clicked.
</description>
</signal>
<signal name="tab_changed">
- <argument index="0" name="tab" type="int">
- </argument>
+ <argument index="0" name="tab" type="int" />
<description>
Emitted when switching to another tab.
</description>
</signal>
<signal name="tab_clicked">
- <argument index="0" name="tab" type="int">
- </argument>
+ <argument index="0" name="tab" type="int" />
<description>
Emitted when a tab is clicked, even if it is the current tab.
</description>
</signal>
<signal name="tab_closed">
- <argument index="0" name="tab" type="int">
- </argument>
+ <argument index="0" name="tab" type="int" />
<description>
Emitted when a tab is closed.
</description>
</signal>
<signal name="tab_hovered">
- <argument index="0" name="tab" type="int">
- </argument>
+ <argument index="0" name="tab" type="int" />
<description>
Emitted when a tab is hovered by the mouse.
</description>
@@ -344,58 +282,58 @@
</constant>
</constants>
<theme_items>
- <theme_item name="button" type="StyleBox">
+ <theme_item name="button" data_type="style" type="StyleBox">
Background of the close button when it's being hovered with the cursor.
</theme_item>
- <theme_item name="button_pressed" type="StyleBox">
+ <theme_item name="button_pressed" data_type="style" type="StyleBox">
Background of the close button when it's being pressed.
</theme_item>
- <theme_item name="close" type="Texture2D">
+ <theme_item name="close" data_type="icon" type="Texture2D">
The icon for the close button (see [member tab_close_display_policy]).
</theme_item>
- <theme_item name="decrement" type="Texture2D">
+ <theme_item name="decrement" data_type="icon" type="Texture2D">
Icon for the left arrow button that appears when there are too many tabs to fit in the container width. When the button is disabled (i.e. the first tab is visible), it appears semi-transparent.
</theme_item>
- <theme_item name="decrement_highlight" type="Texture2D">
+ <theme_item name="decrement_highlight" data_type="icon" type="Texture2D">
Icon for the left arrow button that appears when there are too many tabs to fit in the container width. Used when the button is being hovered with the cursor.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
The font used to draw tab names.
</theme_item>
- <theme_item name="font_disabled_color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
+ <theme_item name="font_disabled_color" data_type="color" type="Color" default="Color(0.9, 0.9, 0.9, 0.2)">
Font color of disabled tabs.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the tab name.
</theme_item>
- <theme_item name="font_selected_color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
+ <theme_item name="font_selected_color" data_type="color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
Font color of the currently selected tab.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the tab names.
</theme_item>
- <theme_item name="font_unselected_color" type="Color" default="Color(0.69, 0.69, 0.69, 1)">
+ <theme_item name="font_unselected_color" data_type="color" type="Color" default="Color(0.69, 0.69, 0.69, 1)">
Font color of the other, unselected tabs.
</theme_item>
- <theme_item name="hseparation" type="int" default="4">
+ <theme_item name="hseparation" data_type="constant" type="int" default="4">
The horizontal separation between the tabs.
</theme_item>
- <theme_item name="increment" type="Texture2D">
+ <theme_item name="increment" data_type="icon" type="Texture2D">
Icon for the right arrow button that appears when there are too many tabs to fit in the container width. When the button is disabled (i.e. the last tab is visible) it appears semi-transparent.
</theme_item>
- <theme_item name="increment_highlight" type="Texture2D">
+ <theme_item name="increment_highlight" data_type="icon" type="Texture2D">
Icon for the right arrow button that appears when there are too many tabs to fit in the container width. Used when the button is being hovered with the cursor.
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the tab text outline.
</theme_item>
- <theme_item name="tab_disabled" type="StyleBox">
+ <theme_item name="tab_disabled" data_type="style" type="StyleBox">
The style of disabled tabs.
</theme_item>
- <theme_item name="tab_selected" type="StyleBox">
+ <theme_item name="tab_selected" data_type="style" type="StyleBox">
The style of the currently selected tab.
</theme_item>
- <theme_item name="tab_unselected" type="StyleBox">
+ <theme_item name="tab_unselected" data_type="style" type="StyleBox">
The style of the other, unselected tabs.
</theme_item>
</theme_items>
diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml
index e51bf42bdb..7b34b3c461 100644
--- a/doc/classes/TextEdit.xml
+++ b/doc/classes/TextEdit.xml
@@ -11,92 +11,80 @@
</tutorials>
<methods>
<method name="_backspace" qualifiers="virtual">
- <return type="void">
- </return>
+ <return type="void" />
<description>
A virtual method that is called whenever backspace is triggered.
</description>
</method>
+ <method name="_handle_unicode_input" qualifiers="virtual">
+ <return type="void" />
+ <argument index="0" name="unicode" type="int" />
+ <description>
+ </description>
+ </method>
<method name="add_gutter">
- <return type="void">
- </return>
- <argument index="0" name="at" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="at" type="int" default="-1" />
<description>
</description>
</method>
<method name="backspace">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Causes the [TextEdit] to perform a backspace.
</description>
</method>
<method name="center_viewport_to_cursor">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Centers the viewport on the line the editing cursor is at. This also resets the [member scroll_horizontal] value to [code]0[/code].
</description>
</method>
<method name="clear_opentype_features">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all OpenType features.
</description>
</method>
<method name="clear_undo_history">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the undo history.
</description>
</method>
<method name="copy">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Copy's the current text selection.
</description>
</method>
<method name="cursor_get_column" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the column the editing cursor is at.
</description>
</method>
<method name="cursor_get_line" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the line the editing cursor is at.
</description>
</method>
<method name="cursor_set_column">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="adjust_viewport" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="adjust_viewport" type="bool" default="true" />
<description>
Moves the cursor at the specified [code]column[/code] index.
If [code]adjust_viewport[/code] is set to [code]true[/code], the viewport will center at the cursor position after the move occurs.
</description>
</method>
<method name="cursor_set_line">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="adjust_viewport" type="bool" default="true">
- </argument>
- <argument index="2" name="can_be_hidden" type="bool" default="true">
- </argument>
- <argument index="3" name="wrap_index" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="adjust_viewport" type="bool" default="true" />
+ <argument index="2" name="can_be_hidden" type="bool" default="true" />
+ <argument index="3" name="wrap_index" type="int" default="0" />
<description>
Moves the cursor at the specified [code]line[/code] index.
If [code]adjust_viewport[/code] is set to [code]true[/code], the viewport will center at the cursor position after the move occurs.
@@ -104,350 +92,286 @@
</description>
</method>
<method name="cut">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Cut's the current selection.
</description>
</method>
<method name="delete_selection">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="deselect">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Deselects the current selection.
</description>
</method>
<method name="get_caret_draw_pos" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
- Gets the caret pixel draw poistion.
+ Gets the caret pixel draw position.
</description>
</method>
<method name="get_first_non_whitespace_column" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="line" type="int" />
<description>
</description>
</method>
<method name="get_gutter_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_gutter_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="gutter" type="int" />
<description>
</description>
</method>
<method name="get_gutter_type" qualifiers="const">
- <return type="int" enum="TextEdit.GutterType">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
+ <return type="int" enum="TextEdit.GutterType" />
+ <argument index="0" name="gutter" type="int" />
<description>
</description>
</method>
<method name="get_gutter_width" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="gutter" type="int" />
<description>
</description>
</method>
<method name="get_indent_level" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="line" type="int" />
<description>
Returns the indent level of a specific line.
</description>
</method>
<method name="get_line" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="line" type="int" />
<description>
Returns the text of a specific line.
</description>
</method>
<method name="get_line_background_color">
- <return type="Color">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="line" type="int" />
<description>
Returns the current background color of the line. [code]Color(0, 0, 0, 0)[/code] is returned if no color is set.
</description>
</method>
<method name="get_line_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of total lines in the text.
</description>
</method>
<method name="get_line_gutter_icon" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="gutter" type="int">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="gutter" type="int" />
<description>
</description>
</method>
<method name="get_line_gutter_item_color">
- <return type="Color">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="gutter" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="gutter" type="int" />
<description>
</description>
</method>
<method name="get_line_gutter_metadata" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="gutter" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="gutter" type="int" />
<description>
</description>
</method>
<method name="get_line_gutter_text" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="gutter" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="gutter" type="int" />
<description>
</description>
</method>
<method name="get_menu" qualifiers="const">
- <return type="PopupMenu">
- </return>
+ <return type="PopupMenu" />
<description>
Returns the [PopupMenu] of this [TextEdit]. By default, this menu is displayed when right-clicking on the [TextEdit].
</description>
</method>
<method name="get_opentype_feature" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="tag" type="String" />
<description>
Returns OpenType feature [code]tag[/code].
</description>
</method>
<method name="get_selection_column" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_selection_from_column" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the selection begin column.
</description>
</method>
<method name="get_selection_from_line" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the selection begin line.
</description>
</method>
<method name="get_selection_line" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_selection_mode" qualifiers="const">
- <return type="int" enum="TextEdit.SelectionMode">
- </return>
+ <return type="int" enum="TextEdit.SelectionMode" />
<description>
</description>
</method>
<method name="get_selection_text" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the text inside the selection.
</description>
</method>
<method name="get_selection_to_column" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the selection end column.
</description>
</method>
<method name="get_selection_to_line" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the selection end line.
</description>
</method>
<method name="get_tab_size" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the [TextEdit]'s' tab size.
</description>
</method>
+ <method name="get_total_gutter_width" qualifiers="const">
+ <return type="int" />
+ <description>
+ </description>
+ </method>
<method name="get_visible_line_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of visible lines, including wrapped text.
</description>
</method>
<method name="get_word_under_cursor" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a [String] text with the word under the caret (text cursor) location.
</description>
</method>
<method name="insert_text_at_cursor">
- <return type="void">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="text" type="String" />
<description>
Insert the specified text at the cursor position.
</description>
</method>
<method name="is_caret_visible" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the caret is visible on the screen.
</description>
</method>
+ <method name="is_dragging_cursor" qualifiers="const">
+ <return type="bool" />
+ <description>
+ </description>
+ </method>
<method name="is_gutter_clickable" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="gutter" type="int" />
<description>
</description>
</method>
<method name="is_gutter_drawn" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="gutter" type="int" />
<description>
</description>
</method>
<method name="is_gutter_overwritable" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="gutter" type="int" />
<description>
</description>
</method>
<method name="is_line_gutter_clickable" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="gutter" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="gutter" type="int" />
<description>
</description>
</method>
<method name="is_menu_visible" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether the menu is visible. Use this instead of [code]get_menu().visible[/code] to improve performance (so the creation of the menu is avoided).
</description>
</method>
<method name="is_selection_active" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the selection is active.
</description>
</method>
<method name="menu_option">
- <return type="void">
- </return>
- <argument index="0" name="option" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="option" type="int" />
<description>
Triggers a right-click menu action by the specified index. See [enum MenuItems] for a list of available indexes.
</description>
</method>
<method name="merge_gutters">
- <return type="void">
- </return>
- <argument index="0" name="from_line" type="int">
- </argument>
- <argument index="1" name="to_line" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_line" type="int" />
+ <argument index="1" name="to_line" type="int" />
<description>
</description>
</method>
<method name="paste">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Paste the current selection.
</description>
</method>
<method name="redo">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Perform redo operation.
</description>
</method>
<method name="remove_gutter">
- <return type="void">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="gutter" type="int" />
<description>
</description>
</method>
<method name="search" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="key" type="String">
- </argument>
- <argument index="1" name="flags" type="int">
- </argument>
- <argument index="2" name="from_line" type="int">
- </argument>
- <argument index="3" name="from_column" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="key" type="String" />
+ <argument index="1" name="flags" type="int" />
+ <argument index="2" name="from_line" type="int" />
+ <argument index="3" name="from_column" type="int" />
<description>
Perform a search inside the text. Search flags can be specified in the [enum SearchFlags] enum.
Returns an empty [code]Dictionary[/code] if no result was found. Otherwise, returns a [code]Dictionary[/code] containing [code]line[/code] and [code]column[/code] entries, e.g:
@@ -472,218 +396,154 @@
</description>
</method>
<method name="select">
- <return type="void">
- </return>
- <argument index="0" name="from_line" type="int">
- </argument>
- <argument index="1" name="from_column" type="int">
- </argument>
- <argument index="2" name="to_line" type="int">
- </argument>
- <argument index="3" name="to_column" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_line" type="int" />
+ <argument index="1" name="from_column" type="int" />
+ <argument index="2" name="to_line" type="int" />
+ <argument index="3" name="to_column" type="int" />
<description>
Perform selection, from line/column to line/column.
If [member selecting_enabled] is [code]false[/code], no selection will occur.
</description>
</method>
<method name="select_all">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Select all the text.
If [member selecting_enabled] is [code]false[/code], no selection will occur.
</description>
</method>
<method name="set_gutter_clickable">
- <return type="void">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
- <argument index="1" name="clickable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="gutter" type="int" />
+ <argument index="1" name="clickable" type="bool" />
<description>
</description>
</method>
<method name="set_gutter_custom_draw">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="object" type="Object">
- </argument>
- <argument index="2" name="callback" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="object" type="Object" />
+ <argument index="2" name="callback" type="StringName" />
<description>
</description>
</method>
<method name="set_gutter_draw">
- <return type="void">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
- <argument index="1" name="draw" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="gutter" type="int" />
+ <argument index="1" name="draw" type="bool" />
<description>
</description>
</method>
<method name="set_gutter_name">
- <return type="void">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="gutter" type="int" />
+ <argument index="1" name="name" type="String" />
<description>
</description>
</method>
<method name="set_gutter_overwritable">
- <return type="void">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
- <argument index="1" name="overwritable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="gutter" type="int" />
+ <argument index="1" name="overwritable" type="bool" />
<description>
</description>
</method>
<method name="set_gutter_type">
- <return type="void">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
- <argument index="1" name="type" type="int" enum="TextEdit.GutterType">
- </argument>
+ <return type="void" />
+ <argument index="0" name="gutter" type="int" />
+ <argument index="1" name="type" type="int" enum="TextEdit.GutterType" />
<description>
</description>
</method>
<method name="set_gutter_width">
- <return type="void">
- </return>
- <argument index="0" name="gutter" type="int">
- </argument>
- <argument index="1" name="width" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="gutter" type="int" />
+ <argument index="1" name="width" type="int" />
<description>
</description>
</method>
<method name="set_line">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="new_text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="new_text" type="String" />
<description>
Sets the text for a specific line.
</description>
</method>
<method name="set_line_background_color">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the current background color of the line. Set to [code]Color(0, 0, 0, 0)[/code] for no color.
</description>
</method>
<method name="set_line_gutter_clickable">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="gutter" type="int">
- </argument>
- <argument index="2" name="clickable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="gutter" type="int" />
+ <argument index="2" name="clickable" type="bool" />
<description>
</description>
</method>
<method name="set_line_gutter_icon">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="gutter" type="int">
- </argument>
- <argument index="2" name="icon" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="gutter" type="int" />
+ <argument index="2" name="icon" type="Texture2D" />
<description>
</description>
</method>
<method name="set_line_gutter_item_color">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="gutter" type="int">
- </argument>
- <argument index="2" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="gutter" type="int" />
+ <argument index="2" name="color" type="Color" />
<description>
</description>
</method>
<method name="set_line_gutter_metadata">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="gutter" type="int">
- </argument>
- <argument index="2" name="metadata" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="gutter" type="int" />
+ <argument index="2" name="metadata" type="Variant" />
<description>
</description>
</method>
<method name="set_line_gutter_text">
- <return type="void">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="gutter" type="int">
- </argument>
- <argument index="2" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="gutter" type="int" />
+ <argument index="2" name="text" type="String" />
<description>
</description>
</method>
<method name="set_opentype_feature">
- <return type="void">
- </return>
- <argument index="0" name="tag" type="String">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tag" type="String" />
+ <argument index="1" name="value" type="int" />
<description>
Sets OpenType feature [code]tag[/code]. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url].
</description>
</method>
<method name="set_selection_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="TextEdit.SelectionMode">
- </argument>
- <argument index="1" name="line" type="int" default="-1">
- </argument>
- <argument index="2" name="column" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mode" type="int" enum="TextEdit.SelectionMode" />
+ <argument index="1" name="line" type="int" default="-1" />
+ <argument index="2" name="column" type="int" default="-1" />
<description>
</description>
</method>
<method name="set_tab_size">
- <return type="void">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="size" type="int" />
<description>
Sets the tab size for the [TextEdit] to use.
</description>
</method>
<method name="undo">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Perform undo operation.
</description>
@@ -795,10 +655,8 @@
</description>
</signal>
<signal name="gutter_clicked">
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="gutter" type="int">
- </argument>
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="gutter" type="int" />
<description>
</description>
</signal>
@@ -807,26 +665,8 @@
</description>
</signal>
<signal name="lines_edited_from">
- <argument index="0" name="from_line" type="int">
- </argument>
- <argument index="1" name="to_line" type="int">
- </argument>
- <description>
- </description>
- </signal>
- <signal name="symbol_lookup">
- <argument index="0" name="symbol" type="String">
- </argument>
- <argument index="1" name="row" type="int">
- </argument>
- <argument index="2" name="column" type="int">
- </argument>
- <description>
- </description>
- </signal>
- <signal name="symbol_validate">
- <argument index="0" name="symbol" type="String">
- </argument>
+ <argument index="0" name="from_line" type="int" />
+ <argument index="1" name="to_line" type="int" />
<description>
</description>
</signal>
@@ -951,59 +791,61 @@
</constant>
</constants>
<theme_items>
- <theme_item name="background_color" type="Color" default="Color(0, 0, 0, 0)">
+ <theme_item name="background_color" data_type="color" type="Color" default="Color(0, 0, 0, 0)">
Sets the background [Color] of this [TextEdit].
</theme_item>
- <theme_item name="brace_mismatch_color" type="Color" default="Color(1, 0.2, 0.2, 1)">
- </theme_item>
- <theme_item name="caret_background_color" type="Color" default="Color(0, 0, 0, 1)">
+ <theme_item name="caret_background_color" data_type="color" type="Color" default="Color(0, 0, 0, 1)">
+ [Color] of the text behind the caret when block caret is enabled.
</theme_item>
- <theme_item name="caret_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="caret_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ [Color] of the caret.
</theme_item>
- <theme_item name="current_line_color" type="Color" default="Color(0.25, 0.25, 0.26, 0.8)">
- Sets the [Color] of the breakpoints. [member breakpoint_gutter] has to be enabled.
+ <theme_item name="current_line_color" data_type="color" type="Color" default="Color(0.25, 0.25, 0.26, 0.8)">
+ Background [Color] of the line containing the caret.
</theme_item>
- <theme_item name="focus" type="StyleBox">
+ <theme_item name="focus" data_type="style" type="StyleBox">
+ Sets the [StyleBox] when in focus.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
Sets the default [Font].
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
Sets the font [Color].
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the [TextEdit].
</theme_item>
- <theme_item name="font_readonly_color" type="Color" default="Color(0.88, 0.88, 0.88, 0.5)">
+ <theme_item name="font_readonly_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 0.5)">
+ Sets the font [Color] when [member readonly] is enabled.
</theme_item>
- <theme_item name="font_selected_color" type="Color" default="Color(0, 0, 0, 1)">
+ <theme_item name="font_selected_color" data_type="color" type="Color" default="Color(0, 0, 0, 1)">
Sets the [Color] of the selected text. [member override_selected_font_color] has to be enabled.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Sets default font size.
</theme_item>
- <theme_item name="line_spacing" type="int" default="4">
+ <theme_item name="line_spacing" data_type="constant" type="int" default="4">
Sets the spacing between the lines.
</theme_item>
- <theme_item name="normal" type="StyleBox">
+ <theme_item name="normal" data_type="style" type="StyleBox">
Sets the [StyleBox] of this [TextEdit].
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
- <theme_item name="read_only" type="StyleBox">
+ <theme_item name="read_only" data_type="style" type="StyleBox">
Sets the [StyleBox] of this [TextEdit] when [member readonly] is enabled.
</theme_item>
- <theme_item name="selection_color" type="Color" default="Color(0.49, 0.49, 0.49, 1)">
+ <theme_item name="selection_color" data_type="color" type="Color" default="Color(0.49, 0.49, 0.49, 1)">
Sets the highlight [Color] of text selections.
</theme_item>
- <theme_item name="space" type="Texture2D">
+ <theme_item name="space" data_type="icon" type="Texture2D">
Sets a custom [Texture2D] for space text characters.
</theme_item>
- <theme_item name="tab" type="Texture2D">
+ <theme_item name="tab" data_type="icon" type="Texture2D">
Sets a custom [Texture2D] for tab text characters.
</theme_item>
- <theme_item name="word_highlighted_color" type="Color" default="Color(0.8, 0.9, 0.9, 0.15)">
+ <theme_item name="word_highlighted_color" data_type="color" type="Color" default="Color(0.8, 0.9, 0.9, 0.15)">
Sets the highlight [Color] of multiple occurrences. [member highlight_all_occurrences] has to be enabled.
</theme_item>
</theme_items>
diff --git a/doc/classes/TextLine.xml b/doc/classes/TextLine.xml
index 318c3be794..cc66f56d65 100644
--- a/doc/classes/TextLine.xml
+++ b/doc/classes/TextLine.xml
@@ -10,175 +10,134 @@
</tutorials>
<methods>
<method name="add_object">
- <return type="bool">
- </return>
- <argument index="0" name="key" type="Variant">
- </argument>
- <argument index="1" name="size" type="Vector2">
- </argument>
- <argument index="2" name="inline_align" type="int" enum="VAlign" default="1">
- </argument>
- <argument index="3" name="length" type="int" default="1">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="key" type="Variant" />
+ <argument index="1" name="size" type="Vector2" />
+ <argument index="2" name="inline_align" type="int" enum="VAlign" default="1" />
+ <argument index="3" name="length" type="int" default="1" />
<description>
Adds inline object to the text buffer, [code]key[/code] must be unique. In the text, object is represented as [code]length[/code] object replacement characters.
</description>
</method>
<method name="add_string">
- <return type="bool">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
- <argument index="1" name="fonts" type="Font">
- </argument>
- <argument index="2" name="size" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="text" type="String" />
+ <argument index="1" name="fonts" type="Font" />
+ <argument index="2" name="size" type="int" />
<argument index="3" name="opentype_features" type="Dictionary" default="{
-}">
- </argument>
- <argument index="4" name="language" type="String" default="&quot;&quot;">
- </argument>
+}" />
+ <argument index="4" name="language" type="String" default="&quot;&quot;" />
<description>
Adds text span and font to draw it.
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears text line (removes text and inline objects).
</description>
</method>
<method name="draw" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw text into a canvas item at a given position, with [code]color[/code]. [code]pos[/code] specifies the top left corner of the bounding box.
</description>
</method>
<method name="draw_outline" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="outline_size" type="int" default="1">
- </argument>
- <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="outline_size" type="int" default="1" />
+ <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw text into a canvas item at a given position, with [code]color[/code]. [code]pos[/code] specifies the top left corner of the bounding box.
</description>
</method>
<method name="get_line_ascent" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the text ascent (number of pixels above the baseline for horizontal layout or to the left of baseline for vertical).
</description>
</method>
<method name="get_line_descent" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the text descent (number of pixels below the baseline for horizontal layout or to the right of baseline for vertical).
</description>
</method>
<method name="get_line_underline_position" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns pixel offset of the underline below the baseline.
</description>
</method>
<method name="get_line_underline_thickness" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns thickness of the underline.
</description>
</method>
<method name="get_line_width" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns width (for horizontal layout) or height (for vertical) of the text.
</description>
</method>
<method name="get_object_rect" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="key" type="Variant">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="key" type="Variant" />
<description>
Returns bounding rectangle of the inline object.
</description>
</method>
<method name="get_objects" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns array of inline objects.
</description>
</method>
<method name="get_rid" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns TextServer buffer RID.
</description>
</method>
<method name="get_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns size of the bounding box of the text.
</description>
</method>
<method name="hit_test" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="coords" type="float">
- </argument>
+ <return type="int" />
+ <argument index="0" name="coords" type="float" />
<description>
Returns caret character offset at the specified pixel offset at the baseline. This function always returns a valid position.
</description>
</method>
<method name="resize_object">
- <return type="bool">
- </return>
- <argument index="0" name="key" type="Variant">
- </argument>
- <argument index="1" name="size" type="Vector2">
- </argument>
- <argument index="2" name="inline_align" type="int" enum="VAlign" default="1">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="key" type="Variant" />
+ <argument index="1" name="size" type="Vector2" />
+ <argument index="2" name="inline_align" type="int" enum="VAlign" default="1" />
<description>
Sets new size and alignment of embedded object.
</description>
</method>
<method name="set_bidi_override">
- <return type="void">
- </return>
- <argument index="0" name="override" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="override" type="Array" />
<description>
Overrides BiDi for the structured text.
Override ranges should cover full source text without overlaps. BiDi algorithm will be used on each range separately.
</description>
</method>
<method name="tab_align">
- <return type="void">
- </return>
- <argument index="0" name="tab_stops" type="PackedFloat32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_stops" type="PackedFloat32Array" />
<description>
Aligns text to the given tab-stops.
</description>
diff --git a/doc/classes/TextParagraph.xml b/doc/classes/TextParagraph.xml
index d67a9bcb85..9050f9246a 100644
--- a/doc/classes/TextParagraph.xml
+++ b/doc/classes/TextParagraph.xml
@@ -10,356 +10,265 @@
</tutorials>
<methods>
<method name="add_object">
- <return type="bool">
- </return>
- <argument index="0" name="key" type="Variant">
- </argument>
- <argument index="1" name="size" type="Vector2">
- </argument>
- <argument index="2" name="inline_align" type="int" enum="VAlign" default="1">
- </argument>
- <argument index="3" name="length" type="int" default="1">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="key" type="Variant" />
+ <argument index="1" name="size" type="Vector2" />
+ <argument index="2" name="inline_align" type="int" enum="VAlign" default="1" />
+ <argument index="3" name="length" type="int" default="1" />
<description>
Adds inline object to the text buffer, [code]key[/code] must be unique. In the text, object is represented as [code]length[/code] object replacement characters.
</description>
</method>
<method name="add_string">
- <return type="bool">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
- <argument index="1" name="fonts" type="Font">
- </argument>
- <argument index="2" name="size" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="text" type="String" />
+ <argument index="1" name="fonts" type="Font" />
+ <argument index="2" name="size" type="int" />
<argument index="3" name="opentype_features" type="Dictionary" default="{
-}">
- </argument>
- <argument index="4" name="language" type="String" default="&quot;&quot;">
- </argument>
+}" />
+ <argument index="4" name="language" type="String" default="&quot;&quot;" />
<description>
Adds text span and font to draw it.
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears text paragraph (removes text and inline objects).
</description>
</method>
<method name="clear_dropcap">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes dropcap.
</description>
</method>
<method name="draw" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="3" name="dc_color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="color" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="3" name="dc_color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw all lines of the text and drop cap into a canvas item at a given position, with [code]color[/code]. [code]pos[/code] specifies the top left corner of the bounding box.
</description>
</method>
<method name="draw_dropcap" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw drop cap into a canvas item at a given position, with [code]color[/code]. [code]pos[/code] specifies the top left corner of the bounding box.
</description>
</method>
<method name="draw_dropcap_outline" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="outline_size" type="int" default="1">
- </argument>
- <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="outline_size" type="int" default="1" />
+ <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw drop cap outline into a canvas item at a given position, with [code]color[/code]. [code]pos[/code] specifies the top left corner of the bounding box.
</description>
</method>
<method name="draw_line" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="line" type="int">
- </argument>
- <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="line" type="int" />
+ <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw single line of text into a canvas item at a given position, with [code]color[/code]. [code]pos[/code] specifies the top left corner of the bounding box.
</description>
</method>
<method name="draw_line_outline" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="line" type="int">
- </argument>
- <argument index="3" name="outline_size" type="int" default="1">
- </argument>
- <argument index="4" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="line" type="int" />
+ <argument index="3" name="outline_size" type="int" default="1" />
+ <argument index="4" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw outline of the single line of text into a canvas item at a given position, with [code]color[/code]. [code]pos[/code] specifies the top left corner of the bounding box.
</description>
</method>
<method name="draw_outline" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="pos" type="Vector2">
- </argument>
- <argument index="2" name="outline_size" type="int" default="1">
- </argument>
- <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="4" name="dc_color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="pos" type="Vector2" />
+ <argument index="2" name="outline_size" type="int" default="1" />
+ <argument index="3" name="color" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="4" name="dc_color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw outlines of all lines of the text and drop cap into a canvas item at a given position, with [code]color[/code]. [code]pos[/code] specifies the top left corner of the bounding box.
</description>
</method>
<method name="get_dropcap_lines" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns number of lines used by dropcap.
</description>
</method>
<method name="get_dropcap_rid" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Return drop cap text buffer RID.
</description>
</method>
<method name="get_dropcap_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns drop cap bounding box size.
</description>
</method>
<method name="get_line_ascent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="line" type="int" />
<description>
Returns the text line ascent (number of pixels above the baseline for horizontal layout or to the left of baseline for vertical).
</description>
</method>
<method name="get_line_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns number of lines in the paragraph.
</description>
</method>
<method name="get_line_descent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="line" type="int" />
<description>
Returns the text line descent (number of pixels below the baseline for horizontal layout or to the right of baseline for vertical).
</description>
</method>
<method name="get_line_object_rect" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
- <argument index="1" name="key" type="Variant">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="line" type="int" />
+ <argument index="1" name="key" type="Variant" />
<description>
Returns bounding rectangle of the inline object.
</description>
</method>
<method name="get_line_objects" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="line" type="int" />
<description>
Returns array of inline objects in the line.
</description>
</method>
<method name="get_line_range" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="line" type="int" />
<description>
Returns character range of the line.
</description>
</method>
<method name="get_line_rid" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="line" type="int" />
<description>
Returns TextServer line buffer RID.
</description>
</method>
<method name="get_line_size" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="line" type="int" />
<description>
Returns size of the bounding box of the line of text.
</description>
</method>
<method name="get_line_underline_position" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="line" type="int" />
<description>
Returns pixel offset of the underline below the baseline.
</description>
</method>
<method name="get_line_underline_thickness" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="line" type="int" />
<description>
Returns thickness of the underline.
</description>
</method>
<method name="get_line_width" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="line" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="line" type="int" />
<description>
Returns width (for horizontal layout) or height (for vertical) of the line of text.
</description>
</method>
<method name="get_non_wraped_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the size of the bounding box of the paragraph, without line breaks.
</description>
</method>
<method name="get_rid" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns TextServer full string buffer RID.
</description>
</method>
<method name="get_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the size of the bounding box of the paragraph.
</description>
</method>
<method name="get_spacing_bottom" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns extra spacing at the bottom of the line. See [member Font.extra_spacing_bottom].
</description>
</method>
<method name="get_spacing_top" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns extra spacing at the top of the line. See [member Font.extra_spacing_top].
</description>
</method>
<method name="hit_test" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="coords" type="Vector2">
- </argument>
+ <return type="int" />
+ <argument index="0" name="coords" type="Vector2" />
<description>
Returns caret character offset at the specified coordinates. This function always returns a valid position.
</description>
</method>
<method name="resize_object">
- <return type="bool">
- </return>
- <argument index="0" name="key" type="Variant">
- </argument>
- <argument index="1" name="size" type="Vector2">
- </argument>
- <argument index="2" name="inline_align" type="int" enum="VAlign" default="1">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="key" type="Variant" />
+ <argument index="1" name="size" type="Vector2" />
+ <argument index="2" name="inline_align" type="int" enum="VAlign" default="1" />
<description>
Sets new size and alignment of embedded object.
</description>
</method>
<method name="set_bidi_override">
- <return type="void">
- </return>
- <argument index="0" name="override" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="override" type="Array" />
<description>
Overrides BiDi for the structured text.
Override ranges should cover full source text without overlaps. BiDi algorithm will be used on each range separately.
</description>
</method>
<method name="set_dropcap">
- <return type="bool">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
- <argument index="1" name="fonts" type="Font">
- </argument>
- <argument index="2" name="size" type="int">
- </argument>
- <argument index="3" name="dropcap_margins" type="Rect2" default="Rect2(0, 0, 0, 0)">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="text" type="String" />
+ <argument index="1" name="fonts" type="Font" />
+ <argument index="2" name="size" type="int" />
+ <argument index="3" name="dropcap_margins" type="Rect2" default="Rect2(0, 0, 0, 0)" />
<argument index="4" name="opentype_features" type="Dictionary" default="{
-}">
- </argument>
- <argument index="5" name="language" type="String" default="&quot;&quot;">
- </argument>
+}" />
+ <argument index="5" name="language" type="String" default="&quot;&quot;" />
<description>
Sets drop cap, overrides previously set drop cap. Drop cap (dropped capital) is a decorative element at the beginning of a paragraph that is larger than the rest of the text.
</description>
</method>
<method name="tab_align">
- <return type="void">
- </return>
- <argument index="0" name="tab_stops" type="PackedFloat32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tab_stops" type="PackedFloat32Array" />
<description>
Aligns paragraph to the given tab-stops.
</description>
diff --git a/doc/classes/TextServer.xml b/doc/classes/TextServer.xml
index 0f9318fda1..dbf7ae93aa 100644
--- a/doc/classes/TextServer.xml
+++ b/doc/classes/TextServer.xml
@@ -10,51 +10,37 @@
</tutorials>
<methods>
<method name="create_font_bitmap">
- <return type="RID">
- </return>
- <argument index="0" name="height" type="float">
- </argument>
- <argument index="1" name="ascent" type="float">
- </argument>
- <argument index="2" name="base_size" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="height" type="float" />
+ <argument index="1" name="ascent" type="float" />
+ <argument index="2" name="base_size" type="int" />
<description>
Creates new, empty bitmap font. To free the resulting font, use [method free_rid] method.
</description>
</method>
<method name="create_font_memory">
- <return type="RID">
- </return>
- <argument index="0" name="data" type="PackedByteArray">
- </argument>
- <argument index="1" name="type" type="String">
- </argument>
- <argument index="2" name="base_size" type="int" default="16">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="data" type="PackedByteArray" />
+ <argument index="1" name="type" type="String" />
+ <argument index="2" name="base_size" type="int" default="16" />
<description>
Creates new font from the data in memory. To free the resulting font, use [method free_rid] method.
Note: For non-scalable fonts [code]base_size[/code] is ignored, use [method font_get_base_size] to check actual font size.
</description>
</method>
<method name="create_font_resource">
- <return type="RID">
- </return>
- <argument index="0" name="filename" type="String">
- </argument>
- <argument index="1" name="base_size" type="int" default="16">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="filename" type="String" />
+ <argument index="1" name="base_size" type="int" default="16" />
<description>
Creates new font from the file. To free the resulting font, use [method free_rid] method.
Note: For non-scalable fonts [code]base_size[/code] is ignored, use [method font_get_base_size] to check actual font size.
</description>
</method>
<method name="create_font_system">
- <return type="RID">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="base_size" type="int" default="16">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="base_size" type="int" default="16" />
<description>
Creates new font from the system font. To free the resulting font, use [method free_rid] method.
Note: This method is supported by servers with the [code]FEATURE_FONT_SYSTEM[/code] feature.
@@ -62,12 +48,9 @@
</description>
</method>
<method name="create_shaped_text">
- <return type="RID">
- </return>
- <argument index="0" name="direction" type="int" enum="TextServer.Direction" default="0">
- </argument>
- <argument index="1" name="orientation" type="int" enum="TextServer.Orientation" default="0">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="direction" type="int" enum="TextServer.Direction" default="0" />
+ <argument index="1" name="orientation" type="int" enum="TextServer.Orientation" default="0" />
<description>
Creates new buffer for complex text layout, with the given [code]direction[/code] and [code]orientation[/code]. To free the resulting buffer, use [method free_rid] method.
Note: Direction is ignored if server does not support [code]FEATURE_BIDI_LAYOUT[/code] feature.
@@ -75,198 +58,138 @@
</description>
</method>
<method name="draw_hex_code_box" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas" type="RID">
- </argument>
- <argument index="1" name="size" type="int">
- </argument>
- <argument index="2" name="pos" type="Vector2">
- </argument>
- <argument index="3" name="index" type="int">
- </argument>
- <argument index="4" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas" type="RID" />
+ <argument index="1" name="size" type="int" />
+ <argument index="2" name="pos" type="Vector2" />
+ <argument index="3" name="index" type="int" />
+ <argument index="4" name="color" type="Color" />
<description>
Draws box displaying character hexadecimal code. Used for replacing missing characters.
</description>
</method>
<method name="font_bitmap_add_char">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="char" type="int">
- </argument>
- <argument index="2" name="texture_idx" type="int">
- </argument>
- <argument index="3" name="rect" type="Rect2">
- </argument>
- <argument index="4" name="align" type="Vector2">
- </argument>
- <argument index="5" name="advance" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="char" type="int" />
+ <argument index="2" name="texture_idx" type="int" />
+ <argument index="3" name="rect" type="Rect2" />
+ <argument index="4" name="align" type="Vector2" />
+ <argument index="5" name="advance" type="float" />
<description>
Adds a character to the font, where [code]character[/code] is the Unicode value, [code]texture[/code] is the texture index, [code]rect[/code] is the region in the texture (in pixels!), [code]align[/code] is the (optional) alignment for the character and [code]advance[/code] is the (optional) advance.
</description>
</method>
<method name="font_bitmap_add_kerning_pair">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="A" type="int">
- </argument>
- <argument index="2" name="B" type="int">
- </argument>
- <argument index="3" name="kerning" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="A" type="int" />
+ <argument index="2" name="B" type="int" />
+ <argument index="3" name="kerning" type="int" />
<description>
Adds a kerning pair to the bitmap font as a difference. Kerning pairs are special cases where a typeface advance is determined by the next character.
</description>
</method>
<method name="font_bitmap_add_texture">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="texture" type="Texture">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="texture" type="Texture" />
<description>
Adds a texture to the bitmap font.
</description>
</method>
<method name="font_draw_glyph" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="canvas" type="RID">
- </argument>
- <argument index="2" name="size" type="int">
- </argument>
- <argument index="3" name="pos" type="Vector2">
- </argument>
- <argument index="4" name="index" type="int">
- </argument>
- <argument index="5" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="canvas" type="RID" />
+ <argument index="2" name="size" type="int" />
+ <argument index="3" name="pos" type="Vector2" />
+ <argument index="4" name="index" type="int" />
+ <argument index="5" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draws single glyph into a canvas item at the position, using [code]font[/code] at the size [code]size[/code].
Note: Glyph index is specific to the font, use glyphs indices returned by [method shaped_text_get_glyphs] or [method font_get_glyph_index].
</description>
</method>
<method name="font_draw_glyph_outline" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="canvas" type="RID">
- </argument>
- <argument index="2" name="size" type="int">
- </argument>
- <argument index="3" name="outline_size" type="int">
- </argument>
- <argument index="4" name="pos" type="Vector2">
- </argument>
- <argument index="5" name="index" type="int">
- </argument>
- <argument index="6" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="canvas" type="RID" />
+ <argument index="2" name="size" type="int" />
+ <argument index="3" name="outline_size" type="int" />
+ <argument index="4" name="pos" type="Vector2" />
+ <argument index="5" name="index" type="int" />
+ <argument index="6" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draws single glyph outline of size [code]outline_size[/code] into a canvas item at the position, using [code]font[/code] at the size [code]size[/code].
Note: Glyph index is specific to the font, use glyphs indices returned by [method shaped_text_get_glyphs] or [method font_get_glyph_index].
</description>
</method>
<method name="font_get_antialiased" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns [code]true[/code], if font anti-aliasing is supported and enabled.
</description>
</method>
<method name="font_get_ascent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="size" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="size" type="int" />
<description>
Returns the font ascent (number of pixels above the baseline).
</description>
</method>
<method name="font_get_base_size" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns the default size of the font.
</description>
</method>
<method name="font_get_descent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="size" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="size" type="int" />
<description>
Returns the font descent (number of pixels below the baseline).
</description>
</method>
<method name="font_get_distance_field_hint" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns [code]true[/code], if distance field hint is enabled.
</description>
</method>
<method name="font_get_feature_list" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns list of OpenType features supported by font.
</description>
</method>
<method name="font_get_force_autohinter" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns [code]true[/code], if autohinter is supported and enabled.
</description>
</method>
<method name="font_get_glyph_advance" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
- <argument index="2" name="size" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="index" type="int" />
+ <argument index="2" name="size" type="int" />
<description>
Returns advance of the glyph.
</description>
</method>
<method name="font_get_glyph_contours" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="size" type="int">
- </argument>
- <argument index="2" name="index" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="size" type="int" />
+ <argument index="2" name="index" type="int" />
<description>
Returns outline contours of the glyph in a Dictionary.
[code]points[/code] - [PackedVector3Array], containing outline points. [code]x[/code] and [code]y[/code] are point coordinates. [code]z[/code] is the type of the point, using the [enum ContourPointTag] values.
@@ -275,955 +198,701 @@
</description>
</method>
<method name="font_get_glyph_index" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="char" type="int">
- </argument>
- <argument index="2" name="variation_selector" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="char" type="int" />
+ <argument index="2" name="variation_selector" type="int" default="0" />
<description>
Returns the glyph index of a [code]char[/code], optionally modified by the [code]variation_selector[/code].
</description>
</method>
<method name="font_get_glyph_kerning" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="index_a" type="int">
- </argument>
- <argument index="2" name="index_b" type="int">
- </argument>
- <argument index="3" name="size" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="index_a" type="int" />
+ <argument index="2" name="index_b" type="int" />
+ <argument index="3" name="size" type="int" />
<description>
Returns a kerning of the pair of glyphs.
</description>
</method>
<method name="font_get_height" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="size" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="size" type="int" />
<description>
Returns the total font height (ascent plus descent) in pixels.
</description>
</method>
<method name="font_get_hinting" qualifiers="const">
- <return type="int" enum="TextServer.Hinting">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="int" enum="TextServer.Hinting" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns the font hinting.
</description>
</method>
<method name="font_get_language_support_override">
- <return type="bool">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="language" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="language" type="String" />
<description>
Returns [code]true[/code] if support override is enabled for the [code]language[/code].
</description>
</method>
<method name="font_get_language_support_overrides">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns list of language support overrides.
</description>
</method>
<method name="font_get_oversampling" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the font oversampling factor, shared by all fonts in the TextServer.
</description>
</method>
<method name="font_get_script_support_override">
- <return type="bool">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="script" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="script" type="String" />
<description>
Returns [code]true[/code] if support override is enabled for the [code]script[/code].
</description>
</method>
<method name="font_get_script_support_overrides">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns list of script support overrides.
</description>
</method>
<method name="font_get_spacing_glyph" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns extra spacing for each glyph in pixels.
</description>
</method>
<method name="font_get_spacing_space" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="int" />
+ <argument index="0" name="font" type="RID" />
<description>
Sets extra spacing for each glyph in pixels.
</description>
</method>
<method name="font_get_supported_chars" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="String" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns a string containing all the characters available in the font.
</description>
</method>
<method name="font_get_underline_position" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="size" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="size" type="int" />
<description>
Returns underline offset (number of pixels below the baseline).
</description>
</method>
<method name="font_get_underline_thickness" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="size" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="size" type="int" />
<description>
Returns underline thickness in pixels.
</description>
</method>
<method name="font_get_variation" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
+ <return type="float" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="tag" type="String" />
<description>
Returns variation coordinate [code]tag[/code].
</description>
</method>
<method name="font_get_variation_list" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns list of supported [url=https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg]variation coordinates[/url], each coordinate is returned as [code]tag: Vector3i(min_value,max_value,default_value)[/code].
Font variations allow for continuous change of glyph characteristics along some given design axis, such as weight, width or slant.
</description>
</method>
<method name="font_has_char" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="char" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="char" type="int" />
<description>
Returns [code]true[/code] if [code]char[/code] is available in the font.
</description>
</method>
<method name="font_has_outline" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="font" type="RID" />
<description>
Returns [code]true[/code], if font supports glyph outlines.
</description>
</method>
<method name="font_is_language_supported" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="language" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="language" type="String" />
<description>
Returns [code]true[/code], if font supports given language (ISO 639 code).
</description>
</method>
<method name="font_is_script_supported" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="script" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="script" type="String" />
<description>
Returns [code]true[/code], if font supports given script (ISO 15924 code).
</description>
</method>
<method name="font_remove_language_support_override">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="language" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="language" type="String" />
<description>
Remove language support override.
</description>
</method>
<method name="font_remove_script_support_override">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="script" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="script" type="String" />
<description>
Removes script support override.
</description>
</method>
<method name="font_set_antialiased">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="antialiased" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="antialiased" type="bool" />
<description>
Sets font anti-aliasing.
</description>
</method>
<method name="font_set_distance_field_hint">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="distance_field" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="distance_field" type="bool" />
<description>
Sets font distance field hint.
</description>
</method>
<method name="font_set_force_autohinter">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="enabeld" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="enabeld" type="bool" />
<description>
Enables/disables default autohinter.
</description>
</method>
<method name="font_set_hinting">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="hinting" type="int" enum="TextServer.Hinting">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="hinting" type="int" enum="TextServer.Hinting" />
<description>
Sets font hinting.
</description>
</method>
<method name="font_set_language_support_override">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="language" type="String">
- </argument>
- <argument index="2" name="supported" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="language" type="String" />
+ <argument index="2" name="supported" type="bool" />
<description>
Adds override for [method font_is_language_supported].
</description>
</method>
<method name="font_set_oversampling">
- <return type="void">
- </return>
- <argument index="0" name="oversampling" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="oversampling" type="float" />
<description>
Sets oversampling factor, shared by all font in the TextServer.
</description>
</method>
<method name="font_set_script_support_override">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="script" type="String">
- </argument>
- <argument index="2" name="supported" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="script" type="String" />
+ <argument index="2" name="supported" type="bool" />
<description>
Adds override for [method font_is_script_supported].
</description>
</method>
<method name="font_set_spacing_glyph">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="value" type="int" />
<description>
Returns extra spacing for the space character in pixels.
</description>
</method>
<method name="font_set_spacing_space">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="value" type="int" />
<description>
Sets extra spacing for the space character in pixels.
</description>
</method>
<method name="font_set_variation">
- <return type="void">
- </return>
- <argument index="0" name="font" type="RID">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
- <argument index="2" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="font" type="RID" />
+ <argument index="1" name="tag" type="String" />
+ <argument index="2" name="value" type="float" />
<description>
Sets variation coordinate [code]name[/code]. Unsupported coordinates will be silently ignored.
</description>
</method>
<method name="format_number" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="number" type="String">
- </argument>
- <argument index="1" name="language" type="String" default="&quot;&quot;">
- </argument>
+ <return type="String" />
+ <argument index="0" name="number" type="String" />
+ <argument index="1" name="language" type="String" default="&quot;&quot;" />
<description>
Converts a number from the Western Arabic (0..9) to the numeral systems used in [code]language[/code].
</description>
</method>
<method name="free_rid">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
Frees an object created by this [TextServer].
</description>
</method>
<method name="get_hex_code_box_size" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="size" type="int" />
+ <argument index="1" name="index" type="int" />
<description>
Returns size of the replacement character (box with character hexadecimal code that is drawn in place of invalid characters).
</description>
</method>
<method name="get_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the name of the server interface.
</description>
</method>
<method name="get_system_fonts" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns list of available system fonts.
Note: This method is supported by servers with the [code]FEATURE_FONT_SYSTEM[/code] feature.
</description>
</method>
<method name="has">
- <return type="bool">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="rid" type="RID" />
<description>
Returns [code]true[/code] if [code]rid[/code] is valid resource owned by this text server.
</description>
</method>
<method name="has_feature">
- <return type="bool">
- </return>
- <argument index="0" name="feature" type="int" enum="TextServer.Feature">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="feature" type="int" enum="TextServer.Feature" />
<description>
Returns [code]true[/code] if the server supports a feature.
</description>
</method>
<method name="is_locale_right_to_left">
- <return type="bool">
- </return>
- <argument index="0" name="locale" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="locale" type="String" />
<description>
Returns [code]true[/code] if locale is right-to-left.
</description>
</method>
<method name="load_support_data">
- <return type="bool">
- </return>
- <argument index="0" name="filename" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="filename" type="String" />
<description>
Loads optional TextServer database (e.g. ICU break iterators and dictionaries).
Note: This function should be called before any other TextServer functions used, otherwise it won't have any effect.
</description>
</method>
<method name="name_to_tag">
- <return type="int">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="String" />
<description>
Converts readable feature, variation, script or language name to OpenType tag.
</description>
</method>
<method name="parse_number" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="number" type="String">
- </argument>
- <argument index="1" name="language" type="String" default="&quot;&quot;">
- </argument>
+ <return type="String" />
+ <argument index="0" name="number" type="String" />
+ <argument index="1" name="language" type="String" default="&quot;&quot;" />
<description>
Converts a number from the numeral systems used in [code]language[/code] to Western Arabic (0..9).
</description>
</method>
<method name="percent_sign" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="language" type="String" default="&quot;&quot;">
- </argument>
+ <return type="String" />
+ <argument index="0" name="language" type="String" default="&quot;&quot;" />
<description>
Returns percent sign used in the [code]language[/code].
</description>
</method>
<method name="shaped_text_add_object">
- <return type="bool">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="key" type="Variant">
- </argument>
- <argument index="2" name="size" type="Vector2">
- </argument>
- <argument index="3" name="inline_align" type="int" enum="VAlign" default="1">
- </argument>
- <argument index="4" name="length" type="int" default="1">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="key" type="Variant" />
+ <argument index="2" name="size" type="Vector2" />
+ <argument index="3" name="inline_align" type="int" enum="VAlign" default="1" />
+ <argument index="4" name="length" type="int" default="1" />
<description>
Adds inline object to the text buffer, [code]key[/code] must be unique. In the text, object is represented as [code]length[/code] object replacement characters.
</description>
</method>
<method name="shaped_text_add_string">
- <return type="bool">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="text" type="String">
- </argument>
- <argument index="2" name="fonts" type="Array">
- </argument>
- <argument index="3" name="size" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="text" type="String" />
+ <argument index="2" name="fonts" type="Array" />
+ <argument index="3" name="size" type="int" />
<argument index="4" name="opentype_features" type="Dictionary" default="{
-}">
- </argument>
- <argument index="5" name="language" type="String" default="&quot;&quot;">
- </argument>
+}" />
+ <argument index="5" name="language" type="String" default="&quot;&quot;" />
<description>
Adds text span and font to draw it to the text buffer.
</description>
</method>
<method name="shaped_text_clear">
- <return type="void">
- </return>
- <argument index="0" name="rid" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rid" type="RID" />
<description>
Clears text buffer (removes text and inline objects).
</description>
</method>
<method name="shaped_text_draw" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="canvas" type="RID">
- </argument>
- <argument index="2" name="pos" type="Vector2">
- </argument>
- <argument index="3" name="clip_l" type="float" default="-1">
- </argument>
- <argument index="4" name="clip_r" type="float" default="-1">
- </argument>
- <argument index="5" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="canvas" type="RID" />
+ <argument index="2" name="pos" type="Vector2" />
+ <argument index="3" name="clip_l" type="float" default="-1" />
+ <argument index="4" name="clip_r" type="float" default="-1" />
+ <argument index="5" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw shaped text into a canvas item at a given position, with [code]color[/code]. [code]pos[/code] specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout).
</description>
</method>
<method name="shaped_text_draw_outline" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="canvas" type="RID">
- </argument>
- <argument index="2" name="pos" type="Vector2">
- </argument>
- <argument index="3" name="clip_l" type="float" default="-1">
- </argument>
- <argument index="4" name="clip_r" type="float" default="-1">
- </argument>
- <argument index="5" name="outline_size" type="int" default="1">
- </argument>
- <argument index="6" name="color" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="canvas" type="RID" />
+ <argument index="2" name="pos" type="Vector2" />
+ <argument index="3" name="clip_l" type="float" default="-1" />
+ <argument index="4" name="clip_r" type="float" default="-1" />
+ <argument index="5" name="outline_size" type="int" default="1" />
+ <argument index="6" name="color" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw the outline of the shaped text into a canvas item at a given position, with [code]color[/code]. [code]pos[/code] specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout).
</description>
</method>
<method name="shaped_text_fit_to_width">
- <return type="float">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="width" type="float">
- </argument>
- <argument index="2" name="jst_flags" type="int" default="3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="width" type="float" />
+ <argument index="2" name="jst_flags" type="int" default="3" />
<description>
Adjusts text with to fit to specified width, returns new text width.
</description>
</method>
<method name="shaped_text_get_ascent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns the text ascent (number of pixels above the baseline for horizontal layout or to the left of baseline for vertical).
Note: overall ascent can be higher than font ascent, if some glyphs are displaced from the baseline.
</description>
</method>
<method name="shaped_text_get_carets" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="position" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="position" type="int" />
<description>
Returns shapes of the carets corresponding to the character offset [code]position[/code] in the text. Returned caret shape is 1 pixel wide rectangle.
</description>
</method>
<method name="shaped_text_get_descent" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns the text descent (number of pixels below the baseline for horizontal layout or to the right of baseline for vertical).
Note: overall descent can be higher than font descent, if some glyphs are displaced from the baseline.
</description>
</method>
<method name="shaped_text_get_direction" qualifiers="const">
- <return type="int" enum="TextServer.Direction">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="int" enum="TextServer.Direction" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns direction of the text.
</description>
</method>
<method name="shaped_text_get_dominant_direciton_in_range" qualifiers="const">
- <return type="int" enum="TextServer.Direction">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="start" type="int">
- </argument>
- <argument index="2" name="end" type="int">
- </argument>
+ <return type="int" enum="TextServer.Direction" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="start" type="int" />
+ <argument index="2" name="end" type="int" />
<description>
Returns dominant direction of in the range of text.
</description>
</method>
<method name="shaped_text_get_glyphs" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns text glyphs.
</description>
</method>
<method name="shaped_text_get_line_breaks" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="width" type="float">
- </argument>
- <argument index="2" name="start" type="int" default="0">
- </argument>
- <argument index="3" name="break_flags" type="int" default="48">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="width" type="float" />
+ <argument index="2" name="start" type="int" default="0" />
+ <argument index="3" name="break_flags" type="int" default="48" />
<description>
Breaks text to the lines and returns character ranges for each line.
</description>
</method>
<method name="shaped_text_get_line_breaks_adv" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="width" type="PackedFloat32Array">
- </argument>
- <argument index="2" name="start" type="int" default="0">
- </argument>
- <argument index="3" name="once" type="bool" default="true">
- </argument>
- <argument index="4" name="break_flags" type="int" default="48">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="width" type="PackedFloat32Array" />
+ <argument index="2" name="start" type="int" default="0" />
+ <argument index="3" name="once" type="bool" default="true" />
+ <argument index="4" name="break_flags" type="int" default="48" />
<description>
Breaks text to the lines and columns. Returns character ranges for each segment.
</description>
</method>
<method name="shaped_text_get_object_rect" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="key" type="Variant">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="key" type="Variant" />
<description>
Returns bounding rectangle of the inline object.
</description>
</method>
<method name="shaped_text_get_objects" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns array of inline objects.
</description>
</method>
<method name="shaped_text_get_orientation" qualifiers="const">
- <return type="int" enum="TextServer.Orientation">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="int" enum="TextServer.Orientation" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns text orientation.
</description>
</method>
<method name="shaped_text_get_parent" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Sets text orientation.
</description>
</method>
<method name="shaped_text_get_preserve_control" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns [code]true[/code] if text buffer is configured to display control characters.
</description>
</method>
<method name="shaped_text_get_preserve_invalid" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns [code]true[/code] if text buffer is configured to display hexadecimal codes in place of invalid characters.
Note: If set to [code]false[/code], nothing is displayed in place of invalid characters.
</description>
</method>
<method name="shaped_text_get_range" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns substring buffer character range in the parent buffer.
</description>
</method>
<method name="shaped_text_get_selection" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="start" type="int">
- </argument>
- <argument index="2" name="end" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="start" type="int" />
+ <argument index="2" name="end" type="int" />
<description>
Returns selection rectangles for the specified character range.
</description>
</method>
<method name="shaped_text_get_size" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns size of the text.
</description>
</method>
<method name="shaped_text_get_underline_position" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns pixel offset of the underline below the baseline.
</description>
</method>
<method name="shaped_text_get_underline_thickness" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns thickness of the underline.
</description>
</method>
<method name="shaped_text_get_width" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="float" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns width (for horizontal layout) or height (for vertical) of the text.
</description>
</method>
<method name="shaped_text_get_word_breaks" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Breaks text into words and returns array of character ranges.
</description>
</method>
<method name="shaped_text_hit_test_grapheme" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="coords" type="float">
- </argument>
+ <return type="int" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="coords" type="float" />
<description>
Returns grapheme index at the specified pixel offset at the baseline, or [code]-1[/code] if none is found.
</description>
</method>
<method name="shaped_text_hit_test_position" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="coords" type="float">
- </argument>
+ <return type="int" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="coords" type="float" />
<description>
Returns caret character offset at the specified pixel offset at the baseline. This function always returns a valid position.
</description>
</method>
<method name="shaped_text_is_ready" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Returns [code]true[/code] if buffer is successfully shaped.
</description>
</method>
<method name="shaped_text_next_grapheme_pos">
- <return type="int">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="pos" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="pos" type="int" />
<description>
Returns composite character end position closest to the [code]pos[/code].
</description>
</method>
<method name="shaped_text_overrun_trim_to_width">
- <return type="void">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="width" type="float" default="0">
- </argument>
- <argument index="2" name="overrun_trim_flags" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="width" type="float" default="0" />
+ <argument index="2" name="overrun_trim_flags" type="int" default="0" />
<description>
Trims text if it exceeds the given width.
</description>
</method>
<method name="shaped_text_prev_grapheme_pos">
- <return type="int">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="pos" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="pos" type="int" />
<description>
Returns composite character start position closest to the [code]pos[/code].
</description>
</method>
<method name="shaped_text_resize_object">
- <return type="bool">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="key" type="Variant">
- </argument>
- <argument index="2" name="size" type="Vector2">
- </argument>
- <argument index="3" name="inline_align" type="int" enum="VAlign" default="1">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="key" type="Variant" />
+ <argument index="2" name="size" type="Vector2" />
+ <argument index="3" name="inline_align" type="int" enum="VAlign" default="1" />
<description>
Sets new size and alignment of embedded object.
</description>
</method>
<method name="shaped_text_set_bidi_override">
- <return type="void">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="override" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="override" type="Array" />
<description>
Overrides BiDi for the structured text.
Override ranges should cover full source text without overlaps. BiDi algorithm will be used on each range separately.
</description>
</method>
<method name="shaped_text_set_direction">
- <return type="void">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="direction" type="int" enum="TextServer.Direction" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="direction" type="int" enum="TextServer.Direction" default="0" />
<description>
Sets desired text direction. If set to [code]TEXT_DIRECTION_AUTO[/code], direction will be detected based on the buffer contents and current locale.
Note: Direction is ignored if server does not support [code]FEATURE_BIDI_LAYOUT[/code] feature.
</description>
</method>
<method name="shaped_text_set_orientation">
- <return type="void">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="orientation" type="int" enum="TextServer.Orientation" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="orientation" type="int" enum="TextServer.Orientation" default="0" />
<description>
Sets desired text orientation.
Note: Orientation is ignored if server does not support [code]FEATURE_VERTICAL_LAYOUT[/code] feature.
</description>
</method>
<method name="shaped_text_set_preserve_control">
- <return type="void">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
If set to [code]true[/code] text buffer will display control characters.
</description>
</method>
<method name="shaped_text_set_preserve_invalid">
- <return type="void">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="enabled" type="bool" />
<description>
If set to [code]true[/code] text buffer will display invalid characters as hexadecimal codes, otherwise nothing is displayed.
</description>
</method>
<method name="shaped_text_shape">
- <return type="bool">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="shaped" type="RID" />
<description>
Shapes buffer if it's not shaped. Returns [code]true[/code] if the string is shaped successfully.
Note: It is not necessary to call this function manually, buffer will be shaped automatically as soon as any of its output data is requested.
</description>
</method>
<method name="shaped_text_substr" qualifiers="const">
- <return type="RID">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="start" type="int">
- </argument>
- <argument index="2" name="length" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="start" type="int" />
+ <argument index="2" name="length" type="int" />
<description>
Returns text buffer for the substring of the text in the [code]shaped[/code] text buffer (including inline objects).
</description>
</method>
<method name="shaped_text_tab_align">
- <return type="float">
- </return>
- <argument index="0" name="shaped" type="RID">
- </argument>
- <argument index="1" name="tab_stops" type="PackedFloat32Array">
- </argument>
+ <return type="float" />
+ <argument index="0" name="shaped" type="RID" />
+ <argument index="1" name="tab_stops" type="PackedFloat32Array" />
<description>
Aligns shaped text to the given tab-stops.
</description>
</method>
<method name="tag_to_name">
- <return type="String">
- </return>
- <argument index="0" name="tag" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="tag" type="int" />
<description>
Converts OpenType tag to readable feature, variation, script or language name.
</description>
diff --git a/doc/classes/TextServerManager.xml b/doc/classes/TextServerManager.xml
index 29586f30b4..b1dd314544 100644
--- a/doc/classes/TextServerManager.xml
+++ b/doc/classes/TextServerManager.xml
@@ -11,67 +11,54 @@
</tutorials>
<methods>
<method name="find_interface" qualifiers="const">
- <return type="TextServer">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="TextServer" />
+ <argument index="0" name="name" type="String" />
<description>
Finds an interface by its name.
</description>
</method>
<method name="get_interface" qualifiers="const">
- <return type="TextServer">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="TextServer" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the interface registered at a given index.
</description>
</method>
<method name="get_interface_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of interfaces currently registered.
</description>
</method>
<method name="get_interface_features" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
<description>
Returns text server supported features (binary OR).
</description>
</method>
<method name="get_interface_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the interface name registered at a given index.
</description>
</method>
<method name="get_interfaces" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns a list of available interfaces the index and name of each interface.
</description>
</method>
<method name="get_primary_interface" qualifiers="const">
- <return type="TextServer">
- </return>
+ <return type="TextServer" />
<description>
Returns the primary [TextServer] interface.
</description>
</method>
<method name="set_primary_interface">
- <return type="bool">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="index" type="int" />
<description>
Sets (and initializes it if required) interface registered at a given index as the primary. Invalidates all references to the fonts and text buffers.
</description>
diff --git a/doc/classes/Texture2D.xml b/doc/classes/Texture2D.xml
index 35b719ae48..bf5ddeb4ab 100644
--- a/doc/classes/Texture2D.xml
+++ b/doc/classes/Texture2D.xml
@@ -13,87 +13,64 @@
</tutorials>
<methods>
<method name="draw" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas_item" type="RID">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
- <argument index="2" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="3" name="transpose" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas_item" type="RID" />
+ <argument index="1" name="position" type="Vector2" />
+ <argument index="2" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="3" name="transpose" type="bool" default="false" />
<description>
Draws the texture using a [CanvasItem] with the [RenderingServer] API at the specified [code]position[/code].
</description>
</method>
<method name="draw_rect" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas_item" type="RID">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
- <argument index="2" name="tile" type="bool">
- </argument>
- <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="4" name="transpose" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas_item" type="RID" />
+ <argument index="1" name="rect" type="Rect2" />
+ <argument index="2" name="tile" type="bool" />
+ <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="4" name="transpose" type="bool" default="false" />
<description>
Draws the texture using a [CanvasItem] with the [RenderingServer] API.
</description>
</method>
<method name="draw_rect_region" qualifiers="const">
- <return type="void">
- </return>
- <argument index="0" name="canvas_item" type="RID">
- </argument>
- <argument index="1" name="rect" type="Rect2">
- </argument>
- <argument index="2" name="src_rect" type="Rect2">
- </argument>
- <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)">
- </argument>
- <argument index="4" name="transpose" type="bool" default="false">
- </argument>
- <argument index="5" name="clip_uv" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="canvas_item" type="RID" />
+ <argument index="1" name="rect" type="Rect2" />
+ <argument index="2" name="src_rect" type="Rect2" />
+ <argument index="3" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
+ <argument index="4" name="transpose" type="bool" default="false" />
+ <argument index="5" name="clip_uv" type="bool" default="true" />
<description>
Draws a part of the texture using a [CanvasItem] with the [RenderingServer] API.
</description>
</method>
<method name="get_height" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the texture height.
</description>
</method>
<method name="get_image" qualifiers="const">
- <return type="Image">
- </return>
+ <return type="Image" />
<description>
Returns an [Image] that is a copy of data from this [Texture2D]. [Image]s can be accessed and manipulated directly.
</description>
</method>
<method name="get_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the texture size.
</description>
</method>
<method name="get_width" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the texture width.
</description>
</method>
<method name="has_alpha" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this [Texture2D] has an alpha channel.
</description>
diff --git a/doc/classes/Texture3D.xml b/doc/classes/Texture3D.xml
index 85e940716d..8ba0d7d4b9 100644
--- a/doc/classes/Texture3D.xml
+++ b/doc/classes/Texture3D.xml
@@ -8,38 +8,32 @@
</tutorials>
<methods>
<method name="get_data" qualifiers="const">
- <return type="Image[]">
- </return>
+ <return type="Image[]" />
<description>
</description>
</method>
<method name="get_depth" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_format" qualifiers="const">
- <return type="int" enum="Image.Format">
- </return>
+ <return type="int" enum="Image.Format" />
<description>
</description>
</method>
<method name="get_height" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_width" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="has_mipmaps" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
diff --git a/doc/classes/TextureLayered.xml b/doc/classes/TextureLayered.xml
index d81c3c7c5a..dd8c709049 100644
--- a/doc/classes/TextureLayered.xml
+++ b/doc/classes/TextureLayered.xml
@@ -10,50 +10,42 @@
</tutorials>
<methods>
<method name="get_format" qualifiers="const">
- <return type="int" enum="Image.Format">
- </return>
+ <return type="int" enum="Image.Format" />
<description>
Returns the current format being used by this texture. See [enum Image.Format] for details.
</description>
</method>
<method name="get_height" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the height of the texture. Height is typically represented by the Y-axis.
</description>
</method>
<method name="get_layer_data" qualifiers="const">
- <return type="Image">
- </return>
- <argument index="0" name="layer" type="int">
- </argument>
+ <return type="Image" />
+ <argument index="0" name="layer" type="int" />
<description>
Returns an [Image] resource with the data from specified [code]layer[/code].
</description>
</method>
<method name="get_layered_type" qualifiers="const">
- <return type="int" enum="TextureLayered.LayeredType">
- </return>
+ <return type="int" enum="TextureLayered.LayeredType" />
<description>
</description>
</method>
<method name="get_layers" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_width" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the width of the texture. Width is typically represented by the X-axis.
</description>
</method>
<method name="has_mipmaps" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
diff --git a/doc/classes/TextureProgressBar.xml b/doc/classes/TextureProgressBar.xml
index 59cde536ad..9da89ebe43 100644
--- a/doc/classes/TextureProgressBar.xml
+++ b/doc/classes/TextureProgressBar.xml
@@ -10,20 +10,15 @@
</tutorials>
<methods>
<method name="get_stretch_margin" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
+ <return type="int" />
+ <argument index="0" name="margin" type="int" enum="Side" />
<description>
</description>
</method>
<method name="set_stretch_margin">
- <return type="void">
- </return>
- <argument index="0" name="margin" type="int" enum="Side">
- </argument>
- <argument index="1" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="margin" type="int" enum="Side" />
+ <argument index="1" name="value" type="int" />
<description>
</description>
</method>
diff --git a/doc/classes/Theme.xml b/doc/classes/Theme.xml
index 969d8ab2a4..1124fb8084 100644
--- a/doc/classes/Theme.xml
+++ b/doc/classes/Theme.xml
@@ -12,625 +12,464 @@
</tutorials>
<methods>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears all values on the theme.
</description>
</method>
<method name="clear_color">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Clears the [Color] at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="clear_constant">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Clears the constant at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="clear_font">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Clears the [Font] at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="clear_font_size">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Clears the font size [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="clear_icon">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Clears the icon at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="clear_stylebox">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Clears [StyleBox] at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="clear_theme_item">
- <return type="void">
- </return>
- <argument index="0" name="data_type" type="int" enum="Theme.DataType">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
- <argument index="2" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="data_type" type="int" enum="Theme.DataType" />
+ <argument index="1" name="name" type="StringName" />
+ <argument index="2" name="theme_type" type="StringName" />
<description>
Clears the theme item of [code]data_type[/code] at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="clear_type_variation">
- <return type="void">
- </return>
- <argument index="0" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="theme_type" type="StringName" />
<description>
Unmarks [code]theme_type[/code] as being a variation of any other type.
</description>
</method>
<method name="copy_default_theme">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Sets the theme's values to a copy of the default theme values.
</description>
</method>
<method name="copy_theme">
- <return type="void">
- </return>
- <argument index="0" name="other" type="Theme">
- </argument>
+ <return type="void" />
+ <argument index="0" name="other" type="Theme" />
<description>
Sets the theme's values to a copy of a given theme.
</description>
</method>
<method name="get_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns the [Color] at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_color_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="theme_type" type="String">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="theme_type" type="String" />
<description>
Returns all the [Color]s as a [PackedStringArray] filled with each [Color]'s name, for use in [method get_color], if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_color_type_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns all the [Color] types as a [PackedStringArray] filled with unique type names, for use in [method get_color] and/or [method get_color_list].
</description>
</method>
<method name="get_constant" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns the constant at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_constant_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="theme_type" type="String">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="theme_type" type="String" />
<description>
Returns all the constants as a [PackedStringArray] filled with each constant's name, for use in [method get_constant], if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_constant_type_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns all the constant types as a [PackedStringArray] filled with unique type names, for use in [method get_constant] and/or [method get_constant_list].
</description>
</method>
<method name="get_font" qualifiers="const">
- <return type="Font">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="Font" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns the [Font] at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_font_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="theme_type" type="String">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="theme_type" type="String" />
<description>
Returns all the [Font]s as a [PackedStringArray] filled with each [Font]'s name, for use in [method get_font], if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_font_size" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns the font size at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_font_size_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="theme_type" type="String">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="theme_type" type="String" />
<description>
Returns all the font sizes as a [PackedStringArray] filled with each font size name, for use in [method get_font_size], if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_font_size_type_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns all the font size types as a [PackedStringArray] filled with unique type names, for use in [method get_font_size] and/or [method get_font_size_list].
</description>
</method>
<method name="get_font_type_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns all the [Font] types as a [PackedStringArray] filled with unique type names, for use in [method get_font] and/or [method get_font_list].
</description>
</method>
<method name="get_icon" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns the icon [Texture2D] at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_icon_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="theme_type" type="String">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="theme_type" type="String" />
<description>
Returns all the icons as a [PackedStringArray] filled with each [Texture2D]'s name, for use in [method get_icon], if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_icon_type_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns all the icon types as a [PackedStringArray] filled with unique type names, for use in [method get_icon] and/or [method get_icon_list].
</description>
</method>
<method name="get_stylebox" qualifiers="const">
- <return type="StyleBox">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="StyleBox" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns the [StyleBox] at [code]name[/code] if the theme has [code]theme_type[/code].
Valid [code]name[/code]s may be found using [method get_stylebox_list]. Valid [code]theme_type[/code]s may be found using [method get_stylebox_type_list].
</description>
</method>
<method name="get_stylebox_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="theme_type" type="String">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="theme_type" type="String" />
<description>
Returns all the [StyleBox]s as a [PackedStringArray] filled with each [StyleBox]'s name, for use in [method get_stylebox], if the theme has [code]theme_type[/code].
Valid [code]theme_type[/code]s may be found using [method get_stylebox_type_list].
</description>
</method>
<method name="get_stylebox_type_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns all the [StyleBox] types as a [PackedStringArray] filled with unique type names, for use in [method get_stylebox] and/or [method get_stylebox_list].
</description>
</method>
<method name="get_theme_item" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="data_type" type="int" enum="Theme.DataType">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
- <argument index="2" name="theme_type" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="data_type" type="int" enum="Theme.DataType" />
+ <argument index="1" name="name" type="StringName" />
+ <argument index="2" name="theme_type" type="StringName" />
<description>
Returns the theme item of [code]data_type[/code] at [code]name[/code] if the theme has [code]theme_type[/code].
Valid [code]name[/code]s may be found using [method get_theme_item_list] or a data type specific method. Valid [code]theme_type[/code]s may be found using [method get_theme_item_type_list] or a data type specific method.
</description>
</method>
<method name="get_theme_item_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="data_type" type="int" enum="Theme.DataType">
- </argument>
- <argument index="1" name="theme_type" type="String">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="data_type" type="int" enum="Theme.DataType" />
+ <argument index="1" name="theme_type" type="String" />
<description>
Returns all the theme items of [code]data_type[/code] as a [PackedStringArray] filled with each theme items's name, for use in [method get_theme_item] or a data type specific method, if the theme has [code]theme_type[/code].
Valid [code]theme_type[/code]s may be found using [method get_theme_item_type_list] or a data type specific method.
</description>
</method>
<method name="get_theme_item_type_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="data_type" type="int" enum="Theme.DataType">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="data_type" type="int" enum="Theme.DataType" />
<description>
Returns all the theme items of [code]data_type[/code] types as a [PackedStringArray] filled with unique type names, for use in [method get_theme_item], [method get_theme_item_list] or data type specific methods.
</description>
</method>
<method name="get_type_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns all the theme types as a [PackedStringArray] filled with unique type names, for use in other [code]get_*[/code] functions of this theme.
</description>
</method>
<method name="get_type_variation_base" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="theme_type" type="StringName">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="theme_type" type="StringName" />
<description>
Returns the base theme type if [code]theme_type[/code] is a valid variation type. Returns an empty string otherwise.
</description>
</method>
<method name="get_type_variation_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
- <argument index="0" name="base_type" type="StringName">
- </argument>
+ <return type="PackedStringArray" />
+ <argument index="0" name="base_type" type="StringName" />
<description>
Returns a list of all variation for the given [code]base_type[/code].
</description>
</method>
<method name="has_color" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns [code]true[/code] if [Color] with [code]name[/code] is in [code]theme_type[/code].
Returns [code]false[/code] if the theme does not have [code]theme_type[/code].
</description>
</method>
<method name="has_constant" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns [code]true[/code] if constant with [code]name[/code] is in [code]theme_type[/code].
Returns [code]false[/code] if the theme does not have [code]theme_type[/code].
</description>
</method>
<method name="has_font" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns [code]true[/code] if [Font] with [code]name[/code] is in [code]theme_type[/code].
Returns [code]false[/code] if the theme does not have [code]theme_type[/code].
</description>
</method>
<method name="has_font_size" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns [code]true[/code] if font size with [code]name[/code] is in [code]theme_type[/code].
Returns [code]false[/code] if the theme does not have [code]theme_type[/code].
</description>
</method>
<method name="has_icon" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns [code]true[/code] if icon [Texture2D] with [code]name[/code] is in [code]theme_type[/code].
Returns [code]false[/code] if the theme does not have [code]theme_type[/code].
</description>
</method>
<method name="has_stylebox" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
<description>
Returns [code]true[/code] if [StyleBox] with [code]name[/code] is in [code]theme_type[/code].
Returns [code]false[/code] if the theme does not have [code]theme_type[/code].
</description>
</method>
<method name="has_theme_item" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="data_type" type="int" enum="Theme.DataType">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
- <argument index="2" name="theme_type" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="data_type" type="int" enum="Theme.DataType" />
+ <argument index="1" name="name" type="StringName" />
+ <argument index="2" name="theme_type" type="StringName" />
<description>
Returns [code]true[/code] if a theme item of [code]data_type[/code] with [code]name[/code] is in [code]theme_type[/code].
Returns [code]false[/code] if the theme does not have [code]theme_type[/code].
</description>
</method>
<method name="is_type_variation" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="theme_type" type="StringName">
- </argument>
- <argument index="1" name="base_type" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="theme_type" type="StringName" />
+ <argument index="1" name="base_type" type="StringName" />
<description>
Returns [code]true[/code] if [code]theme_type[/code] is marked as a variation of [code]base_type[/code] in this theme.
</description>
</method>
<method name="rename_color">
- <return type="void">
- </return>
- <argument index="0" name="old_name" type="StringName">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
- <argument index="2" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="old_name" type="StringName" />
+ <argument index="1" name="name" type="StringName" />
+ <argument index="2" name="theme_type" type="StringName" />
<description>
Renames the [Color] at [code]old_name[/code] to [code]name[/code] if the theme has [code]theme_type[/code]. If [code]name[/code] is already taken, this method fails.
</description>
</method>
<method name="rename_constant">
- <return type="void">
- </return>
- <argument index="0" name="old_name" type="StringName">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
- <argument index="2" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="old_name" type="StringName" />
+ <argument index="1" name="name" type="StringName" />
+ <argument index="2" name="theme_type" type="StringName" />
<description>
Renames the constant at [code]old_name[/code] to [code]name[/code] if the theme has [code]theme_type[/code]. If [code]name[/code] is already taken, this method fails.
</description>
</method>
<method name="rename_font">
- <return type="void">
- </return>
- <argument index="0" name="old_name" type="StringName">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
- <argument index="2" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="old_name" type="StringName" />
+ <argument index="1" name="name" type="StringName" />
+ <argument index="2" name="theme_type" type="StringName" />
<description>
Renames the [Font] at [code]old_name[/code] to [code]name[/code] if the theme has [code]theme_type[/code]. If [code]name[/code] is already taken, this method fails.
</description>
</method>
<method name="rename_font_size">
- <return type="void">
- </return>
- <argument index="0" name="old_name" type="StringName">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
- <argument index="2" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="old_name" type="StringName" />
+ <argument index="1" name="name" type="StringName" />
+ <argument index="2" name="theme_type" type="StringName" />
<description>
Renames the font size [code]old_name[/code] to [code]name[/code] if the theme has [code]theme_type[/code]. If [code]name[/code] is already taken, this method fails.
</description>
</method>
<method name="rename_icon">
- <return type="void">
- </return>
- <argument index="0" name="old_name" type="StringName">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
- <argument index="2" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="old_name" type="StringName" />
+ <argument index="1" name="name" type="StringName" />
+ <argument index="2" name="theme_type" type="StringName" />
<description>
Renames the icon at [code]old_name[/code] to [code]name[/code] if the theme has [code]theme_type[/code]. If [code]name[/code] is already taken, this method fails.
</description>
</method>
<method name="rename_stylebox">
- <return type="void">
- </return>
- <argument index="0" name="old_name" type="StringName">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
- <argument index="2" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="old_name" type="StringName" />
+ <argument index="1" name="name" type="StringName" />
+ <argument index="2" name="theme_type" type="StringName" />
<description>
Renames [StyleBox] at [code]old_name[/code] to [code]name[/code] if the theme has [code]theme_type[/code]. If [code]name[/code] is already taken, this method fails.
</description>
</method>
<method name="rename_theme_item">
- <return type="void">
- </return>
- <argument index="0" name="data_type" type="int" enum="Theme.DataType">
- </argument>
- <argument index="1" name="old_name" type="StringName">
- </argument>
- <argument index="2" name="name" type="StringName">
- </argument>
- <argument index="3" name="theme_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="data_type" type="int" enum="Theme.DataType" />
+ <argument index="1" name="old_name" type="StringName" />
+ <argument index="2" name="name" type="StringName" />
+ <argument index="3" name="theme_type" type="StringName" />
<description>
Renames the theme item of [code]data_type[/code] at [code]old_name[/code] to [code]name[/code] if the theme has [code]theme_type[/code]. If [code]name[/code] is already taken, this method fails.
</description>
</method>
<method name="set_color">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
- <argument index="2" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
+ <argument index="2" name="color" type="Color" />
<description>
Sets the theme's [Color] to [code]color[/code] at [code]name[/code] in [code]theme_type[/code].
Creates [code]theme_type[/code] if the theme does not have it.
</description>
</method>
<method name="set_constant">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
- <argument index="2" name="constant" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
+ <argument index="2" name="constant" type="int" />
<description>
Sets the theme's constant to [code]constant[/code] at [code]name[/code] in [code]theme_type[/code].
Creates [code]theme_type[/code] if the theme does not have it.
</description>
</method>
<method name="set_font">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
- <argument index="2" name="font" type="Font">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
+ <argument index="2" name="font" type="Font" />
<description>
Sets the theme's [Font] to [code]font[/code] at [code]name[/code] in [code]theme_type[/code].
Creates [code]theme_type[/code] if the theme does not have it.
</description>
</method>
<method name="set_font_size">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
- <argument index="2" name="font_size" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
+ <argument index="2" name="font_size" type="int" />
<description>
Sets the theme's font size to [code]font_size[/code] at [code]name[/code] in [code]theme_type[/code].
Creates [code]theme_type[/code] if the theme does not have it.
</description>
</method>
<method name="set_icon">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
- <argument index="2" name="texture" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
+ <argument index="2" name="texture" type="Texture2D" />
<description>
Sets the theme's icon [Texture2D] to [code]texture[/code] at [code]name[/code] in [code]theme_type[/code].
Creates [code]theme_type[/code] if the theme does not have it.
</description>
</method>
<method name="set_stylebox">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName">
- </argument>
- <argument index="2" name="texture" type="StyleBox">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" />
+ <argument index="2" name="texture" type="StyleBox" />
<description>
Sets theme's [StyleBox] to [code]stylebox[/code] at [code]name[/code] in [code]theme_type[/code].
Creates [code]theme_type[/code] if the theme does not have it.
</description>
</method>
<method name="set_theme_item">
- <return type="void">
- </return>
- <argument index="0" name="data_type" type="int" enum="Theme.DataType">
- </argument>
- <argument index="1" name="name" type="StringName">
- </argument>
- <argument index="2" name="theme_type" type="StringName">
- </argument>
- <argument index="3" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="data_type" type="int" enum="Theme.DataType" />
+ <argument index="1" name="name" type="StringName" />
+ <argument index="2" name="theme_type" type="StringName" />
+ <argument index="3" name="value" type="Variant" />
<description>
Sets the theme item of [code]data_type[/code] to [code]value[/code] at [code]name[/code] in [code]theme_type[/code].
Does nothing if the [code]value[/code] type does not match [code]data_type[/code].
@@ -638,12 +477,9 @@
</description>
</method>
<method name="set_type_variation">
- <return type="void">
- </return>
- <argument index="0" name="theme_type" type="StringName">
- </argument>
- <argument index="1" name="base_type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="theme_type" type="StringName" />
+ <argument index="1" name="base_type" type="StringName" />
<description>
Marks [code]theme_type[/code] as being a variation of [code]base_type[/code].
This adds [code]theme_type[/code] as a suggested option for [member Control.theme_type_variation] on a [Control] that is of the [code]base_type[/code] class.
diff --git a/doc/classes/Thread.xml b/doc/classes/Thread.xml
index 5ac9416b72..b553aad518 100644
--- a/doc/classes/Thread.xml
+++ b/doc/classes/Thread.xml
@@ -14,38 +14,30 @@
</tutorials>
<methods>
<method name="get_id" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the current [Thread]'s ID, uniquely identifying it among all threads. If the [Thread] is not running this returns an empty string.
</description>
</method>
<method name="is_active" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this [Thread] is currently active. An active [Thread] cannot start work on a new method but can be joined with [method wait_to_finish].
</description>
</method>
<method name="start">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="instance" type="Object">
- </argument>
- <argument index="1" name="method" type="StringName">
- </argument>
- <argument index="2" name="userdata" type="Variant" default="null">
- </argument>
- <argument index="3" name="priority" type="int" enum="Thread.Priority" default="1">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="instance" type="Object" />
+ <argument index="1" name="method" type="StringName" />
+ <argument index="2" name="userdata" type="Variant" default="null" />
+ <argument index="3" name="priority" type="int" enum="Thread.Priority" default="1" />
<description>
Starts a new [Thread] that runs [code]method[/code] on object [code]instance[/code] with [code]userdata[/code] passed as an argument. Even if no userdata is passed, [code]method[/code] must accept one argument and it will be null. The [code]priority[/code] of the [Thread] can be changed by passing a value from the [enum Priority] enum.
Returns [constant OK] on success, or [constant ERR_CANT_CREATE] on failure.
</description>
</method>
<method name="wait_to_finish">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Joins the [Thread] and waits for it to finish. Returns what the method called returned.
</description>
diff --git a/doc/classes/TileData.xml b/doc/classes/TileData.xml
index bb793024eb..b5031cfc63 100644
--- a/doc/classes/TileData.xml
+++ b/doc/classes/TileData.xml
@@ -8,208 +8,149 @@
</tutorials>
<methods>
<method name="add_collision_polygon">
- <return type="void">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_id" type="int" />
<description>
</description>
</method>
<method name="get_collision_polygon_one_way_margin" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
- <argument index="1" name="polygon_index" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="layer_id" type="int" />
+ <argument index="1" name="polygon_index" type="int" />
<description>
</description>
</method>
<method name="get_collision_polygon_points" qualifiers="const">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
- <argument index="1" name="polygon_index" type="int">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="layer_id" type="int" />
+ <argument index="1" name="polygon_index" type="int" />
<description>
</description>
</method>
<method name="get_collision_polygons_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="layer_id" type="int" />
<description>
</description>
</method>
<method name="get_custom_data" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="layer_name" type="String">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="layer_name" type="String" />
<description>
</description>
</method>
<method name="get_custom_data_by_layer_id" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="layer_id" type="int" />
<description>
</description>
</method>
<method name="get_navigation_polygon" qualifiers="const">
- <return type="NavigationPolygon">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
+ <return type="NavigationPolygon" />
+ <argument index="0" name="layer_id" type="int" />
<description>
</description>
</method>
<method name="get_occluder" qualifiers="const">
- <return type="OccluderPolygon2D">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
+ <return type="OccluderPolygon2D" />
+ <argument index="0" name="layer_id" type="int" />
<description>
</description>
</method>
<method name="get_peering_bit_terrain" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="peering_bit" type="int" enum="TileSet.CellNeighbor">
- </argument>
+ <return type="int" />
+ <argument index="0" name="peering_bit" type="int" enum="TileSet.CellNeighbor" />
<description>
</description>
</method>
<method name="is_collision_polygon_one_way" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
- <argument index="1" name="polygon_index" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="layer_id" type="int" />
+ <argument index="1" name="polygon_index" type="int" />
<description>
</description>
</method>
<method name="remove_collision_polygon">
- <return type="void">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
- <argument index="1" name="polygon_index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_id" type="int" />
+ <argument index="1" name="polygon_index" type="int" />
<description>
</description>
</method>
<method name="set_collision_polygon_one_way">
- <return type="void">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
- <argument index="1" name="polygon_index" type="int">
- </argument>
- <argument index="2" name="one_way" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_id" type="int" />
+ <argument index="1" name="polygon_index" type="int" />
+ <argument index="2" name="one_way" type="bool" />
<description>
</description>
</method>
<method name="set_collision_polygon_one_way_margin">
- <return type="void">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
- <argument index="1" name="polygon_index" type="int">
- </argument>
- <argument index="2" name="one_way_margin" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_id" type="int" />
+ <argument index="1" name="polygon_index" type="int" />
+ <argument index="2" name="one_way_margin" type="float" />
<description>
</description>
</method>
<method name="set_collision_polygon_points">
- <return type="void">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
- <argument index="1" name="polygon_index" type="int">
- </argument>
- <argument index="2" name="polygon" type="PackedVector2Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_id" type="int" />
+ <argument index="1" name="polygon_index" type="int" />
+ <argument index="2" name="polygon" type="PackedVector2Array" />
<description>
</description>
</method>
<method name="set_collision_polygons_count">
- <return type="void">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
- <argument index="1" name="polygons_count" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_id" type="int" />
+ <argument index="1" name="polygons_count" type="int" />
<description>
</description>
</method>
<method name="set_custom_data">
- <return type="void">
- </return>
- <argument index="0" name="layer_name" type="String">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_name" type="String" />
+ <argument index="1" name="value" type="Variant" />
<description>
</description>
</method>
<method name="set_custom_data_by_layer_id">
- <return type="void">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_id" type="int" />
+ <argument index="1" name="value" type="Variant" />
<description>
</description>
</method>
<method name="set_navigation_polygon">
- <return type="void">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
- <argument index="1" name="navigation_polygon" type="NavigationPolygon">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_id" type="int" />
+ <argument index="1" name="navigation_polygon" type="NavigationPolygon" />
<description>
</description>
</method>
<method name="set_occluder">
- <return type="void">
- </return>
- <argument index="0" name="layer_id" type="int">
- </argument>
- <argument index="1" name="occluder_polygon" type="OccluderPolygon2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_id" type="int" />
+ <argument index="1" name="occluder_polygon" type="OccluderPolygon2D" />
<description>
</description>
</method>
<method name="set_peering_bit_terrain">
- <return type="void">
- </return>
- <argument index="0" name="peering_bit" type="int" enum="TileSet.CellNeighbor">
- </argument>
- <argument index="1" name="terrain" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="peering_bit" type="int" enum="TileSet.CellNeighbor" />
+ <argument index="1" name="terrain" type="int" />
<description>
</description>
</method>
<method name="tile_get_material" qualifiers="const">
- <return type="ShaderMaterial">
- </return>
+ <return type="ShaderMaterial" />
<description>
</description>
</method>
<method name="tile_set_material">
- <return type="void">
- </return>
- <argument index="0" name="material" type="ShaderMaterial">
- </argument>
+ <return type="void" />
+ <argument index="0" name="material" type="ShaderMaterial" />
<description>
</description>
</method>
diff --git a/doc/classes/TileMap.xml b/doc/classes/TileMap.xml
index e6f696d27c..f3c64c3c7d 100644
--- a/doc/classes/TileMap.xml
+++ b/doc/classes/TileMap.xml
@@ -18,117 +18,153 @@
</tutorials>
<methods>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears all cells.
</description>
</method>
<method name="fix_invalid_tiles">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears cells that do not exist in the tileset.
</description>
</method>
<method name="get_cell_alternative_tile" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="coords" type="Vector2i">
- </argument>
- <argument index="1" name="use_proxies" type="bool">
- </argument>
+ <return type="int" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="coords" type="Vector2i" />
+ <argument index="2" name="use_proxies" type="bool" />
<description>
</description>
</method>
<method name="get_cell_atlas_coords" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="coords" type="Vector2i">
- </argument>
- <argument index="1" name="use_proxies" type="bool">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="coords" type="Vector2i" />
+ <argument index="2" name="use_proxies" type="bool" />
<description>
</description>
</method>
<method name="get_cell_source_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="coords" type="Vector2i">
- </argument>
- <argument index="1" name="use_proxies" type="bool">
- </argument>
+ <return type="int" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="coords" type="Vector2i" />
+ <argument index="2" name="use_proxies" type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="get_layer_name" qualifiers="const">
+ <return type="String" />
+ <argument index="0" name="layer" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="get_layer_y_sort_origin" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="layer" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="get_layer_z_indexd" qualifiers="const">
+ <return type="int" />
+ <argument index="0" name="layer" type="int" />
<description>
</description>
</method>
<method name="get_neighbor_cell" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="coords" type="Vector2i">
- </argument>
- <argument index="1" name="neighbor" type="int" enum="TileSet.CellNeighbor">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="coords" type="Vector2i" />
+ <argument index="1" name="neighbor" type="int" enum="TileSet.CellNeighbor" />
<description>
</description>
</method>
<method name="get_surrounding_tiles">
- <return type="Vector2i[]">
- </return>
- <argument index="0" name="coords" type="Vector2i">
- </argument>
+ <return type="Vector2i[]" />
+ <argument index="0" name="coords" type="Vector2i" />
<description>
</description>
</method>
<method name="get_used_cells" qualifiers="const">
- <return type="Vector2i[]">
- </return>
+ <return type="Vector2i[]" />
+ <argument index="0" name="layer" type="int" />
<description>
Returns a [Vector2] array with the positions of all cells containing a tile from the tileset (i.e. a tile index different from [code]-1[/code]).
</description>
</method>
<method name="get_used_rect">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Returns a rectangle enclosing the used (non-empty) tiles of the map.
</description>
</method>
+ <method name="is_layer_enabled" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="layer" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="is_layer_y_sort_enabled" qualifiers="const">
+ <return type="bool" />
+ <argument index="0" name="layer" type="int" />
+ <description>
+ </description>
+ </method>
<method name="map_to_world" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="map_position" type="Vector2i">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="map_position" type="Vector2i" />
<description>
Returns the local position corresponding to the given tilemap (grid-based) coordinates.
</description>
</method>
<method name="set_cell">
- <return type="void">
- </return>
- <argument index="0" name="coords" type="Vector2i">
- </argument>
- <argument index="1" name="source_id" type="int" default="-1">
- </argument>
- <argument index="2" name="atlas_coords" type="Vector2i" default="Vector2i(-1, -1)">
- </argument>
- <argument index="3" name="alternative_tile" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="coords" type="Vector2i" />
+ <argument index="2" name="source_id" type="int" default="-1" />
+ <argument index="3" name="atlas_coords" type="Vector2i" default="Vector2i(-1, -1)" />
+ <argument index="4" name="alternative_tile" type="int" default="-1" />
<description>
Sets the tile index for the cell given by a Vector2i.
</description>
</method>
- <method name="update_dirty_quadrants">
- <return type="void">
- </return>
+ <method name="set_layer_enabled">
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="enabled" type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="set_layer_name">
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="name" type="String" />
+ <description>
+ </description>
+ </method>
+ <method name="set_layer_y_sort_enabled">
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="y_sort_enabled" type="bool" />
+ <description>
+ </description>
+ </method>
+ <method name="set_layer_y_sort_origin">
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="y_sort_origin" type="int" />
+ <description>
+ </description>
+ </method>
+ <method name="set_layer_z_index">
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="z_index" type="int" />
<description>
- Updates the tile map's quadrants, allowing things such as navigation and collision shapes to be immediately used if modified.
</description>
</method>
<method name="world_to_map" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="world_position" type="Vector2">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="world_position" type="Vector2" />
<description>
Returns the tilemap (grid-based) coordinates corresponding to the given local position.
</description>
@@ -138,9 +174,11 @@
<member name="cell_quadrant_size" type="int" setter="set_quadrant_size" getter="get_quadrant_size" default="16">
The TileMap's quadrant size. Optimizes drawing by batching, using chunks of this size.
</member>
- <member name="show_collision" type="int" setter="set_collision_visibility_mode" getter="get_collision_visibility_mode" enum="TileMap.VisibilityMode" default="0">
+ <member name="collision_visibility_mode" type="int" setter="set_collision_visibility_mode" getter="get_collision_visibility_mode" enum="TileMap.VisibilityMode" default="0">
+ </member>
+ <member name="layers_count" type="int" setter="set_layers_count" getter="get_layers_count" default="1">
</member>
- <member name="show_navigation" type="int" setter="set_navigation_visibility_mode" getter="get_navigation_visibility_mode" enum="TileMap.VisibilityMode" default="0">
+ <member name="navigation_visibility_mode" type="int" setter="set_navigation_visibility_mode" getter="get_navigation_visibility_mode" enum="TileMap.VisibilityMode" default="0">
</member>
<member name="tile_set" type="TileSet" setter="set_tileset" getter="get_tileset">
The assigned [TileSet].
diff --git a/doc/classes/TileSet.xml b/doc/classes/TileSet.xml
index 8185b09a30..439c6e3830 100644
--- a/doc/classes/TileSet.xml
+++ b/doc/classes/TileSet.xml
@@ -18,410 +18,292 @@
</tutorials>
<methods>
<method name="add_source">
- <return type="int">
- </return>
- <argument index="0" name="atlas_source_id_override" type="TileSetSource">
- </argument>
- <argument index="1" name="arg1" type="int" default="-1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="atlas_source_id_override" type="TileSetSource" />
+ <argument index="1" name="arg1" type="int" default="-1" />
<description>
</description>
</method>
<method name="cleanup_invalid_tile_proxies">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="clear_tile_proxies">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="get_alternative_level_tile_proxy">
- <return type="Array">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
- <argument index="1" name="coords_from" type="Vector2i">
- </argument>
- <argument index="2" name="alternative_from" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="source_from" type="int" />
+ <argument index="1" name="coords_from" type="Vector2i" />
+ <argument index="2" name="alternative_from" type="int" />
<description>
</description>
</method>
<method name="get_coords_level_tile_proxy">
- <return type="Array">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
- <argument index="1" name="coords_from" type="Vector2i">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="source_from" type="int" />
+ <argument index="1" name="coords_from" type="Vector2i" />
<description>
</description>
</method>
<method name="get_navigation_layer_layers" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="layer_index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="layer_index" type="int" />
<description>
</description>
</method>
<method name="get_next_source_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_occlusion_layer_light_mask" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="arg0" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="arg0" type="int" />
<description>
</description>
</method>
<method name="get_occlusion_layer_sdf_collision" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="arg0" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="arg0" type="int" />
<description>
</description>
</method>
<method name="get_physics_layer_collision_layer" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="layer_index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="layer_index" type="int" />
<description>
</description>
</method>
<method name="get_physics_layer_collision_mask" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="layer_index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="layer_index" type="int" />
<description>
</description>
</method>
<method name="get_physics_layer_physics_material" qualifiers="const">
- <return type="PhysicsMaterial">
- </return>
- <argument index="0" name="layer_index" type="int">
- </argument>
+ <return type="PhysicsMaterial" />
+ <argument index="0" name="layer_index" type="int" />
<description>
</description>
</method>
<method name="get_source" qualifiers="const">
- <return type="TileSetSource">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="TileSetSource" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="get_source_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_source_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="get_source_level_tile_proxy">
- <return type="int">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="source_from" type="int" />
<description>
</description>
</method>
<method name="get_terrain_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="terrain_set" type="int">
- </argument>
- <argument index="1" name="terrain_index" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="terrain_set" type="int" />
+ <argument index="1" name="terrain_index" type="int" />
<description>
</description>
</method>
<method name="get_terrain_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="terrain_set" type="int">
- </argument>
- <argument index="1" name="terrain_index" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="terrain_set" type="int" />
+ <argument index="1" name="terrain_index" type="int" />
<description>
</description>
</method>
<method name="get_terrain_set_mode" qualifiers="const">
- <return type="int" enum="TileSet.TerrainMode">
- </return>
- <argument index="0" name="terrain_set" type="int">
- </argument>
+ <return type="int" enum="TileSet.TerrainMode" />
+ <argument index="0" name="terrain_set" type="int" />
<description>
</description>
</method>
<method name="get_terrains_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="terrain_set" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="terrain_set" type="int" />
<description>
</description>
</method>
<method name="has_alternative_level_tile_proxy">
- <return type="bool">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
- <argument index="1" name="coords_from" type="Vector2i">
- </argument>
- <argument index="2" name="alternative_from" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="source_from" type="int" />
+ <argument index="1" name="coords_from" type="Vector2i" />
+ <argument index="2" name="alternative_from" type="int" />
<description>
</description>
</method>
<method name="has_coords_level_tile_proxy">
- <return type="bool">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
- <argument index="1" name="coords_from" type="Vector2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="source_from" type="int" />
+ <argument index="1" name="coords_from" type="Vector2i" />
<description>
</description>
</method>
<method name="has_source" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="has_source_level_tile_proxy">
- <return type="bool">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="source_from" type="int" />
<description>
</description>
</method>
<method name="map_tile_proxy" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
- <argument index="1" name="coords_from" type="Vector2i">
- </argument>
- <argument index="2" name="alternative_from" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="source_from" type="int" />
+ <argument index="1" name="coords_from" type="Vector2i" />
+ <argument index="2" name="alternative_from" type="int" />
<description>
</description>
</method>
<method name="remove_alternative_level_tile_proxy">
- <return type="void">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
- <argument index="1" name="coords_from" type="Vector2i">
- </argument>
- <argument index="2" name="alternative_from" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="source_from" type="int" />
+ <argument index="1" name="coords_from" type="Vector2i" />
+ <argument index="2" name="alternative_from" type="int" />
<description>
</description>
</method>
<method name="remove_coords_level_tile_proxy">
- <return type="void">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
- <argument index="1" name="coords_from" type="Vector2i">
- </argument>
+ <return type="void" />
+ <argument index="0" name="source_from" type="int" />
+ <argument index="1" name="coords_from" type="Vector2i" />
<description>
</description>
</method>
<method name="remove_source">
- <return type="void">
- </return>
- <argument index="0" name="source_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="source_id" type="int" />
<description>
</description>
</method>
<method name="remove_source_level_tile_proxy">
- <return type="void">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="source_from" type="int" />
<description>
</description>
</method>
<method name="set_alternative_level_tile_proxy">
- <return type="void">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
- <argument index="1" name="coords_from" type="Vector2i">
- </argument>
- <argument index="2" name="alternative_from" type="int">
- </argument>
- <argument index="3" name="source_to" type="int">
- </argument>
- <argument index="4" name="coords_to" type="Vector2i">
- </argument>
- <argument index="5" name="alternative_to" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="source_from" type="int" />
+ <argument index="1" name="coords_from" type="Vector2i" />
+ <argument index="2" name="alternative_from" type="int" />
+ <argument index="3" name="source_to" type="int" />
+ <argument index="4" name="coords_to" type="Vector2i" />
+ <argument index="5" name="alternative_to" type="int" />
<description>
</description>
</method>
<method name="set_coords_level_tile_proxy">
- <return type="void">
- </return>
- <argument index="0" name="p_source_from" type="int">
- </argument>
- <argument index="1" name="coords_from" type="Vector2i">
- </argument>
- <argument index="2" name="source_to" type="int">
- </argument>
- <argument index="3" name="coords_to" type="Vector2i">
- </argument>
+ <return type="void" />
+ <argument index="0" name="p_source_from" type="int" />
+ <argument index="1" name="coords_from" type="Vector2i" />
+ <argument index="2" name="source_to" type="int" />
+ <argument index="3" name="coords_to" type="Vector2i" />
<description>
</description>
</method>
<method name="set_navigation_layer_layers">
- <return type="void">
- </return>
- <argument index="0" name="layer_index" type="int">
- </argument>
- <argument index="1" name="layers" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_index" type="int" />
+ <argument index="1" name="layers" type="int" />
<description>
</description>
</method>
<method name="set_occlusion_layer_light_mask">
- <return type="void">
- </return>
- <argument index="0" name="layer_index" type="int">
- </argument>
- <argument index="1" name="light_mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_index" type="int" />
+ <argument index="1" name="light_mask" type="int" />
<description>
</description>
</method>
<method name="set_occlusion_layer_sdf_collision">
- <return type="void">
- </return>
- <argument index="0" name="layer_index" type="int">
- </argument>
- <argument index="1" name="sdf_collision" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_index" type="int" />
+ <argument index="1" name="sdf_collision" type="int" />
<description>
</description>
</method>
<method name="set_physics_layer_collision_layer">
- <return type="void">
- </return>
- <argument index="0" name="layer_index" type="int">
- </argument>
- <argument index="1" name="layer" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_index" type="int" />
+ <argument index="1" name="layer" type="int" />
<description>
</description>
</method>
<method name="set_physics_layer_collision_mask">
- <return type="void">
- </return>
- <argument index="0" name="layer_index" type="int">
- </argument>
- <argument index="1" name="mask" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_index" type="int" />
+ <argument index="1" name="mask" type="int" />
<description>
</description>
</method>
<method name="set_physics_layer_physics_material">
- <return type="void">
- </return>
- <argument index="0" name="layer_index" type="int">
- </argument>
- <argument index="1" name="physics_material" type="PhysicsMaterial">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer_index" type="int" />
+ <argument index="1" name="physics_material" type="PhysicsMaterial" />
<description>
</description>
</method>
<method name="set_source_id">
- <return type="void">
- </return>
- <argument index="0" name="source_id" type="int">
- </argument>
- <argument index="1" name="arg1" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="source_id" type="int" />
+ <argument index="1" name="arg1" type="int" />
<description>
</description>
</method>
<method name="set_source_level_tile_proxy">
- <return type="void">
- </return>
- <argument index="0" name="source_from" type="int">
- </argument>
- <argument index="1" name="source_to" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="source_from" type="int" />
+ <argument index="1" name="source_to" type="int" />
<description>
</description>
</method>
<method name="set_terrain_color">
- <return type="void">
- </return>
- <argument index="0" name="terrain_set" type="int">
- </argument>
- <argument index="1" name="terrain_index" type="int">
- </argument>
- <argument index="2" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="terrain_set" type="int" />
+ <argument index="1" name="terrain_index" type="int" />
+ <argument index="2" name="color" type="Color" />
<description>
</description>
</method>
<method name="set_terrain_name">
- <return type="void">
- </return>
- <argument index="0" name="terrain_set" type="int">
- </argument>
- <argument index="1" name="terrain_index" type="int">
- </argument>
- <argument index="2" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="terrain_set" type="int" />
+ <argument index="1" name="terrain_index" type="int" />
+ <argument index="2" name="name" type="String" />
<description>
</description>
</method>
<method name="set_terrain_set_mode">
- <return type="void">
- </return>
- <argument index="0" name="terrain_set" type="int">
- </argument>
- <argument index="1" name="mode" type="int" enum="TileSet.TerrainMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="terrain_set" type="int" />
+ <argument index="1" name="mode" type="int" enum="TileSet.TerrainMode" />
<description>
</description>
</method>
<method name="set_terrains_count">
- <return type="void">
- </return>
- <argument index="0" name="terrain_set" type="int">
- </argument>
- <argument index="1" name="terrains_count" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="terrain_set" type="int" />
+ <argument index="1" name="terrains_count" type="int" />
<description>
</description>
</method>
@@ -447,8 +329,6 @@
</member>
<member name="uv_clipping" type="bool" setter="set_uv_clipping" getter="is_uv_clipping" default="false">
</member>
- <member name="y_sorting" type="bool" setter="set_y_sorting" getter="is_y_sorting" default="false">
- </member>
</members>
<constants>
<constant name="TILE_SHAPE_SQUARE" value="0" enum="TileShape">
diff --git a/doc/classes/TileSetAtlasSource.xml b/doc/classes/TileSetAtlasSource.xml
index 8482c356d7..8caa3a7c39 100644
--- a/doc/classes/TileSetAtlasSource.xml
+++ b/doc/classes/TileSetAtlasSource.xml
@@ -8,186 +8,136 @@
</tutorials>
<methods>
<method name="can_move_tile_in_atlas" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
- <argument index="1" name="new_atlas_coords" type="Vector2i" default="Vector2i(-1, -1)">
- </argument>
- <argument index="2" name="new_size" type="Vector2i" default="Vector2i(-1, -1)">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
+ <argument index="1" name="new_atlas_coords" type="Vector2i" default="Vector2i(-1, -1)" />
+ <argument index="2" name="new_size" type="Vector2i" default="Vector2i(-1, -1)" />
<description>
</description>
</method>
<method name="clear_tiles_outside_texture">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="create_alternative_tile">
- <return type="int">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
- <argument index="1" name="alternative_id_override" type="int" default="-1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
+ <argument index="1" name="alternative_id_override" type="int" default="-1" />
<description>
</description>
</method>
<method name="create_tile">
- <return type="void">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
- <argument index="1" name="size" type="Vector2i" default="Vector2i(1, 1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
+ <argument index="1" name="size" type="Vector2i" default="Vector2i(1, 1)" />
<description>
</description>
</method>
<method name="get_alternative_tile_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
+ <argument index="1" name="index" type="int" />
<description>
</description>
</method>
<method name="get_alternative_tiles_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
+ <return type="int" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
<description>
</description>
</method>
<method name="get_atlas_grid_size" qualifiers="const">
- <return type="Vector2i">
- </return>
+ <return type="Vector2i" />
<description>
</description>
</method>
<method name="get_next_alternative_tile_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
+ <return type="int" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
<description>
</description>
</method>
<method name="get_tile_at_coords" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
<description>
</description>
</method>
<method name="get_tile_data" qualifiers="const">
- <return type="Object">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="Object" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
+ <argument index="1" name="index" type="int" />
<description>
</description>
</method>
<method name="get_tile_id" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="get_tile_size_in_atlas" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
<description>
</description>
</method>
<method name="get_tile_texture_region" qualifiers="const">
- <return type="Rect2i">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
+ <return type="Rect2i" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
<description>
</description>
</method>
<method name="get_tiles_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="has_alternative_tile" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
- <argument index="1" name="alternative_tile" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
+ <argument index="1" name="alternative_tile" type="int" />
<description>
</description>
</method>
<method name="has_tile" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
<description>
</description>
</method>
<method name="has_tiles_outside_texture">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="move_tile_in_atlas">
- <return type="void">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
- <argument index="1" name="new_atlas_coords" type="Vector2i" default="Vector2i(-1, -1)">
- </argument>
- <argument index="2" name="new_size" type="Vector2i" default="Vector2i(-1, -1)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
+ <argument index="1" name="new_atlas_coords" type="Vector2i" default="Vector2i(-1, -1)" />
+ <argument index="2" name="new_size" type="Vector2i" default="Vector2i(-1, -1)" />
<description>
</description>
</method>
<method name="remove_alternative_tile">
- <return type="void">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
- <argument index="1" name="alternative_tile" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
+ <argument index="1" name="alternative_tile" type="int" />
<description>
</description>
</method>
<method name="remove_tile">
- <return type="void">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
+ <return type="void" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
<description>
</description>
</method>
<method name="set_alternative_tile_id">
- <return type="void">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
- <argument index="1" name="alternative_tile" type="int">
- </argument>
- <argument index="2" name="new_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
+ <argument index="1" name="alternative_tile" type="int" />
+ <argument index="2" name="new_id" type="int" />
<description>
</description>
</method>
diff --git a/doc/classes/TileSetScenesCollectionSource.xml b/doc/classes/TileSetScenesCollectionSource.xml
index 1a00eb51c0..a44f519a4c 100644
--- a/doc/classes/TileSetScenesCollectionSource.xml
+++ b/doc/classes/TileSetScenesCollectionSource.xml
@@ -8,144 +8,107 @@
</tutorials>
<methods>
<method name="create_scene_tile">
- <return type="int">
- </return>
- <argument index="0" name="packed_scene" type="PackedScene">
- </argument>
- <argument index="1" name="id_override" type="int" default="-1">
- </argument>
+ <return type="int" />
+ <argument index="0" name="packed_scene" type="PackedScene" />
+ <argument index="1" name="id_override" type="int" default="-1" />
<description>
</description>
</method>
<method name="get_alternative_tile_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
+ <argument index="1" name="index" type="int" />
<description>
</description>
</method>
<method name="get_alternative_tiles_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
+ <return type="int" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
<description>
</description>
</method>
<method name="get_next_scene_tile_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_scene_tile_display_placeholder" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
</description>
</method>
<method name="get_scene_tile_id">
- <return type="int">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="get_scene_tile_scene" qualifiers="const">
- <return type="PackedScene">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="PackedScene" />
+ <argument index="0" name="id" type="int" />
<description>
</description>
</method>
<method name="get_scene_tiles_count">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_tile_id" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="get_tiles_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="has_alternative_tile" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
- <argument index="1" name="alternative_tile" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
+ <argument index="1" name="alternative_tile" type="int" />
<description>
</description>
</method>
<method name="has_scene_tile_id">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
</description>
</method>
<method name="has_tile" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="atlas_coords" type="Vector2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="atlas_coords" type="Vector2i" />
<description>
</description>
</method>
<method name="remove_scene_tile">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
<description>
</description>
</method>
<method name="set_scene_tile_display_placeholder">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="display_placeholder" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="display_placeholder" type="bool" />
<description>
</description>
</method>
<method name="set_scene_tile_id">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="new_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="new_id" type="int" />
<description>
</description>
</method>
<method name="set_scene_tile_scene">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="packed_scene" type="PackedScene">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="packed_scene" type="PackedScene" />
<description>
</description>
</method>
diff --git a/doc/classes/Time.xml b/doc/classes/Time.xml
index 0c7c090e97..24ce30154d 100644
--- a/doc/classes/Time.xml
+++ b/doc/classes/Time.xml
@@ -13,81 +13,63 @@
</tutorials>
<methods>
<method name="get_date_dict_from_system" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="utc" type="bool" default="false">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="utc" type="bool" default="false" />
<description>
Returns the current date as a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/code], and [code]dst[/code] (Daylight Savings Time).
The returned values are in the system's local time when [code]utc[/code] is false, otherwise they are in UTC.
</description>
</method>
<method name="get_date_dict_from_unix_time" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="unix_time_val" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="unix_time_val" type="int" />
<description>
Converts the given Unix timestamp to a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], and [code]weekday[/code].
</description>
</method>
<method name="get_date_string_from_system" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="utc" type="bool" default="false">
- </argument>
+ <return type="String" />
+ <argument index="0" name="utc" type="bool" default="false" />
<description>
Returns the current date as an ISO 8601 date string (YYYY-MM-DD).
The returned values are in the system's local time when [code]utc[/code] is false, otherwise they are in UTC.
</description>
</method>
<method name="get_date_string_from_unix_time" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="unix_time_val" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="unix_time_val" type="int" />
<description>
Converts the given Unix timestamp to an ISO 8601 date string (YYYY-MM-DD).
</description>
</method>
<method name="get_datetime_dict_from_string" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="datetime" type="String">
- </argument>
- <argument index="1" name="weekday" type="bool">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="datetime" type="String" />
+ <argument index="1" name="weekday" type="bool" />
<description>
Converts the given ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS) to a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/code], [code]hour[/code], [code]minute[/code], and [code]second[/code].
If [code]weekday[/code] is false, then the [code]weekday[/code] entry is excluded (the calculation is relatively expensive).
</description>
</method>
<method name="get_datetime_dict_from_system" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="utc" type="bool" default="false">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="utc" type="bool" default="false" />
<description>
Returns the current date as a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/code], [code]hour[/code], [code]minute[/code], and [code]second[/code].
</description>
</method>
<method name="get_datetime_dict_from_unix_time" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="unix_time_val" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="unix_time_val" type="int" />
<description>
Converts the given Unix timestamp to a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], and [code]weekday[/code].
The returned Dictionary's values will be the same as the [method get_datetime_dict_from_system] if the Unix timestamp is the current time, with the exception of Daylight Savings Time as it cannot be determined from the epoch.
</description>
</method>
<method name="get_datetime_string_from_dict" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="datetime" type="Dictionary">
- </argument>
- <argument index="1" name="use_space" type="bool">
- </argument>
+ <return type="String" />
+ <argument index="0" name="datetime" type="Dictionary" />
+ <argument index="1" name="use_space" type="bool" />
<description>
Converts the given dictionary of keys to an ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS).
The given dictionary can be populated with the following keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]hour[/code], [code]minute[/code], and [code]second[/code]. Any other entries (including [code]dst[/code]) are ignored.
@@ -96,12 +78,9 @@
</description>
</method>
<method name="get_datetime_string_from_system" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="utc" type="bool" default="false">
- </argument>
- <argument index="1" name="use_space" type="bool" default="false">
- </argument>
+ <return type="String" />
+ <argument index="0" name="utc" type="bool" default="false" />
+ <argument index="1" name="use_space" type="bool" default="false" />
<description>
Returns the current date and time as a dictionary of keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]weekday[/code], [code]dst[/code] (Daylight Savings Time), [code]hour[/code], [code]minute[/code], and [code]second[/code].
The returned values are in the system's local time when [code]utc[/code] is false, otherwise they are in UTC.
@@ -109,81 +88,65 @@
</description>
</method>
<method name="get_datetime_string_from_unix_time" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="unix_time_val" type="int">
- </argument>
- <argument index="1" name="use_space" type="bool" default="false">
- </argument>
+ <return type="String" />
+ <argument index="0" name="unix_time_val" type="int" />
+ <argument index="1" name="use_space" type="bool" default="false" />
<description>
Converts the given Unix timestamp to an ISO 8601 date and time string (YYYY-MM-DDTHH:MM:SS).
If [code]use_space[/code] is true, use a space instead of the letter T in the middle.
</description>
</method>
<method name="get_ticks_msec" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of time passed in milliseconds since the engine started.
</description>
</method>
<method name="get_ticks_usec" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the amount of time passed in microseconds since the engine started.
</description>
</method>
<method name="get_time_dict_from_system" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="utc" type="bool" default="false">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="utc" type="bool" default="false" />
<description>
Returns the current time as a dictionary of keys: [code]hour[/code], [code]minute[/code], and [code]second[/code].
The returned values are in the system's local time when [code]utc[/code] is false, otherwise they are in UTC.
</description>
</method>
<method name="get_time_dict_from_unix_time" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="unix_time_val" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="unix_time_val" type="int" />
<description>
Converts the given time to a dictionary of keys: [code]hour[/code], [code]minute[/code], and [code]second[/code].
</description>
</method>
<method name="get_time_string_from_system" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="utc" type="bool" default="false">
- </argument>
+ <return type="String" />
+ <argument index="0" name="utc" type="bool" default="false" />
<description>
Returns the current time as an ISO 8601 time string (HH:MM:SS).
The returned values are in the system's local time when [code]utc[/code] is false, otherwise they are in UTC.
</description>
</method>
<method name="get_time_string_from_unix_time" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="unix_time_val" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="unix_time_val" type="int" />
<description>
Converts the given Unix timestamp to an ISO 8601 time string (HH:MM:SS).
</description>
</method>
<method name="get_time_zone_from_system" qualifiers="const">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Returns the current time zone as a dictionary of keys: [code]bias[/code] and [code]name[/code]. The [code]bias[/code] value is the offset from UTC in minutes, since not all time zones are multiples of an hour from UTC.
</description>
</method>
<method name="get_unix_time_from_datetime_dict" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="datetime" type="Dictionary">
- </argument>
+ <return type="int" />
+ <argument index="0" name="datetime" type="Dictionary" />
<description>
Converts a dictionary of time values to a Unix timestamp.
The given dictionary can be populated with the following keys: [code]year[/code], [code]month[/code], [code]day[/code], [code]hour[/code], [code]minute[/code], and [code]second[/code]. Any other entries (including [code]dst[/code]) are ignored.
@@ -192,17 +155,14 @@
</description>
</method>
<method name="get_unix_time_from_datetime_string" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="datetime" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="datetime" type="String" />
<description>
Converts the given ISO 8601 date and/or time string to a Unix timestamp. The string can contain a date only, a time only, or both.
</description>
</method>
<method name="get_unix_time_from_system" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the current Unix timestamp in seconds based on the system time.
</description>
diff --git a/doc/classes/Timer.xml b/doc/classes/Timer.xml
index 807d8033c1..b91f159160 100644
--- a/doc/classes/Timer.xml
+++ b/doc/classes/Timer.xml
@@ -12,25 +12,21 @@
</tutorials>
<methods>
<method name="is_stopped" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the timer is stopped.
</description>
</method>
<method name="start">
- <return type="void">
- </return>
- <argument index="0" name="time_sec" type="float" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="time_sec" type="float" default="-1" />
<description>
Starts the timer. Sets [code]wait_time[/code] to [code]time_sec[/code] if [code]time_sec &gt; 0[/code]. This also resets the remaining time to [code]wait_time[/code].
[b]Note:[/b] this method will not resume a paused timer. See [member paused].
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the timer.
</description>
diff --git a/doc/classes/TouchScreenButton.xml b/doc/classes/TouchScreenButton.xml
index bb4c17c531..e75a41a936 100644
--- a/doc/classes/TouchScreenButton.xml
+++ b/doc/classes/TouchScreenButton.xml
@@ -12,8 +12,7 @@
</tutorials>
<methods>
<method name="is_pressed" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this button is currently pressed.
</description>
diff --git a/doc/classes/Transform2D.xml b/doc/classes/Transform2D.xml
index 4f9b59c188..b9d3951b0a 100644
--- a/doc/classes/Transform2D.xml
+++ b/doc/classes/Transform2D.xml
@@ -4,7 +4,7 @@
2D transformation (2×3 matrix).
</brief_description>
<description>
- 2×3 matrix (2 rows, 3 columns) used for 2D linear transformations. It can represent transformations such as translation, rotation, or scaling. It consists of a three [Vector2] values: [member x], [member y], and the [member origin].
+ 2×3 matrix (2 rows, 3 columns) used for 2D linear transformations. It can represent transformations such as translation, rotation, or scaling. It consists of three [Vector2] values: [member x], [member y], and the [member origin].
For more information, read the "Matrices and transforms" documentation article.
</description>
<tutorials>
@@ -15,243 +15,190 @@
</tutorials>
<methods>
<method name="Transform2D" qualifiers="constructor">
- <return type="Transform2D">
- </return>
+ <return type="Transform2D" />
<description>
Constructs a default-initialized [Transform2D] set to [constant IDENTITY].
</description>
</method>
<method name="Transform2D" qualifiers="constructor">
- <return type="Transform2D">
- </return>
- <argument index="0" name="from" type="Transform2D">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="from" type="Transform2D" />
<description>
Constructs a [Transform2D] as a copy of the given [Transform2D].
</description>
</method>
<method name="Transform2D" qualifiers="constructor">
- <return type="Transform2D">
- </return>
- <argument index="0" name="rotation" type="float">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="rotation" type="float" />
+ <argument index="1" name="position" type="Vector2" />
<description>
Constructs the transform from a given angle (in radians) and position.
</description>
</method>
<method name="Transform2D" qualifiers="constructor">
- <return type="Transform2D">
- </return>
- <argument index="0" name="x_axis" type="Vector2">
- </argument>
- <argument index="1" name="y_axis" type="Vector2">
- </argument>
- <argument index="2" name="origin" type="Vector2">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="x_axis" type="Vector2" />
+ <argument index="1" name="y_axis" type="Vector2" />
+ <argument index="2" name="origin" type="Vector2" />
<description>
Constructs the transform from 3 [Vector2] values representing [member x], [member y], and the [member origin] (the three column vectors).
</description>
</method>
<method name="affine_inverse" qualifiers="const">
- <return type="Transform2D">
- </return>
+ <return type="Transform2D" />
<description>
Returns the inverse of the transform, under the assumption that the transformation is composed of rotation, scaling and translation.
</description>
</method>
<method name="basis_xform" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="v" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="v" type="Vector2" />
<description>
Returns a vector transformed (multiplied) by the basis matrix.
This method does not account for translation (the origin vector).
</description>
</method>
<method name="basis_xform_inv" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="v" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="v" type="Vector2" />
<description>
Returns a vector transformed (multiplied) by the inverse basis matrix.
This method does not account for translation (the origin vector).
</description>
</method>
<method name="get_origin" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the transform's origin (translation).
</description>
</method>
<method name="get_rotation" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the transform's rotation (in radians).
</description>
</method>
<method name="get_scale" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the scale.
</description>
</method>
<method name="interpolate_with" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="xform" type="Transform2D">
- </argument>
- <argument index="1" name="weight" type="float">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="xform" type="Transform2D" />
+ <argument index="1" name="weight" type="float" />
<description>
Returns a transform interpolated between this transform and another by a given [code]weight[/code] (on the range of 0.0 to 1.0).
</description>
</method>
<method name="inverse" qualifiers="const">
- <return type="Transform2D">
- </return>
+ <return type="Transform2D" />
<description>
Returns the inverse of the transform, under the assumption that the transformation is composed of rotation and translation (no scaling, use [method affine_inverse] for transforms with scaling).
</description>
</method>
<method name="is_equal_approx" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="xform" type="Transform2D">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="xform" type="Transform2D" />
<description>
Returns [code]true[/code] if this transform and [code]transform[/code] are approximately equal, by calling [code]is_equal_approx[/code] on each component.
</description>
</method>
<method name="looking_at" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="target" type="Vector2" default="Transform2D(1, 0, 0, 1, 0, 0)">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="target" type="Vector2" default="Transform2D(1, 0, 0, 1, 0, 0)" />
<description>
Returns a copy of the transform rotated such that it's rotation on the X-axis points towards the [code]target[/code] position.
Operations take place in global space.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Transform2D">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Transform2D" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="Vector2" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Rect2">
- </return>
- <argument index="0" name="right" type="Rect2">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="right" type="Rect2" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Transform2D">
- </return>
- <argument index="0" name="right" type="Transform2D">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="right" type="Transform2D" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="PackedVector2Array">
- </return>
- <argument index="0" name="right" type="PackedVector2Array">
- </argument>
+ <return type="PackedVector2Array" />
+ <argument index="0" name="right" type="PackedVector2Array" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Transform2D">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="right" type="float" />
<description>
This operator multiplies all components of the [Transform2D], including the origin vector, which scales it uniformly.
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Transform2D">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="right" type="int" />
<description>
This operator multiplies all components of the [Transform2D], including the origin vector, which scales it uniformly.
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Transform2D">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Transform2D" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="orthonormalized" qualifiers="const">
- <return type="Transform2D">
- </return>
+ <return type="Transform2D" />
<description>
Returns the transform with the basis orthogonal (90 degrees), and normalized axis vectors (scale of 1 or -1).
</description>
</method>
<method name="rotated" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="phi" type="float">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="phi" type="float" />
<description>
Rotates the transform by the given angle (in radians), using matrix multiplication.
</description>
</method>
<method name="scaled" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="scale" type="Vector2">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="scale" type="Vector2" />
<description>
Scales the transform by the given scale factor, using matrix multiplication.
</description>
</method>
<method name="set_rotation">
- <return type="void">
- </return>
- <argument index="0" name="rotation" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rotation" type="float" />
<description>
Sets the transform's rotation (in radians).
</description>
</method>
<method name="translated" qualifiers="const">
- <return type="Transform2D">
- </return>
- <argument index="0" name="offset" type="Vector2">
- </argument>
+ <return type="Transform2D" />
+ <argument index="0" name="offset" type="Vector2" />
<description>
Translates the transform by the given offset, relative to the transform's basis vectors.
Unlike [method rotated] and [method scaled], this does not use matrix multiplication.
diff --git a/doc/classes/Transform3D.xml b/doc/classes/Transform3D.xml
index 5410cbced7..53cdfd53c9 100644
--- a/doc/classes/Transform3D.xml
+++ b/doc/classes/Transform3D.xml
@@ -17,88 +17,67 @@
</tutorials>
<methods>
<method name="Transform3D" qualifiers="constructor">
- <return type="Transform3D">
- </return>
+ <return type="Transform3D" />
<description>
Constructs a default-initialized [Transform3D] set to [constant IDENTITY].
</description>
</method>
<method name="Transform3D" qualifiers="constructor">
- <return type="Transform3D">
- </return>
- <argument index="0" name="from" type="Transform3D">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="from" type="Transform3D" />
<description>
Constructs a [Transform3D] as a copy of the given [Transform3D].
</description>
</method>
<method name="Transform3D" qualifiers="constructor">
- <return type="Transform3D">
- </return>
- <argument index="0" name="basis" type="Basis">
- </argument>
- <argument index="1" name="origin" type="Vector3">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="basis" type="Basis" />
+ <argument index="1" name="origin" type="Vector3" />
<description>
Constructs a Transform3D from a [Basis] and [Vector3].
</description>
</method>
<method name="Transform3D" qualifiers="constructor">
- <return type="Transform3D">
- </return>
- <argument index="0" name="x_axis" type="Vector3">
- </argument>
- <argument index="1" name="y_axis" type="Vector3">
- </argument>
- <argument index="2" name="z_axis" type="Vector3">
- </argument>
- <argument index="3" name="origin" type="Vector3">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="x_axis" type="Vector3" />
+ <argument index="1" name="y_axis" type="Vector3" />
+ <argument index="2" name="z_axis" type="Vector3" />
+ <argument index="3" name="origin" type="Vector3" />
<description>
Constructs a Transform3D from four [Vector3] values (matrix columns). Each axis corresponds to local basis vectors (some of which may be scaled).
</description>
</method>
<method name="affine_inverse" qualifiers="const">
- <return type="Transform3D">
- </return>
+ <return type="Transform3D" />
<description>
Returns the inverse of the transform, under the assumption that the transformation is composed of rotation, scaling and translation.
</description>
</method>
<method name="interpolate_with" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="xform" type="Transform3D">
- </argument>
- <argument index="1" name="weight" type="float">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="xform" type="Transform3D" />
+ <argument index="1" name="weight" type="float" />
<description>
Interpolates the transform to other Transform3D by weight amount (on the range of 0.0 to 1.0).
</description>
</method>
<method name="inverse" qualifiers="const">
- <return type="Transform3D">
- </return>
+ <return type="Transform3D" />
<description>
Returns the inverse of the transform, under the assumption that the transformation is composed of rotation and translation (no scaling, use affine_inverse for transforms with scaling).
</description>
</method>
<method name="is_equal_approx" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="xform" type="Transform3D">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="xform" type="Transform3D" />
<description>
Returns [code]true[/code] if this transform and [code]transform[/code] are approximately equal, by calling [code]is_equal_approx[/code] on each component.
</description>
</method>
<method name="looking_at" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="target" type="Vector3">
- </argument>
- <argument index="1" name="up" type="Vector3" default="Vector3(0, 1, 0)">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="target" type="Vector3" />
+ <argument index="1" name="up" type="Vector3" default="Vector3(0, 1, 0)" />
<description>
Returns a copy of the transform rotated such that its -Z axis points towards the [code]target[/code] position.
The transform will first be rotated around the given [code]up[/code] vector, and then fully aligned to the target by a further rotation around an axis perpendicular to both the [code]target[/code] and [code]up[/code] vectors.
@@ -106,103 +85,79 @@
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Transform3D">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Transform3D" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="PackedVector3Array">
- </return>
- <argument index="0" name="right" type="PackedVector3Array">
- </argument>
+ <return type="PackedVector3Array" />
+ <argument index="0" name="right" type="PackedVector3Array" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Transform3D">
- </return>
- <argument index="0" name="right" type="Transform3D">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="right" type="Transform3D" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="AABB">
- </return>
- <argument index="0" name="right" type="AABB">
- </argument>
+ <return type="AABB" />
+ <argument index="0" name="right" type="AABB" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Transform3D">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="right" type="float" />
<description>
This operator multiplies all components of the [Transform3D], including the origin vector, which scales it uniformly.
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Transform3D">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="right" type="int" />
<description>
This operator multiplies all components of the [Transform3D], including the origin vector, which scales it uniformly.
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Transform3D">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Transform3D" />
<description>
</description>
</method>
<method name="orthonormalized" qualifiers="const">
- <return type="Transform3D">
- </return>
+ <return type="Transform3D" />
<description>
Returns the transform with the basis orthogonal (90 degrees), and normalized axis vectors.
</description>
</method>
<method name="rotated" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="axis" type="Vector3">
- </argument>
- <argument index="1" name="phi" type="float">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="axis" type="Vector3" />
+ <argument index="1" name="phi" type="float" />
<description>
Rotates the transform around the given axis by the given angle (in radians), using matrix multiplication. The axis must be a normalized vector.
</description>
</method>
<method name="scaled" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="scale" type="Vector3">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="scale" type="Vector3" />
<description>
Scales basis and origin of the transform by the given scale factor, using matrix multiplication.
</description>
</method>
<method name="translated" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="offset" type="Vector3">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="offset" type="Vector3" />
<description>
Translates the transform by the given offset, relative to the transform's basis vectors.
Unlike [method rotated] and [method scaled], this does not use matrix multiplication.
diff --git a/doc/classes/Translation.xml b/doc/classes/Translation.xml
index d286c6cf0c..4b83a2abf5 100644
--- a/doc/classes/Translation.xml
+++ b/doc/classes/Translation.xml
@@ -12,80 +12,59 @@
</tutorials>
<methods>
<method name="add_message">
- <return type="void">
- </return>
- <argument index="0" name="src_message" type="StringName">
- </argument>
- <argument index="1" name="xlated_message" type="StringName">
- </argument>
- <argument index="2" name="context" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="src_message" type="StringName" />
+ <argument index="1" name="xlated_message" type="StringName" />
+ <argument index="2" name="context" type="StringName" default="&quot;&quot;" />
<description>
Adds a message if nonexistent, followed by its translation.
An additional context could be used to specify the translation context or differentiate polysemic words.
</description>
</method>
<method name="add_plural_message">
- <return type="void">
- </return>
- <argument index="0" name="src_message" type="StringName">
- </argument>
- <argument index="1" name="xlated_messages" type="PackedStringArray">
- </argument>
- <argument index="2" name="context" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="src_message" type="StringName" />
+ <argument index="1" name="xlated_messages" type="PackedStringArray" />
+ <argument index="2" name="context" type="StringName" default="&quot;&quot;" />
<description>
Adds a message involving plural translation if nonexistent, followed by its translation.
An additional context could be used to specify the translation context or differentiate polysemic words.
</description>
</method>
<method name="erase_message">
- <return type="void">
- </return>
- <argument index="0" name="src_message" type="StringName">
- </argument>
- <argument index="1" name="context" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="src_message" type="StringName" />
+ <argument index="1" name="context" type="StringName" default="&quot;&quot;" />
<description>
Erases a message.
</description>
</method>
<method name="get_message" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="src_message" type="StringName">
- </argument>
- <argument index="1" name="context" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="src_message" type="StringName" />
+ <argument index="1" name="context" type="StringName" default="&quot;&quot;" />
<description>
Returns a message's translation.
</description>
</method>
<method name="get_message_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of existing messages.
</description>
</method>
<method name="get_message_list" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns all the messages (keys).
</description>
</method>
<method name="get_plural_message" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="src_message" type="StringName">
- </argument>
- <argument index="1" name="src_plural_message" type="StringName">
- </argument>
- <argument index="2" name="n" type="int">
- </argument>
- <argument index="3" name="context" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="src_message" type="StringName" />
+ <argument index="1" name="src_plural_message" type="StringName" />
+ <argument index="2" name="n" type="int" />
+ <argument index="3" name="context" type="StringName" default="&quot;&quot;" />
<description>
Returns a message's translation involving plurals.
The number [code]n[/code] is the number or quantity of the plural object. It will be used to guide the translation system to fetch the correct plural form for the selected language.
diff --git a/doc/classes/TranslationServer.xml b/doc/classes/TranslationServer.xml
index 664cb3e2e3..655c16b0cd 100644
--- a/doc/classes/TranslationServer.xml
+++ b/doc/classes/TranslationServer.xml
@@ -12,94 +12,73 @@
</tutorials>
<methods>
<method name="add_translation">
- <return type="void">
- </return>
- <argument index="0" name="translation" type="Translation">
- </argument>
+ <return type="void" />
+ <argument index="0" name="translation" type="Translation" />
<description>
Adds a [Translation] resource.
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the server from all translations.
</description>
</method>
<method name="get_loaded_locales" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an Array of all loaded locales of the game.
</description>
</method>
<method name="get_locale" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the current locale of the game.
</description>
</method>
<method name="get_locale_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="locale" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="locale" type="String" />
<description>
Returns a locale's language and its variant (e.g. [code]"en_US"[/code] would return [code]"English (United States)"[/code]).
</description>
</method>
<method name="get_translation_object">
- <return type="Translation">
- </return>
- <argument index="0" name="locale" type="String">
- </argument>
+ <return type="Translation" />
+ <argument index="0" name="locale" type="String" />
<description>
Returns the [Translation] instance based on the [code]locale[/code] passed in.
It will return a [code]nullptr[/code] if there is no [Translation] instance that matches the [code]locale[/code].
</description>
</method>
<method name="remove_translation">
- <return type="void">
- </return>
- <argument index="0" name="translation" type="Translation">
- </argument>
+ <return type="void" />
+ <argument index="0" name="translation" type="Translation" />
<description>
Removes the given translation from the server.
</description>
</method>
<method name="set_locale">
- <return type="void">
- </return>
- <argument index="0" name="locale" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="locale" type="String" />
<description>
Sets the locale of the game.
</description>
</method>
<method name="translate" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="message" type="StringName">
- </argument>
- <argument index="1" name="context" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="message" type="StringName" />
+ <argument index="1" name="context" type="StringName" default="&quot;&quot;" />
<description>
Returns the current locale's translation for the given message (key) and context.
</description>
</method>
<method name="translate_plural" qualifiers="const">
- <return type="StringName">
- </return>
- <argument index="0" name="message" type="StringName">
- </argument>
- <argument index="1" name="plural_message" type="StringName">
- </argument>
- <argument index="2" name="n" type="int">
- </argument>
- <argument index="3" name="context" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="message" type="StringName" />
+ <argument index="1" name="plural_message" type="StringName" />
+ <argument index="2" name="n" type="int" />
+ <argument index="3" name="context" type="StringName" default="&quot;&quot;" />
<description>
Returns the current locale's translation for the given message (key), plural_message and context.
The number [code]n[/code] is the number or quantity of the plural object. It will be used to guide the translation system to fetch the correct plural form for the selected language.
diff --git a/doc/classes/Tree.xml b/doc/classes/Tree.xml
index b498b9bb90..50a573d30f 100644
--- a/doc/classes/Tree.xml
+++ b/doc/classes/Tree.xml
@@ -36,35 +36,28 @@
</tutorials>
<methods>
<method name="are_column_titles_visible" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the column titles are being shown.
</description>
</method>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the tree. This removes all items.
</description>
</method>
<method name="clear_column_title_opentype_features">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
<description>
Removes all OpenType features from the item's text.
</description>
</method>
<method name="create_item">
- <return type="TreeItem">
- </return>
- <argument index="0" name="parent" type="Object" default="null">
- </argument>
- <argument index="1" name="idx" type="int" default="-1">
- </argument>
+ <return type="TreeItem" />
+ <argument index="0" name="parent" type="Object" default="null" />
+ <argument index="1" name="idx" type="int" default="-1" />
<description>
Creates an item in the tree and adds it as a child of [code]parent[/code].
If [code]parent[/code] is [code]null[/code], the root item will be the parent, or the new item will be the root itself if the tree is empty.
@@ -72,15 +65,13 @@
</description>
</method>
<method name="edit_selected">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Edits the selected tree item as if it was clicked. The item must be set editable with [method TreeItem.set_editable]. Returns [code]true[/code] if the item could be edited. Fails if no item is selected.
</description>
</method>
<method name="ensure_cursor_is_visible">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Makes the currently focused cell visible.
This will scroll the tree if necessary. In [constant SELECT_ROW] mode, this will not do horizontal scrolling, as all the cells in the selected row is focused logically.
@@ -88,81 +79,63 @@
</description>
</method>
<method name="get_column_at_position" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
+ <return type="int" />
+ <argument index="0" name="position" type="Vector2" />
<description>
Returns the column index at [code]position[/code], or -1 if no item is there.
</description>
</method>
<method name="get_column_expand_ratio" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="column" type="int" />
<description>
</description>
</method>
<method name="get_column_title" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the column's title.
</description>
</method>
<method name="get_column_title_direction" qualifiers="const">
- <return type="int" enum="Control.TextDirection">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="int" enum="Control.TextDirection" />
+ <argument index="0" name="column" type="int" />
<description>
Returns column title base writing direction.
</description>
</method>
<method name="get_column_title_language" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="column" type="int" />
<description>
Returns column title language code.
</description>
</method>
<method name="get_column_title_opentype_feature" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="tag" type="String" />
<description>
Returns OpenType feature [code]tag[/code] of the column title.
</description>
</method>
<method name="get_column_width" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the column's width in pixels.
</description>
</method>
<method name="get_custom_popup_rect" qualifiers="const">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Returns the rectangle for custom popups. Helper to create custom cell controls that display a popup. See [method TreeItem.set_cell_mode].
</description>
</method>
<method name="get_drop_section_at_position" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
+ <return type="int" />
+ <argument index="0" name="position" type="Vector2" />
<description>
Returns the drop section at [code]position[/code], or -100 if no item is there.
Values -1, 0, or 1 will be returned for the "above item", "on item", and "below item" drop sections, respectively. See [enum DropModeFlags] for a description of each drop section.
@@ -170,8 +143,7 @@
</description>
</method>
<method name="get_edited" qualifiers="const">
- <return type="TreeItem">
- </return>
+ <return type="TreeItem" />
<description>
Returns the currently edited item. Can be used with [signal item_edited] to get the item that was modified.
[codeblocks]
@@ -197,66 +169,54 @@
</description>
</method>
<method name="get_edited_column" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the column for the currently edited item.
</description>
</method>
<method name="get_item_area_rect" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="item" type="Object">
- </argument>
- <argument index="1" name="column" type="int" default="-1">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="item" type="Object" />
+ <argument index="1" name="column" type="int" default="-1" />
<description>
Returns the rectangle area for the specified item. If [code]column[/code] is specified, only get the position and size of that column, otherwise get the rectangle containing all columns.
</description>
</method>
<method name="get_item_at_position" qualifiers="const">
- <return type="TreeItem">
- </return>
- <argument index="0" name="position" type="Vector2">
- </argument>
+ <return type="TreeItem" />
+ <argument index="0" name="position" type="Vector2" />
<description>
Returns the tree item at the specified position (relative to the tree origin position).
</description>
</method>
<method name="get_next_selected">
- <return type="TreeItem">
- </return>
- <argument index="0" name="from" type="Object">
- </argument>
+ <return type="TreeItem" />
+ <argument index="0" name="from" type="Object" />
<description>
Returns the next selected item after the given one, or [code]null[/code] if the end is reached.
If [code]from[/code] is [code]null[/code], this returns the first selected item.
</description>
</method>
<method name="get_pressed_button" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the last pressed button's index.
</description>
</method>
<method name="get_root" qualifiers="const">
- <return type="TreeItem">
- </return>
+ <return type="TreeItem" />
<description>
Returns the tree's root item, or [code]null[/code] if the tree is empty.
</description>
</method>
<method name="get_scroll" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the current scrolling position.
</description>
</method>
<method name="get_selected" qualifiers="const">
- <return type="TreeItem">
- </return>
+ <return type="TreeItem" />
<description>
Returns the currently focused item, or [code]null[/code] if no item is focused.
In [constant SELECT_ROW] and [constant SELECT_SINGLE] modes, the focused item is same as the selected item. In [constant SELECT_MULTI] mode, the focused item is the item under the focus cursor, not necessarily selected.
@@ -264,8 +224,7 @@
</description>
</method>
<method name="get_selected_column" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the currently focused column, or -1 if no column is focused.
In [constant SELECT_SINGLE] mode, the focused column is the selected column. In [constant SELECT_ROW] mode, the focused column is always 0 if any item is selected. In [constant SELECT_MULTI] mode, the focused column is the column under the focus cursor, and there are not necessarily any column selected.
@@ -273,123 +232,90 @@
</description>
</method>
<method name="is_column_clipping_content" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="column" type="int" />
<description>
</description>
</method>
<method name="is_column_expanding" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="column" type="int" />
<description>
</description>
</method>
<method name="scroll_to_item">
- <return type="void">
- </return>
- <argument index="0" name="item" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="Object" />
<description>
Causes the [Tree] to jump to the specified item.
</description>
</method>
<method name="set_column_clip_content">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
</description>
</method>
<method name="set_column_custom_minimum_width">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="min_width" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="min_width" type="int" />
<description>
Overrides the calculated minimum width of a column. It can be set to `0` to restore the default behavior. Columns that have the "Expand" flag will use their "min_width" in a similar fashion to [member Control.size_flags_stretch_ratio].
</description>
</method>
<method name="set_column_expand">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="expand" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="expand" type="bool" />
<description>
If [code]true[/code], the column will have the "Expand" flag of [Control]. Columns that have the "Expand" flag will use their "min_width" in a similar fashion to [member Control.size_flags_stretch_ratio].
</description>
</method>
<method name="set_column_expand_ratio">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="ratio" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="ratio" type="int" />
<description>
</description>
</method>
<method name="set_column_title">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="title" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="title" type="String" />
<description>
Sets the title of a column.
</description>
</method>
<method name="set_column_title_direction">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="direction" type="int" enum="Control.TextDirection">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="direction" type="int" enum="Control.TextDirection" />
<description>
Sets column title base writing direction.
</description>
</method>
<method name="set_column_title_language">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="language" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="language" type="String" />
<description>
Sets language code of column title used for line-breaking and text shaping algorithms, if left empty current locale is used instead.
</description>
</method>
<method name="set_column_title_opentype_feature">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
- <argument index="2" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="tag" type="String" />
+ <argument index="2" name="value" type="int" />
<description>
Sets OpenType feature [code]tag[/code] for the column title.
</description>
</method>
<method name="set_column_titles_visible">
- <return type="void">
- </return>
- <argument index="0" name="visible" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="visible" type="bool" />
<description>
If [code]true[/code], column titles are visible.
</description>
@@ -429,12 +355,9 @@
</members>
<signals>
<signal name="button_pressed">
- <argument index="0" name="item" type="TreeItem">
- </argument>
- <argument index="1" name="column" type="int">
- </argument>
- <argument index="2" name="id" type="int">
- </argument>
+ <argument index="0" name="item" type="TreeItem" />
+ <argument index="1" name="column" type="int" />
+ <argument index="2" name="id" type="int" />
<description>
Emitted when a button on the tree was pressed (see [method TreeItem.add_button]).
</description>
@@ -445,29 +368,25 @@
</description>
</signal>
<signal name="column_title_pressed">
- <argument index="0" name="column" type="int">
- </argument>
+ <argument index="0" name="column" type="int" />
<description>
Emitted when a column's title is pressed.
</description>
</signal>
<signal name="custom_popup_edited">
- <argument index="0" name="arrow_clicked" type="bool">
- </argument>
+ <argument index="0" name="arrow_clicked" type="bool" />
<description>
Emitted when a cell with the [constant TreeItem.CELL_MODE_CUSTOM] is clicked to be edited.
</description>
</signal>
<signal name="empty_rmb">
- <argument index="0" name="position" type="Vector2">
- </argument>
+ <argument index="0" name="position" type="Vector2" />
<description>
Emitted when the right mouse button is pressed in the empty space of the tree.
</description>
</signal>
<signal name="empty_tree_rmb_selected">
- <argument index="0" name="position" type="Vector2">
- </argument>
+ <argument index="0" name="position" type="Vector2" />
<description>
Emitted when the right mouse button is pressed if right mouse button selection is active and the tree is empty.
</description>
@@ -478,8 +397,7 @@
</description>
</signal>
<signal name="item_collapsed">
- <argument index="0" name="item" type="TreeItem">
- </argument>
+ <argument index="0" name="item" type="TreeItem" />
<description>
Emitted when an item is collapsed by a click on the folding arrow.
</description>
@@ -505,8 +423,7 @@
</description>
</signal>
<signal name="item_rmb_selected">
- <argument index="0" name="position" type="Vector2">
- </argument>
+ <argument index="0" name="position" type="Vector2" />
<description>
Emitted when an item is selected with the right mouse button.
</description>
@@ -517,12 +434,9 @@
</description>
</signal>
<signal name="multi_selected">
- <argument index="0" name="item" type="TreeItem">
- </argument>
- <argument index="1" name="column" type="int">
- </argument>
- <argument index="2" name="selected" type="bool">
- </argument>
+ <argument index="0" name="item" type="TreeItem" />
+ <argument index="1" name="column" type="int" />
+ <argument index="2" name="selected" type="bool" />
<description>
Emitted instead of [code]item_selected[/code] if [code]select_mode[/code] is [constant SELECT_MULTI].
</description>
@@ -560,142 +474,142 @@
</constant>
</constants>
<theme_items>
- <theme_item name="arrow" type="Texture2D">
+ <theme_item name="arrow" data_type="icon" type="Texture2D">
The arrow icon used when a foldable item is not collapsed.
</theme_item>
- <theme_item name="arrow_collapsed" type="Texture2D">
+ <theme_item name="arrow_collapsed" data_type="icon" type="Texture2D">
The arrow icon used when a foldable item is collapsed (for left-to-right layouts).
</theme_item>
- <theme_item name="arrow_collapsed_mirrored" type="Texture2D">
+ <theme_item name="arrow_collapsed_mirrored" data_type="icon" type="Texture2D">
The arrow icon used when a foldable item is collapsed (for right-to-left layouts).
</theme_item>
- <theme_item name="bg" type="StyleBox">
+ <theme_item name="bg" data_type="style" type="StyleBox">
Default [StyleBox] for the [Tree], i.e. used when the control is not being focused.
</theme_item>
- <theme_item name="bg_focus" type="StyleBox">
+ <theme_item name="bg_focus" data_type="style" type="StyleBox">
[StyleBox] used when the [Tree] is being focused.
</theme_item>
- <theme_item name="button_margin" type="int" default="4">
+ <theme_item name="button_margin" data_type="constant" type="int" default="4">
The horizontal space between each button in a cell.
</theme_item>
- <theme_item name="button_pressed" type="StyleBox">
+ <theme_item name="button_pressed" data_type="style" type="StyleBox">
[StyleBox] used when a button in the tree is pressed.
</theme_item>
- <theme_item name="checked" type="Texture2D">
+ <theme_item name="checked" data_type="icon" type="Texture2D">
The check icon to display when the [constant TreeItem.CELL_MODE_CHECK] mode cell is checked.
</theme_item>
- <theme_item name="children_hl_line_color" type="Color" default="Color(0.27, 0.27, 0.27, 1)">
+ <theme_item name="children_hl_line_color" data_type="color" type="Color" default="Color(0.27, 0.27, 0.27, 1)">
The [Color] of the relationship lines between the selected [TreeItem] and its children.
</theme_item>
- <theme_item name="children_hl_line_width" type="int" default="1">
+ <theme_item name="children_hl_line_width" data_type="constant" type="int" default="1">
The width of the relationship lines between the selected [TreeItem] and its children.
</theme_item>
- <theme_item name="cursor" type="StyleBox">
+ <theme_item name="cursor" data_type="style" type="StyleBox">
[StyleBox] used for the cursor, when the [Tree] is being focused.
</theme_item>
- <theme_item name="cursor_unfocused" type="StyleBox">
+ <theme_item name="cursor_unfocused" data_type="style" type="StyleBox">
[StyleBox] used for the cursor, when the [Tree] is not being focused.
</theme_item>
- <theme_item name="custom_button" type="StyleBox">
+ <theme_item name="custom_button" data_type="style" type="StyleBox">
Default [StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell.
</theme_item>
- <theme_item name="custom_button_font_highlight" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
+ <theme_item name="custom_button_font_highlight" data_type="color" type="Color" default="Color(0.94, 0.94, 0.94, 1)">
Text [Color] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's hovered.
</theme_item>
- <theme_item name="custom_button_hover" type="StyleBox">
+ <theme_item name="custom_button_hover" data_type="style" type="StyleBox">
[StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's hovered.
</theme_item>
- <theme_item name="custom_button_pressed" type="StyleBox">
+ <theme_item name="custom_button_pressed" data_type="style" type="StyleBox">
[StyleBox] for a [constant TreeItem.CELL_MODE_CUSTOM] mode cell when it's pressed.
</theme_item>
- <theme_item name="draw_guides" type="int" default="1">
+ <theme_item name="draw_guides" data_type="constant" type="int" default="1">
Draws the guidelines if not zero, this acts as a boolean. The guideline is a horizontal line drawn at the bottom of each item.
</theme_item>
- <theme_item name="draw_relationship_lines" type="int" default="0">
+ <theme_item name="draw_relationship_lines" data_type="constant" type="int" default="0">
Draws the relationship lines if not zero, this acts as a boolean. Relationship lines are drawn at the start of child items to show hierarchy.
</theme_item>
- <theme_item name="drop_position_color" type="Color" default="Color(1, 0.3, 0.2, 1)">
+ <theme_item name="drop_position_color" data_type="color" type="Color" default="Color(1, 0.3, 0.2, 1)">
[Color] used to draw possible drop locations. See [enum DropModeFlags] constants for further description of drop locations.
</theme_item>
- <theme_item name="font" type="Font">
+ <theme_item name="font" data_type="font" type="Font">
[Font] of the item's text.
</theme_item>
- <theme_item name="font_color" type="Color" default="Color(0.69, 0.69, 0.69, 1)">
+ <theme_item name="font_color" data_type="color" type="Color" default="Color(0.69, 0.69, 0.69, 1)">
Default text [Color] of the item.
</theme_item>
- <theme_item name="font_outline_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_outline_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The tint of text outline of the item.
</theme_item>
- <theme_item name="font_selected_color" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="font_selected_color" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
Text [Color] used when the item is selected.
</theme_item>
- <theme_item name="font_size" type="int">
+ <theme_item name="font_size" data_type="font_size" type="int">
Font size of the item's text.
</theme_item>
- <theme_item name="guide_color" type="Color" default="Color(0, 0, 0, 0.1)">
+ <theme_item name="guide_color" data_type="color" type="Color" default="Color(0, 0, 0, 0.1)">
[Color] of the guideline.
</theme_item>
- <theme_item name="hseparation" type="int" default="4">
+ <theme_item name="hseparation" data_type="constant" type="int" default="4">
The horizontal space between item cells. This is also used as the margin at the start of an item when folding is disabled.
</theme_item>
- <theme_item name="item_margin" type="int" default="12">
+ <theme_item name="item_margin" data_type="constant" type="int" default="12">
The horizontal margin at the start of an item. This is used when folding is enabled for the item.
</theme_item>
- <theme_item name="outline_size" type="int" default="0">
+ <theme_item name="outline_size" data_type="constant" type="int" default="0">
The size of the text outline.
</theme_item>
- <theme_item name="parent_hl_line_color" type="Color" default="Color(0.27, 0.27, 0.27, 1)">
+ <theme_item name="parent_hl_line_color" data_type="color" type="Color" default="Color(0.27, 0.27, 0.27, 1)">
The [Color] of the relationship lines between the selected [TreeItem] and its parents.
</theme_item>
- <theme_item name="parent_hl_line_margin" type="int" default="0">
+ <theme_item name="parent_hl_line_margin" data_type="constant" type="int" default="0">
The space between the parent relationship lines for the selected [TreeItem] and the relationship lines to its siblings that are not selected.
</theme_item>
- <theme_item name="parent_hl_line_width" type="int" default="1">
+ <theme_item name="parent_hl_line_width" data_type="constant" type="int" default="1">
The width of the relationship lines between the selected [TreeItem] and its parents.
</theme_item>
- <theme_item name="relationship_line_color" type="Color" default="Color(0.27, 0.27, 0.27, 1)">
+ <theme_item name="relationship_line_color" data_type="color" type="Color" default="Color(0.27, 0.27, 0.27, 1)">
The default [Color] of the relationship lines.
</theme_item>
- <theme_item name="relationship_line_width" type="int" default="1">
+ <theme_item name="relationship_line_width" data_type="constant" type="int" default="1">
The default width of the relationship lines.
</theme_item>
- <theme_item name="scroll_border" type="int" default="4">
+ <theme_item name="scroll_border" data_type="constant" type="int" default="4">
The maximum distance between the mouse cursor and the control's border to trigger border scrolling when dragging.
</theme_item>
- <theme_item name="scroll_speed" type="int" default="12">
+ <theme_item name="scroll_speed" data_type="constant" type="int" default="12">
The speed of border scrolling.
</theme_item>
- <theme_item name="select_arrow" type="Texture2D">
+ <theme_item name="select_arrow" data_type="icon" type="Texture2D">
The arrow icon to display for the [constant TreeItem.CELL_MODE_RANGE] mode cell.
</theme_item>
- <theme_item name="selected" type="StyleBox">
+ <theme_item name="selected" data_type="style" type="StyleBox">
[StyleBox] for the selected items, used when the [Tree] is not being focused.
</theme_item>
- <theme_item name="selected_focus" type="StyleBox">
+ <theme_item name="selected_focus" data_type="style" type="StyleBox">
[StyleBox] for the selected items, used when the [Tree] is being focused.
</theme_item>
- <theme_item name="title_button_color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
+ <theme_item name="title_button_color" data_type="color" type="Color" default="Color(0.88, 0.88, 0.88, 1)">
Default text [Color] of the title button.
</theme_item>
- <theme_item name="title_button_font" type="Font">
+ <theme_item name="title_button_font" data_type="font" type="Font">
[Font] of the title button's text.
</theme_item>
- <theme_item name="title_button_hover" type="StyleBox">
+ <theme_item name="title_button_hover" data_type="style" type="StyleBox">
[StyleBox] used when the title button is being hovered.
</theme_item>
- <theme_item name="title_button_normal" type="StyleBox">
+ <theme_item name="title_button_normal" data_type="style" type="StyleBox">
Default [StyleBox] for the title button.
</theme_item>
- <theme_item name="title_button_pressed" type="StyleBox">
+ <theme_item name="title_button_pressed" data_type="style" type="StyleBox">
[StyleBox] used when the title button is being pressed.
</theme_item>
- <theme_item name="unchecked" type="Texture2D">
+ <theme_item name="unchecked" data_type="icon" type="Texture2D">
The check icon to display when the [constant TreeItem.CELL_MODE_CHECK] mode cell is unchecked.
</theme_item>
- <theme_item name="updown" type="Texture2D">
+ <theme_item name="updown" data_type="icon" type="Texture2D">
The updown arrow icon to display for the [constant TreeItem.CELL_MODE_RANGE] mode cell.
</theme_item>
- <theme_item name="vseparation" type="int" default="4">
+ <theme_item name="vseparation" data_type="constant" type="int" default="4">
The vertical padding inside each item, i.e. the distance between the item's content and top/bottom border.
</theme_item>
</theme_items>
diff --git a/doc/classes/TreeItem.xml b/doc/classes/TreeItem.xml
index 85c9caa101..944b9fdc06 100644
--- a/doc/classes/TreeItem.xml
+++ b/doc/classes/TreeItem.xml
@@ -11,811 +11,611 @@
</tutorials>
<methods>
<method name="add_button">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="button" type="Texture2D">
- </argument>
- <argument index="2" name="button_idx" type="int" default="-1">
- </argument>
- <argument index="3" name="disabled" type="bool" default="false">
- </argument>
- <argument index="4" name="tooltip" type="String" default="&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="button" type="Texture2D" />
+ <argument index="2" name="button_idx" type="int" default="-1" />
+ <argument index="3" name="disabled" type="bool" default="false" />
+ <argument index="4" name="tooltip" type="String" default="&quot;&quot;" />
<description>
Adds a button with [Texture2D] [code]button[/code] at column [code]column[/code]. The [code]button_idx[/code] index is used to identify the button when calling other methods. If not specified, the next available index is used, which may be retrieved by calling [method get_button_count] immediately after this method. Optionally, the button can be [code]disabled[/code] and have a [code]tooltip[/code].
</description>
</method>
<method name="call_recursive" qualifiers="vararg">
- <return type="Variant">
- </return>
- <argument index="0" name="method" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="method" type="StringName" />
<description>
Calls the [code]method[/code] on the actual TreeItem and its children recursively. Pass parameters as a comma separated list.
</description>
</method>
<method name="clear_custom_bg_color">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
<description>
Resets the background color for the given column to default.
</description>
</method>
<method name="clear_custom_color">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
<description>
Resets the color for the given column to default.
</description>
</method>
<method name="clear_opentype_features">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
<description>
Removes all OpenType features.
</description>
</method>
<method name="create_child">
- <return type="TreeItem">
- </return>
- <argument index="0" name="idx" type="int" default="-1">
- </argument>
+ <return type="TreeItem" />
+ <argument index="0" name="idx" type="int" default="-1" />
<description>
Creates an item and adds it as a child.
The new item will be inserted as position [code]idx[/code] (the default value [code]-1[/code] means the last position), or it will be the last child if [code]idx[/code] is higher than the child count.
</description>
</method>
<method name="deselect">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
<description>
Deselects the given column.
</description>
</method>
<method name="erase_button">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="button_idx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="button_idx" type="int" />
<description>
Removes the button at index [code]button_idx[/code] in column [code]column[/code].
</description>
</method>
<method name="get_button" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="button_idx" type="int">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="button_idx" type="int" />
<description>
Returns the [Texture2D] of the button at index [code]button_idx[/code] in column [code]column[/code].
</description>
</method>
<method name="get_button_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the number of buttons in column [code]column[/code]. May be used to get the most recently added button's index, if no index was specified.
</description>
</method>
<method name="get_button_tooltip" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="button_idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="button_idx" type="int" />
<description>
Returns the tooltip string for the button at index [code]button_idx[/code] in column [code]column[/code].
</description>
</method>
<method name="get_cell_mode" qualifiers="const">
- <return type="int" enum="TreeItem.TreeCellMode">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="int" enum="TreeItem.TreeCellMode" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the column's cell mode.
</description>
</method>
<method name="get_child">
- <return type="TreeItem">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="TreeItem" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns a child item by its index (see [method get_child_count]). This method is often used for iterating all children of an item.
Negative indices access the children from the last one.
</description>
</method>
<method name="get_child_count">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of child items.
</description>
</method>
<method name="get_children">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array of references to the item's children.
</description>
</method>
<method name="get_custom_bg_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the custom background color of column [code]column[/code].
</description>
</method>
<method name="get_custom_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the custom color of column [code]column[/code].
</description>
</method>
<method name="get_custom_font" qualifiers="const">
- <return type="Font">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="Font" />
+ <argument index="0" name="column" type="int" />
<description>
</description>
</method>
<method name="get_expand_right" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="column" type="int" />
<description>
Returns [code]true[/code] if [code]expand_right[/code] is set.
</description>
</method>
<method name="get_first_child" qualifiers="const">
- <return type="TreeItem">
- </return>
+ <return type="TreeItem" />
<description>
Returns the TreeItem's first child.
</description>
</method>
<method name="get_icon" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the given column's icon [Texture2D]. Error if no icon is set.
</description>
</method>
<method name="get_icon_max_width" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the column's icon's maximum width.
</description>
</method>
<method name="get_icon_modulate" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the [Color] modulating the column's icon.
</description>
</method>
<method name="get_icon_region" qualifiers="const">
- <return type="Rect2">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="Rect2" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the icon [Texture2D] region as [Rect2].
</description>
</method>
<method name="get_index">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the node's order in the tree. For example, if called on the first child item the position is [code]0[/code].
</description>
</method>
<method name="get_language" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="column" type="int" />
<description>
Returns item's text language code.
</description>
</method>
<method name="get_metadata" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the metadata value that was set for the given column using [method set_metadata].
</description>
</method>
<method name="get_next" qualifiers="const">
- <return type="TreeItem">
- </return>
+ <return type="TreeItem" />
<description>
Returns the next TreeItem in the tree or a null object if there is none.
</description>
</method>
<method name="get_next_visible">
- <return type="TreeItem">
- </return>
- <argument index="0" name="wrap" type="bool" default="false">
- </argument>
+ <return type="TreeItem" />
+ <argument index="0" name="wrap" type="bool" default="false" />
<description>
Returns the next visible TreeItem in the tree or a null object if there is none.
If [code]wrap[/code] is enabled, the method will wrap around to the first visible element in the tree when called on the last visible element, otherwise it returns [code]null[/code].
</description>
</method>
<method name="get_opentype_feature" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
+ <return type="int" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="tag" type="String" />
<description>
Returns OpenType feature [code]tag[/code] of the item's text.
</description>
</method>
<method name="get_parent" qualifiers="const">
- <return type="TreeItem">
- </return>
+ <return type="TreeItem" />
<description>
Returns the parent TreeItem or a null object if there is none.
</description>
</method>
<method name="get_prev">
- <return type="TreeItem">
- </return>
+ <return type="TreeItem" />
<description>
Returns the previous TreeItem in the tree or a null object if there is none.
</description>
</method>
<method name="get_prev_visible">
- <return type="TreeItem">
- </return>
- <argument index="0" name="wrap" type="bool" default="false">
- </argument>
+ <return type="TreeItem" />
+ <argument index="0" name="wrap" type="bool" default="false" />
<description>
Returns the previous visible TreeItem in the tree or a null object if there is none.
If [code]wrap[/code] is enabled, the method will wrap around to the last visible element in the tree when called on the first visible element, otherwise it returns [code]null[/code].
</description>
</method>
<method name="get_range" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the value of a [constant CELL_MODE_RANGE] column.
</description>
</method>
<method name="get_range_config">
- <return type="Dictionary">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="column" type="int" />
<description>
Returns a dictionary containing the range parameters for a given column. The keys are "min", "max", "step", and "expr".
</description>
</method>
<method name="get_structured_text_bidi_override" qualifiers="const">
- <return type="int" enum="Control.StructuredTextParser">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="int" enum="Control.StructuredTextParser" />
+ <argument index="0" name="column" type="int" />
<description>
</description>
</method>
<method name="get_structured_text_bidi_override_options" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="column" type="int" />
<description>
</description>
</method>
<method name="get_suffix" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="column" type="int" />
<description>
Gets the suffix string shown after the column value.
</description>
</method>
<method name="get_text" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the given column's text.
</description>
</method>
<method name="get_text_align" qualifiers="const">
- <return type="int" enum="TreeItem.TextAlign">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="int" enum="TreeItem.TextAlign" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the given column's text alignment.
</description>
</method>
<method name="get_text_direction" qualifiers="const">
- <return type="int" enum="Control.TextDirection">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="int" enum="Control.TextDirection" />
+ <argument index="0" name="column" type="int" />
<description>
Returns item's text base writing direction.
</description>
</method>
<method name="get_tooltip" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="column" type="int" />
<description>
Returns the given column's tooltip.
</description>
</method>
<method name="get_tree" qualifiers="const">
- <return type="Tree">
- </return>
+ <return type="Tree" />
<description>
Returns the [Tree] that owns this TreeItem.
</description>
</method>
<method name="is_button_disabled" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="button_idx" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="button_idx" type="int" />
<description>
Returns [code]true[/code] if the button at index [code]button_idx[/code] for the given column is disabled.
</description>
</method>
<method name="is_checked" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="column" type="int" />
<description>
Returns [code]true[/code] if the given column is checked.
</description>
</method>
<method name="is_custom_set_as_button" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="column" type="int" />
<description>
</description>
</method>
<method name="is_editable">
- <return type="bool">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="column" type="int" />
<description>
Returns [code]true[/code] if column [code]column[/code] is editable.
</description>
</method>
<method name="is_selectable" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="column" type="int" />
<description>
Returns [code]true[/code] if column [code]column[/code] is selectable.
</description>
</method>
<method name="is_selected">
- <return type="bool">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="column" type="int" />
<description>
Returns [code]true[/code] if column [code]column[/code] is selected.
</description>
</method>
<method name="move_after">
- <return type="void">
- </return>
- <argument index="0" name="item" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="Object" />
<description>
Moves this TreeItem right after the given [code]item[/code].
[b]Note:[/b] You can't move to the root or move the root.
</description>
</method>
<method name="move_before">
- <return type="void">
- </return>
- <argument index="0" name="item" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="item" type="Object" />
<description>
Moves this TreeItem right before the given [code]item[/code].
[b]Note:[/b] You can't move to the root or move the root.
</description>
</method>
<method name="remove_child">
- <return type="void">
- </return>
- <argument index="0" name="child" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="child" type="Object" />
<description>
Removes the given child [TreeItem] and all its children from the [Tree]. Note that it doesn't free the item from memory, so it can be reused later. To completely remove a [TreeItem] use [method Object.free].
</description>
</method>
<method name="select">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
<description>
Selects the column [code]column[/code].
</description>
</method>
<method name="set_button">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="button_idx" type="int">
- </argument>
- <argument index="2" name="button" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="button_idx" type="int" />
+ <argument index="2" name="button" type="Texture2D" />
<description>
Sets the given column's button [Texture2D] at index [code]button_idx[/code] to [code]button[/code].
</description>
</method>
<method name="set_button_disabled">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="button_idx" type="int">
- </argument>
- <argument index="2" name="disabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="button_idx" type="int" />
+ <argument index="2" name="disabled" type="bool" />
<description>
If [code]true[/code], disables the button at index [code]button_idx[/code] in column [code]column[/code].
</description>
</method>
<method name="set_cell_mode">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="mode" type="int" enum="TreeItem.TreeCellMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="mode" type="int" enum="TreeItem.TreeCellMode" />
<description>
Sets the given column's cell mode to [code]mode[/code]. See [enum TreeCellMode] constants.
</description>
</method>
<method name="set_checked">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="checked" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="checked" type="bool" />
<description>
If [code]true[/code], the column [code]column[/code] is checked.
</description>
</method>
<method name="set_custom_as_button">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
</description>
</method>
<method name="set_custom_bg_color">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
- <argument index="2" name="just_outline" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="color" type="Color" />
+ <argument index="2" name="just_outline" type="bool" default="false" />
<description>
Sets the given column's custom background color and whether to just use it as an outline.
</description>
</method>
<method name="set_custom_color">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="color" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="color" type="Color" />
<description>
Sets the given column's custom color.
</description>
</method>
<method name="set_custom_draw">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="object" type="Object">
- </argument>
- <argument index="2" name="callback" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="object" type="Object" />
+ <argument index="2" name="callback" type="StringName" />
<description>
Sets the given column's custom draw callback to [code]callback[/code] method on [code]object[/code].
The [code]callback[/code] should accept two arguments: the [TreeItem] that is drawn and its position and size as a [Rect2].
</description>
</method>
<method name="set_custom_font">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="font" type="Font">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="font" type="Font" />
<description>
</description>
</method>
<method name="set_editable">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="enabled" type="bool" />
<description>
If [code]true[/code], column [code]column[/code] is editable.
</description>
</method>
<method name="set_expand_right">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="enable" type="bool" />
<description>
If [code]true[/code], column [code]column[/code] is expanded to the right.
</description>
</method>
<method name="set_icon">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="texture" type="Texture2D">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="texture" type="Texture2D" />
<description>
Sets the given column's icon [Texture2D].
</description>
</method>
<method name="set_icon_max_width">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="width" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="width" type="int" />
<description>
Sets the given column's icon's maximum width.
</description>
</method>
<method name="set_icon_modulate">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="modulate" type="Color">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="modulate" type="Color" />
<description>
Modulates the given column's icon with [code]modulate[/code].
</description>
</method>
<method name="set_icon_region">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="region" type="Rect2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="region" type="Rect2" />
<description>
Sets the given column's icon's texture region.
</description>
</method>
<method name="set_language">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="language" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="language" type="String" />
<description>
Sets language code of item's text used for line-breaking and text shaping algorithms, if left empty current locale is used instead.
</description>
</method>
<method name="set_metadata">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="meta" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="meta" type="Variant" />
<description>
Sets the metadata value for the given column, which can be retrieved later using [method get_metadata]. This can be used, for example, to store a reference to the original data.
</description>
</method>
<method name="set_opentype_feature">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="tag" type="String">
- </argument>
- <argument index="2" name="value" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="tag" type="String" />
+ <argument index="2" name="value" type="int" />
<description>
Sets OpenType feature [code]tag[/code] for the item's text.
</description>
</method>
<method name="set_range">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="value" type="float">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="value" type="float" />
<description>
Sets the value of a [constant CELL_MODE_RANGE] column.
</description>
</method>
<method name="set_range_config">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="min" type="float">
- </argument>
- <argument index="2" name="max" type="float">
- </argument>
- <argument index="3" name="step" type="float">
- </argument>
- <argument index="4" name="expr" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="min" type="float" />
+ <argument index="2" name="max" type="float" />
+ <argument index="3" name="step" type="float" />
+ <argument index="4" name="expr" type="bool" default="false" />
<description>
Sets the range of accepted values for a column. The column must be in the [constant CELL_MODE_RANGE] mode.
If [code]expr[/code] is [code]true[/code], the edit mode slider will use an exponential scale as with [member Range.exp_edit].
</description>
</method>
<method name="set_selectable">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="selectable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="selectable" type="bool" />
<description>
If [code]true[/code], the given column is selectable.
</description>
</method>
<method name="set_structured_text_bidi_override">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="parser" type="int" enum="Control.StructuredTextParser">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="parser" type="int" enum="Control.StructuredTextParser" />
<description>
</description>
</method>
<method name="set_structured_text_bidi_override_options">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="args" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="args" type="Array" />
<description>
</description>
</method>
<method name="set_suffix">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="text" type="String" />
<description>
Sets a string to be shown after a column's value (for example, a unit abbreviation).
</description>
</method>
<method name="set_text">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="text" type="String" />
<description>
Sets the given column's text value.
</description>
</method>
<method name="set_text_align">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="text_align" type="int" enum="TreeItem.TextAlign">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="text_align" type="int" enum="TreeItem.TextAlign" />
<description>
Sets the given column's text alignment. See [enum TextAlign] for possible values.
</description>
</method>
<method name="set_text_direction">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="direction" type="int" enum="Control.TextDirection">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="direction" type="int" enum="Control.TextDirection" />
<description>
Sets item's text base writing direction.
</description>
</method>
<method name="set_tooltip">
- <return type="void">
- </return>
- <argument index="0" name="column" type="int">
- </argument>
- <argument index="1" name="tooltip" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="column" type="int" />
+ <argument index="1" name="tooltip" type="String" />
<description>
Sets the given column's tooltip text.
</description>
</method>
<method name="uncollapse_tree">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
diff --git a/doc/classes/Tween.xml b/doc/classes/Tween.xml
index 253822cf32..372a6e7ebf 100644
--- a/doc/classes/Tween.xml
+++ b/doc/classes/Tween.xml
@@ -44,18 +44,15 @@
</tutorials>
<methods>
<method name="bind_node">
- <return type="Tween">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
+ <return type="Tween" />
+ <argument index="0" name="node" type="Node" />
<description>
Binds this [Tween] with the given [code]node[/code]. [Tween]s are processed directly by the [SceneTree], so they run independently of the animated nodes. When you bind a [Node] with the [Tween], the [Tween] will halt the animation when the object is not inside tree and the [Tween] will be automatically killed when the bound object is freed. Also [constant TWEEN_PAUSE_BOUND] will make the pausing behavior dependent on the bound node.
For a shorter way to create and bind a [Tween], you can use [method Node.create_tween].
</description>
</method>
<method name="chain">
- <return type="Tween">
- </return>
+ <return type="Tween" />
<description>
Used to chain two [Tweener]s after [method set_parallel] is called with [code]true[/code].
[codeblock]
@@ -67,10 +64,8 @@
</description>
</method>
<method name="custom_step">
- <return type="bool">
- </return>
- <argument index="0" name="delta" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="delta" type="float" />
<description>
Processes the [Tween] by given [code]delta[/code] value, in seconds. Mostly useful when the [Tween] is paused, for controlling it manually. Can also be used to end the [Tween] animation immediately, by using [code]delta[/code] longer than the whole duration.
Returns [code]true[/code] if the [Tween] still has [Tweener]s that haven't finished.
@@ -78,20 +73,13 @@
</description>
</method>
<method name="interpolate_value">
- <return type="Variant">
- </return>
- <argument index="0" name="trans_type" type="Variant">
- </argument>
- <argument index="1" name="ease_type" type="Variant">
- </argument>
- <argument index="2" name="elapsed_time" type="float">
- </argument>
- <argument index="3" name="initial_value" type="float">
- </argument>
- <argument index="4" name="delta_value" type="int" enum="Tween.TransitionType">
- </argument>
- <argument index="5" name="duration" type="int" enum="Tween.EaseType">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="trans_type" type="Variant" />
+ <argument index="1" name="ease_type" type="Variant" />
+ <argument index="2" name="elapsed_time" type="float" />
+ <argument index="3" name="initial_value" type="float" />
+ <argument index="4" name="delta_value" type="int" enum="Tween.TransitionType" />
+ <argument index="5" name="duration" type="int" enum="Tween.EaseType" />
<description>
This method can be used for manual interpolation of a value, when you don't want [Tween] to do animating for you. It's similar to [method @GlobalScope.lerp], but with support for custom transition and easing.
[code]elapsed_time[/code] is the time in seconds that passed after the interping started and it's used to control the position of the interpolation. E.g. when it's equal to half of the [code]duration[/code], the interpolated value will be halfway between initial and final values. This value can also be greater than [code]duration[/code] or lower than 0, which will extrapolate the value.
@@ -101,31 +89,27 @@
</description>
</method>
<method name="is_running">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether the [Tween] is currently running, i.e. it wasn't paused and it's not finished.
</description>
</method>
<method name="is_valid">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether the [Tween] is valid. A valid [Tween] is a [Tween] contained by the scene tree (i.e. the array from [method SceneTree.get_processed_tweens] will contain this [Tween]). [Tween] might become invalid when it has finished tweening or was killed, also when created with [code]Tween.new()[/code]. Invalid [Tween] can't have [Tweener]s appended, because it can't animate them. You can however still use [method interpolate_value].
</description>
</method>
<method name="kill">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Aborts all tweening operations and invalidates the [Tween].
</description>
</method>
<method name="parallel">
- <return type="Tween">
- </return>
+ <return type="Tween" />
<description>
- Makes the next [Tweener] run parallely to the previous one. Example:
+ Makes the next [Tweener] run parallelly to the previous one. Example:
[codeblock]
var tween = create_tween()
tween.tween_property(...)
@@ -137,97 +121,78 @@
</description>
</method>
<method name="pause">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Pauses the tweening. The animation can be resumed by using [method play].
</description>
</method>
<method name="play">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Resumes a paused or stopped [Tween].
</description>
</method>
<method name="set_ease">
- <return type="Tween">
- </return>
- <argument index="0" name="ease" type="int" enum="Tween.EaseType">
- </argument>
+ <return type="Tween" />
+ <argument index="0" name="ease" type="int" enum="Tween.EaseType" />
<description>
Sets the default ease type for [PropertyTweener]s and [MethodTweener]s animated by this [Tween].
</description>
</method>
<method name="set_loops">
- <return type="Tween">
- </return>
- <argument index="0" name="loops" type="int" default="0">
- </argument>
+ <return type="Tween" />
+ <argument index="0" name="loops" type="int" default="0" />
<description>
Sets the number of times the tweening sequence will be repeated, i.e. [code]set_loops(2)[/code] will run the animation twice.
Calling this method without arguments will make the [Tween] run infinitely, until it is either killed by [method kill] or by freeing bound node, or all the animated objects have been freed (which makes further animation impossible).
</description>
</method>
<method name="set_parallel">
- <return type="Tween">
- </return>
- <argument index="0" name="parallel" type="bool" default="true">
- </argument>
+ <return type="Tween" />
+ <argument index="0" name="parallel" type="bool" default="true" />
<description>
- If [code]parallel[/code] is [code]true[/code], the [Tweener]s appended after this method will by default run simultanously, as opposed to sequentially.
+ If [code]parallel[/code] is [code]true[/code], the [Tweener]s appended after this method will by default run simultaneously, as opposed to sequentially.
</description>
</method>
<method name="set_pause_mode">
- <return type="Tween">
- </return>
- <argument index="0" name="mode" type="int" enum="Tween.TweenPauseMode">
- </argument>
+ <return type="Tween" />
+ <argument index="0" name="mode" type="int" enum="Tween.TweenPauseMode" />
<description>
Determines the behavior of the [Tween] when the [SceneTree] is paused. Check [enum TweenPauseMode] for options.
Default value is [constant TWEEN_PAUSE_BOUND].
</description>
</method>
<method name="set_process_mode">
- <return type="Tween">
- </return>
- <argument index="0" name="mode" type="int" enum="Tween.TweenProcessMode">
- </argument>
+ <return type="Tween" />
+ <argument index="0" name="mode" type="int" enum="Tween.TweenProcessMode" />
<description>
Determines whether the [Tween] should run during idle frame (see [method Node._process]) or physics frame (see [method Node._physics_process].
Default value is [constant TWEEN_PROCESS_IDLE].
</description>
</method>
<method name="set_speed_scale">
- <return type="Tween">
- </return>
- <argument index="0" name="speed" type="float">
- </argument>
+ <return type="Tween" />
+ <argument index="0" name="speed" type="float" />
<description>
Scales the speed of tweening. This affects all [Tweener]s and their delays.
</description>
</method>
<method name="set_trans">
- <return type="Tween">
- </return>
- <argument index="0" name="trans" type="int" enum="Tween.TransitionType">
- </argument>
+ <return type="Tween" />
+ <argument index="0" name="trans" type="int" enum="Tween.TransitionType" />
<description>
Sets the default transition type for [PropertyTweener]s and [MethodTweener]s animated by this [Tween].
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the tweening and resets the [Tween] to its initial state. This will not remove any appended [Tweener]s.
</description>
</method>
<method name="tween_callback">
- <return type="CallbackTweener">
- </return>
- <argument index="0" name="callback" type="Callable">
- </argument>
+ <return type="CallbackTweener" />
+ <argument index="0" name="callback" type="Callable" />
<description>
Creates and appends a [CallbackTweener]. This method can be used to call an arbitrary method in any object. Use [method Callable.bind] to bind additional arguments for the call.
Example: object that keeps shooting every 1 second.
@@ -244,10 +209,8 @@
</description>
</method>
<method name="tween_interval">
- <return type="IntervalTweener">
- </return>
- <argument index="0" name="time" type="float">
- </argument>
+ <return type="IntervalTweener" />
+ <argument index="0" name="time" type="float" />
<description>
Creates and appends an [IntervalTweener]. This method can be used to create delays in the tween animation, as an alternative for using the delay in other [Tweener]s or when there's no animation (in which case the [Tween] acts as a timer). [code]time[/code] is the length of the interval, in seconds.
Example: creating an interval in code execution.
@@ -271,16 +234,11 @@
</description>
</method>
<method name="tween_method">
- <return type="MethodTweener">
- </return>
- <argument index="0" name="method" type="Callable">
- </argument>
- <argument index="1" name="from" type="float">
- </argument>
- <argument index="2" name="to" type="float">
- </argument>
- <argument index="3" name="duration" type="float">
- </argument>
+ <return type="MethodTweener" />
+ <argument index="0" name="method" type="Callable" />
+ <argument index="1" name="from" type="float" />
+ <argument index="2" name="to" type="float" />
+ <argument index="3" name="duration" type="float" />
<description>
Creates and appends a [MethodTweener]. This method is similar to a combination of [method tween_callback] and [method tween_property]. It calls a method over time with a tweened value provided as an argument. The value is tweened between [code]from[/code] and [code]to[/code] over the time specified by [code]duration[/code], in seconds. Use [method Callable.bind] to bind additional arguments for the call. You can use [method MethodTweener.set_ease] and [method MethodTweener.set_trans] to tweak the easing and transition of the value or [method MethodTweener.set_delay] to delay the tweening.
Example: making a 3D object look from one point to another point.
@@ -300,16 +258,11 @@
</description>
</method>
<method name="tween_property">
- <return type="PropertyTweener">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
- <argument index="1" name="property" type="NodePath">
- </argument>
- <argument index="2" name="final_val" type="Variant">
- </argument>
- <argument index="3" name="duration" type="float">
- </argument>
+ <return type="PropertyTweener" />
+ <argument index="0" name="object" type="Object" />
+ <argument index="1" name="property" type="NodePath" />
+ <argument index="2" name="final_val" type="Variant" />
+ <argument index="3" name="duration" type="float" />
<description>
Creates and appends a [PropertyTweener]. This method tweens a [code]property[/code] of an [code]object[/code] between an initial value and [code]final_val[/code] in a span of time equal to [code]duration[/code], in seconds. The initial value by default is a value at the time the tweening of the [PropertyTweener] start. For example:
[codeblock]
@@ -336,15 +289,13 @@
</description>
</signal>
<signal name="loop_finished">
- <argument index="0" name="loop_count" type="int">
- </argument>
+ <argument index="0" name="loop_count" type="int" />
<description>
Emitted when a full loop is complete (see [method set_loops]), providing the loop index. This signal is not emitted after final loop, use [signal finished] instead for this case.
</description>
</signal>
<signal name="step_finished">
- <argument index="0" name="idx" type="int">
- </argument>
+ <argument index="0" name="idx" type="int" />
<description>
Emitted when one step of the [Tween] is complete, providing the step index. One step is either a single [Tweener] or a group of [Tweener]s running parallelly.
</description>
diff --git a/doc/classes/Tweener.xml b/doc/classes/Tweener.xml
index 5cd502ced9..a3279502e0 100644
--- a/doc/classes/Tweener.xml
+++ b/doc/classes/Tweener.xml
@@ -13,7 +13,7 @@
<signals>
<signal name="finished">
<description>
- Emited when the [Tweener] has just finished its job.
+ Emitted when the [Tweener] has just finished its job.
</description>
</signal>
</signals>
diff --git a/doc/classes/UDPServer.xml b/doc/classes/UDPServer.xml
index 5e2906450c..eb6d42fb0f 100644
--- a/doc/classes/UDPServer.xml
+++ b/doc/classes/UDPServer.xml
@@ -124,54 +124,45 @@
</tutorials>
<methods>
<method name="get_local_port" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the local port this server is listening to.
</description>
</method>
<method name="is_connection_available" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if a packet with a new address/port combination was received on the socket.
</description>
</method>
<method name="is_listening" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the socket is open and listening on a port.
</description>
</method>
<method name="listen">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
- <argument index="1" name="bind_address" type="String" default="&quot;*&quot;">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="port" type="int" />
+ <argument index="1" name="bind_address" type="String" default="&quot;*&quot;" />
<description>
Starts the server by opening a UDP socket listening on the given port. You can optionally specify a [code]bind_address[/code] to only listen for packets sent to that address. See also [method PacketPeerUDP.bind].
</description>
</method>
<method name="poll">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Call this method at regular intervals (e.g. inside [method Node._process]) to process new packets. And packet from known address/port pair will be delivered to the appropriate [PacketPeerUDP], any packet received from an unknown address/port pair will be added as a pending connection (see [method is_connection_available], [method take_connection]). The maximum number of pending connection is defined via [member max_pending_connections].
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the server, closing the UDP socket if open. Will close all connected [PacketPeerUDP] accepted via [method take_connection] (remote peers will not be notified).
</description>
</method>
<method name="take_connection">
- <return type="PacketPeerUDP">
- </return>
+ <return type="PacketPeerUDP" />
<description>
Returns the first pending connection (connected to the appropriate address/port). Will return [code]null[/code] if no new connection is available. See also [method is_connection_available], [method PacketPeerUDP.connect_to_host].
</description>
diff --git a/doc/classes/UndoRedo.xml b/doc/classes/UndoRedo.xml
index aba6183124..4417447891 100644
--- a/doc/classes/UndoRedo.xml
+++ b/doc/classes/UndoRedo.xml
@@ -63,171 +63,135 @@
</tutorials>
<methods>
<method name="add_do_method" qualifiers="vararg">
- <return type="void">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
- <argument index="1" name="method" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="object" type="Object" />
+ <argument index="1" name="method" type="StringName" />
<description>
Register a method that will be called when the action is committed.
</description>
</method>
<method name="add_do_property">
- <return type="void">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
- <argument index="1" name="property" type="StringName">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="object" type="Object" />
+ <argument index="1" name="property" type="StringName" />
+ <argument index="2" name="value" type="Variant" />
<description>
Register a property value change for "do".
</description>
</method>
<method name="add_do_reference">
- <return type="void">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="object" type="Object" />
<description>
Register a reference for "do" that will be erased if the "do" history is lost. This is useful mostly for new nodes created for the "do" call. Do not use for resources.
</description>
</method>
<method name="add_undo_method" qualifiers="vararg">
- <return type="void">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
- <argument index="1" name="method" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="object" type="Object" />
+ <argument index="1" name="method" type="StringName" />
<description>
Register a method that will be called when the action is undone.
</description>
</method>
<method name="add_undo_property">
- <return type="void">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
- <argument index="1" name="property" type="StringName">
- </argument>
- <argument index="2" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="object" type="Object" />
+ <argument index="1" name="property" type="StringName" />
+ <argument index="2" name="value" type="Variant" />
<description>
Register a property value change for "undo".
</description>
</method>
<method name="add_undo_reference">
- <return type="void">
- </return>
- <argument index="0" name="object" type="Object">
- </argument>
+ <return type="void" />
+ <argument index="0" name="object" type="Object" />
<description>
Register a reference for "undo" that will be erased if the "undo" history is lost. This is useful mostly for nodes removed with the "do" call (not the "undo" call!).
</description>
</method>
<method name="clear_history">
- <return type="void">
- </return>
- <argument index="0" name="increase_version" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="increase_version" type="bool" default="true" />
<description>
Clear the undo/redo history and associated references.
Passing [code]false[/code] to [code]increase_version[/code] will prevent the version number to be increased from this.
</description>
</method>
<method name="commit_action">
- <return type="void">
- </return>
- <argument index="0" name="execute" type="bool" default="true">
- </argument>
+ <return type="void" />
+ <argument index="0" name="execute" type="bool" default="true" />
<description>
Commit the action. If [code]execute[/code] is true (default), all "do" methods/properties are called/set when this function is called.
</description>
</method>
<method name="create_action">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="merge_mode" type="int" enum="UndoRedo.MergeMode" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="merge_mode" type="int" enum="UndoRedo.MergeMode" default="0" />
<description>
Create a new action. After this is called, do all your calls to [method add_do_method], [method add_undo_method], [method add_do_property], and [method add_undo_property], then commit the action with [method commit_action].
The way actions are merged is dictated by the [code]merge_mode[/code] argument. See [enum MergeMode] for details.
</description>
</method>
<method name="get_action_name">
- <return type="String">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="id" type="int" />
<description>
Gets the action name from its index.
</description>
</method>
<method name="get_current_action">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets the index of the current action.
</description>
</method>
<method name="get_current_action_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Gets the name of the current action, equivalent to [code]get_action_name(get_current_action())[/code].
</description>
</method>
<method name="get_history_count">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Return how many elements are in the history.
</description>
</method>
<method name="get_version" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets the version. Every time a new action is committed, the [UndoRedo]'s version number is increased automatically.
This is useful mostly to check if something changed from a saved version.
</description>
</method>
<method name="has_redo">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if a "redo" action is available.
</description>
</method>
<method name="has_undo">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if an "undo" action is available.
</description>
</method>
<method name="is_committing_action" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the [UndoRedo] is currently committing the action, i.e. running its "do" method or property change (see [method commit_action]).
</description>
</method>
<method name="redo">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Redo the last action.
</description>
</method>
<method name="undo">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Undo the last action.
</description>
diff --git a/doc/classes/VBoxContainer.xml b/doc/classes/VBoxContainer.xml
index 213f8fd742..aa6c5fc8a4 100644
--- a/doc/classes/VBoxContainer.xml
+++ b/doc/classes/VBoxContainer.xml
@@ -14,7 +14,7 @@
<constants>
</constants>
<theme_items>
- <theme_item name="separation" type="int" default="4">
+ <theme_item name="separation" data_type="constant" type="int" default="4">
The vertical space between the [VBoxContainer]'s elements.
</theme_item>
</theme_items>
diff --git a/doc/classes/VScrollBar.xml b/doc/classes/VScrollBar.xml
index 727e32961c..98a0aea0c7 100644
--- a/doc/classes/VScrollBar.xml
+++ b/doc/classes/VScrollBar.xml
@@ -17,31 +17,31 @@
<constants>
</constants>
<theme_items>
- <theme_item name="decrement" type="Texture2D">
+ <theme_item name="decrement" data_type="icon" type="Texture2D">
Icon used as a button to scroll the [ScrollBar] up. Supports custom step using the [member ScrollBar.custom_step] property.
</theme_item>
- <theme_item name="decrement_highlight" type="Texture2D">
+ <theme_item name="decrement_highlight" data_type="icon" type="Texture2D">
Displayed when the mouse cursor hovers over the decrement button.
</theme_item>
- <theme_item name="grabber" type="StyleBox">
+ <theme_item name="grabber" data_type="style" type="StyleBox">
Used as texture for the grabber, the draggable element representing current scroll.
</theme_item>
- <theme_item name="grabber_highlight" type="StyleBox">
+ <theme_item name="grabber_highlight" data_type="style" type="StyleBox">
Used when the mouse hovers over the grabber.
</theme_item>
- <theme_item name="grabber_pressed" type="StyleBox">
+ <theme_item name="grabber_pressed" data_type="style" type="StyleBox">
Used when the grabber is being dragged.
</theme_item>
- <theme_item name="increment" type="Texture2D">
+ <theme_item name="increment" data_type="icon" type="Texture2D">
Icon used as a button to scroll the [ScrollBar] down. Supports custom step using the [member ScrollBar.custom_step] property.
</theme_item>
- <theme_item name="increment_highlight" type="Texture2D">
+ <theme_item name="increment_highlight" data_type="icon" type="Texture2D">
Displayed when the mouse cursor hovers over the increment button.
</theme_item>
- <theme_item name="scroll" type="StyleBox">
+ <theme_item name="scroll" data_type="style" type="StyleBox">
Used as background of this [ScrollBar].
</theme_item>
- <theme_item name="scroll_focus" type="StyleBox">
+ <theme_item name="scroll_focus" data_type="style" type="StyleBox">
Used as background when the [ScrollBar] has the GUI focus.
</theme_item>
</theme_items>
diff --git a/doc/classes/VSeparator.xml b/doc/classes/VSeparator.xml
index 52f31b1da7..d59c7229ac 100644
--- a/doc/classes/VSeparator.xml
+++ b/doc/classes/VSeparator.xml
@@ -13,10 +13,10 @@
<constants>
</constants>
<theme_items>
- <theme_item name="separation" type="int" default="4">
+ <theme_item name="separation" data_type="constant" type="int" default="4">
The width of the area covered by the separator. Effectively works like a minimum width.
</theme_item>
- <theme_item name="separator" type="StyleBox">
+ <theme_item name="separator" data_type="style" type="StyleBox">
The style for the separator line. Works best with [StyleBoxLine] (remember to enable [member StyleBoxLine.vertical]).
</theme_item>
</theme_items>
diff --git a/doc/classes/VSlider.xml b/doc/classes/VSlider.xml
index 5830c9eaf3..becf3d1052 100644
--- a/doc/classes/VSlider.xml
+++ b/doc/classes/VSlider.xml
@@ -18,24 +18,24 @@
<constants>
</constants>
<theme_items>
- <theme_item name="grabber" type="Texture2D">
+ <theme_item name="grabber" data_type="icon" type="Texture2D">
The texture for the grabber (the draggable element).
</theme_item>
- <theme_item name="grabber_area" type="StyleBox">
+ <theme_item name="grabber_area" data_type="style" type="StyleBox">
The background of the area below the grabber.
</theme_item>
- <theme_item name="grabber_area_highlight" type="StyleBox">
+ <theme_item name="grabber_area_highlight" data_type="style" type="StyleBox">
</theme_item>
- <theme_item name="grabber_disabled" type="Texture2D">
+ <theme_item name="grabber_disabled" data_type="icon" type="Texture2D">
The texture for the grabber when it's disabled.
</theme_item>
- <theme_item name="grabber_highlight" type="Texture2D">
+ <theme_item name="grabber_highlight" data_type="icon" type="Texture2D">
The texture for the grabber when it's focused.
</theme_item>
- <theme_item name="slider" type="StyleBox">
+ <theme_item name="slider" data_type="style" type="StyleBox">
The background for the whole slider. Determines the width of the [code]grabber_area[/code].
</theme_item>
- <theme_item name="tick" type="Texture2D">
+ <theme_item name="tick" data_type="icon" type="Texture2D">
The texture for the ticks, visible when [member Slider.tick_count] is greater than 0.
</theme_item>
</theme_items>
diff --git a/doc/classes/VSplitContainer.xml b/doc/classes/VSplitContainer.xml
index 18b515e7ce..143f5b6b0a 100644
--- a/doc/classes/VSplitContainer.xml
+++ b/doc/classes/VSplitContainer.xml
@@ -13,15 +13,15 @@
<constants>
</constants>
<theme_items>
- <theme_item name="autohide" type="int" default="1">
+ <theme_item name="autohide" data_type="constant" type="int" default="1">
Boolean value. If 1 ([code]true[/code]), the grabber will hide automatically when it isn't under the cursor. If 0 ([code]false[/code]), it's always visible.
</theme_item>
- <theme_item name="bg" type="StyleBox">
+ <theme_item name="bg" data_type="style" type="StyleBox">
</theme_item>
- <theme_item name="grabber" type="Texture2D">
+ <theme_item name="grabber" data_type="icon" type="Texture2D">
The icon used for the grabber drawn in the middle area.
</theme_item>
- <theme_item name="separation" type="int" default="12">
+ <theme_item name="separation" data_type="constant" type="int" default="12">
The space between sides of the container.
</theme_item>
</theme_items>
diff --git a/doc/classes/Vector2.xml b/doc/classes/Vector2.xml
index 498aefbef0..cb5662419e 100644
--- a/doc/classes/Vector2.xml
+++ b/doc/classes/Vector2.xml
@@ -18,51 +18,41 @@
</tutorials>
<methods>
<method name="Vector2" qualifiers="constructor">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Constructs a default-initialized [Vector2] with all components set to [code]0[/code].
</description>
</method>
<method name="Vector2" qualifiers="constructor">
- <return type="Vector2">
- </return>
- <argument index="0" name="from" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="from" type="Vector2" />
<description>
Constructs a [Vector2] as a copy of the given [Vector2].
</description>
</method>
<method name="Vector2" qualifiers="constructor">
- <return type="Vector2">
- </return>
- <argument index="0" name="from" type="Vector2i">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="from" type="Vector2i" />
<description>
Constructs a new [Vector2] from [Vector2i].
</description>
</method>
<method name="Vector2" qualifiers="constructor">
- <return type="Vector2">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="y" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
<description>
Constructs a new [Vector2] from the given [code]x[/code] and [code]y[/code].
</description>
</method>
<method name="abs" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns a new vector with all components in absolute values (i.e. positive).
</description>
</method>
<method name="angle" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns this vector's angle with respect to the positive X axis, or [code](1, 0)[/code] vector, in radians.
For example, [code]Vector2.RIGHT.angle()[/code] will return zero, [code]Vector2.DOWN.angle()[/code] will return [code]PI / 2[/code] (a quarter turn, or 90 degrees), and [code]Vector2(1, -1).angle()[/code] will return [code]-PI / 4[/code] (a negative eighth turn, or -45 degrees).
@@ -70,114 +60,88 @@
</description>
</method>
<method name="angle_to" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="to" type="Vector2">
- </argument>
+ <return type="float" />
+ <argument index="0" name="to" type="Vector2" />
<description>
Returns the angle to the given vector, in radians.
</description>
</method>
<method name="angle_to_point" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="to" type="Vector2">
- </argument>
+ <return type="float" />
+ <argument index="0" name="to" type="Vector2" />
<description>
Returns the angle between the line connecting the two points and the X axis, in radians.
</description>
</method>
<method name="aspect" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the aspect ratio of this vector, the ratio of [member x] to [member y].
</description>
</method>
<method name="bounce" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="n" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="n" type="Vector2" />
<description>
Returns the vector "bounced off" from a plane defined by the given normal.
</description>
</method>
<method name="ceil" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the vector with all components rounded up (towards positive infinity).
</description>
</method>
<method name="clamp" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="min" type="Vector2">
- </argument>
- <argument index="1" name="max" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="min" type="Vector2" />
+ <argument index="1" name="max" type="Vector2" />
<description>
Returns a new vector with all components clamped between the components of [code]min[/code] and [code]max[/code], by running [method @GlobalScope.clamp] on each component.
</description>
</method>
<method name="cross" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="with" type="Vector2">
- </argument>
+ <return type="float" />
+ <argument index="0" name="with" type="Vector2" />
<description>
Returns the cross product of this vector and [code]with[/code].
</description>
</method>
<method name="cubic_interpolate" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="b" type="Vector2">
- </argument>
- <argument index="1" name="pre_a" type="Vector2">
- </argument>
- <argument index="2" name="post_b" type="Vector2">
- </argument>
- <argument index="3" name="weight" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="b" type="Vector2" />
+ <argument index="1" name="pre_a" type="Vector2" />
+ <argument index="2" name="post_b" type="Vector2" />
+ <argument index="3" name="weight" type="float" />
<description>
Cubically interpolates between this vector and [code]b[/code] using [code]pre_a[/code] and [code]post_b[/code] as handles, and returns the result at position [code]weight[/code]. [code]weight[/code] is on the range of 0.0 to 1.0, representing the amount of interpolation.
</description>
</method>
<method name="direction_to" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="b" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="b" type="Vector2" />
<description>
Returns the normalized vector pointing from this vector to [code]b[/code]. This is equivalent to using [code](b - a).normalized()[/code].
</description>
</method>
<method name="distance_squared_to" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="to" type="Vector2">
- </argument>
+ <return type="float" />
+ <argument index="0" name="to" type="Vector2" />
<description>
Returns the squared distance between this vector and [code]b[/code].
This method runs faster than [method distance_to], so prefer it if you need to compare vectors or need the squared distance for some formula.
</description>
</method>
<method name="distance_to" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="to" type="Vector2">
- </argument>
+ <return type="float" />
+ <argument index="0" name="to" type="Vector2" />
<description>
Returns the distance between this vector and [code]to[/code].
</description>
</method>
<method name="dot" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="with" type="Vector2">
- </argument>
+ <return type="float" />
+ <argument index="0" name="with" type="Vector2" />
<description>
Returns the dot product of this vector and [code]with[/code]. This can be used to compare the angle between two vectors. For example, this can be used to determine whether an enemy is facing the player.
The dot product will be [code]0[/code] for a straight angle (90 degrees), greater than 0 for angles narrower than 90 degrees and lower than 0 for angles wider than 90 degrees.
@@ -186,313 +150,244 @@
</description>
</method>
<method name="floor" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the vector with all components rounded down (towards negative infinity).
</description>
</method>
<method name="is_equal_approx" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="to" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="to" type="Vector2" />
<description>
Returns [code]true[/code] if this vector and [code]v[/code] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.
</description>
</method>
<method name="is_normalized" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the vector is normalized, [code]false[/code] otherwise.
</description>
</method>
<method name="length" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the length (magnitude) of this vector.
</description>
</method>
<method name="length_squared" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the squared length (squared magnitude) of this vector.
This method runs faster than [method length], so prefer it if you need to compare vectors or need the squared distance for some formula.
</description>
</method>
<method name="lerp" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="to" type="Vector2">
- </argument>
- <argument index="1" name="weight" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="to" type="Vector2" />
+ <argument index="1" name="weight" type="float" />
<description>
Returns the result of the linear interpolation between this vector and [code]to[/code] by amount [code]weight[/code]. [code]weight[/code] is on the range of 0.0 to 1.0, representing the amount of interpolation.
</description>
</method>
<method name="limit_length" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="length" type="float" default="1.0">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="length" type="float" default="1.0" />
<description>
Returns the vector with a maximum length by limiting its length to [code]length[/code].
</description>
</method>
<method name="move_toward" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="to" type="Vector2">
- </argument>
- <argument index="1" name="delta" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="to" type="Vector2" />
+ <argument index="1" name="delta" type="float" />
<description>
Moves the vector toward [code]to[/code] by the fixed [code]delta[/code] amount.
</description>
</method>
<method name="normalized" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the vector scaled to unit length. Equivalent to [code]v / v.length()[/code].
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="Vector2" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="Transform2D">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="Transform2D" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="Vector2" />
<description>
</description>
</method>
<method name="operator -" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="Vector2" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="Vector2" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2" />
<description>
</description>
</method>
<method name="operator &lt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2" />
<description>
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2" />
<description>
</description>
</method>
<method name="operator &gt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="operator unary+" qualifiers="operator">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
</description>
</method>
<method name="operator unary-" qualifiers="operator">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
</description>
</method>
<method name="orthogonal" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns a perpendicular vector rotated 90 degrees counter-clockwise compared to the original, with the same length.
</description>
</method>
<method name="posmod" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="mod" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="mod" type="float" />
<description>
Returns a vector composed of the [method @GlobalScope.fposmod] of this vector's components and [code]mod[/code].
</description>
</method>
<method name="posmodv" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="modv" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="modv" type="Vector2" />
<description>
Returns a vector composed of the [method @GlobalScope.fposmod] of this vector's components and [code]modv[/code]'s components.
</description>
</method>
<method name="project" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="b" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="b" type="Vector2" />
<description>
Returns the vector projected onto the vector [code]b[/code].
</description>
</method>
<method name="reflect" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="n" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="n" type="Vector2" />
<description>
Returns the vector reflected from a plane defined by the given normal.
</description>
</method>
<method name="rotated" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="phi" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="phi" type="float" />
<description>
Returns the vector rotated by [code]phi[/code] radians. See also [method @GlobalScope.deg2rad].
</description>
</method>
<method name="round" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the vector with all components rounded to the nearest integer, with halfway cases rounded away from zero.
</description>
</method>
<method name="sign" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the vector with each component set to one or negative one, depending on the signs of the components, or zero if the component is zero, by calling [method @GlobalScope.sign] on each component.
</description>
</method>
<method name="slerp" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="to" type="Vector2">
- </argument>
- <argument index="1" name="weight" type="float">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="to" type="Vector2" />
+ <argument index="1" name="weight" type="float" />
<description>
Returns the result of spherical linear interpolation between this vector and [code]to[/code], by amount [code]weight[/code]. [code]weight[/code] is on the range of 0.0 to 1.0, representing the amount of interpolation.
[b]Note:[/b] Both vectors must be normalized.
</description>
</method>
<method name="slide" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="n" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="n" type="Vector2" />
<description>
Returns this vector slid along a plane defined by the given normal.
</description>
</method>
<method name="snapped" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="step" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="step" type="Vector2" />
<description>
Returns this vector with each component snapped to the nearest multiple of [code]step[/code]. This can also be used to round to an arbitrary number of decimals.
</description>
diff --git a/doc/classes/Vector2i.xml b/doc/classes/Vector2i.xml
index 5f190de8ca..212b1fd22b 100644
--- a/doc/classes/Vector2i.xml
+++ b/doc/classes/Vector2i.xml
@@ -15,217 +15,167 @@
</tutorials>
<methods>
<method name="Vector2i" qualifiers="constructor">
- <return type="Vector2i">
- </return>
+ <return type="Vector2i" />
<description>
Constructs a default-initialized [Vector2i] with all components set to [code]0[/code].
</description>
</method>
<method name="Vector2i" qualifiers="constructor">
- <return type="Vector2i">
- </return>
- <argument index="0" name="from" type="Vector2i">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="from" type="Vector2i" />
<description>
Constructs a [Vector2i] as a copy of the given [Vector2i].
</description>
</method>
<method name="Vector2i" qualifiers="constructor">
- <return type="Vector2i">
- </return>
- <argument index="0" name="from" type="Vector2">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="from" type="Vector2" />
<description>
Constructs a new [Vector2i] from [Vector2]. The floating point coordinates will be truncated.
</description>
</method>
<method name="Vector2i" qualifiers="constructor">
- <return type="Vector2i">
- </return>
- <argument index="0" name="x" type="int">
- </argument>
- <argument index="1" name="y" type="int">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="x" type="int" />
+ <argument index="1" name="y" type="int" />
<description>
Constructs a new [Vector2i] from the given [code]x[/code] and [code]y[/code].
</description>
</method>
<method name="abs" qualifiers="const">
- <return type="Vector2i">
- </return>
+ <return type="Vector2i" />
<description>
Returns a new vector with all components in absolute values (i.e. positive).
</description>
</method>
<method name="aspect" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the ratio of [member x] to [member y].
</description>
</method>
<method name="clamp" qualifiers="const">
- <return type="Vector2i">
- </return>
- <argument index="0" name="min" type="Vector2i">
- </argument>
- <argument index="1" name="max" type="Vector2i">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="min" type="Vector2i" />
+ <argument index="1" name="max" type="Vector2i" />
<description>
Returns a new vector with all components clamped between the components of [code]min[/code] and [code]max[/code], by running [method @GlobalScope.clamp] on each component.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
</description>
</method>
<method name="operator %" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
</description>
</method>
<method name="operator %" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
</description>
</method>
<method name="operator -" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
</description>
</method>
<method name="operator &lt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
</description>
</method>
<method name="operator &gt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="operator unary+" qualifiers="operator">
- <return type="Vector2i">
- </return>
+ <return type="Vector2i" />
<description>
</description>
</method>
<method name="operator unary-" qualifiers="operator">
- <return type="Vector2i">
- </return>
+ <return type="Vector2i" />
<description>
</description>
</method>
<method name="sign" qualifiers="const">
- <return type="Vector2i">
- </return>
+ <return type="Vector2i" />
<description>
Returns the vector with each component set to one or negative one, depending on the signs of the components.
</description>
diff --git a/doc/classes/Vector3.xml b/doc/classes/Vector3.xml
index 1361666c18..78251b0342 100644
--- a/doc/classes/Vector3.xml
+++ b/doc/classes/Vector3.xml
@@ -18,143 +18,110 @@
</tutorials>
<methods>
<method name="Vector3" qualifiers="constructor">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Constructs a default-initialized [Vector3] with all components set to [code]0[/code].
</description>
</method>
<method name="Vector3" qualifiers="constructor">
- <return type="Vector3">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="from" type="Vector3" />
<description>
Constructs a [Vector3] as a copy of the given [Vector3].
</description>
</method>
<method name="Vector3" qualifiers="constructor">
- <return type="Vector3">
- </return>
- <argument index="0" name="from" type="Vector3i">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="from" type="Vector3i" />
<description>
Constructs a new [Vector3] from [Vector3i].
</description>
</method>
<method name="Vector3" qualifiers="constructor">
- <return type="Vector3">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="y" type="float">
- </argument>
- <argument index="2" name="z" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
+ <argument index="2" name="z" type="float" />
<description>
Returns a [Vector3] with the given components.
</description>
</method>
<method name="abs" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns a new vector with all components in absolute values (i.e. positive).
</description>
</method>
<method name="angle_to" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="to" type="Vector3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="to" type="Vector3" />
<description>
Returns the unsigned minimum angle to the given vector, in radians.
</description>
</method>
<method name="bounce" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="n" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="n" type="Vector3" />
<description>
Returns the vector "bounced off" from a plane defined by the given normal.
</description>
</method>
<method name="ceil" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns a new vector with all components rounded up (towards positive infinity).
</description>
</method>
<method name="clamp" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="min" type="Vector3">
- </argument>
- <argument index="1" name="max" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="min" type="Vector3" />
+ <argument index="1" name="max" type="Vector3" />
<description>
Returns a new vector with all components clamped between the components of [code]min[/code] and [code]max[/code], by running [method @GlobalScope.clamp] on each component.
</description>
</method>
<method name="cross" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="with" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="with" type="Vector3" />
<description>
Returns the cross product of this vector and [code]b[/code].
</description>
</method>
<method name="cubic_interpolate" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="b" type="Vector3">
- </argument>
- <argument index="1" name="pre_a" type="Vector3">
- </argument>
- <argument index="2" name="post_b" type="Vector3">
- </argument>
- <argument index="3" name="weight" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="b" type="Vector3" />
+ <argument index="1" name="pre_a" type="Vector3" />
+ <argument index="2" name="post_b" type="Vector3" />
+ <argument index="3" name="weight" type="float" />
<description>
Performs a cubic interpolation between vectors [code]pre_a[/code], [code]a[/code], [code]b[/code], [code]post_b[/code] ([code]a[/code] is current), by the given amount [code]weight[/code]. [code]weight[/code] is on the range of 0.0 to 1.0, representing the amount of interpolation.
</description>
</method>
<method name="direction_to" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="b" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="b" type="Vector3" />
<description>
Returns the normalized vector pointing from this vector to [code]b[/code]. This is equivalent to using [code](b - a).normalized()[/code].
</description>
</method>
<method name="distance_squared_to" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="b" type="Vector3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="b" type="Vector3" />
<description>
Returns the squared distance between this vector and [code]b[/code].
This method runs faster than [method distance_to], so prefer it if you need to compare vectors or need the squared distance for some formula.
</description>
</method>
<method name="distance_to" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="b" type="Vector3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="b" type="Vector3" />
<description>
Returns the distance between this vector and [code]b[/code].
</description>
</method>
<method name="dot" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="with" type="Vector3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="with" type="Vector3" />
<description>
Returns the dot product of this vector and [code]b[/code]. This can be used to compare the angle between two vectors. For example, this can be used to determine whether an enemy is facing the player.
The dot product will be [code]0[/code] for a straight angle (90 degrees), greater than 0 for angles narrower than 90 degrees and lower than 0 for angles wider than 90 degrees.
@@ -163,372 +130,290 @@
</description>
</method>
<method name="floor" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns a new vector with all components rounded down (towards negative infinity).
</description>
</method>
<method name="inverse" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the inverse of the vector. This is the same as [code]Vector3(1.0 / v.x, 1.0 / v.y, 1.0 / v.z)[/code].
</description>
</method>
<method name="is_equal_approx" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="to" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="to" type="Vector3" />
<description>
Returns [code]true[/code] if this vector and [code]v[/code] are approximately equal, by running [method @GlobalScope.is_equal_approx] on each component.
</description>
</method>
<method name="is_normalized" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the vector is normalized, [code]false[/code] otherwise.
</description>
</method>
<method name="length" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the length (magnitude) of this vector.
</description>
</method>
<method name="length_squared" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the squared length (squared magnitude) of this vector.
This method runs faster than [method length], so prefer it if you need to compare vectors or need the squared distance for some formula.
</description>
</method>
<method name="lerp" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="to" type="Vector3">
- </argument>
- <argument index="1" name="weight" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="to" type="Vector3" />
+ <argument index="1" name="weight" type="float" />
<description>
Returns the result of the linear interpolation between this vector and [code]to[/code] by amount [code]weight[/code]. [code]weight[/code] is on the range of 0.0 to 1.0, representing the amount of interpolation.
</description>
</method>
<method name="limit_length" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="length" type="float" default="1.0">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="length" type="float" default="1.0" />
<description>
Returns the vector with a maximum length by limiting its length to [code]length[/code].
</description>
</method>
<method name="max_axis" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the axis of the vector's largest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_X].
</description>
</method>
<method name="min_axis" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the axis of the vector's smallest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_Z].
</description>
</method>
<method name="move_toward" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="to" type="Vector3">
- </argument>
- <argument index="1" name="delta" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="to" type="Vector3" />
+ <argument index="1" name="delta" type="float" />
<description>
Moves this vector toward [code]to[/code] by the fixed [code]delta[/code] amount.
</description>
</method>
<method name="normalized" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the vector scaled to unit length. Equivalent to [code]v / v.length()[/code].
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Basis">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Basis" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Quaternion">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Quaternion" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Transform3D">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Transform3D" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator -" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator &lt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator &gt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="operator unary+" qualifiers="operator">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
</description>
</method>
<method name="operator unary-" qualifiers="operator">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
</description>
</method>
<method name="outer" qualifiers="const">
- <return type="Basis">
- </return>
- <argument index="0" name="with" type="Vector3">
- </argument>
+ <return type="Basis" />
+ <argument index="0" name="with" type="Vector3" />
<description>
Returns the outer product with [code]b[/code].
</description>
</method>
<method name="posmod" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="mod" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="mod" type="float" />
<description>
Returns a vector composed of the [method @GlobalScope.fposmod] of this vector's components and [code]mod[/code].
</description>
</method>
<method name="posmodv" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="modv" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="modv" type="Vector3" />
<description>
Returns a vector composed of the [method @GlobalScope.fposmod] of this vector's components and [code]modv[/code]'s components.
</description>
</method>
<method name="project" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="b" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="b" type="Vector3" />
<description>
Returns this vector projected onto another vector [code]b[/code].
</description>
</method>
<method name="reflect" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="n" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="n" type="Vector3" />
<description>
Returns this vector reflected from a plane defined by the given normal.
</description>
</method>
<method name="rotated" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="by_axis" type="Vector3">
- </argument>
- <argument index="1" name="phi" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="by_axis" type="Vector3" />
+ <argument index="1" name="phi" type="float" />
<description>
Rotates this vector around a given axis by [code]phi[/code] radians. The axis must be a normalized vector.
</description>
</method>
<method name="round" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns this vector with all components rounded to the nearest integer, with halfway cases rounded away from zero.
</description>
</method>
<method name="sign" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns a vector with each component set to one or negative one, depending on the signs of this vector's components, or zero if the component is zero, by calling [method @GlobalScope.sign] on each component.
</description>
</method>
<method name="signed_angle_to" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="to" type="Vector3">
- </argument>
- <argument index="1" name="axis" type="Vector3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="to" type="Vector3" />
+ <argument index="1" name="axis" type="Vector3" />
<description>
Returns the signed angle to the given vector, in radians. The sign of the angle is positive in a counter-clockwise direction and negative in a clockwise direction when viewed from the side specified by the [code]axis[/code].
</description>
</method>
<method name="slerp" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="to" type="Vector3">
- </argument>
- <argument index="1" name="weight" type="float">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="to" type="Vector3" />
+ <argument index="1" name="weight" type="float" />
<description>
Returns the result of spherical linear interpolation between this vector and [code]to[/code], by amount [code]weight[/code]. [code]weight[/code] is on the range of 0.0 to 1.0, representing the amount of interpolation.
[b]Note:[/b] Both vectors must be normalized.
</description>
</method>
<method name="slide" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="n" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="n" type="Vector3" />
<description>
Returns this vector slid along a plane defined by the given normal.
</description>
</method>
<method name="snapped" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="step" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="step" type="Vector3" />
<description>
Returns this vector with each component snapped to the nearest multiple of [code]step[/code]. This can also be used to round to an arbitrary number of decimals.
</description>
</method>
<method name="to_diagonal_matrix" qualifiers="const">
- <return type="Basis">
- </return>
+ <return type="Basis" />
<description>
Returns a diagonal matrix with the vector as main diagonal.
This is equivalent to a Basis with no rotation or shearing and this vector's components set as the scale.
diff --git a/doc/classes/Vector3i.xml b/doc/classes/Vector3i.xml
index e08bafa665..75df182025 100644
--- a/doc/classes/Vector3i.xml
+++ b/doc/classes/Vector3i.xml
@@ -15,225 +15,173 @@
</tutorials>
<methods>
<method name="Vector3i" qualifiers="constructor">
- <return type="Vector3i">
- </return>
+ <return type="Vector3i" />
<description>
Constructs a default-initialized [Vector3i] with all components set to [code]0[/code].
</description>
</method>
<method name="Vector3i" qualifiers="constructor">
- <return type="Vector3i">
- </return>
- <argument index="0" name="from" type="Vector3i">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="from" type="Vector3i" />
<description>
Constructs a [Vector3i] as a copy of the given [Vector3i].
</description>
</method>
<method name="Vector3i" qualifiers="constructor">
- <return type="Vector3i">
- </return>
- <argument index="0" name="from" type="Vector3">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="from" type="Vector3" />
<description>
Constructs a new [Vector3i] from [Vector3]. The floating point coordinates will be truncated.
</description>
</method>
<method name="Vector3i" qualifiers="constructor">
- <return type="Vector3i">
- </return>
- <argument index="0" name="x" type="int">
- </argument>
- <argument index="1" name="y" type="int">
- </argument>
- <argument index="2" name="z" type="int">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="x" type="int" />
+ <argument index="1" name="y" type="int" />
+ <argument index="2" name="z" type="int" />
<description>
Returns a [Vector3i] with the given components.
</description>
</method>
<method name="abs" qualifiers="const">
- <return type="Vector3i">
- </return>
+ <return type="Vector3i" />
<description>
</description>
</method>
<method name="clamp" qualifiers="const">
- <return type="Vector3i">
- </return>
- <argument index="0" name="min" type="Vector3i">
- </argument>
- <argument index="1" name="max" type="Vector3i">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="min" type="Vector3i" />
+ <argument index="1" name="max" type="Vector3i" />
<description>
Returns a new vector with all components clamped between the components of [code]min[/code] and [code]max[/code], by running [method @GlobalScope.clamp] on each component.
</description>
</method>
<method name="max_axis" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the axis of the vector's largest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_X].
</description>
</method>
<method name="min_axis" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the axis of the vector's smallest value. See [code]AXIS_*[/code] constants. If all components are equal, this method returns [constant AXIS_Z].
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
</description>
</method>
<method name="operator %" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
</description>
</method>
<method name="operator %" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
</description>
</method>
<method name="operator -" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="float" />
<description>
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="int" />
<description>
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
</description>
</method>
<method name="operator &lt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
</description>
</method>
<method name="operator &gt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
</description>
</method>
<method name="operator []" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="index" type="int" />
<description>
</description>
</method>
<method name="operator unary+" qualifiers="operator">
- <return type="Vector3i">
- </return>
+ <return type="Vector3i" />
<description>
</description>
</method>
<method name="operator unary-" qualifiers="operator">
- <return type="Vector3i">
- </return>
+ <return type="Vector3i" />
<description>
</description>
</method>
<method name="sign" qualifiers="const">
- <return type="Vector3i">
- </return>
+ <return type="Vector3i" />
<description>
Returns the vector with each component set to one or negative one, depending on the signs of the components.
</description>
diff --git a/doc/classes/VehicleWheel3D.xml b/doc/classes/VehicleWheel3D.xml
index fb0cb03d1c..35f1189a06 100644
--- a/doc/classes/VehicleWheel3D.xml
+++ b/doc/classes/VehicleWheel3D.xml
@@ -12,22 +12,19 @@
</tutorials>
<methods>
<method name="get_rpm" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns the rotational speed of the wheel in revolutions per minute.
</description>
</method>
<method name="get_skidinfo" qualifiers="const">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Returns a value between 0.0 and 1.0 that indicates whether this wheel is skidding. 0.0 is skidding (the wheel has lost grip, e.g. icy terrain), 1.0 means not skidding (the wheel has full grip, e.g. dry asphalt road).
</description>
</method>
<method name="is_in_contact" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this wheel is in contact with a surface.
</description>
diff --git a/doc/classes/VelocityTracker3D.xml b/doc/classes/VelocityTracker3D.xml
index 2d5e3a4d30..7e97cad5bf 100644
--- a/doc/classes/VelocityTracker3D.xml
+++ b/doc/classes/VelocityTracker3D.xml
@@ -8,24 +8,19 @@
</tutorials>
<methods>
<method name="get_tracked_linear_velocity" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
</description>
</method>
<method name="reset">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector3" />
<description>
</description>
</method>
<method name="update_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector3">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector3" />
<description>
</description>
</method>
diff --git a/doc/classes/VideoPlayer.xml b/doc/classes/VideoPlayer.xml
index 12558ebbbc..86b2dd102b 100644
--- a/doc/classes/VideoPlayer.xml
+++ b/doc/classes/VideoPlayer.xml
@@ -13,37 +13,32 @@
</tutorials>
<methods>
<method name="get_stream_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the video stream's name, or [code]"&lt;No Stream&gt;"[/code] if no video stream is assigned.
</description>
</method>
<method name="get_video_texture" qualifiers="const">
- <return type="Texture2D">
- </return>
+ <return type="Texture2D" />
<description>
Returns the current frame as a [Texture2D].
</description>
</method>
<method name="is_playing" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the video is playing.
[b]Note:[/b] The video is still considered playing if paused during playback.
</description>
</method>
<method name="play">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Starts the video playback from the beginning. If the video is paused, this will not unpause the video.
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the video playback and sets the stream position to 0.
[b]Note:[/b] Although the stream position will be set to 0, the first frame of the video stream won't become the current frame.
diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml
index bf58dc4d8c..c2edab7e82 100644
--- a/doc/classes/Viewport.xml
+++ b/doc/classes/Viewport.xml
@@ -23,69 +23,57 @@
</tutorials>
<methods>
<method name="find_world_2d" qualifiers="const">
- <return type="World2D">
- </return>
+ <return type="World2D" />
<description>
Returns the 2D world of the viewport.
</description>
</method>
<method name="find_world_3d" qualifiers="const">
- <return type="World3D">
- </return>
+ <return type="World3D" />
<description>
Returns the 3D world of the viewport, or if none the world of the parent viewport.
</description>
</method>
<method name="get_camera_2d" qualifiers="const">
- <return type="Camera2D">
- </return>
+ <return type="Camera2D" />
<description>
Returns the currently active 2D camera. Returns null if there are no active cameras.
</description>
</method>
<method name="get_camera_3d" qualifiers="const">
- <return type="Camera3D">
- </return>
+ <return type="Camera3D" />
<description>
Returns the currently active 3D camera.
</description>
</method>
<method name="get_final_transform" qualifiers="const">
- <return type="Transform2D">
- </return>
+ <return type="Transform2D" />
<description>
Returns the total transform of the viewport.
</description>
</method>
<method name="get_mouse_position" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the mouse position relative to the viewport.
</description>
</method>
<method name="get_render_info">
- <return type="int">
- </return>
- <argument index="0" name="type" type="int" enum="Viewport.RenderInfoType">
- </argument>
- <argument index="1" name="info" type="int" enum="Viewport.RenderInfo">
- </argument>
+ <return type="int" />
+ <argument index="0" name="type" type="int" enum="Viewport.RenderInfoType" />
+ <argument index="1" name="info" type="int" enum="Viewport.RenderInfo" />
<description>
</description>
</method>
<method name="get_shadow_atlas_quadrant_subdiv" qualifiers="const">
- <return type="int" enum="Viewport.ShadowAtlasQuadrantSubdiv">
- </return>
- <argument index="0" name="quadrant" type="int">
- </argument>
+ <return type="int" enum="Viewport.ShadowAtlasQuadrantSubdiv" />
+ <argument index="0" name="quadrant" type="int" />
<description>
Returns the [enum ShadowAtlasQuadrantSubdiv] of the specified quadrant.
</description>
</method>
<method name="get_texture" qualifiers="const">
- <return type="ViewportTexture">
- </return>
+ <return type="ViewportTexture" />
<description>
Returns the viewport's texture.
[b]Note:[/b] Due to the way OpenGL works, the resulting [ViewportTexture] is flipped vertically. You can use [method Image.flip_y] on the result of [method Texture2D.get_image] to flip it back, for example:
@@ -102,96 +90,76 @@
</description>
</method>
<method name="get_viewport_rid" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the viewport's RID from the [RenderingServer].
</description>
</method>
<method name="get_visible_rect" qualifiers="const">
- <return type="Rect2">
- </return>
+ <return type="Rect2" />
<description>
Returns the visible rectangle in global screen coordinates.
</description>
</method>
<method name="gui_get_drag_data" qualifiers="const">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns the drag data from the GUI, that was previously returned by [method Control._get_drag_data].
</description>
</method>
<method name="gui_is_dragging" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the viewport is currently performing a drag operation.
</description>
</method>
<method name="input">
- <return type="void">
- </return>
- <argument index="0" name="event" type="InputEvent">
- </argument>
- <argument index="1" name="in_local_coords" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="event" type="InputEvent" />
+ <argument index="1" name="in_local_coords" type="bool" default="false" />
<description>
</description>
</method>
<method name="input_text">
- <return type="void">
- </return>
- <argument index="0" name="text" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="text" type="String" />
<description>
</description>
</method>
<method name="is_embedding_subwindows" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="is_input_handled" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="set_input_as_handled">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the input from propagating further down the [SceneTree].
</description>
</method>
<method name="set_shadow_atlas_quadrant_subdiv">
- <return type="void">
- </return>
- <argument index="0" name="quadrant" type="int">
- </argument>
- <argument index="1" name="subdiv" type="int" enum="Viewport.ShadowAtlasQuadrantSubdiv">
- </argument>
+ <return type="void" />
+ <argument index="0" name="quadrant" type="int" />
+ <argument index="1" name="subdiv" type="int" enum="Viewport.ShadowAtlasQuadrantSubdiv" />
<description>
Sets the number of subdivisions to use in the specified quadrant. A higher number of subdivisions allows you to have more shadows in the scene at once, but reduces the quality of the shadows. A good practice is to have quadrants with a varying number of subdivisions and to have as few subdivisions as possible.
</description>
</method>
<method name="unhandled_input">
- <return type="void">
- </return>
- <argument index="0" name="event" type="InputEvent">
- </argument>
- <argument index="1" name="in_local_coords" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="event" type="InputEvent" />
+ <argument index="1" name="in_local_coords" type="bool" default="false" />
<description>
</description>
</method>
<method name="warp_mouse">
- <return type="void">
- </return>
- <argument index="0" name="to_position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="to_position" type="Vector2" />
<description>
Warps the mouse to a position relative to the viewport.
</description>
@@ -291,8 +259,7 @@
</members>
<signals>
<signal name="gui_focus_changed">
- <argument index="0" name="node" type="Control">
- </argument>
+ <argument index="0" name="node" type="Control" />
<description>
Emitted when a Control node grabs keyboard focus.
</description>
diff --git a/doc/classes/VisibleOnScreenNotifier2D.xml b/doc/classes/VisibleOnScreenNotifier2D.xml
index daad200ca8..995bd9e9d7 100644
--- a/doc/classes/VisibleOnScreenNotifier2D.xml
+++ b/doc/classes/VisibleOnScreenNotifier2D.xml
@@ -12,8 +12,7 @@
</tutorials>
<methods>
<method name="is_on_screen" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
If [code]true[/code], the bounding rectangle is on the screen.
[b]Note:[/b] It takes one frame for the node's visibility to be assessed once added to the scene tree, so this method will return [code]false[/code] right after it is instantiated, even if it will be on screen in the draw pass.
diff --git a/doc/classes/VisibleOnScreenNotifier3D.xml b/doc/classes/VisibleOnScreenNotifier3D.xml
index 85ff324fbf..03db449c80 100644
--- a/doc/classes/VisibleOnScreenNotifier3D.xml
+++ b/doc/classes/VisibleOnScreenNotifier3D.xml
@@ -12,8 +12,7 @@
</tutorials>
<methods>
<method name="is_on_screen" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
If [code]true[/code], the bounding box is on the screen.
[b]Note:[/b] It takes one frame for the node's visibility to be assessed once added to the scene tree, so this method will return [code]false[/code] right after it is instantiated, even if it will be on screen in the draw pass.
diff --git a/doc/classes/VisualInstance3D.xml b/doc/classes/VisualInstance3D.xml
index 2a12254b71..2d9c266f3c 100644
--- a/doc/classes/VisualInstance3D.xml
+++ b/doc/classes/VisualInstance3D.xml
@@ -10,59 +10,48 @@
</tutorials>
<methods>
<method name="get_aabb" qualifiers="const">
- <return type="AABB">
- </return>
+ <return type="AABB" />
<description>
Returns the [AABB] (also known as the bounding box) for this [VisualInstance3D]. See also [method get_transformed_aabb].
</description>
</method>
<method name="get_base" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the RID of the resource associated with this [VisualInstance3D]. For example, if the Node is a [MeshInstance3D], this will return the RID of the associated [Mesh].
</description>
</method>
<method name="get_instance" qualifiers="const">
- <return type="RID">
- </return>
+ <return type="RID" />
<description>
Returns the RID of this instance. This RID is the same as the RID returned by [method RenderingServer.instance_create]. This RID is needed if you want to call [RenderingServer] functions directly on this [VisualInstance3D].
</description>
</method>
<method name="get_layer_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="layer" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="layer" type="int" />
<description>
Returns [code]true[/code] when the specified layer is enabled in [member layers] and [code]false[/code] otherwise.
</description>
</method>
<method name="get_transformed_aabb" qualifiers="const">
- <return type="AABB">
- </return>
+ <return type="AABB" />
<description>
Returns the transformed [AABB] (also known as the bounding box) for this [VisualInstance3D].
Transformed in this case means the [AABB] plus the position, rotation, and scale of the [Node3D]'s [Transform3D]. See also [method get_aabb].
</description>
</method>
<method name="set_base">
- <return type="void">
- </return>
- <argument index="0" name="base" type="RID">
- </argument>
+ <return type="void" />
+ <argument index="0" name="base" type="RID" />
<description>
Sets the resource that is instantiated by this [VisualInstance3D], which changes how the engine handles the [VisualInstance3D] under the hood. Equivalent to [method RenderingServer.instance_set_base].
</description>
</method>
<method name="set_layer_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="layer" type="int">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="layer" type="int" />
+ <argument index="1" name="enabled" type="bool" />
<description>
Enables a particular layer in [member layers].
</description>
diff --git a/doc/classes/VisualShader.xml b/doc/classes/VisualShader.xml
index 19b4acd8f1..cdb9de4f86 100644
--- a/doc/classes/VisualShader.xml
+++ b/doc/classes/VisualShader.xml
@@ -11,206 +11,148 @@
</tutorials>
<methods>
<method name="add_node">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
- <argument index="1" name="node" type="VisualShaderNode">
- </argument>
- <argument index="2" name="position" type="Vector2">
- </argument>
- <argument index="3" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
+ <argument index="1" name="node" type="VisualShaderNode" />
+ <argument index="2" name="position" type="Vector2" />
+ <argument index="3" name="id" type="int" />
<description>
Adds the specified node to the shader.
</description>
</method>
<method name="can_connect_nodes" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
- <argument index="1" name="from_node" type="int">
- </argument>
- <argument index="2" name="from_port" type="int">
- </argument>
- <argument index="3" name="to_node" type="int">
- </argument>
- <argument index="4" name="to_port" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
+ <argument index="1" name="from_node" type="int" />
+ <argument index="2" name="from_port" type="int" />
+ <argument index="3" name="to_node" type="int" />
+ <argument index="4" name="to_port" type="int" />
<description>
Returns [code]true[/code] if the specified nodes and ports can be connected together.
</description>
</method>
<method name="connect_nodes">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
- <argument index="1" name="from_node" type="int">
- </argument>
- <argument index="2" name="from_port" type="int">
- </argument>
- <argument index="3" name="to_node" type="int">
- </argument>
- <argument index="4" name="to_port" type="int">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
+ <argument index="1" name="from_node" type="int" />
+ <argument index="2" name="from_port" type="int" />
+ <argument index="3" name="to_node" type="int" />
+ <argument index="4" name="to_port" type="int" />
<description>
Connects the specified nodes and ports.
</description>
</method>
<method name="connect_nodes_forced">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
- <argument index="1" name="from_node" type="int">
- </argument>
- <argument index="2" name="from_port" type="int">
- </argument>
- <argument index="3" name="to_node" type="int">
- </argument>
- <argument index="4" name="to_port" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
+ <argument index="1" name="from_node" type="int" />
+ <argument index="2" name="from_port" type="int" />
+ <argument index="3" name="to_node" type="int" />
+ <argument index="4" name="to_port" type="int" />
<description>
Connects the specified nodes and ports, even if they can't be connected. Such connection is invalid and will not function properly.
</description>
</method>
<method name="disconnect_nodes">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
- <argument index="1" name="from_node" type="int">
- </argument>
- <argument index="2" name="from_port" type="int">
- </argument>
- <argument index="3" name="to_node" type="int">
- </argument>
- <argument index="4" name="to_port" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
+ <argument index="1" name="from_node" type="int" />
+ <argument index="2" name="from_port" type="int" />
+ <argument index="3" name="to_node" type="int" />
+ <argument index="4" name="to_port" type="int" />
<description>
Connects the specified nodes and ports.
</description>
</method>
<method name="get_node" qualifiers="const">
- <return type="VisualShaderNode">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="VisualShaderNode" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
+ <argument index="1" name="id" type="int" />
<description>
Returns the shader node instance with specified [code]type[/code] and [code]id[/code].
</description>
</method>
<method name="get_node_connections" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
<description>
Returns the list of connected nodes with the specified type.
</description>
</method>
<method name="get_node_list" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
+ <return type="PackedInt32Array" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
<description>
Returns the list of all nodes in the shader with the specified type.
</description>
</method>
<method name="get_node_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
+ <argument index="1" name="id" type="int" />
<description>
Returns the position of the specified node within the shader graph.
</description>
</method>
<method name="get_valid_node_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
+ <return type="int" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
<description>
</description>
</method>
<method name="is_node_connection" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
- <argument index="1" name="from_node" type="int">
- </argument>
- <argument index="2" name="from_port" type="int">
- </argument>
- <argument index="3" name="to_node" type="int">
- </argument>
- <argument index="4" name="to_port" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
+ <argument index="1" name="from_node" type="int" />
+ <argument index="2" name="from_port" type="int" />
+ <argument index="3" name="to_node" type="int" />
+ <argument index="4" name="to_port" type="int" />
<description>
Returns [code]true[/code] if the specified node and port connection exist.
</description>
</method>
<method name="remove_node">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
+ <argument index="1" name="id" type="int" />
<description>
Removes the specified node from the shader.
</description>
</method>
<method name="replace_node">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
- <argument index="2" name="new_class" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
+ <argument index="1" name="id" type="int" />
+ <argument index="2" name="new_class" type="StringName" />
<description>
Replaces the specified node with a node of new class type.
</description>
</method>
<method name="set_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="Shader.Mode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mode" type="int" enum="Shader.Mode" />
<description>
Sets the mode of this shader.
</description>
</method>
<method name="set_node_position">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int" enum="VisualShader.Type">
- </argument>
- <argument index="1" name="id" type="int">
- </argument>
- <argument index="2" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="VisualShader.Type" />
+ <argument index="1" name="id" type="int" />
+ <argument index="2" name="position" type="Vector2" />
<description>
Sets the position of the specified node.
</description>
</method>
</methods>
<members>
+ <member name="engine_version" type="Dictionary" setter="set_engine_version" getter="get_engine_version" default="{}">
+ The Godot version this [VisualShader] was designed for, in the form of a [Dictionary] with [code]major[/code] and [code]minor[/code] keys with integer values. Example: [code]{"major": 4, "minor": 0}[/code]
+ This is used by the editor to convert visual shaders from older Godot versions.
+ </member>
<member name="graph_offset" type="Vector2" setter="set_graph_offset" getter="get_graph_offset" default="Vector2(0, 0)">
The offset vector of the whole graph.
</member>
- <member name="version" type="String" setter="set_version" getter="get_version" default="&quot;&quot;">
- </member>
</members>
<constants>
<constant name="TYPE_VERTEX" value="0" enum="Type">
diff --git a/doc/classes/VisualShaderNode.xml b/doc/classes/VisualShaderNode.xml
index 199224b190..2cff70b4f1 100644
--- a/doc/classes/VisualShaderNode.xml
+++ b/doc/classes/VisualShaderNode.xml
@@ -11,53 +11,42 @@
</tutorials>
<methods>
<method name="clear_default_input_values">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the default input ports value.
</description>
</method>
<method name="get_default_input_values" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an [Array] containing default values for all of the input ports of the node in the form [code][index0, value0, index1, value1, ...][/code].
</description>
</method>
<method name="get_input_port_default_value" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="port" type="int" />
<description>
Returns the default value of the input [code]port[/code].
</description>
</method>
<method name="remove_input_port_default_value">
- <return type="void">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="port" type="int" />
<description>
Removes the default value of the input [code]port[/code].
</description>
</method>
<method name="set_default_input_values">
- <return type="void">
- </return>
- <argument index="0" name="values" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="values" type="Array" />
<description>
Sets the default input ports values using an [Array] of the form [code][index0, value0, index1, value1, ...][/code]. For example: [code][0, Vector3(0, 0, 0), 1, Vector3(0, 0, 0)][/code].
</description>
</method>
<method name="set_input_port_default_value">
- <return type="void">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="port" type="int" />
+ <argument index="1" name="value" type="Variant" />
<description>
Sets the default value for the selected input [code]port[/code].
</description>
diff --git a/doc/classes/VisualShaderNodeCustom.xml b/doc/classes/VisualShaderNodeCustom.xml
index 17fc2f8c4d..f6dbd2ad43 100644
--- a/doc/classes/VisualShaderNodeCustom.xml
+++ b/doc/classes/VisualShaderNodeCustom.xml
@@ -17,24 +17,18 @@
</tutorials>
<methods>
<method name="_get_category" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Override this method to define the path to the associated custom node in the Visual Shader Editor's members dialog. The path may look like [code]"MyGame/MyFunctions/Noise"[/code].
Defining this method is [b]optional[/b]. If not overridden, the node will be filed under the "Addons" category.
</description>
</method>
<method name="_get_code" qualifiers="virtual">
- <return type="String">
- </return>
- <argument index="0" name="input_vars" type="Array">
- </argument>
- <argument index="1" name="output_vars" type="Array">
- </argument>
- <argument index="2" name="mode" type="int">
- </argument>
- <argument index="3" name="type" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="input_vars" type="Array" />
+ <argument index="1" name="output_vars" type="Array" />
+ <argument index="2" name="mode" type="int" />
+ <argument index="3" name="type" type="int" />
<description>
Override this method to define the actual shader code of the associated custom node. The shader code should be returned as a string, which can have multiple lines (the [code]"""[/code] multiline string construct can be used for convenience).
The [code]input_vars[/code] and [code]output_vars[/code] arrays contain the string names of the various input and output variables, as defined by [code]_get_input_*[/code] and [code]_get_output_*[/code] virtual methods in this class.
@@ -44,18 +38,15 @@
</description>
</method>
<method name="_get_description" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Override this method to define the description of the associated custom node in the Visual Shader Editor's members dialog.
Defining this method is [b]optional[/b].
</description>
</method>
<method name="_get_global_code" qualifiers="virtual">
- <return type="String">
- </return>
- <argument index="0" name="mode" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="mode" type="int" />
<description>
Override this method to add shader code on top of the global shader, to define your own standard library of reusable methods, varyings, constants, uniforms, etc. The shader code should be returned as a string, which can have multiple lines (the [code]"""[/code] multiline string construct can be used for convenience).
Be careful with this functionality as it can cause name conflicts with other custom nodes, so be sure to give the defined entities unique names.
@@ -64,80 +55,67 @@
</description>
</method>
<method name="_get_input_port_count" qualifiers="virtual">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Override this method to define the amount of input ports of the associated custom node.
Defining this method is [b]required[/b]. If not overridden, the node has no input ports.
</description>
</method>
<method name="_get_input_port_name" qualifiers="virtual">
- <return type="StringName">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="port" type="int" />
<description>
Override this method to define the names of input ports of the associated custom node. The names are used both for the input slots in the editor and as identifiers in the shader code, and are passed in the [code]input_vars[/code] array in [method _get_code].
Defining this method is [b]optional[/b], but recommended. If not overridden, input ports are named as [code]"in" + str(port)[/code].
</description>
</method>
<method name="_get_input_port_type" qualifiers="virtual">
- <return type="int">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="port" type="int" />
<description>
Override this method to define the returned type of each input port of the associated custom node (see [enum VisualShaderNode.PortType] for possible types).
Defining this method is [b]optional[/b], but recommended. If not overridden, input ports will return the [constant VisualShaderNode.PORT_TYPE_SCALAR] type.
</description>
</method>
<method name="_get_name" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Override this method to define the name of the associated custom node in the Visual Shader Editor's members dialog and graph.
Defining this method is [b]optional[/b], but recommended. If not overridden, the node will be named as "Unnamed".
</description>
</method>
<method name="_get_output_port_count" qualifiers="virtual">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Override this method to define the amount of output ports of the associated custom node.
Defining this method is [b]required[/b]. If not overridden, the node has no output ports.
</description>
</method>
<method name="_get_output_port_name" qualifiers="virtual">
- <return type="StringName">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
+ <return type="StringName" />
+ <argument index="0" name="port" type="int" />
<description>
Override this method to define the names of output ports of the associated custom node. The names are used both for the output slots in the editor and as identifiers in the shader code, and are passed in the [code]output_vars[/code] array in [method _get_code].
Defining this method is [b]optional[/b], but recommended. If not overridden, output ports are named as [code]"out" + str(port)[/code].
</description>
</method>
<method name="_get_output_port_type" qualifiers="virtual">
- <return type="int">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="port" type="int" />
<description>
Override this method to define the returned type of each output port of the associated custom node (see [enum VisualShaderNode.PortType] for possible types).
Defining this method is [b]optional[/b], but recommended. If not overridden, output ports will return the [constant VisualShaderNode.PORT_TYPE_SCALAR] type.
</description>
</method>
<method name="_get_return_icon_type" qualifiers="virtual">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Override this method to define the return icon of the associated custom node in the Visual Shader Editor's members dialog.
Defining this method is [b]optional[/b]. If not overridden, no return icon is shown.
</description>
</method>
<method name="_is_highend" qualifiers="virtual">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Override this method to enable high-end mark in the Visual Shader Editor's members dialog.
Defining this method is [b]optional[/b]. If not overridden, it's false.
diff --git a/doc/classes/VisualShaderNodeGroupBase.xml b/doc/classes/VisualShaderNodeGroupBase.xml
index be3f7f173d..a692d47638 100644
--- a/doc/classes/VisualShaderNodeGroupBase.xml
+++ b/doc/classes/VisualShaderNodeGroupBase.xml
@@ -10,190 +10,148 @@
</tutorials>
<methods>
<method name="add_input_port">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="type" type="int">
- </argument>
- <argument index="2" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="type" type="int" />
+ <argument index="2" name="name" type="String" />
<description>
Adds an input port with the specified [code]type[/code] (see [enum VisualShaderNode.PortType]) and [code]name[/code].
</description>
</method>
<method name="add_output_port">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="type" type="int">
- </argument>
- <argument index="2" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="type" type="int" />
+ <argument index="2" name="name" type="String" />
<description>
Adds an output port with the specified [code]type[/code] (see [enum VisualShaderNode.PortType]) and [code]name[/code].
</description>
</method>
<method name="clear_input_ports">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all previously specified input ports.
</description>
</method>
<method name="clear_output_ports">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Removes all previously specified output ports.
</description>
</method>
<method name="get_free_input_port_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns a free input port ID which can be used in [method add_input_port].
</description>
</method>
<method name="get_free_output_port_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns a free output port ID which can be used in [method add_output_port].
</description>
</method>
<method name="get_input_port_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of input ports in use. Alternative for [method get_free_input_port_id].
</description>
</method>
<method name="get_inputs" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a [String] description of the input ports as a colon-separated list using the format [code]id,type,name;[/code] (see [method add_input_port]).
</description>
</method>
<method name="get_output_port_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of output ports in use. Alternative for [method get_free_output_port_id].
</description>
</method>
<method name="get_outputs" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a [String] description of the output ports as a colon-separated list using the format [code]id,type,name;[/code] (see [method add_output_port]).
</description>
</method>
<method name="has_input_port" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
Returns [code]true[/code] if the specified input port exists.
</description>
</method>
<method name="has_output_port" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
Returns [code]true[/code] if the specified output port exists.
</description>
</method>
<method name="is_valid_port_name" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="String" />
<description>
Returns [code]true[/code] if the specified port name does not override an existed port name and is valid within the shader.
</description>
</method>
<method name="remove_input_port">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
<description>
Removes the specified input port.
</description>
</method>
<method name="remove_output_port">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
<description>
Removes the specified output port.
</description>
</method>
<method name="set_input_port_name">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="name" type="String" />
<description>
Renames the specified input port.
</description>
</method>
<method name="set_input_port_type">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="type" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="type" type="int" />
<description>
Sets the specified input port's type (see [enum VisualShaderNode.PortType]).
</description>
</method>
<method name="set_inputs">
- <return type="void">
- </return>
- <argument index="0" name="inputs" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="inputs" type="String" />
<description>
Defines all input ports using a [String] formatted as a colon-separated list: [code]id,type,name;[/code] (see [method add_input_port]).
</description>
</method>
<method name="set_output_port_name">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="name" type="String" />
<description>
Renames the specified output port.
</description>
</method>
<method name="set_output_port_type">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="type" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="type" type="int" />
<description>
Sets the specified output port's type (see [enum VisualShaderNode.PortType]).
</description>
</method>
<method name="set_outputs">
- <return type="void">
- </return>
- <argument index="0" name="outputs" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="outputs" type="String" />
<description>
Defines all output ports using a [String] formatted as a colon-separated list: [code]id,type,name;[/code] (see [method add_output_port]).
</description>
diff --git a/doc/classes/VisualShaderNodeInput.xml b/doc/classes/VisualShaderNodeInput.xml
index 067f78dffe..dd62d668eb 100644
--- a/doc/classes/VisualShaderNodeInput.xml
+++ b/doc/classes/VisualShaderNodeInput.xml
@@ -11,8 +11,7 @@
</tutorials>
<methods>
<method name="get_input_real_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns a translated name of the current constant in the Godot Shader Language. E.g. [code]"ALBEDO"[/code] if the [member input_name] equal to [code]"albedo"[/code].
</description>
diff --git a/doc/classes/VoxelGI.xml b/doc/classes/VoxelGI.xml
index 5b395becb7..eceb651d5e 100644
--- a/doc/classes/VoxelGI.xml
+++ b/doc/classes/VoxelGI.xml
@@ -14,19 +14,15 @@
</tutorials>
<methods>
<method name="bake">
- <return type="void">
- </return>
- <argument index="0" name="from_node" type="Node" default="null">
- </argument>
- <argument index="1" name="create_visual_debug" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_node" type="Node" default="null" />
+ <argument index="1" name="create_visual_debug" type="bool" default="false" />
<description>
Bakes the effect from all [GeometryInstance3D]s marked with [constant GeometryInstance3D.GI_MODE_BAKED] and [Light3D]s marked with either [constant Light3D.BAKE_DYNAMIC] or [constant Light3D.BAKE_STATIC]. If [code]create_visual_debug[/code] is [code]true[/code], after baking the light, this will generate a [MultiMesh] that has a cube representing each solid cell with each cube colored to the cell's albedo color. This can be used to visualize the [VoxelGI]'s data and debug any issues that may be occurring.
</description>
</method>
<method name="debug_bake">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Calls [method bake] with [code]create_visual_debug[/code] enabled.
</description>
diff --git a/doc/classes/VoxelGIData.xml b/doc/classes/VoxelGIData.xml
index f613002233..5c2c7f9dc6 100644
--- a/doc/classes/VoxelGIData.xml
+++ b/doc/classes/VoxelGIData.xml
@@ -9,58 +9,44 @@
</tutorials>
<methods>
<method name="allocate">
- <return type="void">
- </return>
- <argument index="0" name="to_cell_xform" type="Transform3D">
- </argument>
- <argument index="1" name="aabb" type="AABB">
- </argument>
- <argument index="2" name="octree_size" type="Vector3">
- </argument>
- <argument index="3" name="octree_cells" type="PackedByteArray">
- </argument>
- <argument index="4" name="data_cells" type="PackedByteArray">
- </argument>
- <argument index="5" name="distance_field" type="PackedByteArray">
- </argument>
- <argument index="6" name="level_counts" type="PackedInt32Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="to_cell_xform" type="Transform3D" />
+ <argument index="1" name="aabb" type="AABB" />
+ <argument index="2" name="octree_size" type="Vector3" />
+ <argument index="3" name="octree_cells" type="PackedByteArray" />
+ <argument index="4" name="data_cells" type="PackedByteArray" />
+ <argument index="5" name="distance_field" type="PackedByteArray" />
+ <argument index="6" name="level_counts" type="PackedInt32Array" />
<description>
</description>
</method>
<method name="get_bounds" qualifiers="const">
- <return type="AABB">
- </return>
+ <return type="AABB" />
<description>
</description>
</method>
<method name="get_data_cells" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
</description>
</method>
<method name="get_level_counts" qualifiers="const">
- <return type="PackedInt32Array">
- </return>
+ <return type="PackedInt32Array" />
<description>
</description>
</method>
<method name="get_octree_cells" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
</description>
</method>
<method name="get_octree_size" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
</description>
</method>
<method name="get_to_cell_xform" qualifiers="const">
- <return type="Transform3D">
- </return>
+ <return type="Transform3D" />
<description>
</description>
</method>
diff --git a/doc/classes/WeakRef.xml b/doc/classes/WeakRef.xml
index 6c9a7de67f..339c1620bf 100644
--- a/doc/classes/WeakRef.xml
+++ b/doc/classes/WeakRef.xml
@@ -10,8 +10,7 @@
</tutorials>
<methods>
<method name="get_ref" qualifiers="const">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns the [Object] this weakref is referring to.
</description>
diff --git a/doc/classes/Window.xml b/doc/classes/Window.xml
index c8efaca1fc..d7b156cc57 100644
--- a/doc/classes/Window.xml
+++ b/doc/classes/Window.xml
@@ -8,314 +8,239 @@
</tutorials>
<methods>
<method name="can_draw" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="child_controls_changed">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="get_contents_minimum_size" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the combined minimum size from the child [Control] nodes of the window.
</description>
</method>
<method name="get_flag" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="flag" type="int" enum="Window.Flags">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="flag" type="int" enum="Window.Flags" />
<description>
</description>
</method>
<method name="get_layout_direction" qualifiers="const">
- <return type="int" enum="Window.LayoutDirection">
- </return>
+ <return type="int" enum="Window.LayoutDirection" />
<description>
Returns layout direction and text writing direction.
</description>
</method>
<method name="get_real_size" qualifiers="const">
- <return type="Vector2i">
- </return>
+ <return type="Vector2i" />
<description>
</description>
</method>
<method name="get_theme_color" qualifiers="const">
- <return type="Color">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
</description>
</method>
<method name="get_theme_constant" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
</description>
</method>
<method name="get_theme_font" qualifiers="const">
- <return type="Font">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="Font" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns the [Font] at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_theme_font_size" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns the font size at [code]name[/code] if the theme has [code]theme_type[/code].
</description>
</method>
<method name="get_theme_icon" qualifiers="const">
- <return type="Texture2D">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="Texture2D" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
</description>
</method>
<method name="get_theme_stylebox" qualifiers="const">
- <return type="StyleBox">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="StyleBox" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
</description>
</method>
<method name="grab_focus">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="has_focus" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="has_theme_color" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
</description>
</method>
<method name="has_theme_constant" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
</description>
</method>
<method name="has_theme_font" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns [code]true[/code] if [Font] with [code]name[/code] is in [code]theme_type[/code].
Returns [code]false[/code] if the theme does not have [code]theme_type[/code].
</description>
</method>
<method name="has_theme_font_size" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
Returns [code]true[/code] if font size with [code]name[/code] is in [code]theme_type[/code].
Returns [code]false[/code] if the theme does not have [code]theme_type[/code].
</description>
</method>
<method name="has_theme_icon" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
</description>
</method>
<method name="has_theme_stylebox" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="theme_type" type="StringName" default="&quot;&quot;" />
<description>
</description>
</method>
<method name="hide">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="is_embedded" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="is_layout_rtl" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if layout is right-to-left.
</description>
</method>
<method name="is_maximize_allowed" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="is_using_font_oversampling" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="move_to_foreground">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="popup">
- <return type="void">
- </return>
- <argument index="0" name="rect" type="Rect2i" default="Rect2i(0, 0, 0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rect" type="Rect2i" default="Rect2i(0, 0, 0, 0)" />
<description>
</description>
</method>
<method name="popup_centered">
- <return type="void">
- </return>
- <argument index="0" name="minsize" type="Vector2i" default="Vector2i(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="minsize" type="Vector2i" default="Vector2i(0, 0)" />
<description>
</description>
</method>
<method name="popup_centered_clamped">
- <return type="void">
- </return>
- <argument index="0" name="minsize" type="Vector2i" default="Vector2i(0, 0)">
- </argument>
- <argument index="1" name="fallback_ratio" type="float" default="0.75">
- </argument>
+ <return type="void" />
+ <argument index="0" name="minsize" type="Vector2i" default="Vector2i(0, 0)" />
+ <argument index="1" name="fallback_ratio" type="float" default="0.75" />
<description>
</description>
</method>
<method name="popup_centered_ratio">
- <return type="void">
- </return>
- <argument index="0" name="ratio" type="float" default="0.8">
- </argument>
+ <return type="void" />
+ <argument index="0" name="ratio" type="float" default="0.8" />
<description>
</description>
</method>
<method name="popup_on_parent">
- <return type="void">
- </return>
- <argument index="0" name="parent_rect" type="Rect2i">
- </argument>
+ <return type="void" />
+ <argument index="0" name="parent_rect" type="Rect2i" />
<description>
</description>
</method>
<method name="request_attention">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="set_flag">
- <return type="void">
- </return>
- <argument index="0" name="flag" type="int" enum="Window.Flags">
- </argument>
- <argument index="1" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="flag" type="int" enum="Window.Flags" />
+ <argument index="1" name="enabled" type="bool" />
<description>
</description>
</method>
<method name="set_ime_active">
- <return type="void">
- </return>
- <argument index="0" name="active" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="active" type="bool" />
<description>
</description>
</method>
<method name="set_ime_position">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector2i">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector2i" />
<description>
</description>
</method>
<method name="set_layout_direction">
- <return type="void">
- </return>
- <argument index="0" name="direction" type="int" enum="Window.LayoutDirection">
- </argument>
+ <return type="void" />
+ <argument index="0" name="direction" type="int" enum="Window.LayoutDirection" />
<description>
Sets layout direction and text writing direction. Right-to-left layouts are necessary for certain languages (e.g. Arabic and Hebrew).
</description>
</method>
<method name="set_use_font_oversampling">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enable" type="bool" />
<description>
</description>
</method>
<method name="show">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
@@ -323,6 +248,9 @@
<members>
<member name="always_on_top" type="bool" setter="set_flag" getter="get_flag" default="false">
</member>
+ <member name="auto_translate" type="bool" setter="set_auto_translate" getter="is_auto_translating" default="true">
+ Toggles if any text should automatically change to its translated version depending on the current locale.
+ </member>
<member name="borderless" type="bool" setter="set_flag" getter="get_flag" default="false">
</member>
<member name="content_scale_aspect" type="int" setter="set_content_scale_aspect" getter="get_content_scale_aspect" enum="Window.ContentScaleAspect" default="0">
@@ -374,8 +302,7 @@
</description>
</signal>
<signal name="files_dropped">
- <argument index="0" name="files" type="PackedStringArray">
- </argument>
+ <argument index="0" name="files" type="PackedStringArray" />
<description>
</description>
</signal>
@@ -404,8 +331,7 @@
</description>
</signal>
<signal name="window_input">
- <argument index="0" name="event" type="InputEvent">
- </argument>
+ <argument index="0" name="event" type="InputEvent" />
<description>
</description>
</signal>
@@ -465,36 +391,34 @@
</constant>
</constants>
<theme_items>
- <theme_item name="close" type="Texture2D">
+ <theme_item name="close" data_type="icon" type="Texture2D">
</theme_item>
- <theme_item name="close_h_ofs" type="int" default="18">
+ <theme_item name="close_h_ofs" data_type="constant" type="int" default="18">
</theme_item>
- <theme_item name="close_highlight" type="Texture2D">
+ <theme_item name="close_pressed" data_type="icon" type="Texture2D">
</theme_item>
- <theme_item name="close_v_ofs" type="int" default="18">
+ <theme_item name="close_v_ofs" data_type="constant" type="int" default="18">
</theme_item>
- <theme_item name="panel" type="StyleBox">
+ <theme_item name="embedded_border" data_type="style" type="StyleBox">
</theme_item>
- <theme_item name="resize_margin" type="int" default="4">
+ <theme_item name="resize_margin" data_type="constant" type="int" default="4">
</theme_item>
- <theme_item name="scaleborder_size" type="int" default="4">
+ <theme_item name="scaleborder_size" data_type="constant" type="int" default="4">
</theme_item>
- <theme_item name="title_color" type="Color" default="Color(0, 0, 0, 1)">
+ <theme_item name="title_color" data_type="color" type="Color" default="Color(0, 0, 0, 1)">
</theme_item>
- <theme_item name="title_font" type="Font">
+ <theme_item name="title_font" data_type="font" type="Font">
</theme_item>
- <theme_item name="title_font_size" type="int">
+ <theme_item name="title_font_size" data_type="font_size" type="int">
The size of the title font.
</theme_item>
- <theme_item name="title_height" type="int" default="20">
+ <theme_item name="title_height" data_type="constant" type="int" default="20">
</theme_item>
- <theme_item name="title_outline_modulate" type="Color" default="Color(1, 1, 1, 1)">
+ <theme_item name="title_outline_modulate" data_type="color" type="Color" default="Color(1, 1, 1, 1)">
The color of the title outline.
</theme_item>
- <theme_item name="title_outline_size" type="int" default="0">
+ <theme_item name="title_outline_size" data_type="constant" type="int" default="0">
The size of the title outline.
</theme_item>
- <theme_item name="window_panel" type="StyleBox">
- </theme_item>
</theme_items>
</class>
diff --git a/doc/classes/X509Certificate.xml b/doc/classes/X509Certificate.xml
index d2b7b20cd6..5900e68339 100644
--- a/doc/classes/X509Certificate.xml
+++ b/doc/classes/X509Certificate.xml
@@ -12,19 +12,15 @@
</tutorials>
<methods>
<method name="load">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Loads a certificate from [code]path[/code] ("*.crt" file).
</description>
</method>
<method name="save">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="path" type="String" />
<description>
Saves a certificate to the given [code]path[/code] (should be a "*.crt" file).
</description>
diff --git a/doc/classes/XMLParser.xml b/doc/classes/XMLParser.xml
index ab5c58c51c..4af3de8dfd 100644
--- a/doc/classes/XMLParser.xml
+++ b/doc/classes/XMLParser.xml
@@ -10,136 +10,111 @@
</tutorials>
<methods>
<method name="get_attribute_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets the amount of attributes in the current element.
</description>
</method>
<method name="get_attribute_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Gets the name of the attribute specified by the index in [code]idx[/code] argument.
</description>
</method>
<method name="get_attribute_value" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Gets the value of the attribute specified by the index in [code]idx[/code] argument.
</description>
</method>
<method name="get_current_line" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets the current line in the parsed file (currently not implemented).
</description>
</method>
<method name="get_named_attribute_value" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="name" type="String" />
<description>
Gets the value of a certain attribute of the current element by name. This will raise an error if the element has no such attribute.
</description>
</method>
<method name="get_named_attribute_value_safe" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="String" />
+ <argument index="0" name="name" type="String" />
<description>
Gets the value of a certain attribute of the current element by name. This will return an empty [String] if the attribute is not found.
</description>
</method>
<method name="get_node_data" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Gets the contents of a text node. This will raise an error in any other type of node.
</description>
</method>
<method name="get_node_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Gets the name of the current element node. This will raise an error if the current node type is neither [constant NODE_ELEMENT] nor [constant NODE_ELEMENT_END].
</description>
</method>
<method name="get_node_offset" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Gets the byte offset of the current node since the beginning of the file or buffer.
</description>
</method>
<method name="get_node_type">
- <return type="int" enum="XMLParser.NodeType">
- </return>
+ <return type="int" enum="XMLParser.NodeType" />
<description>
Gets the type of the current node. Compare with [enum NodeType] constants.
</description>
</method>
<method name="has_attribute" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="String" />
<description>
Check whether the current element has a certain attribute.
</description>
</method>
<method name="is_empty" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Check whether the current element is empty (this only works for completely empty tags, e.g. [code]&lt;element \&gt;[/code]).
</description>
</method>
<method name="open">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="file" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="file" type="String" />
<description>
Opens an XML file for parsing. This returns an error code.
</description>
</method>
<method name="open_buffer">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="buffer" type="PackedByteArray">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="buffer" type="PackedByteArray" />
<description>
Opens an XML raw buffer for parsing. This returns an error code.
</description>
</method>
<method name="read">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Reads the next node of the file. This returns an error code.
</description>
</method>
<method name="seek">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="position" type="int">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="position" type="int" />
<description>
Moves the buffer cursor to a certain offset (since the beginning) and read the next node there. This returns an error code.
</description>
</method>
<method name="skip_section">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Skips the current section. If the node contains other elements, they will be ignored and the cursor will go to the closing of the current element.
</description>
diff --git a/doc/classes/XRAnchor3D.xml b/doc/classes/XRAnchor3D.xml
index a409c79230..ccbfab1273 100644
--- a/doc/classes/XRAnchor3D.xml
+++ b/doc/classes/XRAnchor3D.xml
@@ -12,36 +12,31 @@
</tutorials>
<methods>
<method name="get_anchor_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the name given to this anchor.
</description>
</method>
<method name="get_is_active" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the anchor is being tracked and [code]false[/code] if no anchor with this ID is currently known.
</description>
</method>
<method name="get_mesh" qualifiers="const">
- <return type="Mesh">
- </return>
+ <return type="Mesh" />
<description>
If provided by the [XRInterface], this returns a mesh object for the anchor. For an anchor, this can be a shape related to the object being tracked or it can be a mesh that provides topology related to the anchor and can be used to create shadows/reflections on surfaces or for generating collision shapes.
</description>
</method>
<method name="get_plane" qualifiers="const">
- <return type="Plane">
- </return>
+ <return type="Plane" />
<description>
Returns a plane aligned with our anchor; handy for intersection testing.
</description>
</method>
<method name="get_size" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the estimated size of the plane that was detected. Say when the anchor relates to a table in the real world, this is the estimated size of the surface of that table.
</description>
@@ -54,8 +49,7 @@
</members>
<signals>
<signal name="mesh_updated">
- <argument index="0" name="mesh" type="Mesh">
- </argument>
+ <argument index="0" name="mesh" type="Mesh" />
<description>
Emitted when the mesh associated with the anchor changes or when one becomes available. This is especially important for topology that is constantly being [code]mesh_updated[/code].
</description>
diff --git a/doc/classes/XRController3D.xml b/doc/classes/XRController3D.xml
index 5d8c23bd6f..47ddc22823 100644
--- a/doc/classes/XRController3D.xml
+++ b/doc/classes/XRController3D.xml
@@ -13,54 +13,45 @@
</tutorials>
<methods>
<method name="get_controller_name" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
If active, returns the name of the associated controller if provided by the AR/VR SDK used.
</description>
</method>
<method name="get_is_active" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the bound controller is active. XR systems attempt to track active controllers.
</description>
</method>
<method name="get_joystick_axis" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="axis" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="axis" type="int" />
<description>
Returns the value of the given axis for things like triggers, touchpads, etc. that are embedded into the controller.
</description>
</method>
<method name="get_joystick_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the ID of the joystick object bound to this. Every controller tracked by the [XRServer] that has buttons and axis will also be registered as a joystick within Godot. This means that all the normal joystick tracking and input mapping will work for buttons and axis found on the AR/VR controllers. This ID is purely offered as information so you can link up the controller with its joystick entry.
</description>
</method>
<method name="get_mesh" qualifiers="const">
- <return type="Mesh">
- </return>
+ <return type="Mesh" />
<description>
If provided by the [XRInterface], this returns a mesh associated with the controller. This can be used to visualize the controller.
</description>
</method>
<method name="get_tracker_hand" qualifiers="const">
- <return type="int" enum="XRPositionalTracker.TrackerHand">
- </return>
+ <return type="int" enum="XRPositionalTracker.TrackerHand" />
<description>
Returns the hand holding this controller, if known. See [enum XRPositionalTracker.TrackerHand].
</description>
</method>
<method name="is_button_pressed" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="button" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="button" type="int" />
<description>
Returns [code]true[/code] if the button at index [code]button[/code] is pressed. See [enum JoyButton].
</description>
@@ -80,22 +71,19 @@
</members>
<signals>
<signal name="button_pressed">
- <argument index="0" name="button" type="int">
- </argument>
+ <argument index="0" name="button" type="int" />
<description>
Emitted when a button on this controller is pressed.
</description>
</signal>
<signal name="button_released">
- <argument index="0" name="button" type="int">
- </argument>
+ <argument index="0" name="button" type="int" />
<description>
Emitted when a button on this controller is released.
</description>
</signal>
<signal name="mesh_updated">
- <argument index="0" name="mesh" type="Mesh">
- </argument>
+ <argument index="0" name="mesh" type="Mesh" />
<description>
Emitted when the mesh associated with the controller changes or when one becomes available. Generally speaking this will be a static mesh after becoming available.
</description>
diff --git a/doc/classes/XRInterface.xml b/doc/classes/XRInterface.xml
index fec98007c3..1fb73e59b4 100644
--- a/doc/classes/XRInterface.xml
+++ b/doc/classes/XRInterface.xml
@@ -12,50 +12,43 @@
</tutorials>
<methods>
<method name="get_camera_feed_id">
- <return type="int">
- </return>
+ <return type="int" />
<description>
If this is an AR interface that requires displaying a camera feed as the background, this method returns the feed ID in the [CameraServer] for this interface.
</description>
</method>
<method name="get_capabilities" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns a combination of [enum Capabilities] flags providing information about the capabilities of this interface.
</description>
</method>
<method name="get_name" qualifiers="const">
- <return type="StringName">
- </return>
+ <return type="StringName" />
<description>
Returns the name of this interface (OpenVR, OpenHMD, ARKit, etc).
</description>
</method>
<method name="get_render_targetsize">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the resolution at which we should render our intermediate results before things like lens distortion are applied by the VR platform.
</description>
</method>
<method name="get_tracking_status" qualifiers="const">
- <return type="int" enum="XRInterface.Tracking_status">
- </return>
+ <return type="int" enum="XRInterface.Tracking_status" />
<description>
If supported, returns the status of our tracking. This will allow you to provide feedback to the user whether there are issues with positional tracking.
</description>
</method>
<method name="get_view_count">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of views that need to be rendered for this device. 1 for Monoscopic, 2 for Stereoscopic.
</description>
</method>
<method name="initialize">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Call this to initialize this interface. The first interface that is initialized is identified as the primary interface and it will be used for rendering output.
After initializing the interface you want to use you then need to enable the AR/VR mode of a viewport and rendering should commence.
@@ -65,8 +58,7 @@
</description>
</method>
<method name="uninitialize">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Turns the interface off.
</description>
diff --git a/doc/classes/XRPositionalTracker.xml b/doc/classes/XRPositionalTracker.xml
index cd8cb71cd9..8cc7c872b6 100644
--- a/doc/classes/XRPositionalTracker.xml
+++ b/doc/classes/XRPositionalTracker.xml
@@ -13,80 +13,68 @@
</tutorials>
<methods>
<method name="get_joy_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
If this is a controller that is being tracked, the controller will also be represented by a joystick entry with this ID.
</description>
</method>
<method name="get_mesh" qualifiers="const">
- <return type="Mesh">
- </return>
+ <return type="Mesh" />
<description>
Returns the mesh related to a controller or anchor point if one is available.
</description>
</method>
<method name="get_orientation" qualifiers="const">
- <return type="Basis">
- </return>
+ <return type="Basis" />
<description>
Returns the controller's orientation matrix.
</description>
</method>
<method name="get_position" qualifiers="const">
- <return type="Vector3">
- </return>
+ <return type="Vector3" />
<description>
Returns the world-space controller position.
</description>
</method>
<method name="get_tracker_hand" qualifiers="const">
- <return type="int" enum="XRPositionalTracker.TrackerHand">
- </return>
+ <return type="int" enum="XRPositionalTracker.TrackerHand" />
<description>
Returns the hand holding this tracker, if known. See [enum TrackerHand] constants.
</description>
</method>
<method name="get_tracker_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the internal tracker ID. This uniquely identifies the tracker per tracker type and matches the ID you need to specify for nodes such as the [XRController3D] and [XRAnchor3D] nodes.
</description>
</method>
<method name="get_tracker_name" qualifiers="const">
- <return type="StringName">
- </return>
+ <return type="StringName" />
<description>
Returns the controller or anchor point's name, if applicable.
</description>
</method>
<method name="get_tracker_type" qualifiers="const">
- <return type="int" enum="XRServer.TrackerType">
- </return>
+ <return type="int" enum="XRServer.TrackerType" />
<description>
Returns the tracker's type, which will be one of the values from the [enum XRServer.TrackerType] enum.
</description>
</method>
<method name="get_transform" qualifiers="const">
- <return type="Transform3D">
- </return>
- <argument index="0" name="adjust_by_reference_frame" type="bool">
- </argument>
+ <return type="Transform3D" />
+ <argument index="0" name="adjust_by_reference_frame" type="bool" />
<description>
Returns the transform combining this device's orientation and position.
</description>
</method>
<method name="is_tracking_orientation" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this device is tracking orientation.
</description>
</method>
<method name="is_tracking_position" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this device is tracking position.
</description>
diff --git a/doc/classes/XRServer.xml b/doc/classes/XRServer.xml
index 149e177700..5dd9b75ad2 100644
--- a/doc/classes/XRServer.xml
+++ b/doc/classes/XRServer.xml
@@ -11,30 +11,23 @@
</tutorials>
<methods>
<method name="add_interface">
- <return type="void">
- </return>
- <argument index="0" name="interface" type="XRInterface">
- </argument>
+ <return type="void" />
+ <argument index="0" name="interface" type="XRInterface" />
<description>
Registers an [XRInterface] object.
</description>
</method>
<method name="add_tracker">
- <return type="void">
- </return>
- <argument index="0" name="tracker" type="XRPositionalTracker">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tracker" type="XRPositionalTracker" />
<description>
Registers a new [XRPositionalTracker] that tracks a spatial location in real space.
</description>
</method>
<method name="center_on_hmd">
- <return type="void">
- </return>
- <argument index="0" name="rotation_mode" type="int" enum="XRServer.RotationMode">
- </argument>
- <argument index="1" name="keep_height" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="rotation_mode" type="int" enum="XRServer.RotationMode" />
+ <argument index="1" name="keep_height" type="bool" />
<description>
This is an important function to understand correctly. AR and VR platforms all handle positioning slightly differently.
For platforms that do not offer spatial tracking, our origin point (0,0,0) is the location of our HMD, but you have little control over the direction the player is facing in the real world.
@@ -45,111 +38,91 @@
</description>
</method>
<method name="clear_primary_interface_if">
- <return type="void">
- </return>
- <argument index="0" name="interface" type="XRInterface">
- </argument>
+ <return type="void" />
+ <argument index="0" name="interface" type="XRInterface" />
<description>
Clears our current primary interface if it is set to the provided interface.
</description>
</method>
<method name="find_interface" qualifiers="const">
- <return type="XRInterface">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
+ <return type="XRInterface" />
+ <argument index="0" name="name" type="String" />
<description>
Finds an interface by its name. For instance, if your project uses capabilities of an AR/VR platform, you can find the interface for that platform by name and initialize it.
</description>
</method>
<method name="get_hmd_transform">
- <return type="Transform3D">
- </return>
+ <return type="Transform3D" />
<description>
Returns the primary interface's transformation.
</description>
</method>
<method name="get_interface" qualifiers="const">
- <return type="XRInterface">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="XRInterface" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the interface registered at a given index in our list of interfaces.
</description>
</method>
<method name="get_interface_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of interfaces currently registered with the AR/VR server. If your project supports multiple AR/VR platforms, you can look through the available interface, and either present the user with a selection or simply try to initialize each interface and use the first one that returns [code]true[/code].
</description>
</method>
<method name="get_interfaces" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns a list of available interfaces the ID and name of each interface.
</description>
</method>
<method name="get_last_commit_usec">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the absolute timestamp (in μs) of the last [XRServer] commit of the AR/VR eyes to [RenderingServer]. The value comes from an internal call to [method Time.get_ticks_usec].
</description>
</method>
<method name="get_last_frame_usec">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the duration (in μs) of the last frame. This is computed as the difference between [method get_last_commit_usec] and [method get_last_process_usec] when committing.
</description>
</method>
<method name="get_last_process_usec">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the absolute timestamp (in μs) of the last [XRServer] process callback. The value comes from an internal call to [method Time.get_ticks_usec].
</description>
</method>
<method name="get_reference_frame" qualifiers="const">
- <return type="Transform3D">
- </return>
+ <return type="Transform3D" />
<description>
Returns the reference frame transform. Mostly used internally and exposed for GDNative build interfaces.
</description>
</method>
<method name="get_tracker" qualifiers="const">
- <return type="XRPositionalTracker">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="XRPositionalTracker" />
+ <argument index="0" name="idx" type="int" />
<description>
Returns the positional tracker at the given ID.
</description>
</method>
<method name="get_tracker_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of trackers currently registered.
</description>
</method>
<method name="remove_interface">
- <return type="void">
- </return>
- <argument index="0" name="interface" type="XRInterface">
- </argument>
+ <return type="void" />
+ <argument index="0" name="interface" type="XRInterface" />
<description>
Removes this interface.
</description>
</method>
<method name="remove_tracker">
- <return type="void">
- </return>
- <argument index="0" name="tracker" type="XRPositionalTracker">
- </argument>
+ <return type="void" />
+ <argument index="0" name="tracker" type="XRPositionalTracker" />
<description>
Removes this positional tracker.
</description>
@@ -165,37 +138,29 @@
</members>
<signals>
<signal name="interface_added">
- <argument index="0" name="interface_name" type="StringName">
- </argument>
+ <argument index="0" name="interface_name" type="StringName" />
<description>
Emitted when a new interface has been added.
</description>
</signal>
<signal name="interface_removed">
- <argument index="0" name="interface_name" type="StringName">
- </argument>
+ <argument index="0" name="interface_name" type="StringName" />
<description>
Emitted when an interface is removed.
</description>
</signal>
<signal name="tracker_added">
- <argument index="0" name="tracker_name" type="StringName">
- </argument>
- <argument index="1" name="type" type="int">
- </argument>
- <argument index="2" name="id" type="int">
- </argument>
+ <argument index="0" name="tracker_name" type="StringName" />
+ <argument index="1" name="type" type="int" />
+ <argument index="2" name="id" type="int" />
<description>
Emitted when a new tracker has been added. If you don't use a fixed number of controllers or if you're using [XRAnchor3D]s for an AR solution, it is important to react to this signal to add the appropriate [XRController3D] or [XRAnchor3D] nodes related to this new tracker.
</description>
</signal>
<signal name="tracker_removed">
- <argument index="0" name="tracker_name" type="StringName">
- </argument>
- <argument index="1" name="type" type="int">
- </argument>
- <argument index="2" name="id" type="int">
- </argument>
+ <argument index="0" name="tracker_name" type="StringName" />
+ <argument index="1" name="type" type="int" />
+ <argument index="2" name="id" type="int" />
<description>
Emitted when a tracker is removed. You should remove any [XRController3D] or [XRAnchor3D] points if applicable. This is not mandatory, the nodes simply become inactive and will be made active again when a new tracker becomes available (i.e. a new controller is switched on that takes the place of the previous one).
</description>
diff --git a/doc/classes/bool.xml b/doc/classes/bool.xml
index 48f336d58c..f3b16217e5 100644
--- a/doc/classes/bool.xml
+++ b/doc/classes/bool.xml
@@ -93,71 +93,56 @@
</tutorials>
<methods>
<method name="bool" qualifiers="constructor">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Constructs a default-initialized [bool] set to [code]false[/code].
</description>
</method>
<method name="bool" qualifiers="constructor">
- <return type="bool">
- </return>
- <argument index="0" name="from" type="bool">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="from" type="bool" />
<description>
Constructs a [bool] as a copy of the given [bool].
</description>
</method>
<method name="bool" qualifiers="constructor">
- <return type="bool">
- </return>
- <argument index="0" name="from" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="from" type="float" />
<description>
Cast a [float] value to a boolean value, this method will return [code]false[/code] if [code]0.0[/code] is passed in, and [code]true[/code] for all other floats.
</description>
</method>
<method name="bool" qualifiers="constructor">
- <return type="bool">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="from" type="int" />
<description>
Cast an [int] value to a boolean value, this method will return [code]false[/code] if [code]0[/code] is passed in, and [code]true[/code] for all other ints.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="bool">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="bool" />
<description>
Returns [code]true[/code] if two bools are different, i.e. one is [code]true[/code] and the other is [code]false[/code].
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="bool">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="bool" />
<description>
Returns [code]true[/code] if left operand is [code]false[/code] and right operand is [code]true[/code].
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="bool">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="bool" />
<description>
Returns [code]true[/code] if two bools are equal, i.e. both are [code]true[/code] or both are [code]false[/code].
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="bool">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="bool" />
<description>
Returns [code]true[/code] if left operand is [code]true[/code] and right operand is [code]false[/code].
</description>
diff --git a/doc/classes/float.xml b/doc/classes/float.xml
index 585c847d22..60878eb0bd 100644
--- a/doc/classes/float.xml
+++ b/doc/classes/float.xml
@@ -10,71 +10,56 @@
</tutorials>
<methods>
<method name="float" qualifiers="constructor">
- <return type="float">
- </return>
+ <return type="float" />
<description>
Constructs a default-initialized [float] set to [code]0.0[/code].
</description>
</method>
<method name="float" qualifiers="constructor">
- <return type="float">
- </return>
- <argument index="0" name="from" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from" type="float" />
<description>
Constructs a [float] as a copy of the given [float].
</description>
</method>
<method name="float" qualifiers="constructor">
- <return type="float">
- </return>
- <argument index="0" name="from" type="bool">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from" type="bool" />
<description>
Cast a [bool] value to a floating-point value, [code]float(true)[/code] will be equal to 1.0 and [code]float(false)[/code] will be equal to 0.0.
</description>
</method>
<method name="float" qualifiers="constructor">
- <return type="float">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="from" type="int" />
<description>
Cast an [int] value to a floating-point value, [code]float(1)[/code] will be equal to [code]1.0[/code].
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] if two floats are different from each other.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] if the integer has different value than the float.
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="float" />
<description>
Multiplies two [float]s.
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="Vector2" />
<description>
Multiplies each component of the [Vector2] by the given [float].
[codeblock]
@@ -83,10 +68,8 @@
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
Multiplies each component of the [Vector2i] by the given [float].
[codeblock]
@@ -95,37 +78,29 @@
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Vector3" />
<description>
Multiplies each component of the [Vector3] by the given [float].
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
Multiplies each component of the [Vector3i] by the given [float].
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Quaternion">
- </return>
- <argument index="0" name="right" type="Quaternion">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="right" type="Quaternion" />
<description>
Multiplies each component of the [Quaternion] by the given [float].
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Color">
- </return>
- <argument index="0" name="right" type="Color">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="right" type="Color" />
<description>
Multiplies each component of the [Color] by the given [float].
[codeblock]
@@ -134,168 +109,132 @@
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="int" />
<description>
Multiplies a [float] and an [int]. The result is a [float].
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="float" />
<description>
Adds two floats.
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="int" />
<description>
Adds a [float] and an [int]. The result is a [float].
</description>
</method>
<method name="operator -" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="float" />
<description>
Subtracts a float from a float.
</description>
</method>
<method name="operator -" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="int" />
<description>
Subtracts an [int] from a [float]. The result is a [float].
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="float" />
<description>
Divides two floats.
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="int" />
<description>
Divides a [float] by an [int]. The result is a [float].
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] the left float is less than the right one.
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] if this [float] is less than the given [int].
</description>
</method>
<method name="operator &lt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] the left integer is less than or equal to the right one.
</description>
</method>
<method name="operator &lt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] if this [float] is less than or equal to the given [int].
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] if both floats are exactly equal.
[b]Note:[/b] Due to floating-point precision errors, consider using [method @GlobalScope.is_equal_approx] or [method @GlobalScope.is_zero_approx] instead, which are more reliable.
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] if the [float] and the given [int] are equal.
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] the left float is greater than the right one.
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] if this [float] is greater than the given [int].
</description>
</method>
<method name="operator &gt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] the left float is greater than or equal to the right one.
</description>
</method>
<method name="operator &gt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] if this [float] is greater than or equal to the given [int].
</description>
</method>
<method name="operator unary+" qualifiers="operator">
- <return type="float">
- </return>
+ <return type="float" />
<description>
</description>
</method>
<method name="operator unary-" qualifiers="operator">
- <return type="float">
- </return>
+ <return type="float" />
<description>
</description>
</method>
diff --git a/doc/classes/int.xml b/doc/classes/int.xml
index 95918c9007..84a01aa0d0 100644
--- a/doc/classes/int.xml
+++ b/doc/classes/int.xml
@@ -40,62 +40,49 @@
</tutorials>
<methods>
<method name="int" qualifiers="constructor">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Constructs a default-initialized [int] set to [code]0[/code].
</description>
</method>
<method name="int" qualifiers="constructor">
- <return type="int">
- </return>
- <argument index="0" name="from" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="from" type="int" />
<description>
Constructs an [int] as a copy of the given [int].
</description>
</method>
<method name="int" qualifiers="constructor">
- <return type="int">
- </return>
- <argument index="0" name="from" type="bool">
- </argument>
+ <return type="int" />
+ <argument index="0" name="from" type="bool" />
<description>
Cast a [bool] value to an integer value, [code]int(true)[/code] will be equals to 1 and [code]int(false)[/code] will be equals to 0.
</description>
</method>
<method name="int" qualifiers="constructor">
- <return type="int">
- </return>
- <argument index="0" name="from" type="float">
- </argument>
+ <return type="int" />
+ <argument index="0" name="from" type="float" />
<description>
Cast a float value to an integer value, this method simply removes the number fractions (i.e. rounds [code]from[/code] towards zero), so for example [code]int(2.7)[/code] will be equals to 2, [code]int(0.1)[/code] will be equals to 0 and [code]int(-2.7)[/code] will be equals to -2. This operation is also called truncation.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] if operands are different from each other.
</description>
</method>
<method name="operator !=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] if operands are different from each other.
</description>
</method>
<method name="operator %" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="right" type="int" />
<description>
Returns the result of the modulo operator for two integers, i.e. the remainder after dividing both numbers.
[codeblock]
@@ -106,10 +93,8 @@
</description>
</method>
<method name="operator &amp;" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="right" type="int" />
<description>
Returns the result of bitwise [code]AND[/code] operation for two integers.
[codeblock]
@@ -126,28 +111,22 @@
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="right" type="int" />
<description>
Multiplies two [int]s.
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="float" />
<description>
Multiplies an [int] and a [float]. The result is a [float].
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2">
- </return>
- <argument index="0" name="right" type="Vector2">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="right" type="Vector2" />
<description>
Multiplies each component of the vector by the given integer.
[codeblock]
@@ -156,46 +135,36 @@
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector2i">
- </return>
- <argument index="0" name="right" type="Vector2i">
- </argument>
+ <return type="Vector2i" />
+ <argument index="0" name="right" type="Vector2i" />
<description>
Multiplies each component of the integer vector by the given integer.
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3">
- </return>
- <argument index="0" name="right" type="Vector3">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="right" type="Vector3" />
<description>
Multiplies each component of the vector by the given integer.
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Vector3i">
- </return>
- <argument index="0" name="right" type="Vector3i">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="right" type="Vector3i" />
<description>
Multiplies each component of the integer vector by the given integer.
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Quaternion">
- </return>
- <argument index="0" name="right" type="Quaternion">
- </argument>
+ <return type="Quaternion" />
+ <argument index="0" name="right" type="Quaternion" />
<description>
Multiplies each component of the quaternion by the given integer.
</description>
</method>
<method name="operator *" qualifiers="operator">
- <return type="Color">
- </return>
- <argument index="0" name="right" type="Color">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="right" type="Color" />
<description>
Multiplies each component of the color by the given integer.
[codeblock]
@@ -204,46 +173,36 @@
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="float" />
<description>
Adds an [int] to a [float]. The result is a [float].
</description>
</method>
<method name="operator +" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="right" type="int" />
<description>
Adds two integers.
</description>
</method>
<method name="operator -" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="float" />
<description>
Subtracts a [float] from an [int]. The result is a [float].
</description>
</method>
<method name="operator -" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="right" type="int" />
<description>
Subtracts two integers.
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="float">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="right" type="float" />
<description>
Divides an [int] by a [float]. The result is a [float].
[codeblock]
@@ -252,10 +211,8 @@
</description>
</method>
<method name="operator /" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="right" type="int" />
<description>
Divides two integers. The decimal part of the result is discarded (truncated).
[codeblock]
@@ -265,28 +222,22 @@
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] if this [int] is less than the given [float].
</description>
</method>
<method name="operator &lt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] the left integer is less than the right one.
</description>
</method>
<method name="operator &lt;&lt;" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="right" type="int" />
<description>
Performs bitwise shift left operation on the integer. Effectively the same as multiplying by a power of 2.
[codeblock]
@@ -296,82 +247,64 @@
</description>
</method>
<method name="operator &lt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] if this [int] is less than or equal to the given [float].
</description>
</method>
<method name="operator &lt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] the left integer is less than or equal to the right one.
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] if the integer is equal to the given [float].
</description>
</method>
<method name="operator ==" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] if both integers are equal.
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] if this [int] is greater than the given [float].
</description>
</method>
<method name="operator &gt;" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] the left integer is greater than the right one.
</description>
</method>
<method name="operator &gt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="float">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="float" />
<description>
Returns [code]true[/code] if this [int] is greater than or equal to the given [float].
</description>
</method>
<method name="operator &gt;=" qualifiers="operator">
- <return type="bool">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="right" type="int" />
<description>
Returns [code]true[/code] the left integer is greater than or equal to the right one.
</description>
</method>
<method name="operator &gt;&gt;" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="right" type="int" />
<description>
Performs bitwise shift right operation on the integer. Effectively the same as dividing by a power of 2.
[codeblock]
@@ -381,10 +314,8 @@
</description>
</method>
<method name="operator ^" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="right" type="int" />
<description>
Returns the result of bitwise [code]XOR[/code] operation for two integers.
[codeblock]
@@ -394,22 +325,18 @@
</description>
</method>
<method name="operator unary+" qualifiers="operator">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="operator unary-" qualifiers="operator">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="operator |" qualifiers="operator">
- <return type="int">
- </return>
- <argument index="0" name="right" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="right" type="int" />
<description>
Returns the result of bitwise [code]OR[/code] operation for two integers.
[codeblock]
@@ -426,8 +353,7 @@
</description>
</method>
<method name="operator ~" qualifiers="operator">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the result of bitwise [code]NOT[/code] operation for the integer. It's effectively equal to [code]-int + 1[/code].
[codeblock]
diff --git a/doc/tools/makerst.py b/doc/tools/makerst.py
index 9be7751d3d..770419a37c 100755
--- a/doc/tools/makerst.py
+++ b/doc/tools/makerst.py
@@ -90,9 +90,13 @@ class EnumDef:
class ThemeItemDef:
- def __init__(self, name, type_name, default_value): # type: (str, TypeName, Optional[str]) -> None
+ def __init__(
+ self, name, type_name, data_name, text, default_value
+ ): # type: (str, TypeName, str, Optional[str], Optional[str]) -> None
self.name = name
self.type_name = type_name
+ self.data_name = data_name
+ self.text = text
self.default_value = default_value
@@ -104,11 +108,11 @@ class ClassDef:
self.properties = OrderedDict() # type: OrderedDict[str, PropertyDef]
self.methods = OrderedDict() # type: OrderedDict[str, List[MethodDef]]
self.signals = OrderedDict() # type: OrderedDict[str, SignalDef]
+ self.theme_items = OrderedDict() # type: OrderedDict[str, ThemeItemDef]
self.inherits = None # type: Optional[str]
self.brief_description = None # type: Optional[str]
self.description = None # type: Optional[str]
- self.theme_items = None # type: Optional[OrderedDict[str, List[ThemeItemDef]]]
- self.tutorials = [] # type: List[str]
+ self.tutorials = [] # type: List[Tuple[str, str]]
# Used to match the class with XML source for output filtering purposes.
self.filepath = "" # type: str
@@ -240,16 +244,33 @@ class State:
theme_items = class_root.find("theme_items")
if theme_items is not None:
- class_def.theme_items = OrderedDict()
for theme_item in theme_items:
assert theme_item.tag == "theme_item"
theme_item_name = theme_item.attrib["name"]
+ theme_item_data_name = theme_item.attrib["data_type"]
+ theme_item_id = "{}_{}".format(theme_item_data_name, theme_item_name)
+ if theme_item_id in class_def.theme_items:
+ print_error(
+ "Duplicate theme property '{}' of type '{}', file: {}".format(
+ theme_item_name, theme_item_data_name, class_name
+ ),
+ self,
+ )
+ continue
+
default_value = theme_item.get("default") or None
- theme_item_def = ThemeItemDef(theme_item_name, TypeName.from_element(theme_item), default_value)
- if theme_item_name not in class_def.theme_items:
- class_def.theme_items[theme_item_name] = []
- class_def.theme_items[theme_item_name].append(theme_item_def)
+ if default_value is not None:
+ default_value = "``{}``".format(default_value)
+
+ theme_item_def = ThemeItemDef(
+ theme_item_name,
+ TypeName.from_element(theme_item),
+ theme_item_data_name,
+ theme_item.text,
+ default_value,
+ )
+ class_def.theme_items[theme_item_id] = theme_item_def
tutorials = class_root.find("tutorials")
if tutorials is not None:
@@ -257,7 +278,7 @@ class State:
assert link.tag == "link"
if link.text is not None:
- class_def.tutorials.append(link.text)
+ class_def.tutorials.append((link.text.strip(), link.get("title", "")))
def sort_classes(self): # type: () -> None
self.classes = OrderedDict(sorted(self.classes.items(), key=lambda t: t[0]))
@@ -431,9 +452,8 @@ def make_rst_class(class_def, state, dry_run, output_dir): # type: (ClassDef, S
# Online tutorials
if len(class_def.tutorials) > 0:
f.write(make_heading("Tutorials", "-"))
- for t in class_def.tutorials:
- link = t.strip()
- f.write("- " + make_url(link) + "\n\n")
+ for url, title in class_def.tutorials:
+ f.write("- " + make_link(url, title) + "\n\n")
# Properties overview
if len(class_def.properties) > 0:
@@ -462,9 +482,11 @@ def make_rst_class(class_def, state, dry_run, output_dir): # type: (ClassDef, S
if class_def.theme_items is not None and len(class_def.theme_items) > 0:
f.write(make_heading("Theme Properties", "-"))
pl = []
- for theme_item_list in class_def.theme_items.values():
- for theme_item in theme_item_list:
- pl.append((theme_item.type_name.to_rst(state), theme_item.name, theme_item.default_value))
+ for theme_item_def in class_def.theme_items.values():
+ ref = ":ref:`{0}<class_{2}_theme_{1}_{0}>`".format(
+ theme_item_def.name, theme_item_def.data_name, class_name
+ )
+ pl.append((theme_item_def.type_name.to_rst(state), ref, theme_item_def.default_value))
format_table(f, pl, True)
# Signals
@@ -579,6 +601,29 @@ def make_rst_class(class_def, state, dry_run, output_dir): # type: (ClassDef, S
index += 1
+ if len(class_def.theme_items) > 0:
+ f.write(make_heading("Theme Property Descriptions", "-"))
+ index = 0
+
+ for theme_item_def in class_def.theme_items.values():
+ if index != 0:
+ f.write("----\n\n")
+
+ f.write(".. _class_{}_theme_{}_{}:\n\n".format(class_name, theme_item_def.data_name, theme_item_def.name))
+ f.write("- {} **{}**\n\n".format(theme_item_def.type_name.to_rst(state), theme_item_def.name))
+
+ info = []
+ if theme_item_def.default_value is not None:
+ info.append(("*Default*", theme_item_def.default_value))
+
+ if len(info) > 0:
+ format_table(f, info)
+
+ if theme_item_def.text is not None and theme_item_def.text.strip() != "":
+ f.write(rstize_text(theme_item_def.text.strip(), state) + "\n\n")
+
+ index += 1
+
f.write(make_footer())
@@ -1062,8 +1107,8 @@ def make_footer(): # type: () -> str
# fmt: on
-def make_url(link): # type: (str) -> str
- match = GODOT_DOCS_PATTERN.search(link)
+def make_link(url, title): # type: (str, str) -> str
+ match = GODOT_DOCS_PATTERN.search(url)
if match:
groups = match.groups()
if match.lastindex == 2:
@@ -1080,7 +1125,10 @@ def make_url(link): # type: (str) -> str
else:
# External link, for example:
# `http://enet.bespin.org/usergroup0.html`
- return "`" + link + " <" + link + ">`_"
+ if title != "":
+ return "`" + title + " <" + url + ">`_"
+ else:
+ return "`" + url + " <" + url + ">`_"
if __name__ == "__main__":
diff --git a/drivers/unix/file_access_unix.cpp b/drivers/unix/file_access_unix.cpp
index 6ea55219bb..f07c654bd6 100644
--- a/drivers/unix/file_access_unix.cpp
+++ b/drivers/unix/file_access_unix.cpp
@@ -111,7 +111,7 @@ Error FileAccessUnix::_open(const String &p_path, int p_mode_flags) {
}
}
- if (is_backup_save_enabled() && (p_mode_flags & WRITE) && !(p_mode_flags & READ)) {
+ if (is_backup_save_enabled() && (p_mode_flags == WRITE)) {
save_path = path;
path = path + ".tmp";
}
diff --git a/drivers/unix/net_socket_posix.cpp b/drivers/unix/net_socket_posix.cpp
index efeaf32ff7..e01c6a0e0f 100644
--- a/drivers/unix/net_socket_posix.cpp
+++ b/drivers/unix/net_socket_posix.cpp
@@ -269,11 +269,11 @@ _FORCE_INLINE_ Error NetSocketPosix::_change_multicast_group(IPAddress p_ip, Str
break; // IPv6 uses index.
}
- for (List<IPAddress>::Element *F = c.ip_addresses.front(); F; F = F->next()) {
- if (!F->get().is_ipv4()) {
+ for (const IPAddress &F : c.ip_addresses) {
+ if (!F.is_ipv4()) {
continue; // Wrong IP type
}
- if_ip = F->get();
+ if_ip = F;
break;
}
break;
diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp
index a5c61bbea5..f6a3e93b55 100644
--- a/drivers/unix/os_unix.cpp
+++ b/drivers/unix/os_unix.cpp
@@ -139,10 +139,6 @@ void OS_Unix::finalize_core() {
NetSocketPosix::cleanup();
}
-void OS_Unix::alert(const String &p_alert, const String &p_title) {
- fprintf(stderr, "ERROR: %s\n", p_alert.utf8().get_data());
-}
-
String OS_Unix::get_stdin_string(bool p_block) {
if (p_block) {
char buff[1024];
diff --git a/drivers/unix/os_unix.h b/drivers/unix/os_unix.h
index 6c79d984e9..bf82019d38 100644
--- a/drivers/unix/os_unix.h
+++ b/drivers/unix/os_unix.h
@@ -52,7 +52,6 @@ protected:
public:
OS_Unix();
- virtual void alert(const String &p_alert, const String &p_title = "ALERT!");
virtual String get_stdin_string(bool p_block) override;
//virtual void set_mouse_show(bool p_show);
diff --git a/drivers/vulkan/rendering_device_vulkan.cpp b/drivers/vulkan/rendering_device_vulkan.cpp
index 5bf3bbf8a4..9ee2a28240 100644
--- a/drivers/vulkan/rendering_device_vulkan.cpp
+++ b/drivers/vulkan/rendering_device_vulkan.cpp
@@ -31,11 +31,14 @@
#include "rendering_device_vulkan.h"
#include "core/config/project_settings.h"
+#include "core/io/compression.h"
#include "core/io/file_access.h"
+#include "core/io/marshalls.h"
#include "core/os/os.h"
#include "core/templates/hashfuncs.h"
#include "drivers/vulkan/vulkan_context.h"
+#include "thirdparty/misc/smolv.h"
#include "thirdparty/spirv-reflect/spirv_reflect.h"
//#define FORCE_FULL_BARRIER
@@ -4360,53 +4363,87 @@ bool RenderingDeviceVulkan::_uniform_add_binding(Vector<Vector<VkDescriptorSetLa
}
#endif
-RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages) {
- //descriptor layouts
- Vector<Vector<VkDescriptorSetLayoutBinding>> set_bindings;
- Vector<Vector<UniformInfo>> uniform_info;
- Shader::PushConstant push_constant;
- push_constant.push_constant_size = 0;
- push_constant.push_constants_vk_stage = 0;
+#define SHADER_BINARY_VERSION 1
- uint32_t vertex_input_mask = 0;
+String RenderingDeviceVulkan::shader_get_binary_cache_key() const {
+ return "Vulkan-SV" + itos(SHADER_BINARY_VERSION);
+}
- uint32_t fragment_outputs = 0;
+struct RenderingDeviceVulkanShaderBinaryDataBinding {
+ uint32_t type;
+ uint32_t binding;
+ uint32_t stages;
+ uint32_t length; //size of arrays (in total elements), or ubos (in bytes * total elements)
+};
- uint32_t stages_processed = 0;
+struct RenderingDeviceVulkanShaderBinarySpecializationConstant {
+ uint32_t type;
+ uint32_t constant_id;
+ union {
+ uint32_t int_value;
+ float float_value;
+ bool bool_value;
+ };
+ uint32_t stage_flags;
+};
- Vector<Shader::SpecializationConstant> specialization_constants;
+struct RenderingDeviceVulkanShaderBinaryData {
+ uint32_t vertex_input_mask;
+ uint32_t fragment_outputs;
+ uint32_t specialization_constant_count;
+ uint32_t is_compute;
+ uint32_t compute_local_size[3];
+ uint32_t set_count;
+ uint32_t push_constant_size;
+ uint32_t push_constants_vk_stage;
+ uint32_t stage_count;
+};
- bool is_compute = false;
+Vector<uint8_t> RenderingDeviceVulkan::shader_compile_binary_from_spirv(const Vector<ShaderStageSPIRVData> &p_spirv) {
+ RenderingDeviceVulkanShaderBinaryData binary_data;
+ binary_data.vertex_input_mask = 0;
+ binary_data.fragment_outputs = 0;
+ binary_data.specialization_constant_count = 0;
+ binary_data.is_compute = 0;
+ binary_data.compute_local_size[0] = 0;
+ binary_data.compute_local_size[1] = 0;
+ binary_data.compute_local_size[2] = 0;
+ binary_data.set_count = 0;
+ binary_data.push_constant_size = 0;
+ binary_data.push_constants_vk_stage = 0;
+
+ Vector<Vector<RenderingDeviceVulkanShaderBinaryDataBinding>> uniform_info; //set bindings
+ Vector<RenderingDeviceVulkanShaderBinarySpecializationConstant> specialization_constants;
- uint32_t compute_local_size[3] = { 0, 0, 0 };
+ uint32_t stages_processed = 0;
- for (int i = 0; i < p_stages.size(); i++) {
- if (p_stages[i].shader_stage == SHADER_STAGE_COMPUTE) {
- is_compute = true;
- ERR_FAIL_COND_V_MSG(p_stages.size() != 1, RID(),
+ for (int i = 0; i < p_spirv.size(); i++) {
+ if (p_spirv[i].shader_stage == SHADER_STAGE_COMPUTE) {
+ binary_data.is_compute = true;
+ ERR_FAIL_COND_V_MSG(p_spirv.size() != 1, Vector<uint8_t>(),
"Compute shaders can only receive one stage, dedicated to compute.");
}
- ERR_FAIL_COND_V_MSG(stages_processed & (1 << p_stages[i].shader_stage), RID(),
- "Stage " + String(shader_stage_names[p_stages[i].shader_stage]) + " submitted more than once.");
+ ERR_FAIL_COND_V_MSG(stages_processed & (1 << p_spirv[i].shader_stage), Vector<uint8_t>(),
+ "Stage " + String(shader_stage_names[p_spirv[i].shader_stage]) + " submitted more than once.");
{
SpvReflectShaderModule module;
- const uint8_t *spirv = p_stages[i].spir_v.ptr();
- SpvReflectResult result = spvReflectCreateShaderModule(p_stages[i].spir_v.size(), spirv, &module);
- ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "' failed parsing shader.");
-
- if (is_compute) {
- compute_local_size[0] = module.entry_points->local_size.x;
- compute_local_size[1] = module.entry_points->local_size.y;
- compute_local_size[2] = module.entry_points->local_size.z;
+ const uint8_t *spirv = p_spirv[i].spir_v.ptr();
+ SpvReflectResult result = spvReflectCreateShaderModule(p_spirv[i].spir_v.size(), spirv, &module);
+ ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "' failed parsing shader.");
+
+ if (binary_data.is_compute) {
+ binary_data.compute_local_size[0] = module.entry_points->local_size.x;
+ binary_data.compute_local_size[1] = module.entry_points->local_size.y;
+ binary_data.compute_local_size[2] = module.entry_points->local_size.z;
}
uint32_t binding_count = 0;
result = spvReflectEnumerateDescriptorBindings(&module, &binding_count, nullptr);
- ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "' failed enumerating descriptor bindings.");
+ ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "' failed enumerating descriptor bindings.");
- uint32_t stage = p_stages[i].shader_stage;
+ uint32_t stage = p_spirv[i].shader_stage;
if (binding_count > 0) {
//Parse bindings
@@ -4415,56 +4452,47 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
bindings.resize(binding_count);
result = spvReflectEnumerateDescriptorBindings(&module, &binding_count, bindings.ptrw());
- ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "' failed getting descriptor bindings.");
+ ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "' failed getting descriptor bindings.");
for (uint32_t j = 0; j < binding_count; j++) {
const SpvReflectDescriptorBinding &binding = *bindings[j];
- VkDescriptorSetLayoutBinding layout_binding;
- UniformInfo info;
+ RenderingDeviceVulkanShaderBinaryDataBinding info;
bool need_array_dimensions = false;
bool need_block_size = false;
switch (binding.descriptor_type) {
case SPV_REFLECT_DESCRIPTOR_TYPE_SAMPLER: {
- layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLER;
info.type = UNIFORM_TYPE_SAMPLER;
need_array_dimensions = true;
} break;
case SPV_REFLECT_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER: {
- layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
info.type = UNIFORM_TYPE_SAMPLER_WITH_TEXTURE;
need_array_dimensions = true;
} break;
case SPV_REFLECT_DESCRIPTOR_TYPE_SAMPLED_IMAGE: {
- layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
info.type = UNIFORM_TYPE_TEXTURE;
need_array_dimensions = true;
} break;
case SPV_REFLECT_DESCRIPTOR_TYPE_STORAGE_IMAGE: {
- layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
info.type = UNIFORM_TYPE_IMAGE;
need_array_dimensions = true;
} break;
case SPV_REFLECT_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER: {
- layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER;
info.type = UNIFORM_TYPE_TEXTURE_BUFFER;
need_array_dimensions = true;
} break;
case SPV_REFLECT_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER: {
- layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER;
info.type = UNIFORM_TYPE_IMAGE_BUFFER;
need_array_dimensions = true;
} break;
case SPV_REFLECT_DESCRIPTOR_TYPE_UNIFORM_BUFFER: {
- layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
info.type = UNIFORM_TYPE_UNIFORM_BUFFER;
need_block_size = true;
} break;
case SPV_REFLECT_DESCRIPTOR_TYPE_STORAGE_BUFFER: {
- layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
info.type = UNIFORM_TYPE_STORAGE_BUFFER;
need_block_size = true;
} break;
@@ -4477,7 +4505,6 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
continue;
} break;
case SPV_REFLECT_DESCRIPTOR_TYPE_INPUT_ATTACHMENT: {
- layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT;
info.type = UNIFORM_TYPE_INPUT_ATTACHMENT;
} break;
case SPV_REFLECT_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR: {
@@ -4499,42 +4526,35 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
}
}
- layout_binding.descriptorCount = info.length;
-
} else if (need_block_size) {
info.length = binding.block.size;
- layout_binding.descriptorCount = 1;
} else {
info.length = 0;
- layout_binding.descriptorCount = 1;
}
info.binding = binding.binding;
uint32_t set = binding.set;
- //print_line("Stage: " + String(shader_stage_names[stage]) + " set=" + itos(set) + " binding=" + itos(info.binding) + " type=" + shader_uniform_names[info.type] + " length=" + itos(info.length));
-
- ERR_FAIL_COND_V_MSG(set >= MAX_UNIFORM_SETS, RID(),
+ ERR_FAIL_COND_V_MSG(set >= MAX_UNIFORM_SETS, Vector<uint8_t>(),
"On shader stage '" + String(shader_stage_names[stage]) + "', uniform '" + binding.name + "' uses a set (" + itos(set) + ") index larger than what is supported (" + itos(MAX_UNIFORM_SETS) + ").");
- ERR_FAIL_COND_V_MSG(set >= limits.maxBoundDescriptorSets, RID(),
+ ERR_FAIL_COND_V_MSG(set >= limits.maxBoundDescriptorSets, Vector<uint8_t>(),
"On shader stage '" + String(shader_stage_names[stage]) + "', uniform '" + binding.name + "' uses a set (" + itos(set) + ") index larger than what is supported by the hardware (" + itos(limits.maxBoundDescriptorSets) + ").");
- if (set < (uint32_t)set_bindings.size()) {
+ if (set < (uint32_t)uniform_info.size()) {
//check if this already exists
bool exists = false;
- for (int k = 0; k < set_bindings[set].size(); k++) {
- if (set_bindings[set][k].binding == (uint32_t)info.binding) {
+ for (int k = 0; k < uniform_info[set].size(); k++) {
+ if (uniform_info[set][k].binding == (uint32_t)info.binding) {
//already exists, verify that it's the same type
- ERR_FAIL_COND_V_MSG(set_bindings[set][k].descriptorType != layout_binding.descriptorType, RID(),
+ ERR_FAIL_COND_V_MSG(uniform_info[set][k].type != info.type, Vector<uint8_t>(),
"On shader stage '" + String(shader_stage_names[stage]) + "', uniform '" + binding.name + "' trying to re-use location for set=" + itos(set) + ", binding=" + itos(info.binding) + " with different uniform type.");
//also, verify that it's the same size
- ERR_FAIL_COND_V_MSG(set_bindings[set][k].descriptorCount != layout_binding.descriptorCount || uniform_info[set][k].length != info.length, RID(),
+ ERR_FAIL_COND_V_MSG(uniform_info[set][k].length != info.length, Vector<uint8_t>(),
"On shader stage '" + String(shader_stage_names[stage]) + "', uniform '" + binding.name + "' trying to re-use location for set=" + itos(set) + ", binding=" + itos(info.binding) + " with different uniform size.");
//just append stage mask and return
- set_bindings.write[set].write[k].stageFlags |= shader_stage_masks[stage];
uniform_info.write[set].write[k].stages |= 1 << stage;
exists = true;
}
@@ -4545,19 +4565,12 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
}
}
- layout_binding.binding = info.binding;
- layout_binding.stageFlags = shader_stage_masks[stage];
- layout_binding.pImmutableSamplers = nullptr; //no support for this yet
-
info.stages = 1 << stage;
- info.binding = info.binding;
- if (set >= (uint32_t)set_bindings.size()) {
- set_bindings.resize(set + 1);
+ if (set >= (uint32_t)uniform_info.size()) {
uniform_info.resize(set + 1);
}
- set_bindings.write[set].push_back(layout_binding);
uniform_info.write[set].push_back(info);
}
}
@@ -4567,41 +4580,41 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
uint32_t sc_count = 0;
result = spvReflectEnumerateSpecializationConstants(&module, &sc_count, nullptr);
- ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "' failed enumerating specialization constants.");
+ ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "' failed enumerating specialization constants.");
if (sc_count) {
Vector<SpvReflectSpecializationConstant *> spec_constants;
spec_constants.resize(sc_count);
result = spvReflectEnumerateSpecializationConstants(&module, &sc_count, spec_constants.ptrw());
- ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "' failed obtaining specialization constants.");
+ ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "' failed obtaining specialization constants.");
for (uint32_t j = 0; j < sc_count; j++) {
int32_t existing = -1;
- Shader::SpecializationConstant sconst;
- sconst.constant.constant_id = spec_constants[j]->constant_id;
+ RenderingDeviceVulkanShaderBinarySpecializationConstant sconst;
+ sconst.constant_id = spec_constants[j]->constant_id;
switch (spec_constants[j]->constant_type) {
case SPV_REFLECT_SPECIALIZATION_CONSTANT_BOOL: {
- sconst.constant.type = PIPELINE_SPECIALIZATION_CONSTANT_TYPE_BOOL;
- sconst.constant.bool_value = spec_constants[j]->default_value.int_bool_value != 0;
+ sconst.type = PIPELINE_SPECIALIZATION_CONSTANT_TYPE_BOOL;
+ sconst.bool_value = spec_constants[j]->default_value.int_bool_value != 0;
} break;
case SPV_REFLECT_SPECIALIZATION_CONSTANT_INT: {
- sconst.constant.type = PIPELINE_SPECIALIZATION_CONSTANT_TYPE_INT;
- sconst.constant.int_value = spec_constants[j]->default_value.int_bool_value;
+ sconst.type = PIPELINE_SPECIALIZATION_CONSTANT_TYPE_INT;
+ sconst.int_value = spec_constants[j]->default_value.int_bool_value;
} break;
case SPV_REFLECT_SPECIALIZATION_CONSTANT_FLOAT: {
- sconst.constant.type = PIPELINE_SPECIALIZATION_CONSTANT_TYPE_FLOAT;
- sconst.constant.float_value = spec_constants[j]->default_value.float_value;
+ sconst.type = PIPELINE_SPECIALIZATION_CONSTANT_TYPE_FLOAT;
+ sconst.float_value = spec_constants[j]->default_value.float_value;
} break;
}
- sconst.stage_flags = 1 << p_stages[i].shader_stage;
+ sconst.stage_flags = 1 << p_spirv[i].shader_stage;
for (int k = 0; k < specialization_constants.size(); k++) {
- if (specialization_constants[k].constant.constant_id == sconst.constant.constant_id) {
- ERR_FAIL_COND_V_MSG(specialization_constants[k].constant.type != sconst.constant.type, RID(), "More than one specialization constant used for id (" + itos(sconst.constant.constant_id) + "), but their types differ.");
- ERR_FAIL_COND_V_MSG(specialization_constants[k].constant.int_value != sconst.constant.int_value, RID(), "More than one specialization constant used for id (" + itos(sconst.constant.constant_id) + "), but their default values differ.");
+ if (specialization_constants[k].constant_id == sconst.constant_id) {
+ ERR_FAIL_COND_V_MSG(specialization_constants[k].type != sconst.type, Vector<uint8_t>(), "More than one specialization constant used for id (" + itos(sconst.constant_id) + "), but their types differ.");
+ ERR_FAIL_COND_V_MSG(specialization_constants[k].int_value != sconst.int_value, Vector<uint8_t>(), "More than one specialization constant used for id (" + itos(sconst.constant_id) + "), but their default values differ.");
existing = k;
break;
}
@@ -4619,20 +4632,20 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
if (stage == SHADER_STAGE_VERTEX) {
uint32_t iv_count = 0;
result = spvReflectEnumerateInputVariables(&module, &iv_count, nullptr);
- ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "' failed enumerating input variables.");
+ ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "' failed enumerating input variables.");
if (iv_count) {
Vector<SpvReflectInterfaceVariable *> input_vars;
input_vars.resize(iv_count);
result = spvReflectEnumerateInputVariables(&module, &iv_count, input_vars.ptrw());
- ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "' failed obtaining input variables.");
+ ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "' failed obtaining input variables.");
for (uint32_t j = 0; j < iv_count; j++) {
if (input_vars[j] && input_vars[j]->decoration_flags == 0) { //regular input
- vertex_input_mask |= (1 << uint32_t(input_vars[j]->location));
+ binary_data.vertex_input_mask |= (1 << uint32_t(input_vars[j]->location));
}
}
}
@@ -4641,21 +4654,21 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
if (stage == SHADER_STAGE_FRAGMENT) {
uint32_t ov_count = 0;
result = spvReflectEnumerateOutputVariables(&module, &ov_count, nullptr);
- ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "' failed enumerating output variables.");
+ ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "' failed enumerating output variables.");
if (ov_count) {
Vector<SpvReflectInterfaceVariable *> output_vars;
output_vars.resize(ov_count);
result = spvReflectEnumerateOutputVariables(&module, &ov_count, output_vars.ptrw());
- ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "' failed obtaining output variables.");
+ ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "' failed obtaining output variables.");
for (uint32_t j = 0; j < ov_count; j++) {
const SpvReflectInterfaceVariable *refvar = output_vars[j];
if (refvar != nullptr && refvar->built_in != SpvBuiltInFragDepth) {
- fragment_outputs |= 1 << refvar->location;
+ binary_data.fragment_outputs |= 1 << refvar->location;
}
}
}
@@ -4663,18 +4676,18 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
uint32_t pc_count = 0;
result = spvReflectEnumeratePushConstantBlocks(&module, &pc_count, nullptr);
- ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "' failed enumerating push constants.");
+ ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "' failed enumerating push constants.");
if (pc_count) {
- ERR_FAIL_COND_V_MSG(pc_count > 1, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "': Only one push constant is supported, which should be the same across shader stages.");
+ ERR_FAIL_COND_V_MSG(pc_count > 1, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "': Only one push constant is supported, which should be the same across shader stages.");
Vector<SpvReflectBlockVariable *> pconstants;
pconstants.resize(pc_count);
result = spvReflectEnumeratePushConstantBlocks(&module, &pc_count, pconstants.ptrw());
- ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "' failed obtaining push constants.");
+ ERR_FAIL_COND_V_MSG(result != SPV_REFLECT_RESULT_SUCCESS, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "' failed obtaining push constants.");
#if 0
if (pconstants[0] == nullptr) {
FileAccess *f = FileAccess::open("res://popo.spv", FileAccess::WRITE);
@@ -4683,11 +4696,11 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
}
#endif
- ERR_FAIL_COND_V_MSG(push_constant.push_constant_size && push_constant.push_constant_size != pconstants[0]->size, RID(),
- "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_stages[i].shader_stage]) + "': Push constant block must be the same across shader stages.");
+ ERR_FAIL_COND_V_MSG(binary_data.push_constant_size && binary_data.push_constant_size != pconstants[0]->size, Vector<uint8_t>(),
+ "Reflection of SPIR-V shader stage '" + String(shader_stage_names[p_spirv[i].shader_stage]) + "': Push constant block must be the same across shader stages.");
- push_constant.push_constant_size = pconstants[0]->size;
- push_constant.push_constants_vk_stage |= shader_stage_masks[stage];
+ binary_data.push_constant_size = pconstants[0]->size;
+ binary_data.push_constants_vk_stage |= shader_stage_masks[stage];
//print_line("Stage: " + String(shader_stage_names[stage]) + " push constant of size=" + itos(push_constant.push_constant_size));
}
@@ -4696,9 +4709,291 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
spvReflectDestroyShaderModule(&module);
}
- stages_processed |= (1 << p_stages[i].shader_stage);
+ stages_processed |= (1 << p_spirv[i].shader_stage);
+ }
+
+ Vector<Vector<uint8_t>> compressed_stages;
+ Vector<uint32_t> smolv_size;
+ Vector<uint32_t> zstd_size; //if 0, stdno t used
+
+ uint32_t stages_binary_size = 0;
+
+ bool strip_debug = false;
+
+ for (int i = 0; i < p_spirv.size(); i++) {
+ smolv::ByteArray smolv;
+ if (!smolv::Encode(p_spirv[i].spir_v.ptr(), p_spirv[i].spir_v.size(), smolv, strip_debug ? smolv::kEncodeFlagStripDebugInfo : 0)) {
+ ERR_FAIL_V_MSG(Vector<uint8_t>(), "Error compressing shader stage :" + String(shader_stage_names[p_spirv[i].shader_stage]));
+ } else {
+ smolv_size.push_back(smolv.size());
+ { //zstd
+ Vector<uint8_t> zstd;
+ zstd.resize(Compression::get_max_compressed_buffer_size(smolv.size(), Compression::MODE_ZSTD));
+ int dst_size = Compression::compress(zstd.ptrw(), &smolv[0], smolv.size(), Compression::MODE_ZSTD);
+
+ if (dst_size > 0 && (uint32_t)dst_size < smolv.size()) {
+ zstd_size.push_back(dst_size);
+ zstd.resize(dst_size);
+ compressed_stages.push_back(zstd);
+ } else {
+ Vector<uint8_t> smv;
+ smv.resize(smolv.size());
+ memcpy(smv.ptrw(), &smolv[0], smolv.size());
+ zstd_size.push_back(0); //not using zstd
+ compressed_stages.push_back(smv);
+ }
+ }
+ }
+ uint32_t s = compressed_stages[i].size();
+ if (s % 4 != 0) {
+ s += 4 - (s % 4);
+ }
+ stages_binary_size += s;
+ }
+
+ binary_data.specialization_constant_count = specialization_constants.size();
+ binary_data.set_count = uniform_info.size();
+ binary_data.stage_count = p_spirv.size();
+
+ uint32_t total_size = sizeof(uint32_t) * 3; //header + version + main datasize;
+ total_size += sizeof(RenderingDeviceVulkanShaderBinaryData);
+
+ for (int i = 0; i < uniform_info.size(); i++) {
+ total_size += sizeof(uint32_t);
+ total_size += uniform_info[i].size() * sizeof(RenderingDeviceVulkanShaderBinaryDataBinding);
+ }
+
+ total_size += sizeof(RenderingDeviceVulkanShaderBinarySpecializationConstant) * specialization_constants.size();
+
+ total_size += compressed_stages.size() * sizeof(uint32_t) * 3; //sizes
+ total_size += stages_binary_size;
+
+ Vector<uint8_t> ret;
+ ret.resize(total_size);
+ uint32_t offset = 0;
+ {
+ uint8_t *binptr = ret.ptrw();
+ binptr[0] = 'G';
+ binptr[1] = 'V';
+ binptr[2] = 'B';
+ binptr[3] = 'D'; //godot vulkan binary data
+ offset += 4;
+ encode_uint32(SHADER_BINARY_VERSION, binptr + offset);
+ offset += sizeof(uint32_t);
+ encode_uint32(sizeof(RenderingDeviceVulkanShaderBinaryData), binptr + offset);
+ offset += sizeof(uint32_t);
+ memcpy(binptr + offset, &binary_data, sizeof(RenderingDeviceVulkanShaderBinaryData));
+ offset += sizeof(RenderingDeviceVulkanShaderBinaryData);
+
+ for (int i = 0; i < uniform_info.size(); i++) {
+ int count = uniform_info[i].size();
+ encode_uint32(count, binptr + offset);
+ offset += sizeof(uint32_t);
+ if (count > 0) {
+ memcpy(binptr + offset, uniform_info[i].ptr(), sizeof(RenderingDeviceVulkanShaderBinaryDataBinding) * count);
+ offset += sizeof(RenderingDeviceVulkanShaderBinaryDataBinding) * count;
+ }
+ }
+
+ if (specialization_constants.size()) {
+ memcpy(binptr + offset, specialization_constants.ptr(), sizeof(RenderingDeviceVulkanShaderBinarySpecializationConstant) * specialization_constants.size());
+ offset += sizeof(RenderingDeviceVulkanShaderBinarySpecializationConstant) * specialization_constants.size();
+ }
+
+ for (int i = 0; i < compressed_stages.size(); i++) {
+ encode_uint32(p_spirv[i].shader_stage, binptr + offset);
+ offset += sizeof(uint32_t);
+ encode_uint32(smolv_size[i], binptr + offset);
+ offset += sizeof(uint32_t);
+ encode_uint32(zstd_size[i], binptr + offset);
+ offset += sizeof(uint32_t);
+ memcpy(binptr + offset, compressed_stages[i].ptr(), compressed_stages[i].size());
+
+ uint32_t s = compressed_stages[i].size();
+
+ if (s % 4 != 0) {
+ s += 4 - (s % 4);
+ }
+
+ offset += s;
+ }
+
+ ERR_FAIL_COND_V(offset != (uint32_t)ret.size(), Vector<uint8_t>());
}
+ return ret;
+}
+
+RID RenderingDeviceVulkan::shader_create_from_bytecode(const Vector<uint8_t> &p_shader_binary) {
+ const uint8_t *binptr = p_shader_binary.ptr();
+ uint32_t binsize = p_shader_binary.size();
+
+ uint32_t read_offset = 0;
+ //consistency check
+ ERR_FAIL_COND_V(binsize < sizeof(uint32_t) * 3 + sizeof(RenderingDeviceVulkanShaderBinaryData), RID());
+ ERR_FAIL_COND_V(binptr[0] != 'G' || binptr[1] != 'V' || binptr[2] != 'B' || binptr[3] != 'D', RID());
+
+ uint32_t bin_version = decode_uint32(binptr + 4);
+ ERR_FAIL_COND_V(bin_version > SHADER_BINARY_VERSION, RID());
+
+ uint32_t bin_data_size = decode_uint32(binptr + 8);
+
+ const RenderingDeviceVulkanShaderBinaryData &binary_data = *(const RenderingDeviceVulkanShaderBinaryData *)(binptr + 12);
+
+ Shader::PushConstant push_constant;
+ push_constant.push_constant_size = binary_data.push_constant_size;
+ push_constant.push_constants_vk_stage = binary_data.push_constants_vk_stage;
+
+ uint32_t vertex_input_mask = binary_data.vertex_input_mask;
+
+ uint32_t fragment_outputs = binary_data.fragment_outputs;
+
+ bool is_compute = binary_data.is_compute;
+
+ uint32_t compute_local_size[3] = { binary_data.compute_local_size[0], binary_data.compute_local_size[1], binary_data.compute_local_size[2] };
+
+ read_offset += sizeof(uint32_t) * 3 + bin_data_size;
+
+ Vector<Vector<VkDescriptorSetLayoutBinding>> set_bindings;
+ Vector<Vector<UniformInfo>> uniform_info;
+
+ set_bindings.resize(binary_data.set_count);
+ uniform_info.resize(binary_data.set_count);
+
+ for (uint32_t i = 0; i < binary_data.set_count; i++) {
+ ERR_FAIL_COND_V(read_offset + sizeof(uint32_t) >= binsize, RID());
+ uint32_t set_count = decode_uint32(binptr + read_offset);
+ read_offset += sizeof(uint32_t);
+ const RenderingDeviceVulkanShaderBinaryDataBinding *set_ptr = (const RenderingDeviceVulkanShaderBinaryDataBinding *)(binptr + read_offset);
+ uint32_t set_size = set_count * sizeof(RenderingDeviceVulkanShaderBinaryDataBinding);
+ ERR_FAIL_COND_V(read_offset + set_size >= binsize, RID());
+
+ for (uint32_t j = 0; j < set_count; j++) {
+ UniformInfo info;
+ info.type = UniformType(set_ptr[j].type);
+ info.length = set_ptr[j].length;
+ info.binding = set_ptr[j].binding;
+ info.stages = set_ptr[j].stages;
+
+ VkDescriptorSetLayoutBinding layout_binding;
+ layout_binding.pImmutableSamplers = nullptr;
+ layout_binding.binding = set_ptr[j].binding;
+ layout_binding.descriptorCount = 1;
+ layout_binding.stageFlags = 0;
+ for (uint32_t k = 0; k < SHADER_STAGE_MAX; k++) {
+ if (set_ptr[j].stages & (1 << k)) {
+ layout_binding.stageFlags |= shader_stage_masks[k];
+ }
+ }
+
+ switch (info.type) {
+ case UNIFORM_TYPE_SAMPLER: {
+ layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLER;
+ layout_binding.descriptorCount = set_ptr[j].length;
+ } break;
+ case UNIFORM_TYPE_SAMPLER_WITH_TEXTURE: {
+ layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
+ layout_binding.descriptorCount = set_ptr[j].length;
+ } break;
+ case UNIFORM_TYPE_TEXTURE: {
+ layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE;
+ layout_binding.descriptorCount = set_ptr[j].length;
+ } break;
+ case UNIFORM_TYPE_IMAGE: {
+ layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE;
+ layout_binding.descriptorCount = set_ptr[j].length;
+ } break;
+ case UNIFORM_TYPE_TEXTURE_BUFFER: {
+ layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER;
+ layout_binding.descriptorCount = set_ptr[j].length;
+ } break;
+ case UNIFORM_TYPE_IMAGE_BUFFER: {
+ layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER;
+ } break;
+ case UNIFORM_TYPE_UNIFORM_BUFFER: {
+ layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
+ } break;
+ case UNIFORM_TYPE_STORAGE_BUFFER: {
+ layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
+ } break;
+ case UNIFORM_TYPE_INPUT_ATTACHMENT: {
+ layout_binding.descriptorType = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT;
+ } break;
+ default: {
+ ERR_FAIL_V(RID());
+ }
+ }
+
+ set_bindings.write[i].push_back(layout_binding);
+ uniform_info.write[i].push_back(info);
+ }
+
+ read_offset += set_size;
+ }
+
+ ERR_FAIL_COND_V(read_offset + binary_data.specialization_constant_count * sizeof(RenderingDeviceVulkanShaderBinarySpecializationConstant) >= binsize, RID());
+
+ Vector<Shader::SpecializationConstant> specialization_constants;
+
+ for (uint32_t i = 0; i < binary_data.specialization_constant_count; i++) {
+ const RenderingDeviceVulkanShaderBinarySpecializationConstant &src_sc = *(const RenderingDeviceVulkanShaderBinarySpecializationConstant *)(binptr + read_offset);
+ Shader::SpecializationConstant sc;
+ sc.constant.int_value = src_sc.int_value;
+ sc.constant.type = PipelineSpecializationConstantType(src_sc.type);
+ sc.constant.constant_id = src_sc.constant_id;
+ sc.stage_flags = src_sc.stage_flags;
+ specialization_constants.push_back(sc);
+
+ read_offset += sizeof(RenderingDeviceVulkanShaderBinarySpecializationConstant);
+ }
+
+ Vector<Vector<uint8_t>> stage_spirv_data;
+ Vector<ShaderStage> stage_type;
+
+ for (uint32_t i = 0; i < binary_data.stage_count; i++) {
+ ERR_FAIL_COND_V(read_offset + sizeof(uint32_t) * 3 >= binsize, RID());
+ uint32_t stage = decode_uint32(binptr + read_offset);
+ read_offset += sizeof(uint32_t);
+ uint32_t smolv_size = decode_uint32(binptr + read_offset);
+ read_offset += sizeof(uint32_t);
+ uint32_t zstd_size = decode_uint32(binptr + read_offset);
+ read_offset += sizeof(uint32_t);
+
+ uint32_t buf_size = (zstd_size > 0) ? zstd_size : smolv_size;
+
+ Vector<uint8_t> smolv;
+ const uint8_t *src_smolv = nullptr;
+
+ if (zstd_size > 0) {
+ //decompress to smolv
+ smolv.resize(smolv_size);
+ int dec_smolv_size = Compression::decompress(smolv.ptrw(), smolv.size(), binptr + read_offset, zstd_size, Compression::MODE_ZSTD);
+ ERR_FAIL_COND_V(dec_smolv_size != (int32_t)smolv_size, RID());
+ src_smolv = smolv.ptr();
+ } else {
+ src_smolv = binptr + read_offset;
+ }
+
+ Vector<uint8_t> spirv;
+ uint32_t spirv_size = smolv::GetDecodedBufferSize(src_smolv, smolv_size);
+ spirv.resize(spirv_size);
+ if (!smolv::Decode(src_smolv, smolv_size, spirv.ptrw(), spirv_size)) {
+ ERR_FAIL_V_MSG(RID(), "Malformed smolv input uncompressing shader stage:" + String(shader_stage_names[stage]));
+ }
+ stage_spirv_data.push_back(spirv);
+ stage_type.push_back(ShaderStage(stage));
+
+ if (buf_size % 4 != 0) {
+ buf_size += 4 - (buf_size % 4);
+ }
+
+ ERR_FAIL_COND_V(read_offset + buf_size > binsize, RID());
+
+ read_offset += buf_size;
+ }
+
+ ERR_FAIL_COND_V(read_offset != binsize, RID());
+
//all good, let's create modules
_THREAD_SAFE_METHOD_
@@ -4717,13 +5012,13 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
String error_text;
bool success = true;
- for (int i = 0; i < p_stages.size(); i++) {
+ for (int i = 0; i < stage_spirv_data.size(); i++) {
VkShaderModuleCreateInfo shader_module_create_info;
shader_module_create_info.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
shader_module_create_info.pNext = nullptr;
shader_module_create_info.flags = 0;
- shader_module_create_info.codeSize = p_stages[i].spir_v.size();
- const uint8_t *r = p_stages[i].spir_v.ptr();
+ shader_module_create_info.codeSize = stage_spirv_data[i].size();
+ const uint8_t *r = stage_spirv_data[i].ptr();
shader_module_create_info.pCode = (const uint32_t *)r;
@@ -4731,7 +5026,7 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
VkResult res = vkCreateShaderModule(device, &shader_module_create_info, nullptr, &module);
if (res) {
success = false;
- error_text = "Error (" + itos(res) + ") creating shader module for stage: " + String(shader_stage_names[p_stages[i].shader_stage]);
+ error_text = "Error (" + itos(res) + ") creating shader module for stage: " + String(shader_stage_names[stage_type[i]]);
break;
}
@@ -4747,7 +5042,7 @@ RID RenderingDeviceVulkan::shader_create(const Vector<ShaderStageData> &p_stages
shader_stage.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
shader_stage.pNext = nullptr;
shader_stage.flags = 0;
- shader_stage.stage = shader_stage_bits[p_stages[i].shader_stage];
+ shader_stage.stage = shader_stage_bits[stage_type[i]];
shader_stage.module = module;
shader_stage.pName = "main";
shader_stage.pSpecializationInfo = nullptr;
@@ -6037,7 +6332,7 @@ RID RenderingDeviceVulkan::render_pipeline_create(RID p_shader, FramebufferForma
specialization_info.resize(pipeline_stages.size());
specialization_map_entries.resize(pipeline_stages.size());
for (int i = 0; i < shader->specialization_constants.size(); i++) {
- //see if overriden
+ //see if overridden
const Shader::SpecializationConstant &sc = shader->specialization_constants[i];
data_ptr[i] = sc.constant.int_value; //just copy the 32 bits
@@ -6181,7 +6476,7 @@ RID RenderingDeviceVulkan::compute_pipeline_create(RID p_shader, const Vector<Pi
specialization_constant_data.resize(shader->specialization_constants.size());
uint32_t *data_ptr = specialization_constant_data.ptrw();
for (int i = 0; i < shader->specialization_constants.size(); i++) {
- //see if overriden
+ //see if overridden
const Shader::SpecializationConstant &sc = shader->specialization_constants[i];
data_ptr[i] = sc.constant.int_value; //just copy the 32 bits
@@ -8542,8 +8837,8 @@ void RenderingDeviceVulkan::_free_rids(T &p_owner, const char *p_type) {
} else {
WARN_PRINT(vformat("%d RIDs of type \"%s\" were leaked.", owned.size(), p_type));
}
- for (List<RID>::Element *E = owned.front(); E; E = E->next()) {
- free(E->get());
+ for (const RID &E : owned) {
+ free(E);
}
}
}
@@ -8764,13 +9059,13 @@ void RenderingDeviceVulkan::finalize() {
List<RID>::Element *N = E->next();
if (texture_is_shared(E->get())) {
free(E->get());
- owned.erase(E->get());
+ owned.erase(E);
}
E = N;
}
//free non shared second, this will avoid an error trying to free unexisting textures due to dependencies.
- for (List<RID>::Element *E = owned.front(); E; E = E->next()) {
- free(E->get());
+ for (const RID &E : owned) {
+ free(E);
}
}
}
diff --git a/drivers/vulkan/rendering_device_vulkan.h b/drivers/vulkan/rendering_device_vulkan.h
index 8b95ff43b8..f9ff61310a 100644
--- a/drivers/vulkan/rendering_device_vulkan.h
+++ b/drivers/vulkan/rendering_device_vulkan.h
@@ -652,8 +652,8 @@ class RenderingDeviceVulkan : public RenderingDevice {
// Basically, you can mix and match pools as you
// like, but you'll run into fragmentation issues.
// Because of this, the recommended approach is to
- // create a a pool for every descriptor set type,
- // as this prevents fragmentation.
+ // create a pool for every descriptor set type, as
+ // this prevents fragmentation.
//
// This is implemented here as a having a list of
// pools (each can contain up to 64 sets) for each
@@ -1083,7 +1083,11 @@ public:
/**** SHADER ****/
/****************/
- virtual RID shader_create(const Vector<ShaderStageData> &p_stages);
+ virtual String shader_get_binary_cache_key() const;
+ virtual Vector<uint8_t> shader_compile_binary_from_spirv(const Vector<ShaderStageSPIRVData> &p_spirv);
+
+ virtual RID shader_create_from_bytecode(const Vector<uint8_t> &p_shader_binary);
+
virtual uint32_t shader_get_vertex_input_attribute_mask(RID p_shader);
/*****************/
diff --git a/drivers/vulkan/vulkan_context.cpp b/drivers/vulkan/vulkan_context.cpp
index d35c519320..a9d0fb6fed 100644
--- a/drivers/vulkan/vulkan_context.cpp
+++ b/drivers/vulkan/vulkan_context.cpp
@@ -577,26 +577,22 @@ Error VulkanContext::_check_capabilities() {
multiview_capabilities.max_view_count = multiviewProperties.maxMultiviewViewCount;
multiview_capabilities.max_instance_count = multiviewProperties.maxMultiviewInstanceIndex;
-#ifdef DEBUG_ENABLED
- print_line("- Vulkan multiview supported:");
- print_line(" max view count: " + itos(multiview_capabilities.max_view_count));
- print_line(" max instances: " + itos(multiview_capabilities.max_instance_count));
+ print_verbose("- Vulkan multiview supported:");
+ print_verbose(" max view count: " + itos(multiview_capabilities.max_view_count));
+ print_verbose(" max instances: " + itos(multiview_capabilities.max_instance_count));
} else {
- print_line("- Vulkan multiview not supported");
-#endif
+ print_verbose("- Vulkan multiview not supported");
}
-#ifdef DEBUG_ENABLED
- print_line("- Vulkan subgroup:");
- print_line(" size: " + itos(subgroup_capabilities.size));
- print_line(" stages: " + subgroup_capabilities.supported_stages_desc());
- print_line(" supported ops: " + subgroup_capabilities.supported_operations_desc());
+ print_verbose("- Vulkan subgroup:");
+ print_verbose(" size: " + itos(subgroup_capabilities.size));
+ print_verbose(" stages: " + subgroup_capabilities.supported_stages_desc());
+ print_verbose(" supported ops: " + subgroup_capabilities.supported_operations_desc());
if (subgroup_capabilities.quadOperationsInAllStages) {
- print_line(" quad operations in all stages");
+ print_verbose(" quad operations in all stages");
}
} else {
- print_line("- Couldn't call vkGetPhysicalDeviceProperties2");
-#endif
+ print_verbose("- Couldn't call vkGetPhysicalDeviceProperties2");
}
return OK;
@@ -737,10 +733,11 @@ Error VulkanContext::_create_physical_device() {
} vendor_names[] = {
{ 0x1002, "AMD" },
{ 0x1010, "ImgTec" },
+ { 0x106B, "Apple" },
{ 0x10DE, "NVIDIA" },
{ 0x13B5, "ARM" },
{ 0x5143, "Qualcomm" },
- { 0x8086, "INTEL" },
+ { 0x8086, "Intel" },
{ 0, nullptr },
};
device_name = gpu_props.deviceName;
@@ -757,9 +754,9 @@ Error VulkanContext::_create_physical_device() {
vendor_idx++;
}
}
-#ifdef DEBUG_ENABLED
+
print_line("Using Vulkan Device #" + itos(device_index) + ": " + device_vendor + " - " + device_name);
-#endif
+
device_api_version = gpu_props.apiVersion;
err = vkEnumerateDeviceExtensionProperties(gpu, nullptr, &device_extension_count, nullptr);
diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp
index d6deda7b5d..f504bad60d 100644
--- a/drivers/windows/file_access_windows.cpp
+++ b/drivers/windows/file_access_windows.cpp
@@ -108,7 +108,7 @@ Error FileAccessWindows::_open(const String &p_path, int p_mode_flags) {
}
#endif
- if (is_backup_save_enabled() && p_mode_flags & WRITE && !(p_mode_flags & READ)) {
+ if (is_backup_save_enabled() && p_mode_flags == WRITE) {
save_path = path;
path = path + ".tmp";
}
diff --git a/editor/animation_bezier_editor.cpp b/editor/animation_bezier_editor.cpp
index 05db9045bd..6ef36f16f5 100644
--- a/editor/animation_bezier_editor.cpp
+++ b/editor/animation_bezier_editor.cpp
@@ -605,12 +605,12 @@ void AnimationBezierTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
ERR_FAIL_COND(p_event.is_null());
if (p_event->is_pressed()) {
- if (ED_GET_SHORTCUT("animation_editor/duplicate_selection")->is_shortcut(p_event)) {
+ if (ED_GET_SHORTCUT("animation_editor/duplicate_selection")->matches_event(p_event)) {
duplicate_selection();
accept_event();
}
- if (ED_GET_SHORTCUT("animation_editor/delete_selection")->is_shortcut(p_event)) {
+ if (ED_GET_SHORTCUT("animation_editor/delete_selection")->matches_event(p_event)) {
delete_selection();
accept_event();
}
@@ -898,8 +898,7 @@ void AnimationBezierTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
}
// 6-(undo) reinsert overlapped keys
- for (List<AnimMoveRestore>::Element *E = to_restore.front(); E; E = E->next()) {
- AnimMoveRestore &amr = E->get();
+ for (const AnimMoveRestore &amr : to_restore) {
undo_redo->add_undo_method(animation.ptr(), "track_insert_key", amr.track, amr.time, amr.key, 1);
}
@@ -1091,9 +1090,9 @@ void AnimationBezierTrackEdit::duplicate_selection() {
//reselect duplicated
selection.clear();
- for (List<Pair<int, float>>::Element *E = new_selection_values.front(); E; E = E->next()) {
- int track = E->get().first;
- float time = E->get().second;
+ for (const Pair<int, float> &E : new_selection_values) {
+ int track = E.first;
+ float time = E.second;
int existing_idx = animation->track_find_key(track, time, true);
diff --git a/editor/animation_track_editor.cpp b/editor/animation_track_editor.cpp
index 174f19280a..c9d3df9ce2 100644
--- a/editor/animation_track_editor.cpp
+++ b/editor/animation_track_editor.cpp
@@ -598,12 +598,12 @@ public:
if (ap) {
List<StringName> anims;
ap->get_animation_list(&anims);
- for (List<StringName>::Element *E = anims.front(); E; E = E->next()) {
+ for (const StringName &E : anims) {
if (animations != String()) {
animations += ",";
}
- animations += String(E->get());
+ animations += String(E);
}
}
}
@@ -702,8 +702,8 @@ public:
for (Map<int, List<float>>::Element *E = key_ofs_map.front(); E; E = E->next()) {
int key = 0;
- for (List<float>::Element *F = E->value().front(); F; F = F->next()) {
- float key_ofs = F->get();
+ for (float &F : E->value()) {
+ float key_ofs = F;
if (from != key_ofs) {
key++;
continue;
@@ -728,8 +728,8 @@ public:
bool change_notify_deserved = false;
for (Map<int, List<float>>::Element *E = key_ofs_map.front(); E; E = E->next()) {
int track = E->key();
- for (List<float>::Element *F = E->value().front(); F; F = F->next()) {
- float key_ofs = F->get();
+ for (float &F : E->value()) {
+ float key_ofs = F;
int key = animation->track_find_key(track, key_ofs, true);
ERR_FAIL_COND_V(key == -1, false);
@@ -986,8 +986,8 @@ public:
bool _get(const StringName &p_name, Variant &r_ret) const {
for (Map<int, List<float>>::Element *E = key_ofs_map.front(); E; E = E->next()) {
int track = E->key();
- for (List<float>::Element *F = E->value().front(); F; F = F->next()) {
- float key_ofs = F->get();
+ for (float &F : E->value()) {
+ float key_ofs = F;
int key = animation->track_find_key(track, key_ofs, true);
ERR_CONTINUE(key == -1);
@@ -1137,8 +1137,8 @@ public:
same_key_type = false;
}
- for (List<float>::Element *F = E->value().front(); F; F = F->next()) {
- int key = animation->track_find_key(track, F->get(), true);
+ for (float &F : E->value()) {
+ int key = animation->track_find_key(track, F, true);
ERR_FAIL_COND(key == -1);
if (first_key < 0) {
first_key = key;
@@ -2555,17 +2555,17 @@ void AnimationTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
ERR_FAIL_COND(p_event.is_null());
if (p_event->is_pressed()) {
- if (ED_GET_SHORTCUT("animation_editor/duplicate_selection")->is_shortcut(p_event)) {
+ if (ED_GET_SHORTCUT("animation_editor/duplicate_selection")->matches_event(p_event)) {
emit_signal(SNAME("duplicate_request"));
accept_event();
}
- if (ED_GET_SHORTCUT("animation_editor/duplicate_selection_transposed")->is_shortcut(p_event)) {
+ if (ED_GET_SHORTCUT("animation_editor/duplicate_selection_transposed")->matches_event(p_event)) {
emit_signal(SNAME("duplicate_transpose_request"));
accept_event();
}
- if (ED_GET_SHORTCUT("animation_editor/delete_selection")->is_shortcut(p_event)) {
+ if (ED_GET_SHORTCUT("animation_editor/delete_selection")->matches_event(p_event)) {
emit_signal(SNAME("delete_request"));
accept_event();
}
@@ -3356,9 +3356,9 @@ void AnimationTrackEditor::_query_insert(const InsertData &p_id) {
}
insert_frame = Engine::get_singleton()->get_frames_drawn();
- for (List<InsertData>::Element *E = insert_data.front(); E; E = E->next()) {
+ for (const InsertData &E : insert_data) {
//prevent insertion of multiple tracks
- if (E->get().path == p_id.path) {
+ if (E.path == p_id.path) {
return; //already inserted a track for this on this frame
}
}
@@ -3843,9 +3843,9 @@ PropertyInfo AnimationTrackEditor::_find_hint_for_track(int p_idx, NodePath &r_b
List<PropertyInfo> pinfo;
property_info_base.get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (E->get().name == leftover_path[leftover_path.size() - 1]) {
- return E->get();
+ for (const PropertyInfo &E : pinfo) {
+ if (E.name == leftover_path[leftover_path.size() - 1]) {
+ return E;
}
}
@@ -4675,21 +4675,21 @@ void AnimationTrackEditor::_add_method_key(const String &p_method) {
List<MethodInfo> minfo;
base->get_method_list(&minfo);
- for (List<MethodInfo>::Element *E = minfo.front(); E; E = E->next()) {
- if (E->get().name == p_method) {
+ for (const MethodInfo &E : minfo) {
+ if (E.name == p_method) {
Dictionary d;
d["method"] = p_method;
Array params;
- int first_defarg = E->get().arguments.size() - E->get().default_arguments.size();
+ int first_defarg = E.arguments.size() - E.default_arguments.size();
- for (int i = 0; i < E->get().arguments.size(); i++) {
+ for (int i = 0; i < E.arguments.size(); i++) {
if (i >= first_defarg) {
- Variant arg = E->get().default_arguments[i - first_defarg];
+ Variant arg = E.default_arguments[i - first_defarg];
params.push_back(arg);
} else {
Callable::CallError ce;
Variant arg;
- Variant::construct(E->get().arguments[i].type, arg, nullptr, 0, ce);
+ Variant::construct(E.arguments[i].type, arg, nullptr, 0, ce);
params.push_back(arg);
}
}
@@ -4936,8 +4936,7 @@ void AnimationTrackEditor::_move_selection_commit() {
}
// 6 - (undo) reinsert overlapped keys
- for (List<_AnimMoveRestore>::Element *E = to_restore.front(); E; E = E->next()) {
- _AnimMoveRestore &amr = E->get();
+ for (_AnimMoveRestore &amr : to_restore) {
undo_redo->add_undo_method(animation.ptr(), "track_insert_key", amr.track, amr.time, amr.key, amr.transition);
}
@@ -5151,9 +5150,9 @@ void AnimationTrackEditor::_anim_duplicate_keys(bool transpose) {
//reselect duplicated
Map<SelectedKey, KeyInfo> new_selection;
- for (List<Pair<int, float>>::Element *E = new_selection_values.front(); E; E = E->next()) {
- int track = E->get().first;
- float time = E->get().second;
+ for (const Pair<int, float> &E : new_selection_values) {
+ int track = E.first;
+ float time = E.second;
int existing_idx = animation->track_find_key(track, time, true);
@@ -5462,8 +5461,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
}
// 6-(undo) reinsert overlapped keys
- for (List<_AnimMoveRestore>::Element *E = to_restore.front(); E; E = E->next()) {
- _AnimMoveRestore &amr = E->get();
+ for (_AnimMoveRestore &amr : to_restore) {
undo_redo->add_undo_method(animation.ptr(), "track_insert_key", amr.track, amr.time, amr.key, amr.transition);
}
@@ -5543,8 +5541,8 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
if (cleanup_all->is_pressed()) {
List<StringName> names;
AnimationPlayerEditor::singleton->get_player()->get_animation_list(&names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- _cleanup_animation(AnimationPlayerEditor::singleton->get_player()->get_animation(E->get()));
+ for (const StringName &E : names) {
+ _cleanup_animation(AnimationPlayerEditor::singleton->get_player()->get_animation(E));
}
} else {
_cleanup_animation(animation);
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp
index b0ec346afe..eeb99b3677 100644
--- a/editor/code_editor.cpp
+++ b/editor/code_editor.cpp
@@ -31,6 +31,7 @@
#include "code_editor.h"
#include "core/input/input.h"
+#include "core/object/message_queue.h"
#include "core/os/keyboard.h"
#include "core/string/string_builder.h"
#include "editor/editor_scale.h"
@@ -854,9 +855,7 @@ void CodeTextEditor::_complete_request() {
return;
}
- for (List<ScriptCodeCompletionOption>::Element *E = entries.front(); E; E = E->next()) {
- ScriptCodeCompletionOption &e = E->get();
-
+ for (const ScriptCodeCompletionOption &e : entries) {
Color font_color = completion_font_color;
if (e.insert_text.begins_with("\"") || e.insert_text.begins_with("\'")) {
font_color = completion_string_color;
@@ -952,14 +951,20 @@ void CodeTextEditor::update_editor_settings() {
text_editor->set_line_folding_enabled(EditorSettings::get_singleton()->get("text_editor/appearance/code_folding"));
text_editor->set_draw_fold_gutter(EditorSettings::get_singleton()->get("text_editor/appearance/code_folding"));
text_editor->set_wrap_enabled(EditorSettings::get_singleton()->get("text_editor/appearance/word_wrap"));
- text_editor->set_show_line_length_guidelines(EditorSettings::get_singleton()->get("text_editor/appearance/show_line_length_guidelines"));
- text_editor->set_line_length_guideline_soft_column(EditorSettings::get_singleton()->get("text_editor/appearance/line_length_guideline_soft_column"));
- text_editor->set_line_length_guideline_hard_column(EditorSettings::get_singleton()->get("text_editor/appearance/line_length_guideline_hard_column"));
text_editor->set_scroll_pass_end_of_file(EditorSettings::get_singleton()->get("text_editor/cursor/scroll_past_end_of_file"));
text_editor->cursor_set_block_mode(EditorSettings::get_singleton()->get("text_editor/cursor/block_caret"));
text_editor->cursor_set_blink_enabled(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink"));
text_editor->cursor_set_blink_speed(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink_speed"));
- text_editor->set_auto_brace_completion(EditorSettings::get_singleton()->get("text_editor/completion/auto_brace_complete"));
+ text_editor->set_auto_brace_completion_enabled(EditorSettings::get_singleton()->get("text_editor/completion/auto_brace_complete"));
+
+ if (EditorSettings::get_singleton()->get("text_editor/appearance/show_line_length_guidelines")) {
+ TypedArray<int> guideline_cols;
+ guideline_cols.append(EditorSettings::get_singleton()->get("text_editor/appearance/line_length_guideline_hard_column"));
+ if (EditorSettings::get_singleton()->get("text_editor/appearance/line_length_guideline_soft_column") != guideline_cols[0]) {
+ guideline_cols.append(EditorSettings::get_singleton()->get("text_editor/appearance/line_length_guideline_soft_column"));
+ }
+ text_editor->set_line_length_guidelines(guideline_cols);
+ }
}
void CodeTextEditor::set_find_replace_bar(FindReplaceBar *p_bar) {
@@ -1569,6 +1574,17 @@ void CodeTextEditor::_update_font() {
}
void CodeTextEditor::_on_settings_change() {
+ if (settings_changed) {
+ return;
+ }
+
+ settings_changed = true;
+ MessageQueue::get_singleton()->push_callable(callable_mp(this, &CodeTextEditor::_apply_settings_change));
+}
+
+void CodeTextEditor::_apply_settings_change() {
+ settings_changed = false;
+
_update_text_editor_theme();
_update_font();
@@ -1599,16 +1615,9 @@ void CodeTextEditor::_on_settings_change() {
} break;
}
- // Auto brace completion.
- text_editor->set_auto_brace_completion(
- EDITOR_GET("text_editor/completion/auto_brace_complete"));
-
- code_complete_timer->set_wait_time(
- EDITOR_GET("text_editor/completion/code_complete_delay"));
-
- // Call hint settings.
text_editor->set_code_hint_draw_below(EDITOR_GET("text_editor/completion/put_callhint_tooltip_below_current_line"));
+ code_complete_timer->set_wait_time(EDITOR_GET("text_editor/completion/code_complete_delay"));
idle->set_wait_time(EDITOR_GET("text_editor/completion/idle_parse_delay"));
}
@@ -1822,7 +1831,7 @@ CodeTextEditor::CodeTextEditor() {
}
text_editor->set_draw_line_numbers(true);
- text_editor->set_brace_matching(true);
+ text_editor->set_highlight_matching_braces_enabled(true);
text_editor->set_auto_indent_enabled(true);
status_bar = memnew(HBoxContainer);
diff --git a/editor/code_editor.h b/editor/code_editor.h
index 0e5a84b3d5..4cd4880df0 100644
--- a/editor/code_editor.h
+++ b/editor/code_editor.h
@@ -162,7 +162,10 @@ class CodeTextEditor : public VBoxContainer {
int error_line;
int error_column;
+ bool settings_changed = false;
+
void _on_settings_change();
+ void _apply_settings_change();
void _update_text_editor_theme();
void _update_font();
diff --git a/editor/connections_dialog.cpp b/editor/connections_dialog.cpp
index c439d6a1d4..c773f51342 100644
--- a/editor/connections_dialog.cpp
+++ b/editor/connections_dialog.cpp
@@ -944,9 +944,7 @@ void ConnectionsDock::update_tree() {
node_signals2.sort();
}
- for (List<MethodInfo>::Element *E = node_signals2.front(); E; E = E->next()) {
- MethodInfo &mi = E->get();
-
+ for (MethodInfo &mi : node_signals2) {
StringName signal_name = mi.name;
String signaldesc = "(";
PackedStringArray argnames;
@@ -1025,8 +1023,8 @@ void ConnectionsDock::update_tree() {
List<Object::Connection> connections;
selectedNode->get_signal_connection_list(signal_name, &connections);
- for (List<Object::Connection>::Element *F = connections.front(); F; F = F->next()) {
- Connection cn = F->get();
+ for (const Object::Connection &F : connections) {
+ Connection cn = F;
if (!(cn.flags & CONNECT_PERSIST)) {
continue;
}
diff --git a/editor/create_dialog.cpp b/editor/create_dialog.cpp
index bfbd697409..3389b53317 100644
--- a/editor/create_dialog.cpp
+++ b/editor/create_dialog.cpp
@@ -447,8 +447,7 @@ Variant CreateDialog::instance_selected() {
List<PropertyInfo> pinfo;
((Object *)obj)->get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- PropertyInfo pi = E->get();
+ for (const PropertyInfo &pi : pinfo) {
if (pi.type == Variant::OBJECT && pi.usage & PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT) {
Object *prop = ClassDB::instantiate(pi.class_name);
((Object *)obj)->set(pi.name, prop);
diff --git a/editor/debugger/SCsub b/editor/debugger/SCsub
index 359d04e5df..99f1c888f0 100644
--- a/editor/debugger/SCsub
+++ b/editor/debugger/SCsub
@@ -3,3 +3,5 @@
Import("env")
env.add_source_files(env.editor_sources, "*.cpp")
+
+SConscript("debug_adapter/SCsub")
diff --git a/editor/debugger/debug_adapter/SCsub b/editor/debugger/debug_adapter/SCsub
new file mode 100644
index 0000000000..359d04e5df
--- /dev/null
+++ b/editor/debugger/debug_adapter/SCsub
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+
+Import("env")
+
+env.add_source_files(env.editor_sources, "*.cpp")
diff --git a/editor/debugger/debug_adapter/debug_adapter_parser.cpp b/editor/debugger/debug_adapter/debug_adapter_parser.cpp
new file mode 100644
index 0000000000..945291b163
--- /dev/null
+++ b/editor/debugger/debug_adapter/debug_adapter_parser.cpp
@@ -0,0 +1,425 @@
+/*************************************************************************/
+/* debug_adapter_parser.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "debug_adapter_parser.h"
+
+#include "editor/debugger/editor_debugger_node.h"
+#include "editor/debugger/script_editor_debugger.h"
+#include "editor/editor_node.h"
+
+void DebugAdapterParser::_bind_methods() {
+ // Requests
+ ClassDB::bind_method(D_METHOD("req_initialize", "params"), &DebugAdapterParser::req_initialize);
+ ClassDB::bind_method(D_METHOD("req_disconnect", "params"), &DebugAdapterParser::prepare_success_response);
+ ClassDB::bind_method(D_METHOD("req_launch", "params"), &DebugAdapterParser::req_launch);
+ ClassDB::bind_method(D_METHOD("req_terminate", "params"), &DebugAdapterParser::req_terminate);
+ ClassDB::bind_method(D_METHOD("req_configurationDone", "params"), &DebugAdapterParser::prepare_success_response);
+ ClassDB::bind_method(D_METHOD("req_pause", "params"), &DebugAdapterParser::req_pause);
+ ClassDB::bind_method(D_METHOD("req_continue", "params"), &DebugAdapterParser::req_continue);
+ ClassDB::bind_method(D_METHOD("req_threads", "params"), &DebugAdapterParser::req_threads);
+ ClassDB::bind_method(D_METHOD("req_stackTrace", "params"), &DebugAdapterParser::req_stackTrace);
+ ClassDB::bind_method(D_METHOD("req_setBreakpoints", "params"), &DebugAdapterParser::req_setBreakpoints);
+ ClassDB::bind_method(D_METHOD("req_scopes", "params"), &DebugAdapterParser::req_scopes);
+ ClassDB::bind_method(D_METHOD("req_variables", "params"), &DebugAdapterParser::req_variables);
+ ClassDB::bind_method(D_METHOD("req_next", "params"), &DebugAdapterParser::req_next);
+ ClassDB::bind_method(D_METHOD("req_stepIn", "params"), &DebugAdapterParser::req_stepIn);
+}
+
+Dictionary DebugAdapterParser::prepare_base_event() const {
+ Dictionary event;
+ event["type"] = "event";
+
+ return event;
+}
+
+Dictionary DebugAdapterParser::prepare_success_response(const Dictionary &p_params) const {
+ Dictionary response;
+ response["type"] = "response";
+ response["request_seq"] = p_params["seq"];
+ response["command"] = p_params["command"];
+ response["success"] = true;
+
+ return response;
+}
+
+Dictionary DebugAdapterParser::prepare_error_response(const Dictionary &p_params, DAP::ErrorType err_type, const Dictionary &variables) const {
+ Dictionary response, body;
+ response["type"] = "response";
+ response["request_seq"] = p_params["seq"];
+ response["command"] = p_params["command"];
+ response["success"] = false;
+ response["body"] = body;
+
+ DAP::Message message;
+ String error, error_desc;
+ switch (err_type) {
+ case DAP::ErrorType::UNKNOWN:
+ error = "unknown";
+ error_desc = "An unknown error has ocurred when processing the request.";
+ break;
+ case DAP::ErrorType::WRONG_PATH:
+ error = "wrong_path";
+ error_desc = "The editor and client are working on different paths; the client is on \"{clientPath}\", but the editor is on \"{editorPath}\"";
+ }
+
+ message.id = err_type;
+ message.format = error_desc;
+ message.variables = variables;
+ response["message"] = error;
+ body["error"] = message.to_json();
+
+ return response;
+}
+
+Dictionary DebugAdapterParser::req_initialize(const Dictionary &p_params) const {
+ Dictionary response = prepare_success_response(p_params);
+ Dictionary args = p_params["arguments"];
+
+ Ref<DAPeer> peer = DebugAdapterProtocol::get_singleton()->get_current_peer();
+
+ peer->linesStartAt1 = args.get("linesStartAt1", false);
+ peer->columnsStartAt1 = args.get("columnsStartAt1", false);
+ peer->supportsVariableType = args.get("supportsVariableType", false);
+ peer->supportsInvalidatedEvent = args.get("supportsInvalidatedEvent", false);
+
+ DAP::Capabilities caps;
+ response["body"] = caps.to_json();
+
+ DebugAdapterProtocol::get_singleton()->notify_initialized();
+
+ return response;
+}
+
+Dictionary DebugAdapterParser::req_launch(const Dictionary &p_params) {
+ Dictionary args = p_params["arguments"];
+ if (args.has("project") && !is_valid_path(args["project"])) {
+ Dictionary variables;
+ variables["clientPath"] = args["project"];
+ variables["editorPath"] = ProjectSettings::get_singleton()->get_resource_path();
+ return prepare_error_response(p_params, DAP::ErrorType::WRONG_PATH, variables);
+ }
+
+ ScriptEditorDebugger *dbg = EditorDebuggerNode::get_singleton()->get_default_debugger();
+ if ((bool)args["noDebug"] != dbg->is_skip_breakpoints()) {
+ dbg->debug_skip_breakpoints();
+ }
+
+ EditorNode::get_singleton()->run_play();
+ DebugAdapterProtocol::get_singleton()->notify_process();
+
+ return prepare_success_response(p_params);
+}
+
+Dictionary DebugAdapterParser::req_terminate(const Dictionary &p_params) const {
+ EditorNode::get_singleton()->run_stop();
+
+ return prepare_success_response(p_params);
+}
+
+Dictionary DebugAdapterParser::req_pause(const Dictionary &p_params) const {
+ EditorNode::get_singleton()->get_pause_button()->set_pressed(true);
+ EditorDebuggerNode::get_singleton()->_paused();
+
+ DebugAdapterProtocol::get_singleton()->notify_stopped_paused();
+
+ return prepare_success_response(p_params);
+}
+
+Dictionary DebugAdapterParser::req_continue(const Dictionary &p_params) const {
+ EditorNode::get_singleton()->get_pause_button()->set_pressed(false);
+ EditorDebuggerNode::get_singleton()->_paused();
+
+ DebugAdapterProtocol::get_singleton()->notify_continued();
+
+ return prepare_success_response(p_params);
+}
+
+Dictionary DebugAdapterParser::req_threads(const Dictionary &p_params) const {
+ Dictionary response = prepare_success_response(p_params), body;
+ response["body"] = body;
+
+ Array arr;
+ DAP::Thread thread;
+
+ thread.id = 1; // Hardcoded because Godot only supports debugging one thread at the moment
+ thread.name = "Main";
+ arr.push_back(thread.to_json());
+ body["threads"] = arr;
+
+ return response;
+}
+
+Dictionary DebugAdapterParser::req_stackTrace(const Dictionary &p_params) const {
+ if (DebugAdapterProtocol::get_singleton()->_processing_stackdump) {
+ return Dictionary();
+ }
+
+ Dictionary response = prepare_success_response(p_params), body;
+ response["body"] = body;
+
+ bool lines_at_one = DebugAdapterProtocol::get_singleton()->get_current_peer()->linesStartAt1;
+ bool columns_at_one = DebugAdapterProtocol::get_singleton()->get_current_peer()->columnsStartAt1;
+
+ Array arr;
+ DebugAdapterProtocol *dap = DebugAdapterProtocol::get_singleton();
+ for (Map<DAP::StackFrame, List<int>>::Element *E = dap->stackframe_list.front(); E; E = E->next()) {
+ DAP::StackFrame sf = E->key();
+ if (!lines_at_one) {
+ sf.line--;
+ }
+ if (!columns_at_one) {
+ sf.column--;
+ }
+
+ arr.push_back(sf.to_json());
+ }
+
+ body["stackFrames"] = arr;
+ return response;
+}
+
+Dictionary DebugAdapterParser::req_setBreakpoints(const Dictionary &p_params) {
+ Dictionary response = prepare_success_response(p_params), body;
+ response["body"] = body;
+
+ Dictionary args = p_params["arguments"];
+ DAP::Source source;
+ source.from_json(args["source"]);
+
+ bool lines_at_one = DebugAdapterProtocol::get_singleton()->get_current_peer()->linesStartAt1;
+
+ if (!is_valid_path(source.path)) {
+ Dictionary variables;
+ variables["clientPath"] = source.path;
+ variables["editorPath"] = ProjectSettings::get_singleton()->get_resource_path();
+ return prepare_error_response(p_params, DAP::ErrorType::WRONG_PATH, variables);
+ }
+
+ Array breakpoints = args["breakpoints"], lines;
+ for (int i = 0; i < breakpoints.size(); i++) {
+ DAP::SourceBreakpoint breakpoint;
+ breakpoint.from_json(breakpoints[i]);
+
+ lines.push_back(breakpoint.line + !lines_at_one);
+ }
+
+ EditorDebuggerNode::get_singleton()->set_breakpoints(ProjectSettings::get_singleton()->localize_path(source.path), lines);
+ Array updated_breakpoints = DebugAdapterProtocol::get_singleton()->update_breakpoints(source.path, lines);
+ body["breakpoints"] = updated_breakpoints;
+
+ return response;
+}
+
+Dictionary DebugAdapterParser::req_scopes(const Dictionary &p_params) {
+ Dictionary response = prepare_success_response(p_params), body;
+ response["body"] = body;
+
+ Dictionary args = p_params["arguments"];
+ int frame_id = args["frameId"];
+ Array scope_list;
+
+ DAP::StackFrame frame;
+ frame.id = frame_id;
+ Map<DAP::StackFrame, List<int>>::Element *E = DebugAdapterProtocol::get_singleton()->stackframe_list.find(frame);
+ if (E) {
+ ERR_FAIL_COND_V(E->value().size() != 3, prepare_error_response(p_params, DAP::ErrorType::UNKNOWN));
+ for (int i = 0; i < 3; i++) {
+ DAP::Scope scope;
+ scope.variablesReference = E->value()[i];
+ switch (i) {
+ case 0:
+ scope.name = "Locals";
+ scope.presentationHint = "locals";
+ break;
+ case 1:
+ scope.name = "Members";
+ scope.presentationHint = "members";
+ break;
+ case 2:
+ scope.name = "Globals";
+ scope.presentationHint = "globals";
+ }
+
+ scope_list.push_back(scope.to_json());
+ }
+ }
+
+ EditorDebuggerNode::get_singleton()->get_default_debugger()->request_stack_dump(frame_id);
+ DebugAdapterProtocol::get_singleton()->_current_frame = frame_id;
+
+ body["scopes"] = scope_list;
+ return response;
+}
+
+Dictionary DebugAdapterParser::req_variables(const Dictionary &p_params) const {
+ // If _remaining_vars > 0, the debugee is still sending a stack dump to the editor.
+ if (DebugAdapterProtocol::get_singleton()->_remaining_vars > 0) {
+ return Dictionary();
+ }
+
+ Dictionary response = prepare_success_response(p_params), body;
+ response["body"] = body;
+
+ Dictionary args = p_params["arguments"];
+ int variable_id = args["variablesReference"];
+
+ Map<int, Array>::Element *E = DebugAdapterProtocol::get_singleton()->variable_list.find(variable_id);
+ if (E) {
+ body["variables"] = E ? E->value() : Array();
+ return response;
+ } else {
+ return Dictionary();
+ }
+}
+
+Dictionary DebugAdapterParser::req_next(const Dictionary &p_params) const {
+ EditorDebuggerNode::get_singleton()->get_default_debugger()->debug_next();
+ DebugAdapterProtocol::get_singleton()->_stepping = true;
+
+ return prepare_success_response(p_params);
+}
+
+Dictionary DebugAdapterParser::req_stepIn(const Dictionary &p_params) const {
+ EditorDebuggerNode::get_singleton()->get_default_debugger()->debug_step();
+ DebugAdapterProtocol::get_singleton()->_stepping = true;
+
+ return prepare_success_response(p_params);
+}
+
+Dictionary DebugAdapterParser::ev_initialized() const {
+ Dictionary event = prepare_base_event();
+ event["event"] = "initialized";
+
+ return event;
+}
+
+Dictionary DebugAdapterParser::ev_process(const String &p_command) const {
+ Dictionary event = prepare_base_event(), body;
+ event["event"] = "process";
+ event["body"] = body;
+
+ body["name"] = OS::get_singleton()->get_executable_path();
+ body["startMethod"] = p_command;
+
+ return event;
+}
+
+Dictionary DebugAdapterParser::ev_terminated() const {
+ Dictionary event = prepare_base_event();
+ event["event"] = "terminated";
+
+ return event;
+}
+
+Dictionary DebugAdapterParser::ev_exited(const int &p_exitcode) const {
+ Dictionary event = prepare_base_event(), body;
+ event["event"] = "exited";
+ event["body"] = body;
+
+ body["exitCode"] = p_exitcode;
+
+ return event;
+}
+
+Dictionary DebugAdapterParser::ev_stopped() const {
+ Dictionary event = prepare_base_event(), body;
+ event["event"] = "stopped";
+ event["body"] = body;
+
+ body["threadId"] = 1;
+
+ return event;
+}
+
+Dictionary DebugAdapterParser::ev_stopped_paused() const {
+ Dictionary event = ev_stopped();
+ Dictionary body = event["body"];
+
+ body["reason"] = "paused";
+ body["description"] = "Paused";
+
+ return event;
+}
+
+Dictionary DebugAdapterParser::ev_stopped_exception(const String &p_error) const {
+ Dictionary event = ev_stopped();
+ Dictionary body = event["body"];
+
+ body["reason"] = "exception";
+ body["description"] = "Exception";
+ body["text"] = p_error;
+
+ return event;
+}
+
+Dictionary DebugAdapterParser::ev_stopped_breakpoint(const int &p_id) const {
+ Dictionary event = ev_stopped();
+ Dictionary body = event["body"];
+
+ body["reason"] = "breakpoint";
+ body["description"] = "Breakpoint";
+
+ Array breakpoints;
+ breakpoints.push_back(p_id);
+ body["hitBreakpointIds"] = breakpoints;
+
+ return event;
+}
+
+Dictionary DebugAdapterParser::ev_stopped_step() const {
+ Dictionary event = ev_stopped();
+ Dictionary body = event["body"];
+
+ body["reason"] = "step";
+ body["description"] = "Breakpoint";
+
+ return event;
+}
+
+Dictionary DebugAdapterParser::ev_continued() const {
+ Dictionary event = prepare_base_event(), body;
+ event["event"] = "continued";
+ event["body"] = body;
+
+ body["threadId"] = 1;
+
+ return event;
+}
+
+Dictionary DebugAdapterParser::ev_output(const String &p_message) const {
+ Dictionary event = prepare_base_event(), body;
+ event["event"] = "output";
+ event["body"] = body;
+
+ body["category"] = "stdout";
+ body["output"] = p_message + "\r\n";
+
+ return event;
+}
diff --git a/editor/debugger/debug_adapter/debug_adapter_parser.h b/editor/debugger/debug_adapter/debug_adapter_parser.h
new file mode 100644
index 0000000000..b86b37d067
--- /dev/null
+++ b/editor/debugger/debug_adapter/debug_adapter_parser.h
@@ -0,0 +1,88 @@
+/*************************************************************************/
+/* debug_adapter_parser.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef DEBUG_ADAPTER_PARSER_H
+#define DEBUG_ADAPTER_PARSER_H
+
+#include "core/config/project_settings.h"
+#include "debug_adapter_protocol.h"
+#include "debug_adapter_types.h"
+
+struct DAPeer;
+class DebugAdapterProtocol;
+
+class DebugAdapterParser : public Object {
+ GDCLASS(DebugAdapterParser, Object);
+
+private:
+ friend DebugAdapterProtocol;
+
+ _FORCE_INLINE_ bool is_valid_path(const String &p_path) {
+ return p_path.begins_with(ProjectSettings::get_singleton()->get_resource_path());
+ }
+
+protected:
+ static void _bind_methods();
+
+ Dictionary prepare_base_event() const;
+ Dictionary prepare_success_response(const Dictionary &p_params) const;
+ Dictionary prepare_error_response(const Dictionary &p_params, DAP::ErrorType err_type, const Dictionary &variables = Dictionary()) const;
+
+ Dictionary ev_stopped() const;
+
+public:
+ // Requests
+ Dictionary req_initialize(const Dictionary &p_params) const;
+ Dictionary req_launch(const Dictionary &p_params);
+ Dictionary req_terminate(const Dictionary &p_params) const;
+ Dictionary req_pause(const Dictionary &p_params) const;
+ Dictionary req_continue(const Dictionary &p_params) const;
+ Dictionary req_threads(const Dictionary &p_params) const;
+ Dictionary req_stackTrace(const Dictionary &p_params) const;
+ Dictionary req_setBreakpoints(const Dictionary &p_params);
+ Dictionary req_scopes(const Dictionary &p_params);
+ Dictionary req_variables(const Dictionary &p_params) const;
+ Dictionary req_next(const Dictionary &p_params) const;
+ Dictionary req_stepIn(const Dictionary &p_params) const;
+
+ // Events
+ Dictionary ev_initialized() const;
+ Dictionary ev_process(const String &p_command) const;
+ Dictionary ev_terminated() const;
+ Dictionary ev_exited(const int &p_exitcode) const;
+ Dictionary ev_stopped_paused() const;
+ Dictionary ev_stopped_exception(const String &p_error) const;
+ Dictionary ev_stopped_breakpoint(const int &p_id) const;
+ Dictionary ev_stopped_step() const;
+ Dictionary ev_continued() const;
+ Dictionary ev_output(const String &p_message) const;
+};
+
+#endif
diff --git a/editor/debugger/debug_adapter/debug_adapter_protocol.cpp b/editor/debugger/debug_adapter/debug_adapter_protocol.cpp
new file mode 100644
index 0000000000..0482271432
--- /dev/null
+++ b/editor/debugger/debug_adapter/debug_adapter_protocol.cpp
@@ -0,0 +1,497 @@
+/*************************************************************************/
+/* debug_adapter_protocol.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "debug_adapter_protocol.h"
+
+#include "core/config/project_settings.h"
+#include "core/debugger/debugger_marshalls.h"
+#include "core/io/json.h"
+#include "editor/debugger/script_editor_debugger.h"
+#include "editor/doc_tools.h"
+#include "editor/editor_log.h"
+#include "editor/editor_node.h"
+
+DebugAdapterProtocol *DebugAdapterProtocol::singleton = nullptr;
+
+Error DAPeer::handle_data() {
+ int read = 0;
+ // Read headers
+ if (!has_header) {
+ if (!connection->get_available_bytes()) {
+ return OK;
+ }
+ while (true) {
+ if (req_pos >= DAP_MAX_BUFFER_SIZE) {
+ req_pos = 0;
+ ERR_FAIL_COND_V_MSG(true, ERR_OUT_OF_MEMORY, "Response header too big");
+ }
+ Error err = connection->get_partial_data(&req_buf[req_pos], 1, read);
+ if (err != OK) {
+ return FAILED;
+ } else if (read != 1) { // Busy, wait until next poll
+ return ERR_BUSY;
+ }
+ char *r = (char *)req_buf;
+ int l = req_pos;
+
+ // End of headers
+ if (l > 3 && r[l] == '\n' && r[l - 1] == '\r' && r[l - 2] == '\n' && r[l - 3] == '\r') {
+ r[l - 3] = '\0'; // Null terminate to read string
+ String header;
+ header.parse_utf8(r);
+ content_length = header.substr(16).to_int();
+ has_header = true;
+ req_pos = 0;
+ break;
+ }
+ req_pos++;
+ }
+ }
+ if (has_header) {
+ while (req_pos < content_length) {
+ if (content_length >= DAP_MAX_BUFFER_SIZE) {
+ req_pos = 0;
+ has_header = false;
+ ERR_FAIL_COND_V_MSG(req_pos >= DAP_MAX_BUFFER_SIZE, ERR_OUT_OF_MEMORY, "Response content too big");
+ }
+ Error err = connection->get_partial_data(&req_buf[req_pos], content_length - req_pos, read);
+ if (err != OK) {
+ return FAILED;
+ } else if (read < content_length - req_pos) {
+ return ERR_BUSY;
+ }
+ req_pos += read;
+ }
+
+ // Parse data
+ String msg;
+ msg.parse_utf8((const char *)req_buf, req_pos);
+
+ // Response
+ if (DebugAdapterProtocol::get_singleton()->process_message(msg)) {
+ // Reset to read again
+ req_pos = 0;
+ has_header = false;
+ }
+ }
+ return OK;
+}
+
+Error DAPeer::send_data() {
+ while (res_queue.size()) {
+ Dictionary data = res_queue.front()->get();
+ if (!data.has("seq")) {
+ data["seq"] = ++seq;
+ }
+ String formatted_data = format_output(data);
+
+ int data_sent = 0;
+ while (data_sent < formatted_data.length()) {
+ int curr_sent = 0;
+ Error err = connection->put_partial_data((const uint8_t *)formatted_data.utf8().get_data(), formatted_data.size() - data_sent - 1, curr_sent);
+ if (err != OK) {
+ return err;
+ }
+ data_sent += curr_sent;
+ }
+ res_queue.pop_front();
+ }
+ return OK;
+}
+
+String DAPeer::format_output(const Dictionary &p_params) const {
+ String response = Variant(p_params).to_json_string();
+ String header = "Content-Length: ";
+ CharString charstr = response.utf8();
+ size_t len = charstr.length();
+ header += itos(len);
+ header += "\r\n\r\n";
+
+ return header + response;
+}
+
+Error DebugAdapterProtocol::on_client_connected() {
+ ERR_FAIL_COND_V_MSG(clients.size() >= DAP_MAX_CLIENTS, FAILED, "Max client limits reached");
+
+ Ref<StreamPeerTCP> tcp_peer = server->take_connection();
+ tcp_peer->set_no_delay(true);
+ Ref<DAPeer> peer = memnew(DAPeer);
+ peer->connection = tcp_peer;
+ clients.push_back(peer);
+
+ EditorDebuggerNode::get_singleton()->get_default_debugger()->set_move_to_foreground(false);
+ EditorNode::get_log()->add_message("[DAP] Connection Taken", EditorLog::MSG_TYPE_EDITOR);
+ return OK;
+}
+
+void DebugAdapterProtocol::on_client_disconnected(const Ref<DAPeer> &p_peer) {
+ clients.erase(p_peer);
+ if (!clients.size()) {
+ reset_ids();
+ EditorDebuggerNode::get_singleton()->get_default_debugger()->set_move_to_foreground(true);
+ }
+ EditorNode::get_log()->add_message("[DAP] Disconnected", EditorLog::MSG_TYPE_EDITOR);
+}
+
+void DebugAdapterProtocol::reset_current_info() {
+ _current_request = "";
+ _current_peer.unref();
+}
+
+void DebugAdapterProtocol::reset_ids() {
+ breakpoint_id = 0;
+ breakpoint_list.clear();
+
+ reset_stack_info();
+}
+
+void DebugAdapterProtocol::reset_stack_info() {
+ stackframe_id = 0;
+ variable_id = 1;
+
+ stackframe_list.clear();
+ variable_list.clear();
+}
+
+bool DebugAdapterProtocol::process_message(const String &p_text) {
+ JSON json;
+ ERR_FAIL_COND_V_MSG(json.parse(p_text) != OK, true, "Mal-formed message!");
+ Dictionary params = json.get_data();
+ bool completed = true;
+
+ // Append "req_" to any command received; prevents name clash with existing functions, and possibly exploiting
+ String command = "req_" + (String)params["command"];
+ if (parser->has_method(command)) {
+ _current_request = params["command"];
+
+ Array args;
+ args.push_back(params);
+ Dictionary response = parser->callv(command, args);
+ if (!response.is_empty()) {
+ _current_peer->res_queue.push_front(response);
+ } else {
+ completed = false;
+ }
+ }
+
+ reset_current_info();
+ return completed;
+}
+
+void DebugAdapterProtocol::notify_initialized() {
+ Dictionary event = parser->ev_initialized();
+ _current_peer->res_queue.push_back(event);
+}
+
+void DebugAdapterProtocol::notify_process() {
+ String launch_mode = _current_request.is_empty() ? "launch" : _current_request;
+
+ Dictionary event = parser->ev_process(launch_mode);
+ for (List<Ref<DAPeer>>::Element *E = clients.front(); E; E = E->next()) {
+ E->get()->res_queue.push_back(event);
+ }
+}
+
+void DebugAdapterProtocol::notify_terminated() {
+ Dictionary event = parser->ev_terminated();
+ for (List<Ref<DAPeer>>::Element *E = clients.front(); E; E = E->next()) {
+ if (_current_request == "launch" && _current_peer == E->get()) {
+ continue;
+ }
+ E->get()->res_queue.push_back(event);
+ }
+}
+
+void DebugAdapterProtocol::notify_exited(const int &p_exitcode) {
+ Dictionary event = parser->ev_exited(p_exitcode);
+ for (List<Ref<DAPeer>>::Element *E = clients.front(); E; E = E->next()) {
+ if (_current_request == "launch" && _current_peer == E->get()) {
+ continue;
+ }
+ E->get()->res_queue.push_back(event);
+ }
+}
+
+void DebugAdapterProtocol::notify_stopped_paused() {
+ Dictionary event = parser->ev_stopped_paused();
+ for (List<Ref<DAPeer>>::Element *E = clients.front(); E; E = E->next()) {
+ E->get()->res_queue.push_back(event);
+ }
+}
+
+void DebugAdapterProtocol::notify_stopped_exception(const String &p_error) {
+ Dictionary event = parser->ev_stopped_exception(p_error);
+ for (List<Ref<DAPeer>>::Element *E = clients.front(); E; E = E->next()) {
+ E->get()->res_queue.push_back(event);
+ }
+}
+
+void DebugAdapterProtocol::notify_stopped_breakpoint(const int &p_id) {
+ Dictionary event = parser->ev_stopped_breakpoint(p_id);
+ for (List<Ref<DAPeer>>::Element *E = clients.front(); E; E = E->next()) {
+ E->get()->res_queue.push_back(event);
+ }
+}
+
+void DebugAdapterProtocol::notify_stopped_step() {
+ Dictionary event = parser->ev_stopped_step();
+ for (List<Ref<DAPeer>>::Element *E = clients.front(); E; E = E->next()) {
+ E->get()->res_queue.push_back(event);
+ }
+}
+
+void DebugAdapterProtocol::notify_continued() {
+ Dictionary event = parser->ev_continued();
+ for (List<Ref<DAPeer>>::Element *E = clients.front(); E; E = E->next()) {
+ if (_current_request == "continue" && E->get() == _current_peer) {
+ continue;
+ }
+ E->get()->res_queue.push_back(event);
+ }
+
+ reset_stack_info();
+}
+
+void DebugAdapterProtocol::notify_output(const String &p_message) {
+ Dictionary event = parser->ev_output(p_message);
+ for (List<Ref<DAPeer>>::Element *E = clients.front(); E; E = E->next()) {
+ E->get()->res_queue.push_back(event);
+ }
+}
+
+Array DebugAdapterProtocol::update_breakpoints(const String &p_path, const Array &p_lines) {
+ Array updated_breakpoints;
+
+ for (int i = 0; i < p_lines.size(); i++) {
+ DAP::Breakpoint breakpoint;
+ breakpoint.verified = true;
+ breakpoint.source.path = p_path;
+ breakpoint.source.compute_checksums();
+ breakpoint.line = p_lines[i];
+
+ List<DAP::Breakpoint>::Element *E = breakpoint_list.find(breakpoint);
+ if (E) {
+ breakpoint.id = E->get().id;
+ } else {
+ breakpoint.id = breakpoint_id++;
+ breakpoint_list.push_back(breakpoint);
+ }
+
+ updated_breakpoints.push_back(breakpoint.to_json());
+ }
+
+ return updated_breakpoints;
+}
+
+void DebugAdapterProtocol::on_debug_paused() {
+ if (EditorNode::get_singleton()->get_pause_button()->is_pressed()) {
+ notify_stopped_paused();
+ } else {
+ notify_continued();
+ }
+}
+
+void DebugAdapterProtocol::on_debug_stopped() {
+ notify_exited();
+ notify_terminated();
+}
+
+void DebugAdapterProtocol::on_debug_output(const String &p_message) {
+ notify_output(p_message);
+}
+
+void DebugAdapterProtocol::on_debug_breaked(const bool &p_reallydid, const bool &p_can_debug, const String &p_reason, const bool &p_has_stackdump) {
+ if (!p_reallydid) {
+ notify_continued();
+ return;
+ }
+
+ if (p_reason == "Breakpoint") {
+ if (_stepping) {
+ notify_stopped_step();
+ _stepping = false;
+ } else {
+ _processing_breakpoint = true; // Wait for stack_dump to find where the breakpoint happened
+ }
+ } else {
+ notify_stopped_exception(p_reason);
+ }
+
+ _processing_stackdump = p_has_stackdump;
+}
+
+void DebugAdapterProtocol::on_debug_stack_dump(const Array &p_stack_dump) {
+ if (_processing_breakpoint && !p_stack_dump.is_empty()) {
+ // Find existing breakpoint
+ Dictionary d = p_stack_dump[0];
+ DAP::Breakpoint breakpoint;
+ breakpoint.source.path = ProjectSettings::get_singleton()->globalize_path(d["file"]);
+ breakpoint.line = d["line"];
+
+ List<DAP::Breakpoint>::Element *E = breakpoint_list.find(breakpoint);
+ if (E) {
+ notify_stopped_breakpoint(E->get().id);
+ }
+
+ _processing_breakpoint = false;
+ }
+
+ stackframe_id = 0;
+ stackframe_list.clear();
+
+ // Fill in stacktrace information
+ for (int i = 0; i < p_stack_dump.size(); i++) {
+ Dictionary stack_info = p_stack_dump[i];
+ DAP::StackFrame stackframe;
+ stackframe.id = stackframe_id++;
+ stackframe.name = stack_info["function"];
+ stackframe.line = stack_info["line"];
+ stackframe.column = 0;
+ stackframe.source.path = ProjectSettings::get_singleton()->globalize_path(stack_info["file"]);
+ stackframe.source.compute_checksums();
+
+ // Information for "Locals", "Members" and "Globals" variables respectively
+ List<int> scope_ids;
+ for (int j = 0; j < 3; j++) {
+ scope_ids.push_back(variable_id++);
+ }
+
+ stackframe_list.insert(stackframe, scope_ids);
+ }
+
+ _current_frame = 0;
+ _processing_stackdump = false;
+}
+
+void DebugAdapterProtocol::on_debug_stack_frame_vars(const int &p_size) {
+ _remaining_vars = p_size;
+ DAP::StackFrame frame;
+ frame.id = _current_frame;
+ ERR_FAIL_COND(!stackframe_list.has(frame));
+ List<int> scope_ids = stackframe_list.find(frame)->value();
+ for (List<int>::Element *E = scope_ids.front(); E; E = E->next()) {
+ int variable_id = E->get();
+ if (variable_list.has(variable_id)) {
+ variable_list.find(variable_id)->value().clear();
+ } else {
+ variable_list.insert(variable_id, Array());
+ }
+ }
+}
+
+void DebugAdapterProtocol::on_debug_stack_frame_var(const Array &p_data) {
+ DebuggerMarshalls::ScriptStackVariable stack_var;
+ stack_var.deserialize(p_data);
+
+ ERR_FAIL_COND(stackframe_list.is_empty());
+ DAP::StackFrame frame;
+ frame.id = _current_frame;
+
+ List<int> scope_ids = stackframe_list.find(frame)->value();
+ ERR_FAIL_COND(scope_ids.size() != 3);
+ ERR_FAIL_INDEX(stack_var.type, 3);
+ int variable_id = scope_ids[stack_var.type];
+
+ DAP::Variable variable;
+
+ variable.name = stack_var.name;
+ variable.value = stack_var.value;
+ variable.type = Variant::get_type_name(stack_var.value.get_type());
+
+ variable_list.find(variable_id)->value().push_back(variable.to_json());
+ _remaining_vars--;
+}
+
+void DebugAdapterProtocol::poll() {
+ if (server->is_connection_available()) {
+ on_client_connected();
+ }
+ List<Ref<DAPeer>> to_delete;
+ for (List<Ref<DAPeer>>::Element *E = clients.front(); E; E = E->next()) {
+ Ref<DAPeer> peer = E->get();
+ StreamPeerTCP::Status status = peer->connection->get_status();
+ if (status == StreamPeerTCP::STATUS_NONE || status == StreamPeerTCP::STATUS_ERROR) {
+ to_delete.push_back(peer);
+ } else {
+ _current_peer = peer;
+ Error err = peer->handle_data();
+ if (err != OK && err != ERR_BUSY) {
+ to_delete.push_back(peer);
+ }
+ err = peer->send_data();
+ if (err != OK && err != ERR_BUSY) {
+ to_delete.push_back(peer);
+ }
+ }
+ }
+
+ for (List<Ref<DAPeer>>::Element *E = to_delete.front(); E; E = E->next()) {
+ on_client_disconnected(E->get());
+ }
+ to_delete.clear();
+}
+
+Error DebugAdapterProtocol::start(int p_port, const IPAddress &p_bind_ip) {
+ _initialized = true;
+ return server->listen(p_port, p_bind_ip);
+}
+
+void DebugAdapterProtocol::stop() {
+ for (List<Ref<DAPeer>>::Element *E = clients.front(); E; E = E->next()) {
+ E->get()->connection->disconnect_from_host();
+ }
+
+ clients.clear();
+ server->stop();
+ _initialized = false;
+}
+
+DebugAdapterProtocol::DebugAdapterProtocol() {
+ server.instantiate();
+ singleton = this;
+ parser = memnew(DebugAdapterParser);
+
+ reset_ids();
+
+ EditorNode *node = EditorNode::get_singleton();
+ node->get_pause_button()->connect("pressed", callable_mp(this, &DebugAdapterProtocol::on_debug_paused));
+
+ EditorDebuggerNode *debugger_node = EditorDebuggerNode::get_singleton();
+ debugger_node->get_default_debugger()->connect("stopped", callable_mp(this, &DebugAdapterProtocol::on_debug_stopped));
+ debugger_node->get_default_debugger()->connect("output", callable_mp(this, &DebugAdapterProtocol::on_debug_output));
+ debugger_node->get_default_debugger()->connect("breaked", callable_mp(this, &DebugAdapterProtocol::on_debug_breaked));
+ debugger_node->get_default_debugger()->connect("stack_dump", callable_mp(this, &DebugAdapterProtocol::on_debug_stack_dump));
+ debugger_node->get_default_debugger()->connect("stack_frame_vars", callable_mp(this, &DebugAdapterProtocol::on_debug_stack_frame_vars));
+ debugger_node->get_default_debugger()->connect("stack_frame_var", callable_mp(this, &DebugAdapterProtocol::on_debug_stack_frame_var));
+}
+
+DebugAdapterProtocol::~DebugAdapterProtocol() {
+ memdelete(parser);
+}
diff --git a/editor/debugger/debug_adapter/debug_adapter_protocol.h b/editor/debugger/debug_adapter/debug_adapter_protocol.h
new file mode 100644
index 0000000000..6b542033ed
--- /dev/null
+++ b/editor/debugger/debug_adapter/debug_adapter_protocol.h
@@ -0,0 +1,140 @@
+/*************************************************************************/
+/* debug_adapter_protocol.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef DEBUG_ADAPTER_PROTOCOL_H
+#define DEBUG_ADAPTER_PROTOCOL_H
+
+#include "core/io/stream_peer.h"
+#include "core/io/stream_peer_tcp.h"
+#include "core/io/tcp_server.h"
+
+#include "debug_adapter_parser.h"
+#include "debug_adapter_types.h"
+
+#define DAP_MAX_BUFFER_SIZE 4194304 // 4MB
+#define DAP_MAX_CLIENTS 8
+
+class DebugAdapterParser;
+
+struct DAPeer : RefCounted {
+ Ref<StreamPeerTCP> connection;
+
+ uint8_t req_buf[DAP_MAX_BUFFER_SIZE];
+ int req_pos = 0;
+ bool has_header = false;
+ int content_length = 0;
+ List<Dictionary> res_queue;
+ int seq = 0;
+
+ // Client specific info
+ bool linesStartAt1 = false;
+ bool columnsStartAt1 = false;
+ bool supportsVariableType = false;
+ bool supportsInvalidatedEvent = false;
+
+ Error handle_data();
+ Error send_data();
+ String format_output(const Dictionary &p_params) const;
+};
+
+class DebugAdapterProtocol : public Object {
+ GDCLASS(DebugAdapterProtocol, Object)
+
+ friend class DebugAdapterParser;
+
+private:
+ static DebugAdapterProtocol *singleton;
+ DebugAdapterParser *parser;
+
+ List<Ref<DAPeer>> clients;
+ Ref<TCPServer> server;
+
+ Error on_client_connected();
+ void on_client_disconnected(const Ref<DAPeer> &p_peer);
+ void on_debug_paused();
+ void on_debug_stopped();
+ void on_debug_output(const String &p_message);
+ void on_debug_breaked(const bool &p_reallydid, const bool &p_can_debug, const String &p_reason, const bool &p_has_stackdump);
+ void on_debug_stack_dump(const Array &p_stack_dump);
+ void on_debug_stack_frame_vars(const int &p_size);
+ void on_debug_stack_frame_var(const Array &p_data);
+
+ void reset_current_info();
+ void reset_ids();
+ void reset_stack_info();
+
+ bool _initialized = false;
+ bool _processing_breakpoint = false;
+ bool _stepping = false;
+ bool _processing_stackdump = false;
+ int _remaining_vars = 0;
+ int _current_frame = 0;
+
+ String _current_request;
+ Ref<DAPeer> _current_peer;
+
+ int breakpoint_id;
+ int stackframe_id;
+ int variable_id;
+ List<DAP::Breakpoint> breakpoint_list;
+ Map<DAP::StackFrame, List<int>> stackframe_list;
+ Map<int, Array> variable_list;
+
+public:
+ _FORCE_INLINE_ static DebugAdapterProtocol *get_singleton() { return singleton; }
+ _FORCE_INLINE_ bool is_active() const { return _initialized && clients.size() > 0; }
+
+ bool process_message(const String &p_text);
+
+ String get_current_request() const { return _current_request; }
+ Ref<DAPeer> get_current_peer() const { return _current_peer; }
+
+ void notify_initialized();
+ void notify_process();
+ void notify_terminated();
+ void notify_exited(const int &p_exitcode = 0);
+ void notify_stopped_paused();
+ void notify_stopped_exception(const String &p_error);
+ void notify_stopped_breakpoint(const int &p_id);
+ void notify_stopped_step();
+ void notify_continued();
+ void notify_output(const String &p_message);
+
+ Array update_breakpoints(const String &p_path, const Array &p_breakpoints);
+
+ void poll();
+ Error start(int p_port, const IPAddress &p_bind_ip);
+ void stop();
+
+ DebugAdapterProtocol();
+ ~DebugAdapterProtocol();
+};
+
+#endif
diff --git a/editor/debugger/debug_adapter/debug_adapter_server.cpp b/editor/debugger/debug_adapter/debug_adapter_server.cpp
new file mode 100644
index 0000000000..f9092a1791
--- /dev/null
+++ b/editor/debugger/debug_adapter/debug_adapter_server.cpp
@@ -0,0 +1,102 @@
+/*************************************************************************/
+/* debug_adapter_server.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "debug_adapter_server.h"
+
+#include "core/os/os.h"
+#include "editor/editor_log.h"
+#include "editor/editor_node.h"
+
+DebugAdapterServer::DebugAdapterServer() {
+ _EDITOR_DEF("network/debug_adapter/remote_port", remote_port);
+ _EDITOR_DEF("network/debug_adapter/use_thread", use_thread);
+}
+
+void DebugAdapterServer::_notification(int p_what) {
+ switch (p_what) {
+ case NOTIFICATION_ENTER_TREE:
+ start();
+ break;
+ case NOTIFICATION_EXIT_TREE:
+ stop();
+ break;
+ case NOTIFICATION_INTERNAL_PROCESS: {
+ // The main loop can be run again during request processing, which modifies internal state of the protocol.
+ // Thus, "polling" is needed to prevent it from parsing other requests while the current one isn't finished.
+ if (started && !use_thread && !polling) {
+ polling = true;
+ protocol.poll();
+ polling = false;
+ }
+ } break;
+ case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
+ int remote_port = (int)_EDITOR_GET("network/debug_adapter/remote_port");
+ bool use_thread = (bool)_EDITOR_GET("network/debug_adapter/use_thread");
+ if (remote_port != this->remote_port || use_thread != this->use_thread) {
+ this->stop();
+ this->start();
+ }
+ } break;
+ }
+}
+
+void DebugAdapterServer::thread_func(void *p_userdata) {
+ DebugAdapterServer *self = static_cast<DebugAdapterServer *>(p_userdata);
+ while (self->thread_running) {
+ // Poll 20 times per second
+ self->protocol.poll();
+ OS::get_singleton()->delay_usec(50000);
+ }
+}
+
+void DebugAdapterServer::start() {
+ remote_port = (int)_EDITOR_GET("network/debug_adapter/remote_port");
+ use_thread = (bool)_EDITOR_GET("network/debug_adapter/use_thread");
+ if (protocol.start(remote_port, IPAddress("127.0.0.1")) == OK) {
+ EditorNode::get_log()->add_message("--- Debug adapter server started ---", EditorLog::MSG_TYPE_EDITOR);
+ if (use_thread) {
+ thread_running = true;
+ thread.start(DebugAdapterServer::thread_func, this);
+ }
+ set_process_internal(!use_thread);
+ started = true;
+ }
+}
+
+void DebugAdapterServer::stop() {
+ if (use_thread) {
+ ERR_FAIL_COND(!thread.is_started());
+ thread_running = false;
+ thread.wait_to_finish();
+ }
+ protocol.stop();
+ started = false;
+ EditorNode::get_log()->add_message("--- Debug adapter server stopped ---", EditorLog::MSG_TYPE_EDITOR);
+}
diff --git a/editor/debugger/debug_adapter/debug_adapter_server.h b/editor/debugger/debug_adapter/debug_adapter_server.h
new file mode 100644
index 0000000000..f8a38965cc
--- /dev/null
+++ b/editor/debugger/debug_adapter/debug_adapter_server.h
@@ -0,0 +1,59 @@
+/*************************************************************************/
+/* debug_adapter_server.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef DEBUG_ADAPTER_SERVER_H
+#define DEBUG_ADAPTER_SERVER_H
+
+#include "debug_adapter_protocol.h"
+#include "editor/editor_plugin.h"
+
+class DebugAdapterServer : public EditorPlugin {
+ GDCLASS(DebugAdapterServer, EditorPlugin);
+
+ DebugAdapterProtocol protocol;
+
+ Thread thread;
+ int remote_port = 6006;
+ bool thread_running = false;
+ bool started = false;
+ bool use_thread = false;
+ bool polling = false;
+ static void thread_func(void *p_userdata);
+
+private:
+ void _notification(int p_what);
+
+public:
+ DebugAdapterServer();
+ void start();
+ void stop();
+};
+
+#endif
diff --git a/editor/debugger/debug_adapter/debug_adapter_types.h b/editor/debugger/debug_adapter/debug_adapter_types.h
new file mode 100644
index 0000000000..aa9ab1adcd
--- /dev/null
+++ b/editor/debugger/debug_adapter/debug_adapter_types.h
@@ -0,0 +1,270 @@
+/*************************************************************************/
+/* debug_adapter_types.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef DEBUG_ADAPTER_TYPES_H
+#define DEBUG_ADAPTER_TYPES_H
+
+#include "core/io/json.h"
+#include "core/variant/dictionary.h"
+
+namespace DAP {
+
+enum ErrorType {
+ UNKNOWN,
+ WRONG_PATH
+};
+
+struct Checksum {
+ String algorithm;
+ String checksum;
+
+ _FORCE_INLINE_ Dictionary to_json() const {
+ Dictionary dict;
+ dict["algorithm"] = algorithm;
+ dict["checksum"] = checksum;
+
+ return dict;
+ }
+};
+
+struct Source {
+private:
+ Array _checksums;
+
+public:
+ String name;
+ String path;
+
+ void compute_checksums() {
+ ERR_FAIL_COND(path.is_empty());
+
+ // MD5
+ Checksum md5;
+ md5.algorithm = "MD5";
+ md5.checksum = FileAccess::get_md5(path);
+
+ // SHA-256
+ Checksum sha256;
+ sha256.algorithm = "SHA256";
+ sha256.checksum = FileAccess::get_sha256(path);
+
+ _checksums.push_back(md5.to_json());
+ _checksums.push_back(sha256.to_json());
+ }
+
+ _FORCE_INLINE_ void from_json(const Dictionary &p_params) {
+ name = p_params["name"];
+ path = p_params["path"];
+ _checksums = p_params["checksums"];
+ }
+
+ _FORCE_INLINE_ Dictionary to_json() const {
+ Dictionary dict;
+ dict["name"] = name;
+ dict["path"] = path;
+ dict["checksums"] = _checksums;
+
+ return dict;
+ }
+};
+
+struct Breakpoint {
+ int id;
+ bool verified;
+ Source source;
+ int line;
+
+ bool operator==(const Breakpoint &p_other) const {
+ return source.path == p_other.source.path && line == p_other.line;
+ }
+
+ _FORCE_INLINE_ Dictionary to_json() const {
+ Dictionary dict;
+ dict["id"] = id;
+ dict["verified"] = verified;
+ dict["source"] = source.to_json();
+ dict["line"] = line;
+
+ return dict;
+ }
+};
+
+struct BreakpointLocation {
+ int line;
+
+ _FORCE_INLINE_ Dictionary to_json() const {
+ Dictionary dict;
+ dict["line"] = line;
+
+ return dict;
+ }
+};
+
+struct Capabilities {
+ bool supportsConfigurationDoneRequest = true;
+ bool supportsEvaluateForHovers = true;
+ bool supportsSetVariable = true;
+ String supportedChecksumAlgorithms[2] = { "MD5", "SHA256" };
+ bool supportsRestartRequest = true;
+ bool supportsValueFormattingOptions = true;
+ bool supportTerminateDebuggee = true;
+ bool supportSuspendDebuggee = true;
+ bool supportsTerminateRequest = true;
+ bool supportsBreakpointLocationsRequest = true;
+
+ _FORCE_INLINE_ Dictionary to_json() const {
+ Dictionary dict;
+ dict["supportsConfigurationDoneRequest"] = supportsConfigurationDoneRequest;
+ dict["supportsEvaluateForHovers"] = supportsEvaluateForHovers;
+ dict["supportsSetVariable"] = supportsSetVariable;
+ dict["supportsRestartRequest"] = supportsRestartRequest;
+ dict["supportsValueFormattingOptions"] = supportsValueFormattingOptions;
+ dict["supportTerminateDebuggee"] = supportTerminateDebuggee;
+ dict["supportSuspendDebuggee"] = supportSuspendDebuggee;
+ dict["supportsTerminateRequest"] = supportsTerminateRequest;
+ dict["supportsBreakpointLocationsRequest"] = supportsBreakpointLocationsRequest;
+
+ Array arr;
+ arr.push_back(supportedChecksumAlgorithms[0]);
+ arr.push_back(supportedChecksumAlgorithms[1]);
+ dict["supportedChecksumAlgorithms"] = arr;
+
+ return dict;
+ }
+};
+
+struct Message {
+ int id;
+ String format;
+ bool sendTelemetry = false; // Just in case :)
+ bool showUser;
+ Dictionary variables;
+
+ _FORCE_INLINE_ Dictionary to_json() const {
+ Dictionary dict;
+ dict["id"] = id;
+ dict["format"] = format;
+ dict["sendTelemetry"] = sendTelemetry;
+ dict["showUser"] = showUser;
+ dict["variables"] = variables;
+
+ return dict;
+ }
+};
+
+struct Scope {
+ String name;
+ String presentationHint;
+ int variablesReference;
+ bool expensive;
+
+ _FORCE_INLINE_ Dictionary to_json() const {
+ Dictionary dict;
+ dict["name"] = name;
+ dict["presentationHint"] = presentationHint;
+ dict["variablesReference"] = variablesReference;
+ dict["expensive"] = expensive;
+
+ return dict;
+ }
+};
+
+struct SourceBreakpoint {
+ int line;
+
+ _FORCE_INLINE_ void from_json(const Dictionary &p_params) {
+ line = p_params["line"];
+ }
+};
+
+struct StackFrame {
+ int id;
+ String name;
+ Source source;
+ int line;
+ int column;
+
+ bool operator<(const StackFrame &p_other) const {
+ return id < p_other.id;
+ }
+
+ _FORCE_INLINE_ void from_json(const Dictionary &p_params) {
+ id = p_params["id"];
+ name = p_params["name"];
+ source.from_json(p_params["source"]);
+ line = p_params["line"];
+ column = p_params["column"];
+ }
+
+ _FORCE_INLINE_ Dictionary to_json() const {
+ Dictionary dict;
+ dict["id"] = id;
+ dict["name"] = name;
+ dict["source"] = source.to_json();
+ dict["line"] = line;
+ dict["column"] = column;
+
+ return dict;
+ }
+};
+
+struct Thread {
+ int id;
+ String name;
+
+ _FORCE_INLINE_ Dictionary to_json() const {
+ Dictionary dict;
+ dict["id"] = id;
+ dict["name"] = name;
+
+ return dict;
+ }
+};
+
+struct Variable {
+ String name;
+ String value;
+ String type;
+ int variablesReference = 0;
+
+ _FORCE_INLINE_ Dictionary to_json() const {
+ Dictionary dict;
+ dict["name"] = name;
+ dict["value"] = value;
+ dict["type"] = type;
+ dict["variablesReference"] = variablesReference;
+
+ return dict;
+ }
+};
+
+} // namespace DAP
+
+#endif
diff --git a/editor/debugger/editor_debugger_inspector.cpp b/editor/debugger/editor_debugger_inspector.cpp
index a629bf6159..a1eb71235c 100644
--- a/editor/debugger/editor_debugger_inspector.cpp
+++ b/editor/debugger/editor_debugger_inspector.cpp
@@ -56,8 +56,8 @@ bool EditorDebuggerRemoteObject::_get(const StringName &p_name, Variant &r_ret)
void EditorDebuggerRemoteObject::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->clear(); //sorry, no want category
- for (const List<PropertyInfo>::Element *E = prop_list.front(); E; E = E->next()) {
- p_list->push_back(E->get());
+ for (const PropertyInfo &E : prop_list) {
+ p_list->push_back(E);
}
}
diff --git a/editor/debugger/editor_debugger_node.cpp b/editor/debugger/editor_debugger_node.cpp
index 690ce98cb9..5d654ca756 100644
--- a/editor/debugger/editor_debugger_node.cpp
+++ b/editor/debugger/editor_debugger_node.cpp
@@ -466,7 +466,7 @@ void EditorDebuggerNode::_paused() {
});
}
-void EditorDebuggerNode::_breaked(bool p_breaked, bool p_can_debug, int p_debugger) {
+void EditorDebuggerNode::_breaked(bool p_breaked, bool p_can_debug, String p_message, bool p_has_stackdump, int p_debugger) {
if (get_current_debugger() != get_debugger(p_debugger)) {
if (!p_breaked) {
return;
@@ -489,6 +489,19 @@ void EditorDebuggerNode::set_breakpoint(const String &p_path, int p_line, bool p
});
}
+void EditorDebuggerNode::set_breakpoints(const String &p_path, Array p_lines) {
+ for (int i = 0; i < p_lines.size(); i++) {
+ set_breakpoint(p_path, p_lines[i], true);
+ }
+
+ for (Map<Breakpoint, bool>::Element *E = breakpoints.front(); E; E = E->next()) {
+ Breakpoint b = E->key();
+ if (b.source == p_path && !p_lines.has(b.line)) {
+ set_breakpoint(p_path, b.line, false);
+ }
+ }
+}
+
void EditorDebuggerNode::reload_scripts() {
_for_all(tabs, [&](ScriptEditorDebugger *dbg) {
dbg->reload_scripts();
diff --git a/editor/debugger/editor_debugger_node.h b/editor/debugger/editor_debugger_node.h
index 9a40383c17..0849ecf1c9 100644
--- a/editor/debugger/editor_debugger_node.h
+++ b/editor/debugger/editor_debugger_node.h
@@ -35,6 +35,7 @@
#include "scene/gui/margin_container.h"
class Button;
+class DebugAdapterParser;
class EditorDebuggerTree;
class EditorDebuggerRemoteObject;
class MenuButton;
@@ -109,6 +110,7 @@ private:
EditorDebuggerRemoteObject *get_inspected_remote_object();
friend class DebuggerEditorPlugin;
+ friend class DebugAdapterParser;
static EditorDebuggerNode *singleton;
EditorDebuggerNode();
@@ -129,7 +131,7 @@ protected:
void _text_editor_stack_goto(const ScriptEditorDebugger *p_debugger);
void _stack_frame_selected(int p_debugger);
void _error_selected(const String &p_file, int p_line, int p_debugger);
- void _breaked(bool p_breaked, bool p_can_debug, int p_debugger);
+ void _breaked(bool p_breaked, bool p_can_debug, String p_message, bool p_has_stackdump, int p_debugger);
void _paused();
void _break_state_changed();
void _menu_option(int p_id);
@@ -164,6 +166,7 @@ public:
bool is_skip_breakpoints() const;
void set_breakpoint(const String &p_path, int p_line, bool p_enabled);
+ void set_breakpoints(const String &p_path, Array p_lines);
void reload_scripts();
// Remote inspector/edit.
diff --git a/editor/debugger/editor_profiler.cpp b/editor/debugger/editor_profiler.cpp
index 6b015e1fda..fa9c9f61f5 100644
--- a/editor/debugger/editor_profiler.cpp
+++ b/editor/debugger/editor_profiler.cpp
@@ -588,8 +588,8 @@ EditorProfiler::EditorProfiler() {
hb->add_child(memnew(Label(TTR("Measure:"))));
display_mode = memnew(OptionButton);
- display_mode->add_item(TTR("Frame Time (sec)"));
- display_mode->add_item(TTR("Average Time (sec)"));
+ display_mode->add_item(TTR("Frame Time (ms)"));
+ display_mode->add_item(TTR("Average Time (ms)"));
display_mode->add_item(TTR("Frame %"));
display_mode->add_item(TTR("Physics Frame %"));
display_mode->connect("item_selected", callable_mp(this, &EditorProfiler::_combo_changed));
@@ -601,6 +601,7 @@ EditorProfiler::EditorProfiler() {
display_time = memnew(OptionButton);
display_time->add_item(TTR("Inclusive"));
display_time->add_item(TTR("Self"));
+ display_time->set_tooltip(TTR("Inclusive: Includes time from other functions called by this function.\nUse this to spot bottlenecks.\n\nSelf: Only count the time spent in the function itself, not in other functions called by that function.\nUse this to find individual functions to optimize."));
display_time->connect("item_selected", callable_mp(this, &EditorProfiler::_combo_changed));
hb->add_child(display_time);
diff --git a/editor/debugger/editor_visual_profiler.cpp b/editor/debugger/editor_visual_profiler.cpp
index a61e9bd73e..f17ad0d36c 100644
--- a/editor/debugger/editor_visual_profiler.cpp
+++ b/editor/debugger/editor_visual_profiler.cpp
@@ -365,13 +365,13 @@ void EditorVisualProfiler::_update_frame(bool p_focus_selected) {
}
TreeItem *category = variables->create_item(parent);
- for (List<TreeItem *>::Element *E = stack.front(); E; E = E->next()) {
- float total_cpu = E->get()->get_metadata(1);
- float total_gpu = E->get()->get_metadata(2);
+ for (TreeItem *E : stack) {
+ float total_cpu = E->get_metadata(1);
+ float total_gpu = E->get_metadata(2);
total_cpu += cpu_time;
total_gpu += gpu_time;
- E->get()->set_metadata(1, cpu_time);
- E->get()->set_metadata(2, gpu_time);
+ E->set_metadata(1, cpu_time);
+ E->set_metadata(2, gpu_time);
}
category->set_icon(0, track_icon);
@@ -392,11 +392,11 @@ void EditorVisualProfiler::_update_frame(bool p_focus_selected) {
}
}
- for (List<TreeItem *>::Element *E = categories.front(); E; E = E->next()) {
- float total_cpu = E->get()->get_metadata(1);
- float total_gpu = E->get()->get_metadata(2);
- E->get()->set_text(1, _get_time_as_text(total_cpu));
- E->get()->set_text(2, _get_time_as_text(total_gpu));
+ for (TreeItem *E : categories) {
+ float total_cpu = E->get_metadata(1);
+ float total_gpu = E->get_metadata(2);
+ E->set_text(1, _get_time_as_text(total_cpu));
+ E->set_text(2, _get_time_as_text(total_gpu));
}
if (ensure_selected) {
diff --git a/editor/debugger/script_editor_debugger.cpp b/editor/debugger/script_editor_debugger.cpp
index 06b02cceb4..2a5013893f 100644
--- a/editor/debugger/script_editor_debugger.cpp
+++ b/editor/debugger/script_editor_debugger.cpp
@@ -37,6 +37,7 @@
#include "core/string/ustring.h"
#include "core/version.h"
#include "core/version_hash.gen.h"
+#include "editor/debugger/debug_adapter/debug_adapter_protocol.h"
#include "editor/debugger/editor_network_profiler.h"
#include "editor/debugger/editor_performance_profiler.h"
#include "editor/debugger/editor_profiler.h"
@@ -298,15 +299,18 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
if (p_msg == "debug_enter") {
_put_msg("get_stack_dump", Array());
- ERR_FAIL_COND(p_data.size() != 2);
+ ERR_FAIL_COND(p_data.size() != 3);
bool can_continue = p_data[0];
String error = p_data[1];
+ bool has_stackdump = p_data[2];
breaked = true;
can_debug = can_continue;
_update_buttons_state();
_set_reason_text(error, MESSAGE_ERROR);
- emit_signal(SNAME("breaked"), true, can_continue);
- DisplayServer::get_singleton()->window_move_to_foreground();
+ emit_signal(SNAME("breaked"), true, can_continue, error, has_stackdump);
+ if (is_move_to_foreground()) {
+ DisplayServer::get_singleton()->window_move_to_foreground();
+ }
if (error != "") {
tabs->set_current_tab(0);
}
@@ -319,7 +323,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
_clear_execution();
_update_buttons_state();
_set_reason_text(TTR("Execution resumed."), MESSAGE_SUCCESS);
- emit_signal(SNAME("breaked"), false, false);
+ emit_signal(SNAME("breaked"), false, false, "", false);
profiler->set_enabled(true);
profiler->disable_seeking();
} else if (p_msg == "set_pid") {
@@ -347,13 +351,13 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
uint64_t total = 0;
- for (List<DebuggerMarshalls::ResourceInfo>::Element *E = usage.infos.front(); E; E = E->next()) {
+ for (const DebuggerMarshalls::ResourceInfo &E : usage.infos) {
TreeItem *it = vmem_tree->create_item(root);
- String type = E->get().type;
- int bytes = E->get().vram;
- it->set_text(0, E->get().path);
+ String type = E.type;
+ int bytes = E.vram;
+ it->set_text(0, E.path);
it->set_text(1, type);
- it->set_text(2, E->get().format);
+ it->set_text(2, E.format);
it->set_text(3, String::humanize_size(bytes));
total += bytes;
@@ -373,6 +377,8 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
inspector->clear_stack_variables();
TreeItem *r = stack_dump->create_item();
+ Array stack_dump_info;
+
for (int i = 0; i < stack.frames.size(); i++) {
TreeItem *s = stack_dump->create_item(r);
Dictionary d;
@@ -380,6 +386,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
d["file"] = stack.frames[i].file;
d["function"] = stack.frames[i].func;
d["line"] = stack.frames[i].line;
+ stack_dump_info.push_back(d);
s->set_metadata(0, d);
String line = itos(i) + " - " + String(d["file"]) + ":" + itos(d["line"]) + " - at function: " + d["function"];
@@ -389,11 +396,15 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
s->select(0);
}
}
+ emit_signal("stack_dump", stack_dump_info);
} else if (p_msg == "stack_frame_vars") {
inspector->clear_stack_variables();
+ ERR_FAIL_COND(p_data.size() != 1);
+ emit_signal("stack_frame_vars", p_data[0]);
} else if (p_msg == "stack_frame_var") {
inspector->add_stack_variable(p_data);
+ emit_signal("stack_frame_var", p_data);
} else if (p_msg == "output") {
ERR_FAIL_COND(p_data.size() != 2);
@@ -422,6 +433,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
} break;
}
EditorNode::get_log()->add_message(output_strings[i], msg_type);
+ emit_signal("output", output_strings[i]);
}
} else if (p_msg == "performance:profile_frame") {
Vector<float> frame_data;
@@ -963,11 +975,7 @@ void ScriptEditorDebugger::_stack_dump_frame_selected() {
int frame = get_stack_script_frame();
- if (is_session_active() && frame >= 0) {
- Array msg;
- msg.push_back(frame);
- _put_msg("get_stack_frame_vars", msg);
- } else {
+ if (!request_stack_dump(frame)) {
inspector->edit(nullptr);
}
}
@@ -1130,6 +1138,14 @@ void ScriptEditorDebugger::_property_changed(Object *p_base, const StringName &p
}
}
+bool ScriptEditorDebugger::is_move_to_foreground() const {
+ return move_to_foreground;
+}
+
+void ScriptEditorDebugger::set_move_to_foreground(const bool &p_move_to_foreground) {
+ move_to_foreground = p_move_to_foreground;
+}
+
String ScriptEditorDebugger::get_stack_script_file() const {
TreeItem *ti = stack_dump->get_selected();
if (!ti) {
@@ -1157,6 +1173,15 @@ int ScriptEditorDebugger::get_stack_script_frame() const {
return d["frame"];
}
+bool ScriptEditorDebugger::request_stack_dump(const int &p_frame) {
+ ERR_FAIL_COND_V(!is_session_active() || p_frame < 0, false);
+
+ Array msg;
+ msg.push_back(p_frame);
+ _put_msg("get_stack_frame_vars", msg);
+ return true;
+}
+
void ScriptEditorDebugger::set_live_debugging(bool p_enable) {
live_debug = p_enable;
}
@@ -1469,11 +1494,15 @@ void ScriptEditorDebugger::_bind_methods() {
ADD_SIGNAL(MethodInfo("error_selected", PropertyInfo(Variant::INT, "error")));
ADD_SIGNAL(MethodInfo("set_execution", PropertyInfo("script"), PropertyInfo(Variant::INT, "line")));
ADD_SIGNAL(MethodInfo("clear_execution", PropertyInfo("script")));
- ADD_SIGNAL(MethodInfo("breaked", PropertyInfo(Variant::BOOL, "reallydid"), PropertyInfo(Variant::BOOL, "can_debug")));
+ ADD_SIGNAL(MethodInfo("breaked", PropertyInfo(Variant::BOOL, "reallydid"), PropertyInfo(Variant::BOOL, "can_debug"), PropertyInfo(Variant::STRING, "reason"), PropertyInfo(Variant::BOOL, "has_stackdump")));
ADD_SIGNAL(MethodInfo("remote_object_requested", PropertyInfo(Variant::INT, "id")));
ADD_SIGNAL(MethodInfo("remote_object_updated", PropertyInfo(Variant::INT, "id")));
ADD_SIGNAL(MethodInfo("remote_object_property_updated", PropertyInfo(Variant::INT, "id"), PropertyInfo(Variant::STRING, "property")));
ADD_SIGNAL(MethodInfo("remote_tree_updated"));
+ ADD_SIGNAL(MethodInfo("output"));
+ ADD_SIGNAL(MethodInfo("stack_dump", PropertyInfo(Variant::ARRAY, "stack_dump")));
+ ADD_SIGNAL(MethodInfo("stack_frame_vars", PropertyInfo(Variant::INT, "num_vars")));
+ ADD_SIGNAL(MethodInfo("stack_frame_var", PropertyInfo(Variant::ARRAY, "data")));
}
void ScriptEditorDebugger::add_debugger_plugin(const Ref<Script> &p_script) {
diff --git a/editor/debugger/script_editor_debugger.h b/editor/debugger/script_editor_debugger.h
index a5731c9f9c..499dda86da 100644
--- a/editor/debugger/script_editor_debugger.h
+++ b/editor/debugger/script_editor_debugger.h
@@ -55,11 +55,15 @@ class EditorNetworkProfiler;
class EditorPerformanceProfiler;
class SceneDebuggerTree;
class EditorDebuggerPlugin;
+class DebugAdapterProtocol;
+class DebugAdapterParser;
class ScriptEditorDebugger : public MarginContainer {
GDCLASS(ScriptEditorDebugger, MarginContainer);
friend class EditorDebuggerNode;
+ friend class DebugAdapterProtocol;
+ friend class DebugAdapterParser;
private:
enum MessageType {
@@ -147,6 +151,7 @@ private:
OS::ProcessID remote_pid = 0;
bool breaked = false;
bool can_debug = false;
+ bool move_to_foreground = true;
bool live_debug;
@@ -230,12 +235,17 @@ public:
bool is_session_active() { return peer.is_valid() && peer->is_peer_connected(); };
int get_remote_pid() const { return remote_pid; }
+ bool is_move_to_foreground() const;
+ void set_move_to_foreground(const bool &p_move_to_foreground);
+
int get_error_count() const { return error_count; }
int get_warning_count() const { return warning_count; }
String get_stack_script_file() const;
int get_stack_script_line() const;
int get_stack_script_frame() const;
+ bool request_stack_dump(const int &p_frame);
+
void update_tabs();
void clear_style();
String get_var_value(const String &p_var) const;
diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp
index c18b8743cd..a9d8cb219c 100644
--- a/editor/dependency_editor.cpp
+++ b/editor/dependency_editor.cpp
@@ -55,8 +55,8 @@ void DependencyEditor::_load_pressed(Object *p_item, int p_cell, int p_button) {
search->clear_filters();
List<String> ext;
ResourceLoader::get_recognized_extensions_for_type(ti->get_metadata(0), &ext);
- for (List<String>::Element *E = ext.front(); E; E = E->next()) {
- search->add_filter("*" + E->get());
+ for (const String &E : ext) {
+ search->add_filter("*" + E);
}
search->popup_file_dialog();
}
@@ -120,13 +120,13 @@ void DependencyEditor::_fix_all() {
Map<String, Map<String, String>> candidates;
- for (List<String>::Element *E = missing.front(); E; E = E->next()) {
- String base = E->get().get_file();
+ for (const String &E : missing) {
+ String base = E.get_file();
if (!candidates.has(base)) {
candidates[base] = Map<String, String>();
}
- candidates[base][E->get()] = "";
+ candidates[base][E] = "";
}
_fix_and_find(EditorFileSystem::get_singleton()->get_filesystem(), candidates);
@@ -166,10 +166,8 @@ void DependencyEditor::_update_list() {
bool broken = false;
- for (List<String>::Element *E = deps.front(); E; E = E->next()) {
+ for (const String &n : deps) {
TreeItem *item = tree->create_item(root);
-
- String n = E->get();
String path;
String type;
@@ -180,6 +178,15 @@ void DependencyEditor::_update_list() {
path = n;
type = "Resource";
}
+
+ ResourceUID::ID uid = ResourceUID::get_singleton()->text_to_id(path);
+ if (uid != ResourceUID::INVALID_ID) {
+ // dependency is in uid format, obtain proper path
+ ERR_CONTINUE(!ResourceUID::get_singleton()->has_id(uid));
+
+ path = ResourceUID::get_singleton()->get_id_path(uid);
+ }
+
String name = path.get_file();
Ref<Texture2D> icon = EditorNode::get_singleton()->get_class_icon(type);
@@ -456,13 +463,13 @@ void DependencyRemoveDialog::show(const Vector<String> &p_folders, const Vector<
removed_deps.sort();
if (removed_deps.is_empty()) {
owners->hide();
- text->set_text(TTR("Remove selected files from the project? (no undo)\nYou can find the removed files in the system trash to restore them."));
+ text->set_text(TTR("Remove the selected files from the project? (Cannot be undone.)\nDepending on your filesystem configuration, the files will either be moved to the system trash or deleted permanently."));
set_size(Size2());
popup_centered();
} else {
_build_removed_dependency_tree(removed_deps);
owners->show();
- text->set_text(TTR("The files being removed are required by other resources in order for them to work.\nRemove them anyway? (no undo)\nYou can find the removed files in the system trash to restore them."));
+ text->set_text(TTR("The files being removed are required by other resources in order for them to work.\nRemove them anyway? (Cannot be undone.)\nDepending on your filesystem configuration, the files will either be moved to the system trash or deleted permanently."));
popup_centered(Size2(500, 350));
}
EditorFileSystem::get_singleton()->scan_changes();
@@ -741,9 +748,9 @@ void OrphanResourcesDialog::_find_to_delete(TreeItem *p_item, List<String> &path
void OrphanResourcesDialog::_delete_confirm() {
DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
- for (List<String>::Element *E = paths.front(); E; E = E->next()) {
- da->remove(E->get());
- EditorFileSystem::get_singleton()->update_file(E->get());
+ for (const String &E : paths) {
+ da->remove(E);
+ EditorFileSystem::get_singleton()->update_file(E);
}
memdelete(da);
refresh();
diff --git a/editor/doc_tools.cpp b/editor/doc_tools.cpp
index befafec6cb..56a9d2c258 100644
--- a/editor/doc_tools.cpp
+++ b/editor/doc_tools.cpp
@@ -145,15 +145,15 @@ void DocTools::merge_from(const DocTools &p_data) {
}
for (int i = 0; i < c.theme_properties.size(); i++) {
- DocData::PropertyDoc &p = c.theme_properties.write[i];
+ DocData::ThemeItemDoc &ti = c.theme_properties.write[i];
for (int j = 0; j < cf.theme_properties.size(); j++) {
- if (cf.theme_properties[j].name != p.name) {
+ if (cf.theme_properties[j].name != ti.name || cf.theme_properties[j].data_type != ti.data_type) {
continue;
}
- const DocData::PropertyDoc &pf = cf.theme_properties[j];
+ const DocData::ThemeItemDoc &pf = cf.theme_properties[j];
- p.description = pf.description;
+ ti.description = pf.description;
break;
}
}
@@ -266,20 +266,20 @@ void DocTools::generate(bool p_basic_types) {
}
List<PropertyInfo>::Element *EO = own_properties.front();
- for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
+ for (const PropertyInfo &E : properties) {
bool inherited = EO == nullptr;
- if (EO && EO->get() == E->get()) {
+ if (EO && EO->get() == E) {
inherited = false;
EO = EO->next();
}
- if (E->get().usage & PROPERTY_USAGE_GROUP || E->get().usage & PROPERTY_USAGE_SUBGROUP || E->get().usage & PROPERTY_USAGE_CATEGORY || E->get().usage & PROPERTY_USAGE_INTERNAL) {
+ if (E.usage & PROPERTY_USAGE_GROUP || E.usage & PROPERTY_USAGE_SUBGROUP || E.usage & PROPERTY_USAGE_CATEGORY || E.usage & PROPERTY_USAGE_INTERNAL) {
continue;
}
DocData::PropertyDoc prop;
- prop.name = E->get().name;
+ prop.name = E.name;
prop.overridden = inherited;
@@ -288,20 +288,20 @@ void DocTools::generate(bool p_basic_types) {
if (name == "ProjectSettings") {
// Special case for project settings, so that settings are not taken from the current project's settings
- if (E->get().name == "script" || !ProjectSettings::get_singleton()->is_builtin_setting(E->get().name)) {
+ if (E.name == "script" || !ProjectSettings::get_singleton()->is_builtin_setting(E.name)) {
continue;
}
- if (E->get().usage & PROPERTY_USAGE_EDITOR) {
- if (!ProjectSettings::get_singleton()->get_ignore_value_in_docs(E->get().name)) {
- default_value = ProjectSettings::get_singleton()->property_get_revert(E->get().name);
+ if (E.usage & PROPERTY_USAGE_EDITOR) {
+ if (!ProjectSettings::get_singleton()->get_ignore_value_in_docs(E.name)) {
+ default_value = ProjectSettings::get_singleton()->property_get_revert(E.name);
default_value_valid = true;
}
}
} else {
- default_value = get_documentation_default_value(name, E->get().name, default_value_valid);
+ default_value = get_documentation_default_value(name, E.name, default_value_valid);
if (inherited) {
bool base_default_value_valid = false;
- Variant base_default_value = get_documentation_default_value(ClassDB::get_parent_class(name), E->get().name, base_default_value_valid);
+ Variant base_default_value = get_documentation_default_value(ClassDB::get_parent_class(name), E.name, base_default_value_valid);
if (!default_value_valid || !base_default_value_valid || default_value == base_default_value) {
continue;
}
@@ -309,13 +309,13 @@ void DocTools::generate(bool p_basic_types) {
}
//used to track uninitialized values using valgrind
- //print_line("getting default value for " + String(name) + "." + String(E->get().name));
+ //print_line("getting default value for " + String(name) + "." + String(E.name));
if (default_value_valid && default_value.get_type() != Variant::OBJECT) {
prop.default_value = default_value.get_construct_string().replace("\n", "");
}
- StringName setter = ClassDB::get_property_setter(name, E->get().name);
- StringName getter = ClassDB::get_property_getter(name, E->get().name);
+ StringName setter = ClassDB::get_property_setter(name, E.name);
+ StringName getter = ClassDB::get_property_getter(name, E.name);
prop.setter = setter;
prop.getter = getter;
@@ -353,10 +353,10 @@ void DocTools::generate(bool p_basic_types) {
}
if (!found_type) {
- if (E->get().type == Variant::OBJECT && E->get().hint == PROPERTY_HINT_RESOURCE_TYPE) {
- prop.type = E->get().hint_string;
+ if (E.type == Variant::OBJECT && E.hint == PROPERTY_HINT_RESOURCE_TYPE) {
+ prop.type = E.hint_string;
} else {
- prop.type = Variant::get_type_name(E->get().type);
+ prop.type = Variant::get_type_name(E.type);
}
}
@@ -367,62 +367,62 @@ void DocTools::generate(bool p_basic_types) {
ClassDB::get_method_list(name, &method_list, true);
method_list.sort();
- for (List<MethodInfo>::Element *E = method_list.front(); E; E = E->next()) {
- if (E->get().name == "" || (E->get().name[0] == '_' && !(E->get().flags & METHOD_FLAG_VIRTUAL))) {
+ for (const MethodInfo &E : method_list) {
+ if (E.name == "" || (E.name[0] == '_' && !(E.flags & METHOD_FLAG_VIRTUAL))) {
continue; //hidden, don't count
}
- if (skip_setter_getter_methods && setters_getters.has(E->get().name)) {
+ if (skip_setter_getter_methods && setters_getters.has(E.name)) {
// Don't skip parametric setters and getters, i.e. method which require
// one or more parameters to define what property should be set or retrieved.
// E.g. CPUParticles3D::set_param(Parameter param, float value).
- if (E->get().arguments.size() == 0 /* getter */ || (E->get().arguments.size() == 1 && E->get().return_val.type == Variant::NIL /* setter */)) {
+ if (E.arguments.size() == 0 /* getter */ || (E.arguments.size() == 1 && E.return_val.type == Variant::NIL /* setter */)) {
continue;
}
}
DocData::MethodDoc method;
- method.name = E->get().name;
+ method.name = E.name;
- if (E->get().flags & METHOD_FLAG_VIRTUAL) {
+ if (E.flags & METHOD_FLAG_VIRTUAL) {
method.qualifiers = "virtual";
}
- if (E->get().flags & METHOD_FLAG_CONST) {
+ if (E.flags & METHOD_FLAG_CONST) {
if (method.qualifiers != "") {
method.qualifiers += " ";
}
method.qualifiers += "const";
}
- if (E->get().flags & METHOD_FLAG_VARARG) {
+ if (E.flags & METHOD_FLAG_VARARG) {
if (method.qualifiers != "") {
method.qualifiers += " ";
}
method.qualifiers += "vararg";
}
- if (E->get().flags & METHOD_FLAG_STATIC) {
+ if (E.flags & METHOD_FLAG_STATIC) {
if (method.qualifiers != "") {
method.qualifiers += " ";
}
method.qualifiers += "static";
}
- for (int i = -1; i < E->get().arguments.size(); i++) {
+ for (int i = -1; i < E.arguments.size(); i++) {
if (i == -1) {
#ifdef DEBUG_METHODS_ENABLED
- DocData::return_doc_from_retinfo(method, E->get().return_val);
+ DocData::return_doc_from_retinfo(method, E.return_val);
#endif
} else {
- const PropertyInfo &arginfo = E->get().arguments[i];
+ const PropertyInfo &arginfo = E.arguments[i];
DocData::ArgumentDoc argument;
DocData::argument_doc_from_arginfo(argument, arginfo);
- int darg_idx = i - (E->get().arguments.size() - E->get().default_arguments.size());
+ int darg_idx = i - (E.arguments.size() - E.default_arguments.size());
if (darg_idx >= 0) {
- Variant default_arg = E->get().default_arguments[darg_idx];
+ Variant default_arg = E.default_arguments[darg_idx];
argument.default_value = default_arg.get_construct_string();
}
@@ -455,69 +455,78 @@ void DocTools::generate(bool p_basic_types) {
List<String> constant_list;
ClassDB::get_integer_constant_list(name, &constant_list, true);
- for (List<String>::Element *E = constant_list.front(); E; E = E->next()) {
+ for (const String &E : constant_list) {
DocData::ConstantDoc constant;
- constant.name = E->get();
- constant.value = itos(ClassDB::get_integer_constant(name, E->get()));
+ constant.name = E;
+ constant.value = itos(ClassDB::get_integer_constant(name, E));
constant.is_value_valid = true;
- constant.enumeration = ClassDB::get_integer_constant_enum(name, E->get());
+ constant.enumeration = ClassDB::get_integer_constant_enum(name, E);
c.constants.push_back(constant);
}
- //theme stuff
-
+ // Theme items.
{
List<StringName> l;
- Theme::get_default()->get_constant_list(cname, &l);
- for (List<StringName>::Element *E = l.front(); E; E = E->next()) {
- DocData::PropertyDoc pd;
- pd.name = E->get();
- pd.type = "int";
- pd.default_value = itos(Theme::get_default()->get_constant(E->get(), cname));
- c.theme_properties.push_back(pd);
- }
- l.clear();
Theme::get_default()->get_color_list(cname, &l);
- for (List<StringName>::Element *E = l.front(); E; E = E->next()) {
- DocData::PropertyDoc pd;
- pd.name = E->get();
- pd.type = "Color";
- pd.default_value = Variant(Theme::get_default()->get_color(E->get(), cname)).get_construct_string();
- c.theme_properties.push_back(pd);
+ for (const StringName &E : l) {
+ DocData::ThemeItemDoc tid;
+ tid.name = E;
+ tid.type = "Color";
+ tid.data_type = "color";
+ tid.default_value = Variant(Theme::get_default()->get_color(E, cname)).get_construct_string();
+ c.theme_properties.push_back(tid);
}
l.clear();
- Theme::get_default()->get_icon_list(cname, &l);
- for (List<StringName>::Element *E = l.front(); E; E = E->next()) {
- DocData::PropertyDoc pd;
- pd.name = E->get();
- pd.type = "Texture2D";
- c.theme_properties.push_back(pd);
+ Theme::get_default()->get_constant_list(cname, &l);
+ for (const StringName &E : l) {
+ DocData::ThemeItemDoc tid;
+ tid.name = E;
+ tid.type = "int";
+ tid.data_type = "constant";
+ tid.default_value = itos(Theme::get_default()->get_constant(E, cname));
+ c.theme_properties.push_back(tid);
}
+
l.clear();
Theme::get_default()->get_font_list(cname, &l);
- for (List<StringName>::Element *E = l.front(); E; E = E->next()) {
- DocData::PropertyDoc pd;
- pd.name = E->get();
- pd.type = "Font";
- c.theme_properties.push_back(pd);
+ for (const StringName &E : l) {
+ DocData::ThemeItemDoc tid;
+ tid.name = E;
+ tid.type = "Font";
+ tid.data_type = "font";
+ c.theme_properties.push_back(tid);
}
+
l.clear();
Theme::get_default()->get_font_size_list(cname, &l);
- for (List<StringName>::Element *E = l.front(); E; E = E->next()) {
- DocData::PropertyDoc pd;
- pd.name = E->get();
- pd.type = "int";
- c.theme_properties.push_back(pd);
+ for (const StringName &E : l) {
+ DocData::ThemeItemDoc tid;
+ tid.name = E;
+ tid.type = "int";
+ tid.data_type = "font_size";
+ c.theme_properties.push_back(tid);
+ }
+
+ l.clear();
+ Theme::get_default()->get_icon_list(cname, &l);
+ for (const StringName &E : l) {
+ DocData::ThemeItemDoc tid;
+ tid.name = E;
+ tid.type = "Texture2D";
+ tid.data_type = "icon";
+ c.theme_properties.push_back(tid);
}
+
l.clear();
Theme::get_default()->get_stylebox_list(cname, &l);
- for (List<StringName>::Element *E = l.front(); E; E = E->next()) {
- DocData::PropertyDoc pd;
- pd.name = E->get();
- pd.type = "StyleBox";
- c.theme_properties.push_back(pd);
+ for (const StringName &E : l) {
+ DocData::ThemeItemDoc tid;
+ tid.name = E;
+ tid.type = "StyleBox";
+ tid.data_type = "style";
+ c.theme_properties.push_back(tid);
}
}
@@ -621,8 +630,7 @@ void DocTools::generate(bool p_basic_types) {
method_list.push_back(mi);
}
- for (List<MethodInfo>::Element *E = method_list.front(); E; E = E->next()) {
- MethodInfo &mi = E->get();
+ for (const MethodInfo &mi : method_list) {
DocData::MethodDoc method;
method.name = mi.name;
@@ -675,8 +683,7 @@ void DocTools::generate(bool p_basic_types) {
List<PropertyInfo> properties;
v.get_property_list(&properties);
- for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
- PropertyInfo pi = E->get();
+ for (const PropertyInfo &pi : properties) {
DocData::PropertyDoc property;
property.name = pi.name;
property.type = Variant::get_type_name(pi.type);
@@ -688,10 +695,10 @@ void DocTools::generate(bool p_basic_types) {
List<StringName> constants;
Variant::get_constants_for_type(Variant::Type(i), &constants);
- for (List<StringName>::Element *E = constants.front(); E; E = E->next()) {
+ for (const StringName &E : constants) {
DocData::ConstantDoc constant;
- constant.name = E->get();
- Variant value = Variant::get_constant_value(Variant::Type(i), E->get());
+ constant.name = E;
+ Variant value = Variant::get_constant_value(Variant::Type(i), E);
constant.value = value.get_type() == Variant::INT ? itos(value) : value.get_construct_string();
constant.is_value_valid = true;
c.constants.push_back(constant);
@@ -723,9 +730,8 @@ void DocTools::generate(bool p_basic_types) {
Engine::get_singleton()->get_singletons(&singletons);
//servers (this is kind of hackish)
- for (List<Engine::Singleton>::Element *E = singletons.front(); E; E = E->next()) {
+ for (const Engine::Singleton &s : singletons) {
DocData::PropertyDoc pd;
- Engine::Singleton &s = E->get();
if (!s.ptr) {
continue;
}
@@ -743,13 +749,13 @@ void DocTools::generate(bool p_basic_types) {
List<StringName> utility_functions;
Variant::get_utility_function_list(&utility_functions);
utility_functions.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = utility_functions.front(); E; E = E->next()) {
+ for (const StringName &E : utility_functions) {
DocData::MethodDoc md;
- md.name = E->get();
+ md.name = E;
//return
- if (Variant::has_utility_function_return_value(E->get())) {
+ if (Variant::has_utility_function_return_value(E)) {
PropertyInfo pi;
- pi.type = Variant::get_utility_function_return_type(E->get());
+ pi.type = Variant::get_utility_function_return_type(E);
if (pi.type == Variant::NIL) {
pi.usage = PROPERTY_USAGE_NIL_IS_VARIANT;
}
@@ -758,13 +764,13 @@ void DocTools::generate(bool p_basic_types) {
md.return_type = ad.type;
}
- if (Variant::is_utility_function_vararg(E->get())) {
+ if (Variant::is_utility_function_vararg(E)) {
md.qualifiers = "vararg";
} else {
- for (int i = 0; i < Variant::get_utility_function_argument_count(E->get()); i++) {
+ for (int i = 0; i < Variant::get_utility_function_argument_count(E); i++) {
PropertyInfo pi;
- pi.type = Variant::get_utility_function_argument_type(E->get(), i);
- pi.name = Variant::get_utility_function_argument_name(E->get(), i);
+ pi.type = Variant::get_utility_function_argument_type(E, i);
+ pi.name = Variant::get_utility_function_argument_name(E, i);
if (pi.type == Variant::NIL) {
pi.usage = PROPERTY_USAGE_NIL_IS_VARIANT;
}
@@ -793,8 +799,7 @@ void DocTools::generate(bool p_basic_types) {
List<MethodInfo> minfo;
lang->get_public_functions(&minfo);
- for (List<MethodInfo>::Element *E = minfo.front(); E; E = E->next()) {
- MethodInfo &mi = E->get();
+ for (const MethodInfo &mi : minfo) {
DocData::MethodDoc md;
md.name = mi.name;
@@ -813,7 +818,7 @@ void DocTools::generate(bool p_basic_types) {
int darg_idx = j - (mi.arguments.size() - mi.default_arguments.size());
if (darg_idx >= 0) {
- Variant default_arg = E->get().default_arguments[darg_idx];
+ Variant default_arg = mi.default_arguments[darg_idx];
ad.default_value = default_arg.get_construct_string();
}
@@ -827,10 +832,10 @@ void DocTools::generate(bool p_basic_types) {
List<Pair<String, Variant>> cinfo;
lang->get_public_constants(&cinfo);
- for (List<Pair<String, Variant>>::Element *E = cinfo.front(); E; E = E->next()) {
+ for (const Pair<String, Variant> &E : cinfo) {
DocData::ConstantDoc cd;
- cd.name = E->get().first;
- cd.value = E->get().second;
+ cd.name = E.first;
+ cd.value = E.second;
cd.is_value_valid = true;
c.constants.push_back(cd);
}
@@ -1073,12 +1078,14 @@ Error DocTools::_load(Ref<XMLParser> parser) {
String name3 = parser->get_node_name();
if (name3 == "theme_item") {
- DocData::PropertyDoc prop2;
+ DocData::ThemeItemDoc prop2;
ERR_FAIL_COND_V(!parser->has_attribute("name"), ERR_FILE_CORRUPT);
prop2.name = parser->get_attribute_value("name");
ERR_FAIL_COND_V(!parser->has_attribute("type"), ERR_FILE_CORRUPT);
prop2.type = parser->get_attribute_value("type");
+ ERR_FAIL_COND_V(!parser->has_attribute("data_type"), ERR_FILE_CORRUPT);
+ prop2.data_type = parser->get_attribute_value("data_type");
if (!parser->is_empty()) {
parser->read();
if (parser->get_node_type() == XMLParser::NODE_TEXT) {
@@ -1212,8 +1219,7 @@ Error DocTools::save_classes(const String &p_default_path, const Map<String, Str
if (m.return_enum != String()) {
enum_text = " enum=\"" + m.return_enum + "\"";
}
- _write_string(f, 3, "<return type=\"" + m.return_type + "\"" + enum_text + ">");
- _write_string(f, 3, "</return>");
+ _write_string(f, 3, "<return type=\"" + m.return_type + "\"" + enum_text + " />");
}
for (int j = 0; j < m.arguments.size(); j++) {
@@ -1225,12 +1231,10 @@ Error DocTools::save_classes(const String &p_default_path, const Map<String, Str
}
if (a.default_value != "") {
- _write_string(f, 3, "<argument index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape() + "\"" + enum_text + " default=\"" + a.default_value.xml_escape(true) + "\">");
+ _write_string(f, 3, "<argument index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape() + "\"" + enum_text + " default=\"" + a.default_value.xml_escape(true) + "\" />");
} else {
- _write_string(f, 3, "<argument index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape() + "\"" + enum_text + ">");
+ _write_string(f, 3, "<argument index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape() + "\"" + enum_text + " />");
}
-
- _write_string(f, 3, "</argument>");
}
_write_string(f, 3, "<description>");
@@ -1278,8 +1282,7 @@ Error DocTools::save_classes(const String &p_default_path, const Map<String, Str
_write_string(f, 2, "<signal name=\"" + m.name + "\">");
for (int j = 0; j < m.arguments.size(); j++) {
const DocData::ArgumentDoc &a = m.arguments[j];
- _write_string(f, 3, "<argument index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape() + "\">");
- _write_string(f, 3, "</argument>");
+ _write_string(f, 3, "<argument index=\"" + itos(j) + "\" name=\"" + a.name.xml_escape() + "\" type=\"" + a.type.xml_escape() + "\" />");
}
_write_string(f, 3, "<description>");
@@ -1320,15 +1323,15 @@ Error DocTools::save_classes(const String &p_default_path, const Map<String, Str
_write_string(f, 1, "<theme_items>");
for (int i = 0; i < c.theme_properties.size(); i++) {
- const DocData::PropertyDoc &p = c.theme_properties[i];
+ const DocData::ThemeItemDoc &ti = c.theme_properties[i];
- if (p.default_value != "") {
- _write_string(f, 2, "<theme_item name=\"" + p.name + "\" type=\"" + p.type + "\" default=\"" + p.default_value.xml_escape(true) + "\">");
+ if (ti.default_value != "") {
+ _write_string(f, 2, "<theme_item name=\"" + ti.name + "\" data_type=\"" + ti.data_type + "\" type=\"" + ti.type + "\" default=\"" + ti.default_value.xml_escape(true) + "\">");
} else {
- _write_string(f, 2, "<theme_item name=\"" + p.name + "\" type=\"" + p.type + "\">");
+ _write_string(f, 2, "<theme_item name=\"" + ti.name + "\" data_type=\"" + ti.data_type + "\" type=\"" + ti.type + "\">");
}
- _write_string(f, 3, p.description.strip_edges().xml_escape());
+ _write_string(f, 3, ti.description.strip_edges().xml_escape());
_write_string(f, 2, "</theme_item>");
}
diff --git a/editor/editor_audio_buses.cpp b/editor/editor_audio_buses.cpp
index d94ac21837..5209ee06c6 100644
--- a/editor/editor_audio_buses.cpp
+++ b/editor/editor_audio_buses.cpp
@@ -62,7 +62,8 @@ void EditorAudioBus::_update_visible_channels() {
void EditorAudioBus::_notification(int p_what) {
switch (p_what) {
- case NOTIFICATION_READY: {
+ case NOTIFICATION_ENTER_TREE:
+ case NOTIFICATION_THEME_CHANGED: {
for (int i = 0; i < CHANNELS_MAX; i++) {
channel[i].vu_l->set_under_texture(get_theme_icon(SNAME("BusVuEmpty"), SNAME("EditorIcons")));
channel[i].vu_l->set_progress_texture(get_theme_icon(SNAME("BusVuFull"), SNAME("EditorIcons")));
@@ -86,6 +87,12 @@ void EditorAudioBus::_notification(int p_what) {
bus_options->set_icon(get_theme_icon(SNAME("GuiTabMenuHl"), SNAME("EditorIcons")));
+ audio_value_preview_label->add_theme_color_override("font_color", get_theme_color(SNAME("font_color"), SNAME("TooltipLabel")));
+ audio_value_preview_label->add_theme_color_override("font_shadow_color", get_theme_color(SNAME("font_shadow_color"), SNAME("TooltipLabel")));
+ audio_value_preview_box->add_theme_style_override("panel", get_theme_stylebox(SNAME("panel"), SNAME("TooltipPanel")));
+ } break;
+
+ case NOTIFICATION_READY: {
update_bus();
set_process(true);
} break;
@@ -157,26 +164,7 @@ void EditorAudioBus::_notification(int p_what) {
set_process(is_visible_in_tree());
} break;
- case NOTIFICATION_THEME_CHANGED: {
- for (int i = 0; i < CHANNELS_MAX; i++) {
- channel[i].vu_l->set_under_texture(get_theme_icon(SNAME("BusVuEmpty"), SNAME("EditorIcons")));
- channel[i].vu_l->set_progress_texture(get_theme_icon(SNAME("BusVuFull"), SNAME("EditorIcons")));
- channel[i].vu_r->set_under_texture(get_theme_icon(SNAME("BusVuEmpty"), SNAME("EditorIcons")));
- channel[i].vu_r->set_progress_texture(get_theme_icon(SNAME("BusVuFull"), SNAME("EditorIcons")));
- channel[i].prev_active = true;
- }
-
- disabled_vu = get_theme_icon(SNAME("BusVuFrozen"), SNAME("EditorIcons"));
-
- solo->set_icon(get_theme_icon(SNAME("AudioBusSolo"), SNAME("EditorIcons")));
- mute->set_icon(get_theme_icon(SNAME("AudioBusMute"), SNAME("EditorIcons")));
- bypass->set_icon(get_theme_icon(SNAME("AudioBusBypass"), SNAME("EditorIcons")));
-
- bus_options->set_icon(get_theme_icon(SNAME("GuiTabMenuHl"), SNAME("EditorIcons")));
- audio_value_preview_box->add_theme_color_override("font_color", get_theme_color(SNAME("font_color"), SNAME("TooltipLabel")));
- audio_value_preview_box->add_theme_style_override("panel", get_theme_stylebox(SNAME("panel"), SNAME("TooltipPanel")));
- } break;
case NOTIFICATION_MOUSE_EXIT:
case NOTIFICATION_DRAG_END: {
if (hovering_drop) {
@@ -833,6 +821,11 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) {
slider->set_clip_contents(false);
audio_value_preview_box = memnew(Panel);
+ slider->add_child(audio_value_preview_box);
+ audio_value_preview_box->set_as_top_level(true);
+ audio_value_preview_box->set_mouse_filter(MOUSE_FILTER_PASS);
+ audio_value_preview_box->hide();
+
HBoxContainer *audioprev_hbc = memnew(HBoxContainer);
audioprev_hbc->set_v_size_flags(SIZE_EXPAND_FILL);
audioprev_hbc->set_h_size_flags(SIZE_EXPAND_FILL);
@@ -842,16 +835,8 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) {
audio_value_preview_label->set_v_size_flags(SIZE_EXPAND_FILL);
audio_value_preview_label->set_h_size_flags(SIZE_EXPAND_FILL);
audio_value_preview_label->set_mouse_filter(MOUSE_FILTER_PASS);
- audio_value_preview_box->add_theme_color_override("font_color", get_theme_color(SNAME("font_color"), SNAME("TooltipLabel")));
-
audioprev_hbc->add_child(audio_value_preview_label);
- slider->add_child(audio_value_preview_box);
- audio_value_preview_box->set_as_top_level(true);
- audio_value_preview_box->add_theme_style_override("panel", get_theme_stylebox(SNAME("panel"), SNAME("TooltipPanel")));
- audio_value_preview_box->set_mouse_filter(MOUSE_FILTER_PASS);
- audio_value_preview_box->hide();
-
preview_timer = memnew(Timer);
preview_timer->set_wait_time(0.8f);
preview_timer->set_one_shot(true);
@@ -920,15 +905,15 @@ EditorAudioBus::EditorAudioBus(EditorAudioBuses *p_buses, bool p_is_master) {
List<StringName> effects;
ClassDB::get_inheriters_from_class("AudioEffect", &effects);
effects.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = effects.front(); E; E = E->next()) {
- if (!ClassDB::can_instantiate(E->get())) {
+ for (const StringName &E : effects) {
+ if (!ClassDB::can_instantiate(E)) {
continue;
}
- Ref<Texture2D> icon = EditorNode::get_singleton()->get_class_icon(E->get());
- String name = E->get().operator String().replace("AudioEffect", "");
+ Ref<Texture2D> icon = EditorNode::get_singleton()->get_class_icon(E);
+ String name = E.operator String().replace("AudioEffect", "");
effect_options->add_item(name);
- effect_options->set_item_metadata(effect_options->get_item_count() - 1, E->get());
+ effect_options->set_item_metadata(effect_options->get_item_count() - 1, E);
effect_options->set_item_icon(effect_options->get_item_count() - 1, icon);
}
@@ -1331,8 +1316,8 @@ EditorAudioBuses::EditorAudioBuses() {
file_dialog = memnew(EditorFileDialog);
List<String> ext;
ResourceLoader::get_recognized_extensions_for_type("AudioBusLayout", &ext);
- for (List<String>::Element *E = ext.front(); E; E = E->next()) {
- file_dialog->add_filter("*." + E->get() + "; Audio Bus Layout");
+ for (const String &E : ext) {
+ file_dialog->add_filter("*." + E + "; Audio Bus Layout");
}
add_child(file_dialog);
file_dialog->connect("file_selected", callable_mp(this, &EditorAudioBuses::_file_dialog_callback));
diff --git a/editor/editor_autoload_settings.cpp b/editor/editor_autoload_settings.cpp
index c6d52107cd..fad76682b5 100644
--- a/editor/editor_autoload_settings.cpp
+++ b/editor/editor_autoload_settings.cpp
@@ -46,12 +46,11 @@ void EditorAutoloadSettings::_notification(int p_what) {
ResourceLoader::get_recognized_extensions_for_type("Script", &afn);
ResourceLoader::get_recognized_extensions_for_type("PackedScene", &afn);
- for (List<String>::Element *E = afn.front(); E; E = E->next()) {
- file_dialog->add_filter("*." + E->get());
+ for (const String &E : afn) {
+ file_dialog->add_filter("*." + E);
}
- for (List<AutoLoadInfo>::Element *E = autoload_cache.front(); E; E = E->next()) {
- AutoLoadInfo &info = E->get();
+ for (const AutoLoadInfo &info : autoload_cache) {
if (info.node && info.in_editor) {
get_tree()->get_root()->call_deferred(SNAME("add_child"), info.node);
}
@@ -102,8 +101,8 @@ bool EditorAutoloadSettings::_autoload_name_is_valid(const String &p_name, Strin
for (int i = 0; i < ScriptServer::get_language_count(); i++) {
List<String> keywords;
ScriptServer::get_language(i)->get_reserved_words(&keywords);
- for (List<String>::Element *E = keywords.front(); E; E = E->next()) {
- if (E->get() == p_name) {
+ for (const String &E : keywords) {
+ if (E == p_name) {
if (r_error) {
*r_error = TTR("Invalid name.") + "\n" + TTR("Keyword cannot be used as an autoload name.");
}
@@ -379,8 +378,7 @@ void EditorAutoloadSettings::update_autoload() {
Map<String, AutoLoadInfo> to_remove;
List<AutoLoadInfo *> to_add;
- for (List<AutoLoadInfo>::Element *E = autoload_cache.front(); E; E = E->next()) {
- AutoLoadInfo &info = E->get();
+ for (const AutoLoadInfo &info : autoload_cache) {
to_remove.insert(info.name, info);
}
@@ -392,9 +390,7 @@ void EditorAutoloadSettings::update_autoload() {
List<PropertyInfo> props;
ProjectSettings::get_singleton()->get_property_list(&props);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- const PropertyInfo &pi = E->get();
-
+ for (const PropertyInfo &pi : props) {
if (!pi.name.begins_with("autoload/")) {
continue;
}
@@ -483,9 +479,7 @@ void EditorAutoloadSettings::update_autoload() {
// Load new/changed autoloads
List<Node *> nodes_to_add;
- for (List<AutoLoadInfo *>::Element *E = to_add.front(); E; E = E->next()) {
- AutoLoadInfo *info = E->get();
-
+ for (AutoLoadInfo *info : to_add) {
info->node = _create_autoload(info->path);
ERR_CONTINUE(!info->node);
@@ -518,8 +512,8 @@ void EditorAutoloadSettings::update_autoload() {
}
}
- for (List<Node *>::Element *E = nodes_to_add.front(); E; E = E->next()) {
- get_tree()->get_root()->add_child(E->get());
+ for (Node *E : nodes_to_add) {
+ get_tree()->get_root()->add_child(E);
}
updating_autoload = false;
@@ -649,8 +643,8 @@ void EditorAutoloadSettings::drop_data_fw(const Point2 &p_point, const Variant &
int i = 0;
- for (List<AutoLoadInfo>::Element *F = autoload_cache.front(); F; F = F->next()) {
- orders.write[i++] = F->get().order;
+ for (const AutoLoadInfo &F : autoload_cache) {
+ orders.write[i++] = F.order;
}
orders.sort();
@@ -661,9 +655,9 @@ void EditorAutoloadSettings::drop_data_fw(const Point2 &p_point, const Variant &
i = 0;
- for (List<AutoLoadInfo>::Element *F = autoload_cache.front(); F; F = F->next()) {
- undo_redo->add_do_method(ProjectSettings::get_singleton(), "set_order", "autoload/" + F->get().name, orders[i++]);
- undo_redo->add_undo_method(ProjectSettings::get_singleton(), "set_order", "autoload/" + F->get().name, F->get().order);
+ for (const AutoLoadInfo &F : autoload_cache) {
+ undo_redo->add_do_method(ProjectSettings::get_singleton(), "set_order", "autoload/" + F.name, orders[i++]);
+ undo_redo->add_undo_method(ProjectSettings::get_singleton(), "set_order", "autoload/" + F.name, F.order);
}
orders.clear();
@@ -764,9 +758,7 @@ EditorAutoloadSettings::EditorAutoloadSettings() {
// Make first cache
List<PropertyInfo> props;
ProjectSettings::get_singleton()->get_property_list(&props);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- const PropertyInfo &pi = E->get();
-
+ for (const PropertyInfo &pi : props) {
if (!pi.name.begins_with("autoload/")) {
continue;
}
@@ -799,9 +791,7 @@ EditorAutoloadSettings::EditorAutoloadSettings() {
autoload_cache.push_back(info);
}
- for (List<AutoLoadInfo>::Element *E = autoload_cache.front(); E; E = E->next()) {
- AutoLoadInfo &info = E->get();
-
+ for (AutoLoadInfo &info : autoload_cache) {
info.node = _create_autoload(info.path);
if (info.node) {
@@ -904,8 +894,7 @@ EditorAutoloadSettings::EditorAutoloadSettings() {
}
EditorAutoloadSettings::~EditorAutoloadSettings() {
- for (List<AutoLoadInfo>::Element *E = autoload_cache.front(); E; E = E->next()) {
- AutoLoadInfo &info = E->get();
+ for (const AutoLoadInfo &info : autoload_cache) {
if (info.node && !info.in_editor) {
memdelete(info.node);
}
diff --git a/editor/editor_data.cpp b/editor/editor_data.cpp
index 3529a4fbdc..c62e5b75b2 100644
--- a/editor/editor_data.cpp
+++ b/editor/editor_data.cpp
@@ -299,13 +299,13 @@ void EditorData::copy_object_params(Object *p_object) {
List<PropertyInfo> pinfo;
p_object->get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_EDITOR) || E->get().name == "script" || E->get().name == "scripts") {
+ for (const PropertyInfo &E : pinfo) {
+ if (!(E.usage & PROPERTY_USAGE_EDITOR) || E.name == "script" || E.name == "scripts") {
continue;
}
PropertyData pd;
- pd.name = E->get().name;
+ pd.name = E.name;
pd.value = p_object->get(pd.name);
clipboard.push_back(pd);
}
@@ -404,9 +404,9 @@ void EditorData::restore_editor_global_states() {
void EditorData::paste_object_params(Object *p_object) {
ERR_FAIL_NULL(p_object);
undo_redo.create_action(TTR("Paste Params"));
- for (List<PropertyData>::Element *E = clipboard.front(); E; E = E->next()) {
- String name = E->get().name;
- undo_redo.add_do_property(p_object, name, E->get().value);
+ for (const PropertyData &E : clipboard) {
+ String name = E.name;
+ undo_redo.add_do_property(p_object, name, E.value);
undo_redo.add_undo_property(p_object, name, p_object->get(name));
}
undo_redo.commit_action();
@@ -616,8 +616,8 @@ bool EditorData::check_and_update_scene(int p_idx) {
//transfer selection
List<Node *> new_selection;
- for (List<Node *>::Element *E = edited_scene.write[p_idx].selection.front(); E; E = E->next()) {
- NodePath p = edited_scene[p_idx].root->get_path_to(E->get());
+ for (const Node *E : edited_scene.write[p_idx].selection) {
+ NodePath p = edited_scene[p_idx].root->get_path_to(E);
Node *new_node = new_scene->get_node(p);
if (new_node) {
new_selection.push_back(new_node);
@@ -841,8 +841,8 @@ Dictionary EditorData::restore_edited_scene_state(EditorSelection *p_selection,
p_history->history = es.history_stored;
p_selection->clear();
- for (List<Node *>::Element *E = es.selection.front(); E; E = E->next()) {
- p_selection->add_node(E->get());
+ for (Node *E : es.selection) {
+ p_selection->add_node(E);
}
set_editor_states(es.editor_states);
@@ -964,9 +964,9 @@ void EditorData::script_class_save_icon_paths() {
_script_class_icon_paths.get_key_list(&keys);
Dictionary d;
- for (List<StringName>::Element *E = keys.front(); E; E = E->next()) {
- if (ScriptServer::is_global_class(E->get())) {
- d[E->get()] = _script_class_icon_paths[E->get()];
+ for (const StringName &E : keys) {
+ if (ScriptServer::is_global_class(E)) {
+ d[E] = _script_class_icon_paths[E];
}
}
@@ -996,8 +996,8 @@ void EditorData::script_class_load_icon_paths() {
List<Variant> keys;
d.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- String name = E->get().operator String();
+ for (const Variant &E : keys) {
+ String name = E.operator String();
_script_class_icon_paths[name] = d[name];
String path = ScriptServer::get_global_class_path(name);
@@ -1038,8 +1038,8 @@ void EditorSelection::add_node(Node *p_node) {
changed = true;
nl_changed = true;
Object *meta = nullptr;
- for (List<Object *>::Element *E = editor_plugins.front(); E; E = E->next()) {
- meta = E->get()->call("_get_editor_data", p_node);
+ for (Object *E : editor_plugins) {
+ meta = E->call("_get_editor_data", p_node);
if (meta) {
break;
}
@@ -1076,8 +1076,8 @@ bool EditorSelection::is_selected(Node *p_node) const {
Array EditorSelection::_get_transformable_selected_nodes() {
Array ret;
- for (List<Node *>::Element *E = selected_node_list.front(); E; E = E->next()) {
- ret.push_back(E->get());
+ for (const Node *E : selected_node_list) {
+ ret.push_back(E);
}
return ret;
diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp
index fc483b46b7..b374f56f6d 100644
--- a/editor/editor_export.cpp
+++ b/editor/editor_export.cpp
@@ -80,9 +80,9 @@ bool EditorExportPreset::_get(const StringName &p_name, Variant &r_ret) const {
}
void EditorExportPreset::_get_property_list(List<PropertyInfo> *p_list) const {
- for (const List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
- if (platform->get_option_visibility(E->get().name, values)) {
- p_list->push_back(E->get());
+ for (const PropertyInfo &E : properties) {
+ if (platform->get_option_visibility(E.name, values)) {
+ p_list->push_back(E);
}
}
}
@@ -436,9 +436,9 @@ Ref<EditorExportPreset> EditorExportPlatform::create_preset() {
List<ExportOption> options;
get_export_options(&options);
- for (List<ExportOption>::Element *E = options.front(); E; E = E->next()) {
- preset->properties.push_back(E->get().option);
- preset->values[E->get().option.name] = E->get().default_value;
+ for (const ExportOption &E : options) {
+ preset->properties.push_back(E.option);
+ preset->values[E.option.name] = E.default_value;
}
return preset;
@@ -679,9 +679,9 @@ EditorExportPlatform::FeatureContainers EditorExportPlatform::get_feature_contai
platform->get_preset_features(p_preset, &feature_list);
FeatureContainers result;
- for (List<String>::Element *E = feature_list.front(); E; E = E->next()) {
- result.features.insert(E->get());
- result.features_pv.push_back(E->get());
+ for (const String &E : feature_list) {
+ result.features.insert(E);
+ result.features_pv.push_back(E);
}
if (p_preset->get_custom_features() != String()) {
@@ -752,9 +752,7 @@ Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> &
List<PropertyInfo> props;
ProjectSettings::get_singleton()->get_property_list(&props);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- const PropertyInfo &pi = E->get();
-
+ for (const PropertyInfo &pi : props) {
if (!pi.name.begins_with("autoload/")) {
continue;
}
@@ -899,8 +897,8 @@ Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> &
Set<String> remap_features;
- for (List<String>::Element *F = remaps.front(); F; F = F->next()) {
- String remap = F->get();
+ for (const String &F : remaps) {
+ String remap = F;
String feature = remap.get_slice(".", 1);
if (features.has(feature)) {
remap_features.insert(feature);
@@ -913,8 +911,8 @@ Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> &
err = OK;
- for (List<String>::Element *F = remaps.front(); F; F = F->next()) {
- String remap = F->get();
+ for (const String &F : remaps) {
+ String remap = F;
if (remap == "path") {
String remapped_path = config->get_value("remap", remap);
Vector<uint8_t> array = FileAccess::get_file_as_array(remapped_path);
@@ -1050,6 +1048,13 @@ Error EditorExportPlatform::export_project_files(const Ref<EditorExportPreset> &
return err;
}
}
+ if (FileAccess::exists(ResourceUID::CACHE_FILE)) {
+ Vector<uint8_t> array = FileAccess::get_file_as_array(ResourceUID::CACHE_FILE);
+ err = p_func(p_udata, ResourceUID::CACHE_FILE, array, idx, total, enc_in_filters, enc_ex_filters, key);
+ if (err != OK) {
+ return err;
+ }
+ }
// Store text server data if it is supported.
if (TS->has_feature(TextServer::FEATURE_USE_SUPPORT_DATA)) {
@@ -1362,7 +1367,7 @@ void EditorExportPlatform::gen_export_flags(Vector<String> &r_flags, int p_flags
if (breakpoints.size()) {
r_flags.push_back("--breakpoints");
String bpoints;
- for (const List<String>::Element *E = breakpoints.front(); E; E = E->next()) {
+ for (List<String>::Element *E = breakpoints.front(); E; E = E->next()) {
bpoints += E->get().replace(" ", "%20");
if (E->next()) {
bpoints += ",";
@@ -1436,8 +1441,8 @@ void EditorExport::_save() {
String option_section = "preset." + itos(i) + ".options";
- for (const List<PropertyInfo>::Element *E = preset->get_properties().front(); E; E = E->next()) {
- config->set_value(option_section, E->get().name, preset->get(E->get().name));
+ for (const PropertyInfo &E : preset->get_properties()) {
+ config->set_value(option_section, E.name, preset->get(E.name));
}
}
@@ -1642,10 +1647,10 @@ void EditorExport::load_config() {
config->get_section_keys(option_section, &options);
- for (List<String>::Element *E = options.front(); E; E = E->next()) {
- Variant value = config->get_value(option_section, E->get());
+ for (const String &E : options) {
+ Variant value = config->get_value(option_section, E);
- preset->set(E->get(), value);
+ preset->set(E, value);
}
add_export_preset(preset);
@@ -1684,11 +1689,11 @@ void EditorExport::update_export_presets() {
preset->properties.clear();
preset->values.clear();
- for (List<EditorExportPlatform::ExportOption>::Element *E = options.front(); E; E = E->next()) {
- preset->properties.push_back(E->get().option);
+ for (const EditorExportPlatform::ExportOption &E : options) {
+ preset->properties.push_back(E.option);
- StringName option_name = E->get().option.name;
- preset->values[option_name] = previous_values.has(option_name) ? previous_values[option_name] : E->get().default_value;
+ StringName option_name = E.option.name;
+ preset->values[option_name] = previous_values.has(option_name) ? previous_values[option_name] : E.default_value;
}
}
}
diff --git a/editor/editor_feature_profile.cpp b/editor/editor_feature_profile.cpp
index e36cc7bc2e..72a0c353e8 100644
--- a/editor/editor_feature_profile.cpp
+++ b/editor/editor_feature_profile.cpp
@@ -527,9 +527,8 @@ void EditorFeatureProfileManager::_fill_classes_from(TreeItem *p_parent, const S
ClassDB::get_direct_inheriters_from_class(p_class, &child_classes);
child_classes.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = child_classes.front(); E; E = E->next()) {
- String name = E->get();
- if (name.begins_with("Editor") || ClassDB::get_api_type(name) != ClassDB::API_CORE) {
+ for (const StringName &name : child_classes) {
+ if (String(name).begins_with("Editor") || ClassDB::get_api_type(name) != ClassDB::API_CORE) {
continue;
}
_fill_classes_from(class_item, name, p_selected);
@@ -597,9 +596,9 @@ void EditorFeatureProfileManager::_class_list_item_selected() {
TreeItem *properties = property_list->create_item(root);
properties->set_text(0, TTR("Class Properties:"));
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- String name = E->get().name;
- if (!(E->get().usage & PROPERTY_USAGE_EDITOR)) {
+ for (const PropertyInfo &E : props) {
+ String name = E.name;
+ if (!(E.usage & PROPERTY_USAGE_EDITOR)) {
continue;
}
TreeItem *property = property_list->create_item(properties);
@@ -609,7 +608,7 @@ void EditorFeatureProfileManager::_class_list_item_selected() {
property->set_checked(0, !edited->is_class_property_disabled(class_name, name));
property->set_text(0, name.capitalize());
property->set_metadata(0, name);
- String icon_type = Variant::get_type_name(E->get().type);
+ String icon_type = Variant::get_type_name(E.type);
property->set_icon(0, EditorNode::get_singleton()->get_class_icon(icon_type));
}
}
@@ -741,7 +740,7 @@ void EditorFeatureProfileManager::_update_selected_profile() {
TreeItem *features = class_list->create_item(root);
TreeItem *last_feature;
- features->set_text(0, TTR("Main Features") + ":");
+ features->set_text(0, TTR("Main Features:"));
for (int i = 0; i < EditorFeatureProfile::FEATURE_MAX; i++) {
TreeItem *feature;
if (i == EditorFeatureProfile::FEATURE_IMPORT_DOCK) {
@@ -765,7 +764,7 @@ void EditorFeatureProfileManager::_update_selected_profile() {
}
TreeItem *classes = class_list->create_item(root);
- classes->set_text(0, TTR("Nodes and Classes") + ":");
+ classes->set_text(0, TTR("Nodes and Classes:"));
_fill_classes_from(classes, "Node", class_selected);
_fill_classes_from(classes, "Resource", class_selected);
@@ -918,7 +917,7 @@ EditorFeatureProfileManager::EditorFeatureProfileManager() {
class_list_vbc->set_h_size_flags(Control::SIZE_EXPAND_FILL);
class_list = memnew(Tree);
- class_list_vbc->add_margin_child(TTR("Configure Selected Profile") + ":", class_list, true);
+ class_list_vbc->add_margin_child(TTR("Configure Selected Profile:"), class_list, true);
class_list->set_hide_root(true);
class_list->set_edit_checkbox_cell_only_when_checkbox_is_pressed(true);
class_list->connect("cell_selected", callable_mp(this, &EditorFeatureProfileManager::_class_list_item_selected));
@@ -932,11 +931,11 @@ EditorFeatureProfileManager::EditorFeatureProfileManager() {
property_list_vbc->set_h_size_flags(Control::SIZE_EXPAND_FILL);
description_bit = memnew(EditorHelpBit);
- property_list_vbc->add_margin_child(TTR("Description") + ":", description_bit, false);
+ property_list_vbc->add_margin_child(TTR("Description:"), description_bit, false);
description_bit->set_custom_minimum_size(Size2(0, 80) * EDSCALE);
property_list = memnew(Tree);
- property_list_vbc->add_margin_child(TTR("Extra Options") + ":", property_list, true);
+ property_list_vbc->add_margin_child(TTR("Extra Options:"), property_list, true);
property_list->set_hide_root(true);
property_list->set_hide_folding(true);
property_list->set_edit_checkbox_cell_only_when_checkbox_is_pressed(true);
@@ -958,7 +957,7 @@ EditorFeatureProfileManager::EditorFeatureProfileManager() {
VBoxContainer *new_profile_vb = memnew(VBoxContainer);
new_profile_dialog->add_child(new_profile_vb);
Label *new_profile_label = memnew(Label);
- new_profile_label->set_text(TTR("New profile name") + ":");
+ new_profile_label->set_text(TTR("New profile name:"));
new_profile_vb->add_child(new_profile_label);
new_profile_name = memnew(LineEdit);
new_profile_vb->add_child(new_profile_name);
diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp
index ed2edb5a5d..5ccbed1b49 100644
--- a/editor/editor_file_dialog.cpp
+++ b/editor/editor_file_dialog.cpp
@@ -830,8 +830,8 @@ void EditorFileDialog::update_file_list() {
while (!files.is_empty()) {
bool match = patterns.is_empty();
- for (List<String>::Element *E = patterns.front(); E; E = E->next()) {
- if (files.front()->get().matchn(E->get())) {
+ for (const String &E : patterns) {
+ if (files.front()->get().matchn(E)) {
match = true;
break;
}
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp
index 82a71c0e0c..78861eff9d 100644
--- a/editor/editor_file_system.cpp
+++ b/editor/editor_file_system.cpp
@@ -43,7 +43,7 @@
EditorFileSystem *EditorFileSystem::singleton = nullptr;
//the name is the version, to keep compatibility with different versions of Godot
-#define CACHE_FILE_NAME "filesystem_cache6"
+#define CACHE_FILE_NAME "filesystem_cache7"
void EditorFileSystemDirectory::sort_files() {
files.sort_custom<FileInfoSort>();
@@ -116,7 +116,26 @@ String EditorFileSystemDirectory::get_file_path(int p_idx) const {
Vector<String> EditorFileSystemDirectory::get_file_deps(int p_idx) const {
ERR_FAIL_INDEX_V(p_idx, files.size(), Vector<String>());
- return files[p_idx]->deps;
+ Vector<String> deps;
+
+ for (int i = 0; i < files[p_idx]->deps.size(); i++) {
+ String dep = files[p_idx]->deps[i];
+ int sep_idx = dep.find("::"); //may contain type information, unwanted
+ if (sep_idx != -1) {
+ dep = dep.substr(0, sep_idx);
+ }
+ ResourceUID::ID uid = ResourceUID::get_singleton()->text_to_id(dep);
+ if (uid != ResourceUID::INVALID_ID) {
+ //return proper dependency resource from uid
+ if (ResourceUID::get_singleton()->has_id(uid)) {
+ dep = ResourceUID::get_singleton()->get_id_path(uid);
+ } else {
+ continue;
+ }
+ }
+ deps.push_back(dep);
+ }
+ return deps;
}
bool EditorFileSystemDirectory::get_file_import_is_valid(int p_idx) const {
@@ -234,7 +253,7 @@ void EditorFileSystem::_scan_filesystem() {
} else {
Vector<String> split = l.split("::");
- ERR_CONTINUE(split.size() != 8);
+ ERR_CONTINUE(split.size() != 9);
String name = split[0];
String file;
@@ -243,15 +262,16 @@ void EditorFileSystem::_scan_filesystem() {
FileCache fc;
fc.type = split[1];
- fc.modification_time = split[2].to_int();
- fc.import_modification_time = split[3].to_int();
- fc.import_valid = split[4].to_int() != 0;
- fc.import_group_file = split[5].strip_edges();
- fc.script_class_name = split[6].get_slice("<>", 0);
- fc.script_class_extends = split[6].get_slice("<>", 1);
- fc.script_class_icon_path = split[6].get_slice("<>", 2);
-
- String deps = split[7].strip_edges();
+ fc.uid = split[2].to_int();
+ fc.modification_time = split[3].to_int();
+ fc.import_modification_time = split[4].to_int();
+ fc.import_valid = split[5].to_int() != 0;
+ fc.import_group_file = split[6].strip_edges();
+ fc.script_class_name = split[7].get_slice("<>", 0);
+ fc.script_class_extends = split[7].get_slice("<>", 1);
+ fc.script_class_icon_path = split[7].get_slice("<>", 2);
+
+ String deps = split[8].strip_edges();
if (deps.length()) {
Vector<String> dp = deps.split("<>");
for (int i = 0; i < dp.size(); i++) {
@@ -368,6 +388,7 @@ bool EditorFileSystem::_test_for_reimport(const String &p_path, bool p_only_impo
Vector<String> dest_files;
String dest_md5 = "";
int version = 0;
+ bool found_uid = false;
while (true) {
assign = Variant();
@@ -395,6 +416,8 @@ bool EditorFileSystem::_test_for_reimport(const String &p_path, bool p_only_impo
version = value;
} else if (assign == "importer") {
importer_name = value;
+ } else if (assign == "uid") {
+ found_uid = true;
} else if (!p_only_imported_files) {
if (assign == "source_file") {
source_file = value;
@@ -414,6 +437,10 @@ bool EditorFileSystem::_test_for_reimport(const String &p_path, bool p_only_impo
return false; //keep mode, do not reimport
}
+ if (!found_uid) {
+ return true; //UUID not found, old format, reimport.
+ }
+
Ref<ResourceImporter> importer = ResourceFormatImporter::get_singleton()->get_importer_by_name(importer_name);
if (importer->get_format_version() > version) {
@@ -457,8 +484,8 @@ bool EditorFileSystem::_test_for_reimport(const String &p_path, bool p_only_impo
memdelete(md5s);
//imported files are gone, reimport
- for (List<String>::Element *E = to_check.front(); E; E = E->next()) {
- if (!FileAccess::exists(E->get())) {
+ for (const String &E : to_check) {
+ if (!FileAccess::exists(E)) {
return true;
}
}
@@ -497,9 +524,7 @@ bool EditorFileSystem::_update_scan_actions() {
Vector<String> reimports;
Vector<String> reloads;
- for (List<ItemAction>::Element *E = scan_actions.front(); E; E = E->next()) {
- ItemAction &ia = E->get();
-
+ for (const ItemAction &ia : scan_actions) {
switch (ia.action) {
case ItemAction::ACTION_NONE: {
} break;
@@ -582,6 +607,9 @@ bool EditorFileSystem::_update_scan_actions() {
if (reimports.size()) {
reimport_files(reimports);
+ } else {
+ //reimport files will update the uid cache file so if nothing was reimported, update it manually
+ ResourceUID::get_singleton()->update_cache();
}
if (first_scan) {
@@ -756,6 +784,7 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
if (fc && fc->modification_time == mt && fc->import_modification_time == import_mt && !_test_for_reimport(path, true)) {
fi->type = fc->type;
+ fi->uid = fc->uid;
fi->deps = fc->deps;
fi->modified_time = fc->modification_time;
fi->import_modified_time = fc->import_modification_time;
@@ -781,8 +810,14 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
//note: I think this should not happen any longer..
}
+ if (fc->uid == ResourceUID::INVALID_ID) {
+ // imported files should always have a UUID, so attempt to fetch it.
+ fi->uid = ResourceLoader::get_resource_uid(path);
+ }
+
} else {
fi->type = ResourceFormatImporter::get_singleton()->get_resource_type(path);
+ fi->uid = ResourceFormatImporter::get_singleton()->get_resource_uid(path);
fi->import_group_file = ResourceFormatImporter::get_singleton()->get_import_group_file(path);
fi->script_class_name = _get_global_script_class(fi->type, path, &fi->script_class_extends, &fi->script_class_icon_path);
fi->modified_time = 0;
@@ -799,6 +834,7 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
if (fc && fc->modification_time == mt) {
//not imported, so just update type if changed
fi->type = fc->type;
+ fi->uid = fc->uid;
fi->modified_time = fc->modification_time;
fi->deps = fc->deps;
fi->import_modified_time = 0;
@@ -809,6 +845,7 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
} else {
//new or modified time
fi->type = ResourceLoader::get_resource_type(path);
+ fi->uid = ResourceLoader::get_resource_uid(path);
fi->script_class_name = _get_global_script_class(fi->type, path, &fi->script_class_extends, &fi->script_class_icon_path);
fi->deps = _get_dependencies(path);
fi->modified_time = mt;
@@ -817,6 +854,14 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
}
}
+ if (fi->uid != ResourceUID::INVALID_ID) {
+ if (ResourceUID::get_singleton()->has_id(fi->uid)) {
+ ResourceUID::get_singleton()->set_id(fi->uid, path);
+ } else {
+ ResourceUID::get_singleton()->add_id(fi->uid, path);
+ }
+ }
+
for (int i = 0; i < ScriptServer::get_language_count(); i++) {
ScriptLanguage *lang = ScriptServer::get_language(i);
if (lang->supports_documentation() && fi->type == lang->get_type()) {
@@ -1027,8 +1072,8 @@ void EditorFileSystem::_delete_internal_files(String p_file) {
List<String> paths;
ResourceFormatImporter::get_singleton()->get_internal_resource_path_list(p_file, &paths);
DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
- for (List<String>::Element *E = paths.front(); E; E = E->next()) {
- da->remove(E->get());
+ for (const String &E : paths) {
+ da->remove(E);
}
da->remove(p_file + ".import");
memdelete(da);
@@ -1181,7 +1226,7 @@ void EditorFileSystem::_save_filesystem_cache(EditorFileSystemDirectory *p_dir,
if (p_dir->files[i]->import_group_file != String()) {
group_file_cache.insert(p_dir->files[i]->import_group_file);
}
- String s = p_dir->files[i]->file + "::" + p_dir->files[i]->type + "::" + itos(p_dir->files[i]->modified_time) + "::" + itos(p_dir->files[i]->import_modified_time) + "::" + itos(p_dir->files[i]->import_valid) + "::" + p_dir->files[i]->import_group_file + "::" + p_dir->files[i]->script_class_name + "<>" + p_dir->files[i]->script_class_extends + "<>" + p_dir->files[i]->script_class_icon_path;
+ String s = p_dir->files[i]->file + "::" + p_dir->files[i]->type + "::" + itos(p_dir->files[i]->uid) + "::" + itos(p_dir->files[i]->modified_time) + "::" + itos(p_dir->files[i]->import_modified_time) + "::" + itos(p_dir->files[i]->import_valid) + "::" + p_dir->files[i]->import_group_file + "::" + p_dir->files[i]->script_class_name + "<>" + p_dir->files[i]->script_class_extends + "<>" + p_dir->files[i]->script_class_icon_path;
s += "::";
for (int j = 0; j < p_dir->files[i]->deps.size(); j++) {
if (j > 0) {
@@ -1368,8 +1413,8 @@ Vector<String> EditorFileSystem::_get_dependencies(const String &p_path) {
ResourceLoader::get_dependencies(p_path, &deps);
Vector<String> ret;
- for (List<String>::Element *E = deps.front(); E; E = E->next()) {
- ret.push_back(E->get());
+ for (const String &E : deps) {
+ ret.push_back(E);
}
return ret;
@@ -1462,6 +1507,11 @@ void EditorFileSystem::update_file(const String &p_file) {
//was removed
_delete_internal_files(p_file);
if (cpos != -1) { // Might've never been part of the editor file system (*.* files deleted in Open dialog).
+ if (fs->files[cpos]->uid != ResourceUID::INVALID_ID) {
+ if (ResourceUID::get_singleton()->has_id(fs->files[cpos]->uid)) {
+ ResourceUID::get_singleton()->remove_id(fs->files[cpos]->uid);
+ }
+ }
memdelete(fs->files[cpos]);
fs->files.remove(cpos);
}
@@ -1472,6 +1522,7 @@ void EditorFileSystem::update_file(const String &p_file) {
}
String type = ResourceLoader::get_resource_type(p_file);
+ ResourceUID::ID uid = ResourceLoader::get_resource_uid(p_file);
if (cpos == -1) {
// The file did not exist, it was added.
@@ -1504,12 +1555,22 @@ void EditorFileSystem::update_file(const String &p_file) {
}
fs->files[cpos]->type = type;
+ fs->files[cpos]->uid = uid;
fs->files[cpos]->script_class_name = _get_global_script_class(type, p_file, &fs->files[cpos]->script_class_extends, &fs->files[cpos]->script_class_icon_path);
fs->files[cpos]->import_group_file = ResourceLoader::get_import_group_file(p_file);
fs->files[cpos]->modified_time = FileAccess::get_modified_time(p_file);
fs->files[cpos]->deps = _get_dependencies(p_file);
fs->files[cpos]->import_valid = ResourceLoader::is_import_valid(p_file);
+ if (uid != ResourceUID::INVALID_ID) {
+ if (ResourceUID::get_singleton()->has_id(uid)) {
+ ResourceUID::get_singleton()->set_id(uid, p_file);
+ } else {
+ ResourceUID::get_singleton()->add_id(uid, p_file);
+ }
+
+ ResourceUID::get_singleton()->update_cache();
+ }
// Update preview
EditorResourcePreview::get_singleton()->check_for_invalidation(p_file);
@@ -1532,7 +1593,6 @@ Error EditorFileSystem::_reimport_group(const String &p_group_file, const Vector
ERR_CONTINUE(file_importer_name == String());
if (importer_name != String() && importer_name != file_importer_name) {
- print_line("one importer '" + importer_name + "' the other '" + file_importer_name + "'.");
EditorNode::get_singleton()->show_warning(vformat(TTR("There are multiple importers for different types pointing to file %s, import aborted"), p_group_file));
ERR_FAIL_V(ERR_FILE_CORRUPT);
}
@@ -1549,15 +1609,14 @@ Error EditorFileSystem::_reimport_group(const String &p_group_file, const Vector
List<ResourceImporter::ImportOption> options;
importer->get_import_options(&options);
//set default values
- for (List<ResourceImporter::ImportOption>::Element *E = options.front(); E; E = E->next()) {
- source_file_options[p_files[i]][E->get().option.name] = E->get().default_value;
+ for (const ResourceImporter::ImportOption &E : options) {
+ source_file_options[p_files[i]][E.option.name] = E.default_value;
}
if (config->has_section("params")) {
List<String> sk;
config->get_section_keys("params", &sk);
- for (List<String>::Element *E = sk.front(); E; E = E->next()) {
- String param = E->get();
+ for (const String &param : sk) {
Variant value = config->get_value("params", param);
//override with whathever is in file
source_file_options[p_files[i]][param] = value;
@@ -1631,9 +1690,9 @@ Error EditorFileSystem::_reimport_group(const String &p_group_file, const Vector
List<ResourceImporter::ImportOption> options;
importer->get_import_options(&options);
//set default values
- for (List<ResourceImporter::ImportOption>::Element *F = options.front(); F; F = F->next()) {
- String base = F->get().option.name;
- Variant v = F->get().default_value;
+ for (const ResourceImporter::ImportOption &F : options) {
+ String base = F.option.name;
+ Variant v = F.default_value;
if (source_file_options[file].has(base)) {
v = source_file_options[file][base];
}
@@ -1702,6 +1761,8 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
params = *p_custom_options;
}
+ ResourceUID::ID uid = ResourceUID::INVALID_ID;
+
if (FileAccess::exists(p_file + ".import")) {
//use existing
if (p_custom_options == nullptr) {
@@ -1712,12 +1773,20 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
if (cf->has_section("params")) {
List<String> sk;
cf->get_section_keys("params", &sk);
- for (List<String>::Element *E = sk.front(); E; E = E->next()) {
- params[E->get()] = cf->get_value("params", E->get());
+ for (const String &E : sk) {
+ params[E] = cf->get_value("params", E);
}
}
- if (p_custom_importer == String() && cf->has_section("remap")) {
- importer_name = cf->get_value("remap", "importer");
+
+ if (cf->has_section("remap")) {
+ if (p_custom_importer == String()) {
+ importer_name = cf->get_value("remap", "importer");
+ }
+
+ if (cf->has_section_key("remap", "uid")) {
+ String uidt = cf->get_value("remap", "uid");
+ uid = ResourceUID::get_singleton()->text_to_id(uidt);
+ }
}
}
}
@@ -1754,9 +1823,9 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
List<ResourceImporter::ImportOption> opts;
importer->get_import_options(&opts);
- for (List<ResourceImporter::ImportOption>::Element *E = opts.front(); E; E = E->next()) {
- if (!params.has(E->get().option.name)) { //this one is not present
- params[E->get().option.name] = E->get().default_value;
+ for (const ResourceImporter::ImportOption &E : opts) {
+ if (!params.has(E.option.name)) { //this one is not present
+ params[E.option.name] = E.default_value;
}
}
@@ -1766,8 +1835,8 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
List<Variant> v;
d.get_key_list(&v);
- for (List<Variant>::Element *E = v.front(); E; E = E->next()) {
- params[E->get()] = d[E->get()];
+ for (const Variant &E : v) {
+ params[E] = d[E];
}
}
@@ -1800,6 +1869,12 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
f->store_line("type=\"" + importer->get_resource_type() + "\"");
}
+ if (uid == ResourceUID::INVALID_ID) {
+ uid = ResourceUID::get_singleton()->create_id();
+ }
+
+ f->store_line("uid=\"" + ResourceUID::get_singleton()->id_to_text(uid) + "\""); //store in readable format
+
Vector<String> dest_paths;
if (err == OK) {
@@ -1807,10 +1882,10 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
//no path
} else if (import_variants.size()) {
//import with variants
- for (List<String>::Element *E = import_variants.front(); E; E = E->next()) {
- String path = base_path.c_escape() + "." + E->get() + "." + importer->get_save_extension();
+ for (const String &E : import_variants) {
+ String path = base_path.c_escape() + "." + E + "." + importer->get_save_extension();
- f->store_line("path." + E->get() + "=\"" + path + "\"");
+ f->store_line("path." + E + "=\"" + path + "\"");
dest_paths.push_back(path);
}
} else {
@@ -1833,9 +1908,9 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
if (gen_files.size()) {
Array genf;
- for (List<String>::Element *E = gen_files.front(); E; E = E->next()) {
- genf.push_back(E->get());
- dest_paths.push_back(E->get());
+ for (const String &E : gen_files) {
+ genf.push_back(E);
+ dest_paths.push_back(E);
}
String value;
@@ -1859,8 +1934,8 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
//store options in provided order, to avoid file changing. Order is also important because first match is accepted first.
- for (List<ResourceImporter::ImportOption>::Element *E = opts.front(); E; E = E->next()) {
- String base = E->get().option.name;
+ for (const ResourceImporter::ImportOption &E : opts) {
+ String base = E.option.name;
String value;
VariantWriter::write_to_string(params[base], value);
f->store_line(base + "=" + value);
@@ -1885,8 +1960,15 @@ void EditorFileSystem::_reimport_file(const String &p_file, const Map<StringName
fs->files[cpos]->import_modified_time = FileAccess::get_modified_time(p_file + ".import");
fs->files[cpos]->deps = _get_dependencies(p_file);
fs->files[cpos]->type = importer->get_resource_type();
+ fs->files[cpos]->uid = uid;
fs->files[cpos]->import_valid = ResourceLoader::is_import_valid(p_file);
+ if (ResourceUID::get_singleton()->has_id(uid)) {
+ ResourceUID::get_singleton()->set_id(uid, p_file);
+ } else {
+ ResourceUID::get_singleton()->add_id(uid, p_file);
+ }
+
//if file is currently up, maybe the source it was loaded from changed, so import math must be updated for it
//to reload properly
if (ResourceCache::has(p_file)) {
@@ -1937,11 +2019,18 @@ void EditorFileSystem::reimport_files(const Vector<String> &p_files) {
Set<String> groups_to_reimport;
for (int i = 0; i < p_files.size(); i++) {
- String group_file = ResourceFormatImporter::get_singleton()->get_import_group_file(p_files[i]);
+ String file = p_files[i];
+
+ ResourceUID::ID uid = ResourceUID::get_singleton()->text_to_id(file);
+ if (uid != ResourceUID::INVALID_ID && ResourceUID::get_singleton()->has_id(uid)) {
+ file = ResourceUID::get_singleton()->get_id_path(uid);
+ }
+
+ String group_file = ResourceFormatImporter::get_singleton()->get_import_group_file(file);
- if (group_file_cache.has(p_files[i])) {
+ if (group_file_cache.has(file)) {
//maybe the file itself is a group!
- groups_to_reimport.insert(p_files[i]);
+ groups_to_reimport.insert(file);
//groups do not belong to grups
group_file = String();
} else if (group_file != String()) {
@@ -1950,15 +2039,15 @@ void EditorFileSystem::reimport_files(const Vector<String> &p_files) {
} else {
//it's a regular file
ImportFile ifile;
- ifile.path = p_files[i];
- ResourceFormatImporter::get_singleton()->get_import_order_threads_and_importer(p_files[i], ifile.order, ifile.threaded, ifile.importer);
+ ifile.path = file;
+ ResourceFormatImporter::get_singleton()->get_import_order_threads_and_importer(file, ifile.order, ifile.threaded, ifile.importer);
reimport_files.push_back(ifile);
}
//group may have changed, so also update group reference
EditorFileSystemDirectory *fs = nullptr;
int cpos = -1;
- if (_find_file(p_files[i], &fs, cpos)) {
+ if (_find_file(file, &fs, cpos)) {
fs->files.write[cpos]->import_group_file = group_file;
}
}
@@ -2023,6 +2112,8 @@ void EditorFileSystem::reimport_files(const Vector<String> &p_files) {
}
}
+ ResourceUID::get_singleton()->update_cache(); //after reimporting, update the cache
+
_save_filesystem_cache();
importing = false;
if (!is_scanning()) {
@@ -2080,9 +2171,8 @@ void EditorFileSystem::_move_group_files(EditorFileSystemDirectory *efd, const S
List<String> sk;
config->get_section_keys("params", &sk);
- for (List<String>::Element *E = sk.front(); E; E = E->next()) {
+ for (const String &param : sk) {
//not very clean, but should work
- String param = E->get();
String value = config->get_value("params", param);
if (value == p_group_file) {
config->set_value("params", param, p_new_location);
@@ -2108,6 +2198,30 @@ void EditorFileSystem::move_group_file(const String &p_path, const String &p_new
}
}
+ResourceUID::ID EditorFileSystem::_resource_saver_get_resource_id_for_path(const String &p_path, bool p_generate) {
+ if (!p_path.is_resource_file() || p_path.begins_with("res://.godot")) {
+ //saved externally (configuration file) or internal file, do not assign an ID.
+ return ResourceUID::INVALID_ID;
+ }
+
+ EditorFileSystemDirectory *fs = nullptr;
+ int cpos = -1;
+
+ if (!singleton->_find_file(p_path, &fs, cpos)) {
+ if (p_generate) {
+ return ResourceUID::get_singleton()->create_id(); //just create a new one, we will be notified of save anyway and fetch the right UUID at that time, to keep things simple.
+ } else {
+ return ResourceUID::INVALID_ID;
+ }
+ } else if (fs->files[cpos]->uid != ResourceUID::INVALID_ID) {
+ return fs->files[cpos]->uid;
+ } else if (p_generate) {
+ return ResourceUID::get_singleton()->create_id(); //just create a new one, we will be notified of save anyway and fetch the right UUID at that time, to keep things simple.
+ } else {
+ return ResourceUID::INVALID_ID;
+ }
+}
+
void EditorFileSystem::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_filesystem"), &EditorFileSystem::get_filesystem);
ClassDB::bind_method(D_METHOD("is_scanning"), &EditorFileSystem::is_scanning);
@@ -2131,14 +2245,14 @@ void EditorFileSystem::_update_extensions() {
List<String> extensionsl;
ResourceLoader::get_recognized_extensions_for_type("", &extensionsl);
- for (List<String>::Element *E = extensionsl.front(); E; E = E->next()) {
- valid_extensions.insert(E->get());
+ for (const String &E : extensionsl) {
+ valid_extensions.insert(E);
}
extensionsl.clear();
ResourceFormatImporter::get_singleton()->get_recognized_extensions(&extensionsl);
- for (List<String>::Element *E = extensionsl.front(); E; E = E->next()) {
- import_extensions.insert(E->get());
+ for (const String &E : extensionsl) {
+ import_extensions.insert(E);
}
}
@@ -2169,8 +2283,11 @@ EditorFileSystem::EditorFileSystem() {
scan_changes_pending = false;
revalidate_import_files = false;
import_threads.init();
+ ResourceUID::get_singleton()->clear(); //will be updated on scan
+ ResourceSaver::set_get_resource_id_for_path(_resource_saver_get_resource_id_for_path);
}
EditorFileSystem::~EditorFileSystem() {
import_threads.finish();
+ ResourceSaver::set_get_resource_id_for_path(nullptr);
}
diff --git a/editor/editor_file_system.h b/editor/editor_file_system.h
index 37eee13c16..9dce29d09c 100644
--- a/editor/editor_file_system.h
+++ b/editor/editor_file_system.h
@@ -55,6 +55,7 @@ class EditorFileSystemDirectory : public Object {
struct FileInfo {
String file;
StringName type;
+ ResourceUID::ID uid = ResourceUID::INVALID_ID;
uint64_t modified_time = 0;
uint64_t import_modified_time = 0;
bool import_valid = false;
@@ -159,6 +160,7 @@ class EditorFileSystem : public Node {
/* Used for reading the filesystem cache file */
struct FileCache {
String type;
+ ResourceUID::ID uid = ResourceUID::INVALID_ID;
uint64_t modification_time = 0;
uint64_t import_modification_time = 0;
Vector<String> deps;
@@ -251,6 +253,8 @@ class EditorFileSystem : public Node {
void _reimport_thread(uint32_t p_index, ImportThreadData *p_import_data);
+ static ResourceUID::ID _resource_saver_get_resource_id_for_path(const String &p_path, bool p_generate);
+
protected:
void _notification(int p_what);
static void _bind_methods();
diff --git a/editor/editor_folding.cpp b/editor/editor_folding.cpp
index 5d6c415d39..29e3236ac2 100644
--- a/editor/editor_folding.cpp
+++ b/editor/editor_folding.cpp
@@ -109,10 +109,10 @@ void EditorFolding::_fill_folds(const Node *p_root, const Node *p_node, Array &p
List<PropertyInfo> plist;
p_node->get_property_list(&plist);
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (E->get().usage & PROPERTY_USAGE_EDITOR) {
- if (E->get().type == Variant::OBJECT) {
- RES res = p_node->get(E->get().name);
+ for (const PropertyInfo &E : plist) {
+ if (E.usage & PROPERTY_USAGE_EDITOR) {
+ if (E.type == Variant::OBJECT) {
+ RES res = p_node->get(E.name);
if (res.is_valid() && !resources.has(res) && res->get_path() != String() && !res->get_path().is_resource_file()) {
Vector<String> res_unfolds = _get_unfolds(res.ptr());
resource_folds.push_back(res->get_path());
@@ -228,41 +228,41 @@ void EditorFolding::_do_object_unfolds(Object *p_object, Set<RES> &resources) {
Set<String> unfold_group;
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (E->get().usage & PROPERTY_USAGE_CATEGORY) {
+ for (const PropertyInfo &E : plist) {
+ if (E.usage & PROPERTY_USAGE_CATEGORY) {
group = "";
group_base = "";
}
- if (E->get().usage & PROPERTY_USAGE_GROUP) {
- group = E->get().name;
- group_base = E->get().hint_string;
+ if (E.usage & PROPERTY_USAGE_GROUP) {
+ group = E.name;
+ group_base = E.hint_string;
if (group_base.ends_with("_")) {
group_base = group_base.substr(0, group_base.length() - 1);
}
}
//can unfold
- if (E->get().usage & PROPERTY_USAGE_EDITOR) {
+ if (E.usage & PROPERTY_USAGE_EDITOR) {
if (group != "") { //group
- if (group_base == String() || E->get().name.begins_with(group_base)) {
- bool can_revert = EditorPropertyRevert::can_property_revert(p_object, E->get().name);
+ if (group_base == String() || E.name.begins_with(group_base)) {
+ bool can_revert = EditorPropertyRevert::can_property_revert(p_object, E.name);
if (can_revert) {
unfold_group.insert(group);
}
}
} else { //path
- int last = E->get().name.rfind("/");
+ int last = E.name.rfind("/");
if (last != -1) {
- bool can_revert = EditorPropertyRevert::can_property_revert(p_object, E->get().name);
+ bool can_revert = EditorPropertyRevert::can_property_revert(p_object, E.name);
if (can_revert) {
- unfold_group.insert(E->get().name.substr(0, last));
+ unfold_group.insert(E.name.substr(0, last));
}
}
}
- if (E->get().type == Variant::OBJECT) {
- RES res = p_object->get(E->get().name);
- print_line("res: " + String(E->get().name) + " valid " + itos(res.is_valid()));
+ if (E.type == Variant::OBJECT) {
+ RES res = p_object->get(E.name);
+ print_line("res: " + String(E.name) + " valid " + itos(res.is_valid()));
if (res.is_valid()) {
print_line("path " + res->get_path());
}
diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp
index 569a28215c..f92b9ac8ba 100644
--- a/editor/editor_help.cpp
+++ b/editor/editor_help.cpp
@@ -758,8 +758,8 @@ void EditorHelp::_update_doc() {
if (cd.theme_properties[i].description != "") {
class_desc->push_font(doc_font);
- class_desc->add_text(" ");
class_desc->push_color(comment_color);
+ class_desc->add_text(U" – ");
_add_text(DTR(cd.theme_properties[i].description));
class_desc->pop();
class_desc->pop();
@@ -941,8 +941,7 @@ void EditorHelp::_update_doc() {
if (enum_list[i].description != "") {
class_desc->push_font(doc_font);
class_desc->push_color(comment_color);
- static const char32_t dash[6] = { ' ', ' ', 0x2013 /* en dash */, ' ', ' ', 0 };
- class_desc->add_text(String(dash));
+ class_desc->add_text(U" – ");
_add_text(DTR(enum_list[i].description));
class_desc->pop();
class_desc->pop();
@@ -1011,8 +1010,7 @@ void EditorHelp::_update_doc() {
if (constants[i].description != "") {
class_desc->push_font(doc_font);
class_desc->push_color(comment_color);
- static const char32_t dash[6] = { ' ', ' ', 0x2013 /* en dash */, ' ', ' ', 0 };
- class_desc->add_text(String(dash));
+ class_desc->add_text(U" – ");
_add_text(DTR(constants[i].description));
class_desc->pop();
class_desc->pop();
diff --git a/editor/editor_help_search.cpp b/editor/editor_help_search.cpp
index fabbf97f49..57f0345dad 100644
--- a/editor/editor_help_search.cpp
+++ b/editor/editor_help_search.cpp
@@ -367,7 +367,7 @@ bool EditorHelpSearch::Runner::_phase_match_classes() {
if (search_flags & SEARCH_THEME_ITEMS) {
for (int i = 0; i < class_doc.theme_properties.size(); i++) {
if (_match_string(term, class_doc.theme_properties[i].name)) {
- match.theme_properties.push_back(const_cast<DocData::PropertyDoc *>(&class_doc.theme_properties[i]));
+ match.theme_properties.push_back(const_cast<DocData::ThemeItemDoc *>(&class_doc.theme_properties[i]));
}
}
}
@@ -571,7 +571,7 @@ TreeItem *EditorHelpSearch::Runner::_create_property_item(TreeItem *p_parent, co
return _create_member_item(p_parent, p_class_doc->name, "MemberProperty", p_doc->name, p_doc->name, TTRC("Property"), "property", tooltip);
}
-TreeItem *EditorHelpSearch::Runner::_create_theme_property_item(TreeItem *p_parent, const DocData::ClassDoc *p_class_doc, const DocData::PropertyDoc *p_doc) {
+TreeItem *EditorHelpSearch::Runner::_create_theme_property_item(TreeItem *p_parent, const DocData::ClassDoc *p_class_doc, const DocData::ThemeItemDoc *p_doc) {
String tooltip = p_doc->type + " " + p_class_doc->name + "." + p_doc->name;
return _create_member_item(p_parent, p_class_doc->name, "MemberTheme", p_doc->name, p_doc->name, TTRC("Theme Property"), "theme_item", tooltip);
}
diff --git a/editor/editor_help_search.h b/editor/editor_help_search.h
index 75da2d5aba..bc57c0e3c6 100644
--- a/editor/editor_help_search.h
+++ b/editor/editor_help_search.h
@@ -103,7 +103,7 @@ class EditorHelpSearch::Runner : public RefCounted {
Vector<DocData::MethodDoc *> signals;
Vector<DocData::ConstantDoc *> constants;
Vector<DocData::PropertyDoc *> properties;
- Vector<DocData::PropertyDoc *> theme_properties;
+ Vector<DocData::ThemeItemDoc *> theme_properties;
bool required() {
return name || methods.size() || signals.size() || constants.size() || properties.size() || theme_properties.size();
@@ -145,7 +145,7 @@ class EditorHelpSearch::Runner : public RefCounted {
TreeItem *_create_signal_item(TreeItem *p_parent, const DocData::ClassDoc *p_class_doc, const DocData::MethodDoc *p_doc);
TreeItem *_create_constant_item(TreeItem *p_parent, const DocData::ClassDoc *p_class_doc, const DocData::ConstantDoc *p_doc);
TreeItem *_create_property_item(TreeItem *p_parent, const DocData::ClassDoc *p_class_doc, const DocData::PropertyDoc *p_doc);
- TreeItem *_create_theme_property_item(TreeItem *p_parent, const DocData::ClassDoc *p_class_doc, const DocData::PropertyDoc *p_doc);
+ TreeItem *_create_theme_property_item(TreeItem *p_parent, const DocData::ClassDoc *p_class_doc, const DocData::ThemeItemDoc *p_doc);
TreeItem *_create_member_item(TreeItem *p_parent, const String &p_class_name, const String &p_icon, const String &p_name, const String &p_text, const String &p_type, const String &p_metatype, const String &p_tooltip);
public:
diff --git a/editor/editor_inspector.cpp b/editor/editor_inspector.cpp
index 9fa2007597..d7b7e8e52d 100644
--- a/editor/editor_inspector.cpp
+++ b/editor/editor_inspector.cpp
@@ -417,7 +417,7 @@ bool EditorPropertyRevert::may_node_be_in_instance(Node *p_node) {
return might_be; // or might not be
}
-bool EditorPropertyRevert::get_instantiated_node_original_property(Node *p_node, const StringName &p_prop, Variant &value) {
+bool EditorPropertyRevert::get_instantiated_node_original_property(Node *p_node, const StringName &p_prop, Variant &value, bool p_check_class_default) {
Node *node = p_node;
Node *orig = node;
@@ -455,7 +455,7 @@ bool EditorPropertyRevert::get_instantiated_node_original_property(Node *p_node,
node = node->get_owner();
}
- if (!found && p_node) {
+ if (p_check_class_default && !found && p_node) {
//if not found, try default class value
Variant attempt = ClassDB::class_get_default_property_value(p_node->get_class_name(), p_prop);
if (attempt.get_type() != Variant::NIL) {
@@ -493,6 +493,7 @@ bool EditorPropertyRevert::is_node_property_different(Node *p_node, const Varian
if (ss.is_valid()) {
found_state = true;
+ break;
}
if (node == edited_scene) {
//just in case
@@ -506,59 +507,71 @@ bool EditorPropertyRevert::is_node_property_different(Node *p_node, const Varian
}
}
- if (p_current.get_type() == Variant::FLOAT && p_orig.get_type() == Variant::FLOAT) {
- float a = p_current;
- float b = p_orig;
+ return is_property_value_different(p_current, p_orig);
+}
- return !Math::is_equal_approx(a, b); //this must be done because, as some scenes save as text, there might be a tiny difference in floats due to numerical error
+bool EditorPropertyRevert::is_property_value_different(const Variant &p_a, const Variant &p_b) {
+ if (p_a.get_type() == Variant::FLOAT && p_b.get_type() == Variant::FLOAT) {
+ //this must be done because, as some scenes save as text, there might be a tiny difference in floats due to numerical error
+ return !Math::is_equal_approx((float)p_a, (float)p_b);
+ } else {
+ return p_a != p_b;
}
-
- return bool(Variant::evaluate(Variant::OP_NOT_EQUAL, p_current, p_orig));
}
-bool EditorPropertyRevert::can_property_revert(Object *p_object, const StringName &p_property) {
- bool has_revert = false;
+Variant EditorPropertyRevert::get_property_revert_value(Object *p_object, const StringName &p_property) {
+ // If the object implements property_can_revert, rely on that completely
+ // (i.e. don't then try to revert to default value - the property_get_revert implementation
+ // can do that if so desired)
+ if (p_object->has_method("property_can_revert") && p_object->call("property_can_revert", p_property)) {
+ return p_object->call("property_get_revert", p_property);
+ }
+ Ref<Script> scr = p_object->get_script();
Node *node = Object::cast_to<Node>(p_object);
-
if (node && EditorPropertyRevert::may_node_be_in_instance(node)) {
- //check for difference including instantiation
- Variant vorig;
- if (EditorPropertyRevert::get_instantiated_node_original_property(node, p_property, vorig)) {
- Variant v = p_object->get(p_property);
-
- if (EditorPropertyRevert::is_node_property_different(node, v, vorig)) {
- has_revert = true;
+ //if this node is an instance or inherits, but it has a script attached which is unrelated
+ //to the one set for the parent and also has a default value for the property, consider that
+ //has precedence over the value from the parent, because that is an explicit source of defaults
+ //closer in the tree to the current node
+ bool ignore_parent = false;
+ if (scr.is_valid()) {
+ Variant sorig;
+ if (EditorPropertyRevert::get_instantiated_node_original_property(node, "script", sorig) && !scr->inherits_script(sorig)) {
+ Variant dummy;
+ if (scr->get_property_default_value(p_property, dummy)) {
+ ignore_parent = true;
+ }
}
}
- } else {
- //check for difference against default class value instead
- Variant default_value = ClassDB::class_get_default_property_value(p_object->get_class_name(), p_property);
- if (default_value != Variant() && default_value != p_object->get(p_property)) {
- has_revert = true;
+
+ if (!ignore_parent) {
+ //check for difference including instantiation
+ Variant vorig;
+ if (EditorPropertyRevert::get_instantiated_node_original_property(node, p_property, vorig, false)) {
+ return vorig;
+ }
}
}
- // If the object implements property_can_revert, rely on that completely
- // (i.e. don't then try to revert to default value - the property_get_revert implementation
- // can do that if so desired)
- if (p_object->has_method("property_can_revert")) {
- has_revert = p_object->call("property_can_revert", p_property).operator bool();
- } else {
- if (!has_revert && !p_object->get_script().is_null()) {
- Ref<Script> scr = p_object->get_script();
- if (scr.is_valid()) {
- Variant orig_value;
- if (scr->get_property_default_value(p_property, orig_value)) {
- if (orig_value != p_object->get(p_property)) {
- has_revert = true;
- }
- }
- }
+ if (scr.is_valid()) {
+ Variant orig_value;
+ if (scr->get_property_default_value(p_property, orig_value)) {
+ return orig_value;
}
}
- return has_revert;
+ //report default class value instead
+ return ClassDB::class_get_default_property_value(p_object->get_class_name(), p_property);
+}
+
+bool EditorPropertyRevert::can_property_revert(Object *p_object, const StringName &p_property) {
+ Variant revert_value = EditorPropertyRevert::get_property_revert_value(p_object, p_property);
+ if (revert_value.get_type() == Variant::NIL) {
+ return false;
+ }
+ Variant current_value = p_object->get(p_property);
+ return EditorPropertyRevert::is_property_value_different(current_value, revert_value);
}
void EditorProperty::update_reload_status() {
@@ -761,41 +774,11 @@ void EditorProperty::_gui_input(const Ref<InputEvent> &p_event) {
}
if (revert_rect.has_point(mpos)) {
- Variant vorig;
-
- Node *node = Object::cast_to<Node>(object);
- if (node && EditorPropertyRevert::may_node_be_in_instance(node) && EditorPropertyRevert::get_instantiated_node_original_property(node, property, vorig)) {
- emit_changed(property, vorig.duplicate(true));
- update_property();
- return;
- }
-
- if (object->call("property_can_revert", property).operator bool()) {
- Variant rev = object->call("property_get_revert", property);
- emit_changed(property, rev);
- update_property();
- return;
- }
-
- if (!object->get_script().is_null()) {
- Ref<Script> scr = object->get_script();
- if (scr.is_valid()) {
- Variant orig_value;
- if (scr->get_property_default_value(property, orig_value)) {
- emit_changed(property, orig_value);
- update_property();
- return;
- }
- }
- }
-
- Variant default_value = ClassDB::class_get_default_property_value(object->get_class_name(), property);
- if (default_value != Variant()) {
- emit_changed(property, default_value);
- update_property();
- return;
- }
+ Variant revert_value = EditorPropertyRevert::get_property_revert_value(object, property);
+ emit_changed(property, revert_value);
+ update_property();
}
+
if (check_rect.has_point(mpos)) {
checked = !checked;
update();
@@ -1508,9 +1491,9 @@ String EditorInspector::get_selected_path() const {
}
void EditorInspector::_parse_added_editors(VBoxContainer *current_vbox, Ref<EditorInspectorPlugin> ped) {
- for (List<EditorInspectorPlugin::AddedEditor>::Element *F = ped->added_editors.front(); F; F = F->next()) {
- EditorProperty *ep = Object::cast_to<EditorProperty>(F->get().property_editor);
- current_vbox->add_child(F->get().property_editor);
+ for (const EditorInspectorPlugin::AddedEditor &F : ped->added_editors) {
+ EditorProperty *ep = Object::cast_to<EditorProperty>(F.property_editor);
+ current_vbox->add_child(F.property_editor);
if (ep) {
ep->object = object;
@@ -1524,19 +1507,19 @@ void EditorInspector::_parse_added_editors(VBoxContainer *current_vbox, Ref<Edit
ep->connect("resource_selected", callable_mp(this, &EditorInspector::_resource_selected), varray(), CONNECT_DEFERRED);
ep->connect("object_id_selected", callable_mp(this, &EditorInspector::_object_id_selected), varray(), CONNECT_DEFERRED);
- if (F->get().properties.size()) {
- if (F->get().properties.size() == 1) {
+ if (F.properties.size()) {
+ if (F.properties.size() == 1) {
//since it's one, associate:
- ep->property = F->get().properties[0];
+ ep->property = F.properties[0];
ep->property_usage = 0;
}
- if (F->get().label != String()) {
- ep->set_label(F->get().label);
+ if (F.label != String()) {
+ ep->set_label(F.label);
}
- for (int i = 0; i < F->get().properties.size(); i++) {
- String prop = F->get().properties[i];
+ for (int i = 0; i < F.properties.size(); i++) {
+ String prop = F.properties[i];
if (!editor_property_map.has(prop)) {
editor_property_map[prop] = List<EditorProperty *>();
@@ -1648,8 +1631,7 @@ void EditorInspector::update_tree() {
Color sscolor = get_theme_color(SNAME("prop_subsection"), SNAME("Editor"));
- for (List<Ref<EditorInspectorPlugin>>::Element *E = valid_plugins.front(); E; E = E->next()) {
- Ref<EditorInspectorPlugin> ped = E->get();
+ for (Ref<EditorInspectorPlugin> &ped : valid_plugins) {
ped->parse_begin(object);
_parse_added_editors(main_vbox, ped);
}
@@ -1746,8 +1728,7 @@ void EditorInspector::update_tree() {
category->set_tooltip(p.name + "::" + (class_descr_cache[type2] == "" ? "" : class_descr_cache[type2]));
}
- for (List<Ref<EditorInspectorPlugin>>::Element *E = valid_plugins.front(); E; E = E->next()) {
- Ref<EditorInspectorPlugin> ped = E->get();
+ for (Ref<EditorInspectorPlugin> &ped : valid_plugins) {
ped->parse_category(object, p.name);
_parse_added_editors(main_vbox, ped);
}
@@ -1948,36 +1929,35 @@ void EditorInspector::update_tree() {
doc_hint = descr;
}
- for (List<Ref<EditorInspectorPlugin>>::Element *E = valid_plugins.front(); E; E = E->next()) {
- Ref<EditorInspectorPlugin> ped = E->get();
+ for (Ref<EditorInspectorPlugin> &ped : valid_plugins) {
bool exclusive = ped->parse_property(object, p.type, p.name, p.hint, p.hint_string, p.usage, wide_editors);
List<EditorInspectorPlugin::AddedEditor> editors = ped->added_editors; //make a copy, since plugins may be used again in a sub-inspector
ped->added_editors.clear();
- for (List<EditorInspectorPlugin::AddedEditor>::Element *F = editors.front(); F; F = F->next()) {
- EditorProperty *ep = Object::cast_to<EditorProperty>(F->get().property_editor);
+ for (const EditorInspectorPlugin::AddedEditor &F : editors) {
+ EditorProperty *ep = Object::cast_to<EditorProperty>(F.property_editor);
if (ep) {
//set all this before the control gets the ENTER_TREE notification
ep->object = object;
- if (F->get().properties.size()) {
- if (F->get().properties.size() == 1) {
+ if (F.properties.size()) {
+ if (F.properties.size() == 1) {
//since it's one, associate:
- ep->property = F->get().properties[0];
+ ep->property = F.properties[0];
ep->property_usage = p.usage;
//and set label?
}
- if (F->get().label != String()) {
- ep->set_label(F->get().label);
+ if (F.label != String()) {
+ ep->set_label(F.label);
} else {
- //use existin one
+ // Use the existing one.
ep->set_label(name);
}
- for (int i = 0; i < F->get().properties.size(); i++) {
- String prop = F->get().properties[i];
+ for (int i = 0; i < F.properties.size(); i++) {
+ String prop = F.properties[i];
if (!editor_property_map.has(prop)) {
editor_property_map[prop] = List<EditorProperty *>();
@@ -1995,7 +1975,7 @@ void EditorInspector::update_tree() {
ep->set_deletable(deletable_properties);
}
- current_vbox->add_child(F->get().property_editor);
+ current_vbox->add_child(F.property_editor);
if (ep) {
ep->connect("property_changed", callable_mp(this, &EditorInspector::_property_changed));
@@ -2031,8 +2011,7 @@ void EditorInspector::update_tree() {
}
}
- for (List<Ref<EditorInspectorPlugin>>::Element *E = valid_plugins.front(); E; E = E->next()) {
- Ref<EditorInspectorPlugin> ped = E->get();
+ for (Ref<EditorInspectorPlugin> &ped : valid_plugins) {
ped->parse_end();
_parse_added_editors(main_vbox, ped);
}
@@ -2045,10 +2024,10 @@ void EditorInspector::update_property(const String &p_prop) {
return;
}
- for (List<EditorProperty *>::Element *E = editor_property_map[p_prop].front(); E; E = E->next()) {
- E->get()->update_property();
- E->get()->update_reload_status();
- E->get()->update_cache();
+ for (EditorProperty *E : editor_property_map[p_prop]) {
+ E->update_property();
+ E->update_reload_status();
+ E->update_cache();
}
}
@@ -2157,24 +2136,24 @@ bool EditorInspector::is_using_folding() {
}
void EditorInspector::collapse_all_folding() {
- for (List<EditorInspectorSection *>::Element *E = sections.front(); E; E = E->next()) {
- E->get()->fold();
+ for (EditorInspectorSection *E : sections) {
+ E->fold();
}
for (Map<StringName, List<EditorProperty *>>::Element *F = editor_property_map.front(); F; F = F->next()) {
- for (List<EditorProperty *>::Element *E = F->get().front(); E; E = E->next()) {
- E->get()->collapse_all_folding();
+ for (EditorProperty *E : F->get()) {
+ E->collapse_all_folding();
}
}
}
void EditorInspector::expand_all_folding() {
- for (List<EditorInspectorSection *>::Element *E = sections.front(); E; E = E->next()) {
- E->get()->unfold();
+ for (EditorInspectorSection *E : sections) {
+ E->unfold();
}
for (Map<StringName, List<EditorProperty *>>::Element *F = editor_property_map.front(); F; F = F->next()) {
- for (List<EditorProperty *>::Element *E = F->get().front(); E; E = E->next()) {
- E->get()->expand_all_folding();
+ for (EditorProperty *E : F->get()) {
+ E->expand_all_folding();
}
}
}
@@ -2239,9 +2218,9 @@ void EditorInspector::_edit_request_change(Object *p_object, const String &p_pro
void EditorInspector::_edit_set(const String &p_name, const Variant &p_value, bool p_refresh_all, const String &p_changed_field) {
if (autoclear && editor_property_map.has(p_name)) {
- for (List<EditorProperty *>::Element *E = editor_property_map[p_name].front(); E; E = E->next()) {
- if (E->get()->is_checkable()) {
- E->get()->set_checked(true);
+ for (EditorProperty *E : editor_property_map[p_name]) {
+ if (E->is_checkable()) {
+ E->set_checked(true);
}
}
}
@@ -2308,8 +2287,8 @@ void EditorInspector::_edit_set(const String &p_name, const Variant &p_value, bo
}
if (editor_property_map.has(p_name)) {
- for (List<EditorProperty *>::Element *E = editor_property_map[p_name].front(); E; E = E->next()) {
- E->get()->update_reload_status();
+ for (EditorProperty *E : editor_property_map[p_name]) {
+ E->update_reload_status();
}
}
}
@@ -2395,10 +2374,10 @@ void EditorInspector::_property_checked(const String &p_path, bool p_checked) {
Variant to_create;
List<PropertyInfo> pinfo;
object->get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (E->get().name == p_path) {
+ for (const PropertyInfo &E : pinfo) {
+ if (E.name == p_path) {
Callable::CallError ce;
- Variant::construct(E->get().type, to_create, nullptr, 0, ce);
+ Variant::construct(E.type, to_create, nullptr, 0, ce);
break;
}
}
@@ -2406,10 +2385,10 @@ void EditorInspector::_property_checked(const String &p_path, bool p_checked) {
}
if (editor_property_map.has(p_path)) {
- for (List<EditorProperty *>::Element *E = editor_property_map[p_path].front(); E; E = E->next()) {
- E->get()->update_property();
- E->get()->update_reload_status();
- E->get()->update_cache();
+ for (EditorProperty *E : editor_property_map[p_path]) {
+ E->update_property();
+ E->update_reload_status();
+ E->update_cache();
}
}
@@ -2426,9 +2405,9 @@ void EditorInspector::_property_selected(const String &p_path, int p_focusable)
if (F->key() == property_selected) {
continue;
}
- for (List<EditorProperty *>::Element *E = F->get().front(); E; E = E->next()) {
- if (E->get()->is_selected()) {
- E->get()->deselect();
+ for (EditorProperty *E : F->get()) {
+ if (E->is_selected()) {
+ E->deselect();
}
}
}
@@ -2485,11 +2464,11 @@ void EditorInspector::_notification(int p_what) {
refresh_countdown -= get_process_delta_time();
if (refresh_countdown <= 0) {
for (Map<StringName, List<EditorProperty *>>::Element *F = editor_property_map.front(); F; F = F->next()) {
- for (List<EditorProperty *>::Element *E = F->get().front(); E; E = E->next()) {
- if (!E->get()->is_cache_valid()) {
- E->get()->update_property();
- E->get()->update_reload_status();
- E->get()->update_cache();
+ for (EditorProperty *E : F->get()) {
+ if (!E->is_cache_valid()) {
+ E->update_property();
+ E->update_reload_status();
+ E->update_cache();
}
}
}
@@ -2508,10 +2487,10 @@ void EditorInspector::_notification(int p_what) {
while (pending.size()) {
StringName prop = pending.front()->get();
if (editor_property_map.has(prop)) {
- for (List<EditorProperty *>::Element *E = editor_property_map[prop].front(); E; E = E->next()) {
- E->get()->update_property();
- E->get()->update_reload_status();
- E->get()->update_cache();
+ for (EditorProperty *E : editor_property_map[prop]) {
+ E->update_property();
+ E->update_reload_status();
+ E->update_cache();
}
}
pending.erase(pending.front());
@@ -2599,8 +2578,7 @@ void EditorInspector::_update_script_class_properties(const Object &p_object, Li
}
Set<StringName> added;
- for (List<Ref<Script>>::Element *E = classes.front(); E; E = E->next()) {
- Ref<Script> s = E->get();
+ for (const Ref<Script> &s : classes) {
String path = s->get_path();
String name = EditorNode::get_editor_data().script_class_get_name(path);
if (name.is_empty()) {
diff --git a/editor/editor_inspector.h b/editor/editor_inspector.h
index ee70bd4397..3c9ba9f39d 100644
--- a/editor/editor_inspector.h
+++ b/editor/editor_inspector.h
@@ -40,8 +40,10 @@ class UndoRedo;
class EditorPropertyRevert {
public:
static bool may_node_be_in_instance(Node *p_node);
- static bool get_instantiated_node_original_property(Node *p_node, const StringName &p_prop, Variant &value);
+ static bool get_instantiated_node_original_property(Node *p_node, const StringName &p_prop, Variant &value, bool p_check_class_default = true);
static bool is_node_property_different(Node *p_node, const Variant &p_current, const Variant &p_orig);
+ static bool is_property_value_different(const Variant &p_a, const Variant &p_b);
+ static Variant get_property_revert_value(Object *p_object, const StringName &p_property);
static bool can_property_revert(Object *p_object, const StringName &p_property);
};
diff --git a/editor/editor_layouts_dialog.cpp b/editor/editor_layouts_dialog.cpp
index 16538a2376..0c8660c216 100644
--- a/editor/editor_layouts_dialog.cpp
+++ b/editor/editor_layouts_dialog.cpp
@@ -92,8 +92,8 @@ void EditorLayoutsDialog::_post_popup() {
List<String> layouts;
config.ptr()->get_sections(&layouts);
- for (List<String>::Element *E = layouts.front(); E; E = E->next()) {
- layout_names->add_item(**E);
+ for (const String &E : layouts) {
+ layout_names->add_item(E);
}
}
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index 6bdf428f81..20710b192c 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -70,6 +70,7 @@
#include "servers/rendering/rendering_device.h"
#include "editor/audio_stream_preview.h"
+#include "editor/debugger/debug_adapter/debug_adapter_server.h"
#include "editor/debugger/editor_debugger_node.h"
#include "editor/dependency_editor.h"
#include "editor/editor_about.h"
@@ -797,8 +798,8 @@ void EditorNode::_resources_changed(const Vector<String> &p_resources) {
}
if (changed.size()) {
- for (List<Ref<Resource>>::Element *E = changed.front(); E; E = E->next()) {
- E->get()->reload_from_file();
+ for (Ref<Resource> &res : changed) {
+ res->reload_from_file();
}
}
}
@@ -914,8 +915,8 @@ void EditorNode::_resources_reimported(const Vector<String> &p_resources) {
}
}
- for (List<String>::Element *E = scenes.front(); E; E = E->next()) {
- reload_scene(E->get());
+ for (const String &E : scenes) {
+ reload_scene(E);
}
scene_tabs->set_current_tab(current_tab);
@@ -926,7 +927,7 @@ void EditorNode::_sources_changed(bool p_exist) {
waiting_for_first_scan = false;
// Reload the global shader variables, but this time
- // loading texures, as they are now properly imported.
+ // loading textures, as they are now properly imported.
RenderingServer::get_singleton()->global_variables_load_settings(true);
// Start preview thread now that it's safe.
@@ -1143,13 +1144,13 @@ void EditorNode::save_resource_as(const Ref<Resource> &p_resource, const String
file->clear_filters();
List<String> preferred;
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- if (p_resource->is_class("Script") && (E->get() == "tres" || E->get() == "res")) {
+ for (const String &E : extensions) {
+ if (p_resource->is_class("Script") && (E == "tres" || E == "res")) {
//this serves no purpose and confused people
continue;
}
- file->add_filter("*." + E->get() + " ; " + E->get().to_upper());
- preferred.push_back(E->get());
+ file->add_filter("*." + E + " ; " + E.to_upper());
+ preferred.push_back(E);
}
// Lowest priority extension
List<String>::Element *res_element = preferred.find("res");
@@ -1168,7 +1169,8 @@ void EditorNode::save_resource_as(const Ref<Resource> &p_resource, const String
file->set_current_file(p_resource->get_path().get_file());
} else {
if (extensions.size()) {
- file->set_current_file("new_" + p_resource->get_class().to_lower() + "." + preferred.front()->get().to_lower());
+ String resource_name_snake_case = p_resource->get_class().camelcase_to_underscore();
+ file->set_current_file("new_" + resource_name_snake_case + "." + preferred.front()->get().to_lower());
} else {
file->set_current_file(String());
}
@@ -1184,7 +1186,8 @@ void EditorNode::save_resource_as(const Ref<Resource> &p_resource, const String
} else if (preferred.size()) {
String existing;
if (extensions.size()) {
- existing = "new_" + p_resource->get_class().to_lower() + "." + preferred.front()->get().to_lower();
+ String resource_name_snake_case = p_resource->get_class().camelcase_to_underscore();
+ existing = "new_" + resource_name_snake_case + "." + preferred.front()->get().to_lower();
}
file->set_current_path(existing);
}
@@ -1259,10 +1262,10 @@ void EditorNode::_get_scene_metadata(const String &p_file) {
cf->get_section_keys("editor_states", &esl);
Dictionary md;
- for (List<String>::Element *E = esl.front(); E; E = E->next()) {
- Variant st = cf->get_value("editor_states", E->get());
+ for (const String &E : esl) {
+ Variant st = cf->get_value("editor_states", E);
if (st.get_type() != Variant::NIL) {
- md[E->get()] = st;
+ md[E] = st;
}
}
@@ -1295,8 +1298,8 @@ void EditorNode::_set_scene_metadata(const String &p_file, int p_idx) {
List<Variant> keys;
md.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- cf->set_value("editor_states", E->get(), md[E->get()]);
+ for (const Variant &E : keys) {
+ cf->set_value("editor_states", E, md[E]);
}
Error err = cf->save(path);
@@ -1334,14 +1337,14 @@ bool EditorNode::_find_and_save_edited_subresources(Object *obj, Map<RES, bool>
bool ret_changed = false;
List<PropertyInfo> pi;
obj->get_property_list(&pi);
- for (List<PropertyInfo>::Element *E = pi.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : pi) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- switch (E->get().type) {
+ switch (E.type) {
case Variant::OBJECT: {
- RES res = obj->get(E->get().name);
+ RES res = obj->get(E.name);
if (_find_and_save_resource(res, processed, flags)) {
ret_changed = true;
@@ -1349,7 +1352,7 @@ bool EditorNode::_find_and_save_edited_subresources(Object *obj, Map<RES, bool>
} break;
case Variant::ARRAY: {
- Array varray = obj->get(E->get().name);
+ Array varray = obj->get(E.name);
int len = varray.size();
for (int i = 0; i < len; i++) {
const Variant &v = varray.get(i);
@@ -1361,11 +1364,11 @@ bool EditorNode::_find_and_save_edited_subresources(Object *obj, Map<RES, bool>
} break;
case Variant::DICTIONARY: {
- Dictionary d = obj->get(E->get().name);
+ Dictionary d = obj->get(E.name);
List<Variant> keys;
d.get_key_list(&keys);
- for (List<Variant>::Element *F = keys.front(); F; F = F->next()) {
- Variant v = d[F->get()];
+ for (const Variant &F : keys) {
+ Variant v = d[F];
RES res = v;
if (_find_and_save_resource(res, processed, flags)) {
ret_changed = true;
@@ -1520,9 +1523,9 @@ static bool _find_edited_resources(const Ref<Resource> &p_resource, Set<Ref<Reso
p_resource->get_property_list(&plist);
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (E->get().type == Variant::OBJECT && E->get().usage & PROPERTY_USAGE_STORAGE && !(E->get().usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT)) {
- RES res = p_resource->get(E->get().name);
+ for (const PropertyInfo &E : plist) {
+ if (E.type == Variant::OBJECT && E.usage & PROPERTY_USAGE_STORAGE && !(E.usage & PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT)) {
+ RES res = p_resource->get(E.name);
if (res.is_null()) {
continue;
}
@@ -1551,12 +1554,11 @@ int EditorNode::_save_external_resources() {
int saved = 0;
List<Ref<Resource>> cached;
ResourceCache::get_cached_resources(&cached);
- for (List<Ref<Resource>>::Element *E = cached.front(); E; E = E->next()) {
- Ref<Resource> res = E->get();
+ for (const Ref<Resource> &res : cached) {
if (!res->get_path().is_resource_file()) {
continue;
}
- //not only check if this resourec is edited, check contained subresources too
+ //not only check if this resource is edited, check contained subresources too
if (_find_edited_resources(res, edited_subresources)) {
ResourceSaver::save(res->get_path(), res, flg);
saved++;
@@ -1642,8 +1644,8 @@ void EditorNode::_save_scene(String p_file, int idx) {
editor_data.save_editor_external_data();
- for (List<Ref<AnimatedValuesBackup>>::Element *E = anim_backups.front(); E; E = E->next()) {
- E->get()->restore();
+ for (Ref<AnimatedValuesBackup> &E : anim_backups) {
+ E->restore();
}
if (err == OK) {
@@ -1884,8 +1886,8 @@ void EditorNode::_dialog_action(String p_file) {
// erase
List<String> keys;
config->get_section_keys(p_file, &keys);
- for (List<String>::Element *E = keys.front(); E; E = E->next()) {
- config->set_value(p_file, E->get(), Variant());
+ for (const String &E : keys) {
+ config->set_value(p_file, E, Variant());
}
config->save(EditorSettings::get_singleton()->get_editor_layouts_config());
@@ -2533,8 +2535,8 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
Ref<MeshLibrary> ml(memnew(MeshLibrary));
ResourceSaver::get_recognized_extensions(ml, &extensions);
file_export_lib->clear_filters();
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- file_export_lib->add_filter("*." + E->get());
+ for (const String &E : extensions) {
+ file_export_lib->add_filter("*." + E);
}
file_export_lib->popup_file_dialog();
@@ -3796,6 +3798,8 @@ void EditorNode::unregister_editor_types() {
if (EditorPaths::get_singleton()) {
EditorPaths::free();
}
+
+ EditorResourcePicker::clear_caches();
}
void EditorNode::stop_child_process(OS::ProcessID p_pid) {
@@ -4055,11 +4059,11 @@ void EditorNode::_build_icon_type_cache() {
List<StringName> tl;
StringName ei = "EditorIcons";
theme_base->get_theme()->get_icon_list(ei, &tl);
- for (List<StringName>::Element *E = tl.front(); E; E = E->next()) {
- if (!ClassDB::class_exists(E->get())) {
+ for (const StringName &E : tl) {
+ if (!ClassDB::class_exists(E)) {
continue;
}
- icon_type_cache[E->get()] = theme_base->get_theme()->get_icon(E->get(), ei);
+ icon_type_cache[E] = theme_base->get_theme()->get_icon(E, ei);
}
}
@@ -4784,9 +4788,7 @@ void EditorNode::_update_layouts_menu() {
List<String> layouts;
config.ptr()->get_sections(&layouts);
- for (List<String>::Element *E = layouts.front(); E; E = E->next()) {
- String layout = E->get();
-
+ for (const String &layout : layouts) {
if (layout == TTR("Default")) {
editor_layouts->remove_item(editor_layouts->get_item_index(SETTINGS_LAYOUT_DEFAULT));
overridden_default_layout = editor_layouts->get_item_count();
@@ -5336,27 +5338,6 @@ void EditorNode::_file_access_close_error_notify(const String &p_str) {
}
void EditorNode::reload_scene(const String &p_path) {
- /*
- * No longer necessary since scenes now reset and reload their internal resource if needed.
- //first of all, reload internal textures, materials, meshes, etc. as they might have changed on disk
-
- List<Ref<Resource>> cached;
- ResourceCache::get_cached_resources(&cached);
- List<Ref<Resource>> to_clear; //clear internal resources from previous scene from being used
- for (List<Ref<Resource>>::Element *E = cached.front(); E; E = E->next()) {
- if (E->get()->get_path().begins_with(p_path + "::")) { //subresources of existing scene
- to_clear.push_back(E->get());
- }
- }
-
- //so reload reloads everything, clear subresources of previous scene
- while (to_clear.front()) {
- to_clear.front()->get()->set_path("");
- to_clear.pop_front();
- }
-
- */
-
int scene_idx = -1;
for (int i = 0; i < editor_data.get_edited_scene_count(); i++) {
if (editor_data.get_scene_path(i) == p_path) {
@@ -6741,8 +6722,8 @@ EditorNode::EditorNode() {
file_script->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE);
List<String> sexts;
ResourceLoader::get_recognized_extensions_for_type("Script", &sexts);
- for (List<String>::Element *E = sexts.front(); E; E = E->next()) {
- file_script->add_filter("*." + E->get());
+ for (const String &E : sexts) {
+ file_script->add_filter("*." + E);
}
gui_base->add_child(file_script);
file_script->connect("file_selected", callable_mp(this, &EditorNode::_dialog_action));
@@ -6761,6 +6742,7 @@ EditorNode::EditorNode() {
//plugin stuff
add_editor_plugin(memnew(DebuggerEditorPlugin(this, debug_menu)));
+ add_editor_plugin(memnew(DebugAdapterServer()));
disk_changed = memnew(ConfirmationDialog);
{
diff --git a/editor/editor_path.cpp b/editor/editor_path.cpp
index a31b9fd0c7..f3b3eedccc 100644
--- a/editor/editor_path.cpp
+++ b/editor/editor_path.cpp
@@ -40,15 +40,15 @@ void EditorPath::_add_children_to_popup(Object *p_obj, int p_depth) {
List<PropertyInfo> pinfo;
p_obj->get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_EDITOR)) {
+ for (const PropertyInfo &E : pinfo) {
+ if (!(E.usage & PROPERTY_USAGE_EDITOR)) {
continue;
}
- if (E->get().hint != PROPERTY_HINT_RESOURCE_TYPE) {
+ if (E.hint != PROPERTY_HINT_RESOURCE_TYPE) {
continue;
}
- Variant value = p_obj->get(E->get().name);
+ Variant value = p_obj->get(E.name);
if (value.get_type() != Variant::OBJECT) {
continue;
}
@@ -60,7 +60,7 @@ void EditorPath::_add_children_to_popup(Object *p_obj, int p_depth) {
Ref<Texture2D> icon = EditorNode::get_singleton()->get_object_icon(obj);
String proper_name = "";
- Vector<String> name_parts = E->get().name.split("/");
+ Vector<String> name_parts = E.name.split("/");
for (int i = 0; i < name_parts.size(); i++) {
if (i > 0) {
diff --git a/editor/editor_plugin_settings.cpp b/editor/editor_plugin_settings.cpp
index a8b08dc9ed..aa313f0c50 100644
--- a/editor/editor_plugin_settings.cpp
+++ b/editor/editor_plugin_settings.cpp
@@ -208,11 +208,11 @@ EditorPluginSettings::EditorPluginSettings() {
plugin_list->set_v_size_flags(SIZE_EXPAND_FILL);
plugin_list->set_columns(5);
plugin_list->set_column_titles_visible(true);
- plugin_list->set_column_title(0, TTR("Name:"));
- plugin_list->set_column_title(1, TTR("Version:"));
- plugin_list->set_column_title(2, TTR("Author:"));
- plugin_list->set_column_title(3, TTR("Status:"));
- plugin_list->set_column_title(4, TTR("Edit:"));
+ plugin_list->set_column_title(0, TTR("Name"));
+ plugin_list->set_column_title(1, TTR("Version"));
+ plugin_list->set_column_title(2, TTR("Author"));
+ plugin_list->set_column_title(3, TTR("Status"));
+ plugin_list->set_column_title(4, TTR("Edit"));
plugin_list->set_column_expand(0, true);
plugin_list->set_column_clip_content(0, true);
plugin_list->set_column_expand(1, false);
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp
index df763d5bf0..fa03d281f2 100644
--- a/editor/editor_properties.cpp
+++ b/editor/editor_properties.cpp
@@ -691,17 +691,39 @@ EditorPropertyFlags::EditorPropertyFlags() {
class EditorPropertyLayersGrid : public Control {
GDCLASS(EditorPropertyLayersGrid, Control);
-public:
- uint32_t value;
+private:
Vector<Rect2> flag_rects;
+ Rect2 expand_rect;
+ bool expand_hovered = false;
+ bool expanded = false;
+ int expansion_rows = 0;
+ int hovered_index = -1;
+
+ Size2 get_grid_size() const {
+ Ref<Font> font = get_theme_font(SNAME("font"), SNAME("Label"));
+ int font_size = get_theme_font_size(SNAME("font_size"), SNAME("Label"));
+ return Vector2(0, font->get_height(font_size) * 3);
+ }
+
+public:
+ uint32_t value = 0;
+ int layer_group_size = 0;
+ int layer_count = 0;
Vector<String> names;
Vector<String> tooltips;
- int hovered_index;
virtual Size2 get_minimum_size() const override {
- Ref<Font> font = get_theme_font(SNAME("font"), SNAME("Label"));
- int font_size = get_theme_font_size(SNAME("font_size"), SNAME("Label"));
- return Vector2(0, font->get_height(font_size) * 2);
+ Size2 min_size = get_grid_size();
+
+ // Add extra rows when expanded.
+ if (expanded) {
+ const int bsize = (min_size.height * 80 / 100) / 2;
+ for (int i = 0; i < expansion_rows; ++i) {
+ min_size.y += 2 * (bsize + 1) + 3;
+ }
+ }
+
+ return min_size;
}
virtual String get_tooltip(const Point2 &p_pos) const override {
@@ -712,80 +734,192 @@ public:
}
return String();
}
+
void _gui_input(const Ref<InputEvent> &p_ev) {
const Ref<InputEventMouseMotion> mm = p_ev;
-
if (mm.is_valid()) {
- for (int i = 0; i < flag_rects.size(); i++) {
- if (flag_rects[i].has_point(mm->get_position())) {
- // Used to highlight the hovered flag in the layers grid.
- hovered_index = i;
- update();
- break;
+ bool expand_was_hovered = expand_hovered;
+ expand_hovered = expand_rect.has_point(mm->get_position());
+ if (expand_hovered != expand_was_hovered) {
+ update();
+ }
+
+ if (!expand_hovered) {
+ for (int i = 0; i < flag_rects.size(); i++) {
+ if (flag_rects[i].has_point(mm->get_position())) {
+ // Used to highlight the hovered flag in the layers grid.
+ hovered_index = i;
+ update();
+ return;
+ }
}
}
+
+ // Remove highlight when no square is hovered.
+ if (hovered_index != -1) {
+ hovered_index = -1;
+ update();
+ }
+
+ return;
}
const Ref<InputEventMouseButton> mb = p_ev;
+ if (mb.is_valid() && mb->get_button_index() == MOUSE_BUTTON_LEFT && mb->is_pressed()) {
+ if (hovered_index >= 0) {
+ // Toggle the flag.
+ // We base our choice on the hovered flag, so that it always matches the hovered flag.
+ if (value & (1 << hovered_index)) {
+ value &= ~(1 << hovered_index);
+ } else {
+ value |= (1 << hovered_index);
+ }
- if (mb.is_valid() && mb->get_button_index() == MOUSE_BUTTON_LEFT && mb->is_pressed() && hovered_index >= 0) {
- // Toggle the flag.
- // We base our choice on the hovered flag, so that it always matches the hovered flag.
- if (value & (1 << hovered_index)) {
- value &= ~(1 << hovered_index);
- } else {
- value |= (1 << hovered_index);
+ emit_signal(SNAME("flag_changed"), value);
+ update();
+ } else if (expand_hovered) {
+ expanded = !expanded;
+ minimum_size_changed();
+ update();
}
-
- emit_signal(SNAME("flag_changed"), value);
- update();
}
}
void _notification(int p_what) {
switch (p_what) {
case NOTIFICATION_DRAW: {
- Rect2 rect;
- rect.size = get_size();
+ Size2 grid_size = get_grid_size();
+ grid_size.x = get_size().x;
+
flag_rects.clear();
- const int bsize = (rect.size.height * 80 / 100) / 2;
+ int prev_expansion_rows = expansion_rows;
+ expansion_rows = 0;
+
+ const int bsize = (grid_size.height * 80 / 100) / 2;
const int h = bsize * 2 + 1;
- const int vofs = (rect.size.height - h) / 2;
Color color = get_theme_color(SNAME("highlight_color"), SNAME("Editor"));
- for (int i = 0; i < 2; i++) {
- Point2 ofs(4, vofs);
- if (i == 1) {
+
+ Color text_color = get_theme_color(SNAME("font_color"), SNAME("Editor"));
+ text_color.a *= 0.5;
+
+ Color text_color_on = get_theme_color(SNAME("font_hover_color"), SNAME("Editor"));
+ text_color_on.a *= 0.7;
+
+ const int vofs = (grid_size.height - h) / 2;
+
+ int layer_index = 0;
+ int block_index = 0;
+
+ Point2 arrow_pos;
+
+ Point2 block_ofs(4, vofs);
+
+ while (true) {
+ Point2 ofs = block_ofs;
+
+ for (int i = 0; i < 2; i++) {
+ for (int j = 0; j < layer_group_size; j++) {
+ const bool on = value & (1 << layer_index);
+ Rect2 rect2 = Rect2(ofs, Size2(bsize, bsize));
+
+ color.a = on ? 0.6 : 0.2;
+ if (layer_index == hovered_index) {
+ // Add visual feedback when hovering a flag.
+ color.a += 0.15;
+ }
+
+ draw_rect(rect2, color);
+ flag_rects.push_back(rect2);
+
+ Ref<Font> font = get_theme_font(SNAME("font"), SNAME("Label"));
+ Vector2 offset;
+ offset.y = rect2.size.y * 0.75;
+
+ draw_string(font, rect2.position + offset, itos(layer_index), HALIGN_CENTER, rect2.size.x, -1, on ? text_color_on : text_color);
+
+ ofs.x += bsize + 1;
+
+ ++layer_index;
+ }
+
+ ofs.x = block_ofs.x;
ofs.y += bsize + 1;
}
- ofs += rect.position;
- for (int j = 0; j < 10; j++) {
- Point2 o = ofs + Point2(j * (bsize + 1), 0);
- if (j >= 5) {
- o.x += 1;
+ if (layer_index >= layer_count) {
+ if (!flag_rects.is_empty() && (expansion_rows == 0)) {
+ const Rect2 &last_rect = flag_rects[flag_rects.size() - 1];
+ arrow_pos = last_rect.position + last_rect.size;
}
+ break;
+ }
- const int idx = i * 10 + j;
- const bool on = value & (1 << idx);
- Rect2 rect2 = Rect2(o, Size2(bsize, bsize));
+ int block_size_x = layer_group_size * (bsize + 1);
+ block_ofs.x += block_size_x + 3;
- color.a = on ? 0.6 : 0.2;
- if (idx == hovered_index) {
- // Add visual feedback when hovering a flag.
- color.a += 0.15;
+ if (block_ofs.x + block_size_x + 12 > grid_size.width) {
+ // Keep last valid cell position for the expansion icon.
+ if (!flag_rects.is_empty() && (expansion_rows == 0)) {
+ const Rect2 &last_rect = flag_rects[flag_rects.size() - 1];
+ arrow_pos = last_rect.position + last_rect.size;
+ }
+ ++expansion_rows;
+
+ if (expanded) {
+ // Expand grid to next line.
+ block_ofs.x = 4;
+ block_ofs.y += 2 * (bsize + 1) + 3;
+ } else {
+ // Skip remaining blocks.
+ break;
}
-
- draw_rect(rect2, color);
- flag_rects.push_back(rect2);
}
+
+ ++block_index;
}
+
+ if ((expansion_rows != prev_expansion_rows) && expanded) {
+ minimum_size_changed();
+ }
+
+ if ((expansion_rows == 0) && (layer_index == layer_count)) {
+ // Whole grid was drawn, no need for expansion icon.
+ break;
+ }
+
+ Ref<Texture2D> arrow = get_theme_icon(SNAME("arrow"), SNAME("Tree"));
+ ERR_FAIL_COND(arrow.is_null());
+
+ Color arrow_color = get_theme_color(SNAME("highlight_color"), SNAME("Editor"));
+ arrow_color.a = expand_hovered ? 1.0 : 0.6;
+
+ arrow_pos.x += 2.0;
+ arrow_pos.y -= arrow->get_height();
+
+ Rect2 arrow_draw_rect(arrow_pos, arrow->get_size());
+ expand_rect = arrow_draw_rect;
+ if (expanded) {
+ arrow_draw_rect.size.y *= -1.0; // Flip arrow vertically when expanded.
+ }
+
+ RID ci = get_canvas_item();
+ arrow->draw_rect(ci, arrow_draw_rect, false, arrow_color);
+
} break;
+
case NOTIFICATION_MOUSE_EXIT: {
- hovered_index = -1;
- update();
+ if (expand_hovered) {
+ expand_hovered = false;
+ update();
+ }
+ if (hovered_index != -1) {
+ hovered_index = -1;
+ update();
+ }
} break;
+
default:
break;
}
@@ -800,12 +934,8 @@ public:
ClassDB::bind_method(D_METHOD("_gui_input"), &EditorPropertyLayersGrid::_gui_input);
ADD_SIGNAL(MethodInfo("flag_changed", PropertyInfo(Variant::INT, "flag")));
}
-
- EditorPropertyLayersGrid() {
- value = 0;
- hovered_index = -1; // Nothing is hovered.
- }
};
+
void EditorPropertyLayers::_grid_changed(uint32_t p_grid) {
emit_changed(get_edited_property(), p_grid);
}
@@ -818,30 +948,49 @@ void EditorPropertyLayers::update_property() {
void EditorPropertyLayers::setup(LayerType p_layer_type) {
String basename;
+ int layer_group_size = 0;
+ int layer_count = 0;
switch (p_layer_type) {
- case LAYER_RENDER_2D:
+ case LAYER_RENDER_2D: {
basename = "layer_names/2d_render";
- break;
- case LAYER_PHYSICS_2D:
+ layer_group_size = 5;
+ layer_count = 20;
+ } break;
+
+ case LAYER_PHYSICS_2D: {
basename = "layer_names/2d_physics";
- break;
- case LAYER_NAVIGATION_2D:
+ layer_group_size = 4;
+ layer_count = 32;
+ } break;
+
+ case LAYER_NAVIGATION_2D: {
basename = "layer_names/2d_navigation";
- break;
- case LAYER_RENDER_3D:
+ layer_group_size = 4;
+ layer_count = 32;
+ } break;
+
+ case LAYER_RENDER_3D: {
basename = "layer_names/3d_render";
- break;
- case LAYER_PHYSICS_3D:
+ layer_group_size = 5;
+ layer_count = 20;
+ } break;
+
+ case LAYER_PHYSICS_3D: {
basename = "layer_names/3d_physics";
- break;
- case LAYER_NAVIGATION_3D:
+ layer_group_size = 4;
+ layer_count = 32;
+ } break;
+
+ case LAYER_NAVIGATION_3D: {
basename = "layer_names/3d_navigation";
- break;
+ layer_group_size = 4;
+ layer_count = 32;
+ } break;
}
Vector<String> names;
Vector<String> tooltips;
- for (int i = 0; i < 20; i++) {
+ for (int i = 0; i < layer_count; i++) {
String name;
if (ProjectSettings::get_singleton()->has_setting(basename + vformat("/layer_%d", i))) {
@@ -858,12 +1007,17 @@ void EditorPropertyLayers::setup(LayerType p_layer_type) {
grid->names = names;
grid->tooltips = tooltips;
+ grid->layer_group_size = layer_group_size;
+ grid->layer_count = layer_count;
}
void EditorPropertyLayers::_button_pressed() {
+ int layer_count = grid->layer_count;
+ int layer_group_size = grid->layer_group_size;
+
layers->clear();
- for (int i = 0; i < 20; i++) {
- if (i == 5 || i == 10 || i == 15) {
+ for (int i = 0; i < layer_count; i++) {
+ if ((i != 0) && ((i % layer_group_size) == 0)) {
layers->add_separator();
}
layers->add_check_item(grid->names[i], i);
@@ -894,17 +1048,21 @@ void EditorPropertyLayers::_bind_methods() {
EditorPropertyLayers::EditorPropertyLayers() {
HBoxContainer *hb = memnew(HBoxContainer);
+ hb->set_clip_contents(true);
add_child(hb);
grid = memnew(EditorPropertyLayersGrid);
grid->connect("flag_changed", callable_mp(this, &EditorPropertyLayers::_grid_changed));
grid->set_h_size_flags(SIZE_EXPAND_FILL);
hb->add_child(grid);
+
button = memnew(Button);
button->set_toggle_mode(true);
button->set_text("...");
button->connect("pressed", callable_mp(this, &EditorPropertyLayers::_button_pressed));
hb->add_child(button);
+
set_bottom_editor(hb);
+
layers = memnew(PopupMenu);
add_child(layers);
layers->set_hide_on_checkable_item_selection(false);
diff --git a/editor/editor_resource_picker.cpp b/editor/editor_resource_picker.cpp
index 8bb6c590dc..f3965fe7de 100644
--- a/editor/editor_resource_picker.cpp
+++ b/editor/editor_resource_picker.cpp
@@ -36,6 +36,12 @@
#include "editor_settings.h"
#include "filesystem_dock.h"
+HashMap<StringName, List<StringName>> EditorResourcePicker::allowed_types_cache;
+
+void EditorResourcePicker::clear_caches() {
+ allowed_types_cache.clear();
+}
+
void EditorResourcePicker::_update_resource() {
preview_rect->set_texture(Ref<Texture2D>());
assign_button->set_custom_minimum_size(Size2(1, 1));
@@ -221,8 +227,8 @@ void EditorResourcePicker::_edit_menu_cbk(int p_which) {
}
Set<String> valid_extensions;
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- valid_extensions.insert(E->get());
+ for (const String &E : extensions) {
+ valid_extensions.insert(E);
}
if (!file_dialog) {
@@ -260,9 +266,8 @@ void EditorResourcePicker::_edit_menu_cbk(int p_which) {
List<PropertyInfo> property_list;
edited_resource->get_property_list(&property_list);
List<Pair<String, Variant>> propvalues;
- for (List<PropertyInfo>::Element *E = property_list.front(); E; E = E->next()) {
+ for (const PropertyInfo &pi : property_list) {
Pair<String, Variant> p;
- PropertyInfo &pi = E->get();
if (pi.usage & PROPERTY_USAGE_STORAGE) {
p.first = pi.name;
p.second = edited_resource->get(pi.name);
@@ -276,8 +281,7 @@ void EditorResourcePicker::_edit_menu_cbk(int p_which) {
Ref<Resource> unique_resource = Ref<Resource>(Object::cast_to<Resource>(inst));
ERR_FAIL_COND(unique_resource.is_null());
- for (List<Pair<String, Variant>>::Element *E = propvalues.front(); E; E = E->next()) {
- Pair<String, Variant> &p = E->get();
+ for (const Pair<String, Variant> &p : propvalues) {
unique_resource->set(p.first, p.second);
}
@@ -464,17 +468,31 @@ void EditorResourcePicker::_get_allowed_types(bool p_with_convert, Set<String> *
String base = allowed_types[i].strip_edges();
p_vector->insert(base);
- List<StringName> inheriters;
+ // If we hit a familiar base type, take all the data from cache.
+ if (allowed_types_cache.has(base)) {
+ List<StringName> allowed_subtypes = allowed_types_cache[base];
+ for (const StringName &subtype_name : allowed_subtypes) {
+ p_vector->insert(subtype_name);
+ }
+ } else {
+ List<StringName> allowed_subtypes;
- ClassDB::get_inheriters_from_class(base, &inheriters);
- for (List<StringName>::Element *E = inheriters.front(); E; E = E->next()) {
- p_vector->insert(E->get());
- }
+ List<StringName> inheriters;
+ ClassDB::get_inheriters_from_class(base, &inheriters);
+ for (const StringName &subtype_name : inheriters) {
+ p_vector->insert(subtype_name);
+ allowed_subtypes.push_back(subtype_name);
+ }
- for (List<StringName>::Element *E = global_classes.front(); E; E = E->next()) {
- if (EditorNode::get_editor_data().script_class_is_parent(E->get(), base)) {
- p_vector->insert(E->get());
+ for (const StringName &subtype_name : global_classes) {
+ if (EditorNode::get_editor_data().script_class_is_parent(subtype_name, base)) {
+ p_vector->insert(subtype_name);
+ allowed_subtypes.push_back(subtype_name);
+ }
}
+
+ // Store the subtypes of the base type in the cache for future use.
+ allowed_types_cache[base] = allowed_subtypes;
}
if (p_with_convert) {
@@ -507,7 +525,9 @@ bool EditorResourcePicker::_is_drop_valid(const Dictionary &p_drag_data) const {
Ref<Resource> res;
if (drag_data.has("type") && String(drag_data["type"]) == "script_list_element") {
ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(drag_data["script_list_element"]);
- res = se->get_edited_resource();
+ if (se) {
+ res = se->get_edited_resource();
+ }
} else if (drag_data.has("type") && String(drag_data["type"]) == "resource") {
res = drag_data["resource"];
}
@@ -573,7 +593,9 @@ void EditorResourcePicker::drop_data_fw(const Point2 &p_point, const Variant &p_
Ref<Resource> dropped_resource;
if (drag_data.has("type") && String(drag_data["type"]) == "script_list_element") {
ScriptEditorBase *se = Object::cast_to<ScriptEditorBase>(drag_data["script_list_element"]);
- dropped_resource = se->get_edited_resource();
+ if (se) {
+ dropped_resource = se->get_edited_resource();
+ }
} else if (drag_data.has("type") && String(drag_data["type"]) == "resource") {
dropped_resource = drag_data["resource"];
}
@@ -704,6 +726,10 @@ void EditorResourcePicker::set_base_type(const String &p_base_type) {
String class_str = (custom_class == StringName() ? edited_resource->get_class() : vformat("%s (%s)", custom_class, edited_resource->get_class()));
WARN_PRINT(vformat("Value mismatch between the new base type of this EditorResourcePicker, '%s', and the type of the value it already has, '%s'.", base_type, class_str));
}
+ } else {
+ // Call the method to build the cache immediately.
+ Set<String> allowed_types;
+ _get_allowed_types(false, &allowed_types);
}
}
diff --git a/editor/editor_resource_picker.h b/editor/editor_resource_picker.h
index 82a4817dfc..a4c3006c02 100644
--- a/editor/editor_resource_picker.h
+++ b/editor/editor_resource_picker.h
@@ -40,6 +40,8 @@
class EditorResourcePicker : public HBoxContainer {
GDCLASS(EditorResourcePicker, HBoxContainer);
+ static HashMap<StringName, List<StringName>> allowed_types_cache;
+
String base_type;
RES edited_resource;
@@ -97,6 +99,8 @@ protected:
void _notification(int p_what);
public:
+ static void clear_caches();
+
void set_base_type(const String &p_base_type);
String get_base_type() const;
Vector<String> get_allowed_types() const;
diff --git a/editor/editor_run.cpp b/editor/editor_run.cpp
index 5e6d2ab69c..8a7ec9aa82 100644
--- a/editor/editor_run.cpp
+++ b/editor/editor_run.cpp
@@ -228,8 +228,8 @@ Error EditorRun::run(const String &p_scene, const String &p_custom_args, const L
}
printf("Running: %s", exec.utf8().get_data());
- for (List<String>::Element *E = args.front(); E; E = E->next()) {
- printf(" %s", E->get().utf8().get_data());
+ for (const String &E : args) {
+ printf(" %s", E.utf8().get_data());
};
printf("\n");
@@ -250,8 +250,8 @@ Error EditorRun::run(const String &p_scene, const String &p_custom_args, const L
}
bool EditorRun::has_child_process(OS::ProcessID p_pid) const {
- for (const List<OS::ProcessID>::Element *E = pids.front(); E; E = E->next()) {
- if (E->get() == p_pid) {
+ for (const OS::ProcessID &E : pids) {
+ if (E == p_pid) {
return true;
}
}
@@ -267,9 +267,10 @@ void EditorRun::stop_child_process(OS::ProcessID p_pid) {
void EditorRun::stop() {
if (status != STATUS_STOP && pids.size() > 0) {
- for (List<OS::ProcessID>::Element *E = pids.front(); E; E = E->next()) {
- OS::get_singleton()->kill(E->get());
+ for (const OS::ProcessID &E : pids) {
+ OS::get_singleton()->kill(E);
}
+ pids.clear();
}
status = STATUS_STOP;
diff --git a/editor/editor_sectioned_inspector.cpp b/editor/editor_sectioned_inspector.cpp
index 1209df50ed..751cc7a574 100644
--- a/editor/editor_sectioned_inspector.cpp
+++ b/editor/editor_sectioned_inspector.cpp
@@ -76,8 +76,7 @@ class SectionedInspectorFilter : public Object {
List<PropertyInfo> pinfo;
edited->get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- PropertyInfo pi = E->get();
+ for (PropertyInfo &pi : pinfo) {
int sp = pi.name.find("/");
if (pi.name == "resource_path" || pi.name == "resource_name" || pi.name == "resource_local_to_scene" || pi.name.begins_with("script/") || pi.name.begins_with("_global_script")) { //skip resource stuff
@@ -221,9 +220,7 @@ void SectionedInspector::update_category_list() {
filter = search_box->get_text();
}
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- PropertyInfo pi = E->get();
-
+ for (PropertyInfo &pi : pinfo) {
if (pi.usage & PROPERTY_USAGE_CATEGORY) {
continue;
} else if (!(pi.usage & PROPERTY_USAGE_EDITOR) || (restrict_to_basic && !(pi.usage & PROPERTY_USAGE_EDITOR_BASIC_SETTING))) {
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index 0667d7116f..29ac836834 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -80,7 +80,7 @@ bool EditorSettings::_set_only(const StringName &p_name, const Variant &p_value)
Ref<Shortcut> sc;
sc.instantiate();
- sc->set_shortcut(shortcut);
+ sc->set_event(shortcut);
add_shortcut(name, sc);
}
@@ -153,13 +153,13 @@ bool EditorSettings::_get(const StringName &p_name, Variant &r_ret) const {
}
Ref<InputEvent> original = sc->get_meta("original");
- if (sc->is_shortcut(original) || (original.is_null() && sc->get_shortcut().is_null())) {
+ if (sc->matches_event(original) || (original.is_null() && sc->get_event().is_null())) {
continue; //not changed from default, don't save
}
}
arr.push_back(E->key());
- arr.push_back(sc->get_shortcut());
+ arr.push_back(sc->get_event());
}
r_ret = arr;
return true;
@@ -759,8 +759,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
List<String> keys;
p_extra_config->get_section_keys("presets", &keys);
- for (List<String>::Element *E = keys.front(); E; E = E->next()) {
- String key = E->get();
+ for (const String &key : keys) {
Variant val = p_extra_config->get_value("presets", key);
set(key, val);
}
@@ -815,8 +814,7 @@ bool EditorSettings::_save_text_editor_theme(String p_file) {
props.get_key_list(&keys);
keys.sort();
- for (const List<String>::Element *E = keys.front(); E; E = E->next()) {
- const String &key = E->get();
+ for (const String &key : keys) {
if (key.begins_with("text_editor/highlighting/") && key.find("color") >= 0) {
cf->set_value(theme_section, key.replace("text_editor/highlighting/", ""), ((Color)props[key].variant).to_html());
}
@@ -1015,15 +1013,13 @@ void EditorSettings::setup_network() {
String selected = "127.0.0.1";
// Check that current remote_host is a valid interface address and populate hints.
- for (List<IPAddress>::Element *E = local_ip.front(); E; E = E->next()) {
- String ip = E->get();
-
+ for (const IPAddress &ip : local_ip) {
// link-local IPv6 addresses don't work, skipping them
- if (ip.begins_with("fe80:0:0:0:")) { // fe80::/64
+ if (String(ip).begins_with("fe80:0:0:0:")) { // fe80::/64
continue;
}
// Same goes for IPv4 link-local (APIPA) addresses.
- if (ip.begins_with("169.254.")) { // 169.254.0.0/16
+ if (String(ip).begins_with("169.254.")) { // 169.254.0.0/16
continue;
}
// Select current IP (found)
@@ -1303,8 +1299,8 @@ void EditorSettings::list_text_editor_themes() {
memdelete(d);
custom_themes.sort();
- for (List<String>::Element *E = custom_themes.front(); E; E = E->next()) {
- themes += "," + E->get();
+ for (const String &E : custom_themes) {
+ themes += "," + E;
}
}
add_property_hint(PropertyInfo(Variant::STRING, "text_editor/theme/color_theme", PROPERTY_HINT_ENUM, themes));
@@ -1332,8 +1328,7 @@ void EditorSettings::load_text_editor_theme() {
List<String> keys;
cf->get_section_keys("color_theme", &keys);
- for (List<String>::Element *E = keys.front(); E; E = E->next()) {
- String key = E->get();
+ for (const String &key : keys) {
String val = cf->get_value("color_theme", key);
// don't load if it's not already there!
@@ -1434,7 +1429,7 @@ float EditorSettings::get_auto_display_scale() const {
return DisplayServer::get_singleton()->screen_get_max_scale();
#else
const int screen = DisplayServer::get_singleton()->window_get_current_screen();
- // Use the smallest dimension to use a correct display scale on portait displays.
+ // Use the smallest dimension to use a correct display scale on portrait displays.
const int smallest_dimension = MIN(DisplayServer::get_singleton()->screen_get_size(screen).x, DisplayServer::get_singleton()->screen_get_size(screen).y);
if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && smallest_dimension >= 1400) {
// hiDPI display.
@@ -1462,7 +1457,7 @@ bool EditorSettings::is_shortcut(const String &p_name, const Ref<InputEvent> &p_
const Map<String, Ref<Shortcut>>::Element *E = shortcuts.find(p_name);
ERR_FAIL_COND_V_MSG(!E, false, "Unknown Shortcut: " + p_name + ".");
- return E->get()->is_shortcut(p_event);
+ return E->get()->matches_event(p_event);
}
Ref<Shortcut> EditorSettings::get_shortcut(const String &p_name) const {
@@ -1478,7 +1473,7 @@ Ref<Shortcut> EditorSettings::get_shortcut(const String &p_name) const {
const Map<String, List<Ref<InputEvent>>>::Element *builtin_override = builtin_action_overrides.find(p_name);
if (builtin_override) {
sc.instantiate();
- sc->set_shortcut(builtin_override->get().front()->get());
+ sc->set_event(builtin_override->get().front()->get());
sc->set_name(InputMap::get_singleton()->get_builtin_display_name(p_name));
}
@@ -1487,7 +1482,7 @@ Ref<Shortcut> EditorSettings::get_shortcut(const String &p_name) const {
const OrderedHashMap<String, List<Ref<InputEvent>>>::ConstElement builtin_default = InputMap::get_singleton()->get_builtins().find(p_name);
if (builtin_default) {
sc.instantiate();
- sc->set_shortcut(builtin_default.get().front()->get());
+ sc->set_event(builtin_default.get().front()->get());
sc->set_name(InputMap::get_singleton()->get_builtin_display_name(p_name));
}
}
@@ -1543,7 +1538,7 @@ Ref<Shortcut> ED_SHORTCUT(const String &p_path, const String &p_name, uint32_t p
Ref<Shortcut> sc;
sc.instantiate();
sc->set_name(p_name);
- sc->set_shortcut(ie);
+ sc->set_event(ie);
sc->set_meta("original", ie);
return sc;
}
@@ -1557,7 +1552,7 @@ Ref<Shortcut> ED_SHORTCUT(const String &p_path, const String &p_name, uint32_t p
sc.instantiate();
sc->set_name(p_name);
- sc->set_shortcut(ie);
+ sc->set_event(ie);
sc->set_meta("original", ie); //to compare against changes
EditorSettings::get_singleton()->add_shortcut(p_path, sc);
@@ -1585,8 +1580,8 @@ void EditorSettings::set_builtin_action_override(const String &p_name, const Arr
int event_idx = 0;
// Check equality of each event.
- for (List<Ref<InputEvent>>::Element *E = builtin_events.front(); E; E = E->next()) {
- if (!E->get()->is_match(p_events[event_idx])) {
+ for (const Ref<InputEvent> &E : builtin_events) {
+ if (!E->is_match(p_events[event_idx])) {
same_as_builtin = false;
break;
}
@@ -1605,7 +1600,7 @@ void EditorSettings::set_builtin_action_override(const String &p_name, const Arr
// Update the shortcut (if it is used somewhere in the editor) to be the first event of the new list.
if (shortcuts.has(p_name)) {
- shortcuts[p_name]->set_shortcut(event_list.front()->get());
+ shortcuts[p_name]->set_event(event_list.front()->get());
}
}
@@ -1615,8 +1610,8 @@ const Array EditorSettings::get_builtin_action_overrides(const String &p_name) c
Array event_array;
List<Ref<InputEvent>> events_list = AO->get();
- for (List<Ref<InputEvent>>::Element *E = events_list.front(); E; E = E->next()) {
- event_array.push_back(E->get());
+ for (const Ref<InputEvent> &E : events_list) {
+ event_array.push_back(E);
}
return event_array;
}
diff --git a/editor/editor_spin_slider.cpp b/editor/editor_spin_slider.cpp
index 58ab7d3cef..a802afda0f 100644
--- a/editor/editor_spin_slider.cpp
+++ b/editor/editor_spin_slider.cpp
@@ -32,12 +32,18 @@
#include "core/input/input.h"
#include "core/math/expression.h"
+#include "core/os/keyboard.h"
#include "editor_node.h"
#include "editor_scale.h"
String EditorSpinSlider::get_tooltip(const Point2 &p_pos) const {
if (grabber->is_visible()) {
- return TS->format_number(rtos(get_value())) + "\n\n" + TTR("Hold Ctrl to round to integers. Hold Shift for more precise changes.");
+#ifdef OSX_ENABLED
+ const int key = KEY_META;
+#else
+ const int key = KEY_CTRL;
+#endif
+ return TS->format_number(rtos(get_value())) + "\n\n" + vformat(TTR("Hold %s to round to integers. Hold Shift for more precise changes."), find_keycode_name(key));
}
return TS->format_number(rtos(get_value()));
}
@@ -116,7 +122,7 @@ void EditorSpinSlider::_gui_input(const Ref<InputEvent> &p_event) {
pre_grab_value = get_max();
}
- if (mm->is_ctrl_pressed()) {
+ if (mm->is_command_pressed()) {
// If control was just pressed, don't make the value do a huge jump in magnitude.
if (grabbing_spinner_dist_cache != 0) {
pre_grab_value += grabbing_spinner_dist_cache * get_step();
diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp
index 0c908be441..0d714065e3 100644
--- a/editor/editor_themes.cpp
+++ b/editor/editor_themes.cpp
@@ -155,6 +155,7 @@ void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme =
ADD_CONVERT_COLOR(dark_icon_color_dictionary, "#8da5f3", "#3d64dd"); // 2D
ADD_CONVERT_COLOR(dark_icon_color_dictionary, "#4b70ea", "#1a3eac"); // 2D Dark
ADD_CONVERT_COLOR(dark_icon_color_dictionary, "#8eef97", "#2fa139"); // Control
+ ADD_CONVERT_COLOR(dark_icon_color_dictionary, "#ffdd65", "#ca8a04"); // Node warning
// Rainbow
ADD_CONVERT_COLOR(dark_icon_color_dictionary, "#ff4545", "#ff2929"); // Red
@@ -229,7 +230,6 @@ void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme =
exceptions.insert("StatusError");
exceptions.insert("StatusSuccess");
exceptions.insert("StatusWarning");
- exceptions.insert("NodeWarning");
exceptions.insert("OverbrightIndicator");
}
@@ -380,6 +380,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
const Color font_color = mono_color.lerp(base_color, 0.25);
const Color font_hover_color = mono_color.lerp(base_color, 0.125);
const Color font_disabled_color = Color(mono_color.r, mono_color.g, mono_color.b, 0.3);
+ const Color font_readonly_color = Color(mono_color.r, mono_color.g, mono_color.b, 0.65);
const Color selection_color = accent_color * Color(1, 1, 1, 0.4);
const Color disabled_color = mono_color.inverted().lerp(base_color, 0.7);
const Color disabled_bg_color = mono_color.inverted().lerp(base_color, 0.9);
@@ -582,6 +583,10 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
// Focus
theme->set_stylebox("Focus", "EditorStyles", style_widget_focus);
+ // Use a less opaque color to be less distracting for the 2D and 3D editor viewports.
+ Ref<StyleBoxFlat> style_widget_focus_viewport = style_widget_focus->duplicate();
+ style_widget_focus_viewport->set_border_color(accent_color * Color(1, 1, 1, 0.5));
+ theme->set_stylebox("FocusViewport", "EditorStyles", style_widget_focus_viewport);
// Menu
Ref<StyleBoxFlat> style_menu = style_widget->duplicate();
@@ -1024,9 +1029,9 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_stylebox("read_only", "LineEdit", style_line_edit_disabled);
theme->set_icon("clear", "LineEdit", theme->get_icon("GuiClose", "EditorIcons"));
theme->set_color("read_only", "LineEdit", font_disabled_color);
- theme->set_color("font_uneditable_color", "LineEdit", font_disabled_color);
theme->set_color("font_color", "LineEdit", font_color);
theme->set_color("font_selected_color", "LineEdit", mono_color);
+ theme->set_color("font_uneditable_color", "LineEdit", font_readonly_color);
theme->set_color("caret_color", "LineEdit", font_color);
theme->set_color("selection_color", "LineEdit", selection_color);
theme->set_color("clear_button_color", "LineEdit", font_color);
@@ -1040,6 +1045,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_icon("tab", "TextEdit", theme->get_icon("GuiTab", "EditorIcons"));
theme->set_icon("space", "TextEdit", theme->get_icon("GuiSpace", "EditorIcons"));
theme->set_color("font_color", "TextEdit", font_color);
+ theme->set_color("font_readonly_color", "LineEdit", font_readonly_color);
theme->set_color("caret_color", "TextEdit", font_color);
theme->set_color("selection_color", "TextEdit", selection_color);
@@ -1086,17 +1092,16 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
style_window_title->set_corner_radius(CORNER_TOP_RIGHT, 0);
// Prevent visible line between window title and body.
style_window_title->set_expand_margin_size(SIDE_BOTTOM, 2 * EDSCALE);
- theme->set_stylebox("panel", "Window", style_window_title);
Ref<StyleBoxFlat> style_window = style_popup->duplicate();
style_window->set_border_color(base_color);
style_window->set_border_width(SIDE_TOP, 24 * EDSCALE);
style_window->set_expand_margin_size(SIDE_TOP, 24 * EDSCALE);
- theme->set_stylebox("panel_window", "Window", style_window);
+ theme->set_stylebox("embedded_border", "Window", style_window);
theme->set_color("title_color", "Window", font_color);
theme->set_icon("close", "Window", theme->get_icon("GuiClose", "EditorIcons"));
- theme->set_icon("close_highlight", "Window", theme->get_icon("GuiClose", "EditorIcons"));
+ theme->set_icon("close_pressed", "Window", theme->get_icon("GuiClose", "EditorIcons"));
theme->set_constant("close_h_ofs", "Window", 22 * EDSCALE);
theme->set_constant("close_v_ofs", "Window", 20 * EDSCALE);
theme->set_constant("title_height", "Window", 24 * EDSCALE);
@@ -1112,6 +1117,9 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_stylebox("panel", "ProjectSettingsEditor", style_complex_window);
theme->set_stylebox("panel", "EditorAbout", style_complex_window);
+ // AcceptDialog
+ theme->set_stylebox("panel", "AcceptDialog", style_window_title);
+
// HScrollBar
Ref<Texture2D> empty_icon = memnew(ImageTexture);
@@ -1190,7 +1198,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
style_tooltip->set_default_margin(SIDE_TOP, default_margin_size * EDSCALE * 0.5);
style_tooltip->set_default_margin(SIDE_RIGHT, default_margin_size * EDSCALE);
style_tooltip->set_default_margin(SIDE_BOTTOM, default_margin_size * EDSCALE * 0.5);
- style_tooltip->set_bg_color(mono_color.inverted());
+ style_tooltip->set_bg_color(mono_color.inverted() * Color(1, 1, 1, 0.9));
style_tooltip->set_border_width_all(0);
theme->set_color("font_color", "TooltipLabel", font_hover_color);
theme->set_color("font_color_shadow", "TooltipLabel", Color(0, 0, 0, 0));
diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp
index 49c2a84e18..daee61c2dd 100644
--- a/editor/filesystem_dock.cpp
+++ b/editor/filesystem_dock.cpp
@@ -135,9 +135,7 @@ bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory
_sort_file_info_list(file_list);
// Build the tree.
- for (List<FileInfo>::Element *E = file_list.front(); E; E = E->next()) {
- FileInfo fi = E->get();
-
+ for (const FileInfo &fi : file_list) {
TreeItem *file_item = tree->create_item(subdirectory_item);
file_item->set_text(0, fi.name);
file_item->set_structured_text_bidi_override(0, STRUCTURED_TEXT_FILE);
@@ -869,8 +867,8 @@ void FileSystemDock::_update_file_list(bool p_keep_selection) {
// Fills the ItemList control node from the FileInfos.
String main_scene = ProjectSettings::get_singleton()->get("application/run/main_scene");
String oi = "Object";
- for (List<FileInfo>::Element *E = file_list.front(); E; E = E->next()) {
- FileInfo *finfo = &(E->get());
+ for (FileInfo &E : file_list) {
+ FileInfo *finfo = &(E);
String fname = finfo->name;
String fpath = finfo->path;
String ftype = finfo->type;
@@ -966,8 +964,8 @@ void FileSystemDock::_select_file(const String &p_path, bool p_select_in_favorit
List<String> importer_exts;
ResourceImporterScene::get_singleton()->get_recognized_extensions(&importer_exts);
String extension = fpath.get_extension();
- for (List<String>::Element *E = importer_exts.front(); E; E = E->next()) {
- if (extension.nocasecmp_to(E->get()) == 0) {
+ for (const String &E : importer_exts) {
+ if (extension.nocasecmp_to(E) == 0) {
is_imported = true;
break;
}
@@ -1239,9 +1237,7 @@ void FileSystemDock::_update_resource_paths_after_move(const Map<String, String>
List<Ref<Resource>> cached;
ResourceCache::get_cached_resources(&cached);
- for (List<Ref<Resource>>::Element *E = cached.front(); E; E = E->next()) {
- Ref<Resource> r = E->get();
-
+ for (Ref<Resource> &r : cached) {
String base_path = r->get_path();
String extra_path;
int sep_pos = r->get_path().find("::");
@@ -1317,16 +1313,16 @@ void FileSystemDock::_update_project_settings_after_move(const Map<String, Strin
// Also search for the file in autoload, as they are stored differently from normal files.
List<PropertyInfo> property_list;
ProjectSettings::get_singleton()->get_property_list(&property_list);
- for (const List<PropertyInfo>::Element *E = property_list.front(); E; E = E->next()) {
- if (E->get().name.begins_with("autoload/")) {
+ for (const PropertyInfo &E : property_list) {
+ if (E.name.begins_with("autoload/")) {
// If the autoload resource paths has a leading "*", it indicates that it is a Singleton,
// so we have to handle both cases when updating.
- String autoload = GLOBAL_GET(E->get().name);
+ String autoload = GLOBAL_GET(E.name);
String autoload_singleton = autoload.substr(1, autoload.length());
if (p_renames.has(autoload)) {
- ProjectSettings::get_singleton()->set_setting(E->get().name, p_renames[autoload]);
+ ProjectSettings::get_singleton()->set_setting(E.name, p_renames[autoload]);
} else if (autoload.begins_with("*") && p_renames.has(autoload_singleton)) {
- ProjectSettings::get_singleton()->set_setting(E->get().name, "*" + p_renames[autoload_singleton]);
+ ProjectSettings::get_singleton()->set_setting(E.name, "*" + p_renames[autoload_singleton]);
}
}
}
@@ -1417,8 +1413,8 @@ void FileSystemDock::_make_scene_confirm() {
ResourceSaver::get_recognized_extensions(sd, &extensions);
bool extension_correct = false;
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- if (E->get() == extension) {
+ for (const String &E : extensions) {
+ if (E == extension) {
extension_correct = true;
break;
}
diff --git a/editor/find_in_files.cpp b/editor/find_in_files.cpp
index 87277e79f3..9444706fd2 100644
--- a/editor/find_in_files.cpp
+++ b/editor/find_in_files.cpp
@@ -228,6 +228,11 @@ void FindInFiles::_scan_dir(String path, PackedStringArray &out_folders) {
break;
}
+ // If there is a .gdignore file in the directory, don't bother searching it
+ if (file == ".gdignore") {
+ break;
+ }
+
// Ignore special dirs (such as .git and .import)
if (file == "." || file == ".." || file.begins_with(".")) {
continue;
diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp
index 0a39768b9a..113306fc8a 100644
--- a/editor/groups_editor.cpp
+++ b/editor/groups_editor.cpp
@@ -240,8 +240,7 @@ void GroupDialog::_group_renamed() {
List<Node *> nodes;
scene_tree->get_nodes_in_group(selected_group, &nodes);
bool removed_all = true;
- for (List<Node *>::Element *E = nodes.front(); E; E = E->next()) {
- Node *node = E->get();
+ for (Node *node : nodes) {
if (_can_edit(node, selected_group)) {
undo_redo->add_do_method(node, "remove_from_group", selected_group);
undo_redo->add_undo_method(node, "remove_from_group", name);
@@ -286,11 +285,11 @@ void GroupDialog::_load_groups(Node *p_current) {
List<Node::GroupInfo> gi;
p_current->get_groups(&gi);
- for (List<Node::GroupInfo>::Element *E = gi.front(); E; E = E->next()) {
- if (!E->get().persistent) {
+ for (const Node::GroupInfo &E : gi) {
+ if (!E.persistent) {
continue;
}
- _add_group(E->get().name);
+ _add_group(E.name);
}
for (int i = 0; i < p_current->get_child_count(); i++) {
@@ -311,10 +310,10 @@ void GroupDialog::_delete_group_pressed(Object *p_item, int p_column, int p_id)
List<Node *> nodes;
scene_tree->get_nodes_in_group(name, &nodes);
bool removed_all = true;
- for (List<Node *>::Element *E = nodes.front(); E; E = E->next()) {
- if (_can_edit(E->get(), name)) {
- undo_redo->add_do_method(E->get(), "remove_from_group", name);
- undo_redo->add_undo_method(E->get(), "add_to_group", name, true);
+ for (Node *E : nodes) {
+ if (_can_edit(E, name)) {
+ undo_redo->add_do_method(E, "remove_from_group", name);
+ undo_redo->add_undo_method(E, "add_to_group", name, true);
} else {
removed_all = false;
}
@@ -628,8 +627,7 @@ void GroupsEditor::update_tree() {
TreeItem *root = tree->create_item();
- for (List<GroupInfo>::Element *E = groups.front(); E; E = E->next()) {
- Node::GroupInfo gi = E->get();
+ for (const GroupInfo &gi : groups) {
if (!gi.persistent) {
continue;
}
diff --git a/editor/icons/ImmediateGeometry3D.svg b/editor/icons/ImmediateGeometry3D.svg
deleted file mode 100644
index ec5a392a68..0000000000
--- a/editor/icons/ImmediateGeometry3D.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m2.9208 1046.4c-.26373.3-.4204.7296-.4204 1.2383 0 1.6277-3.1381-.1781-.33757 2.6703.88382.899 2.6544.6701 3.5382-.2288.88384-.899.88382-2.3565 0-3.2554-1.1002-1.1191-2.2001-1.0845-2.7803-.4244zm2.3802-1.6103 2.4005 2.4416 6.8014-6.9177c.66286-.6742.66286-1.7673 0-2.4415-.66288-.6741-1.7376-.6741-2.4005 0z" fill="#fc7f7f" transform="translate(0 -1036.4)"/></svg>
diff --git a/editor/icons/TileMapHighlightSelected.svg b/editor/icons/TileMapHighlightSelected.svg
new file mode 100644
index 0000000000..de8a291b8e
--- /dev/null
+++ b/editor/icons/TileMapHighlightSelected.svg
@@ -0,0 +1 @@
+<svg clip-rule="evenodd" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><g fill="#e0e0e0" fill-rule="nonzero"><path d="m4.5 5.2011663h10.5v2.005h-10.5z" stroke-width="1.14115"/><g stroke-width=".862635"><path d="m2 4.2340105v-1h1l1 2z"/><path d="m2 8.2340105v1h1l1-2z"/><path d="m1.3786796 5.5269037-.70710677.7071068.70710677.7071068 2.1213204-.7071068z"/></g><path d="m4.5 1.7061663h10.5v2.005h-10.5z" stroke-width="1.14117"/><g stroke-width="1.14116"><path d="m4.5 8.7011663h10.5v2.0049997h-10.5z"/><path d="m4.5 12.206166h10.5v2.005h-10.5z"/></g></g></svg>
diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp
index ddf89f077b..b615c73422 100644
--- a/editor/import/editor_import_collada.cpp
+++ b/editor/import/editor_import_collada.cpp
@@ -894,8 +894,8 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<EditorSceneImpor
surftool->add_vertex(vertex_array[k].vertex);
}
- for (List<int>::Element *E = indices_list.front(); E; E = E->next()) {
- surftool->add_index(E->get());
+ for (int &E : indices_list) {
+ surftool->add_index(E);
}
if (!normal_src) {
diff --git a/editor/import/editor_importer_bake_reset.cpp b/editor/import/editor_importer_bake_reset.cpp
new file mode 100644
index 0000000000..939c47faa4
--- /dev/null
+++ b/editor/import/editor_importer_bake_reset.cpp
@@ -0,0 +1,223 @@
+/*************************************************************************/
+/* editor_importer_bake_reset.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "editor/import/editor_importer_bake_reset.h"
+
+#include "core/error/error_macros.h"
+#include "core/math/transform_3d.h"
+#include "editor/import/scene_importer_mesh_node_3d.h"
+#include "resource_importer_scene.h"
+#include "scene/3d/mesh_instance_3d.h"
+#include "scene/3d/node_3d.h"
+#include "scene/3d/skeleton_3d.h"
+#include "scene/animation/animation_player.h"
+
+// Given that an engineering team has made a reference character, one wants ten animators to create animations.
+// Currently, a tech artist needs to combine the ten files into one exported gltf2 to import into Godot Engine.
+// We bake the RESET animation and then set it to identity,
+// so that rigs with corresponding RESET animation can have their animations transferred with ease.
+//
+// The original algorithm for the code was used to change skeleton bone rolls to be parent to child.
+//
+// Reference https://github.com/godotengine/godot-proposals/issues/2961
+void BakeReset::_bake_animation_pose(Node *scene, const String &p_bake_anim) {
+ Map<StringName, BakeResetRestBone> r_rest_bones;
+ Vector<Node3D *> r_meshes;
+ List<Node *> queue;
+ queue.push_back(scene);
+ while (!queue.is_empty()) {
+ List<Node *>::Element *E = queue.front();
+ Node *node = E->get();
+ AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(node);
+ // Step 1: import scene with animations into the rest bones data structure.
+ _fetch_reset_animation(ap, r_rest_bones, p_bake_anim);
+
+ int child_count = node->get_child_count();
+ for (int i = 0; i < child_count; i++) {
+ queue.push_back(node->get_child(i));
+ }
+ queue.pop_front();
+ }
+
+ queue.push_back(scene);
+ while (!queue.is_empty()) {
+ List<Node *>::Element *E = queue.front();
+ Node *node = E->get();
+ EditorSceneImporterMeshNode3D *editor_mesh_3d = scene->cast_to<EditorSceneImporterMeshNode3D>(node);
+ MeshInstance3D *mesh_3d = scene->cast_to<MeshInstance3D>(node);
+ if (scene->cast_to<Skeleton3D>(node)) {
+ Skeleton3D *skeleton = Object::cast_to<Skeleton3D>(node);
+
+ // Step 2: Bake the RESET animation from the RestBone to the skeleton.
+ _fix_skeleton(skeleton, r_rest_bones);
+ }
+ if (editor_mesh_3d) {
+ NodePath path = editor_mesh_3d->get_skeleton_path();
+ if (!path.is_empty() && editor_mesh_3d->get_node_or_null(path) && Object::cast_to<Skeleton3D>(editor_mesh_3d->get_node_or_null(path))) {
+ r_meshes.push_back(editor_mesh_3d);
+ }
+ } else if (mesh_3d) {
+ NodePath path = mesh_3d->get_skeleton_path();
+ if (!path.is_empty() && mesh_3d->get_node_or_null(path) && Object::cast_to<Skeleton3D>(mesh_3d->get_node_or_null(path))) {
+ r_meshes.push_back(mesh_3d);
+ }
+ }
+ int child_count = node->get_child_count();
+ for (int i = 0; i < child_count; i++) {
+ queue.push_back(node->get_child(i));
+ }
+ queue.pop_front();
+ }
+
+ queue.push_back(scene);
+ while (!queue.is_empty()) {
+ List<Node *>::Element *E = queue.front();
+ Node *node = E->get();
+ AnimationPlayer *ap = Object::cast_to<AnimationPlayer>(node);
+ if (ap) {
+ // Step 3: Key all RESET animation frames to identity.
+ _align_animations(ap, r_rest_bones);
+ }
+
+ int child_count = node->get_child_count();
+ for (int i = 0; i < child_count; i++) {
+ queue.push_back(node->get_child(i));
+ }
+ queue.pop_front();
+ }
+}
+
+void BakeReset::_align_animations(AnimationPlayer *p_ap, const Map<StringName, BakeResetRestBone> &r_rest_bones) {
+ ERR_FAIL_NULL(p_ap);
+ List<StringName> anim_names;
+ p_ap->get_animation_list(&anim_names);
+ for (List<StringName>::Element *anim_i = anim_names.front(); anim_i; anim_i = anim_i->next()) {
+ Ref<Animation> a = p_ap->get_animation(anim_i->get());
+ ERR_CONTINUE(a.is_null());
+ for (Map<StringName, BakeResetRestBone>::Element *rest_bone_i = r_rest_bones.front(); rest_bone_i; rest_bone_i = rest_bone_i->next()) {
+ int track = a->find_track(NodePath(rest_bone_i->key()));
+ if (track == -1) {
+ continue;
+ }
+ int new_track = a->add_track(Animation::TYPE_TRANSFORM3D);
+ NodePath new_path = NodePath(rest_bone_i->key());
+ BakeResetRestBone rest_bone = rest_bone_i->get();
+ a->track_set_path(new_track, new_path);
+ for (int key_i = 0; key_i < a->track_get_key_count(track); key_i++) {
+ Vector3 loc;
+ Quaternion rot;
+ Vector3 scale;
+ Error err = a->transform_track_get_key(track, key_i, &loc, &rot, &scale);
+ ERR_CONTINUE(err);
+ real_t time = a->track_get_key_time(track, key_i);
+ rot.normalize();
+ loc = loc - rest_bone.loc;
+ rot = rest_bone.rest_delta.get_rotation_quaternion().inverse() * rot;
+ rot.normalize();
+ scale = Vector3(1, 1, 1) - (rest_bone.rest_delta.get_scale() - scale);
+ // Apply the reverse of the rest changes to make the key be close to identity transform.
+ a->transform_track_insert_key(new_track, time, loc, rot, scale);
+ }
+ a->remove_track(track);
+ }
+ }
+}
+
+void BakeReset::_fetch_reset_animation(AnimationPlayer *p_ap, Map<StringName, BakeResetRestBone> &r_rest_bones, const String &p_bake_anim) {
+ ERR_FAIL_NULL(p_ap);
+ List<StringName> anim_names;
+ p_ap->get_animation_list(&anim_names);
+ Node *root = p_ap->get_owner();
+ ERR_FAIL_NULL(root);
+ Ref<Animation> a = p_ap->get_animation(p_bake_anim);
+ ERR_FAIL_NULL(a);
+ for (int32_t track = 0; track < a->get_track_count(); track++) {
+ NodePath path = a->track_get_path(track);
+ String string_path = path;
+ Skeleton3D *skeleton = root->cast_to<Skeleton3D>(root->get_node(string_path.get_slice(":", 0)));
+ if (!skeleton) {
+ continue;
+ }
+ String bone_name = string_path.get_slice(":", 1);
+ for (int key_i = 0; key_i < a->track_get_key_count(track); key_i++) {
+ Vector3 loc;
+ Quaternion rot;
+ Vector3 scale;
+ Error err = a->transform_track_get_key(track, key_i, &loc, &rot, &scale);
+ ERR_CONTINUE(err);
+ rot.normalize();
+ Basis rot_basis = Basis(rot, scale);
+ BakeResetRestBone rest_bone;
+ rest_bone.rest_delta = rot_basis;
+ rest_bone.loc = loc;
+ // Store the animation into the RestBone.
+ r_rest_bones[StringName(String(skeleton->get_owner()->get_path_to(skeleton)) + ":" + bone_name)] = rest_bone;
+ break;
+ }
+ }
+}
+
+void BakeReset::_fix_skeleton(Skeleton3D *p_skeleton, Map<StringName, BakeReset::BakeResetRestBone> &r_rest_bones) {
+ int bone_count = p_skeleton->get_bone_count();
+
+ // First iterate through all the bones and update the RestBone.
+ for (int j = 0; j < bone_count; j++) {
+ StringName final_path = String(p_skeleton->get_owner()->get_path_to(p_skeleton)) + String(":") + p_skeleton->get_bone_name(j);
+ BakeResetRestBone &rest_bone = r_rest_bones[final_path];
+ rest_bone.rest_local = p_skeleton->get_bone_rest(j);
+ }
+ for (int i = 0; i < bone_count; i++) {
+ int parent_bone = p_skeleton->get_bone_parent(i);
+ String path = p_skeleton->get_owner()->get_path_to(p_skeleton);
+ StringName final_path = String(path) + String(":") + p_skeleton->get_bone_name(parent_bone);
+ if (parent_bone >= 0) {
+ r_rest_bones[path].children.push_back(i);
+ }
+ }
+
+ // When we apply transform to a bone, we also have to move all of its children in the opposite direction.
+ for (int i = 0; i < bone_count; i++) {
+ StringName final_path = String(p_skeleton->get_owner()->get_path_to(p_skeleton)) + String(":") + p_skeleton->get_bone_name(i);
+ r_rest_bones[final_path].rest_local = r_rest_bones[final_path].rest_local * Transform3D(r_rest_bones[final_path].rest_delta, r_rest_bones[final_path].loc);
+ // Iterate through the children and move in the opposite direction.
+ for (int j = 0; j < r_rest_bones[final_path].children.size(); j++) {
+ int child_index = r_rest_bones[final_path].children[j];
+ StringName children_path = String(p_skeleton->get_name()) + String(":") + p_skeleton->get_bone_name(child_index);
+ r_rest_bones[children_path].rest_local = Transform3D(r_rest_bones[final_path].rest_delta, r_rest_bones[final_path].loc).affine_inverse() * r_rest_bones[children_path].rest_local;
+ }
+ }
+
+ for (int i = 0; i < bone_count; i++) {
+ StringName final_path = String(p_skeleton->get_owner()->get_path_to(p_skeleton)) + String(":") + p_skeleton->get_bone_name(i);
+ ERR_CONTINUE(!r_rest_bones.has(final_path));
+ Transform3D rest_transform = r_rest_bones[final_path].rest_local;
+ p_skeleton->set_bone_rest(i, rest_transform);
+ }
+}
diff --git a/editor/import/editor_importer_bake_reset.h b/editor/import/editor_importer_bake_reset.h
new file mode 100644
index 0000000000..e36ae86181
--- /dev/null
+++ b/editor/import/editor_importer_bake_reset.h
@@ -0,0 +1,54 @@
+/*************************************************************************/
+/* editor_importer_bake_reset.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef RESOURCE_IMPORTER_BAKE_RESET_H
+#define RESOURCE_IMPORTER_BAKE_RESET_H
+
+#include "scene/main/node.h"
+
+class Skeleton3D;
+class AnimationPlayer;
+class BakeReset {
+ struct BakeResetRestBone {
+ Transform3D rest_local;
+ Basis rest_delta;
+ Vector3 loc;
+ Vector<int> children;
+ };
+
+public:
+ void _bake_animation_pose(Node *scene, const String &p_bake_anim);
+
+private:
+ void _fix_skeleton(Skeleton3D *p_skeleton, Map<StringName, BakeReset::BakeResetRestBone> &r_rest_bones);
+ void _align_animations(AnimationPlayer *p_ap, const Map<StringName, BakeResetRestBone> &r_rest_bones);
+ void _fetch_reset_animation(AnimationPlayer *p_ap, Map<StringName, BakeResetRestBone> &r_rest_bones, const String &p_bake_anim);
+};
+#endif
diff --git a/editor/import/resource_importer_obj.cpp b/editor/import/resource_importer_obj.cpp
index 01603c0a6a..34bc0a7d8d 100644
--- a/editor/import/resource_importer_obj.cpp
+++ b/editor/import/resource_importer_obj.cpp
@@ -438,17 +438,16 @@ Node *EditorOBJImporter::import_scene(const String &p_path, uint32_t p_flags, in
Node3D *scene = memnew(Node3D);
- for (List<Ref<Mesh>>::Element *E = meshes.front(); E; E = E->next()) {
+ for (const Ref<Mesh> &m : meshes) {
Ref<EditorSceneImporterMesh> mesh;
mesh.instantiate();
- Ref<Mesh> m = E->get();
for (int i = 0; i < m->get_surface_count(); i++) {
mesh->add_surface(m->surface_get_primitive_type(i), m->surface_get_arrays(i), Array(), Dictionary(), m->surface_get_material(i));
}
EditorSceneImporterMeshNode3D *mi = memnew(EditorSceneImporterMeshNode3D);
mi->set_mesh(mesh);
- mi->set_name(E->get()->get_name());
+ mi->set_name(m->get_name());
scene->add_child(mi);
mi->set_owner(scene);
}
diff --git a/editor/import/resource_importer_scene.cpp b/editor/import/resource_importer_scene.cpp
index 1c79d4f078..50aae6c434 100644
--- a/editor/import/resource_importer_scene.cpp
+++ b/editor/import/resource_importer_scene.cpp
@@ -32,6 +32,7 @@
#include "core/io/resource_saver.h"
#include "editor/editor_node.h"
+#include "editor/import/editor_importer_bake_reset.h"
#include "editor/import/scene_import_settings.h"
#include "editor/import/scene_importer_mesh_node_3d.h"
#include "scene/3d/area_3d.h"
@@ -297,8 +298,8 @@ Node *ResourceImporterScene::_pre_fix_node(Node *p_node, Node *p_root, Map<Ref<E
List<StringName> anims;
ap->get_animation_list(&anims);
- for (List<StringName>::Element *E = anims.front(); E; E = E->next()) {
- Ref<Animation> anim = ap->get_animation(E->get());
+ for (const StringName &E : anims) {
+ Ref<Animation> anim = ap->get_animation(E);
ERR_CONTINUE(anim.is_null());
for (int i = 0; i < anim->get_track_count(); i++) {
NodePath path = anim->track_get_path(i);
@@ -313,14 +314,14 @@ Node *ResourceImporterScene::_pre_fix_node(Node *p_node, Node *p_root, Map<Ref<E
}
}
- String animname = E->get();
+ String animname = E;
const int loop_string_count = 3;
static const char *loop_strings[loop_string_count] = { "loops", "loop", "cycle" };
for (int i = 0; i < loop_string_count; i++) {
if (_teststr(animname, loop_strings[i])) {
anim->set_loop(true);
animname = _fixstr(animname, loop_strings[i]);
- ap->rename_animation(E->get(), animname);
+ ap->rename_animation(E, animname);
}
}
}
@@ -644,9 +645,9 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
}
int idx = 0;
- for (List<Ref<Shape3D>>::Element *E = shapes.front(); E; E = E->next()) {
+ for (const Ref<Shape3D> &E : shapes) {
CollisionShape3D *cshape = memnew(CollisionShape3D);
- cshape->set_shape(E->get());
+ cshape->set_shape(E);
base->add_child(cshape);
cshape->set_owner(base->get_owner());
@@ -697,9 +698,9 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
//fill node settings for this node with default values
List<ImportOption> iopts;
get_internal_import_options(INTERNAL_IMPORT_CATEGORY_ANIMATION_NODE, &iopts);
- for (List<ImportOption>::Element *E = iopts.front(); E; E = E->next()) {
- if (!node_settings.has(E->get().option.name)) {
- node_settings[E->get().option.name] = E->get().default_value;
+ for (const ImportOption &E : iopts) {
+ if (!node_settings.has(E.option.name)) {
+ node_settings[E.option.name] = E.default_value;
}
}
}
@@ -741,8 +742,7 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
} else {
List<StringName> anims;
ap->get_animation_list(&anims);
- for (List<StringName>::Element *E = anims.front(); E; E = E->next()) {
- String name = E->get();
+ for (const StringName &name : anims) {
Ref<Animation> anim = ap->get_animation(name);
if (p_animation_data.has(name)) {
Dictionary anim_settings = p_animation_data[name];
@@ -750,9 +750,9 @@ Node *ResourceImporterScene::_post_fix_node(Node *p_node, Node *p_root, Map<Ref<
//fill with default values
List<ImportOption> iopts;
get_internal_import_options(INTERNAL_IMPORT_CATEGORY_ANIMATION, &iopts);
- for (List<ImportOption>::Element *F = iopts.front(); F; F = F->next()) {
- if (!anim_settings.has(F->get().option.name)) {
- anim_settings[F->get().option.name] = F->get().default_value;
+ for (const ImportOption &F : iopts) {
+ if (!anim_settings.has(F.option.name)) {
+ anim_settings[F.option.name] = F.default_value;
}
}
}
@@ -921,8 +921,8 @@ void ResourceImporterScene::_create_clips(AnimationPlayer *anim, const Array &p_
void ResourceImporterScene::_optimize_animations(AnimationPlayer *anim, float p_max_lin_error, float p_max_ang_error, float p_max_angle) {
List<StringName> anim_names;
anim->get_animation_list(&anim_names);
- for (List<StringName>::Element *E = anim_names.front(); E; E = E->next()) {
- Ref<Animation> a = anim->get_animation(E->get());
+ for (const StringName &E : anim_names) {
+ Ref<Animation> a = anim->get_animation(E);
a->optimize(p_max_lin_error, p_max_ang_error, Math::deg2rad(p_max_angle));
}
}
@@ -1031,11 +1031,11 @@ void ResourceImporterScene::get_import_options(List<ImportOption> *r_options, in
String script_ext_hint;
- for (List<String>::Element *E = script_extentions.front(); E; E = E->next()) {
+ for (const String &E : script_extentions) {
if (script_ext_hint != "") {
script_ext_hint += ",";
}
- script_ext_hint += "*." + E->get();
+ script_ext_hint += "*." + E;
}
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "nodes/root_scale", PROPERTY_HINT_RANGE, "0.001,1000,0.001"), 1.0));
@@ -1046,6 +1046,7 @@ void ResourceImporterScene::get_import_options(List<ImportOption> *r_options, in
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "meshes/lightmap_texel_size", PROPERTY_HINT_RANGE, "0.001,100,0.001"), 0.1));
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "skins/use_named_skins"), true));
r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "animation/import"), true));
+ r_options->push_back(ImportOption(PropertyInfo(Variant::BOOL, "animation/bake_reset_animation"), true));
r_options->push_back(ImportOption(PropertyInfo(Variant::FLOAT, "animation/fps", PROPERTY_HINT_RANGE, "1,120,1"), 15));
r_options->push_back(ImportOption(PropertyInfo(Variant::STRING, "import_script/path", PROPERTY_HINT_FILE, script_ext_hint), ""));
@@ -1074,9 +1075,9 @@ Node *ResourceImporterScene::import_scene_from_other_importer(EditorSceneImporte
List<String> extensions;
E->get()->get_extensions(&extensions);
- for (List<String>::Element *F = extensions.front(); F; F = F->next()) {
- if (F->get().to_lower() == ext) {
- importer = E->get();
+ for (const String &F : extensions) {
+ if (F.to_lower() == ext) {
+ importer = E;
break;
}
}
@@ -1104,9 +1105,9 @@ Ref<Animation> ResourceImporterScene::import_animation_from_other_importer(Edito
List<String> extensions;
E->get()->get_extensions(&extensions);
- for (List<String>::Element *F = extensions.front(); F; F = F->next()) {
- if (F->get().to_lower() == ext) {
- importer = E->get();
+ for (const String &F : extensions) {
+ if (F.to_lower() == ext) {
+ importer = E;
break;
}
}
@@ -1276,9 +1277,9 @@ void ResourceImporterScene::_generate_meshes(Node *p_node, const Dictionary &p_m
}
void ResourceImporterScene::_add_shapes(Node *p_node, const List<Ref<Shape3D>> &p_shapes) {
- for (const List<Ref<Shape3D>>::Element *E = p_shapes.front(); E; E = E->next()) {
+ for (const Ref<Shape3D> &E : p_shapes) {
CollisionShape3D *cshape = memnew(CollisionShape3D);
- cshape->set_shape(E->get());
+ cshape->set_shape(E);
p_node->add_child(cshape);
cshape->set_owner(p_node->get_owner());
@@ -1296,8 +1297,8 @@ Node *ResourceImporterScene::pre_import(const String &p_source_file) {
List<String> extensions;
E->get()->get_extensions(&extensions);
- for (List<String>::Element *F = extensions.front(); F; F = F->next()) {
- if (F->get().to_lower() == ext) {
+ for (const String &F : extensions) {
+ if (F.to_lower() == ext) {
importer = E->get();
break;
}
@@ -1336,8 +1337,8 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
List<String> extensions;
E->get()->get_extensions(&extensions);
- for (List<String>::Element *F = extensions.front(); F; F = F->next()) {
- if (F->get().to_lower() == ext) {
+ for (const String &F : extensions) {
+ if (F.to_lower() == ext) {
importer = E->get();
break;
}
@@ -1396,6 +1397,11 @@ Error ResourceImporterScene::import(const String &p_source_file, const String &p
_pre_fix_node(scene, scene, collision_map);
_post_fix_node(scene, scene, collision_map, scanned_meshes, node_data, material_data, animation_data, fps);
+ bool use_bake_reset_animation = p_options["animation/bake_reset_animation"];
+ if (use_bake_reset_animation) {
+ BakeReset bake_reset;
+ bake_reset._bake_animation_pose(scene, "RESET");
+ }
String root_type = p_options["nodes/root_type"];
root_type = root_type.split(" ")[0]; // full root_type is "ClassName (filename.gd)" for a script global class.
diff --git a/editor/import/resource_importer_scene.h b/editor/import/resource_importer_scene.h
index c6e5836a23..781beff689 100644
--- a/editor/import/resource_importer_scene.h
+++ b/editor/import/resource_importer_scene.h
@@ -155,7 +155,8 @@ public:
virtual void get_import_options(List<ImportOption> *r_options, int p_preset = 0) const override;
virtual bool get_option_visibility(const String &p_option, const Map<StringName, Variant> &p_options) const override;
- virtual int get_import_order() const override { return 100; } //after everything
+ // Import scenes *after* everything else (such as textures).
+ virtual int get_import_order() const override { return ResourceImporter::IMPORT_ORDER_SCENE; }
Node *_pre_fix_node(Node *p_node, Node *p_root, Map<Ref<EditorSceneImporterMesh>, List<Ref<Shape3D>>> &collision_map);
Node *_post_fix_node(Node *p_node, Node *p_root, Map<Ref<EditorSceneImporterMesh>, List<Ref<Shape3D>>> &collision_map, Set<Ref<EditorSceneImporterMesh>> &r_scanned_meshes, const Dictionary &p_node_data, const Dictionary &p_material_data, const Dictionary &p_animation_data, float p_animation_fps);
diff --git a/editor/import/scene_import_settings.cpp b/editor/import/scene_import_settings.cpp
index 5dc494d6df..19a8f209bb 100644
--- a/editor/import/scene_import_settings.cpp
+++ b/editor/import/scene_import_settings.cpp
@@ -71,9 +71,9 @@ class SceneImportSettingsData : public Object {
return false;
}
void _get_property_list(List<PropertyInfo> *p_list) const {
- for (const List<ResourceImporter::ImportOption>::Element *E = options.front(); E; E = E->next()) {
- if (ResourceImporterScene::get_singleton()->get_internal_option_visibility(category, E->get().option.name, current)) {
- p_list->push_back(E->get().option);
+ for (const ResourceImporter::ImportOption &E : options) {
+ if (ResourceImporterScene::get_singleton()->get_internal_option_visibility(category, E.option.name, current)) {
+ p_list->push_back(E.option);
}
}
}
@@ -305,8 +305,8 @@ void SceneImportSettings::_fill_scene(Node *p_node, TreeItem *p_parent_item) {
if (anim_node) {
List<StringName> animations;
anim_node->get_animation_list(&animations);
- for (List<StringName>::Element *E = animations.front(); E; E = E->next()) {
- _fill_animation(scene_tree, anim_node->get_animation(E->get()), E->get(), item);
+ for (const StringName &E : animations) {
+ _fill_animation(scene_tree, anim_node->get_animation(E), E, item);
}
}
@@ -394,8 +394,8 @@ void SceneImportSettings::_load_default_subresource_settings(Map<StringName, Var
d = d[p_import_id];
List<ResourceImporterScene::ImportOption> options;
ResourceImporterScene::get_singleton()->get_internal_import_options(p_category, &options);
- for (List<ResourceImporterScene::ImportOption>::Element *E = options.front(); E; E = E->next()) {
- String key = E->get().option.name;
+ for (const ResourceImporterScene::ImportOption &E : options) {
+ String key = E.option.name;
if (d.has(key)) {
settings[key] = d[key];
}
@@ -440,12 +440,12 @@ void SceneImportSettings::open_settings(const String &p_path) {
if (err == OK) {
List<String> keys;
config->get_section_keys("params", &keys);
- for (List<String>::Element *E = keys.front(); E; E = E->next()) {
- Variant value = config->get_value("params", E->get());
- if (E->get() == "_subresources") {
+ for (const String &E : keys) {
+ Variant value = config->get_value("params", E);
+ if (E == "_subresources") {
base_subresource_settings = value;
} else {
- defaults[E->get()] = value;
+ defaults[E] = value;
}
}
}
@@ -605,13 +605,13 @@ void SceneImportSettings::_select(Tree *p_from, String p_type, String p_id) {
scene_import_settings_data->defaults.clear();
scene_import_settings_data->current.clear();
- for (List<ResourceImporter::ImportOption>::Element *E = options.front(); E; E = E->next()) {
- scene_import_settings_data->defaults[E->get().option.name] = E->get().default_value;
+ for (const ResourceImporter::ImportOption &E : options) {
+ scene_import_settings_data->defaults[E.option.name] = E.default_value;
//needed for visibility toggling (fails if something is missing)
- if (scene_import_settings_data->settings->has(E->get().option.name)) {
- scene_import_settings_data->current[E->get().option.name] = (*scene_import_settings_data->settings)[E->get().option.name];
+ if (scene_import_settings_data->settings->has(E.option.name)) {
+ scene_import_settings_data->current[E.option.name] = (*scene_import_settings_data->settings)[E.option.name];
} else {
- scene_import_settings_data->current[E->get().option.name] = E->get().default_value;
+ scene_import_settings_data->current[E.option.name] = E.default_value;
}
}
scene_import_settings_data->options = options;
diff --git a/editor/import/scene_importer_mesh.cpp b/editor/import/scene_importer_mesh.cpp
index f8e93df382..0d14347225 100644
--- a/editor/import/scene_importer_mesh.cpp
+++ b/editor/import/scene_importer_mesh.cpp
@@ -79,11 +79,11 @@ void EditorSceneImporterMesh::add_surface(Mesh::PrimitiveType p_primitive, const
List<Variant> lods;
p_lods.get_key_list(&lods);
- for (List<Variant>::Element *E = lods.front(); E; E = E->next()) {
- ERR_CONTINUE(!E->get().is_num());
+ for (const Variant &E : lods) {
+ ERR_CONTINUE(!E.is_num());
Surface::LOD lod;
- lod.distance = E->get();
- lod.indices = p_lods[E->get()];
+ lod.distance = E;
+ lod.indices = p_lods[E];
ERR_CONTINUE(lod.indices.size() == 0);
s.lods.push_back(lod);
}
diff --git a/editor/import_defaults_editor.cpp b/editor/import_defaults_editor.cpp
index 8c506e938d..25bca1d4f4 100644
--- a/editor/import_defaults_editor.cpp
+++ b/editor/import_defaults_editor.cpp
@@ -61,9 +61,9 @@ protected:
if (importer.is_null()) {
return;
}
- for (const List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
- if (importer->get_option_visibility(E->get().name, values)) {
- p_list->push_back(E->get());
+ for (const PropertyInfo &E : properties) {
+ if (importer->get_option_visibility(E.name, values)) {
+ p_list->push_back(E);
}
}
}
@@ -106,9 +106,9 @@ void ImportDefaultsEditor::_update_importer() {
List<Ref<ResourceImporter>> importer_list;
ResourceFormatImporter::get_singleton()->get_importers(&importer_list);
Ref<ResourceImporter> importer;
- for (List<Ref<ResourceImporter>>::Element *E = importer_list.front(); E; E = E->next()) {
- if (E->get()->get_visible_name() == importers->get_item_text(importers->get_selected())) {
- importer = E->get();
+ for (const Ref<ResourceImporter> &E : importer_list) {
+ if (E->get_visible_name() == importers->get_item_text(importers->get_selected())) {
+ importer = E;
break;
}
}
@@ -125,14 +125,14 @@ void ImportDefaultsEditor::_update_importer() {
d = ProjectSettings::get_singleton()->get("importer_defaults/" + importer->get_importer_name());
}
- for (List<ResourceImporter::ImportOption>::Element *E = options.front(); E; E = E->next()) {
- settings->properties.push_back(E->get().option);
- if (d.has(E->get().option.name)) {
- settings->values[E->get().option.name] = d[E->get().option.name];
+ for (const ResourceImporter::ImportOption &E : options) {
+ settings->properties.push_back(E.option);
+ if (d.has(E.option.name)) {
+ settings->values[E.option.name] = d[E.option.name];
} else {
- settings->values[E->get().option.name] = E->get().default_value;
+ settings->values[E.option.name] = E.default_value;
}
- settings->default_values[E->get().option.name] = E->get().default_value;
+ settings->default_values[E.option.name] = E.default_value;
}
save_defaults->set_disabled(false);
@@ -166,8 +166,8 @@ void ImportDefaultsEditor::clear() {
List<Ref<ResourceImporter>> importer_list;
ResourceFormatImporter::get_singleton()->get_importers(&importer_list);
Vector<String> names;
- for (List<Ref<ResourceImporter>>::Element *E = importer_list.front(); E; E = E->next()) {
- String vn = E->get()->get_visible_name();
+ for (const Ref<ResourceImporter> &E : importer_list) {
+ String vn = E->get_visible_name();
names.push_back(vn);
}
names.sort();
diff --git a/editor/import_dock.cpp b/editor/import_dock.cpp
index 4110912ff3..648e60a554 100644
--- a/editor/import_dock.cpp
+++ b/editor/import_dock.cpp
@@ -65,14 +65,14 @@ public:
return false;
}
void _get_property_list(List<PropertyInfo> *p_list) const {
- for (const List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
- if (!importer->get_option_visibility(E->get().name, values)) {
+ for (const PropertyInfo &E : properties) {
+ if (!importer->get_option_visibility(E.name, values)) {
continue;
}
- PropertyInfo pi = E->get();
+ PropertyInfo pi = E;
if (checking) {
pi.usage |= PROPERTY_USAGE_CHECKABLE;
- if (checked.has(E->get().name)) {
+ if (checked.has(E.name)) {
pi.usage |= PROPERTY_USAGE_CHECKED;
}
}
@@ -111,18 +111,18 @@ void ImportDock::set_edit_path(const String &p_path) {
ResourceFormatImporter::get_singleton()->get_importers_for_extension(p_path.get_extension(), &importers);
List<Pair<String, String>> importer_names;
- for (List<Ref<ResourceImporter>>::Element *E = importers.front(); E; E = E->next()) {
- importer_names.push_back(Pair<String, String>(E->get()->get_visible_name(), E->get()->get_importer_name()));
+ for (const Ref<ResourceImporter> &E : importers) {
+ importer_names.push_back(Pair<String, String>(E->get_visible_name(), E->get_importer_name()));
}
importer_names.sort_custom<PairSort<String, String>>();
import_as->clear();
- for (List<Pair<String, String>>::Element *E = importer_names.front(); E; E = E->next()) {
- import_as->add_item(E->get().first);
- import_as->set_item_metadata(import_as->get_item_count() - 1, E->get().second);
- if (E->get().second == importer_name) {
+ for (const Pair<String, String> &E : importer_names) {
+ import_as->add_item(E.first);
+ import_as->set_item_metadata(import_as->get_item_count() - 1, E.second);
+ if (E.second == importer_name) {
import_as->select(import_as->get_item_count() - 1);
}
}
@@ -153,12 +153,12 @@ void ImportDock::_update_options(const Ref<ConfigFile> &p_config) {
params->checking = params->paths.size() > 1;
params->checked.clear();
- for (List<ResourceImporter::ImportOption>::Element *E = options.front(); E; E = E->next()) {
- params->properties.push_back(E->get().option);
- if (p_config.is_valid() && p_config->has_section_key("params", E->get().option.name)) {
- params->values[E->get().option.name] = p_config->get_value("params", E->get().option.name);
+ for (const ResourceImporter::ImportOption &E : options) {
+ params->properties.push_back(E.option);
+ if (p_config.is_valid() && p_config->has_section_key("params", E.option.name)) {
+ params->values[E.option.name] = p_config->get_value("params", E.option.name);
} else {
- params->values[E->get().option.name] = E->get().default_value;
+ params->values[E.option.name] = E.default_value;
}
}
@@ -201,17 +201,17 @@ void ImportDock::set_edit_multiple_paths(const Vector<String> &p_paths) {
List<String> keys;
config->get_section_keys("params", &keys);
- for (List<String>::Element *E = keys.front(); E; E = E->next()) {
- if (!value_frequency.has(E->get())) {
- value_frequency[E->get()] = Dictionary();
+ for (const String &E : keys) {
+ if (!value_frequency.has(E)) {
+ value_frequency[E] = Dictionary();
}
- Variant value = config->get_value("params", E->get());
+ Variant value = config->get_value("params", E);
- if (value_frequency[E->get()].has(value)) {
- value_frequency[E->get()][value] = int(value_frequency[E->get()][value]) + 1;
+ if (value_frequency[E].has(value)) {
+ value_frequency[E][value] = int(value_frequency[E][value]) + 1;
} else {
- value_frequency[E->get()][value] = 1;
+ value_frequency[E][value] = 1;
}
}
}
@@ -226,25 +226,25 @@ void ImportDock::set_edit_multiple_paths(const Vector<String> &p_paths) {
params->checking = true;
params->checked.clear();
- for (List<ResourceImporter::ImportOption>::Element *E = options.front(); E; E = E->next()) {
- params->properties.push_back(E->get().option);
+ for (const ResourceImporter::ImportOption &E : options) {
+ params->properties.push_back(E.option);
- if (value_frequency.has(E->get().option.name)) {
- Dictionary d = value_frequency[E->get().option.name];
+ if (value_frequency.has(E.option.name)) {
+ Dictionary d = value_frequency[E.option.name];
int freq = 0;
List<Variant> v;
d.get_key_list(&v);
Variant value;
- for (List<Variant>::Element *F = v.front(); F; F = F->next()) {
- int f = d[F->get()];
+ for (const Variant &F : v) {
+ int f = d[F];
if (f > freq) {
- value = F->get();
+ value = F;
}
}
- params->values[E->get().option.name] = value;
+ params->values[E.option.name] = value;
} else {
- params->values[E->get().option.name] = E->get().default_value;
+ params->values[E.option.name] = E.default_value;
}
}
@@ -254,18 +254,18 @@ void ImportDock::set_edit_multiple_paths(const Vector<String> &p_paths) {
ResourceFormatImporter::get_singleton()->get_importers_for_extension(p_paths[0].get_extension(), &importers);
List<Pair<String, String>> importer_names;
- for (List<Ref<ResourceImporter>>::Element *E = importers.front(); E; E = E->next()) {
- importer_names.push_back(Pair<String, String>(E->get()->get_visible_name(), E->get()->get_importer_name()));
+ for (const Ref<ResourceImporter> &E : importers) {
+ importer_names.push_back(Pair<String, String>(E->get_visible_name(), E->get_importer_name()));
}
importer_names.sort_custom<PairSort<String, String>>();
import_as->clear();
- for (List<Pair<String, String>>::Element *E = importer_names.front(); E; E = E->next()) {
- import_as->add_item(E->get().first);
- import_as->set_item_metadata(import_as->get_item_count() - 1, E->get().second);
- if (E->get().second == params->importer->get_importer_name()) {
+ for (const Pair<String, String> &E : importer_names) {
+ import_as->add_item(E.first);
+ import_as->set_item_metadata(import_as->get_item_count() - 1, E.second);
+ if (E.second == params->importer->get_importer_name()) {
import_as->select(import_as->get_item_count() - 1);
}
}
@@ -345,8 +345,8 @@ void ImportDock::_preset_selected(int p_idx) {
case ITEM_SET_AS_DEFAULT: {
Dictionary d;
- for (const List<PropertyInfo>::Element *E = params->properties.front(); E; E = E->next()) {
- d[E->get().name] = params->values[E->get().name];
+ for (const PropertyInfo &E : params->properties) {
+ d[E.name] = params->values[E.name];
}
ProjectSettings::get_singleton()->set("importer_defaults/" + params->importer->get_importer_name(), d);
@@ -363,10 +363,10 @@ void ImportDock::_preset_selected(int p_idx) {
if (params->checking) {
params->checked.clear();
}
- for (List<Variant>::Element *E = v.front(); E; E = E->next()) {
- params->values[E->get()] = d[E->get()];
+ for (const Variant &E : v) {
+ params->values[E] = d[E];
if (params->checking) {
- params->checked.insert(E->get());
+ params->checked.insert(E);
}
}
params->update();
@@ -384,10 +384,10 @@ void ImportDock::_preset_selected(int p_idx) {
if (params->checking) {
params->checked.clear();
}
- for (List<ResourceImporter::ImportOption>::Element *E = options.front(); E; E = E->next()) {
- params->values[E->get().option.name] = E->get().default_value;
+ for (const ResourceImporter::ImportOption &E : options) {
+ params->values[E.option.name] = E.default_value;
if (params->checking) {
- params->checked.insert(E->get().option.name);
+ params->checked.insert(E.option.name);
}
}
params->update();
@@ -486,9 +486,9 @@ void ImportDock::_reimport() {
if (params->checking && config->get_value("remap", "importer") == params->importer->get_importer_name()) {
//update only what is edited (checkboxes) if the importer is the same
- for (List<PropertyInfo>::Element *E = params->properties.front(); E; E = E->next()) {
- if (params->checked.has(E->get().name)) {
- config->set_value("params", E->get().name, params->values[E->get().name]);
+ for (const PropertyInfo &E : params->properties) {
+ if (params->checked.has(E.name)) {
+ config->set_value("params", E.name, params->values[E.name]);
}
}
} else {
@@ -498,8 +498,8 @@ void ImportDock::_reimport() {
config->erase_section("params");
}
- for (List<PropertyInfo>::Element *E = params->properties.front(); E; E = E->next()) {
- config->set_value("params", E->get().name, params->values[E->get().name]);
+ for (const PropertyInfo &E : params->properties) {
+ config->set_value("params", E.name, params->values[E.name]);
}
}
diff --git a/editor/inspector_dock.cpp b/editor/inspector_dock.cpp
index ab307500e7..952bec4d87 100644
--- a/editor/inspector_dock.cpp
+++ b/editor/inspector_dock.cpp
@@ -87,12 +87,12 @@ void InspectorDock::_menu_option(int p_option) {
List<PropertyInfo> props;
current->get_property_list(&props);
Map<RES, RES> duplicates;
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : props) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- Variant v = current->get(E->get().name);
+ Variant v = current->get(E.name);
if (v.is_ref()) {
REF ref = v;
if (ref.is_valid()) {
@@ -103,8 +103,8 @@ void InspectorDock::_menu_option(int p_option) {
}
res = duplicates[res];
- current->set(E->get().name, res);
- editor->get_inspector()->update_property(E->get().name);
+ current->set(E.name, res);
+ editor->get_inspector()->update_property(E.name);
}
}
}
@@ -408,28 +408,27 @@ void InspectorDock::update(Object *p_object) {
current = p_object;
- if (!p_object) {
- object_menu->set_disabled(true);
- warning->hide();
- search->set_editable(false);
- editor_path->clear_path();
- return;
- }
-
- bool is_resource = p_object->is_class("Resource");
- bool is_node = p_object->is_class("Node");
-
- object_menu->set_disabled(false);
- search->set_editable(true);
- editor_path->enable_path();
+ const bool is_object = p_object != nullptr;
+ const bool is_resource = is_object && p_object->is_class("Resource");
+ const bool is_node = is_object && p_object->is_class("Node");
+ object_menu->set_disabled(!is_object);
+ search->set_editable(is_object);
resource_save_button->set_disabled(!is_resource);
- open_docs_button->set_visible(is_resource || is_node);
+ open_docs_button->set_disabled(!is_resource && !is_node);
PopupMenu *resource_extra_popup = resource_extra_button->get_popup();
resource_extra_popup->set_item_disabled(resource_extra_popup->get_item_index(RESOURCE_COPY), !is_resource);
resource_extra_popup->set_item_disabled(resource_extra_popup->get_item_index(RESOURCE_MAKE_BUILT_IN), !is_resource);
+ if (!is_object) {
+ warning->hide();
+ editor_path->clear_path();
+ return;
+ }
+
+ editor_path->enable_path();
+
PopupMenu *p = object_menu->get_popup();
p->clear();
@@ -575,7 +574,7 @@ InspectorDock::InspectorDock(EditorNode *p_editor, EditorData &p_editor_data) {
open_docs_button = memnew(Button);
open_docs_button->set_flat(true);
- open_docs_button->set_visible(false);
+ open_docs_button->set_disabled(true);
open_docs_button->set_tooltip(TTR("Open documentation for this object."));
open_docs_button->set_icon(get_theme_icon(SNAME("HelpSearch"), SNAME("EditorIcons")));
open_docs_button->set_shortcut(ED_SHORTCUT("property_editor/open_help", TTR("Open Documentation")));
diff --git a/editor/localization_editor.cpp b/editor/localization_editor.cpp
index f51decd9dc..3fe1aa557d 100644
--- a/editor/localization_editor.cpp
+++ b/editor/localization_editor.cpp
@@ -43,15 +43,15 @@ void LocalizationEditor::_notification(int p_what) {
List<String> tfn;
ResourceLoader::get_recognized_extensions_for_type("Translation", &tfn);
- for (List<String>::Element *E = tfn.front(); E; E = E->next()) {
- translation_file_open->add_filter("*." + E->get());
+ for (const String &E : tfn) {
+ translation_file_open->add_filter("*." + E);
}
List<String> rfn;
ResourceLoader::get_recognized_extensions_for_type("Resource", &rfn);
- for (List<String>::Element *E = rfn.front(); E; E = E->next()) {
- translation_res_file_open_dialog->add_filter("*." + E->get());
- translation_res_option_file_open_dialog->add_filter("*." + E->get());
+ for (const String &E : rfn) {
+ translation_res_file_open_dialog->add_filter("*." + E);
+ translation_res_option_file_open_dialog->add_filter("*." + E);
}
_update_pot_file_extensions();
@@ -371,15 +371,10 @@ void LocalizationEditor::_translation_filter_mode_changed(int p_mode) {
void LocalizationEditor::_pot_add(const PackedStringArray &p_paths) {
PackedStringArray pot_translations = ProjectSettings::get_singleton()->get("internationalization/locale/translations_pot_files");
-
for (int i = 0; i < p_paths.size(); i++) {
- for (int j = 0; j < pot_translations.size(); j++) {
- if (pot_translations[j] == p_paths[i]) {
- continue; //exists
- }
+ if (!pot_translations.has(p_paths[i])) {
+ pot_translations.push_back(p_paths[i]);
}
-
- pot_translations.push_back(p_paths[i]);
}
undo_redo->create_action(vformat(TTR("Add %d file(s) for POT generation"), p_paths.size()));
@@ -430,8 +425,8 @@ void LocalizationEditor::_update_pot_file_extensions() {
pot_file_open_dialog->clear_filters();
List<String> translation_parse_file_extensions;
EditorTranslationParser::get_singleton()->get_recognized_extensions(&translation_parse_file_extensions);
- for (List<String>::Element *E = translation_parse_file_extensions.front(); E; E = E->next()) {
- pot_file_open_dialog->add_filter("*." + E->get());
+ for (const String &E : translation_parse_file_extensions) {
+ pot_file_open_dialog->add_filter("*." + E);
}
}
@@ -560,8 +555,8 @@ void LocalizationEditor::update_translations() {
List<Variant> rk;
remaps.get_key_list(&rk);
Vector<String> keys;
- for (List<Variant>::Element *E = rk.front(); E; E = E->next()) {
- keys.push_back(E->get());
+ for (const Variant &E : rk) {
+ keys.push_back(E);
}
keys.sort();
diff --git a/editor/multi_node_edit.cpp b/editor/multi_node_edit.cpp
index b714109af7..fd4a4334fc 100644
--- a/editor/multi_node_edit.cpp
+++ b/editor/multi_node_edit.cpp
@@ -52,12 +52,12 @@ bool MultiNodeEdit::_set_impl(const StringName &p_name, const Variant &p_value,
UndoRedo *ur = EditorNode::get_undo_redo();
ur->create_action(TTR("MultiNode Set") + " " + String(name), UndoRedo::MERGE_ENDS);
- for (const List<NodePath>::Element *E = nodes.front(); E; E = E->next()) {
- if (!es->has_node(E->get())) {
+ for (const NodePath &E : nodes) {
+ if (!es->has_node(E)) {
continue;
}
- Node *n = es->get_node(E->get());
+ Node *n = es->get_node(E);
if (!n) {
continue;
}
@@ -98,12 +98,12 @@ bool MultiNodeEdit::_get(const StringName &p_name, Variant &r_ret) const {
name = "script";
}
- for (const List<NodePath>::Element *E = nodes.front(); E; E = E->next()) {
- if (!es->has_node(E->get())) {
+ for (const NodePath &E : nodes) {
+ if (!es->has_node(E)) {
continue;
}
- const Node *n = es->get_node(E->get());
+ const Node *n = es->get_node(E);
if (!n) {
continue;
}
@@ -130,12 +130,12 @@ void MultiNodeEdit::_get_property_list(List<PropertyInfo> *p_list) const {
List<PLData *> data_list;
- for (const List<NodePath>::Element *E = nodes.front(); E; E = E->next()) {
- if (!es->has_node(E->get())) {
+ for (const NodePath &E : nodes) {
+ if (!es->has_node(E)) {
continue;
}
- Node *n = es->get_node(E->get());
+ Node *n = es->get_node(E);
if (!n) {
continue;
}
@@ -143,30 +143,30 @@ void MultiNodeEdit::_get_property_list(List<PropertyInfo> *p_list) const {
List<PropertyInfo> plist;
n->get_property_list(&plist, true);
- for (List<PropertyInfo>::Element *F = plist.front(); F; F = F->next()) {
- if (F->get().name == "script") {
+ for (const PropertyInfo &F : plist) {
+ if (F.name == "script") {
continue; //added later manually, since this is intercepted before being set (check Variant Object::get() )
}
- if (!usage.has(F->get().name)) {
+ if (!usage.has(F.name)) {
PLData pld;
pld.uses = 0;
- pld.info = F->get();
- usage[F->get().name] = pld;
- data_list.push_back(usage.getptr(F->get().name));
+ pld.info = F;
+ usage[F.name] = pld;
+ data_list.push_back(usage.getptr(F.name));
}
// Make sure only properties with the same exact PropertyInfo data will appear
- if (usage[F->get().name].info == F->get()) {
- usage[F->get().name].uses++;
+ if (usage[F.name].info == F) {
+ usage[F.name].uses++;
}
}
nc++;
}
- for (List<PLData *>::Element *E = data_list.front(); E; E = E->next()) {
- if (nc == E->get()->uses) {
- p_list->push_back(E->get()->info);
+ for (const PLData *E : data_list) {
+ if (nc == E->uses) {
+ p_list->push_back(E->info);
}
}
diff --git a/editor/plugin_config_dialog.cpp b/editor/plugin_config_dialog.cpp
index 35b27b25aa..5fe466140b 100644
--- a/editor/plugin_config_dialog.cpp
+++ b/editor/plugin_config_dialog.cpp
@@ -150,7 +150,7 @@ void PluginConfigDialog::_on_required_text_changed(const String &) {
if (script_edit->get_text().get_extension() != ext) {
is_valid = false;
script_validation->set_texture(invalid_icon);
- script_validation->set_tooltip(vformat(TTR("Script extension must match chosen langauge extension (.%s)."), ext));
+ script_validation->set_tooltip(vformat(TTR("Script extension must match chosen language extension (.%s)."), ext));
}
if (script_edit->get_text().get_basename().is_empty()) {
is_valid = false;
diff --git a/editor/plugins/animation_blend_space_1d_editor.cpp b/editor/plugins/animation_blend_space_1d_editor.cpp
index 9e58332e41..ad2d9866fa 100644
--- a/editor/plugins/animation_blend_space_1d_editor.cpp
+++ b/editor/plugins/animation_blend_space_1d_editor.cpp
@@ -72,22 +72,22 @@ void AnimationNodeBlendSpace1DEditor::_blend_space_gui_input(const Ref<InputEven
List<StringName> names;
ap->get_animation_list(&names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- animations_menu->add_icon_item(get_theme_icon(SNAME("Animation"), SNAME("EditorIcons")), E->get());
- animations_to_add.push_back(E->get());
+ for (const StringName &E : names) {
+ animations_menu->add_icon_item(get_theme_icon(SNAME("Animation"), SNAME("EditorIcons")), E);
+ animations_to_add.push_back(E);
}
}
}
- for (List<StringName>::Element *E = classes.front(); E; E = E->next()) {
- String name = String(E->get()).replace_first("AnimationNode", "");
+ for (const StringName &E : classes) {
+ String name = String(E).replace_first("AnimationNode", "");
if (name == "Animation") {
continue;
}
int idx = menu->get_item_count();
menu->add_item(vformat("Add %s", name), idx);
- menu->set_item_metadata(idx, E->get());
+ menu->set_item_metadata(idx, E);
}
Ref<AnimationNode> clipb = EditorSettings::get_singleton()->get_resource_clipboard();
@@ -373,8 +373,8 @@ void AnimationNodeBlendSpace1DEditor::_add_menu_type(int p_index) {
open_file->clear_filters();
List<String> filters;
ResourceLoader::get_recognized_extensions_for_type("AnimationRootNode", &filters);
- for (List<String>::Element *E = filters.front(); E; E = E->next()) {
- open_file->add_filter("*." + E->get());
+ for (const String &E : filters) {
+ open_file->add_filter("*." + E);
}
open_file->popup_file_dialog();
return;
diff --git a/editor/plugins/animation_blend_space_2d_editor.cpp b/editor/plugins/animation_blend_space_2d_editor.cpp
index bbf88bbd8f..49fcac512b 100644
--- a/editor/plugins/animation_blend_space_2d_editor.cpp
+++ b/editor/plugins/animation_blend_space_2d_editor.cpp
@@ -96,21 +96,21 @@ void AnimationNodeBlendSpace2DEditor::_blend_space_gui_input(const Ref<InputEven
if (ap) {
List<StringName> names;
ap->get_animation_list(&names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- animations_menu->add_icon_item(get_theme_icon(SNAME("Animation"), SNAME("EditorIcons")), E->get());
- animations_to_add.push_back(E->get());
+ for (const StringName &E : names) {
+ animations_menu->add_icon_item(get_theme_icon(SNAME("Animation"), SNAME("EditorIcons")), E);
+ animations_to_add.push_back(E);
}
}
}
- for (List<StringName>::Element *E = classes.front(); E; E = E->next()) {
- String name = String(E->get()).replace_first("AnimationNode", "");
+ for (const StringName &E : classes) {
+ String name = String(E).replace_first("AnimationNode", "");
if (name == "Animation") {
continue; // nope
}
int idx = menu->get_item_count();
menu->add_item(vformat("Add %s", name), idx);
- menu->set_item_metadata(idx, E->get());
+ menu->set_item_metadata(idx, E);
}
Ref<AnimationNode> clipb = EditorSettings::get_singleton()->get_resource_clipboard();
@@ -295,8 +295,8 @@ void AnimationNodeBlendSpace2DEditor::_add_menu_type(int p_index) {
open_file->clear_filters();
List<String> filters;
ResourceLoader::get_recognized_extensions_for_type("AnimationRootNode", &filters);
- for (List<String>::Element *E = filters.front(); E; E = E->next()) {
- open_file->add_filter("*." + E->get());
+ for (const String &E : filters) {
+ open_file->add_filter("*." + E);
}
open_file->popup_file_dialog();
return;
diff --git a/editor/plugins/animation_blend_tree_editor_plugin.cpp b/editor/plugins/animation_blend_tree_editor_plugin.cpp
index 7930bc1e1c..69206daea8 100644
--- a/editor/plugins/animation_blend_tree_editor_plugin.cpp
+++ b/editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -89,7 +89,7 @@ Size2 AnimationNodeBlendTreeEditor::get_minimum_size() const {
void AnimationNodeBlendTreeEditor::_property_changed(const StringName &p_property, const Variant &p_value, const String &p_field, bool p_changing) {
AnimationTree *tree = AnimationTreeEditor::get_singleton()->get_tree();
updating = true;
- undo_redo->create_action(TTR("Parameter Changed") + ": " + String(p_property), UndoRedo::MERGE_ENDS);
+ undo_redo->create_action(TTR("Parameter Changed:") + " " + String(p_property), UndoRedo::MERGE_ENDS);
undo_redo->add_do_property(tree, p_property, p_value);
undo_redo->add_undo_property(tree, p_property, tree->get(p_property));
undo_redo->add_do_method(this, "_update_graph");
@@ -121,21 +121,21 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
List<StringName> nodes;
blend_tree->get_node_list(&nodes);
- for (List<StringName>::Element *E = nodes.front(); E; E = E->next()) {
+ for (const StringName &E : nodes) {
GraphNode *node = memnew(GraphNode);
graph->add_child(node);
- Ref<AnimationNode> agnode = blend_tree->get_node(E->get());
+ Ref<AnimationNode> agnode = blend_tree->get_node(E);
- node->set_position_offset(blend_tree->get_node_position(E->get()) * EDSCALE);
+ node->set_position_offset(blend_tree->get_node_position(E) * EDSCALE);
node->set_title(agnode->get_caption());
- node->set_name(E->get());
+ node->set_name(E);
int base = 0;
- if (String(E->get()) != "output") {
+ if (String(E) != "output") {
LineEdit *name = memnew(LineEdit);
- name->set_text(E->get());
+ name->set_text(E);
name->set_expand_to_text_length_enabled(true);
node->add_child(name);
node->set_slot(0, false, 0, Color(), true, 0, get_theme_color(SNAME("font_color"), SNAME("Label")));
@@ -143,7 +143,7 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
name->connect("focus_exited", callable_mp(this, &AnimationNodeBlendTreeEditor::_node_renamed_focus_out), varray(name, agnode), CONNECT_DEFERRED);
base = 1;
node->set_show_close_button(true);
- node->connect("close_request", callable_mp(this, &AnimationNodeBlendTreeEditor::_delete_request), varray(E->get()), CONNECT_DEFERRED);
+ node->connect("close_request", callable_mp(this, &AnimationNodeBlendTreeEditor::_delete_request), varray(E), CONNECT_DEFERRED);
}
for (int i = 0; i < agnode->get_input_count(); i++) {
@@ -155,12 +155,12 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
List<PropertyInfo> pinfo;
agnode->get_parameter_list(&pinfo);
- for (List<PropertyInfo>::Element *F = pinfo.front(); F; F = F->next()) {
- if (!(F->get().usage & PROPERTY_USAGE_EDITOR)) {
+ for (const PropertyInfo &F : pinfo) {
+ if (!(F.usage & PROPERTY_USAGE_EDITOR)) {
continue;
}
- String base_path = AnimationTreeEditor::get_singleton()->get_base_path() + String(E->get()) + "/" + F->get().name;
- EditorProperty *prop = EditorInspector::instantiate_property_editor(AnimationTreeEditor::get_singleton()->get_tree(), F->get().type, base_path, F->get().hint, F->get().hint_string, F->get().usage);
+ String base_path = AnimationTreeEditor::get_singleton()->get_base_path() + String(E) + "/" + F.name;
+ EditorProperty *prop = EditorInspector::instantiate_property_editor(AnimationTreeEditor::get_singleton()->get_tree(), F.type, base_path, F.hint, F.hint_string, F.usage);
if (prop) {
prop->set_object_and_property(AnimationTreeEditor::get_singleton()->get_tree(), base_path);
prop->update_property();
@@ -171,7 +171,7 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
}
}
- node->connect("dragged", callable_mp(this, &AnimationNodeBlendTreeEditor::_node_dragged), varray(E->get()));
+ node->connect("dragged", callable_mp(this, &AnimationNodeBlendTreeEditor::_node_dragged), varray(E));
if (AnimationTreeEditor::get_singleton()->can_edit(agnode)) {
node->add_child(memnew(HSeparator));
@@ -179,7 +179,7 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
open_in_editor->set_text(TTR("Open Editor"));
open_in_editor->set_icon(get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")));
node->add_child(open_in_editor);
- open_in_editor->connect("pressed", callable_mp(this, &AnimationNodeBlendTreeEditor::_open_in_editor), varray(E->get()), CONNECT_DEFERRED);
+ open_in_editor->connect("pressed", callable_mp(this, &AnimationNodeBlendTreeEditor::_open_in_editor), varray(E), CONNECT_DEFERRED);
open_in_editor->set_h_size_flags(SIZE_SHRINK_CENTER);
}
@@ -189,7 +189,7 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
edit_filters->set_text(TTR("Edit Filters"));
edit_filters->set_icon(get_theme_icon(SNAME("AnimationFilter"), SNAME("EditorIcons")));
node->add_child(edit_filters);
- edit_filters->connect("pressed", callable_mp(this, &AnimationNodeBlendTreeEditor::_edit_filters), varray(E->get()), CONNECT_DEFERRED);
+ edit_filters->connect("pressed", callable_mp(this, &AnimationNodeBlendTreeEditor::_edit_filters), varray(E), CONNECT_DEFERRED);
edit_filters->set_h_size_flags(SIZE_SHRINK_CENTER);
}
@@ -212,9 +212,9 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
List<StringName> anims;
ap->get_animation_list(&anims);
- for (List<StringName>::Element *F = anims.front(); F; F = F->next()) {
- mb->get_popup()->add_item(F->get());
- options.push_back(F->get());
+ for (const StringName &F : anims) {
+ mb->get_popup()->add_item(F);
+ options.push_back(F);
}
if (ap->has_animation(anim->get_animation())) {
@@ -225,10 +225,10 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
pb->set_percent_visible(false);
pb->set_custom_minimum_size(Vector2(0, 14) * EDSCALE);
- animations[E->get()] = pb;
+ animations[E] = pb;
node->add_child(pb);
- mb->get_popup()->connect("index_pressed", callable_mp(this, &AnimationNodeBlendTreeEditor::_anim_selected), varray(options, E->get()), CONNECT_DEFERRED);
+ mb->get_popup()->connect("index_pressed", callable_mp(this, &AnimationNodeBlendTreeEditor::_anim_selected), varray(options, E), CONNECT_DEFERRED);
}
Ref<StyleBoxFlat> sb = node->get_theme_stylebox(SNAME("frame"), SNAME("GraphNode"));
@@ -246,10 +246,10 @@ void AnimationNodeBlendTreeEditor::_update_graph() {
List<AnimationNodeBlendTree::NodeConnection> connections;
blend_tree->get_node_connections(&connections);
- for (List<AnimationNodeBlendTree::NodeConnection>::Element *E = connections.front(); E; E = E->next()) {
- StringName from = E->get().output_node;
- StringName to = E->get().input_node;
- int to_idx = E->get().input_index;
+ for (const AnimationNodeBlendTree::NodeConnection &E : connections) {
+ StringName from = E.output_node;
+ StringName to = E.input_node;
+ int to_idx = E.input_index;
graph->connect_node(from, 0, to, to_idx);
}
@@ -274,8 +274,8 @@ void AnimationNodeBlendTreeEditor::_add_node(int p_idx) {
open_file->clear_filters();
List<String> filters;
ResourceLoader::get_recognized_extensions_for_type("AnimationNode", &filters);
- for (List<String>::Element *E = filters.front(); E; E = E->next()) {
- open_file->add_filter("*." + E->get());
+ for (const String &E : filters) {
+ open_file->add_filter("*." + E);
}
open_file->popup_file_dialog();
return;
@@ -394,9 +394,9 @@ void AnimationNodeBlendTreeEditor::_delete_request(const String &p_which) {
List<AnimationNodeBlendTree::NodeConnection> conns;
blend_tree->get_node_connections(&conns);
- for (List<AnimationNodeBlendTree::NodeConnection>::Element *E = conns.front(); E; E = E->next()) {
- if (E->get().output_node == p_which || E->get().input_node == p_which) {
- undo_redo->add_undo_method(blend_tree.ptr(), "connect_node", E->get().input_node, E->get().input_index, E->get().output_node);
+ for (const AnimationNodeBlendTree::NodeConnection &E : conns) {
+ if (E.output_node == p_which || E.input_node == p_which) {
+ undo_redo->add_undo_method(blend_tree.ptr(), "connect_node", E.input_node, E.input_index, E.output_node);
}
}
@@ -423,8 +423,8 @@ void AnimationNodeBlendTreeEditor::_delete_nodes_request() {
undo_redo->create_action(TTR("Delete Node(s)"));
- for (List<StringName>::Element *F = to_erase.front(); F; F = F->next()) {
- _delete_request(F->get());
+ for (const StringName &F : to_erase) {
+ _delete_request(F);
}
undo_redo->commit_action();
@@ -517,8 +517,8 @@ bool AnimationNodeBlendTreeEditor::_update_filters(const Ref<AnimationNode> &ano
List<StringName> animations;
player->get_animation_list(&animations);
- for (List<StringName>::Element *E = animations.front(); E; E = E->next()) {
- Ref<Animation> anim = player->get_animation(E->get());
+ for (const StringName &E : animations) {
+ Ref<Animation> anim = player->get_animation(E);
for (int i = 0; i < anim->get_track_count(); i++) {
String track_path = anim->track_get_path(i);
paths.insert(track_path);
@@ -718,13 +718,13 @@ void AnimationNodeBlendTreeEditor::_notification(int p_what) {
List<AnimationNodeBlendTree::NodeConnection> conns;
blend_tree->get_node_connections(&conns);
- for (List<AnimationNodeBlendTree::NodeConnection>::Element *E = conns.front(); E; E = E->next()) {
+ for (const AnimationNodeBlendTree::NodeConnection &E : conns) {
float activity = 0;
- StringName path = AnimationTreeEditor::get_singleton()->get_base_path() + E->get().input_node;
+ StringName path = AnimationTreeEditor::get_singleton()->get_base_path() + E.input_node;
if (AnimationTreeEditor::get_singleton()->get_tree() && !AnimationTreeEditor::get_singleton()->get_tree()->is_state_invalid()) {
- activity = AnimationTreeEditor::get_singleton()->get_tree()->get_connection_activity(path, E->get().input_index);
+ activity = AnimationTreeEditor::get_singleton()->get_tree()->get_connection_activity(path, E.input_index);
}
- graph->set_connection_activity(E->get().output_node, 0, E->get().input_node, E->get().input_index, activity);
+ graph->set_connection_activity(E.output_node, 0, E.input_node, E.input_index, activity);
}
AnimationTree *graph_player = AnimationTreeEditor::get_singleton()->get_tree();
@@ -741,7 +741,7 @@ void AnimationNodeBlendTreeEditor::_notification(int p_what) {
Ref<Animation> anim = player->get_animation(an->get_animation());
if (anim.is_valid()) {
E->get()->set_max(anim->get_length());
- //StringName path = AnimationTreeEditor::get_singleton()->get_base_path() + E->get().input_node;
+ //StringName path = AnimationTreeEditor::get_singleton()->get_base_path() + E.input_node;
StringName time_path = AnimationTreeEditor::get_singleton()->get_base_path() + String(E->key()) + "/time";
E->get()->set_value(AnimationTreeEditor::get_singleton()->get_tree()->get(time_path));
}
@@ -828,10 +828,10 @@ void AnimationNodeBlendTreeEditor::_node_renamed(const String &p_text, Ref<Anima
List<AnimationNodeBlendTree::NodeConnection> connections;
blend_tree->get_node_connections(&connections);
- for (List<AnimationNodeBlendTree::NodeConnection>::Element *E = connections.front(); E; E = E->next()) {
- StringName from = E->get().output_node;
- StringName to = E->get().input_node;
- int to_idx = E->get().input_index;
+ for (const AnimationNodeBlendTree::NodeConnection &E : connections) {
+ StringName from = E.output_node;
+ StringName to = E.input_node;
+ int to_idx = E.input_index;
graph->connect_node(from, 0, to, to_idx);
}
diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp
index cbce5bb3f5..681c3e7195 100644
--- a/editor/plugins/animation_player_editor_plugin.cpp
+++ b/editor/plugins/animation_player_editor_plugin.cpp
@@ -350,8 +350,8 @@ void AnimationPlayerEditor::_animation_load() {
List<String> extensions;
ResourceLoader::get_recognized_extensions_for_type("Animation", &extensions);
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- file->add_filter("*." + E->get() + " ; " + E->get().to_upper());
+ for (const String &E : extensions) {
+ file->add_filter("*." + E + " ; " + E.to_upper());
}
file->popup_file_dialog();
@@ -408,7 +408,8 @@ void AnimationPlayerEditor::_animation_save_as(const Ref<Resource> &p_resource)
if (p_resource->get_name() != "") {
path = p_resource->get_name() + "." + extensions.front()->get().to_lower();
} else {
- path = "new_" + p_resource->get_class().to_lower() + "." + extensions.front()->get().to_lower();
+ String resource_name_snake_case = p_resource->get_class().camelcase_to_underscore();
+ path = "new_" + resource_name_snake_case + "." + extensions.front()->get().to_lower();
}
}
}
@@ -584,8 +585,7 @@ void AnimationPlayerEditor::_animation_blend() {
blend_editor.next->clear();
blend_editor.next->add_item("", i);
- for (List<StringName>::Element *E = anims.front(); E; E = E->next()) {
- String to = E->get();
+ for (const StringName &to : anims) {
TreeItem *blend = blend_editor.tree->create_item(root);
blend->set_editable(0, false);
blend->set_editable(1, true);
@@ -830,20 +830,20 @@ void AnimationPlayerEditor::_update_player() {
}
int active_idx = -1;
- for (List<StringName>::Element *E = animlist.front(); E; E = E->next()) {
+ for (const StringName &E : animlist) {
Ref<Texture2D> icon;
- if (E->get() == player->get_autoplay()) {
- if (E->get() == "RESET") {
+ if (E == player->get_autoplay()) {
+ if (E == "RESET") {
icon = autoplay_reset_icon;
} else {
icon = autoplay_icon;
}
- } else if (E->get() == "RESET") {
+ } else if (E == "RESET") {
icon = reset_icon;
}
- animation->add_icon_item(icon, E->get());
+ animation->add_icon_item(icon, E);
- if (player->get_assigned_animation() == E->get()) {
+ if (player->get_assigned_animation() == E) {
active_idx = animation->get_item_count() - 1;
}
}
@@ -966,9 +966,9 @@ void AnimationPlayerEditor::_animation_duplicate() {
Ref<Animation> new_anim = memnew(Animation);
List<PropertyInfo> plist;
anim->get_property_list(&plist);
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (E->get().usage & PROPERTY_USAGE_STORAGE) {
- new_anim->set(E->get().name, anim->get(E->get().name));
+ for (const PropertyInfo &E : plist) {
+ if (E.usage & PROPERTY_USAGE_STORAGE) {
+ new_anim->set(E.name, anim->get(E.name));
}
}
new_anim->set_path("");
diff --git a/editor/plugins/animation_state_machine_editor.cpp b/editor/plugins/animation_state_machine_editor.cpp
index 8abe20c3c9..a1f96f21bf 100644
--- a/editor/plugins/animation_state_machine_editor.cpp
+++ b/editor/plugins/animation_state_machine_editor.cpp
@@ -93,21 +93,21 @@ void AnimationNodeStateMachineEditor::_state_machine_gui_input(const Ref<InputEv
if (ap) {
List<StringName> names;
ap->get_animation_list(&names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- animations_menu->add_icon_item(get_theme_icon(SNAME("Animation"), SNAME("EditorIcons")), E->get());
- animations_to_add.push_back(E->get());
+ for (const StringName &E : names) {
+ animations_menu->add_icon_item(get_theme_icon(SNAME("Animation"), SNAME("EditorIcons")), E);
+ animations_to_add.push_back(E);
}
}
}
- for (List<StringName>::Element *E = classes.front(); E; E = E->next()) {
- String name = String(E->get()).replace_first("AnimationNode", "");
+ for (const StringName &E : classes) {
+ String name = String(E).replace_first("AnimationNode", "");
if (name == "Animation") {
continue; // nope
}
int idx = menu->get_item_count();
menu->add_item(vformat("Add %s", name), idx);
- menu->set_item_metadata(idx, E->get());
+ menu->set_item_metadata(idx, E);
}
Ref<AnimationNode> clipb = EditorSettings::get_singleton()->get_resource_clipboard();
@@ -318,24 +318,24 @@ void AnimationNodeStateMachineEditor::_state_machine_gui_input(const Ref<InputEv
float best_d_x = 1e20;
float best_d_y = 1e20;
- for (List<StringName>::Element *E = nodes.front(); E; E = E->next()) {
- if (E->get() == selected_node) {
+ for (const StringName &E : nodes) {
+ if (E == selected_node) {
continue;
}
- Vector2 npos = state_machine->get_node_position(E->get());
+ Vector2 npos = state_machine->get_node_position(E);
float d_x = ABS(npos.x - cpos.x);
if (d_x < MIN(5, best_d_x)) {
drag_ofs.x -= cpos.x - npos.x;
best_d_x = d_x;
- snap_x = E->get();
+ snap_x = E;
}
float d_y = ABS(npos.y - cpos.y);
if (d_y < MIN(5, best_d_y)) {
drag_ofs.y -= cpos.y - npos.y;
best_d_y = d_y;
- snap_y = E->get();
+ snap_y = E;
}
}
}
@@ -409,8 +409,8 @@ void AnimationNodeStateMachineEditor::_add_menu_type(int p_index) {
open_file->clear_filters();
List<String> filters;
ResourceLoader::get_recognized_extensions_for_type("AnimationRootNode", &filters);
- for (List<String>::Element *E = filters.front(); E; E = E->next()) {
- open_file->add_filter("*." + E->get());
+ for (const String &E : filters) {
+ open_file->add_filter("*." + E);
}
open_file->popup_file_dialog();
return;
@@ -606,11 +606,11 @@ void AnimationNodeStateMachineEditor::_state_machine_draw() {
}
//pre pass nodes so we know the rectangles
- for (List<StringName>::Element *E = nodes.front(); E; E = E->next()) {
- Ref<AnimationNode> anode = state_machine->get_node(E->get());
- String name = E->get();
+ for (const StringName &E : nodes) {
+ Ref<AnimationNode> anode = state_machine->get_node(E);
+ String name = E;
bool needs_editor = EditorNode::get_singleton()->item_has_editor(anode.ptr());
- Ref<StyleBox> sb = E->get() == selected_node ? style_selected : style;
+ Ref<StyleBox> sb = E == selected_node ? style_selected : style;
Size2 s = sb->get_minimum_size();
int strsize = font->get_string_size(name, font_size).width;
@@ -622,8 +622,8 @@ void AnimationNodeStateMachineEditor::_state_machine_draw() {
}
Vector2 offset;
- offset += state_machine->get_node_position(E->get()) * EDSCALE;
- if (selected_node == E->get() && dragging_selected) {
+ offset += state_machine->get_node_position(E) * EDSCALE;
+ if (selected_node == E && dragging_selected) {
offset += drag_ofs;
}
offset -= s / 2;
@@ -633,7 +633,7 @@ void AnimationNodeStateMachineEditor::_state_machine_draw() {
NodeRect nr;
nr.node = Rect2(offset, s);
- nr.node_name = E->get();
+ nr.node_name = E;
scroll_range = scroll_range.merge(nr.node); //merge with range
diff --git a/editor/plugins/animation_tree_editor_plugin.cpp b/editor/plugins/animation_tree_editor_plugin.cpp
index 9c28e023dd..cd84be0c25 100644
--- a/editor/plugins/animation_tree_editor_plugin.cpp
+++ b/editor/plugins/animation_tree_editor_plugin.cpp
@@ -215,8 +215,8 @@ Vector<String> AnimationTreeEditor::get_animation_list() {
List<StringName> anims;
ap->get_animation_list(&anims);
Vector<String> ret;
- for (List<StringName>::Element *E = anims.front(); E; E = E->next()) {
- ret.push_back(E->get());
+ for (const StringName &E : anims) {
+ ret.push_back(E);
}
return ret;
diff --git a/editor/plugins/asset_library_editor_plugin.cpp b/editor/plugins/asset_library_editor_plugin.cpp
index bbc8107cf6..785bab42cf 100644
--- a/editor/plugins/asset_library_editor_plugin.cpp
+++ b/editor/plugins/asset_library_editor_plugin.cpp
@@ -603,12 +603,11 @@ void EditorAssetLibrary::_notification(int p_what) {
void EditorAssetLibrary::_update_repository_options() {
Dictionary default_urls;
- default_urls["godotengine.org"] = "https://godotengine.org/asset-library/api";
- default_urls["localhost"] = "http://127.0.0.1/asset-library/api";
+ default_urls["godotengine.org (Official)"] = "https://godotengine.org/asset-library/api";
Dictionary available_urls = _EDITOR_DEF("asset_library/available_urls", default_urls, true);
repository->clear();
Array keys = available_urls.keys();
- for (int i = 0; i < available_urls.size(); i++) {
+ for (int i = 0; i < keys.size(); i++) {
String key = keys[i];
repository->add_item(key);
repository->set_item_metadata(i, available_urls[key]);
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index d5ef13e426..c440064898 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -81,8 +81,8 @@ public:
SnapDialog() {
const int SPIN_BOX_GRID_RANGE = 16384;
const int SPIN_BOX_ROTATION_RANGE = 360;
- const float SPIN_BOX_SCALE_MIN = 0.01f;
- const float SPIN_BOX_SCALE_MAX = 100;
+ const real_t SPIN_BOX_SCALE_MIN = 0.01;
+ const real_t SPIN_BOX_SCALE_MAX = 100;
Label *label;
VBoxContainer *container;
@@ -210,7 +210,7 @@ public:
child_container->add_child(scale_step);
}
- void set_fields(const Point2 p_grid_offset, const Point2 p_grid_step, const int p_primary_grid_steps, const float p_rotation_offset, const float p_rotation_step, const float p_scale_step) {
+ void set_fields(const Point2 p_grid_offset, const Point2 p_grid_step, const int p_primary_grid_steps, const real_t p_rotation_offset, const real_t p_rotation_step, const real_t p_scale_step) {
grid_offset_x->set_value(p_grid_offset.x);
grid_offset_y->set_value(p_grid_offset.y);
grid_step_x->set_value(p_grid_step.x);
@@ -221,7 +221,7 @@ public:
scale_step->set_value(p_scale_step);
}
- void get_fields(Point2 &p_grid_offset, Point2 &p_grid_step, int &p_primary_grid_steps, float &p_rotation_offset, float &p_rotation_step, float &p_scale_step) {
+ void get_fields(Point2 &p_grid_offset, Point2 &p_grid_step, int &p_primary_grid_steps, real_t &p_rotation_offset, real_t &p_rotation_step, real_t &p_scale_step) {
p_grid_offset = Point2(grid_offset_x->get_value(), grid_offset_y->get_value());
p_grid_step = Point2(grid_step_x->get_value(), grid_step_y->get_value());
p_primary_grid_steps = int(primary_grid_steps->get_value());
@@ -249,12 +249,12 @@ bool CanvasItemEditor::_is_node_movable(const Node *p_node, bool p_popup_warning
}
void CanvasItemEditor::_snap_if_closer_float(
- float p_value,
- float &r_current_snap, SnapTarget &r_current_snap_target,
- float p_target_value, SnapTarget p_snap_target,
- float p_radius) {
- float radius = p_radius / zoom;
- float dist = Math::abs(p_value - p_target_value);
+ const real_t p_value,
+ real_t &r_current_snap, SnapTarget &r_current_snap_target,
+ const real_t p_target_value, const SnapTarget p_snap_target,
+ const real_t p_radius) {
+ const real_t radius = p_radius / zoom;
+ const real_t dist = Math::abs(p_value - p_target_value);
if ((p_radius < 0 || dist < radius) && (r_current_snap_target == SNAP_TARGET_NONE || dist < Math::abs(r_current_snap - p_value))) {
r_current_snap = p_target_value;
r_current_snap_target = p_snap_target;
@@ -264,9 +264,9 @@ void CanvasItemEditor::_snap_if_closer_float(
void CanvasItemEditor::_snap_if_closer_point(
Point2 p_value,
Point2 &r_current_snap, SnapTarget (&r_current_snap_target)[2],
- Point2 p_target_value, SnapTarget p_snap_target,
- real_t rotation,
- float p_radius) {
+ Point2 p_target_value, const SnapTarget p_snap_target,
+ const real_t rotation,
+ const real_t p_radius) {
Transform2D rot_trans = Transform2D(rotation, Point2());
p_value = rot_trans.inverse().xform(p_value);
p_target_value = rot_trans.inverse().xform(p_target_value);
@@ -301,8 +301,8 @@ void CanvasItemEditor::_snap_other_nodes(
// Check if the element is in the exception
bool exception = false;
- for (List<const CanvasItem *>::Element *E = p_exceptions.front(); E; E = E->next()) {
- if (E->get() == p_current) {
+ for (const CanvasItem *&E : p_exceptions) {
+ if (E == p_current) {
exception = true;
break;
}
@@ -399,8 +399,8 @@ Point2 CanvasItemEditor::snap_point(Point2 p_target, unsigned int p_modes, unsig
if ((is_snap_active && snap_other_nodes && (p_modes & SNAP_OTHER_NODES)) || (p_forced_modes & SNAP_OTHER_NODES)) {
Transform2D to_snap_transform = Transform2D();
List<const CanvasItem *> exceptions = List<const CanvasItem *>();
- for (List<CanvasItem *>::Element *E = p_other_nodes_exceptions.front(); E; E = E->next()) {
- exceptions.push_back(E->get());
+ for (const CanvasItem *E : p_other_nodes_exceptions) {
+ exceptions.push_back(E);
}
if (p_self_canvas_item) {
exceptions.push_back(p_self_canvas_item);
@@ -459,7 +459,7 @@ Point2 CanvasItemEditor::snap_point(Point2 p_target, unsigned int p_modes, unsig
return output;
}
-float CanvasItemEditor::snap_angle(float p_target, float p_start) const {
+real_t CanvasItemEditor::snap_angle(real_t p_target, real_t p_start) const {
if (((smart_snap_active || snap_rotation) ^ Input::get_singleton()->is_key_pressed(KEY_CTRL)) && snap_rotation_step != 0) {
if (snap_relative) {
return Math::snapped(p_target - snap_rotation_offset, snap_rotation_step) + snap_rotation_offset + (p_start - (int)(p_start / snap_rotation_step) * snap_rotation_step);
@@ -486,11 +486,11 @@ void CanvasItemEditor::_unhandled_key_input(const Ref<InputEvent> &p_ev) {
}
if (k->is_pressed() && !k->is_ctrl_pressed() && !k->is_echo()) {
- if ((grid_snap_active || show_grid) && multiply_grid_step_shortcut.is_valid() && multiply_grid_step_shortcut->is_shortcut(p_ev)) {
+ if ((grid_snap_active || show_grid) && multiply_grid_step_shortcut.is_valid() && multiply_grid_step_shortcut->matches_event(p_ev)) {
// Multiply the grid size
grid_step_multiplier = MIN(grid_step_multiplier + 1, 12);
viewport->update();
- } else if ((grid_snap_active || show_grid) && divide_grid_step_shortcut.is_valid() && divide_grid_step_shortcut->is_shortcut(p_ev)) {
+ } else if ((grid_snap_active || show_grid) && divide_grid_step_shortcut.is_valid() && divide_grid_step_shortcut->matches_event(p_ev)) {
// Divide the grid size
Point2 new_grid_step = grid_step * Math::pow(2.0, grid_step_multiplier - 1);
if (new_grid_step.x >= 1.0 && new_grid_step.y >= 1.0) {
@@ -527,8 +527,7 @@ Rect2 CanvasItemEditor::_get_encompassing_rect_from_list(List<CanvasItem *> p_li
Rect2 rect = Rect2(canvas_item->get_global_transform_with_canvas().xform(canvas_item->_edit_get_rect().position + canvas_item->_edit_get_rect().size / 2), Size2());
// Expand with the other ones
- for (List<CanvasItem *>::Element *E = p_list.front(); E; E = E->next()) {
- CanvasItem *canvas_item2 = E->get();
+ for (CanvasItem *canvas_item2 : p_list) {
Transform2D xform = canvas_item2->get_global_transform_with_canvas();
Rect2 current_rect = canvas_item2->_edit_get_rect();
@@ -760,9 +759,9 @@ List<CanvasItem *> CanvasItemEditor::_get_edited_canvas_items(bool retreive_lock
if (remove_canvas_item_if_parent_in_selection) {
List<CanvasItem *> filtered_selection;
- for (List<CanvasItem *>::Element *E = selection.front(); E; E = E->next()) {
- if (!selection.find(E->get()->get_parent())) {
- filtered_selection.push_back(E->get());
+ for (CanvasItem *E : selection) {
+ if (!selection.find(E->get_parent())) {
+ filtered_selection.push_back(E);
}
}
return filtered_selection;
@@ -800,8 +799,7 @@ Vector2 CanvasItemEditor::_position_to_anchor(const Control *p_control, Vector2
}
void CanvasItemEditor::_save_canvas_item_state(List<CanvasItem *> p_canvas_items, bool save_bones) {
- for (List<CanvasItem *>::Element *E = p_canvas_items.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get();
+ for (CanvasItem *canvas_item : p_canvas_items) {
CanvasItemEditorSelectedItem *se = editor_selection->get_node_editor_data<CanvasItemEditorSelectedItem>(canvas_item);
if (se) {
se->undo_state = canvas_item->_edit_get_state();
@@ -816,8 +814,7 @@ void CanvasItemEditor::_save_canvas_item_state(List<CanvasItem *> p_canvas_items
}
void CanvasItemEditor::_restore_canvas_item_state(List<CanvasItem *> p_canvas_items, bool restore_bones) {
- for (List<CanvasItem *>::Element *E = drag_selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get();
+ for (CanvasItem *canvas_item : drag_selection) {
CanvasItemEditorSelectedItem *se = editor_selection->get_node_editor_data<CanvasItemEditorSelectedItem>(canvas_item);
canvas_item->_edit_set_state(se->undo_state);
}
@@ -825,8 +822,7 @@ void CanvasItemEditor::_restore_canvas_item_state(List<CanvasItem *> p_canvas_it
void CanvasItemEditor::_commit_canvas_item_state(List<CanvasItem *> p_canvas_items, String action_name, bool commit_bones) {
List<CanvasItem *> modified_canvas_items;
- for (List<CanvasItem *>::Element *E = p_canvas_items.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get();
+ for (CanvasItem *canvas_item : p_canvas_items) {
Dictionary old_state = editor_selection->get_node_editor_data<CanvasItemEditorSelectedItem>(canvas_item)->undo_state;
Dictionary new_state = canvas_item->_edit_get_state();
@@ -840,17 +836,16 @@ void CanvasItemEditor::_commit_canvas_item_state(List<CanvasItem *> p_canvas_ite
}
undo_redo->create_action(action_name);
- for (List<CanvasItem *>::Element *E = modified_canvas_items.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get();
+ for (CanvasItem *canvas_item : modified_canvas_items) {
CanvasItemEditorSelectedItem *se = editor_selection->get_node_editor_data<CanvasItemEditorSelectedItem>(canvas_item);
if (se) {
undo_redo->add_do_method(canvas_item, "_edit_set_state", canvas_item->_edit_get_state());
undo_redo->add_undo_method(canvas_item, "_edit_set_state", se->undo_state);
if (commit_bones) {
- for (List<Dictionary>::Element *F = se->pre_drag_bones_undo_state.front(); F; F = F->next()) {
+ for (const Dictionary &F : se->pre_drag_bones_undo_state) {
canvas_item = Object::cast_to<CanvasItem>(canvas_item->get_parent());
undo_redo->add_do_method(canvas_item, "_edit_set_state", canvas_item->_edit_get_state());
- undo_redo->add_undo_method(canvas_item, "_edit_set_state", F->get());
+ undo_redo->add_undo_method(canvas_item, "_edit_set_state", F);
}
}
}
@@ -928,7 +923,7 @@ bool CanvasItemEditor::_gui_input_rulers_and_guides(const Ref<InputEvent> &p_eve
}
// Hover over guides
- float minimum = 1e20;
+ real_t minimum = 1e20;
is_hovering_h_guide = false;
is_hovering_v_guide = false;
@@ -1197,30 +1192,30 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event, bo
Ref<InputEventKey> k = p_event;
if (k.is_valid()) {
if (k->is_pressed()) {
- if (ED_GET_SHORTCUT("canvas_item_editor/zoom_3.125_percent")->is_shortcut(p_event)) {
+ if (ED_GET_SHORTCUT("canvas_item_editor/zoom_3.125_percent")->matches_event(p_event)) {
_update_zoom((1.0 / 32.0) * MAX(1, EDSCALE));
- } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_6.25_percent")->is_shortcut(p_event)) {
+ } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_6.25_percent")->matches_event(p_event)) {
_update_zoom((1.0 / 16.0) * MAX(1, EDSCALE));
- } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_12.5_percent")->is_shortcut(p_event)) {
+ } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_12.5_percent")->matches_event(p_event)) {
_update_zoom((1.0 / 8.0) * MAX(1, EDSCALE));
- } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_25_percent")->is_shortcut(p_event)) {
+ } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_25_percent")->matches_event(p_event)) {
_update_zoom((1.0 / 4.0) * MAX(1, EDSCALE));
- } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_50_percent")->is_shortcut(p_event)) {
+ } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_50_percent")->matches_event(p_event)) {
_update_zoom((1.0 / 2.0) * MAX(1, EDSCALE));
- } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_100_percent")->is_shortcut(p_event)) {
+ } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_100_percent")->matches_event(p_event)) {
_update_zoom(1.0 * MAX(1, EDSCALE));
- } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_200_percent")->is_shortcut(p_event)) {
+ } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_200_percent")->matches_event(p_event)) {
_update_zoom(2.0 * MAX(1, EDSCALE));
- } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_400_percent")->is_shortcut(p_event)) {
+ } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_400_percent")->matches_event(p_event)) {
_update_zoom(4.0 * MAX(1, EDSCALE));
- } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_800_percent")->is_shortcut(p_event)) {
+ } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_800_percent")->matches_event(p_event)) {
_update_zoom(8.0 * MAX(1, EDSCALE));
- } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_1600_percent")->is_shortcut(p_event)) {
+ } else if (ED_GET_SHORTCUT("canvas_item_editor/zoom_1600_percent")->matches_event(p_event)) {
_update_zoom(16.0 * MAX(1, EDSCALE));
}
}
- bool is_pan_key = pan_view_shortcut.is_valid() && pan_view_shortcut->is_shortcut(p_event);
+ bool is_pan_key = pan_view_shortcut.is_valid() && pan_view_shortcut->matches_event(p_event);
if (is_pan_key && (EditorSettings::get_singleton()->get("editors/2d/simple_panning") || drag_type != DRAG_NONE)) {
if (!panning) {
@@ -1269,7 +1264,7 @@ bool CanvasItemEditor::_gui_input_zoom_or_pan(const Ref<InputEvent> &p_event, bo
if (pan_gesture.is_valid() && !p_already_accepted) {
// If ctrl key pressed, then zoom instead of pan.
if (pan_gesture->is_ctrl_pressed()) {
- const float factor = pan_gesture->get_delta().y;
+ const real_t factor = pan_gesture->get_delta().y;
zoom_widget->set_zoom_by_increments(1);
if (factor != 1.f) {
@@ -1304,8 +1299,7 @@ bool CanvasItemEditor::_gui_input_pivot(const Ref<InputEvent> &p_event) {
// Filters the selection with nodes that allow setting the pivot
drag_selection = List<CanvasItem *>();
- for (List<CanvasItem *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get();
+ for (CanvasItem *canvas_item : selection) {
if (canvas_item->_edit_use_pivot()) {
drag_selection.push_back(canvas_item);
}
@@ -1321,8 +1315,7 @@ bool CanvasItemEditor::_gui_input_pivot(const Ref<InputEvent> &p_event) {
} else {
new_pos = snap_point(drag_from, SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, 0, nullptr, drag_selection);
}
- for (List<CanvasItem *>::Element *E = drag_selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get();
+ for (CanvasItem *canvas_item : drag_selection) {
canvas_item->_edit_set_pivot(canvas_item->get_global_transform_with_canvas().affine_inverse().xform(new_pos));
}
@@ -1343,8 +1336,7 @@ bool CanvasItemEditor::_gui_input_pivot(const Ref<InputEvent> &p_event) {
} else {
new_pos = snap_point(drag_to, SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL);
}
- for (List<CanvasItem *>::Element *E = drag_selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get();
+ for (CanvasItem *canvas_item : drag_selection) {
canvas_item->_edit_set_pivot(canvas_item->get_global_transform_with_canvas().affine_inverse().xform(new_pos));
}
return true;
@@ -1387,8 +1379,8 @@ bool CanvasItemEditor::_gui_input_rotate(const Ref<InputEvent> &p_event) {
List<CanvasItem *> selection = _get_edited_canvas_items();
// Remove not movable nodes
- for (List<CanvasItem *>::Element *E = selection.front(); E; E = E->next()) {
- if (!_is_node_movable(E->get(), true)) {
+ for (CanvasItem *E : selection) {
+ if (!_is_node_movable(E, true)) {
selection.erase(E);
}
}
@@ -1414,8 +1406,7 @@ bool CanvasItemEditor::_gui_input_rotate(const Ref<InputEvent> &p_event) {
// Rotate the node
if (m.is_valid()) {
_restore_canvas_item_state(drag_selection);
- for (List<CanvasItem *>::Element *E = drag_selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get();
+ for (CanvasItem *canvas_item : drag_selection) {
drag_to = transform.affine_inverse().xform(m->get_position());
//Rotate the opposite way if the canvas item's compounded scale has an uneven number of negative elements
bool opposite = (canvas_item->get_global_transform().get_scale().sign().dot(canvas_item->get_transform().get_scale().sign()) == 0);
@@ -1499,9 +1490,9 @@ bool CanvasItemEditor::_gui_input_anchors(const Ref<InputEvent> &p_event) {
anchor_pos[i] = (transform * control->get_global_transform_with_canvas()).xform(_anchor_to_position(control, anchor_pos[i]));
anchor_rects[i] = Rect2(anchor_pos[i], anchor_handle->get_size());
if (control->is_layout_rtl()) {
- anchor_rects[i].position -= anchor_handle->get_size() * Vector2(float(i == 1 || i == 2), float(i <= 1));
+ anchor_rects[i].position -= anchor_handle->get_size() * Vector2(real_t(i == 1 || i == 2), real_t(i <= 1));
} else {
- anchor_rects[i].position -= anchor_handle->get_size() * Vector2(float(i == 0 || i == 3), float(i <= 1));
+ anchor_rects[i].position -= anchor_handle->get_size() * Vector2(real_t(i == 0 || i == 3), real_t(i <= 1));
}
}
@@ -1655,7 +1646,7 @@ bool CanvasItemEditor::_gui_input_resize(const Ref<InputEvent> &p_event) {
};
DragType resize_drag = DRAG_NONE;
- float radius = (select_handle->get_size().width / 2) * 1.5;
+ real_t radius = (select_handle->get_size().width / 2) * 1.5;
for (int i = 0; i < 4; i++) {
int prev = (i + 3) % 4;
@@ -1701,7 +1692,7 @@ bool CanvasItemEditor::_gui_input_resize(const Ref<InputEvent> &p_event) {
bool symmetric = m->is_alt_pressed();
Rect2 local_rect = canvas_item->_edit_get_rect();
- float aspect = local_rect.get_size().y / local_rect.get_size().x;
+ real_t aspect = local_rect.get_size().y / local_rect.get_size().x;
Point2 current_begin = local_rect.get_position();
Point2 current_end = local_rect.get_position() + local_rect.get_size();
Point2 max_begin = (symmetric) ? (current_begin + current_end - canvas_item->_edit_get_minimum_size()) / 2.0 : current_end - canvas_item->_edit_get_minimum_size();
@@ -1892,7 +1883,7 @@ bool CanvasItemEditor::_gui_input_scale(const Ref<InputEvent> &p_event) {
Size2 scale = canvas_item->call("get_scale");
Size2 original_scale = scale;
- float ratio = scale.y / scale.x;
+ real_t ratio = scale.y / scale.x;
if (drag_type == DRAG_SCALE_BOTH) {
Size2 scale_factor = drag_to_local / drag_from_local;
if (uniform) {
@@ -2021,11 +2012,13 @@ bool CanvasItemEditor::_gui_input_move(const Ref<InputEvent> &p_event) {
drag_to = transform.affine_inverse().xform(m->get_position());
Point2 previous_pos;
- if (drag_selection.size() == 1) {
- Transform2D xform = drag_selection[0]->get_global_transform_with_canvas() * drag_selection[0]->get_transform().affine_inverse();
- previous_pos = xform.xform(drag_selection[0]->_edit_get_position());
- } else {
- previous_pos = _get_encompassing_rect_from_list(drag_selection).position;
+ if (!drag_selection.is_empty()) {
+ if (drag_selection.size() == 1) {
+ Transform2D xform = drag_selection[0]->get_global_transform_with_canvas() * drag_selection[0]->get_transform().affine_inverse();
+ previous_pos = xform.xform(drag_selection[0]->_edit_get_position());
+ } else {
+ previous_pos = _get_encompassing_rect_from_list(drag_selection).position;
+ }
}
Point2 new_pos = snap_point(previous_pos + (drag_to - drag_from), SNAP_GRID | SNAP_GUIDES | SNAP_PIXEL | SNAP_NODE_PARENT | SNAP_NODE_ANCHORS | SNAP_OTHER_NODES, 0, nullptr, drag_selection);
@@ -2046,8 +2039,7 @@ bool CanvasItemEditor::_gui_input_move(const Ref<InputEvent> &p_event) {
}
int index = 0;
- for (List<CanvasItem *>::Element *E = drag_selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get();
+ for (CanvasItem *canvas_item : drag_selection) {
Transform2D xform = canvas_item->get_global_transform_with_canvas().affine_inverse() * canvas_item->get_transform();
canvas_item->_edit_set_position(canvas_item->_edit_get_position() + xform.xform(new_pos) - xform.xform(previous_pos));
@@ -2162,8 +2154,7 @@ bool CanvasItemEditor::_gui_input_move(const Ref<InputEvent> &p_event) {
}
int index = 0;
- for (List<CanvasItem *>::Element *E = drag_selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get();
+ for (CanvasItem *canvas_item : drag_selection) {
Transform2D xform = canvas_item->get_global_transform_with_canvas().affine_inverse() * canvas_item->get_transform();
canvas_item->_edit_set_position(canvas_item->_edit_get_position() + xform.xform(new_pos) - xform.xform(previous_pos));
@@ -2375,8 +2366,8 @@ bool CanvasItemEditor::_gui_input_select(const Ref<InputEvent> &p_event) {
if (selitems.size() == 1 && editor_selection->get_selected_node_list().is_empty()) {
editor->push_item(selitems[0]);
}
- for (List<CanvasItem *>::Element *E = selitems.front(); E; E = E->next()) {
- editor_selection->add_node(E->get());
+ for (CanvasItem *E : selitems) {
+ editor_selection->add_node(E);
}
}
@@ -2550,7 +2541,7 @@ void CanvasItemEditor::_update_cursor() {
List<CanvasItem *> selection = _get_edited_canvas_items();
if (selection.size() == 1) {
- float angle = Math::fposmod((double)selection[0]->get_global_transform_with_canvas().get_rotation(), Math_PI);
+ const double angle = Math::fposmod((double)selection[0]->get_global_transform_with_canvas().get_rotation(), Math_PI);
if (angle > Math_PI * 7.0 / 8.0) {
rotation_array_index = 0;
} else if (angle > Math_PI * 5.0 / 8.0) {
@@ -2656,7 +2647,7 @@ void CanvasItemEditor::_draw_margin_at_position(int p_value, Point2 p_position,
}
}
-void CanvasItemEditor::_draw_percentage_at_position(float p_value, Point2 p_position, Side p_side) {
+void CanvasItemEditor::_draw_percentage_at_position(real_t p_value, Point2 p_position, Side p_side) {
String str = TS->format_number(vformat("%.1f ", p_value * 100.0)) + TS->percent_sign();
if (p_value != 0) {
_draw_text_at_position(p_position, str, p_side);
@@ -2666,7 +2657,7 @@ void CanvasItemEditor::_draw_percentage_at_position(float p_value, Point2 p_posi
void CanvasItemEditor::_draw_focus() {
// Draw the focus around the base viewport
if (viewport->has_focus()) {
- get_theme_stylebox(SNAME("Focus"), SNAME("EditorStyles"))->draw(viewport->get_canvas_item(), Rect2(Point2(), viewport->get_size()));
+ get_theme_stylebox(SNAME("FocusViewport"), SNAME("EditorStyles"))->draw(viewport->get_canvas_item(), Rect2(Point2(), viewport->get_size()));
}
}
@@ -2681,7 +2672,7 @@ void CanvasItemEditor::_draw_guides() {
if (drag_type == DRAG_V_GUIDE && i == dragged_guide_index) {
continue;
}
- float x = xform.xform(Point2(vguides[i], 0)).x;
+ real_t x = xform.xform(Point2(vguides[i], 0)).x;
viewport->draw_line(Point2(x, 0), Point2(x, viewport->get_size().y), guide_color, Math::round(EDSCALE));
}
}
@@ -2692,7 +2683,7 @@ void CanvasItemEditor::_draw_guides() {
if (drag_type == DRAG_H_GUIDE && i == dragged_guide_index) {
continue;
}
- float y = xform.xform(Point2(0, hguides[i])).y;
+ real_t y = xform.xform(Point2(0, hguides[i])).y;
viewport->draw_line(Point2(0, y), Point2(viewport->get_size().x, y), guide_color, Math::round(EDSCALE));
}
}
@@ -2756,7 +2747,7 @@ void CanvasItemEditor::_draw_rulers() {
ruler_transform.scale_basis(Point2(2, 2));
}
} else {
- float basic_rule = 100;
+ real_t basic_rule = 100;
for (int i = 0; basic_rule * zoom > 100; i++) {
basic_rule /= (i % 2) ? 5.0 : 2.0;
}
@@ -2785,7 +2776,7 @@ void CanvasItemEditor::_draw_rulers() {
Point2 position = (transform * ruler_transform * major_subdivide * minor_subdivide).xform(Point2(i, 0)).round();
if (i % (major_subdivision * minor_subdivision) == 0) {
viewport->draw_line(Point2(position.x, 0), Point2(position.x, RULER_WIDTH), graduation_color, Math::round(EDSCALE));
- float val = (ruler_transform * major_subdivide * minor_subdivide).xform(Point2(i, 0)).x;
+ real_t val = (ruler_transform * major_subdivide * minor_subdivide).xform(Point2(i, 0)).x;
viewport->draw_string(font, Point2(position.x + 2, font->get_height(font_size)), TS->format_number(vformat(((int)val == val) ? "%d" : "%.1f", val)), HALIGN_LEFT, -1, font_size, font_color);
} else {
if (i % minor_subdivision == 0) {
@@ -2802,7 +2793,7 @@ void CanvasItemEditor::_draw_rulers() {
Point2 position = (transform * ruler_transform * major_subdivide * minor_subdivide).xform(Point2(0, i)).round();
if (i % (major_subdivision * minor_subdivision) == 0) {
viewport->draw_line(Point2(0, position.y), Point2(RULER_WIDTH, position.y), graduation_color, Math::round(EDSCALE));
- float val = (ruler_transform * major_subdivide * minor_subdivide).xform(Point2(0, i)).y;
+ real_t val = (ruler_transform * major_subdivide * minor_subdivide).xform(Point2(0, i)).y;
Transform2D text_xform = Transform2D(-Math_PI / 2.0, Point2(font->get_height(font_size), position.y - 2));
viewport->draw_set_transform_matrix(viewport->get_transform() * text_xform);
@@ -2932,26 +2923,26 @@ void CanvasItemEditor::_draw_ruler_tool() {
Point2 text_pos = (begin + end) / 2 - Vector2(text_width / 2, text_height / 2);
text_pos.x = CLAMP(text_pos.x, text_width / 2, viewport->get_rect().size.x - text_width * 1.5);
text_pos.y = CLAMP(text_pos.y, text_height * 1.5, viewport->get_rect().size.y - text_height * 1.5);
- viewport->draw_string(font, text_pos, TS->format_number(vformat("%.2f " + TTR("px"), length_vector.length())), HALIGN_LEFT, -1, font_size, font_color, outline_size, outline_color);
+ viewport->draw_string(font, text_pos, TS->format_number(vformat("%.1f px", length_vector.length())), HALIGN_LEFT, -1, font_size, font_color, outline_size, outline_color);
if (draw_secondary_lines) {
- const float horizontal_angle_rad = atan2(length_vector.y, length_vector.x);
- const float vertical_angle_rad = Math_PI / 2.0 - horizontal_angle_rad;
+ const real_t horizontal_angle_rad = atan2(length_vector.y, length_vector.x);
+ const real_t vertical_angle_rad = Math_PI / 2.0 - horizontal_angle_rad;
const int horizontal_angle = round(180 * horizontal_angle_rad / Math_PI);
const int vertical_angle = round(180 * vertical_angle_rad / Math_PI);
Point2 text_pos2 = text_pos;
text_pos2.x = begin.x < text_pos.x ? MIN(text_pos.x - text_width, begin.x - text_width / 2) : MAX(text_pos.x + text_width, begin.x - text_width / 2);
- viewport->draw_string(font, text_pos2, TS->format_number(vformat("%.2f " + TTR("px"), length_vector.y)), HALIGN_LEFT, -1, font_size, font_secondary_color, outline_size, outline_color);
+ viewport->draw_string(font, text_pos2, TS->format_number(vformat("%.1f px", length_vector.y)), HALIGN_LEFT, -1, font_size, font_secondary_color, outline_size, outline_color);
Point2 v_angle_text_pos = Point2();
v_angle_text_pos.x = CLAMP(begin.x - angle_text_width / 2, angle_text_width / 2, viewport->get_rect().size.x - angle_text_width);
v_angle_text_pos.y = begin.y < end.y ? MIN(text_pos2.y - 2 * text_height, begin.y - text_height * 0.5) : MAX(text_pos2.y + text_height * 3, begin.y + text_height * 1.5);
- viewport->draw_string(font, v_angle_text_pos, TS->format_number(vformat("%d " + TTR("deg"), vertical_angle)), HALIGN_LEFT, -1, font_size, font_secondary_color, outline_size, outline_color);
+ viewport->draw_string(font, v_angle_text_pos, TS->format_number(vformat(String::utf8("%d°"), vertical_angle)), HALIGN_LEFT, -1, font_size, font_secondary_color, outline_size, outline_color);
text_pos2 = text_pos;
text_pos2.y = end.y < text_pos.y ? MIN(text_pos.y - text_height * 2, end.y - text_height / 2) : MAX(text_pos.y + text_height * 2, end.y - text_height / 2);
- viewport->draw_string(font, text_pos2, TS->format_number(vformat("%.2f " + TTR("px"), length_vector.x)), HALIGN_LEFT, -1, font_size, font_secondary_color, outline_size, outline_color);
+ viewport->draw_string(font, text_pos2, TS->format_number(vformat("%.1f px", length_vector.x)), HALIGN_LEFT, -1, font_size, font_secondary_color, outline_size, outline_color);
Point2 h_angle_text_pos = Point2();
h_angle_text_pos.x = CLAMP(end.x - angle_text_width / 2, angle_text_width / 2, viewport->get_rect().size.x - angle_text_width);
@@ -2968,32 +2959,32 @@ void CanvasItemEditor::_draw_ruler_tool() {
h_angle_text_pos.y = MIN(text_pos.y - height_multiplier * text_height, MIN(end.y - text_height * 0.5, text_pos2.y - height_multiplier * text_height));
}
}
- viewport->draw_string(font, h_angle_text_pos, TS->format_number(vformat("%d " + TTR("deg"), horizontal_angle)), HALIGN_LEFT, -1, font_size, font_secondary_color, outline_size, outline_color);
+ viewport->draw_string(font, h_angle_text_pos, TS->format_number(vformat(String::utf8("%d°"), horizontal_angle)), HALIGN_LEFT, -1, font_size, font_secondary_color, outline_size, outline_color);
// Angle arcs
int arc_point_count = 8;
- float arc_radius_max_length_percent = 0.1;
- float ruler_length = length_vector.length() * zoom;
- float arc_max_radius = 50.0;
- float arc_line_width = 2.0;
+ real_t arc_radius_max_length_percent = 0.1;
+ real_t ruler_length = length_vector.length() * zoom;
+ real_t arc_max_radius = 50.0;
+ real_t arc_line_width = 2.0;
const Vector2 end_to_begin = (end - begin);
- float arc_1_start_angle =
+ real_t arc_1_start_angle =
end_to_begin.x < 0 ?
(end_to_begin.y < 0 ? 3.0 * Math_PI / 2.0 - vertical_angle_rad : Math_PI / 2.0) :
(end_to_begin.y < 0 ? 3.0 * Math_PI / 2.0 : Math_PI / 2.0 - vertical_angle_rad);
- float arc_1_end_angle = arc_1_start_angle + vertical_angle_rad;
+ real_t arc_1_end_angle = arc_1_start_angle + vertical_angle_rad;
// Constrain arc to triangle height & max size
- float arc_1_radius = MIN(MIN(arc_radius_max_length_percent * ruler_length, ABS(end_to_begin.y)), arc_max_radius);
+ real_t arc_1_radius = MIN(MIN(arc_radius_max_length_percent * ruler_length, ABS(end_to_begin.y)), arc_max_radius);
- float arc_2_start_angle =
+ real_t arc_2_start_angle =
end_to_begin.x < 0 ?
(end_to_begin.y < 0 ? 0.0 : -horizontal_angle_rad) :
(end_to_begin.y < 0 ? Math_PI - horizontal_angle_rad : Math_PI);
- float arc_2_end_angle = arc_2_start_angle + horizontal_angle_rad;
+ real_t arc_2_end_angle = arc_2_start_angle + horizontal_angle_rad;
// Constrain arc to triangle width & max size
- float arc_2_radius = MIN(MIN(arc_radius_max_length_percent * ruler_length, ABS(end_to_begin.x)), arc_max_radius);
+ real_t arc_2_radius = MIN(MIN(arc_radius_max_length_percent * ruler_length, ABS(end_to_begin.x)), arc_max_radius);
viewport->draw_arc(begin, arc_1_radius, arc_1_start_angle, arc_1_end_angle, arc_point_count, ruler_primary_color, Math::round(EDSCALE * arc_line_width));
viewport->draw_arc(end, arc_2_radius, arc_2_start_angle, arc_2_end_angle, arc_point_count, ruler_primary_color, Math::round(EDSCALE * arc_line_width));
@@ -3031,7 +3022,7 @@ void CanvasItemEditor::_draw_control_anchors(Control *control) {
RID ci = viewport->get_canvas_item();
if (tool == TOOL_SELECT && !Object::cast_to<Container>(control->get_parent())) {
// Compute the anchors
- float anchors_values[4];
+ real_t anchors_values[4];
anchors_values[0] = control->get_anchor(SIDE_LEFT);
anchors_values[1] = control->get_anchor(SIDE_TOP);
anchors_values[2] = control->get_anchor(SIDE_RIGHT);
@@ -3070,7 +3061,7 @@ void CanvasItemEditor::_draw_control_helpers(Control *control) {
Color color_base = Color(0.8, 0.8, 0.8, 0.5);
// Compute the anchors
- float anchors_values[4];
+ real_t anchors_values[4];
anchors_values[0] = control->get_anchor(SIDE_LEFT);
anchors_values[1] = control->get_anchor(SIDE_TOP);
anchors_values[2] = control->get_anchor(SIDE_RIGHT);
@@ -3116,7 +3107,7 @@ void CanvasItemEditor::_draw_control_helpers(Control *control) {
Vector2 line_starts[4];
Vector2 line_ends[4];
for (int i = 0; i < 4; i++) {
- float anchor_val = (i >= 2) ? ANCHOR_END - anchors_values[i] : anchors_values[i];
+ real_t anchor_val = (i >= 2) ? ANCHOR_END - anchors_values[i] : anchors_values[i];
line_starts[i] = corners_pos[i].lerp(corners_pos[(i + 1) % 4], anchor_val);
line_ends[i] = corners_pos[(i + 3) % 4].lerp(corners_pos[(i + 2) % 4], anchor_val);
anchor_snapped = anchors_values[i] == 0.0 || anchors_values[i] == 0.5 || anchors_values[i] == 1.0;
@@ -3124,7 +3115,7 @@ void CanvasItemEditor::_draw_control_helpers(Control *control) {
}
// Display the percentages next to the lines
- float percent_val;
+ real_t percent_val;
percent_val = anchors_values[(dragged_anchor + 2) % 4] - anchors_values[dragged_anchor];
percent_val = (dragged_anchor >= 2) ? -percent_val : percent_val;
_draw_percentage_at_position(percent_val, (anchors_pos[dragged_anchor] + anchors_pos[(dragged_anchor + 1) % 4]) / 2, (Side)((dragged_anchor + 1) % 4));
@@ -3143,9 +3134,9 @@ void CanvasItemEditor::_draw_control_helpers(Control *control) {
}
// Draw the margin values and the node width/height when dragging control side
- float ratio = 0.33;
+ const real_t ratio = 0.33;
Transform2D parent_transform = xform * control->get_transform().affine_inverse();
- float node_pos_in_parent[4];
+ real_t node_pos_in_parent[4];
Rect2 parent_rect = control->get_parent_anchorable_rect();
@@ -3248,8 +3239,8 @@ void CanvasItemEditor::_draw_selection() {
List<CanvasItem *> selection = _get_edited_canvas_items(true, false);
bool single = selection.size() == 1;
- for (List<CanvasItem *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
+ for (CanvasItem *E : selection) {
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E);
CanvasItemEditorSelectedItem *se = editor_selection->get_node_editor_data<CanvasItemEditorSelectedItem>(canvas_item);
bool item_locked = canvas_item->has_meta("_edit_lock_");
@@ -3462,10 +3453,10 @@ void CanvasItemEditor::_draw_straight_line(Point2 p_from, Point2 p_to, Color p_c
points.push_back(Point2(0, to.y));
points.push_back(Point2(viewport_size.x, to.y));
} else {
- float y_for_zero_x = (to.y * from.x - from.y * to.x) / (from.x - to.x);
- float x_for_zero_y = (to.x * from.y - from.x * to.y) / (from.y - to.y);
- float y_for_viewport_x = ((to.y - from.y) * (viewport_size.x - from.x)) / (to.x - from.x) + from.y;
- float x_for_viewport_y = ((to.x - from.x) * (viewport_size.y - from.y)) / (to.y - from.y) + from.x; // faux
+ real_t y_for_zero_x = (to.y * from.x - from.y * to.x) / (from.x - to.x);
+ real_t x_for_zero_y = (to.x * from.y - from.x * to.y) / (from.y - to.y);
+ real_t y_for_viewport_x = ((to.y - from.y) * (viewport_size.x - from.x)) / (to.x - from.x) + from.y;
+ real_t x_for_viewport_y = ((to.x - from.x) * (viewport_size.y - from.y)) / (to.y - from.y) + from.x; // faux
//bool start_set = false;
if (y_for_zero_x >= 0 && y_for_zero_x <= viewport_size.y) {
@@ -3566,9 +3557,9 @@ void CanvasItemEditor::_draw_hover() {
Point2 pos = transform.xform(hovering_results[i].position) - Point2(0, item_size.y) + (Point2(node_icon->get_size().x, -node_icon->get_size().y) / 4);
// Rectify the position to avoid overlapping items
- for (List<Rect2>::Element *E = previous_rects.front(); E; E = E->next()) {
- if (E->get().intersects(Rect2(pos, item_size))) {
- pos.y = E->get().get_position().y - item_size.y;
+ for (const Rect2 &E : previous_rects) {
+ if (E.intersects(Rect2(pos, item_size))) {
+ pos.y = E.get_position().y - item_size.y;
}
}
@@ -3611,7 +3602,7 @@ void CanvasItemEditor::_draw_locks_and_groups(Node *p_node, const Transform2D &p
RID viewport_canvas_item = viewport->get_canvas_item();
if (canvas_item) {
- float offset = 0;
+ real_t offset = 0;
Ref<Texture2D> lock = get_theme_icon(SNAME("LockViewport"), SNAME("EditorIcons"));
if (p_node->has_meta("_edit_lock_") && show_edit_locks) {
@@ -3642,14 +3633,14 @@ void CanvasItemEditor::_draw_viewport() {
all_locked = false;
all_group = false;
} else {
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- if (Object::cast_to<CanvasItem>(E->get()) && !Object::cast_to<CanvasItem>(E->get())->has_meta("_edit_lock_")) {
+ for (Node *E : selection) {
+ if (Object::cast_to<CanvasItem>(E) && !Object::cast_to<CanvasItem>(E)->has_meta("_edit_lock_")) {
all_locked = false;
break;
}
}
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- if (Object::cast_to<CanvasItem>(E->get()) && !Object::cast_to<CanvasItem>(E->get())->has_meta("_edit_group_")) {
+ for (Node *E : selection) {
+ if (Object::cast_to<CanvasItem>(E) && !Object::cast_to<CanvasItem>(E)->has_meta("_edit_group_")) {
all_group = false;
break;
}
@@ -3716,8 +3707,7 @@ void CanvasItemEditor::_notification(int p_what) {
// Update the viewport if the canvas_item changes
List<CanvasItem *> selection = _get_edited_canvas_items(true);
- for (List<CanvasItem *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = E->get();
+ for (CanvasItem *canvas_item : selection) {
CanvasItemEditorSelectedItem *se = editor_selection->get_node_editor_data<CanvasItemEditorSelectedItem>(canvas_item);
Rect2 rect;
@@ -3736,7 +3726,7 @@ void CanvasItemEditor::_notification(int p_what) {
Control *control = Object::cast_to<Control>(canvas_item);
if (control) {
- float anchors[4];
+ real_t anchors[4];
Vector2 pivot;
pivot = control->get_pivot_offset();
@@ -3865,7 +3855,10 @@ void CanvasItemEditor::_notification(int p_what) {
key_auto_insert_button->add_theme_color_override("icon_pressed_color", key_auto_color.lerp(Color(1, 0, 0), 0.55));
animation_menu->set_icon(get_theme_icon(SNAME("GuiTabMenuHl"), SNAME("EditorIcons")));
+ _update_context_menu_stylebox();
+
presets_menu->set_icon(get_theme_icon(SNAME("ControlLayout"), SNAME("EditorIcons")));
+
PopupMenu *p = presets_menu->get_popup();
p->clear();
@@ -3932,8 +3925,8 @@ void CanvasItemEditor::_selection_changed() {
int nbValidControls = 0;
int nbAnchorsMode = 0;
List<Node *> selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Control *control = Object::cast_to<Control>(E->get());
+ for (Node *E : selection) {
+ Control *control = Object::cast_to<Control>(E);
if (!control) {
continue;
}
@@ -3966,6 +3959,18 @@ void CanvasItemEditor::edit(CanvasItem *p_canvas_item) {
}
}
+void CanvasItemEditor::_update_context_menu_stylebox() {
+ // This must be called when the theme changes to follow the new accent color.
+ Ref<StyleBoxFlat> context_menu_stylebox = memnew(StyleBoxFlat);
+ const Color accent_color = EditorNode::get_singleton()->get_gui_base()->get_theme_color("accent_color", "Editor");
+ context_menu_stylebox->set_bg_color(accent_color * Color(1, 1, 1, 0.1));
+ // Add an underline to the StyleBox, but prevent its minimum vertical size from changing.
+ context_menu_stylebox->set_border_color(accent_color);
+ context_menu_stylebox->set_border_width(SIDE_BOTTOM, Math::round(2 * EDSCALE));
+ context_menu_stylebox->set_default_margin(SIDE_BOTTOM, 0);
+ context_menu_container->add_theme_style_override("panel", context_menu_stylebox);
+}
+
void CanvasItemEditor::_update_scrollbars() {
updating_scroll = true;
@@ -3998,7 +4003,7 @@ void CanvasItemEditor::_update_scrollbars() {
bool constrain_editor_view = bool(EditorSettings::get_singleton()->get("editors/2d/constrain_editor_view"));
if (canvas_item_rect.size.height <= (local_rect.size.y / zoom)) {
- float centered = -(size.y / 2) / zoom + screen_rect.y / 2;
+ real_t centered = -(size.y / 2) / zoom + screen_rect.y / 2;
if (constrain_editor_view && ABS(centered - previous_update_view_offset.y) < ABS(centered - view_offset.y)) {
view_offset.y = previous_update_view_offset.y;
}
@@ -4019,7 +4024,7 @@ void CanvasItemEditor::_update_scrollbars() {
}
if (canvas_item_rect.size.width <= (local_rect.size.x / zoom)) {
- float centered = -(size.x / 2) / zoom + screen_rect.x / 2;
+ real_t centered = -(size.x / 2) / zoom + screen_rect.x / 2;
if (constrain_editor_view && ABS(centered - previous_update_view_offset.x) < ABS(centered - view_offset.x)) {
view_offset.x = previous_update_view_offset.x;
}
@@ -4086,7 +4091,7 @@ void CanvasItemEditor::_popup_warning_temporarily(Control *p_control, const floa
info_overlay->set_offset(SIDE_LEFT, (show_rulers ? RULER_WIDTH : 0) + 10);
}
-void CanvasItemEditor::_update_scroll(float) {
+void CanvasItemEditor::_update_scroll(real_t) {
if (updating_scroll) {
return;
}
@@ -4101,8 +4106,8 @@ void CanvasItemEditor::_set_anchors_and_offsets_preset(Control::LayoutPreset p_p
undo_redo->create_action(TTR("Change Anchors and Offsets"));
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Control *control = Object::cast_to<Control>(E->get());
+ for (Node *E : selection) {
+ Control *control = Object::cast_to<Control>(E);
if (control) {
undo_redo->add_do_method(control, "set_anchors_preset", p_preset);
switch (p_preset) {
@@ -4142,8 +4147,8 @@ void CanvasItemEditor::_set_anchors_and_offsets_to_keep_ratio() {
undo_redo->create_action(TTR("Change Anchors and Offsets"));
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Control *control = Object::cast_to<Control>(E->get());
+ for (Node *E : selection) {
+ Control *control = Object::cast_to<Control>(E);
if (control) {
Point2 top_left_anchor = _position_to_anchor(control, Point2());
Point2 bottom_right_anchor = _position_to_anchor(control, control->get_size());
@@ -4169,8 +4174,8 @@ void CanvasItemEditor::_set_anchors_preset(Control::LayoutPreset p_preset) {
List<Node *> selection = editor_selection->get_selected_node_list();
undo_redo->create_action(TTR("Change Anchors"));
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Control *control = Object::cast_to<Control>(E->get());
+ for (Node *E : selection) {
+ Control *control = Object::cast_to<Control>(E);
if (control) {
undo_redo->add_do_method(control, "set_anchors_preset", p_preset);
undo_redo->add_undo_method(control, "_edit_set_state", control->_edit_get_state());
@@ -4180,14 +4185,14 @@ void CanvasItemEditor::_set_anchors_preset(Control::LayoutPreset p_preset) {
undo_redo->commit_action();
}
-void CanvasItemEditor::_zoom_on_position(float p_zoom, Point2 p_position) {
+void CanvasItemEditor::_zoom_on_position(real_t p_zoom, Point2 p_position) {
p_zoom = CLAMP(p_zoom, MIN_ZOOM, MAX_ZOOM);
if (p_zoom == zoom) {
return;
}
- float prev_zoom = zoom;
+ real_t prev_zoom = zoom;
zoom = p_zoom;
view_offset += p_position / prev_zoom - p_position / zoom;
@@ -4196,7 +4201,7 @@ void CanvasItemEditor::_zoom_on_position(float p_zoom, Point2 p_position) {
// in small details (texts, lines).
// This correction adds a jitter movement when zooming, so we correct only when the
// zoom factor is an integer. (in the other cases, all pixels won't be aligned anyway)
- float closest_zoom_factor = Math::round(zoom);
+ const real_t closest_zoom_factor = Math::round(zoom);
if (Math::is_zero_approx(zoom - closest_zoom_factor)) {
// make sure scene pixel at view_offset is aligned on a screen pixel
Vector2 view_offset_int = view_offset.floor();
@@ -4208,7 +4213,7 @@ void CanvasItemEditor::_zoom_on_position(float p_zoom, Point2 p_position) {
update_viewport();
}
-void CanvasItemEditor::_update_zoom(float p_zoom) {
+void CanvasItemEditor::_update_zoom(real_t p_zoom) {
_zoom_on_position(p_zoom, viewport_scrollable->get_size() / 2.0);
}
@@ -4295,15 +4300,15 @@ void CanvasItemEditor::_insert_animation_keys(bool p_location, bool p_rotation,
}
if (has_chain && ik_chain.size()) {
- for (List<Node2D *>::Element *F = ik_chain.front(); F; F = F->next()) {
+ for (Node2D *&F : ik_chain) {
if (key_pos) {
- AnimationPlayerEditor::singleton->get_track_editor()->insert_node_value_key(F->get(), "position", F->get()->get_position(), p_on_existing);
+ AnimationPlayerEditor::singleton->get_track_editor()->insert_node_value_key(F, "position", F->get_position(), p_on_existing);
}
if (key_rot) {
- AnimationPlayerEditor::singleton->get_track_editor()->insert_node_value_key(F->get(), "rotation", F->get()->get_rotation(), p_on_existing);
+ AnimationPlayerEditor::singleton->get_track_editor()->insert_node_value_key(F, "rotation", F->get_rotation(), p_on_existing);
}
if (key_scale) {
- AnimationPlayerEditor::singleton->get_track_editor()->insert_node_value_key(F->get(), "scale", F->get()->get_scale(), p_on_existing);
+ AnimationPlayerEditor::singleton->get_track_editor()->insert_node_value_key(F, "scale", F->get_scale(), p_on_existing);
}
}
}
@@ -4327,8 +4332,8 @@ void CanvasItemEditor::_insert_animation_keys(bool p_location, bool p_rotation,
void CanvasItemEditor::_button_toggle_anchor_mode(bool p_status) {
List<CanvasItem *> selection = _get_edited_canvas_items(false, false);
- for (List<CanvasItem *>::Element *E = selection.front(); E; E = E->next()) {
- Control *control = Object::cast_to<Control>(E->get());
+ for (CanvasItem *E : selection) {
+ Control *control = Object::cast_to<Control>(E);
if (!control || Object::cast_to<Container>(control->get_parent())) {
continue;
}
@@ -4441,13 +4446,13 @@ void CanvasItemEditor::_popup_callback(int p_op) {
} break;
case SKELETON_SHOW_BONES: {
List<Node *> selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
+ for (Node *E : selection) {
// Add children nodes so they are processed
- for (int child = 0; child < E->get()->get_child_count(); child++) {
- selection.push_back(E->get()->get_child(child));
+ for (int child = 0; child < E->get_child_count(); child++) {
+ selection.push_back(E->get_child(child));
}
- Bone2D *bone_2d = Object::cast_to<Bone2D>(E->get());
+ Bone2D *bone_2d = Object::cast_to<Bone2D>(E);
if (!bone_2d || !bone_2d->is_inside_tree()) {
continue;
}
@@ -4477,8 +4482,8 @@ void CanvasItemEditor::_popup_callback(int p_op) {
undo_redo->create_action(TTR("Lock Selected"));
List<Node *> selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
+ for (Node *E : selection) {
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E);
if (!canvas_item || !canvas_item->is_inside_tree()) {
continue;
}
@@ -4499,8 +4504,8 @@ void CanvasItemEditor::_popup_callback(int p_op) {
undo_redo->create_action(TTR("Unlock Selected"));
List<Node *> selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
+ for (Node *E : selection) {
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E);
if (!canvas_item || !canvas_item->is_inside_tree()) {
continue;
}
@@ -4521,8 +4526,8 @@ void CanvasItemEditor::_popup_callback(int p_op) {
undo_redo->create_action(TTR("Group Selected"));
List<Node *> selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
+ for (Node *E : selection) {
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E);
if (!canvas_item || !canvas_item->is_inside_tree()) {
continue;
}
@@ -4543,8 +4548,8 @@ void CanvasItemEditor::_popup_callback(int p_op) {
undo_redo->create_action(TTR("Ungroup Selected"));
List<Node *> selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E->get());
+ for (Node *E : selection) {
+ CanvasItem *canvas_item = Object::cast_to<CanvasItem>(E);
if (!canvas_item || !canvas_item->is_inside_tree()) {
continue;
}
@@ -4711,14 +4716,14 @@ void CanvasItemEditor::_popup_callback(int p_op) {
}
undo_redo->create_action(TTR("Paste Pose"));
- for (List<PoseClipboard>::Element *E = pose_clipboard.front(); E; E = E->next()) {
- Node2D *n2d = Object::cast_to<Node2D>(ObjectDB::get_instance(E->get().id));
+ for (const PoseClipboard &E : pose_clipboard) {
+ Node2D *n2d = Object::cast_to<Node2D>(ObjectDB::get_instance(E.id));
if (!n2d) {
continue;
}
- undo_redo->add_do_method(n2d, "set_position", E->get().pos);
- undo_redo->add_do_method(n2d, "set_rotation", E->get().rot);
- undo_redo->add_do_method(n2d, "set_scale", E->get().scale);
+ undo_redo->add_do_method(n2d, "set_position", E.pos);
+ undo_redo->add_do_method(n2d, "set_rotation", E.rot);
+ undo_redo->add_do_method(n2d, "set_scale", E.scale);
undo_redo->add_undo_method(n2d, "set_position", n2d->get_position());
undo_redo->add_undo_method(n2d, "set_rotation", n2d->get_rotation());
undo_redo->add_undo_method(n2d, "set_scale", n2d->get_scale());
@@ -4893,8 +4898,8 @@ void CanvasItemEditor::_focus_selection(int p_op) {
} else { // VIEW_FRAME_TO_SELECTION
if (rect.size.x > CMP_EPSILON && rect.size.y > CMP_EPSILON) {
- float scale_x = viewport->get_size().x / rect.size.x;
- float scale_y = viewport->get_size().y / rect.size.y;
+ real_t scale_x = viewport->get_size().x / rect.size.x;
+ real_t scale_y = viewport->get_size().y / rect.size.y;
zoom = scale_x < scale_y ? scale_x : scale_y;
zoom *= 0.90;
viewport->update();
@@ -4959,7 +4964,7 @@ void CanvasItemEditor::set_state(const Dictionary &p_state) {
if (state.has("zoom")) {
// Compensate the editor scale, so that the editor scale can be changed
// and the zoom level will still be the same (relative to the editor scale).
- zoom = float(p_state["zoom"]) * MAX(1, EDSCALE);
+ zoom = real_t(p_state["zoom"]) * MAX(1, EDSCALE);
zoom_widget->set_zoom(zoom);
}
@@ -5139,11 +5144,11 @@ void CanvasItemEditor::remove_control_from_info_overlay(Control *p_control) {
void CanvasItemEditor::add_control_to_menu_panel(Control *p_control) {
ERR_FAIL_COND(!p_control);
- hb->add_child(p_control);
+ hbc_context_menu->add_child(p_control);
}
void CanvasItemEditor::remove_control_from_menu_panel(Control *p_control) {
- hb->remove_child(p_control);
+ hbc_context_menu->remove_child(p_control);
}
HSplitContainer *CanvasItemEditor::get_palette_split() {
@@ -5325,7 +5330,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
select_button->set_pressed(true);
select_button->set_shortcut(ED_SHORTCUT("canvas_item_editor/select_mode", TTR("Select Mode"), KEY_Q));
select_button->set_shortcut_context(this);
- select_button->set_tooltip(keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate") + "\n" + TTR("Alt+Drag: Move") + "\n" + TTR("Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving).") + "\n" + TTR("Alt+RMB: Show list of all nodes at position clicked, including locked."));
+ select_button->set_tooltip(keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate selected node around pivot.") + "\n" + TTR("Alt+Drag: Move 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" + keycode_get_string(KEY_MASK_CMD) + TTR("RMB: Add node at position clicked."));
hb->add_child(memnew(VSeparator));
@@ -5528,10 +5533,21 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
p->add_separator();
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/preview_canvas_scale", TTR("Preview Canvas Scale"), KEY_MASK_SHIFT | KEY_MASK_CMD | KEY_P), PREVIEW_CANVAS_SCALE);
+ hb->add_child(memnew(VSeparator));
+
+ context_menu_container = memnew(PanelContainer);
+ hbc_context_menu = memnew(HBoxContainer);
+ context_menu_container->add_child(hbc_context_menu);
+ // Use a custom stylebox to make contextual menu items stand out from the rest.
+ // This helps with editor usability as contextual menu items change when selecting nodes,
+ // even though it may not be immediately obvious at first.
+ hb->add_child(context_menu_container);
+ _update_context_menu_stylebox();
+
presets_menu = memnew(MenuButton);
presets_menu->set_shortcut_context(this);
presets_menu->set_text(TTR("Layout"));
- hb->add_child(presets_menu);
+ hbc_context_menu->add_child(presets_menu);
presets_menu->hide();
presets_menu->set_switch_on_hover(true);
@@ -5545,17 +5561,18 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
anchor_mode_button = memnew(Button);
anchor_mode_button->set_flat(true);
- hb->add_child(anchor_mode_button);
+ hbc_context_menu->add_child(anchor_mode_button);
anchor_mode_button->set_toggle_mode(true);
anchor_mode_button->hide();
anchor_mode_button->connect("toggled", callable_mp(this, &CanvasItemEditor::_button_toggle_anchor_mode));
animation_hb = memnew(HBoxContainer);
- hb->add_child(animation_hb);
+ hbc_context_menu->add_child(animation_hb);
animation_hb->add_child(memnew(VSeparator));
animation_hb->hide();
key_loc_button = memnew(Button);
+ key_loc_button->set_flat(true);
key_loc_button->set_toggle_mode(true);
key_loc_button->set_pressed(true);
key_loc_button->set_focus_mode(FOCUS_NONE);
@@ -5564,6 +5581,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
animation_hb->add_child(key_loc_button);
key_rot_button = memnew(Button);
+ key_rot_button->set_flat(true);
key_rot_button->set_toggle_mode(true);
key_rot_button->set_pressed(true);
key_rot_button->set_focus_mode(FOCUS_NONE);
@@ -5572,6 +5590,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
animation_hb->add_child(key_rot_button);
key_scale_button = memnew(Button);
+ key_scale_button->set_flat(true);
key_scale_button->set_toggle_mode(true);
key_scale_button->set_focus_mode(FOCUS_NONE);
key_scale_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(ANIM_INSERT_SCALE));
@@ -5579,6 +5598,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
animation_hb->add_child(key_scale_button);
key_insert_button = memnew(Button);
+ key_insert_button->set_flat(true);
key_insert_button->set_focus_mode(FOCUS_NONE);
key_insert_button->connect("pressed", callable_mp(this, &CanvasItemEditor::_popup_callback), varray(ANIM_INSERT_KEY));
key_insert_button->set_tooltip(TTR("Insert keys (based on mask)."));
@@ -5745,11 +5765,14 @@ void CanvasItemEditorViewport::_create_preview(const Vector<String> &files) cons
preview_node->add_child(sprite);
label->show();
label_desc->show();
+ label_desc->set_text(TTR("Drag and drop to add as child of current scene's root node.\nHold Ctrl when dropping to add as child of selected node.\nHold Shift when dropping to add as sibling of selected node.\nHold Alt when dropping to add as a different node type."));
} else {
if (scene.is_valid()) {
Node *instance = scene->instantiate();
if (instance) {
preview_node->add_child(instance);
+ label_desc->show();
+ label_desc->set_text(TTR("Drag and drop to add as child of current scene's root node.\nHold Ctrl when dropping to add as child of selected node.\nHold Shift when dropping to add as sibling of selected node."));
}
}
}
@@ -5792,7 +5815,22 @@ bool CanvasItemEditorViewport::_cyclical_dependency_exists(const String &p_targe
}
void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &path, const Point2 &p_point) {
- child->set_name(path.get_file().get_basename());
+ // Adjust casing according to project setting. The file name is expected to be in snake_case, but will work for others.
+ String name = path.get_file().get_basename();
+ switch (ProjectSettings::get_singleton()->get("editor/node_naming/name_casing").operator int()) {
+ case NAME_CASING_PASCAL_CASE:
+ name = name.capitalize().replace(" ", "");
+ break;
+ case NAME_CASING_CAMEL_CASE:
+ name = name.capitalize().replace(" ", "");
+ name[0] = name.to_lower()[0];
+ break;
+ case NAME_CASING_SNAKE_CASE:
+ name = name.capitalize().replace(" ", "_").to_lower();
+ break;
+ }
+ child->set_name(name);
+
Ref<Texture2D> texture = Ref<Texture2D>(Object::cast_to<Texture2D>(ResourceCache::get(path)));
Size2 texture_size = texture->get_size();
@@ -5819,14 +5857,14 @@ void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &
String property = "texture";
List<PropertyInfo> props;
child->get_property_list(&props);
- for (const List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (E->get().name == "config/texture") { // Particles2D
+ for (const PropertyInfo &E : props) {
+ if (E.name == "config/texture") { // Particles2D
property = "config/texture";
break;
- } else if (E->get().name == "texture/texture") { // Polygon2D
+ } else if (E.name == "texture/texture") { // Polygon2D
property = "texture/texture";
break;
- } else if (E->get().name == "normal") { // TouchScreenButton
+ } else if (E.name == "normal") { // TouchScreenButton
property = "normal";
break;
}
@@ -6048,6 +6086,7 @@ bool CanvasItemEditorViewport::_only_packed_scenes_selected() const {
void CanvasItemEditorViewport::drop_data(const Point2 &p_point, const Variant &p_data) {
bool is_shift = Input::get_singleton()->is_key_pressed(KEY_SHIFT);
+ bool is_ctrl = Input::get_singleton()->is_key_pressed(KEY_CTRL);
bool is_alt = Input::get_singleton()->is_key_pressed(KEY_ALT);
selected_files.clear();
@@ -6059,24 +6098,25 @@ void CanvasItemEditorViewport::drop_data(const Point2 &p_point, const Variant &p
return;
}
- List<Node *> list = editor->get_editor_selection()->get_selected_node_list();
- if (list.size() == 0) {
- Node *root_node = editor->get_edited_scene();
+ List<Node *> selected_nodes = editor->get_editor_selection()->get_selected_node_list();
+ Node *root_node = editor->get_edited_scene();
+ if (selected_nodes.size() > 0) {
+ Node *selected_node = selected_nodes[0];
+ target_node = root_node;
+ if (is_ctrl) {
+ target_node = selected_node;
+ } else if (is_shift && selected_node != root_node) {
+ target_node = selected_node->get_parent();
+ }
+ } else {
if (root_node) {
- list.push_back(root_node);
+ target_node = root_node;
} else {
drop_pos = p_point;
target_node = nullptr;
}
}
- if (list.size() > 0) {
- target_node = list[0];
- if (is_shift && target_node != editor->get_edited_scene()) {
- target_node = target_node->get_parent();
- }
- }
-
drop_pos = p_point;
if (is_alt && !_only_packed_scenes_selected()) {
@@ -6157,7 +6197,6 @@ CanvasItemEditorViewport::CanvasItemEditorViewport(EditorNode *p_node, CanvasIte
canvas_item_editor->get_controls_container()->add_child(label);
label_desc = memnew(Label);
- label_desc->set_text(TTR("Drag & drop + Shift : Add node as sibling\nDrag & drop + Alt : Change node type"));
label_desc->add_theme_color_override("font_color", Color(0.6f, 0.6f, 0.6f, 1));
label_desc->add_theme_color_override("font_shadow_color", Color(0.2f, 0.2f, 0.2f, 1));
label_desc->add_theme_constant_override("shadow_as_outline", 1 * EDSCALE);
diff --git a/editor/plugins/canvas_item_editor_plugin.h b/editor/plugins/canvas_item_editor_plugin.h
index 7b64d0cb5d..1f59dfbc49 100644
--- a/editor/plugins/canvas_item_editor_plugin.h
+++ b/editor/plugins/canvas_item_editor_plugin.h
@@ -48,10 +48,10 @@ class CanvasItemEditorSelectedItem : public Object {
public:
Transform2D prev_xform;
- float prev_rot = 0;
+ real_t prev_rot = 0;
Rect2 prev_rect;
Vector2 prev_pivot;
- float prev_anchors[4] = { 0.0f };
+ real_t prev_anchors[4] = { (real_t)0.0 };
Transform2D pre_drag_xform;
Rect2 pre_drag_rect;
@@ -230,6 +230,10 @@ private:
HScrollBar *h_scroll;
VScrollBar *v_scroll;
HBoxContainer *hb;
+ // Used for secondary menu items which are displayed depending on the currently selected node
+ // (such as MeshInstance's "Mesh" menu).
+ PanelContainer *context_menu_container;
+ HBoxContainer *hbc_context_menu;
Map<Control *, Timer *> popup_temporarily_timers;
@@ -246,7 +250,7 @@ private:
bool show_edit_locks;
bool show_transformation_gizmos;
- float zoom;
+ real_t zoom;
Point2 view_offset;
Point2 previous_update_view_offset;
@@ -258,9 +262,9 @@ private:
int primary_grid_steps;
int grid_step_multiplier;
- float snap_rotation_step;
- float snap_rotation_offset;
- float snap_scale_step;
+ real_t snap_rotation_step;
+ real_t snap_rotation_offset;
+ real_t snap_scale_step;
bool smart_snap_active;
bool grid_snap_active;
@@ -288,7 +292,7 @@ private:
struct _SelectResult {
CanvasItem *item = nullptr;
- float z_index = 0;
+ real_t z_index = 0;
bool has_z = true;
_FORCE_INLINE_ bool operator<(const _SelectResult &p_rr) const {
return has_z && p_rr.has_z ? p_rr.z_index < z_index : p_rr.has_z;
@@ -305,7 +309,7 @@ private:
struct BoneList {
Transform2D xform;
- float length = 0.f;
+ real_t length = 0;
uint64_t last_pass = 0;
};
@@ -328,7 +332,7 @@ private:
struct PoseClipboard {
Vector2 pos;
Vector2 scale;
- float rot = 0;
+ real_t rot = 0;
ObjectID id;
};
List<PoseClipboard> pose_clipboard;
@@ -428,7 +432,7 @@ private:
void _popup_callback(int p_op);
bool updating_scroll;
- void _update_scroll(float);
+ void _update_scroll(real_t);
void _update_scrollbars();
void _append_canvas_item(CanvasItem *p_item);
void _snap_changed();
@@ -455,7 +459,7 @@ private:
void _draw_text_at_position(Point2 p_position, String p_string, Side p_side);
void _draw_margin_at_position(int p_value, Point2 p_position, Side p_side);
- void _draw_percentage_at_position(float p_value, Point2 p_position, Side p_side);
+ void _draw_percentage_at_position(real_t p_value, Point2 p_position, Side p_side);
void _draw_straight_line(Point2 p_from, Point2 p_to, Color p_color);
void _draw_smart_snapping();
@@ -497,16 +501,16 @@ private:
SnapTarget snap_target[2];
Transform2D snap_transform;
void _snap_if_closer_float(
- float p_value,
- float &r_current_snap, SnapTarget &r_current_snap_target,
- float p_target_value, SnapTarget p_snap_target,
- float p_radius = 10.0);
+ const real_t p_value,
+ real_t &r_current_snap, SnapTarget &r_current_snap_target,
+ const real_t p_target_value, const SnapTarget p_snap_target,
+ const real_t p_radius = 10.0);
void _snap_if_closer_point(
Point2 p_value,
Point2 &r_current_snap, SnapTarget (&r_current_snap_target)[2],
- Point2 p_target_value, SnapTarget p_snap_target,
- real_t rotation = 0.0,
- float p_radius = 10.0);
+ Point2 p_target_value, const SnapTarget p_snap_target,
+ const real_t rotation = 0.0,
+ const real_t p_radius = 10.0);
void _snap_other_nodes(
const Point2 p_value,
const Transform2D p_transform_to_snap,
@@ -523,8 +527,8 @@ private:
VBoxContainer *controls_vb;
EditorZoomWidget *zoom_widget;
- void _update_zoom(float p_zoom);
- void _zoom_on_position(float p_zoom, Point2 p_position = Point2());
+ void _update_zoom(real_t p_zoom);
+ void _zoom_on_position(real_t p_zoom, Point2 p_position = Point2());
void _button_toggle_smart_snap(bool p_status);
void _button_toggle_grid_snap(bool p_status);
void _button_override_camera(bool p_pressed);
@@ -535,6 +539,7 @@ private:
HSplitContainer *palette_split;
VSplitContainer *bottom_split;
+ void _update_context_menu_stylebox();
void _popup_warning_temporarily(Control *p_control, const float p_duration);
void _popup_warning_depop(Control *p_control);
@@ -552,28 +557,6 @@ protected:
HBoxContainer *get_panel_hb() { return hb; }
- struct compare_items_x {
- bool operator()(const CanvasItem *a, const CanvasItem *b) const {
- return a->get_global_transform().elements[2].x < b->get_global_transform().elements[2].x;
- }
- };
-
- struct compare_items_y {
- bool operator()(const CanvasItem *a, const CanvasItem *b) const {
- return a->get_global_transform().elements[2].y < b->get_global_transform().elements[2].y;
- }
- };
-
- struct proj_vector2_x {
- float get(const Vector2 &v) { return v.x; }
- void set(Vector2 &v, float f) { v.x = f; }
- };
-
- struct proj_vector2_y {
- float get(const Vector2 &v) { return v.y; }
- void set(Vector2 &v, float f) { v.y = f; }
- };
-
template <class P, class C>
void space_selected_items();
@@ -594,7 +577,7 @@ public:
};
Point2 snap_point(Point2 p_target, unsigned int p_modes = SNAP_DEFAULT, unsigned int p_forced_modes = 0, const CanvasItem *p_self_canvas_item = nullptr, List<CanvasItem *> p_other_nodes_exceptions = List<CanvasItem *>());
- float snap_angle(float p_target, float p_start = 0) const;
+ real_t snap_angle(real_t p_target, real_t p_start = 0) const;
Transform2D get_canvas_transform() const { return transform; }
diff --git a/editor/plugins/collision_shape_2d_editor_plugin.cpp b/editor/plugins/collision_shape_2d_editor_plugin.cpp
index 45adbe29de..2c2adc2672 100644
--- a/editor/plugins/collision_shape_2d_editor_plugin.cpp
+++ b/editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -31,6 +31,7 @@
#include "collision_shape_2d_editor_plugin.h"
#include "canvas_item_editor_plugin.h"
+#include "core/os/keyboard.h"
#include "scene/resources/capsule_shape_2d.h"
#include "scene/resources/circle_shape_2d.h"
#include "scene/resources/concave_polygon_shape_2d.h"
@@ -97,7 +98,7 @@ Variant CollisionShape2DEditor::get_handle_value(int idx) const {
case RECTANGLE_SHAPE: {
Ref<RectangleShape2D> rect = node->get_shape();
- if (idx < 3) {
+ if (idx < 8) {
return rect->get_size().abs();
}
@@ -176,16 +177,26 @@ void CollisionShape2DEditor::set_handle(int idx, Point2 &p_point) {
} break;
case RECTANGLE_SHAPE: {
- if (idx < 3) {
+ if (idx < 8) {
Ref<RectangleShape2D> rect = node->get_shape();
+ Vector2 size = (Point2)original;
- Vector2 size = rect->get_size();
- if (idx == 2) {
- size = p_point * 2;
+ if (RECT_HANDLES[idx].x != 0) {
+ size.x = p_point.x * RECT_HANDLES[idx].x * 2;
+ }
+ if (RECT_HANDLES[idx].y != 0) {
+ size.y = p_point.y * RECT_HANDLES[idx].y * 2;
+ }
+
+ if (Input::get_singleton()->is_key_pressed(KEY_ALT)) {
+ rect->set_size(size.abs());
+ node->set_global_position(original_transform.get_origin());
} else {
- size[idx] = p_point[idx] * 2;
+ rect->set_size(((Point2)original + (size - (Point2)original) * 0.5).abs());
+ Point2 pos = original_transform.affine_inverse().xform(original_transform.get_origin());
+ pos += (size - (Point2)original) * 0.5 * RECT_HANDLES[idx] * 0.5;
+ node->set_global_position(original_transform.xform(pos));
}
- rect->set_size(size.abs());
canvas_item_editor->update_viewport();
}
@@ -280,8 +291,10 @@ void CollisionShape2DEditor::commit_handle(int idx, Variant &p_org) {
Ref<RectangleShape2D> rect = node->get_shape();
undo_redo->add_do_method(rect.ptr(), "set_size", rect->get_size());
+ undo_redo->add_do_method(node, "set_global_transform", node->get_global_transform());
undo_redo->add_do_method(canvas_item_editor, "update_viewport");
undo_redo->add_undo_method(rect.ptr(), "set_size", p_org);
+ undo_redo->add_undo_method(node, "set_global_transform", original_transform);
undo_redo->add_undo_method(canvas_item_editor, "update_viewport");
} break;
@@ -342,6 +355,8 @@ bool CollisionShape2DEditor::forward_canvas_gui_input(const Ref<InputEvent> &p_e
}
original = get_handle_value(edit_handle);
+ original_transform = node->get_global_transform();
+ last_point = original;
pressed = true;
return true;
@@ -369,13 +384,26 @@ bool CollisionShape2DEditor::forward_canvas_gui_input(const Ref<InputEvent> &p_e
}
Vector2 cpoint = canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(mm->get_position()));
- cpoint = node->get_global_transform().affine_inverse().xform(cpoint);
+ cpoint = original_transform.affine_inverse().xform(cpoint);
+ last_point = cpoint;
set_handle(edit_handle, cpoint);
return true;
}
+ Ref<InputEventKey> k = p_event;
+
+ if (k.is_valid()) {
+ if (edit_handle == -1 || !pressed || k->is_echo()) {
+ return false;
+ }
+
+ if (shape_type == RECTANGLE_SHAPE && k->get_keycode() == KEY_ALT) {
+ set_handle(edit_handle, last_point); // Update handle when Alt key is toggled.
+ }
+ }
+
return false;
}
@@ -492,15 +520,12 @@ void CollisionShape2DEditor::forward_canvas_draw_over_viewport(Control *p_overla
case RECTANGLE_SHAPE: {
Ref<RectangleShape2D> shape = node->get_shape();
- handles.resize(3);
+ handles.resize(8);
Vector2 ext = shape->get_size() / 2;
- handles.write[0] = Point2(ext.x, 0);
- handles.write[1] = Point2(0, ext.y);
- handles.write[2] = Point2(ext.x, ext.y);
-
- p_overlay->draw_texture(h, gt.xform(handles[0]) - size);
- p_overlay->draw_texture(h, gt.xform(handles[1]) - size);
- p_overlay->draw_texture(h, gt.xform(handles[2]) - size);
+ for (int i = 0; i < handles.size(); i++) {
+ handles.write[i] = RECT_HANDLES[i] * ext;
+ p_overlay->draw_texture(h, gt.xform(handles[i]) - size);
+ }
} break;
diff --git a/editor/plugins/collision_shape_2d_editor_plugin.h b/editor/plugins/collision_shape_2d_editor_plugin.h
index 054db1a61b..7db6bd22aa 100644
--- a/editor/plugins/collision_shape_2d_editor_plugin.h
+++ b/editor/plugins/collision_shape_2d_editor_plugin.h
@@ -52,6 +52,17 @@ class CollisionShape2DEditor : public Control {
SEGMENT_SHAPE
};
+ const Point2 RECT_HANDLES[8] = {
+ Point2(1, 0),
+ Point2(1, 1),
+ Point2(0, 1),
+ Point2(-1, 1),
+ Point2(-1, 0),
+ Point2(-1, -1),
+ Point2(0, -1),
+ Point2(1, -1),
+ };
+
EditorNode *editor;
UndoRedo *undo_redo;
CanvasItemEditor *canvas_item_editor;
@@ -63,6 +74,8 @@ class CollisionShape2DEditor : public Control {
int edit_handle;
bool pressed;
Variant original;
+ Transform2D original_transform;
+ Point2 last_point;
Variant get_handle_value(int idx) const;
void set_handle(int idx, Point2 &p_point);
diff --git a/editor/plugins/cpu_particles_2d_editor_plugin.cpp b/editor/plugins/cpu_particles_2d_editor_plugin.cpp
index c4deb296fb..6f246c1661 100644
--- a/editor/plugins/cpu_particles_2d_editor_plugin.cpp
+++ b/editor/plugins/cpu_particles_2d_editor_plugin.cpp
@@ -253,8 +253,8 @@ CPUParticles2DEditorPlugin::CPUParticles2DEditorPlugin(EditorNode *p_node) {
file = memnew(EditorFileDialog);
List<String> ext;
ImageLoader::get_recognized_extensions(&ext);
- for (List<String>::Element *E = ext.front(); E; E = E->next()) {
- file->add_filter("*." + E->get() + "; " + E->get().to_upper());
+ for (const String &E : ext) {
+ file->add_filter("*." + E + "; " + E.to_upper());
}
file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE);
toolbar->add_child(file);
diff --git a/editor/plugins/editor_debugger_plugin.cpp b/editor/plugins/editor_debugger_plugin.cpp
index 89073b7189..5f3b11ac42 100644
--- a/editor/plugins/editor_debugger_plugin.cpp
+++ b/editor/plugins/editor_debugger_plugin.cpp
@@ -32,7 +32,7 @@
#include "editor/debugger/script_editor_debugger.h"
-void EditorDebuggerPlugin::_breaked(bool p_really_did, bool p_can_debug) {
+void EditorDebuggerPlugin::_breaked(bool p_really_did, bool p_can_debug, String p_message, bool p_has_stackdump) {
if (p_really_did) {
emit_signal(SNAME("breaked"), p_can_debug);
} else {
diff --git a/editor/plugins/editor_debugger_plugin.h b/editor/plugins/editor_debugger_plugin.h
index b33a8ed925..5995d790c5 100644
--- a/editor/plugins/editor_debugger_plugin.h
+++ b/editor/plugins/editor_debugger_plugin.h
@@ -41,7 +41,7 @@ class EditorDebuggerPlugin : public Control {
private:
ScriptEditorDebugger *debugger = nullptr;
- void _breaked(bool p_really_did, bool p_can_debug);
+ void _breaked(bool p_really_did, bool p_can_debug, String p_message, bool p_has_stackdump);
void _started();
void _stopped();
diff --git a/editor/plugins/editor_preview_plugins.cpp b/editor/plugins/editor_preview_plugins.cpp
index a233d66d82..d7618b973e 100644
--- a/editor/plugins/editor_preview_plugins.cpp
+++ b/editor/plugins/editor_preview_plugins.cpp
@@ -490,11 +490,11 @@ Ref<Texture2D> EditorScriptPreviewPlugin::generate(const RES &p_from, const Size
Set<String> control_flow_keywords;
Set<String> keywords;
- for (List<String>::Element *E = kwors.front(); E; E = E->next()) {
- if (scr->get_language()->is_control_flow_keyword(E->get())) {
- control_flow_keywords.insert(E->get());
+ for (const String &E : kwors) {
+ if (scr->get_language()->is_control_flow_keyword(E)) {
+ control_flow_keywords.insert(E);
} else {
- keywords.insert(E->get());
+ keywords.insert(E);
}
}
@@ -724,7 +724,7 @@ Ref<Texture2D> EditorMeshPreviewPlugin::generate(const RES &p_from, const Size2
xform.basis = Basis().rotated(Vector3(0, 1, 0), -Math_PI * 0.125);
xform.basis = Basis().rotated(Vector3(1, 0, 0), Math_PI * 0.125) * xform.basis;
AABB rot_aabb = xform.xform(aabb);
- float m = MAX(rot_aabb.size.x, rot_aabb.size.y) * 0.5;
+ real_t m = MAX(rot_aabb.size.x, rot_aabb.size.y) * 0.5;
if (m == 0) {
return Ref<Texture2D>();
}
diff --git a/editor/plugins/gpu_particles_2d_editor_plugin.cpp b/editor/plugins/gpu_particles_2d_editor_plugin.cpp
index cc5793a1f9..5184e837ce 100644
--- a/editor/plugins/gpu_particles_2d_editor_plugin.cpp
+++ b/editor/plugins/gpu_particles_2d_editor_plugin.cpp
@@ -361,8 +361,8 @@ GPUParticles2DEditorPlugin::GPUParticles2DEditorPlugin(EditorNode *p_node) {
file = memnew(EditorFileDialog);
List<String> ext;
ImageLoader::get_recognized_extensions(&ext);
- for (List<String>::Element *E = ext.front(); E; E = E->next()) {
- file->add_filter("*." + E->get() + "; " + E->get().to_upper());
+ for (const String &E : ext) {
+ file->add_filter("*." + E + "; " + E.to_upper());
}
file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE);
toolbar->add_child(file);
diff --git a/editor/plugins/material_editor_plugin.cpp b/editor/plugins/material_editor_plugin.cpp
index 7105d351b0..94966d4fe6 100644
--- a/editor/plugins/material_editor_plugin.cpp
+++ b/editor/plugins/material_editor_plugin.cpp
@@ -265,15 +265,15 @@ Ref<Resource> StandardMaterial3DConversionPlugin::convert(const Ref<Resource> &p
List<PropertyInfo> params;
RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
- for (List<PropertyInfo>::Element *E = params.front(); E; E = E->next()) {
+ for (const PropertyInfo &E : params) {
// Texture parameter has to be treated specially since StandardMaterial3D saved it
// as RID but ShaderMaterial needs Texture itself
- Ref<Texture2D> texture = mat->get_texture_by_name(E->get().name);
+ Ref<Texture2D> texture = mat->get_texture_by_name(E.name);
if (texture.is_valid()) {
- smat->set_shader_param(E->get().name, texture);
+ smat->set_shader_param(E.name, texture);
} else {
- Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E->get().name);
- smat->set_shader_param(E->get().name, value);
+ Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E.name);
+ smat->set_shader_param(E.name, value);
}
}
@@ -309,9 +309,9 @@ Ref<Resource> ParticlesMaterialConversionPlugin::convert(const Ref<Resource> &p_
List<PropertyInfo> params;
RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
- for (List<PropertyInfo>::Element *E = params.front(); E; E = E->next()) {
- Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E->get().name);
- smat->set_shader_param(E->get().name, value);
+ for (const PropertyInfo &E : params) {
+ Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E.name);
+ smat->set_shader_param(E.name, value);
}
smat->set_render_priority(mat->get_render_priority());
@@ -346,9 +346,9 @@ Ref<Resource> CanvasItemMaterialConversionPlugin::convert(const Ref<Resource> &p
List<PropertyInfo> params;
RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
- for (List<PropertyInfo>::Element *E = params.front(); E; E = E->next()) {
- Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E->get().name);
- smat->set_shader_param(E->get().name, value);
+ for (const PropertyInfo &E : params) {
+ Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E.name);
+ smat->set_shader_param(E.name, value);
}
smat->set_render_priority(mat->get_render_priority());
@@ -383,9 +383,9 @@ Ref<Resource> ProceduralSkyMaterialConversionPlugin::convert(const Ref<Resource>
List<PropertyInfo> params;
RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
- for (List<PropertyInfo>::Element *E = params.front(); E; E = E->next()) {
- Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E->get().name);
- smat->set_shader_param(E->get().name, value);
+ for (const PropertyInfo &E : params) {
+ Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E.name);
+ smat->set_shader_param(E.name, value);
}
smat->set_render_priority(mat->get_render_priority());
@@ -420,9 +420,9 @@ Ref<Resource> PanoramaSkyMaterialConversionPlugin::convert(const Ref<Resource> &
List<PropertyInfo> params;
RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
- for (List<PropertyInfo>::Element *E = params.front(); E; E = E->next()) {
- Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E->get().name);
- smat->set_shader_param(E->get().name, value);
+ for (const PropertyInfo &E : params) {
+ Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E.name);
+ smat->set_shader_param(E.name, value);
}
smat->set_render_priority(mat->get_render_priority());
@@ -457,9 +457,9 @@ Ref<Resource> PhysicalSkyMaterialConversionPlugin::convert(const Ref<Resource> &
List<PropertyInfo> params;
RS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
- for (List<PropertyInfo>::Element *E = params.front(); E; E = E->next()) {
- Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E->get().name);
- smat->set_shader_param(E->get().name, value);
+ for (const PropertyInfo &E : params) {
+ Variant value = RS::get_singleton()->material_get_param(mat->get_rid(), E.name);
+ smat->set_shader_param(E.name, value);
}
smat->set_render_priority(mat->get_render_priority());
diff --git a/editor/plugins/mesh_instance_3d_editor_plugin.cpp b/editor/plugins/mesh_instance_3d_editor_plugin.cpp
index 91415f4883..9a2b222f21 100644
--- a/editor/plugins/mesh_instance_3d_editor_plugin.cpp
+++ b/editor/plugins/mesh_instance_3d_editor_plugin.cpp
@@ -90,8 +90,8 @@ void MeshInstance3DEditor::_menu_option(int p_option) {
ur->create_action(TTR("Create Static Trimesh Body"));
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- MeshInstance3D *instance = Object::cast_to<MeshInstance3D>(E->get());
+ for (Node *E : selection) {
+ MeshInstance3D *instance = Object::cast_to<MeshInstance3D>(E);
if (!instance) {
continue;
}
@@ -332,7 +332,7 @@ void MeshInstance3DEditor::_create_uv_lines(int p_layer) {
Vector<Vector2> uv = a[p_layer == 0 ? Mesh::ARRAY_TEX_UV : Mesh::ARRAY_TEX_UV2];
if (uv.size() == 0) {
- err_dialog->set_text(TTR("Model has no UV in this layer"));
+ err_dialog->set_text(vformat(TTR("Mesh has no UV in layer %d."), p_layer + 1));
err_dialog->popup_centered();
return;
}
@@ -382,9 +382,10 @@ void MeshInstance3DEditor::_debug_uv_draw() {
}
debug_uv->set_clip_contents(true);
- debug_uv->draw_rect(Rect2(Vector2(), debug_uv->get_size()), Color(0.2, 0.2, 0.0));
+ debug_uv->draw_rect(Rect2(Vector2(), debug_uv->get_size()), get_theme_color(SNAME("dark_color_3"), SNAME("Editor")));
debug_uv->draw_set_transform(Vector2(), 0, debug_uv->get_size());
- debug_uv->draw_multiline(uv_lines, Color(1.0, 0.8, 0.7));
+ // Use a translucent color to allow overlapping triangles to be visible.
+ debug_uv->draw_multiline(uv_lines, get_theme_color(SNAME("mono_color"), SNAME("Editor")) * Color(1, 1, 1, 0.5), Math::round(EDSCALE));
}
void MeshInstance3DEditor::_create_outline_mesh() {
diff --git a/editor/plugins/mesh_library_editor_plugin.cpp b/editor/plugins/mesh_library_editor_plugin.cpp
index 15b6a0f3a0..b3f92c9d95 100644
--- a/editor/plugins/mesh_library_editor_plugin.cpp
+++ b/editor/plugins/mesh_library_editor_plugin.cpp
@@ -122,23 +122,23 @@ void MeshLibraryEditor::_import_scene(Node *p_scene, Ref<MeshLibrary> p_library,
List<uint32_t> shapes;
sb->get_shape_owners(&shapes);
- for (List<uint32_t>::Element *E = shapes.front(); E; E = E->next()) {
- if (sb->is_shape_owner_disabled(E->get())) {
+ for (uint32_t &E : shapes) {
+ if (sb->is_shape_owner_disabled(E)) {
continue;
}
- //Transform3D shape_transform = sb->shape_owner_get_transform(E->get());
+ //Transform3D shape_transform = sb->shape_owner_get_transform(E);
//shape_transform.set_origin(shape_transform.get_origin() - phys_offset);
- for (int k = 0; k < sb->shape_owner_get_shape_count(E->get()); k++) {
- Ref<Shape3D> collision = sb->shape_owner_get_shape(E->get(), k);
+ for (int k = 0; k < sb->shape_owner_get_shape_count(E); k++) {
+ Ref<Shape3D> collision = sb->shape_owner_get_shape(E, k);
if (!collision.is_valid()) {
continue;
}
MeshLibrary::ShapeData shape_data;
shape_data.shape = collision;
- shape_data.local_transform = sb->get_transform() * sb->shape_owner_get_transform(E->get());
+ shape_data.local_transform = sb->get_transform() * sb->shape_owner_get_transform(E);
collisions.push_back(shape_data);
}
}
diff --git a/editor/node_3d_editor_gizmos.cpp b/editor/plugins/node_3d_editor_gizmos.cpp
index 74fb38b66b..46e15d97bf 100644
--- a/editor/node_3d_editor_gizmos.cpp
+++ b/editor/plugins/node_3d_editor_gizmos.cpp
@@ -33,7 +33,9 @@
#include "core/math/convex_hull.h"
#include "core/math/geometry_2d.h"
#include "core/math/geometry_3d.h"
+#include "editor/plugins/node_3d_editor_plugin.h"
#include "scene/3d/audio_stream_player_3d.h"
+#include "scene/3d/camera_3d.h"
#include "scene/3d/collision_polygon_3d.h"
#include "scene/3d/collision_shape_3d.h"
#include "scene/3d/cpu_particles_3d.h"
@@ -106,58 +108,122 @@ void EditorNode3DGizmo::clear() {
void EditorNode3DGizmo::redraw() {
if (get_script_instance() && get_script_instance()->has_method("_redraw")) {
get_script_instance()->call("_redraw");
- return;
+ } else {
+ ERR_FAIL_COND(!gizmo_plugin);
+ gizmo_plugin->redraw(this);
}
- ERR_FAIL_COND(!gizmo_plugin);
- gizmo_plugin->redraw(this);
+ if (Node3DEditor::get_singleton()->is_current_selected_gizmo(this)) {
+ Node3DEditor::get_singleton()->update_transform_gizmo();
+ }
}
-String EditorNode3DGizmo::get_handle_name(int p_idx) const {
+String EditorNode3DGizmo::get_handle_name(int p_id) const {
if (get_script_instance() && get_script_instance()->has_method("_get_handle_name")) {
- return get_script_instance()->call("_get_handle_name", p_idx);
+ return get_script_instance()->call("_get_handle_name", p_id);
}
ERR_FAIL_COND_V(!gizmo_plugin, "");
- return gizmo_plugin->get_handle_name(this, p_idx);
+ return gizmo_plugin->get_handle_name(this, p_id);
}
-bool EditorNode3DGizmo::is_handle_highlighted(int p_idx) const {
+bool EditorNode3DGizmo::is_handle_highlighted(int p_id) const {
if (get_script_instance() && get_script_instance()->has_method("_is_handle_highlighted")) {
- return get_script_instance()->call("_is_handle_highlighted", p_idx);
+ return get_script_instance()->call("_is_handle_highlighted", p_id);
}
ERR_FAIL_COND_V(!gizmo_plugin, false);
- return gizmo_plugin->is_handle_highlighted(this, p_idx);
+ return gizmo_plugin->is_handle_highlighted(this, p_id);
}
-Variant EditorNode3DGizmo::get_handle_value(int p_idx) {
+Variant EditorNode3DGizmo::get_handle_value(int p_id) const {
if (get_script_instance() && get_script_instance()->has_method("_get_handle_value")) {
- return get_script_instance()->call("_get_handle_value", p_idx);
+ return get_script_instance()->call("_get_handle_value", p_id);
}
ERR_FAIL_COND_V(!gizmo_plugin, Variant());
- return gizmo_plugin->get_handle_value(this, p_idx);
+ return gizmo_plugin->get_handle_value(this, p_id);
}
-void EditorNode3DGizmo::set_handle(int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void EditorNode3DGizmo::set_handle(int p_id, Camera3D *p_camera, const Point2 &p_point) const {
if (get_script_instance() && get_script_instance()->has_method("_set_handle")) {
- get_script_instance()->call("_set_handle", p_idx, p_camera, p_point);
+ get_script_instance()->call("_set_handle", p_id, p_camera, p_point);
return;
}
ERR_FAIL_COND(!gizmo_plugin);
- gizmo_plugin->set_handle(this, p_idx, p_camera, p_point);
+ gizmo_plugin->set_handle(this, p_id, p_camera, p_point);
}
-void EditorNode3DGizmo::commit_handle(int p_idx, const Variant &p_restore, bool p_cancel) {
+void EditorNode3DGizmo::commit_handle(int p_id, const Variant &p_restore, bool p_cancel) const {
if (get_script_instance() && get_script_instance()->has_method("_commit_handle")) {
- get_script_instance()->call("_commit_handle", p_idx, p_restore, p_cancel);
+ get_script_instance()->call("_commit_handle", p_id, p_restore, p_cancel);
+ return;
+ }
+
+ ERR_FAIL_COND(!gizmo_plugin);
+ gizmo_plugin->commit_handle(this, p_id, p_restore, p_cancel);
+}
+
+int EditorNode3DGizmo::subgizmos_intersect_ray(Camera3D *p_camera, const Vector2 &p_point) const {
+ if (get_script_instance() && get_script_instance()->has_method("_subgizmos_intersect_ray")) {
+ return get_script_instance()->call("_subgizmos_intersect_ray", p_camera, p_point);
+ }
+
+ ERR_FAIL_COND_V(!gizmo_plugin, -1);
+ return gizmo_plugin->subgizmos_intersect_ray(this, p_camera, p_point);
+}
+
+Vector<int> EditorNode3DGizmo::subgizmos_intersect_frustum(const Camera3D *p_camera, const Vector<Plane> &p_frustum) const {
+ if (get_script_instance() && get_script_instance()->has_method("_subgizmos_intersect_frustum")) {
+ Array frustum;
+ for (int i = 0; i < p_frustum.size(); i++) {
+ frustum[i] = p_frustum[i];
+ }
+ return get_script_instance()->call("_subgizmos_intersect_frustum", p_camera, frustum);
+ }
+
+ ERR_FAIL_COND_V(!gizmo_plugin, Vector<int>());
+ return gizmo_plugin->subgizmos_intersect_frustum(this, p_camera, p_frustum);
+}
+
+Transform3D EditorNode3DGizmo::get_subgizmo_transform(int p_id) const {
+ if (get_script_instance() && get_script_instance()->has_method("_get_subgizmo_transform")) {
+ return get_script_instance()->call("_get_subgizmo_transform", p_id);
+ }
+
+ ERR_FAIL_COND_V(!gizmo_plugin, Transform3D());
+ return gizmo_plugin->get_subgizmo_transform(this, p_id);
+}
+
+void EditorNode3DGizmo::set_subgizmo_transform(int p_id, Transform3D p_transform) const {
+ if (get_script_instance() && get_script_instance()->has_method("_set_subgizmo_transform")) {
+ get_script_instance()->call("_set_subgizmo_transform", p_id, p_transform);
return;
}
ERR_FAIL_COND(!gizmo_plugin);
- gizmo_plugin->commit_handle(this, p_idx, p_restore, p_cancel);
+ gizmo_plugin->set_subgizmo_transform(this, p_id, p_transform);
+}
+
+void EditorNode3DGizmo::commit_subgizmos(const Vector<int> &p_ids, const Vector<Transform3D> &p_restore, bool p_cancel) const {
+ if (get_script_instance() && get_script_instance()->has_method("_commit_subgizmos")) {
+ Array ids;
+ for (int i = 0; i < p_ids.size(); i++) {
+ ids[i] = p_ids[i];
+ }
+
+ Array restore;
+ for (int i = 0; i < p_restore.size(); i++) {
+ restore[i] = p_restore[i];
+ }
+
+ get_script_instance()->call("_commit_subgizmos", ids, restore, p_cancel);
+ return;
+ }
+
+ ERR_FAIL_COND(!gizmo_plugin);
+ gizmo_plugin->commit_subgizmos(this, p_ids, p_restore, p_cancel);
}
void EditorNode3DGizmo::set_spatial_node(Node3D *p_node) {
@@ -180,17 +246,17 @@ void EditorNode3DGizmo::Instance::create_instance(Node3D *p_base, bool p_hidden)
RS::get_singleton()->instance_geometry_set_flag(instance, RS::INSTANCE_FLAG_IGNORE_OCCLUSION_CULLING, true);
}
-void EditorNode3DGizmo::add_mesh(const Ref<ArrayMesh> &p_mesh, bool p_billboard, const Ref<SkinReference> &p_skin_reference, const Ref<Material> &p_material) {
+void EditorNode3DGizmo::add_mesh(const Ref<ArrayMesh> &p_mesh, const Ref<Material> &p_material, const Transform3D &p_xform, const Ref<SkinReference> &p_skin_reference) {
ERR_FAIL_COND(!spatial_node);
Instance ins;
- ins.billboard = p_billboard;
ins.mesh = p_mesh;
ins.skin_reference = p_skin_reference;
ins.material = p_material;
+ ins.xform = p_xform;
if (valid) {
ins.create_instance(spatial_node, hidden);
- RS::get_singleton()->instance_set_transform(ins.instance, spatial_node->get_global_transform());
+ RS::get_singleton()->instance_set_transform(ins.instance, spatial_node->get_global_transform() * ins.xform);
if (ins.material.is_valid()) {
RS::get_singleton()->instance_geometry_set_material_override(ins.instance, p_material->get_rid());
}
@@ -245,7 +311,6 @@ void EditorNode3DGizmo::add_vertices(const Vector<Vector3> &p_vertices, const Re
}
}
- ins.billboard = p_billboard;
ins.mesh = mesh;
if (valid) {
ins.create_instance(spatial_node, hidden);
@@ -255,7 +320,7 @@ void EditorNode3DGizmo::add_vertices(const Vector<Vector3> &p_vertices, const Re
instances.push_back(ins);
}
-void EditorNode3DGizmo::add_unscaled_billboard(const Ref<Material> &p_material, float p_scale, const Color &p_modulate) {
+void EditorNode3DGizmo::add_unscaled_billboard(const Ref<Material> &p_material, real_t p_scale, const Color &p_modulate) {
ERR_FAIL_COND(!spatial_node);
Instance ins;
@@ -307,8 +372,6 @@ void EditorNode3DGizmo::add_unscaled_billboard(const Ref<Material> &p_material,
mesh->set_custom_aabb(AABB(Vector3(-selectable_icon_size, -selectable_icon_size, -selectable_icon_size) * 100.0f, Vector3(selectable_icon_size, selectable_icon_size, selectable_icon_size) * 200.0f));
ins.mesh = mesh;
- ins.unscaled = true;
- ins.billboard = true;
if (valid) {
ins.create_instance(spatial_node, hidden);
RS::get_singleton()->instance_set_transform(ins.instance, spatial_node->get_global_transform());
@@ -331,7 +394,7 @@ void EditorNode3DGizmo::add_collision_segments(const Vector<Vector3> &p_lines) {
}
}
-void EditorNode3DGizmo::add_handles(const Vector<Vector3> &p_handles, const Ref<Material> &p_material, bool p_billboard, bool p_secondary) {
+void EditorNode3DGizmo::add_handles(const Vector<Vector3> &p_handles, const Ref<Material> &p_material, const Vector<int> &p_ids, bool p_billboard, bool p_secondary) {
billboard_handle = p_billboard;
if (!is_selected() || !is_editable()) {
@@ -340,8 +403,16 @@ void EditorNode3DGizmo::add_handles(const Vector<Vector3> &p_handles, const Ref<
ERR_FAIL_COND(!spatial_node);
- Instance ins;
+ if (p_ids.is_empty()) {
+ ERR_FAIL_COND_MSG((!handles.is_empty() && !handle_ids.is_empty()) || (!secondary_handles.is_empty() && !secondary_handle_ids.is_empty()), "Fail");
+ } else {
+ ERR_FAIL_COND_MSG(handles.size() != handle_ids.size() || secondary_handles.size() != secondary_handle_ids.size(), "Fail");
+ }
+ bool is_current_hover_gizmo = Node3DEditor::get_singleton()->get_current_hover_gizmo() == this;
+ int current_hover_handle = Node3DEditor::get_singleton()->get_current_hover_gizmo_handle();
+
+ Instance ins;
Ref<ArrayMesh> mesh = memnew(ArrayMesh);
Array a;
@@ -357,7 +428,8 @@ void EditorNode3DGizmo::add_handles(const Vector<Vector3> &p_handles, const Ref<
col = Color(0, 0, 1, 0.9);
}
- if (Node3DEditor::get_singleton()->get_over_gizmo_handle() != i) {
+ int id = p_ids.is_empty() ? i : p_ids[i];
+ if (!is_current_hover_gizmo || current_hover_handle != id) {
col.a = 0.8;
}
@@ -379,29 +451,31 @@ void EditorNode3DGizmo::add_handles(const Vector<Vector3> &p_handles, const Ref<
}
ins.mesh = mesh;
- ins.billboard = p_billboard;
ins.extra_margin = true;
if (valid) {
ins.create_instance(spatial_node, hidden);
RS::get_singleton()->instance_set_transform(ins.instance, spatial_node->get_global_transform());
}
instances.push_back(ins);
- if (!p_secondary) {
- int chs = handles.size();
- handles.resize(chs + p_handles.size());
- for (int i = 0; i < p_handles.size(); i++) {
- handles.write[i + chs] = p_handles[i];
- }
- } else {
- int chs = secondary_handles.size();
- secondary_handles.resize(chs + p_handles.size());
- for (int i = 0; i < p_handles.size(); i++) {
- secondary_handles.write[i + chs] = p_handles[i];
+
+ Vector<Vector3> &h = p_secondary ? secondary_handles : handles;
+ int current_size = h.size();
+ h.resize(current_size + p_handles.size());
+ for (int i = 0; i < p_handles.size(); i++) {
+ h.write[current_size + i] = p_handles[i];
+ }
+
+ if (!p_ids.is_empty()) {
+ Vector<int> &ids = p_secondary ? secondary_handle_ids : handle_ids;
+ current_size = ids.size();
+ ids.resize(current_size + p_ids.size());
+ for (int i = 0; i < p_ids.size(); i++) {
+ ids.write[current_size + i] = p_ids[i];
}
}
}
-void EditorNode3DGizmo::add_solid_box(Ref<Material> &p_material, Vector3 p_size, Vector3 p_position) {
+void EditorNode3DGizmo::add_solid_box(Ref<Material> &p_material, Vector3 p_size, Vector3 p_position, const Transform3D &p_xform) {
ERR_FAIL_COND(!spatial_node);
BoxMesh box_mesh;
@@ -419,8 +493,7 @@ void EditorNode3DGizmo::add_solid_box(Ref<Material> &p_material, Vector3 p_size,
Ref<ArrayMesh> m = memnew(ArrayMesh);
m->add_surface_from_arrays(box_mesh.surface_get_primitive_type(0), arrays);
- m->surface_set_material(0, p_material);
- add_mesh(m);
+ add_mesh(m, p_material, p_xform);
}
bool EditorNode3DGizmo::intersect_frustum(const Camera3D *p_camera, const Vector<Plane> &p_frustum) {
@@ -485,13 +558,15 @@ bool EditorNode3DGizmo::intersect_frustum(const Camera3D *p_camera, const Vector
Transform3D it = t.affine_inverse();
Vector<Plane> transformed_frustum;
+ int plane_count = p_frustum.size();
+ transformed_frustum.resize(plane_count);
- for (int i = 0; i < p_frustum.size(); i++) {
- transformed_frustum.push_back(it.xform(p_frustum[i]));
+ for (int i = 0; i < plane_count; i++) {
+ transformed_frustum.write[i] = it.xform(p_frustum[i]);
}
- Vector<Vector3> convex_points = Geometry3D::compute_convex_mesh_points(p_frustum.ptr(), p_frustum.size());
- if (collision_mesh->inside_convex_shape(transformed_frustum.ptr(), transformed_frustum.size(), convex_points.ptr(), convex_points.size(), mesh_scale)) {
+ Vector<Vector3> convex_points = Geometry3D::compute_convex_mesh_points(transformed_frustum.ptr(), plane_count);
+ if (collision_mesh->inside_convex_shape(transformed_frustum.ptr(), plane_count, convex_points.ptr(), convex_points.size(), mesh_scale)) {
return true;
}
}
@@ -499,64 +574,71 @@ bool EditorNode3DGizmo::intersect_frustum(const Camera3D *p_camera, const Vector
return false;
}
-bool EditorNode3DGizmo::intersect_ray(Camera3D *p_camera, const Point2 &p_point, Vector3 &r_pos, Vector3 &r_normal, int *r_gizmo_handle, bool p_sec_first) {
- ERR_FAIL_COND_V(!spatial_node, false);
- ERR_FAIL_COND_V(!valid, false);
+void EditorNode3DGizmo::handles_intersect_ray(Camera3D *p_camera, const Vector2 &p_point, bool p_shift_pressed, int &r_id) {
+ r_id = -1;
- if (hidden && !gizmo_plugin->is_selectable_when_hidden()) {
- return false;
+ ERR_FAIL_COND(!spatial_node);
+ ERR_FAIL_COND(!valid);
+
+ if (hidden) {
+ return;
}
- if (r_gizmo_handle && !hidden) {
- Transform3D t = spatial_node->get_global_transform();
- if (billboard_handle) {
- t.set_look_at(t.origin, t.origin - p_camera->get_transform().basis.get_axis(2), p_camera->get_transform().basis.get_axis(1));
- }
+ Transform3D camera_xform = p_camera->get_global_transform();
+ Transform3D t = spatial_node->get_global_transform();
+ if (billboard_handle) {
+ t.set_look_at(t.origin, t.origin - camera_xform.basis.get_axis(2), camera_xform.basis.get_axis(1));
+ }
- float min_d = 1e20;
- int idx = -1;
+ float min_d = 1e20;
- for (int i = 0; i < secondary_handles.size(); i++) {
- Vector3 hpos = t.xform(secondary_handles[i]);
- Vector2 p = p_camera->unproject_position(hpos);
+ for (int i = 0; i < secondary_handles.size(); i++) {
+ Vector3 hpos = t.xform(secondary_handles[i]);
+ Vector2 p = p_camera->unproject_position(hpos);
- if (p.distance_to(p_point) < HANDLE_HALF_SIZE) {
- real_t dp = p_camera->get_transform().origin.distance_to(hpos);
- if (dp < min_d) {
- r_pos = t.xform(hpos);
- r_normal = p_camera->get_transform().basis.get_axis(2);
- min_d = dp;
- idx = i + handles.size();
+ if (p.distance_to(p_point) < HANDLE_HALF_SIZE) {
+ real_t dp = p_camera->get_transform().origin.distance_to(hpos);
+ if (dp < min_d) {
+ min_d = dp;
+ if (secondary_handle_ids.is_empty()) {
+ r_id = i;
+ } else {
+ r_id = secondary_handle_ids[i];
}
}
}
+ }
- if (p_sec_first && idx != -1) {
- *r_gizmo_handle = idx;
- return true;
- }
+ if (r_id != -1 && p_shift_pressed) {
+ return;
+ }
- min_d = 1e20;
+ min_d = 1e20;
- for (int i = 0; i < handles.size(); i++) {
- Vector3 hpos = t.xform(handles[i]);
- Vector2 p = p_camera->unproject_position(hpos);
+ for (int i = 0; i < handles.size(); i++) {
+ Vector3 hpos = t.xform(handles[i]);
+ Vector2 p = p_camera->unproject_position(hpos);
- if (p.distance_to(p_point) < HANDLE_HALF_SIZE) {
- real_t dp = p_camera->get_transform().origin.distance_to(hpos);
- if (dp < min_d) {
- r_pos = t.xform(hpos);
- r_normal = p_camera->get_transform().basis.get_axis(2);
- min_d = dp;
- idx = i;
+ if (p.distance_to(p_point) < HANDLE_HALF_SIZE) {
+ real_t dp = p_camera->get_transform().origin.distance_to(hpos);
+ if (dp < min_d) {
+ min_d = dp;
+ if (handle_ids.is_empty()) {
+ r_id = i;
+ } else {
+ r_id = handle_ids[i];
}
}
}
+ }
+}
- if (idx >= 0) {
- *r_gizmo_handle = idx;
- return true;
- }
+bool EditorNode3DGizmo::intersect_ray(Camera3D *p_camera, const Point2 &p_point, Vector3 &r_pos, Vector3 &r_normal) {
+ ERR_FAIL_COND_V(!spatial_node, false);
+ ERR_FAIL_COND_V(!valid, false);
+
+ if (hidden && !gizmo_plugin->is_selectable_when_hidden()) {
+ return false;
}
if (selectable_icon_size > 0.0f) {
@@ -674,6 +756,25 @@ bool EditorNode3DGizmo::intersect_ray(Camera3D *p_camera, const Point2 &p_point,
return false;
}
+bool EditorNode3DGizmo::is_subgizmo_selected(int p_id) const {
+ Node3DEditor *ed = Node3DEditor::get_singleton();
+ ERR_FAIL_COND_V(!ed, false);
+ return ed->is_current_selected_gizmo(this) && ed->is_subgizmo_selected(p_id);
+}
+
+Vector<int> EditorNode3DGizmo::get_subgizmo_selection() const {
+ Vector<int> ret;
+
+ Node3DEditor *ed = Node3DEditor::get_singleton();
+ ERR_FAIL_COND_V(!ed, ret);
+
+ if (ed->is_current_selected_gizmo(this)) {
+ ret = ed->get_subgizmo_selection();
+ }
+
+ return ret;
+}
+
void EditorNode3DGizmo::create() {
ERR_FAIL_COND(!spatial_node);
ERR_FAIL_COND(valid);
@@ -690,7 +791,7 @@ void EditorNode3DGizmo::transform() {
ERR_FAIL_COND(!spatial_node);
ERR_FAIL_COND(!valid);
for (int i = 0; i < instances.size(); i++) {
- RS::get_singleton()->instance_set_transform(instances[i].instance, spatial_node->get_global_transform());
+ RS::get_singleton()->instance_set_transform(instances[i].instance, spatial_node->get_global_transform() * instances[i].xform);
}
}
@@ -724,38 +825,46 @@ void EditorNode3DGizmo::set_plugin(EditorNode3DGizmoPlugin *p_plugin) {
void EditorNode3DGizmo::_bind_methods() {
ClassDB::bind_method(D_METHOD("add_lines", "lines", "material", "billboard", "modulate"), &EditorNode3DGizmo::add_lines, DEFVAL(false), DEFVAL(Color(1, 1, 1)));
- ClassDB::bind_method(D_METHOD("add_mesh", "mesh", "billboard", "skeleton", "material"), &EditorNode3DGizmo::add_mesh, DEFVAL(false), DEFVAL(Ref<SkinReference>()), DEFVAL(Variant()));
+ ClassDB::bind_method(D_METHOD("add_mesh", "mesh", "material", "transform", "skeleton"), &EditorNode3DGizmo::add_mesh, DEFVAL(Variant()), DEFVAL(Transform3D()), DEFVAL(Ref<SkinReference>()));
ClassDB::bind_method(D_METHOD("add_collision_segments", "segments"), &EditorNode3DGizmo::add_collision_segments);
ClassDB::bind_method(D_METHOD("add_collision_triangles", "triangles"), &EditorNode3DGizmo::add_collision_triangles);
ClassDB::bind_method(D_METHOD("add_unscaled_billboard", "material", "default_scale", "modulate"), &EditorNode3DGizmo::add_unscaled_billboard, DEFVAL(1), DEFVAL(Color(1, 1, 1)));
- ClassDB::bind_method(D_METHOD("add_handles", "handles", "material", "billboard", "secondary"), &EditorNode3DGizmo::add_handles, DEFVAL(false), DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("add_handles", "handles", "material", "ids", "billboard", "secondary"), &EditorNode3DGizmo::add_handles, DEFVAL(false), DEFVAL(false));
ClassDB::bind_method(D_METHOD("set_spatial_node", "node"), &EditorNode3DGizmo::_set_spatial_node);
ClassDB::bind_method(D_METHOD("get_spatial_node"), &EditorNode3DGizmo::get_spatial_node);
ClassDB::bind_method(D_METHOD("get_plugin"), &EditorNode3DGizmo::get_plugin);
ClassDB::bind_method(D_METHOD("clear"), &EditorNode3DGizmo::clear);
ClassDB::bind_method(D_METHOD("set_hidden", "hidden"), &EditorNode3DGizmo::set_hidden);
+ ClassDB::bind_method(D_METHOD("is_subgizmo_selected"), &EditorNode3DGizmo::is_subgizmo_selected);
+ ClassDB::bind_method(D_METHOD("get_subgizmo_selection"), &EditorNode3DGizmo::get_subgizmo_selection);
BIND_VMETHOD(MethodInfo("_redraw"));
- BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_handle_name", PropertyInfo(Variant::INT, "index")));
- BIND_VMETHOD(MethodInfo(Variant::BOOL, "_is_handle_highlighted", PropertyInfo(Variant::INT, "index")));
+ BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_handle_name", PropertyInfo(Variant::INT, "id")));
+ BIND_VMETHOD(MethodInfo(Variant::BOOL, "_is_handle_highlighted", PropertyInfo(Variant::INT, "id")));
- MethodInfo hvget(Variant::NIL, "_get_handle_value", PropertyInfo(Variant::INT, "index"));
+ MethodInfo hvget(Variant::NIL, "_get_handle_value", PropertyInfo(Variant::INT, "id"));
hvget.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
BIND_VMETHOD(hvget);
- BIND_VMETHOD(MethodInfo("_set_handle", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera3D"), PropertyInfo(Variant::VECTOR2, "point")));
- MethodInfo cm = MethodInfo("_commit_handle", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::NIL, "restore"), PropertyInfo(Variant::BOOL, "cancel"));
+ BIND_VMETHOD(MethodInfo("_set_handle", PropertyInfo(Variant::INT, "id"), PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera3D"), PropertyInfo(Variant::VECTOR2, "point")));
+ MethodInfo cm = MethodInfo("_commit_handle", PropertyInfo(Variant::INT, "id"), PropertyInfo(Variant::NIL, "restore"), PropertyInfo(Variant::BOOL, "cancel"));
cm.default_arguments.push_back(false);
BIND_VMETHOD(cm);
+
+ BIND_VMETHOD(MethodInfo(Variant::INT, "_subgizmos_intersect_ray", PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera3D"), PropertyInfo(Variant::VECTOR2, "point")));
+ BIND_VMETHOD(MethodInfo(Variant::PACKED_INT32_ARRAY, "_subgizmos_intersect_frustum", PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera3D"), PropertyInfo(Variant::ARRAY, "frustum")));
+ BIND_VMETHOD(MethodInfo(Variant::TRANSFORM3D, "_get_subgizmo_transform", PropertyInfo(Variant::INT, "id")));
+ BIND_VMETHOD(MethodInfo("_set_subgizmo_transform", PropertyInfo(Variant::INT, "id"), PropertyInfo(Variant::TRANSFORM3D, "transform")));
+ MethodInfo cs = MethodInfo("_commit_subgizmos", PropertyInfo(Variant::PACKED_INT32_ARRAY, "ids"), PropertyInfo(Variant::ARRAY, "restore"), PropertyInfo(Variant::BOOL, "cancel"));
+ cs.default_arguments.push_back(false);
+ BIND_VMETHOD(cs);
}
EditorNode3DGizmo::EditorNode3DGizmo() {
valid = false;
billboard_handle = false;
hidden = false;
- base = nullptr;
selected = false;
- instantiated = false;
spatial_node = nullptr;
gizmo_plugin = nullptr;
selectable_icon_size = -1.0f;
@@ -768,10 +877,362 @@ EditorNode3DGizmo::~EditorNode3DGizmo() {
clear();
}
-Vector3 EditorNode3DGizmo::get_handle_pos(int p_idx) const {
- ERR_FAIL_INDEX_V(p_idx, handles.size(), Vector3());
+/////
+
+void EditorNode3DGizmoPlugin::create_material(const String &p_name, const Color &p_color, bool p_billboard, bool p_on_top, bool p_use_vertex_color) {
+ Color instantiated_color = EDITOR_DEF("editors/3d_gizmos/gizmo_colors/instantiated", Color(0.7, 0.7, 0.7, 0.6));
+
+ Vector<Ref<StandardMaterial3D>> mats;
+
+ for (int i = 0; i < 4; i++) {
+ bool selected = i % 2 == 1;
+ bool instantiated = i < 2;
+
+ Ref<StandardMaterial3D> material = Ref<StandardMaterial3D>(memnew(StandardMaterial3D));
- return handles[p_idx];
+ Color color = instantiated ? instantiated_color : p_color;
+
+ if (!selected) {
+ color.a *= 0.3;
+ }
+
+ material->set_albedo(color);
+ material->set_shading_mode(StandardMaterial3D::SHADING_MODE_UNSHADED);
+ material->set_transparency(StandardMaterial3D::TRANSPARENCY_ALPHA);
+ material->set_render_priority(StandardMaterial3D::RENDER_PRIORITY_MIN + 1);
+ material->set_cull_mode(StandardMaterial3D::CULL_DISABLED);
+
+ if (p_use_vertex_color) {
+ material->set_flag(StandardMaterial3D::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
+ material->set_flag(StandardMaterial3D::FLAG_SRGB_VERTEX_COLOR, true);
+ }
+
+ if (p_billboard) {
+ material->set_billboard_mode(StandardMaterial3D::BILLBOARD_ENABLED);
+ }
+
+ if (p_on_top && selected) {
+ material->set_on_top_of_alpha();
+ }
+
+ mats.push_back(material);
+ }
+
+ materials[p_name] = mats;
+}
+
+void EditorNode3DGizmoPlugin::create_icon_material(const String &p_name, const Ref<Texture2D> &p_texture, bool p_on_top, const Color &p_albedo) {
+ Color instantiated_color = EDITOR_DEF("editors/3d_gizmos/gizmo_colors/instantiated", Color(0.7, 0.7, 0.7, 0.6));
+
+ Vector<Ref<StandardMaterial3D>> icons;
+
+ for (int i = 0; i < 4; i++) {
+ bool selected = i % 2 == 1;
+ bool instantiated = i < 2;
+
+ Ref<StandardMaterial3D> icon = Ref<StandardMaterial3D>(memnew(StandardMaterial3D));
+
+ Color color = instantiated ? instantiated_color : p_albedo;
+
+ if (!selected) {
+ color.a *= 0.85;
+ }
+
+ icon->set_albedo(color);
+
+ icon->set_shading_mode(StandardMaterial3D::SHADING_MODE_UNSHADED);
+ icon->set_flag(StandardMaterial3D::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
+ icon->set_flag(StandardMaterial3D::FLAG_SRGB_VERTEX_COLOR, true);
+ icon->set_cull_mode(StandardMaterial3D::CULL_DISABLED);
+ icon->set_depth_draw_mode(StandardMaterial3D::DEPTH_DRAW_DISABLED);
+ icon->set_transparency(StandardMaterial3D::TRANSPARENCY_ALPHA);
+ icon->set_texture(StandardMaterial3D::TEXTURE_ALBEDO, p_texture);
+ icon->set_flag(StandardMaterial3D::FLAG_FIXED_SIZE, true);
+ icon->set_billboard_mode(StandardMaterial3D::BILLBOARD_ENABLED);
+ icon->set_render_priority(StandardMaterial3D::RENDER_PRIORITY_MIN);
+
+ if (p_on_top && selected) {
+ icon->set_on_top_of_alpha();
+ }
+
+ icons.push_back(icon);
+ }
+
+ materials[p_name] = icons;
+}
+
+void EditorNode3DGizmoPlugin::create_handle_material(const String &p_name, bool p_billboard, const Ref<Texture2D> &p_icon) {
+ Ref<StandardMaterial3D> handle_material = Ref<StandardMaterial3D>(memnew(StandardMaterial3D));
+
+ handle_material->set_shading_mode(StandardMaterial3D::SHADING_MODE_UNSHADED);
+ handle_material->set_flag(StandardMaterial3D::FLAG_USE_POINT_SIZE, true);
+ Ref<Texture2D> handle_t = p_icon != nullptr ? p_icon : Node3DEditor::get_singleton()->get_theme_icon(SNAME("Editor3DHandle"), SNAME("EditorIcons"));
+ handle_material->set_point_size(handle_t->get_width());
+ handle_material->set_texture(StandardMaterial3D::TEXTURE_ALBEDO, handle_t);
+ handle_material->set_albedo(Color(1, 1, 1));
+ handle_material->set_flag(StandardMaterial3D::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
+ handle_material->set_flag(StandardMaterial3D::FLAG_SRGB_VERTEX_COLOR, true);
+ handle_material->set_on_top_of_alpha();
+ if (p_billboard) {
+ handle_material->set_billboard_mode(StandardMaterial3D::BILLBOARD_ENABLED);
+ handle_material->set_on_top_of_alpha();
+ }
+ handle_material->set_transparency(StandardMaterial3D::TRANSPARENCY_ALPHA);
+
+ materials[p_name] = Vector<Ref<StandardMaterial3D>>();
+ materials[p_name].push_back(handle_material);
+}
+
+void EditorNode3DGizmoPlugin::add_material(const String &p_name, Ref<StandardMaterial3D> p_material) {
+ materials[p_name] = Vector<Ref<StandardMaterial3D>>();
+ materials[p_name].push_back(p_material);
+}
+
+Ref<StandardMaterial3D> EditorNode3DGizmoPlugin::get_material(const String &p_name, const Ref<EditorNode3DGizmo> &p_gizmo) {
+ ERR_FAIL_COND_V(!materials.has(p_name), Ref<StandardMaterial3D>());
+ ERR_FAIL_COND_V(materials[p_name].size() == 0, Ref<StandardMaterial3D>());
+
+ if (p_gizmo.is_null() || materials[p_name].size() == 1) {
+ return materials[p_name][0];
+ }
+
+ int index = (p_gizmo->is_selected() ? 1 : 0) + (p_gizmo->is_editable() ? 2 : 0);
+
+ Ref<StandardMaterial3D> mat = materials[p_name][index];
+
+ if (current_state == ON_TOP && p_gizmo->is_selected()) {
+ mat->set_flag(StandardMaterial3D::FLAG_DISABLE_DEPTH_TEST, true);
+ } else {
+ mat->set_flag(StandardMaterial3D::FLAG_DISABLE_DEPTH_TEST, false);
+ }
+
+ return mat;
+}
+
+String EditorNode3DGizmoPlugin::get_gizmo_name() const {
+ if (get_script_instance() && get_script_instance()->has_method("_get_gizmo_name")) {
+ return get_script_instance()->call("_get_gizmo_name");
+ }
+ return TTR("Nameless gizmo");
+}
+
+int EditorNode3DGizmoPlugin::get_priority() const {
+ if (get_script_instance() && get_script_instance()->has_method("_get_priority")) {
+ return get_script_instance()->call("_get_priority");
+ }
+ return 0;
+}
+
+Ref<EditorNode3DGizmo> EditorNode3DGizmoPlugin::get_gizmo(Node3D *p_spatial) {
+ if (get_script_instance() && get_script_instance()->has_method("_get_gizmo")) {
+ return get_script_instance()->call("_get_gizmo", p_spatial);
+ }
+
+ Ref<EditorNode3DGizmo> ref = create_gizmo(p_spatial);
+
+ if (ref.is_null()) {
+ return ref;
+ }
+
+ ref->set_plugin(this);
+ ref->set_spatial_node(p_spatial);
+ ref->set_hidden(current_state == HIDDEN);
+
+ current_gizmos.push_back(ref.ptr());
+ return ref;
+}
+
+void EditorNode3DGizmoPlugin::_bind_methods() {
+#define GIZMO_REF PropertyInfo(Variant::OBJECT, "gizmo", PROPERTY_HINT_RESOURCE_TYPE, "EditorNode3DGizmo")
+
+ BIND_VMETHOD(MethodInfo(Variant::BOOL, "_has_gizmo", PropertyInfo(Variant::OBJECT, "spatial", PROPERTY_HINT_RESOURCE_TYPE, "Node3D")));
+ BIND_VMETHOD(MethodInfo(GIZMO_REF, "_create_gizmo", PropertyInfo(Variant::OBJECT, "spatial", PROPERTY_HINT_RESOURCE_TYPE, "Node3D")));
+
+ ClassDB::bind_method(D_METHOD("create_material", "name", "color", "billboard", "on_top", "use_vertex_color"), &EditorNode3DGizmoPlugin::create_material, DEFVAL(false), DEFVAL(false), DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("create_icon_material", "name", "texture", "on_top", "color"), &EditorNode3DGizmoPlugin::create_icon_material, DEFVAL(false), DEFVAL(Color(1, 1, 1, 1)));
+ ClassDB::bind_method(D_METHOD("create_handle_material", "name", "billboard", "texture"), &EditorNode3DGizmoPlugin::create_handle_material, DEFVAL(false), DEFVAL(Variant()));
+ ClassDB::bind_method(D_METHOD("add_material", "name", "material"), &EditorNode3DGizmoPlugin::add_material);
+
+ ClassDB::bind_method(D_METHOD("get_material", "name", "gizmo"), &EditorNode3DGizmoPlugin::get_material, DEFVAL(Ref<EditorNode3DGizmo>()));
+
+ BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_gizmo_name"));
+ BIND_VMETHOD(MethodInfo(Variant::INT, "_get_priority"));
+ BIND_VMETHOD(MethodInfo(Variant::BOOL, "_can_be_hidden"));
+ BIND_VMETHOD(MethodInfo(Variant::BOOL, "_is_selectable_when_hidden"));
+
+ BIND_VMETHOD(MethodInfo("_redraw", GIZMO_REF));
+ BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_handle_name", GIZMO_REF, PropertyInfo(Variant::INT, "id")));
+ BIND_VMETHOD(MethodInfo(Variant::BOOL, "_is_handle_highlighted", GIZMO_REF, PropertyInfo(Variant::INT, "id")));
+
+ MethodInfo hvget(Variant::NIL, "_get_handle_value", GIZMO_REF, PropertyInfo(Variant::INT, "id"));
+ hvget.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
+ BIND_VMETHOD(hvget);
+
+ BIND_VMETHOD(MethodInfo("_set_handle", GIZMO_REF, PropertyInfo(Variant::INT, "id"), PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera3D"), PropertyInfo(Variant::VECTOR2, "point")));
+ MethodInfo cm = MethodInfo("_commit_handle", GIZMO_REF, PropertyInfo(Variant::INT, "id"), PropertyInfo(Variant::NIL, "restore"), PropertyInfo(Variant::BOOL, "cancel"));
+ cm.default_arguments.push_back(false);
+ BIND_VMETHOD(cm);
+
+ BIND_VMETHOD(MethodInfo(Variant::INT, "_subgizmos_intersect_ray", GIZMO_REF, PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera3D"), PropertyInfo(Variant::VECTOR2, "point")));
+ BIND_VMETHOD(MethodInfo(Variant::PACKED_INT32_ARRAY, "_subgizmos_intersect_frustum", GIZMO_REF, PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera3D"), PropertyInfo(Variant::ARRAY, "frustum")));
+ BIND_VMETHOD(MethodInfo(Variant::TRANSFORM3D, "_get_subgizmo_transform", GIZMO_REF, PropertyInfo(Variant::INT, "id")));
+ BIND_VMETHOD(MethodInfo("_set_subgizmo_transform", GIZMO_REF, PropertyInfo(Variant::INT, "id"), PropertyInfo(Variant::TRANSFORM3D, "transform")));
+ MethodInfo cs = MethodInfo("_commit_subgizmos", GIZMO_REF, PropertyInfo(Variant::PACKED_INT32_ARRAY, "ids"), PropertyInfo(Variant::ARRAY, "restore"), PropertyInfo(Variant::BOOL, "cancel"));
+ cs.default_arguments.push_back(false);
+ BIND_VMETHOD(cs);
+
+#undef GIZMO_REF
+}
+
+bool EditorNode3DGizmoPlugin::has_gizmo(Node3D *p_spatial) {
+ if (get_script_instance() && get_script_instance()->has_method("_has_gizmo")) {
+ return get_script_instance()->call("_has_gizmo", p_spatial);
+ }
+ return false;
+}
+
+Ref<EditorNode3DGizmo> EditorNode3DGizmoPlugin::create_gizmo(Node3D *p_spatial) {
+ if (get_script_instance() && get_script_instance()->has_method("_create_gizmo")) {
+ return get_script_instance()->call("_create_gizmo", p_spatial);
+ }
+
+ Ref<EditorNode3DGizmo> ref;
+ if (has_gizmo(p_spatial)) {
+ ref.instantiate();
+ }
+ return ref;
+}
+
+bool EditorNode3DGizmoPlugin::can_be_hidden() const {
+ if (get_script_instance() && get_script_instance()->has_method("_can_be_hidden")) {
+ return get_script_instance()->call("_can_be_hidden");
+ }
+ return true;
+}
+
+bool EditorNode3DGizmoPlugin::is_selectable_when_hidden() const {
+ if (get_script_instance() && get_script_instance()->has_method("_is_selectable_when_hidden")) {
+ return get_script_instance()->call("_is_selectable_when_hidden");
+ }
+ return false;
+}
+
+void EditorNode3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
+ if (get_script_instance() && get_script_instance()->has_method("_redraw")) {
+ Ref<EditorNode3DGizmo> ref(p_gizmo);
+ get_script_instance()->call("_redraw", ref);
+ }
+}
+
+bool EditorNode3DGizmoPlugin::is_handle_highlighted(const EditorNode3DGizmo *p_gizmo, int p_id) const {
+ if (get_script_instance() && get_script_instance()->has_method("_is_handle_highlighted")) {
+ return get_script_instance()->call("_is_handle_highlighted", p_gizmo, p_id);
+ }
+ return false;
+}
+
+String EditorNode3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
+ if (get_script_instance() && get_script_instance()->has_method("_get_handle_name")) {
+ return get_script_instance()->call("_get_handle_name", p_gizmo, p_id);
+ }
+ return "";
+}
+
+Variant EditorNode3DGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
+ if (get_script_instance() && get_script_instance()->has_method("_get_handle_value")) {
+ return get_script_instance()->call("_get_handle_value", p_gizmo, p_id);
+ }
+ return Variant();
+}
+
+void EditorNode3DGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
+ if (get_script_instance() && get_script_instance()->has_method("_set_handle")) {
+ get_script_instance()->call("_set_handle", p_gizmo, p_id, p_camera, p_point);
+ }
+}
+
+void EditorNode3DGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
+ if (get_script_instance() && get_script_instance()->has_method("_commit_handle")) {
+ get_script_instance()->call("_commit_handle", p_gizmo, p_id, p_restore, p_cancel);
+ }
+}
+
+int EditorNode3DGizmoPlugin::subgizmos_intersect_ray(const EditorNode3DGizmo *p_gizmo, Camera3D *p_camera, const Vector2 &p_point) const {
+ if (get_script_instance() && get_script_instance()->has_method("_subgizmos_intersect_ray")) {
+ return get_script_instance()->call("_subgizmos_intersect_ray", p_camera, p_point);
+ }
+ return -1;
+}
+
+Vector<int> EditorNode3DGizmoPlugin::subgizmos_intersect_frustum(const EditorNode3DGizmo *p_gizmo, const Camera3D *p_camera, const Vector<Plane> &p_frustum) const {
+ if (get_script_instance() && get_script_instance()->has_method("_subgizmos_intersect_frustum")) {
+ Array frustum;
+ for (int i = 0; i < p_frustum.size(); i++) {
+ frustum[i] = p_frustum[i];
+ }
+ return get_script_instance()->call("_subgizmos_intersect_frustum", p_camera, frustum);
+ }
+
+ return Vector<int>();
+}
+
+Transform3D EditorNode3DGizmoPlugin::get_subgizmo_transform(const EditorNode3DGizmo *p_gizmo, int p_id) const {
+ if (get_script_instance() && get_script_instance()->has_method("_get_subgizmo_transform")) {
+ return get_script_instance()->call("_get_subgizmo_transform", p_id);
+ }
+
+ return Transform3D();
+}
+
+void EditorNode3DGizmoPlugin::set_subgizmo_transform(const EditorNode3DGizmo *p_gizmo, int p_id, Transform3D p_transform) const {
+ if (get_script_instance() && get_script_instance()->has_method("_set_subgizmo_transform")) {
+ get_script_instance()->call("_set_subgizmo_transform", p_id, p_transform);
+ }
+}
+
+void EditorNode3DGizmoPlugin::commit_subgizmos(const EditorNode3DGizmo *p_gizmo, const Vector<int> &p_ids, const Vector<Transform3D> &p_restore, bool p_cancel) const {
+ if (get_script_instance() && get_script_instance()->has_method("_commit_subgizmos")) {
+ Array ids;
+ for (int i = 0; i < p_ids.size(); i++) {
+ ids[i] = p_ids[i];
+ }
+
+ Array restore;
+ for (int i = 0; i < p_restore.size(); i++) {
+ restore[i] = p_restore[i];
+ }
+
+ get_script_instance()->call("_commit_subgizmos", ids, restore, p_cancel);
+ }
+}
+
+void EditorNode3DGizmoPlugin::set_state(int p_state) {
+ current_state = p_state;
+ for (int i = 0; i < current_gizmos.size(); ++i) {
+ current_gizmos[i]->set_hidden(current_state == HIDDEN);
+ }
+}
+
+int EditorNode3DGizmoPlugin::get_state() const {
+ return current_state;
+}
+
+void EditorNode3DGizmoPlugin::unregister_gizmo(EditorNode3DGizmo *p_gizmo) {
+ current_gizmos.erase(p_gizmo);
+}
+
+EditorNode3DGizmoPlugin::EditorNode3DGizmoPlugin() {
+ current_state = VISIBLE;
+}
+
+EditorNode3DGizmoPlugin::~EditorNode3DGizmoPlugin() {
+ for (int i = 0; i < current_gizmos.size(); ++i) {
+ current_gizmos[i]->set_plugin(nullptr);
+ current_gizmos[i]->get_spatial_node()->remove_gizmo(current_gizmos[i]);
+ }
+ if (Node3DEditor::get_singleton()) {
+ Node3DEditor::get_singleton()->update_all_gizmos();
+ }
}
//// light gizmo
@@ -802,20 +1263,20 @@ int Light3DGizmoPlugin::get_priority() const {
return -1;
}
-String Light3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
- if (p_idx == 0) {
+String Light3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
+ if (p_id == 0) {
return "Radius";
} else {
return "Aperture";
}
}
-Variant Light3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant Light3DGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
Light3D *light = Object::cast_to<Light3D>(p_gizmo->get_spatial_node());
- if (p_idx == 0) {
+ if (p_id == 0) {
return light->get_param(Light3D::PARAM_RANGE);
}
- if (p_idx == 1) {
+ if (p_id == 1) {
return light->get_param(Light3D::PARAM_SPOT_ANGLE);
}
@@ -849,7 +1310,7 @@ static float _find_closest_angle_to_half_pi_arc(const Vector3 &p_from, const Vec
return Math::rad2deg(a);
}
-void Light3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void Light3DGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
Light3D *light = Object::cast_to<Light3D>(p_gizmo->get_spatial_node());
Transform3D gt = light->get_global_transform();
Transform3D gi = gt.affine_inverse();
@@ -858,7 +1319,7 @@ void Light3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camer
Vector3 ray_dir = p_camera->project_ray_normal(p_point);
Vector3 s[2] = { gi.xform(ray_from), gi.xform(ray_from + ray_dir * 4096) };
- if (p_idx == 0) {
+ if (p_id == 0) {
if (Object::cast_to<SpotLight3D>(light)) {
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(Vector3(), Vector3(0, 0, -4096), s[0], s[1], ra, rb);
@@ -887,24 +1348,24 @@ void Light3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camer
}
}
- } else if (p_idx == 1) {
+ } else if (p_id == 1) {
float a = _find_closest_angle_to_half_pi_arc(s[0], s[1], light->get_param(Light3D::PARAM_RANGE), gt);
light->set_param(Light3D::PARAM_SPOT_ANGLE, CLAMP(a, 0.01, 89.99));
}
}
-void Light3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void Light3DGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
Light3D *light = Object::cast_to<Light3D>(p_gizmo->get_spatial_node());
if (p_cancel) {
- light->set_param(p_idx == 0 ? Light3D::PARAM_RANGE : Light3D::PARAM_SPOT_ANGLE, p_restore);
+ light->set_param(p_id == 0 ? Light3D::PARAM_RANGE : Light3D::PARAM_SPOT_ANGLE, p_restore);
- } else if (p_idx == 0) {
+ } else if (p_id == 0) {
UndoRedo *ur = Node3DEditor::get_singleton()->get_undo_redo();
ur->create_action(TTR("Change Light Radius"));
ur->add_do_method(light, "set_param", Light3D::PARAM_RANGE, light->get_param(Light3D::PARAM_RANGE));
ur->add_undo_method(light, "set_param", Light3D::PARAM_RANGE, p_restore);
ur->commit_action();
- } else if (p_idx == 1) {
+ } else if (p_id == 1) {
UndoRedo *ur = Node3DEditor::get_singleton()->get_undo_redo();
ur->create_action(TTR("Change Light Radius"));
ur->add_do_method(light, "set_param", Light3D::PARAM_SPOT_ANGLE, light->get_param(Light3D::PARAM_SPOT_ANGLE));
@@ -996,7 +1457,7 @@ void Light3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
Vector<Vector3> handles;
handles.push_back(Vector3(r, 0, 0));
- p_gizmo->add_handles(handles, get_material("handles_billboard"), true);
+ p_gizmo->add_handles(handles, get_material("handles_billboard"), Vector<int>(), true);
}
if (Object::cast_to<SpotLight3D>(light)) {
@@ -1068,16 +1529,16 @@ int AudioStreamPlayer3DGizmoPlugin::get_priority() const {
return -1;
}
-String AudioStreamPlayer3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
+String AudioStreamPlayer3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
return "Emission Radius";
}
-Variant AudioStreamPlayer3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant AudioStreamPlayer3DGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
AudioStreamPlayer3D *player = Object::cast_to<AudioStreamPlayer3D>(p_gizmo->get_spatial_node());
return player->get_emission_angle();
}
-void AudioStreamPlayer3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void AudioStreamPlayer3DGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
AudioStreamPlayer3D *player = Object::cast_to<AudioStreamPlayer3D>(p_gizmo->get_spatial_node());
Transform3D gt = player->get_global_transform();
@@ -1114,7 +1575,7 @@ void AudioStreamPlayer3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int
}
}
-void AudioStreamPlayer3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void AudioStreamPlayer3DGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
AudioStreamPlayer3D *player = Object::cast_to<AudioStreamPlayer3D>(p_gizmo->get_spatial_node());
if (p_cancel) {
@@ -1203,7 +1664,7 @@ int Camera3DGizmoPlugin::get_priority() const {
return -1;
}
-String Camera3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
+String Camera3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
Camera3D *camera = Object::cast_to<Camera3D>(p_gizmo->get_spatial_node());
if (camera->get_projection() == Camera3D::PROJECTION_PERSPECTIVE) {
@@ -1213,7 +1674,7 @@ String Camera3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, in
}
}
-Variant Camera3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant Camera3DGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
Camera3D *camera = Object::cast_to<Camera3D>(p_gizmo->get_spatial_node());
if (camera->get_projection() == Camera3D::PROJECTION_PERSPECTIVE) {
@@ -1223,7 +1684,7 @@ Variant Camera3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_
}
}
-void Camera3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void Camera3DGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
Camera3D *camera = Object::cast_to<Camera3D>(p_gizmo->get_spatial_node());
Transform3D gt = camera->get_global_transform();
@@ -1252,7 +1713,7 @@ void Camera3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Came
}
}
-void Camera3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void Camera3DGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
Camera3D *camera = Object::cast_to<Camera3D>(p_gizmo->get_spatial_node());
if (camera->get_projection() == Camera3D::PROJECTION_PERSPECTIVE) {
@@ -1761,7 +2222,7 @@ void Skeleton3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
}
Ref<ArrayMesh> m = surface_tool->commit();
- p_gizmo->add_mesh(m, false, skel->register_skin(Ref<Skin>()));
+ p_gizmo->add_mesh(m, Ref<Material>(), Transform3D(), skel->register_skin(Ref<Skin>()));
}
////
@@ -2102,23 +2563,23 @@ void SoftBody3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
p_gizmo->add_collision_triangles(tm);
}
-String SoftBody3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
+String SoftBody3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
return "SoftBody3D pin point";
}
-Variant SoftBody3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant SoftBody3DGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
SoftBody3D *soft_body = Object::cast_to<SoftBody3D>(p_gizmo->get_spatial_node());
- return Variant(soft_body->is_point_pinned(p_idx));
+ return Variant(soft_body->is_point_pinned(p_id));
}
-void SoftBody3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void SoftBody3DGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
SoftBody3D *soft_body = Object::cast_to<SoftBody3D>(p_gizmo->get_spatial_node());
- soft_body->pin_point_toggle(p_idx);
+ soft_body->pin_point_toggle(p_id);
}
-bool SoftBody3DGizmoPlugin::is_handle_highlighted(const EditorNode3DGizmo *p_gizmo, int idx) const {
+bool SoftBody3DGizmoPlugin::is_handle_highlighted(const EditorNode3DGizmo *p_gizmo, int p_id) const {
SoftBody3D *soft_body = Object::cast_to<SoftBody3D>(p_gizmo->get_spatial_node());
- return soft_body->is_point_pinned(idx);
+ return soft_body->is_point_pinned(p_id);
}
///////////
@@ -2143,8 +2604,8 @@ int VisibleOnScreenNotifier3DGizmoPlugin::get_priority() const {
return -1;
}
-String VisibleOnScreenNotifier3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
- switch (p_idx) {
+String VisibleOnScreenNotifier3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
+ switch (p_id) {
case 0:
return "Size X";
case 1:
@@ -2162,20 +2623,20 @@ String VisibleOnScreenNotifier3DGizmoPlugin::get_handle_name(const EditorNode3DG
return "";
}
-Variant VisibleOnScreenNotifier3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant VisibleOnScreenNotifier3DGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
VisibleOnScreenNotifier3D *notifier = Object::cast_to<VisibleOnScreenNotifier3D>(p_gizmo->get_spatial_node());
return notifier->get_aabb();
}
-void VisibleOnScreenNotifier3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void VisibleOnScreenNotifier3DGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
VisibleOnScreenNotifier3D *notifier = Object::cast_to<VisibleOnScreenNotifier3D>(p_gizmo->get_spatial_node());
Transform3D gt = notifier->get_global_transform();
Transform3D gi = gt.affine_inverse();
- bool move = p_idx >= 3;
- p_idx = p_idx % 3;
+ bool move = p_id >= 3;
+ p_id = p_id % 3;
AABB aabb = notifier->get_aabb();
Vector3 ray_from = p_camera->project_ray_origin(p_point);
@@ -2186,25 +2647,25 @@ void VisibleOnScreenNotifier3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo
Vector3 ofs = aabb.position + aabb.size * 0.5;
Vector3 axis;
- axis[p_idx] = 1.0;
+ axis[p_id] = 1.0;
if (move) {
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(ofs - axis * 4096, ofs + axis * 4096, sg[0], sg[1], ra, rb);
- float d = ra[p_idx];
+ float d = ra[p_id];
if (Node3DEditor::get_singleton()->is_snap_enabled()) {
d = Math::snapped(d, Node3DEditor::get_singleton()->get_translate_snap());
}
- aabb.position[p_idx] = d - 1.0 - aabb.size[p_idx] * 0.5;
+ aabb.position[p_id] = d - 1.0 - aabb.size[p_id] * 0.5;
notifier->set_aabb(aabb);
} else {
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(ofs, ofs + axis * 4096, sg[0], sg[1], ra, rb);
- float d = ra[p_idx] - ofs[p_idx];
+ float d = ra[p_id] - ofs[p_id];
if (Node3DEditor::get_singleton()->is_snap_enabled()) {
d = Math::snapped(d, Node3DEditor::get_singleton()->get_translate_snap());
}
@@ -2213,13 +2674,13 @@ void VisibleOnScreenNotifier3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo
d = 0.001;
}
//resize
- aabb.position[p_idx] = (aabb.position[p_idx] + aabb.size[p_idx] * 0.5) - d;
- aabb.size[p_idx] = d * 2;
+ aabb.position[p_id] = (aabb.position[p_id] + aabb.size[p_id] * 0.5) - d;
+ aabb.size[p_id] = d * 2;
notifier->set_aabb(aabb);
}
}
-void VisibleOnScreenNotifier3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void VisibleOnScreenNotifier3DGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
VisibleOnScreenNotifier3D *notifier = Object::cast_to<VisibleOnScreenNotifier3D>(p_gizmo->get_spatial_node());
if (p_cancel) {
@@ -2335,8 +2796,8 @@ bool GPUParticles3DGizmoPlugin::is_selectable_when_hidden() const {
return true;
}
-String GPUParticles3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
- switch (p_idx) {
+String GPUParticles3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
+ switch (p_id) {
case 0:
return "Size X";
case 1:
@@ -2354,19 +2815,19 @@ String GPUParticles3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_giz
return "";
}
-Variant GPUParticles3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant GPUParticles3DGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
GPUParticles3D *particles = Object::cast_to<GPUParticles3D>(p_gizmo->get_spatial_node());
return particles->get_visibility_aabb();
}
-void GPUParticles3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void GPUParticles3DGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
GPUParticles3D *particles = Object::cast_to<GPUParticles3D>(p_gizmo->get_spatial_node());
Transform3D gt = particles->get_global_transform();
Transform3D gi = gt.affine_inverse();
- bool move = p_idx >= 3;
- p_idx = p_idx % 3;
+ bool move = p_id >= 3;
+ p_id = p_id % 3;
AABB aabb = particles->get_visibility_aabb();
Vector3 ray_from = p_camera->project_ray_origin(p_point);
@@ -2377,25 +2838,25 @@ void GPUParticles3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx
Vector3 ofs = aabb.position + aabb.size * 0.5;
Vector3 axis;
- axis[p_idx] = 1.0;
+ axis[p_id] = 1.0;
if (move) {
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(ofs - axis * 4096, ofs + axis * 4096, sg[0], sg[1], ra, rb);
- float d = ra[p_idx];
+ float d = ra[p_id];
if (Node3DEditor::get_singleton()->is_snap_enabled()) {
d = Math::snapped(d, Node3DEditor::get_singleton()->get_translate_snap());
}
- aabb.position[p_idx] = d - 1.0 - aabb.size[p_idx] * 0.5;
+ aabb.position[p_id] = d - 1.0 - aabb.size[p_id] * 0.5;
particles->set_visibility_aabb(aabb);
} else {
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(ofs, ofs + axis * 4096, sg[0], sg[1], ra, rb);
- float d = ra[p_idx] - ofs[p_idx];
+ float d = ra[p_id] - ofs[p_id];
if (Node3DEditor::get_singleton()->is_snap_enabled()) {
d = Math::snapped(d, Node3DEditor::get_singleton()->get_translate_snap());
}
@@ -2404,13 +2865,13 @@ void GPUParticles3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx
d = 0.001;
}
//resize
- aabb.position[p_idx] = (aabb.position[p_idx] + aabb.size[p_idx] * 0.5) - d;
- aabb.size[p_idx] = d * 2;
+ aabb.position[p_id] = (aabb.position[p_id] + aabb.size[p_id] * 0.5) - d;
+ aabb.size[p_id] = d * 2;
particles->set_visibility_aabb(aabb);
}
}
-void GPUParticles3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void GPUParticles3DGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
GPUParticles3D *particles = Object::cast_to<GPUParticles3D>(p_gizmo->get_spatial_node());
if (p_cancel) {
@@ -2475,8 +2936,6 @@ void GPUParticles3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
////
-////
-
GPUParticlesCollision3DGizmoPlugin::GPUParticlesCollision3DGizmoPlugin() {
Color gizmo_color = EDITOR_DEF("editors/3d_gizmos/gizmo_colors/particle_collision", Color(0.5, 0.7, 1));
create_material("shape_material", gizmo_color);
@@ -2498,7 +2957,7 @@ int GPUParticlesCollision3DGizmoPlugin::get_priority() const {
return -1;
}
-String GPUParticlesCollision3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
+String GPUParticlesCollision3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
const Node3D *cs = p_gizmo->get_spatial_node();
if (Object::cast_to<GPUParticlesCollisionSphere>(cs) || Object::cast_to<GPUParticlesAttractorSphere>(cs)) {
@@ -2512,7 +2971,7 @@ String GPUParticlesCollision3DGizmoPlugin::get_handle_name(const EditorNode3DGiz
return "";
}
-Variant GPUParticlesCollision3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant GPUParticlesCollision3DGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
const Node3D *cs = p_gizmo->get_spatial_node();
if (Object::cast_to<GPUParticlesCollisionSphere>(cs) || Object::cast_to<GPUParticlesAttractorSphere>(cs)) {
@@ -2526,7 +2985,7 @@ Variant GPUParticlesCollision3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *
return Variant();
}
-void GPUParticlesCollision3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void GPUParticlesCollision3DGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
Node3D *sn = p_gizmo->get_spatial_node();
Transform3D gt = sn->get_global_transform();
@@ -2554,10 +3013,10 @@ void GPUParticlesCollision3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo,
if (Object::cast_to<GPUParticlesCollisionBox>(sn) || Object::cast_to<GPUParticlesAttractorBox>(sn) || Object::cast_to<GPUParticlesAttractorVectorField>(sn) || Object::cast_to<GPUParticlesCollisionSDF>(sn) || Object::cast_to<GPUParticlesCollisionHeightField>(sn)) {
Vector3 axis;
- axis[p_idx] = 1.0;
+ axis[p_id] = 1.0;
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(Vector3(), axis * 4096, sg[0], sg[1], ra, rb);
- float d = ra[p_idx];
+ float d = ra[p_id];
if (Node3DEditor::get_singleton()->is_snap_enabled()) {
d = Math::snapped(d, Node3DEditor::get_singleton()->get_translate_snap());
}
@@ -2567,12 +3026,12 @@ void GPUParticlesCollision3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo,
}
Vector3 he = sn->call("get_extents");
- he[p_idx] = d;
+ he[p_id] = d;
sn->call("set_extents", he);
}
}
-void GPUParticlesCollision3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void GPUParticlesCollision3DGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
Node3D *sn = p_gizmo->get_spatial_node();
if (Object::cast_to<GPUParticlesCollisionSphere>(sn) || Object::cast_to<GPUParticlesAttractorSphere>(sn)) {
@@ -2762,8 +3221,8 @@ int ReflectionProbeGizmoPlugin::get_priority() const {
return -1;
}
-String ReflectionProbeGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
- switch (p_idx) {
+String ReflectionProbeGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
+ switch (p_id) {
case 0:
return "Extents X";
case 1:
@@ -2781,18 +3240,18 @@ String ReflectionProbeGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gi
return "";
}
-Variant ReflectionProbeGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant ReflectionProbeGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
ReflectionProbe *probe = Object::cast_to<ReflectionProbe>(p_gizmo->get_spatial_node());
return AABB(probe->get_extents(), probe->get_origin_offset());
}
-void ReflectionProbeGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void ReflectionProbeGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
ReflectionProbe *probe = Object::cast_to<ReflectionProbe>(p_gizmo->get_spatial_node());
Transform3D gt = probe->get_global_transform();
Transform3D gi = gt.affine_inverse();
- if (p_idx < 3) {
+ if (p_id < 3) {
Vector3 extents = probe->get_extents();
Vector3 ray_from = p_camera->project_ray_origin(p_point);
@@ -2801,11 +3260,11 @@ void ReflectionProbeGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_id
Vector3 sg[2] = { gi.xform(ray_from), gi.xform(ray_from + ray_dir * 16384) };
Vector3 axis;
- axis[p_idx] = 1.0;
+ axis[p_id] = 1.0;
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(Vector3(), axis * 16384, sg[0], sg[1], ra, rb);
- float d = ra[p_idx];
+ float d = ra[p_id];
if (Node3DEditor::get_singleton()->is_snap_enabled()) {
d = Math::snapped(d, Node3DEditor::get_singleton()->get_translate_snap());
}
@@ -2814,13 +3273,13 @@ void ReflectionProbeGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_id
d = 0.001;
}
- extents[p_idx] = d;
+ extents[p_id] = d;
probe->set_extents(extents);
} else {
- p_idx -= 3;
+ p_id -= 3;
Vector3 origin = probe->get_origin_offset();
- origin[p_idx] = 0;
+ origin[p_id] = 0;
Vector3 ray_from = p_camera->project_ray_origin(p_point);
Vector3 ray_dir = p_camera->project_ray_normal(p_point);
@@ -2828,22 +3287,22 @@ void ReflectionProbeGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_id
Vector3 sg[2] = { gi.xform(ray_from), gi.xform(ray_from + ray_dir * 16384) };
Vector3 axis;
- axis[p_idx] = 1.0;
+ axis[p_id] = 1.0;
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(origin - axis * 16384, origin + axis * 16384, sg[0], sg[1], ra, rb);
// Adjust the actual position to account for the gizmo handle position
- float d = ra[p_idx] + 0.25;
+ float d = ra[p_id] + 0.25;
if (Node3DEditor::get_singleton()->is_snap_enabled()) {
d = Math::snapped(d, Node3DEditor::get_singleton()->get_translate_snap());
}
- origin[p_idx] = d;
+ origin[p_id] = d;
probe->set_origin_offset(origin);
}
}
-void ReflectionProbeGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void ReflectionProbeGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
ReflectionProbe *probe = Object::cast_to<ReflectionProbe>(p_gizmo->get_spatial_node());
AABB restore = p_restore;
@@ -2947,8 +3406,8 @@ int DecalGizmoPlugin::get_priority() const {
return -1;
}
-String DecalGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
- switch (p_idx) {
+String DecalGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
+ switch (p_id) {
case 0:
return "Extents X";
case 1:
@@ -2960,12 +3419,12 @@ String DecalGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p
return "";
}
-Variant DecalGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant DecalGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
Decal *decal = Object::cast_to<Decal>(p_gizmo->get_spatial_node());
return decal->get_extents();
}
-void DecalGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void DecalGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
Decal *decal = Object::cast_to<Decal>(p_gizmo->get_spatial_node());
Transform3D gt = decal->get_global_transform();
@@ -2979,11 +3438,11 @@ void DecalGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3
Vector3 sg[2] = { gi.xform(ray_from), gi.xform(ray_from + ray_dir * 16384) };
Vector3 axis;
- axis[p_idx] = 1.0;
+ axis[p_id] = 1.0;
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(Vector3(), axis * 16384, sg[0], sg[1], ra, rb);
- float d = ra[p_idx];
+ float d = ra[p_id];
if (Node3DEditor::get_singleton()->is_snap_enabled()) {
d = Math::snapped(d, Node3DEditor::get_singleton()->get_translate_snap());
}
@@ -2992,11 +3451,11 @@ void DecalGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3
d = 0.001;
}
- extents[p_idx] = d;
+ extents[p_id] = d;
decal->set_extents(extents);
}
-void DecalGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void DecalGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
Decal *decal = Object::cast_to<Decal>(p_gizmo->get_spatial_node());
Vector3 restore = p_restore;
@@ -3055,7 +3514,6 @@ void DecalGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
Ref<Material> material = get_material("decal_material", p_gizmo);
p_gizmo->add_lines(lines, material);
-
p_gizmo->add_handles(handles, get_material("handles"));
}
@@ -3088,8 +3546,8 @@ int VoxelGIGizmoPlugin::get_priority() const {
return -1;
}
-String VoxelGIGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
- switch (p_idx) {
+String VoxelGIGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
+ switch (p_id) {
case 0:
return "Extents X";
case 1:
@@ -3101,12 +3559,12 @@ String VoxelGIGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int
return "";
}
-Variant VoxelGIGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant VoxelGIGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
VoxelGI *probe = Object::cast_to<VoxelGI>(p_gizmo->get_spatial_node());
return probe->get_extents();
}
-void VoxelGIGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void VoxelGIGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
VoxelGI *probe = Object::cast_to<VoxelGI>(p_gizmo->get_spatial_node());
Transform3D gt = probe->get_global_transform();
@@ -3120,11 +3578,11 @@ void VoxelGIGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camer
Vector3 sg[2] = { gi.xform(ray_from), gi.xform(ray_from + ray_dir * 16384) };
Vector3 axis;
- axis[p_idx] = 1.0;
+ axis[p_id] = 1.0;
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(Vector3(), axis * 16384, sg[0], sg[1], ra, rb);
- float d = ra[p_idx];
+ float d = ra[p_id];
if (Node3DEditor::get_singleton()->is_snap_enabled()) {
d = Math::snapped(d, Node3DEditor::get_singleton()->get_translate_snap());
}
@@ -3133,11 +3591,11 @@ void VoxelGIGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camer
d = 0.001;
}
- extents[p_idx] = d;
+ extents[p_id] = d;
probe->set_extents(extents);
}
-void VoxelGIGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void VoxelGIGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
VoxelGI *probe = Object::cast_to<VoxelGI>(p_gizmo->get_spatial_node());
Vector3 restore = p_restore;
@@ -3257,18 +3715,18 @@ LightmapGIGizmoPlugin::LightmapGIGizmoPlugin() {
create_icon_material("baked_indirect_light_icon", Node3DEditor::get_singleton()->get_theme_icon(SNAME("GizmoLightmapGI"), SNAME("EditorIcons")));
}
-String LightmapGIGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
+String LightmapGIGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
return "";
}
-Variant LightmapGIGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant LightmapGIGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
return Variant();
}
-void LightmapGIGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void LightmapGIGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
}
-void LightmapGIGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void LightmapGIGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
}
bool LightmapGIGizmoPlugin::has_gizmo(Node3D *p_spatial) {
@@ -3439,18 +3897,18 @@ LightmapProbeGizmoPlugin::LightmapProbeGizmoPlugin() {
create_material("lightprobe_lines", gizmo_color);
}
-String LightmapProbeGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
+String LightmapProbeGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
return "";
}
-Variant LightmapProbeGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant LightmapProbeGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
return Variant();
}
-void LightmapProbeGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void LightmapProbeGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
}
-void LightmapProbeGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void LightmapProbeGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
}
bool LightmapProbeGizmoPlugin::has_gizmo(Node3D *p_spatial) {
@@ -3555,8 +4013,7 @@ void CollisionObject3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
List<uint32_t> owners;
co->get_shape_owners(&owners);
- for (List<uint32_t>::Element *E = owners.front(); E; E = E->next()) {
- uint32_t owner_id = E->get();
+ for (uint32_t &owner_id : owners) {
Transform3D xform = co->shape_owner_get_transform(owner_id);
Object *owner = co->shape_owner_get_owner(owner_id);
// Exclude CollisionShape3D and CollisionPolygon3D as they have their gizmo.
@@ -3570,7 +4027,7 @@ void CollisionObject3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
SurfaceTool st;
st.append_from(s->get_debug_mesh(), 0, xform);
- p_gizmo->add_mesh(st.commit(), false, Ref<SkinReference>(), material);
+ p_gizmo->add_mesh(st.commit(), material);
p_gizmo->add_collision_segments(s->get_debug_mesh_lines());
}
}
@@ -3600,7 +4057,7 @@ int CollisionShape3DGizmoPlugin::get_priority() const {
return -1;
}
-String CollisionShape3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
+String CollisionShape3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
const CollisionShape3D *cs = Object::cast_to<CollisionShape3D>(p_gizmo->get_spatial_node());
Ref<Shape3D> s = cs->get_shape();
@@ -3617,11 +4074,11 @@ String CollisionShape3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_g
}
if (Object::cast_to<CapsuleShape3D>(*s)) {
- return p_idx == 0 ? "Radius" : "Height";
+ return p_id == 0 ? "Radius" : "Height";
}
if (Object::cast_to<CylinderShape3D>(*s)) {
- return p_idx == 0 ? "Radius" : "Height";
+ return p_id == 0 ? "Radius" : "Height";
}
if (Object::cast_to<RayShape3D>(*s)) {
@@ -3631,7 +4088,7 @@ String CollisionShape3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_g
return "";
}
-Variant CollisionShape3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant CollisionShape3DGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
CollisionShape3D *cs = Object::cast_to<CollisionShape3D>(p_gizmo->get_spatial_node());
Ref<Shape3D> s = cs->get_shape();
@@ -3651,12 +4108,12 @@ Variant CollisionShape3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo
if (Object::cast_to<CapsuleShape3D>(*s)) {
Ref<CapsuleShape3D> cs2 = s;
- return p_idx == 0 ? cs2->get_radius() : cs2->get_height();
+ return p_id == 0 ? cs2->get_radius() : cs2->get_height();
}
if (Object::cast_to<CylinderShape3D>(*s)) {
Ref<CylinderShape3D> cs2 = s;
- return p_idx == 0 ? cs2->get_radius() : cs2->get_height();
+ return p_id == 0 ? cs2->get_radius() : cs2->get_height();
}
if (Object::cast_to<RayShape3D>(*s)) {
@@ -3667,7 +4124,7 @@ Variant CollisionShape3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo
return Variant();
}
-void CollisionShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void CollisionShape3DGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
CollisionShape3D *cs = Object::cast_to<CollisionShape3D>(p_gizmo->get_spatial_node());
Ref<Shape3D> s = cs->get_shape();
@@ -3717,11 +4174,11 @@ void CollisionShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_i
if (Object::cast_to<BoxShape3D>(*s)) {
Vector3 axis;
- axis[p_idx] = 1.0;
+ axis[p_id] = 1.0;
Ref<BoxShape3D> bs = s;
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(Vector3(), axis * 4096, sg[0], sg[1], ra, rb);
- float d = ra[p_idx];
+ float d = ra[p_id];
if (Node3DEditor::get_singleton()->is_snap_enabled()) {
d = Math::snapped(d, Node3DEditor::get_singleton()->get_translate_snap());
}
@@ -3731,18 +4188,18 @@ void CollisionShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_i
}
Vector3 he = bs->get_size();
- he[p_idx] = d * 2;
+ he[p_id] = d * 2;
bs->set_size(he);
}
if (Object::cast_to<CapsuleShape3D>(*s)) {
Vector3 axis;
- axis[p_idx == 0 ? 0 : 2] = 1.0;
+ axis[p_id == 0 ? 0 : 2] = 1.0;
Ref<CapsuleShape3D> cs2 = s;
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(Vector3(), axis * 4096, sg[0], sg[1], ra, rb);
float d = axis.dot(ra);
- if (p_idx == 1) {
+ if (p_id == 1) {
d -= cs2->get_radius();
}
@@ -3754,16 +4211,16 @@ void CollisionShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_i
d = 0.001;
}
- if (p_idx == 0) {
+ if (p_id == 0) {
cs2->set_radius(d);
- } else if (p_idx == 1) {
+ } else if (p_id == 1) {
cs2->set_height(d * 2.0);
}
}
if (Object::cast_to<CylinderShape3D>(*s)) {
Vector3 axis;
- axis[p_idx == 0 ? 0 : 1] = 1.0;
+ axis[p_id == 0 ? 0 : 1] = 1.0;
Ref<CylinderShape3D> cs2 = s;
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(Vector3(), axis * 4096, sg[0], sg[1], ra, rb);
@@ -3776,15 +4233,15 @@ void CollisionShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_i
d = 0.001;
}
- if (p_idx == 0) {
+ if (p_id == 0) {
cs2->set_radius(d);
- } else if (p_idx == 1) {
+ } else if (p_id == 1) {
cs2->set_height(d * 2.0);
}
}
}
-void CollisionShape3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void CollisionShape3DGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
CollisionShape3D *cs = Object::cast_to<CollisionShape3D>(p_gizmo->get_spatial_node());
Ref<Shape3D> s = cs->get_shape();
@@ -3823,7 +4280,7 @@ void CollisionShape3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int
if (Object::cast_to<CapsuleShape3D>(*s)) {
Ref<CapsuleShape3D> ss = s;
if (p_cancel) {
- if (p_idx == 0) {
+ if (p_id == 0) {
ss->set_radius(p_restore);
} else {
ss->set_height(p_restore);
@@ -3832,7 +4289,7 @@ void CollisionShape3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int
}
UndoRedo *ur = Node3DEditor::get_singleton()->get_undo_redo();
- if (p_idx == 0) {
+ if (p_id == 0) {
ur->create_action(TTR("Change Capsule Shape Radius"));
ur->add_do_method(ss.ptr(), "set_radius", ss->get_radius());
ur->add_undo_method(ss.ptr(), "set_radius", p_restore);
@@ -3848,7 +4305,7 @@ void CollisionShape3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int
if (Object::cast_to<CylinderShape3D>(*s)) {
Ref<CylinderShape3D> ss = s;
if (p_cancel) {
- if (p_idx == 0) {
+ if (p_id == 0) {
ss->set_radius(p_restore);
} else {
ss->set_height(p_restore);
@@ -3857,7 +4314,7 @@ void CollisionShape3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int
}
UndoRedo *ur = Node3DEditor::get_singleton()->get_undo_redo();
- if (p_idx == 0) {
+ if (p_id == 0) {
ur->create_action(TTR("Change Cylinder Shape Radius"));
ur->add_do_method(ss.ptr(), "set_radius", ss->get_radius());
ur->add_undo_method(ss.ptr(), "set_radius", p_restore);
@@ -4153,7 +4610,7 @@ void CollisionShape3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
if (Object::cast_to<ConcavePolygonShape3D>(*s)) {
Ref<ConcavePolygonShape3D> cs2 = s;
Ref<ArrayMesh> mesh = cs2->get_debug_mesh();
- p_gizmo->add_mesh(mesh, false, Ref<SkinReference>(), material);
+ p_gizmo->add_mesh(mesh, material);
p_gizmo->add_collision_segments(cs2->get_debug_mesh_lines());
}
@@ -4174,7 +4631,7 @@ void CollisionShape3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
Ref<HeightMapShape3D> hms = s;
Ref<ArrayMesh> mesh = hms->get_debug_mesh();
- p_gizmo->add_mesh(mesh, false, Ref<SkinReference>(), material);
+ p_gizmo->add_mesh(mesh, material);
}
}
@@ -4289,9 +4746,7 @@ void NavigationRegion3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
Vector3 *tw = tmeshfaces.ptrw();
int tidx = 0;
- for (List<Face3>::Element *E = faces.front(); E; E = E->next()) {
- const Face3 &f = E->get();
-
+ for (const Face3 &f : faces) {
for (int j = 0; j < 3; j++) {
tw[tidx++] = f.vertex[j];
_EdgeKey ek;
diff --git a/editor/node_3d_editor_gizmos.h b/editor/plugins/node_3d_editor_gizmos.h
index 6f071859ec..f303a61607 100644
--- a/editor/node_3d_editor_gizmos.h
+++ b/editor/plugins/node_3d_editor_gizmos.h
@@ -28,13 +28,156 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef SPATIAL_EDITOR_GIZMOS_H
-#define SPATIAL_EDITOR_GIZMOS_H
+#ifndef NODE_3D_EDITOR_GIZMOS_H
+#define NODE_3D_EDITOR_GIZMOS_H
-#include "editor/plugins/node_3d_editor_plugin.h"
-#include "scene/3d/camera_3d.h"
+#include "core/templates/ordered_hash_map.h"
+#include "scene/3d/node_3d.h"
+#include "scene/3d/skeleton_3d.h"
class Camera3D;
+class Timer;
+class EditorNode3DGizmoPlugin;
+
+class EditorNode3DGizmo : public Node3DGizmo {
+ GDCLASS(EditorNode3DGizmo, Node3DGizmo);
+
+ struct Instance {
+ RID instance;
+ Ref<ArrayMesh> mesh;
+ Ref<Material> material;
+ Ref<SkinReference> skin_reference;
+ bool extra_margin = false;
+ Transform3D xform;
+
+ void create_instance(Node3D *p_base, bool p_hidden = false);
+ };
+
+ bool selected;
+
+ Vector<Vector3> collision_segments;
+ Ref<TriangleMesh> collision_mesh;
+
+ Vector<Vector3> handles;
+ Vector<int> handle_ids;
+ Vector<Vector3> secondary_handles;
+ Vector<int> secondary_handle_ids;
+
+ float selectable_icon_size;
+ bool billboard_handle;
+
+ bool valid;
+ bool hidden;
+ Vector<Instance> instances;
+ Node3D *spatial_node;
+
+ void _set_spatial_node(Node *p_node) { set_spatial_node(Object::cast_to<Node3D>(p_node)); }
+
+protected:
+ static void _bind_methods();
+
+ EditorNode3DGizmoPlugin *gizmo_plugin;
+
+public:
+ void add_lines(const Vector<Vector3> &p_lines, const Ref<Material> &p_material, bool p_billboard = false, const Color &p_modulate = Color(1, 1, 1));
+ void add_vertices(const Vector<Vector3> &p_vertices, const Ref<Material> &p_material, Mesh::PrimitiveType p_primitive_type, bool p_billboard = false, const Color &p_modulate = Color(1, 1, 1));
+ void add_mesh(const Ref<ArrayMesh> &p_mesh, const Ref<Material> &p_material = Ref<Material>(), const Transform3D &p_xform = Transform3D(), const Ref<SkinReference> &p_skin_reference = Ref<SkinReference>());
+ void add_collision_segments(const Vector<Vector3> &p_lines);
+ void add_collision_triangles(const Ref<TriangleMesh> &p_tmesh);
+ void add_unscaled_billboard(const Ref<Material> &p_material, real_t p_scale = 1, const Color &p_modulate = Color(1, 1, 1));
+ void add_handles(const Vector<Vector3> &p_handles, const Ref<Material> &p_material, const Vector<int> &p_ids = Vector<int>(), bool p_billboard = false, bool p_secondary = false);
+ void add_solid_box(Ref<Material> &p_material, Vector3 p_size, Vector3 p_position = Vector3(), const Transform3D &p_xform = Transform3D());
+
+ virtual bool is_handle_highlighted(int p_id) const;
+ virtual String get_handle_name(int p_id) const;
+ virtual Variant get_handle_value(int p_id) const;
+ virtual void set_handle(int p_id, Camera3D *p_camera, const Point2 &p_point) const;
+ virtual void commit_handle(int p_id, const Variant &p_restore, bool p_cancel = false) const;
+
+ virtual int subgizmos_intersect_ray(Camera3D *p_camera, const Vector2 &p_point) const;
+ virtual Vector<int> subgizmos_intersect_frustum(const Camera3D *p_camera, const Vector<Plane> &p_frustum) const;
+ virtual Transform3D get_subgizmo_transform(int p_id) const;
+ virtual void set_subgizmo_transform(int p_id, Transform3D p_transform) const;
+ virtual void commit_subgizmos(const Vector<int> &p_ids, const Vector<Transform3D> &p_restore, bool p_cancel = false) const;
+
+ void set_selected(bool p_selected) { selected = p_selected; }
+ bool is_selected() const { return selected; }
+
+ void set_spatial_node(Node3D *p_node);
+ Node3D *get_spatial_node() const { return spatial_node; }
+ Ref<EditorNode3DGizmoPlugin> get_plugin() const { return gizmo_plugin; }
+ bool intersect_frustum(const Camera3D *p_camera, const Vector<Plane> &p_frustum);
+ void handles_intersect_ray(Camera3D *p_camera, const Vector2 &p_point, bool p_shift_pressed, int &r_id);
+ bool intersect_ray(Camera3D *p_camera, const Point2 &p_point, Vector3 &r_pos, Vector3 &r_normal);
+ bool is_subgizmo_selected(int p_id) const;
+ Vector<int> get_subgizmo_selection() const;
+
+ virtual void clear() override;
+ virtual void create() override;
+ virtual void transform() override;
+ virtual void redraw() override;
+ virtual void free() override;
+
+ virtual bool is_editable() const;
+
+ void set_hidden(bool p_hidden);
+ void set_plugin(EditorNode3DGizmoPlugin *p_plugin);
+
+ EditorNode3DGizmo();
+ ~EditorNode3DGizmo();
+};
+
+class EditorNode3DGizmoPlugin : public Resource {
+ GDCLASS(EditorNode3DGizmoPlugin, Resource);
+
+public:
+ static const int VISIBLE = 0;
+ static const int HIDDEN = 1;
+ static const int ON_TOP = 2;
+
+protected:
+ int current_state;
+ List<EditorNode3DGizmo *> current_gizmos;
+ HashMap<String, Vector<Ref<StandardMaterial3D>>> materials;
+
+ static void _bind_methods();
+ virtual bool has_gizmo(Node3D *p_spatial);
+ virtual Ref<EditorNode3DGizmo> create_gizmo(Node3D *p_spatial);
+
+public:
+ void create_material(const String &p_name, const Color &p_color, bool p_billboard = false, bool p_on_top = false, bool p_use_vertex_color = false);
+ void create_icon_material(const String &p_name, const Ref<Texture2D> &p_texture, bool p_on_top = false, const Color &p_albedo = Color(1, 1, 1, 1));
+ void create_handle_material(const String &p_name, bool p_billboard = false, const Ref<Texture2D> &p_texture = nullptr);
+ void add_material(const String &p_name, Ref<StandardMaterial3D> p_material);
+
+ Ref<StandardMaterial3D> get_material(const String &p_name, const Ref<EditorNode3DGizmo> &p_gizmo = Ref<EditorNode3DGizmo>());
+
+ virtual String get_gizmo_name() const;
+ virtual int get_priority() const;
+ virtual bool can_be_hidden() const;
+ virtual bool is_selectable_when_hidden() const;
+
+ virtual void redraw(EditorNode3DGizmo *p_gizmo);
+ virtual bool is_handle_highlighted(const EditorNode3DGizmo *p_gizmo, int p_id) const;
+ virtual String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const;
+ virtual Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const;
+ virtual void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const;
+ virtual void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const;
+
+ virtual int subgizmos_intersect_ray(const EditorNode3DGizmo *p_gizmo, Camera3D *p_camera, const Vector2 &p_point) const;
+ virtual Vector<int> subgizmos_intersect_frustum(const EditorNode3DGizmo *p_gizmo, const Camera3D *p_camera, const Vector<Plane> &p_frustum) const;
+ virtual Transform3D get_subgizmo_transform(const EditorNode3DGizmo *p_gizmo, int p_id) const;
+ virtual void set_subgizmo_transform(const EditorNode3DGizmo *p_gizmo, int p_id, Transform3D p_transform) const;
+ virtual void commit_subgizmos(const EditorNode3DGizmo *p_gizmo, const Vector<int> &p_ids, const Vector<Transform3D> &p_restore, bool p_cancel = false) const;
+
+ Ref<EditorNode3DGizmo> get_gizmo(Node3D *p_spatial);
+ void set_state(int p_state);
+ int get_state() const;
+ void unregister_gizmo(EditorNode3DGizmo *p_gizmo);
+
+ EditorNode3DGizmoPlugin();
+ virtual ~EditorNode3DGizmoPlugin();
+};
class Light3DGizmoPlugin : public EditorNode3DGizmoPlugin {
GDCLASS(Light3DGizmoPlugin, EditorNode3DGizmoPlugin);
@@ -44,10 +187,10 @@ public:
String get_gizmo_name() const override;
int get_priority() const override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
Light3DGizmoPlugin();
@@ -61,10 +204,10 @@ public:
String get_gizmo_name() const override;
int get_priority() const override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
AudioStreamPlayer3DGizmoPlugin();
@@ -78,10 +221,10 @@ public:
String get_gizmo_name() const override;
int get_priority() const override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
Camera3DGizmoPlugin();
@@ -210,10 +353,10 @@ public:
bool is_selectable_when_hidden() const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) override;
- bool is_handle_highlighted(const EditorNode3DGizmo *p_gizmo, int idx) const override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
+ bool is_handle_highlighted(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
SoftBody3DGizmoPlugin();
};
@@ -227,10 +370,10 @@ public:
int get_priority() const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
VisibleOnScreenNotifier3DGizmoPlugin();
};
@@ -257,10 +400,10 @@ public:
bool is_selectable_when_hidden() const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
GPUParticles3DGizmoPlugin();
};
@@ -274,10 +417,10 @@ public:
int get_priority() const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
GPUParticlesCollision3DGizmoPlugin();
};
@@ -291,10 +434,10 @@ public:
int get_priority() const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
ReflectionProbeGizmoPlugin();
};
@@ -308,10 +451,10 @@ public:
int get_priority() const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
DecalGizmoPlugin();
};
@@ -325,10 +468,10 @@ public:
int get_priority() const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
VoxelGIGizmoPlugin();
};
@@ -342,10 +485,10 @@ public:
int get_priority() const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
LightmapGIGizmoPlugin();
};
@@ -359,10 +502,10 @@ public:
int get_priority() const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
LightmapProbeGizmoPlugin();
};
@@ -388,10 +531,10 @@ public:
int get_priority() const override;
void redraw(EditorNode3DGizmo *p_gizmo) override;
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel = false) const override;
CollisionShape3DGizmoPlugin();
};
@@ -489,4 +632,4 @@ public:
Joint3DGizmoPlugin();
};
-#endif // SPATIAL_EDITOR_GIZMOS_H
+#endif // NODE_3D_EDITOR_GIZMOS_H
diff --git a/editor/plugins/node_3d_editor_plugin.cpp b/editor/plugins/node_3d_editor_plugin.cpp
index 7290a39463..5ed8205475 100644
--- a/editor/plugins/node_3d_editor_plugin.cpp
+++ b/editor/plugins/node_3d_editor_plugin.cpp
@@ -35,20 +35,20 @@
#include "core/math/camera_matrix.h"
#include "core/math/math_funcs.h"
#include "core/os/keyboard.h"
-#include "core/string/print_string.h"
#include "core/templates/sort_array.h"
#include "editor/debugger/editor_debugger_node.h"
#include "editor/editor_node.h"
-#include "editor/editor_scale.h"
#include "editor/editor_settings.h"
-#include "editor/node_3d_editor_gizmos.h"
#include "editor/plugins/animation_player_editor_plugin.h"
+#include "editor/plugins/node_3d_editor_gizmos.h"
#include "editor/plugins/script_editor_plugin.h"
#include "scene/3d/camera_3d.h"
#include "scene/3d/collision_shape_3d.h"
+#include "scene/3d/light_3d.h"
#include "scene/3d/mesh_instance_3d.h"
#include "scene/3d/physics_body_3d.h"
#include "scene/3d/visual_instance_3d.h"
+#include "scene/3d/world_environment.h"
#include "scene/gui/center_container.h"
#include "scene/gui/subviewport_container.h"
#include "scene/resources/packed_scene.h"
@@ -58,7 +58,6 @@
#define GIZMO_ARROW_SIZE 0.35
#define GIZMO_RING_HALF_WIDTH 0.1
-#define GIZMO_SCALE_DEFAULT 0.15
#define GIZMO_PLANE_SIZE 0.2
#define GIZMO_PLANE_DST 0.3
#define GIZMO_CIRCLE_SIZE 1.1
@@ -108,8 +107,8 @@ void ViewportRotationControl::_notification(int p_what) {
}
void ViewportRotationControl::_draw() {
- Vector2i center = get_size() / 2.0;
- float radius = get_size().x / 2.0;
+ const Vector2i center = get_size() / 2.0;
+ const real_t radius = get_size().x / 2.0;
if (focused_axis > -2 || orbiting) {
draw_circle(center, radius, Color(0.5, 0.5, 0.5, 0.25));
@@ -141,24 +140,24 @@ void ViewportRotationControl::_draw_axis(const Axis2D &p_axis) {
}
if (front) {
- String axis_name = direction == 0 ? "X" : (direction == 1 ? "Y" : "Z");
draw_circle(p_axis.screen_point, AXIS_CIRCLE_RADIUS, c);
- draw_char(get_theme_font(SNAME("rotation_control"), SNAME("EditorFonts")), p_axis.screen_point + Vector2i(-4, 5) * EDSCALE, axis_name, "", get_theme_font_size(SNAME("rotation_control_size"), SNAME("EditorFonts")), Color(0.3, 0.3, 0.3));
+ if (positive) {
+ String axis_name = direction == 0 ? "X" : (direction == 1 ? "Y" : "Z");
+ draw_char(get_theme_font(SNAME("rotation_control"), SNAME("EditorFonts")), p_axis.screen_point + Vector2i(-4, 5) * EDSCALE, axis_name, "", get_theme_font_size(SNAME("rotation_control_size"), SNAME("EditorFonts")), Color(0.0, 0.0, 0.0));
+ }
} else {
draw_circle(p_axis.screen_point, AXIS_CIRCLE_RADIUS * (0.55 + (0.2 * (1.0 + p_axis.z_axis))), c);
}
}
void ViewportRotationControl::_get_sorted_axis(Vector<Axis2D> &r_axis) {
- Vector2i center = get_size() / 2.0;
- float radius = get_size().x / 2.0;
-
- float axis_radius = radius - AXIS_CIRCLE_RADIUS - 2.0 * EDSCALE;
- Basis camera_basis = viewport->to_camera_transform(viewport->cursor).get_basis().inverse();
+ const Vector2i center = get_size() / 2.0;
+ const real_t radius = get_size().x / 2.0 - AXIS_CIRCLE_RADIUS - 2.0 * EDSCALE;
+ const Basis camera_basis = viewport->to_camera_transform(viewport->cursor).get_basis().inverse();
for (int i = 0; i < 3; ++i) {
Vector3 axis_3d = camera_basis.get_axis(i);
- Vector2i axis_vector = Vector2(axis_3d.x, -axis_3d.y) * axis_radius;
+ Vector2i axis_vector = Vector2(axis_3d.x, -axis_3d.y) * radius;
if (Math::abs(axis_3d.z) < 1.0) {
Axis2D pos_axis;
@@ -260,7 +259,7 @@ void ViewportRotationControl::_bind_methods() {
ClassDB::bind_method(D_METHOD("_gui_input"), &ViewportRotationControl::_gui_input);
}
-void Node3DEditorViewport::_update_camera(float p_interp_delta) {
+void Node3DEditorViewport::_update_camera(real_t p_interp_delta) {
bool is_orthogonal = camera->get_projection() == Camera3D::PROJECTION_ORTHOGONAL;
Cursor old_camera_cursor = camera_cursor;
@@ -280,7 +279,7 @@ void Node3DEditorViewport::_update_camera(float p_interp_delta) {
// We interpolate a different point here, because in freelook mode the focus point (cursor.pos) orbits around eye_pos
camera_cursor.eye_pos = old_camera_cursor.eye_pos.lerp(cursor.eye_pos, CLAMP(factor, 0, 1));
- float orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/orbit_inertia");
+ real_t orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/orbit_inertia");
orbit_inertia = MAX(0.0001, orbit_inertia);
camera_cursor.x_rot = Math::lerp(old_camera_cursor.x_rot, cursor.x_rot, MIN(1.f, p_interp_delta * (1 / orbit_inertia)));
camera_cursor.y_rot = Math::lerp(old_camera_cursor.y_rot, cursor.y_rot, MIN(1.f, p_interp_delta * (1 / orbit_inertia)));
@@ -298,13 +297,13 @@ void Node3DEditorViewport::_update_camera(float p_interp_delta) {
} else {
//when not being manipulated, move softly
- float free_orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/orbit_inertia");
- float free_translation_inertia = EDITOR_GET("editors/3d/navigation_feel/translation_inertia");
+ real_t free_orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/orbit_inertia");
+ real_t free_translation_inertia = EDITOR_GET("editors/3d/navigation_feel/translation_inertia");
//when being manipulated, move more quickly
- float manip_orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/manipulation_orbit_inertia");
- float manip_translation_inertia = EDITOR_GET("editors/3d/navigation_feel/manipulation_translation_inertia");
+ real_t manip_orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/manipulation_orbit_inertia");
+ real_t manip_translation_inertia = EDITOR_GET("editors/3d/navigation_feel/manipulation_translation_inertia");
- float zoom_inertia = EDITOR_GET("editors/3d/navigation_feel/zoom_inertia");
+ real_t zoom_inertia = EDITOR_GET("editors/3d/navigation_feel/zoom_inertia");
//determine if being manipulated
bool manipulated = Input::get_singleton()->get_mouse_button_mask() & (2 | 4);
@@ -312,8 +311,8 @@ void Node3DEditorViewport::_update_camera(float p_interp_delta) {
manipulated |= Input::get_singleton()->is_key_pressed(KEY_ALT);
manipulated |= Input::get_singleton()->is_key_pressed(KEY_CTRL);
- float orbit_inertia = MAX(0.00001, manipulated ? manip_orbit_inertia : free_orbit_inertia);
- float translation_inertia = MAX(0.0001, manipulated ? manip_translation_inertia : free_translation_inertia);
+ real_t orbit_inertia = MAX(0.00001, manipulated ? manip_orbit_inertia : free_orbit_inertia);
+ real_t translation_inertia = MAX(0.0001, manipulated ? manip_translation_inertia : free_translation_inertia);
zoom_inertia = MAX(0.0001, zoom_inertia);
camera_cursor.x_rot = Math::lerp(old_camera_cursor.x_rot, cursor.x_rot, MIN(1.f, p_interp_delta * (1 / orbit_inertia)));
@@ -328,7 +327,7 @@ void Node3DEditorViewport::_update_camera(float p_interp_delta) {
}
camera_cursor.pos = old_camera_cursor.pos.lerp(cursor.pos, MIN(1.f, p_interp_delta * (1 / translation_inertia)));
- camera_cursor.distance = Math::lerp(old_camera_cursor.distance, cursor.distance, MIN(1.f, p_interp_delta * (1 / zoom_inertia)));
+ camera_cursor.distance = Math::lerp(old_camera_cursor.distance, cursor.distance, MIN((real_t)1.0, p_interp_delta * (1 / zoom_inertia)));
}
}
@@ -436,16 +435,29 @@ Vector3 Node3DEditorViewport::_get_ray(const Vector2 &p_pos) const {
}
void Node3DEditorViewport::_clear_selected() {
- editor_selection->clear();
-}
-
-void Node3DEditorViewport::_select_clicked(bool p_append, bool p_single, bool p_allow_locked) {
- if (clicked.is_null()) {
- return;
+ _edit.gizmo = Ref<EditorNode3DGizmo>();
+ _edit.gizmo_handle = -1;
+ _edit.gizmo_initial_value = Variant();
+
+ Node3D *selected = spatial_editor->get_single_selected_node();
+ Node3DEditorSelectedItem *se = selected ? editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(selected) : nullptr;
+
+ if (se && se->gizmo.is_valid()) {
+ se->subgizmos.clear();
+ se->gizmo->redraw();
+ se->gizmo.unref();
+ spatial_editor->update_transform_gizmo();
+ } else {
+ editor_selection->clear();
+ Node3DEditor::get_singleton()->edit(nullptr);
}
+}
- Node *node = Object::cast_to<Node>(ObjectDB::get_instance(clicked));
+void Node3DEditorViewport::_select_clicked(bool p_allow_locked) {
+ Node *node = Object::cast_to<Node3D>(ObjectDB::get_instance(clicked));
Node3D *selected = Object::cast_to<Node3D>(node);
+ clicked = ObjectID();
+
if (!selected) {
return;
}
@@ -462,43 +474,27 @@ void Node3DEditorViewport::_select_clicked(bool p_append, bool p_single, bool p_
}
if (p_allow_locked || !_is_node_locked(selected)) {
- _select(selected, clicked_wants_append, true);
- }
-}
-
-void Node3DEditorViewport::_select(Node *p_node, bool p_append, bool p_single) {
- // Add or remove a single node from the selection
- if (p_append && p_single) {
- if (editor_selection->is_selected(p_node)) {
- // Already in the selection, remove it from the selected nodes
- editor_selection->remove_node(p_node);
+ if (clicked_wants_append) {
+ if (editor_selection->is_selected(selected)) {
+ editor_selection->remove_node(selected);
+ } else {
+ editor_selection->add_node(selected);
+ }
} else {
- // Add the item to the selection
- editor_selection->add_node(p_node);
- }
- } else if (p_append && !p_single) {
- // Add the item to the selection
- editor_selection->add_node(p_node);
- } else {
- // No append; single select
- editor_selection->clear();
- editor_selection->add_node(p_node);
- // Reselect
- if (Engine::get_singleton()->is_editor_hint()) {
- editor->call("edit_node", p_node);
+ if (!editor_selection->is_selected(selected)) {
+ editor_selection->clear();
+ editor_selection->add_node(selected);
+ editor->edit_node(selected);
+ }
}
- }
- if (editor_selection->get_selected_node_list().size() == 1) {
- editor->push_item(editor_selection->get_selected_node_list()[0]);
+ if (editor_selection->get_selected_node_list().size() == 1) {
+ editor->edit_node(editor_selection->get_selected_node_list()[0]);
+ }
}
}
-ObjectID Node3DEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, bool &r_includes_current, int *r_gizmo_handle, bool p_alt_select) {
- if (r_gizmo_handle) {
- *r_gizmo_handle = -1;
- }
-
+ObjectID Node3DEditorViewport::_select_ray(const Point2 &p_pos) {
Vector3 ray = _get_ray(p_pos);
Vector3 pos = _get_ray_pos(p_pos);
Vector2 shrinked_pos = p_pos / subviewport_container->get_stretch_shrink();
@@ -514,7 +510,6 @@ ObjectID Node3DEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, b
ObjectID closest;
Node *item = nullptr;
float closest_dist = 1e20;
- int selected_handle = -1;
for (int i = 0; i < instances.size(); i++) {
Node3D *spat = Object::cast_to<Node3D>(ObjectDB::get_instance(instances[i]));
@@ -523,38 +518,40 @@ ObjectID Node3DEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, b
continue;
}
- Ref<EditorNode3DGizmo> seg = spat->get_gizmo();
+ Vector<Ref<Node3DGizmo>> gizmos = spat->get_gizmos();
- if ((!seg.is_valid()) || found_gizmos.has(seg)) {
- continue;
- }
+ for (int j = 0; j < gizmos.size(); j++) {
+ Ref<EditorNode3DGizmo> seg = gizmos[j];
- found_gizmos.insert(seg);
- Vector3 point;
- Vector3 normal;
+ if ((!seg.is_valid()) || found_gizmos.has(seg)) {
+ continue;
+ }
- int handle = -1;
- bool inters = seg->intersect_ray(camera, shrinked_pos, point, normal, &handle, p_alt_select);
+ found_gizmos.insert(seg);
+ Vector3 point;
+ Vector3 normal;
- if (!inters) {
- continue;
- }
+ bool inters = seg->intersect_ray(camera, shrinked_pos, point, normal);
- float dist = pos.distance_to(point);
+ if (!inters) {
+ continue;
+ }
- if (dist < 0) {
- continue;
- }
+ const real_t dist = pos.distance_to(point);
- if (dist < closest_dist) {
- item = Object::cast_to<Node>(spat);
- if (item != edited_scene) {
- item = edited_scene->get_deepest_editable_node(item);
+ if (dist < 0) {
+ continue;
}
- closest = item->get_instance_id();
- closest_dist = dist;
- selected_handle = handle;
+ if (dist < closest_dist) {
+ item = Object::cast_to<Node>(spat);
+ if (item != edited_scene) {
+ item = edited_scene->get_deepest_editable_node(item);
+ }
+
+ closest = item->get_instance_id();
+ closest_dist = dist;
+ }
}
}
@@ -562,23 +559,15 @@ ObjectID Node3DEditorViewport::_select_ray(const Point2 &p_pos, bool p_append, b
return ObjectID();
}
- if (!editor_selection->is_selected(item) || (r_gizmo_handle && selected_handle >= 0)) {
- if (r_gizmo_handle) {
- *r_gizmo_handle = selected_handle;
- }
- }
-
return closest;
}
-void Node3DEditorViewport::_find_items_at_pos(const Point2 &p_pos, bool &r_includes_current, Vector<_RayResult> &results, bool p_alt_select, bool p_include_locked_nodes) {
+void Node3DEditorViewport::_find_items_at_pos(const Point2 &p_pos, Vector<_RayResult> &r_results, bool p_include_locked_nodes) {
Vector3 ray = _get_ray(p_pos);
Vector3 pos = _get_ray_pos(p_pos);
Vector<ObjectID> instances = RenderingServer::get_singleton()->instances_cull_ray(pos, ray, get_tree()->get_root()->get_world_3d()->get_scenario());
- Set<Ref<EditorNode3DGizmo>> found_gizmos;
-
- r_includes_current = false;
+ Set<Node3D *> found_nodes;
for (int i = 0; i < instances.size(); i++) {
Node3D *spat = Object::cast_to<Node3D>(ObjectDB::get_instance(instances[i]));
@@ -587,53 +576,48 @@ void Node3DEditorViewport::_find_items_at_pos(const Point2 &p_pos, bool &r_inclu
continue;
}
- Ref<EditorNode3DGizmo> seg = spat->get_gizmo();
-
- if (!seg.is_valid()) {
+ if (found_nodes.has(spat)) {
continue;
}
- if (found_gizmos.has(seg)) {
+ if (!p_include_locked_nodes && _is_node_locked(spat)) {
continue;
}
- found_gizmos.insert(seg);
- Vector3 point;
- Vector3 normal;
+ Vector<Ref<Node3DGizmo>> gizmos = spat->get_gizmos();
+ for (int j = 0; j < gizmos.size(); j++) {
+ Ref<EditorNode3DGizmo> seg = gizmos[j];
- int handle = -1;
- bool inters = seg->intersect_ray(camera, p_pos, point, normal, nullptr, p_alt_select);
+ if (!seg.is_valid()) {
+ continue;
+ }
- if (!inters) {
- continue;
- }
+ Vector3 point;
+ Vector3 normal;
- float dist = pos.distance_to(point);
+ bool inters = seg->intersect_ray(camera, p_pos, point, normal);
- if (dist < 0) {
- continue;
- }
+ if (!inters) {
+ continue;
+ }
- if (!p_include_locked_nodes && _is_node_locked(spat)) {
- continue;
- }
+ const real_t dist = pos.distance_to(point);
- if (editor_selection->is_selected(spat)) {
- r_includes_current = true;
- }
+ if (dist < 0) {
+ continue;
+ }
- _RayResult res;
- res.item = spat;
- res.depth = dist;
- res.handle = handle;
- results.push_back(res);
- }
+ found_nodes.insert(spat);
- if (results.is_empty()) {
- return;
+ _RayResult res;
+ res.item = spat;
+ res.depth = dist;
+ r_results.push_back(res);
+ break;
+ }
}
- results.sort();
+ r_results.sort();
}
Vector3 Node3DEditorViewport::_get_screen_to_space(const Vector3 &p_vector3) {
@@ -656,10 +640,13 @@ Vector3 Node3DEditorViewport::_get_screen_to_space(const Vector3 &p_vector3) {
void Node3DEditorViewport::_select_region() {
if (cursor.region_begin == cursor.region_end) {
+ if (!clicked_wants_append) {
+ _clear_selected();
+ }
return; //nothing really
}
- float z_offset = MAX(0.0, 5.0 - get_znear());
+ const real_t z_offset = MAX(0.0, 5.0 - get_znear());
Vector3 box[4] = {
Vector3(
@@ -702,7 +689,66 @@ void Node3DEditorViewport::_select_region() {
far.d += get_zfar();
frustum.push_back(far);
+ if (spatial_editor->get_single_selected_node()) {
+ Node3D *single_selected = spatial_editor->get_single_selected_node();
+ Node3DEditorSelectedItem *se = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(single_selected);
+
+ Ref<EditorNode3DGizmo> old_gizmo;
+ if (!clicked_wants_append) {
+ se->subgizmos.clear();
+ old_gizmo = se->gizmo;
+ se->gizmo.unref();
+ }
+
+ bool found_subgizmos = false;
+ Vector<Ref<Node3DGizmo>> gizmos = single_selected->get_gizmos();
+ for (int j = 0; j < gizmos.size(); j++) {
+ Ref<EditorNode3DGizmo> seg = gizmos[j];
+ if (!seg.is_valid()) {
+ continue;
+ }
+
+ if (se->gizmo.is_valid() && se->gizmo != seg) {
+ continue;
+ }
+
+ Vector<int> subgizmos = seg->subgizmos_intersect_frustum(camera, frustum);
+ if (!subgizmos.is_empty()) {
+ se->gizmo = seg;
+ for (int i = 0; i < subgizmos.size(); i++) {
+ int subgizmo_id = subgizmos[i];
+ if (!se->subgizmos.has(subgizmo_id)) {
+ se->subgizmos.insert(subgizmo_id, se->gizmo->get_subgizmo_transform(subgizmo_id));
+ }
+ }
+ found_subgizmos = true;
+ break;
+ }
+ }
+
+ if (!clicked_wants_append || found_subgizmos) {
+ if (se->gizmo.is_valid()) {
+ se->gizmo->redraw();
+ }
+
+ if (old_gizmo != se->gizmo && old_gizmo.is_valid()) {
+ old_gizmo->redraw();
+ }
+
+ spatial_editor->update_transform_gizmo();
+ }
+
+ if (found_subgizmos) {
+ return;
+ }
+ }
+
+ if (!clicked_wants_append) {
+ _clear_selected();
+ }
+
Vector<ObjectID> instances = RenderingServer::get_singleton()->instances_cull_convex(frustum, get_tree()->get_root()->get_world_3d()->get_scenario());
+ Set<Node3D *> found_nodes;
Vector<Node *> selected;
Node *edited_scene = get_tree()->get_edited_scene_root();
@@ -713,6 +759,12 @@ void Node3DEditorViewport::_select_region() {
continue;
}
+ if (found_nodes.has(sp)) {
+ continue;
+ }
+
+ found_nodes.insert(sp);
+
Node *item = Object::cast_to<Node>(sp);
if (item != edited_scene) {
item = edited_scene->get_deepest_editable_node(item);
@@ -731,28 +783,31 @@ void Node3DEditorViewport::_select_region() {
item = sel;
}
- if (selected.find(item) != -1) {
- continue;
- }
-
if (_is_node_locked(item)) {
continue;
}
- Ref<EditorNode3DGizmo> seg = sp->get_gizmo();
+ Vector<Ref<Node3DGizmo>> gizmos = sp->get_gizmos();
+ for (int j = 0; j < gizmos.size(); j++) {
+ Ref<EditorNode3DGizmo> seg = gizmos[j];
+ if (!seg.is_valid()) {
+ continue;
+ }
- if (!seg.is_valid()) {
- continue;
+ if (seg->intersect_frustum(camera, frustum)) {
+ selected.push_back(item);
+ }
}
+ }
- if (seg->intersect_frustum(camera, frustum)) {
- selected.push_back(item);
+ for (int i = 0; i < selected.size(); i++) {
+ if (!editor_selection->is_selected(selected[i])) {
+ editor_selection->add_node(selected[i]);
}
}
- bool single = selected.size() == 1;
- for (int i = 0; i < selected.size(); i++) {
- _select(selected[i], true, single);
+ if (editor_selection->get_selected_node_list().size() == 1) {
+ editor->edit_node(editor_selection->get_selected_node_list()[0]);
}
}
@@ -779,21 +834,34 @@ void Node3DEditorViewport::_compute_edit(const Point2 &p_point) {
spatial_editor->update_transform_gizmo();
_edit.center = spatial_editor->get_gizmo_transform().origin;
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ Node3D *selected = spatial_editor->get_single_selected_node();
+ Node3DEditorSelectedItem *se = selected ? editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(selected) : nullptr;
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
- if (!sp) {
- continue;
+ if (se && se->gizmo.is_valid()) {
+ for (Map<int, Transform3D>::Element *E = se->subgizmos.front(); E; E = E->next()) {
+ int subgizmo_id = E->key();
+ se->subgizmos[subgizmo_id] = se->gizmo->get_subgizmo_transform(subgizmo_id);
}
+ se->original_local = selected->get_transform();
+ se->original = selected->get_global_transform();
+ } else {
+ List<Node *> &selection = editor_selection->get_selected_node_list();
- Node3DEditorSelectedItem *se = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(sp);
- if (!se) {
- continue;
- }
+ for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
+ Node3D *sp = Object::cast_to<Node3D>(E->get());
+ if (!sp) {
+ continue;
+ }
+
+ Node3DEditorSelectedItem *sel_item = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(sp);
+
+ if (!sel_item) {
+ continue;
+ }
- se->original = se->sp->get_global_gizmo_transform();
- se->original_local = se->sp->get_local_gizmo_transform();
+ sel_item->original_local = sel_item->sp->get_local_gizmo_transform();
+ sel_item->original = sel_item->sp->get_global_gizmo_transform();
+ }
}
}
@@ -829,7 +897,7 @@ static int _get_key_modifier(Ref<InputEventWithModifiers> e) {
return 0;
}
-bool Node3DEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_highlight_only) {
+bool Node3DEditorViewport::_transform_gizmo_select(const Vector2 &p_screenpos, bool p_highlight_only) {
if (!spatial_editor->is_gizmo_visible()) {
return false;
}
@@ -844,20 +912,19 @@ bool Node3DEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_high
Vector3 ray = _get_ray(Vector2(p_screenpos.x, p_screenpos.y));
Transform3D gt = spatial_editor->get_gizmo_transform();
- float gs = gizmo_scale;
if (spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_MOVE) {
int col_axis = -1;
- float col_d = 1e20;
+ real_t col_d = 1e20;
for (int i = 0; i < 3; i++) {
- Vector3 grabber_pos = gt.origin + gt.basis.get_axis(i) * gs * (GIZMO_ARROW_OFFSET + (GIZMO_ARROW_SIZE * 0.5));
- float grabber_radius = gs * GIZMO_ARROW_SIZE;
+ const Vector3 grabber_pos = gt.origin + gt.basis.get_axis(i) * gizmo_scale * (GIZMO_ARROW_OFFSET + (GIZMO_ARROW_SIZE * 0.5));
+ const real_t grabber_radius = gizmo_scale * GIZMO_ARROW_SIZE;
Vector3 r;
if (Geometry3D::segment_intersects_sphere(ray_pos, ray_pos + ray * MAX_Z, grabber_pos, grabber_radius, &r)) {
- float d = r.distance_to(ray_pos);
+ const real_t d = r.distance_to(ray_pos);
if (d < col_d) {
col_d = d;
col_axis = i;
@@ -874,15 +941,19 @@ bool Node3DEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_high
Vector3 ivec2 = gt.basis.get_axis((i + 1) % 3).normalized();
Vector3 ivec3 = gt.basis.get_axis((i + 2) % 3).normalized();
- Vector3 grabber_pos = gt.origin + (ivec2 + ivec3) * gs * (GIZMO_PLANE_SIZE + GIZMO_PLANE_DST);
+ // Allow some tolerance to make the plane easier to click,
+ // even if the click is actually slightly outside the plane.
+ const Vector3 grabber_pos = gt.origin + (ivec2 + ivec3) * gizmo_scale * (GIZMO_PLANE_SIZE + GIZMO_PLANE_DST * 0.6667);
Vector3 r;
Plane plane(gt.origin, gt.basis.get_axis(i).normalized());
if (plane.intersects_ray(ray_pos, ray, &r)) {
- float dist = r.distance_to(grabber_pos);
- if (dist < (gs * GIZMO_PLANE_SIZE)) {
- float d = ray_pos.distance_to(r);
+ const real_t dist = r.distance_to(grabber_pos);
+ // Allow some tolerance to make the plane easier to click,
+ // even if the click is actually slightly outside the plane.
+ if (dist < (gizmo_scale * GIZMO_PLANE_SIZE * 1.5)) {
+ const real_t d = ray_pos.distance_to(r);
if (d < col_d) {
col_d = d;
col_axis = i;
@@ -919,12 +990,12 @@ bool Node3DEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_high
continue;
}
- float dist = r.distance_to(gt.origin);
- Vector3 r_dir = (r - gt.origin).normalized();
+ const real_t dist = r.distance_to(gt.origin);
+ const Vector3 r_dir = (r - gt.origin).normalized();
if (_get_camera_normal().dot(r_dir) <= 0.005) {
- if (dist > gs * (GIZMO_CIRCLE_SIZE - GIZMO_RING_HALF_WIDTH) && dist < gs * (GIZMO_CIRCLE_SIZE + GIZMO_RING_HALF_WIDTH)) {
- float d = ray_pos.distance_to(r);
+ if (dist > gizmo_scale * (GIZMO_CIRCLE_SIZE - GIZMO_RING_HALF_WIDTH) && dist < gizmo_scale * (GIZMO_CIRCLE_SIZE + GIZMO_RING_HALF_WIDTH)) {
+ const real_t d = ray_pos.distance_to(r);
if (d < col_d) {
col_d = d;
col_axis = i;
@@ -951,13 +1022,13 @@ bool Node3DEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_high
float col_d = 1e20;
for (int i = 0; i < 3; i++) {
- Vector3 grabber_pos = gt.origin + gt.basis.get_axis(i) * gs * GIZMO_SCALE_OFFSET;
- float grabber_radius = gs * GIZMO_ARROW_SIZE;
+ const Vector3 grabber_pos = gt.origin + gt.basis.get_axis(i) * gizmo_scale * GIZMO_SCALE_OFFSET;
+ const real_t grabber_radius = gizmo_scale * GIZMO_ARROW_SIZE;
Vector3 r;
if (Geometry3D::segment_intersects_sphere(ray_pos, ray_pos + ray * MAX_Z, grabber_pos, grabber_radius, &r)) {
- float d = r.distance_to(ray_pos);
+ const real_t d = r.distance_to(ray_pos);
if (d < col_d) {
col_d = d;
col_axis = i;
@@ -971,18 +1042,22 @@ bool Node3DEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_high
col_d = 1e20;
for (int i = 0; i < 3; i++) {
- Vector3 ivec2 = gt.basis.get_axis((i + 1) % 3).normalized();
- Vector3 ivec3 = gt.basis.get_axis((i + 2) % 3).normalized();
+ const Vector3 ivec2 = gt.basis.get_axis((i + 1) % 3).normalized();
+ const Vector3 ivec3 = gt.basis.get_axis((i + 2) % 3).normalized();
- Vector3 grabber_pos = gt.origin + (ivec2 + ivec3) * gs * (GIZMO_PLANE_SIZE + GIZMO_PLANE_DST);
+ // Allow some tolerance to make the plane easier to click,
+ // even if the click is actually slightly outside the plane.
+ const Vector3 grabber_pos = gt.origin + (ivec2 + ivec3) * gizmo_scale * (GIZMO_PLANE_SIZE + GIZMO_PLANE_DST * 0.6667);
Vector3 r;
Plane plane(gt.origin, gt.basis.get_axis(i).normalized());
if (plane.intersects_ray(ray_pos, ray, &r)) {
- float dist = r.distance_to(grabber_pos);
- if (dist < (gs * GIZMO_PLANE_SIZE)) {
- float d = ray_pos.distance_to(r);
+ const real_t dist = r.distance_to(grabber_pos);
+ // Allow some tolerance to make the plane easier to click,
+ // even if the click is actually slightly outside the plane.
+ if (dist < (gizmo_scale * GIZMO_PLANE_SIZE * 1.5)) {
+ const real_t d = ray_pos.distance_to(r);
if (d < col_d) {
col_d = d;
col_axis = i;
@@ -1015,6 +1090,87 @@ bool Node3DEditorViewport::_gizmo_select(const Vector2 &p_screenpos, bool p_high
return false;
}
+void Node3DEditorViewport::_transform_gizmo_apply(Node3D *p_node, const Transform3D &p_transform, bool p_local) {
+ if (p_transform.basis.determinant() == 0) {
+ return;
+ }
+
+ if (p_local) {
+ p_node->set_transform(p_transform);
+ } else {
+ p_node->set_global_transform(p_transform);
+ }
+}
+
+Transform3D Node3DEditorViewport::_compute_transform(TransformMode p_mode, const Transform3D &p_original, const Transform3D &p_original_local, Vector3 p_motion, double p_extra, bool p_local) {
+ switch (p_mode) {
+ case TRANSFORM_SCALE: {
+ if (p_local) {
+ Basis g = p_original.basis.orthonormalized();
+ Vector3 local_motion = g.inverse().xform(p_motion);
+
+ if (_edit.snap || spatial_editor->is_snap_enabled()) {
+ local_motion.snap(Vector3(p_extra, p_extra, p_extra));
+ }
+
+ Transform3D local_t;
+ local_t.basis = p_original_local.basis.scaled_local(local_motion + Vector3(1, 1, 1));
+ local_t.origin = p_original_local.origin;
+ return local_t;
+ } else {
+ Transform3D base = Transform3D(Basis(), _edit.center);
+ if (_edit.snap || spatial_editor->is_snap_enabled()) {
+ p_motion.snap(Vector3(p_extra, p_extra, p_extra));
+ }
+
+ Transform3D global_t;
+ global_t.basis.scale(p_motion + Vector3(1, 1, 1));
+ return base * (global_t * (base.inverse() * p_original));
+ }
+ }
+ case TRANSFORM_TRANSLATE: {
+ if (p_local) {
+ if (_edit.snap || spatial_editor->is_snap_enabled()) {
+ Basis g = p_original.basis.orthonormalized();
+ Vector3 local_motion = g.inverse().xform(p_motion);
+ local_motion.snap(Vector3(p_extra, p_extra, p_extra));
+
+ p_motion = g.xform(local_motion);
+ }
+
+ } else {
+ if (_edit.snap || spatial_editor->is_snap_enabled()) {
+ p_motion.snap(Vector3(p_extra, p_extra, p_extra));
+ }
+ }
+
+ // Apply translation
+ Transform3D t = p_original;
+ t.origin += p_motion;
+ return t;
+ }
+ case TRANSFORM_ROTATE: {
+ if (p_local) {
+ Transform3D r;
+ Vector3 axis = p_original_local.basis.xform(p_motion);
+ r.basis = Basis(axis.normalized(), p_extra) * p_original_local.basis;
+ r.origin = p_original_local.origin;
+ return r;
+ } else {
+ Transform3D r;
+ Basis local = p_original.basis * p_original_local.basis.inverse();
+ Vector3 axis = local.xform_inv(p_motion);
+ r.basis = local * Basis(axis.normalized(), p_extra) * p_original_local.basis;
+ r.origin = Basis(p_motion, p_extra).xform(p_original.origin - _edit.center) + _edit.center;
+ return r;
+ }
+ }
+ default: {
+ ERR_FAIL_V_MSG(Transform3D(), "Invalid mode in '_compute_transform'");
+ }
+ }
+}
+
void Node3DEditorViewport::_surface_mouse_enter() {
if (!surface->has_focus() && (!get_focus_owner() || !get_focus_owner()->is_text_field())) {
surface->grab_focus();
@@ -1038,7 +1194,7 @@ bool Node3DEditorViewport ::_is_node_locked(const Node *p_node) {
}
void Node3DEditorViewport::_list_select(Ref<InputEventMouseButton> b) {
- _find_items_at_pos(b->get_position(), clicked_includes_current, selection_results, b->is_shift_pressed(), spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT);
+ _find_items_at_pos(b->get_position(), selection_results, spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT);
Node *scene = editor->get_edited_scene();
@@ -1058,10 +1214,8 @@ void Node3DEditorViewport::_list_select(Ref<InputEventMouseButton> b) {
selection_results.clear();
if (clicked.is_valid()) {
- _select_clicked(clicked_wants_append, true, spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT);
- clicked = ObjectID();
+ _select_clicked(spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT);
}
-
} else if (!selection_results.is_empty()) {
NodePath root_path = get_tree()->get_edited_scene_root()->get_path();
StringName root_name = root_path.get_name(root_path.get_name_count() - 1);
@@ -1137,7 +1291,7 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
if (b.is_valid()) {
emit_signal(SNAME("clicked"), this);
- float zoom_factor = 1 + (ZOOM_FREELOOK_MULTIPLIER - 1) * b->get_factor();
+ const real_t zoom_factor = 1 + (ZOOM_FREELOOK_MULTIPLIER - 1) * b->get_factor();
switch (b->get_button_index()) {
case MOUSE_BUTTON_WHEEL_UP: {
if (is_freelook_active()) {
@@ -1179,8 +1333,8 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
List<Node *> &selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
+ for (Node *E : selection) {
+ Node3D *sp = Object::cast_to<Node3D>(E);
if (!sp) {
continue;
}
@@ -1190,7 +1344,20 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
continue;
}
- sp->set_global_transform(se->original);
+ if (se->gizmo.is_valid()) {
+ Vector<int> ids;
+ Vector<Transform3D> restore;
+
+ for (Map<int, Transform3D>::Element *GE = se->subgizmos.front(); GE; GE = GE->next()) {
+ ids.push_back(GE->key());
+ restore.push_back(GE->value());
+ }
+
+ se->gizmo->commit_subgizmos(ids, restore, true);
+ spatial_editor->update_transform_gizmo();
+ } else {
+ sp->set_global_transform(se->original);
+ }
}
surface->update();
set_message(TTR("Transform Aborted."), 3);
@@ -1262,37 +1429,92 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
_edit.snap = spatial_editor->is_snap_enabled();
_edit.mode = TRANSFORM_NONE;
- //gizmo has priority over everything
-
- bool can_select_gizmos = true;
+ bool can_select_gizmos = spatial_editor->get_single_selected_node();
{
int idx = view_menu->get_popup()->get_item_index(VIEW_GIZMOS);
- can_select_gizmos = view_menu->get_popup()->is_item_checked(idx);
+ can_select_gizmos = can_select_gizmos && view_menu->get_popup()->is_item_checked(idx);
}
- if (can_select_gizmos && spatial_editor->get_selected()) {
- Ref<EditorNode3DGizmo> seg = spatial_editor->get_selected()->get_gizmo();
- if (seg.is_valid()) {
- int handle = -1;
- Vector3 point;
- Vector3 normal;
- bool inters = seg->intersect_ray(camera, _edit.mouse_pos, point, normal, &handle, b->is_shift_pressed());
- if (inters && handle != -1) {
+ // Gizmo handles
+ if (can_select_gizmos) {
+ Vector<Ref<Node3DGizmo>> gizmos = spatial_editor->get_single_selected_node()->get_gizmos();
+
+ bool intersected_handle = false;
+ for (int i = 0; i < gizmos.size(); i++) {
+ Ref<EditorNode3DGizmo> seg = gizmos[i];
+
+ if ((!seg.is_valid())) {
+ continue;
+ }
+
+ int gizmo_handle = -1;
+ seg->handles_intersect_ray(camera, _edit.mouse_pos, b->is_shift_pressed(), gizmo_handle);
+ if (gizmo_handle != -1) {
_edit.gizmo = seg;
- _edit.gizmo_handle = handle;
- _edit.gizmo_initial_value = seg->get_handle_value(handle);
+ _edit.gizmo_handle = gizmo_handle;
+ _edit.gizmo_initial_value = seg->get_handle_value(gizmo_handle);
+ intersected_handle = true;
break;
}
}
+
+ if (intersected_handle) {
+ break;
+ }
}
- if (_gizmo_select(_edit.mouse_pos)) {
+ // Transform gizmo
+ if (_transform_gizmo_select(_edit.mouse_pos)) {
break;
}
+ // Subgizmos
+ if (can_select_gizmos) {
+ Node3DEditorSelectedItem *se = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(spatial_editor->get_single_selected_node());
+ Vector<Ref<Node3DGizmo>> gizmos = spatial_editor->get_single_selected_node()->get_gizmos();
+
+ bool intersected_subgizmo = false;
+ for (int i = 0; i < gizmos.size(); i++) {
+ Ref<EditorNode3DGizmo> seg = gizmos[i];
+
+ if ((!seg.is_valid())) {
+ continue;
+ }
+
+ int subgizmo_id = seg->subgizmos_intersect_ray(camera, _edit.mouse_pos);
+ if (subgizmo_id != -1) {
+ ERR_CONTINUE(!se);
+ if (b->is_shift_pressed()) {
+ if (se->subgizmos.has(subgizmo_id)) {
+ se->subgizmos.erase(subgizmo_id);
+ } else {
+ se->subgizmos.insert(subgizmo_id, seg->get_subgizmo_transform(subgizmo_id));
+ }
+ } else {
+ se->subgizmos.clear();
+ se->subgizmos.insert(subgizmo_id, seg->get_subgizmo_transform(subgizmo_id));
+ }
+
+ if (se->subgizmos.is_empty()) {
+ se->gizmo = Ref<EditorNode3DGizmo>();
+ } else {
+ se->gizmo = seg;
+ }
+
+ seg->redraw();
+ spatial_editor->update_transform_gizmo();
+ intersected_subgizmo = true;
+ break;
+ }
+ }
+
+ if (intersected_subgizmo) {
+ break;
+ }
+ }
+
clicked = ObjectID();
- clicked_includes_current = false;
if ((spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT && b->is_command_pressed()) || spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_ROTATE) {
/* HANDLE ROTATION */
@@ -1325,40 +1547,19 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
break;
}
- // todo scale
-
- int gizmo_handle = -1;
-
- clicked = _select_ray(b->get_position(), b->is_shift_pressed(), clicked_includes_current, &gizmo_handle, b->is_shift_pressed());
+ clicked = _select_ray(b->get_position());
//clicking is always deferred to either move or release
clicked_wants_append = b->is_shift_pressed();
if (clicked.is_null()) {
- if (!clicked_wants_append) {
- _clear_selected();
- }
-
//default to regionselect
cursor.region_select = true;
cursor.region_begin = b->get_position();
cursor.region_end = b->get_position();
}
- if (clicked.is_valid() && gizmo_handle >= 0) {
- Node3D *spa = Object::cast_to<Node3D>(ObjectDB::get_instance(clicked));
- if (spa) {
- Ref<EditorNode3DGizmo> seg = spa->get_gizmo();
- if (seg.is_valid()) {
- _edit.gizmo = seg;
- _edit.gizmo_handle = gizmo_handle;
- _edit.gizmo_initial_value = seg->get_handle_value(gizmo_handle);
- break;
- }
- }
- }
-
surface->update();
} else {
if (_edit.gizmo.is_valid()) {
@@ -1366,47 +1567,63 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
_edit.gizmo = Ref<EditorNode3DGizmo>();
break;
}
+
if (clicked.is_valid()) {
- _select_clicked(clicked_wants_append, true);
- // Processing was deferred.
- clicked = ObjectID();
+ _select_clicked(false);
}
if (cursor.region_select) {
- if (!clicked_wants_append) {
- _clear_selected();
- }
-
_select_region();
cursor.region_select = false;
surface->update();
}
if (_edit.mode != TRANSFORM_NONE) {
- static const char *_transform_name[4] = { "None", "Rotate", "Translate", "Scale" };
- undo_redo->create_action(_transform_name[_edit.mode]);
+ Node3D *selected = spatial_editor->get_single_selected_node();
+ Node3DEditorSelectedItem *se = selected ? editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(selected) : nullptr;
- List<Node *> &selection = editor_selection->get_selected_node_list();
+ if (se && se->gizmo.is_valid()) {
+ Vector<int> ids;
+ Vector<Transform3D> restore;
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
- if (!sp) {
- continue;
+ for (Map<int, Transform3D>::Element *GE = se->subgizmos.front(); GE; GE = GE->next()) {
+ ids.push_back(GE->key());
+ restore.push_back(GE->value());
}
- Node3DEditorSelectedItem *se = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(sp);
- if (!se) {
- continue;
- }
+ se->gizmo->commit_subgizmos(ids, restore, false);
+ spatial_editor->update_transform_gizmo();
+ } else {
+ static const char *_transform_name[4] = {
+ TTRC("None"),
+ TTRC("Rotate"),
+ // TRANSLATORS: This refers to the movement that changes the position of an object.
+ TTRC("Translate"),
+ TTRC("Scale"),
+ };
+ undo_redo->create_action(TTRGET(_transform_name[_edit.mode]));
+
+ List<Node *> &selection = editor_selection->get_selected_node_list();
+
+ for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
+ Node3D *sp = Object::cast_to<Node3D>(E->get());
+ if (!sp) {
+ continue;
+ }
+
+ Node3DEditorSelectedItem *sel_item = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(sp);
+ if (!sel_item) {
+ continue;
+ }
- undo_redo->add_do_method(sp, "set_global_transform", sp->get_global_gizmo_transform());
- undo_redo->add_undo_method(sp, "set_global_transform", se->original);
+ undo_redo->add_do_method(sp, "set_global_transform", sp->get_global_gizmo_transform());
+ undo_redo->add_undo_method(sp, "set_global_transform", sel_item->original);
+ }
+ undo_redo->commit_action();
}
- undo_redo->commit_action();
_edit.mode = TRANSFORM_NONE;
set_message("");
}
-
surface->update();
}
@@ -1421,31 +1638,39 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
if (m.is_valid()) {
_edit.mouse_pos = m->get_position();
- if (spatial_editor->get_selected()) {
- Ref<EditorNode3DGizmo> seg = spatial_editor->get_selected()->get_gizmo();
- if (seg.is_valid()) {
- int selected_handle = -1;
-
- int handle = -1;
- Vector3 point;
- Vector3 normal;
- bool inters = seg->intersect_ray(camera, _edit.mouse_pos, point, normal, &handle, false);
- if (inters && handle != -1) {
- selected_handle = handle;
+ if (spatial_editor->get_single_selected_node()) {
+ Vector<Ref<Node3DGizmo>> gizmos = spatial_editor->get_single_selected_node()->get_gizmos();
+
+ Ref<EditorNode3DGizmo> found_gizmo;
+ int found_handle = -1;
+
+ for (int i = 0; i < gizmos.size(); i++) {
+ Ref<EditorNode3DGizmo> seg = gizmos[i];
+ if (!seg.is_valid()) {
+ continue;
}
- if (selected_handle != spatial_editor->get_over_gizmo_handle()) {
- spatial_editor->set_over_gizmo_handle(selected_handle);
- spatial_editor->get_selected()->update_gizmo();
- if (selected_handle != -1) {
- spatial_editor->select_gizmo_highlight_axis(-1);
- }
+ seg->handles_intersect_ray(camera, _edit.mouse_pos, false, found_handle);
+
+ if (found_handle != -1) {
+ found_gizmo = seg;
+ break;
}
}
+
+ if (found_gizmo.is_valid()) {
+ spatial_editor->select_gizmo_highlight_axis(-1);
+ }
+
+ if (found_gizmo != spatial_editor->get_current_hover_gizmo() || found_handle != spatial_editor->get_current_hover_gizmo_handle()) {
+ spatial_editor->set_current_hover_gizmo(found_gizmo);
+ spatial_editor->set_current_hover_gizmo_handle(found_handle);
+ spatial_editor->get_single_selected_node()->update_gizmos();
+ }
}
- if (spatial_editor->get_over_gizmo_handle() == -1 && !(m->get_button_mask() & 1) && !_edit.gizmo.is_valid()) {
- _gizmo_select(_edit.mouse_pos, true);
+ if (spatial_editor->get_current_hover_gizmo().is_null() && !(m->get_button_mask() & 1) && !_edit.gizmo.is_valid()) {
+ _transform_gizmo_select(_edit.mouse_pos, true);
}
NavigationScheme nav_scheme = (NavigationScheme)EditorSettings::get_singleton()->get("editors/3d/navigation/navigation_scheme").operator int();
@@ -1469,11 +1694,6 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
} else {
const bool movement_threshold_passed = _edit.original_mouse_pos.distance_to(_edit.mouse_pos) > 8 * EDSCALE;
if (clicked.is_valid() && movement_threshold_passed) {
- if (!clicked_includes_current) {
- _select_clicked(clicked_wants_append, true);
- // Processing was deferred.
- }
-
_compute_edit(_edit.mouse_pos);
clicked = ObjectID();
@@ -1558,18 +1778,16 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
}
} else {
- float center_click_dist = click.distance_to(_edit.center);
- float center_inters_dist = intersection.distance_to(_edit.center);
+ const real_t center_click_dist = click.distance_to(_edit.center);
+ const real_t center_inters_dist = intersection.distance_to(_edit.center);
if (center_click_dist == 0) {
break;
}
- float scale = center_inters_dist - center_click_dist;
+ const real_t scale = center_inters_dist - center_click_dist;
motion = Vector3(scale, scale, scale);
}
- List<Node *> &selection = editor_selection->get_selected_node_list();
-
// Disable local transformation for TRANSFORM_VIEW
bool local_coords = (spatial_editor->are_local_coords_enabled() && _edit.plane != TRANSFORM_VIEW);
@@ -1582,8 +1800,9 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
set_message(TTR("Scaling: ") + "(" + String::num(motion_snapped.x, snap_step_decimals) + ", " +
String::num(motion_snapped.y, snap_step_decimals) + ", " + String::num(motion_snapped.z, snap_step_decimals) + ")");
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
+ List<Node *> &selection = editor_selection->get_selected_node_list();
+ for (Node *E : selection) {
+ Node3D *sp = Object::cast_to<Node3D>(E);
if (!sp) {
continue;
}
@@ -1597,44 +1816,22 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
continue;
}
- Transform3D original = se->original;
- Transform3D original_local = se->original_local;
- Transform3D base = Transform3D(Basis(), _edit.center);
- Transform3D t;
- Vector3 local_scale;
-
- if (local_coords) {
- Basis g = original.basis.orthonormalized();
- Vector3 local_motion = g.inverse().xform(motion);
-
- if (_edit.snap || spatial_editor->is_snap_enabled()) {
- local_motion.snap(Vector3(snap, snap, snap));
- }
-
- local_scale = original_local.basis.get_scale() * (local_motion + Vector3(1, 1, 1));
-
- // Prevent scaling to 0 it would break the gizmo
- Basis check = original_local.basis;
- check.scale(local_scale);
- if (check.determinant() != 0) {
- // Apply scale
- sp->set_scale(local_scale);
+ if (se->gizmo.is_valid()) {
+ for (Map<int, Transform3D>::Element *GE = se->subgizmos.front(); GE; GE = GE->next()) {
+ Transform3D xform = GE->get();
+ Transform3D new_xform = _compute_transform(TRANSFORM_SCALE, se->original * xform, xform, motion, snap, local_coords);
+ if (!local_coords) {
+ new_xform = se->original.affine_inverse() * new_xform;
+ }
+ se->gizmo->set_subgizmo_transform(GE->key(), new_xform);
}
-
} else {
- if (_edit.snap || spatial_editor->is_snap_enabled()) {
- motion.snap(Vector3(snap, snap, snap));
- }
-
- Transform3D r;
- r.basis.scale(motion + Vector3(1, 1, 1));
- t = base * (r * (base.inverse() * original));
-
- // Apply scale
- sp->set_global_transform(t);
+ Transform3D new_xform = _compute_transform(TRANSFORM_SCALE, se->original, se->original_local, motion, snap, local_coords);
+ _transform_gizmo_apply(se->sp, new_xform, local_coords);
}
}
+ spatial_editor->update_transform_gizmo();
surface->update();
} break;
@@ -1691,8 +1888,6 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
}
}
- List<Node *> &selection = editor_selection->get_selected_node_list();
-
// Disable local transformation for TRANSFORM_VIEW
bool local_coords = (spatial_editor->are_local_coords_enabled() && _edit.plane != TRANSFORM_VIEW);
@@ -1704,8 +1899,9 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
set_message(TTR("Translating: ") + "(" + String::num(motion_snapped.x, snap_step_decimals) + ", " +
String::num(motion_snapped.y, snap_step_decimals) + ", " + String::num(motion_snapped.z, snap_step_decimals) + ")");
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
+ List<Node *> &selection = editor_selection->get_selected_node_list();
+ for (Node *E : selection) {
+ Node3D *sp = Object::cast_to<Node3D>(E);
if (!sp) {
continue;
}
@@ -1719,30 +1915,20 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
continue;
}
- Transform3D original = se->original;
- Transform3D t;
-
- if (local_coords) {
- if (_edit.snap || spatial_editor->is_snap_enabled()) {
- Basis g = original.basis.orthonormalized();
- Vector3 local_motion = g.inverse().xform(motion);
- local_motion.snap(Vector3(snap, snap, snap));
-
- motion = g.xform(local_motion);
+ if (se->gizmo.is_valid()) {
+ for (Map<int, Transform3D>::Element *GE = se->subgizmos.front(); GE; GE = GE->next()) {
+ Transform3D xform = GE->get();
+ Transform3D new_xform = _compute_transform(TRANSFORM_TRANSLATE, se->original * xform, xform, motion, snap, local_coords);
+ new_xform = se->original.affine_inverse() * new_xform;
+ se->gizmo->set_subgizmo_transform(GE->key(), new_xform);
}
-
} else {
- if (_edit.snap || spatial_editor->is_snap_enabled()) {
- motion.snap(Vector3(snap, snap, snap));
- }
+ Transform3D new_xform = _compute_transform(TRANSFORM_TRANSLATE, se->original, se->original_local, motion, snap, local_coords);
+ _transform_gizmo_apply(se->sp, new_xform, false);
}
-
- // Apply translation
- t = original;
- t.origin += motion;
- sp->set_global_transform(t);
}
+ spatial_editor->update_transform_gizmo();
surface->update();
} break;
@@ -1796,12 +1982,11 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
set_message(vformat(TTR("Rotating %s degrees."), String::num(angle, snap_step_decimals)));
angle = Math::deg2rad(angle);
- List<Node *> &selection = editor_selection->get_selected_node_list();
-
bool local_coords = (spatial_editor->are_local_coords_enabled() && _edit.plane != TRANSFORM_VIEW); // Disable local transformation for TRANSFORM_VIEW
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
+ List<Node *> &selection = editor_selection->get_selected_node_list();
+ for (Node *E : selection) {
+ Node3D *sp = Object::cast_to<Node3D>(E);
if (!sp) {
continue;
}
@@ -1815,32 +2000,24 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
continue;
}
- Transform3D t;
-
- if (local_coords) {
- Transform3D original_local = se->original_local;
- Basis rot = Basis(axis, angle);
-
- t.basis = original_local.get_basis().orthonormalized() * rot;
- t.origin = original_local.origin;
-
- // Apply rotation
- sp->set_transform(t);
- sp->set_scale(original_local.basis.get_scale()); // re-apply original scale
+ Vector3 compute_axis = local_coords ? axis : plane.normal;
+ if (se->gizmo.is_valid()) {
+ for (Map<int, Transform3D>::Element *GE = se->subgizmos.front(); GE; GE = GE->next()) {
+ Transform3D xform = GE->get();
+ Transform3D new_xform = _compute_transform(TRANSFORM_ROTATE, se->original * xform, xform, compute_axis, angle, local_coords);
+ if (!local_coords) {
+ new_xform = se->original.affine_inverse() * new_xform;
+ }
+ se->gizmo->set_subgizmo_transform(GE->key(), new_xform);
+ }
} else {
- Transform3D original = se->original;
- Transform3D r;
- Transform3D base = Transform3D(Basis(), _edit.center);
-
- r.basis.rotate(plane.normal, angle);
- t = base * r * base.inverse() * original;
-
- // Apply rotation
- sp->set_global_transform(t);
+ Transform3D new_xform = _compute_transform(TRANSFORM_ROTATE, se->original, se->original_local, compute_axis, angle, local_coords);
+ _transform_gizmo_apply(se->sp, new_xform, local_coords);
}
}
+ spatial_editor->update_transform_gizmo();
surface->update();
} break;
@@ -2039,8 +2216,8 @@ void Node3DEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
List<Node *> &selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
+ for (Node *E : selection) {
+ Node3D *sp = Object::cast_to<Node3D>(E);
if (!sp) {
continue;
}
@@ -2278,7 +2455,7 @@ static bool is_shortcut_pressed(const String &p_path) {
if (shortcut.is_null()) {
return false;
}
- InputEventKey *k = Object::cast_to<InputEventKey>(shortcut->get_shortcut().ptr());
+ InputEventKey *k = Object::cast_to<InputEventKey>(shortcut->get_event().ptr());
if (k == nullptr) {
return false;
}
@@ -2698,7 +2875,7 @@ void Node3DEditorViewport::_draw() {
if (surface->has_focus()) {
Size2 size = surface->get_size();
Rect2 r = Rect2(Point2(), size);
- get_theme_stylebox(SNAME("Focus"), SNAME("EditorStyles"))->draw(surface->get_canvas_item(), r);
+ get_theme_stylebox(SNAME("FocusViewport"), SNAME("EditorStyles"))->draw(surface->get_canvas_item(), r);
}
if (cursor.region_select) {
@@ -2744,9 +2921,7 @@ void Node3DEditorViewport::_draw() {
handle_color = get_theme_color(SNAME("accent_color"), SNAME("Editor"));
break;
}
- handle_color.a = 1.0;
- const float brightness = 1.3;
- handle_color *= Color(brightness, brightness, brightness);
+ handle_color = handle_color.from_hsv(handle_color.get_h(), 0.25, 1.0, 1);
RenderingServer::get_singleton()->canvas_item_add_line(
ci,
@@ -2905,8 +3080,8 @@ void Node3DEditorViewport::_menu_option(int p_option) {
undo_redo->create_action(TTR("Align Transform with View"));
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
+ for (Node *E : selection) {
+ Node3D *sp = Object::cast_to<Node3D>(E);
if (!sp) {
continue;
}
@@ -2941,8 +3116,8 @@ void Node3DEditorViewport::_menu_option(int p_option) {
List<Node *> &selection = editor_selection->get_selected_node_list();
undo_redo->create_action(TTR("Align Rotation with View"));
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
+ for (Node *E : selection) {
+ Node3D *sp = Object::cast_to<Node3D>(E);
if (!sp) {
continue;
}
@@ -3310,8 +3485,7 @@ void Node3DEditorViewport::_selection_result_pressed(int p_result) {
clicked = selection_results[p_result].item->get_instance_id();
if (clicked.is_valid()) {
- _select_clicked(clicked_wants_append, true, spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT);
- clicked = ObjectID();
+ _select_clicked(spatial_editor->get_tool_mode() == Node3DEditor::TOOL_MODE_SELECT);
}
}
@@ -3351,18 +3525,15 @@ void Node3DEditorViewport::update_transform_gizmo_view() {
return;
}
- Vector3 camz = -camera_xform.get_basis().get_axis(2).normalized();
- Vector3 camy = -camera_xform.get_basis().get_axis(1).normalized();
- Plane p(camera_xform.origin, camz);
- float gizmo_d = MAX(Math::abs(p.distance_to(xform.origin)), CMP_EPSILON);
- float d0 = camera->unproject_position(camera_xform.origin + camz * gizmo_d).y;
- float d1 = camera->unproject_position(camera_xform.origin + camz * gizmo_d + camy).y;
- float dd = Math::abs(d0 - d1);
- if (dd == 0) {
- dd = 0.0001;
- }
+ const Vector3 camz = -camera_xform.get_basis().get_axis(2).normalized();
+ const Vector3 camy = -camera_xform.get_basis().get_axis(1).normalized();
+ const Plane p(camera_xform.origin, camz);
+ const real_t gizmo_d = MAX(Math::abs(p.distance_to(xform.origin)), CMP_EPSILON);
+ const real_t d0 = camera->unproject_position(camera_xform.origin + camz * gizmo_d).y;
+ const real_t d1 = camera->unproject_position(camera_xform.origin + camz * gizmo_d + camy).y;
+ const real_t dd = MAX(Math::abs(d0 - d1), CMP_EPSILON);
- float gizmo_size = EditorSettings::get_singleton()->get("editors/3d/manipulator_gizmo_size");
+ const real_t gizmo_size = EditorSettings::get_singleton()->get("editors/3d/manipulator_gizmo_size");
// At low viewport heights, multiply the gizmo scale based on the viewport height.
// This prevents the gizmo from growing very large and going outside the viewport.
const int viewport_base_height = 400 * MAX(1, EDSCALE);
@@ -3595,8 +3766,8 @@ void Node3DEditorViewport::focus_selection() {
List<Node *> &selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
+ for (Node *E : selection) {
+ Node3D *sp = Object::cast_to<Node3D>(E);
if (!sp) {
continue;
}
@@ -3606,12 +3777,19 @@ void Node3DEditorViewport::focus_selection() {
continue;
}
+ if (se->gizmo.is_valid()) {
+ for (Map<int, Transform3D>::Element *GE = se->subgizmos.front(); GE; GE = GE->next()) {
+ center += se->gizmo->get_subgizmo_transform(GE->key()).origin;
+ count++;
+ }
+ }
+
center += sp->get_global_gizmo_transform().origin;
count++;
}
if (count != 0) {
- center /= float(count);
+ center /= count;
}
cursor.pos = center;
@@ -3629,58 +3807,16 @@ Vector3 Node3DEditorViewport::_get_instance_position(const Point2 &p_pos) const
Vector3 world_ray = _get_ray(p_pos);
Vector3 world_pos = _get_ray_pos(p_pos);
- Vector<ObjectID> instances = RenderingServer::get_singleton()->instances_cull_ray(world_pos, world_ray, get_tree()->get_root()->get_world_3d()->get_scenario());
- Set<Ref<EditorNode3DGizmo>> found_gizmos;
-
- float closest_dist = MAX_DISTANCE;
-
Vector3 point = world_pos + world_ray * MAX_DISTANCE;
- Vector3 normal = Vector3(0.0, 0.0, 0.0);
-
- for (int i = 0; i < instances.size(); i++) {
- MeshInstance3D *mesh_instance = Object::cast_to<MeshInstance3D>(ObjectDB::get_instance(instances[i]));
-
- if (!mesh_instance) {
- continue;
- }
-
- Ref<EditorNode3DGizmo> seg = mesh_instance->get_gizmo();
-
- if ((!seg.is_valid()) || found_gizmos.has(seg)) {
- continue;
- }
-
- found_gizmos.insert(seg);
-
- Vector3 hit_point;
- Vector3 hit_normal;
- bool inters = seg->intersect_ray(camera, p_pos, hit_point, hit_normal, nullptr, false);
- if (!inters) {
- continue;
- }
-
- float dist = world_pos.distance_to(hit_point);
-
- if (dist < 0) {
- continue;
- }
+ PhysicsDirectSpaceState3D *ss = get_tree()->get_root()->get_world_3d()->get_direct_space_state();
+ PhysicsDirectSpaceState3D::RayResult result;
- if (dist < closest_dist) {
- closest_dist = dist;
- point = hit_point;
- normal = hit_normal;
- }
- }
- Vector3 offset = Vector3();
- for (int i = 0; i < 3; i++) {
- if (normal[i] > 0.0) {
- offset[i] = (preview_bounds->get_size()[i] - (preview_bounds->get_size()[i] + preview_bounds->get_position()[i]));
- } else if (normal[i] < 0.0) {
- offset[i] = -(preview_bounds->get_size()[i] + preview_bounds->get_position()[i]);
- }
+ if (ss->intersect_ray(world_pos, world_pos + world_ray * MAX_DISTANCE, result)) {
+ point = result.position;
}
- return point + offset;
+
+ return point;
}
AABB Node3DEditorViewport::_calculate_spatial_bounds(const Node3D *p_parent, bool p_exclude_top_level_transform) {
@@ -3931,6 +4067,7 @@ void Node3DEditorViewport::drop_data_fw(const Point2 &p_point, const Variant &p_
}
bool is_shift = Input::get_singleton()->is_key_pressed(KEY_SHIFT);
+ bool is_ctrl = Input::get_singleton()->is_key_pressed(KEY_CTRL);
selected_files.clear();
Dictionary d = p_data;
@@ -3938,29 +4075,32 @@ void Node3DEditorViewport::drop_data_fw(const Point2 &p_point, const Variant &p_
selected_files = d["files"];
}
- List<Node *> list = editor->get_editor_selection()->get_selected_node_list();
- if (list.size() == 0) {
- Node *root_node = editor->get_edited_scene();
+ List<Node *> selected_nodes = editor->get_editor_selection()->get_selected_node_list();
+ Node *root_node = editor->get_edited_scene();
+ if (selected_nodes.size() == 1) {
+ Node *selected_node = selected_nodes[0];
+ target_node = root_node;
+ if (is_ctrl) {
+ target_node = selected_node;
+ } else if (is_shift && selected_node != root_node) {
+ target_node = selected_node->get_parent();
+ }
+ } else if (selected_nodes.size() == 0) {
if (root_node) {
- list.push_back(root_node);
+ target_node = root_node;
} else {
- accept->set_text(TTR("No parent to instance a child at."));
+ accept->set_text(TTR("Cannot drag and drop into scene with no root node."));
accept->popup_centered();
_remove_preview();
return;
}
- }
- if (list.size() != 1) {
- accept->set_text(TTR("This operation requires a single selected node."));
+ } else {
+ accept->set_text(TTR("Cannot drag and drop into multiple selected nodes."));
accept->popup_centered();
_remove_preview();
return;
}
- target_node = list[0];
- if (is_shift && target_node != editor->get_edited_scene()) {
- target_node = target_node->get_parent();
- }
drop_pos = p_point;
_perform_drop_data();
@@ -3972,9 +4112,8 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, Edito
_edit.mode = TRANSFORM_NONE;
_edit.plane = TRANSFORM_VIEW;
- _edit.edited_gizmo = 0;
_edit.snap = true;
- _edit.gizmo_handle = 0;
+ _edit.gizmo_handle = -1;
index = p_index;
editor = p_editor;
@@ -3982,7 +4121,6 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, Edito
editor_selection = editor->get_editor_selection();
undo_redo = editor->get_undo_redo();
- clicked_includes_current = false;
orthogonal = false;
auto_orthogonal = false;
lock_rotation = false;
@@ -4005,7 +4143,7 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, Edito
surface->set_anchors_and_offsets_preset(Control::PRESET_WIDE);
surface->set_clip_contents(true);
camera = memnew(Camera3D);
- camera->set_disable_gizmo(true);
+ camera->set_disable_gizmos(true);
camera->set_cull_mask(((1 << 20) - 1) | (1 << (GIZMO_BASE_LAYER + p_index)) | (1 << GIZMO_EDIT_LAYER) | (1 << GIZMO_GRID_LAYER) | (1 << MISC_TOOL_LAYER));
viewport->add_child(camera);
camera->make_current();
@@ -4134,6 +4272,7 @@ Node3DEditorViewport::Node3DEditorViewport(Node3DEditor *p_spatial_editor, Edito
preview_camera = memnew(CheckBox);
preview_camera->set_text(TTR("Preview"));
+ preview_camera->set_shortcut(ED_SHORTCUT("spatial_editor/toggle_camera_preview", TTR("Toggle Camera Preview"), KEY_MASK_CMD | KEY_P));
vbox->add_child(preview_camera);
preview_camera->set_h_size_flags(0);
preview_camera->hide();
@@ -4314,14 +4453,14 @@ void Node3DEditorViewportContainer::_gui_input(const Ref<InputEvent> &p_event) {
}
if (dragging_h) {
- float new_ratio = drag_begin_ratio.x + (mm->get_position().x - drag_begin_pos.x) / get_size().width;
+ real_t new_ratio = drag_begin_ratio.x + (mm->get_position().x - drag_begin_pos.x) / get_size().width;
new_ratio = CLAMP(new_ratio, 40 / get_size().width, (get_size().width - 40) / get_size().width);
ratio_h = new_ratio;
queue_sort();
update();
}
if (dragging_v) {
- float new_ratio = drag_begin_ratio.y + (mm->get_position().y - drag_begin_pos.y) / get_size().height;
+ real_t new_ratio = drag_begin_ratio.y + (mm->get_position().y - drag_begin_pos.y) / get_size().height;
new_ratio = CLAMP(new_ratio, 40 / get_size().height, (get_size().height - 40) / get_size().height);
ratio_v = new_ratio;
queue_sort();
@@ -4574,43 +4713,54 @@ void Node3DEditor::select_gizmo_highlight_axis(int p_axis) {
}
void Node3DEditor::update_transform_gizmo() {
- List<Node *> &selection = editor_selection->get_selected_node_list();
- AABB center;
- bool first = true;
+ int count = 0;
+ bool local_gizmo_coords = are_local_coords_enabled();
+ Vector3 gizmo_center;
Basis gizmo_basis;
- bool local_gizmo_coords = are_local_coords_enabled();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
- if (!sp) {
- continue;
- }
+ Node3DEditorSelectedItem *se = selected ? editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(selected) : nullptr;
- Node3DEditorSelectedItem *se = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(sp);
- if (!se) {
- continue;
+ if (se && se->gizmo.is_valid()) {
+ for (Map<int, Transform3D>::Element *E = se->subgizmos.front(); E; E = E->next()) {
+ Transform3D xf = se->sp->get_global_transform() * se->gizmo->get_subgizmo_transform(E->key());
+ gizmo_center += xf.origin;
+ if (count == 0 && local_gizmo_coords) {
+ gizmo_basis = xf.basis;
+ gizmo_basis.orthonormalize();
+ }
+ count++;
}
+ } else {
+ List<Node *> &selection = editor_selection->get_selected_node_list();
+ for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
+ Node3D *sp = Object::cast_to<Node3D>(E->get());
+ if (!sp) {
+ continue;
+ }
+
+ if (sp->has_meta("_edit_lock_")) {
+ continue;
+ }
- Transform3D xf = se->sp->get_global_gizmo_transform();
+ Node3DEditorSelectedItem *sel_item = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(sp);
+ if (!sel_item) {
+ continue;
+ }
- if (first) {
- center.position = xf.origin;
- first = false;
- if (local_gizmo_coords) {
+ Transform3D xf = sel_item->sp->get_global_transform();
+ gizmo_center += xf.origin;
+ if (count == 0 && local_gizmo_coords) {
gizmo_basis = xf.basis;
gizmo_basis.orthonormalize();
}
- } else {
- center.expand_to(xf.origin);
- gizmo_basis = Basis();
+ count++;
}
}
- Vector3 pcenter = center.position + center.size * 0.5;
- gizmo.visible = !first;
- gizmo.transform.origin = pcenter;
- gizmo.transform.basis = gizmo_basis;
+ gizmo.visible = count > 0;
+ gizmo.transform.origin = (count > 0) ? gizmo_center / count : Vector3();
+ gizmo.transform.basis = (count == 1) ? gizmo_basis : Basis();
for (uint32_t i = 0; i < VIEWPORTS_COUNT; i++) {
viewports[i]->update_transform_gizmo_view();
@@ -4621,7 +4771,7 @@ void _update_all_gizmos(Node *p_node) {
for (int i = p_node->get_child_count() - 1; 0 <= i; --i) {
Node3D *spatial_node = Object::cast_to<Node3D>(p_node->get_child(i));
if (spatial_node) {
- spatial_node->update_gizmo();
+ spatial_node->update_gizmos();
}
_update_all_gizmos(p_node->get_child(i));
@@ -4655,7 +4805,9 @@ Object *Node3DEditor::_get_editor_data(Object *p_what) {
RS::get_singleton()->instance_geometry_set_cast_shadows_setting(
si->sbox_instance,
RS::SHADOW_CASTING_SETTING_OFF);
- RS::get_singleton()->instance_set_layer_mask(si->sbox_instance, 1 << Node3DEditorViewport::MISC_TOOL_LAYER);
+ // Use the Edit layer to hide the selection box when View Gizmos is disabled, since it is a bit distracting.
+ // It's still possible to approximately guess what is selected by looking at the manipulation gizmo position.
+ RS::get_singleton()->instance_set_layer_mask(si->sbox_instance, 1 << Node3DEditorViewport::GIZMO_EDIT_LAYER);
RS::get_singleton()->instance_geometry_set_flag(si->sbox_instance, RS::INSTANCE_FLAG_IGNORE_OCCLUSION_CULLING, true);
si->sbox_instance_xray = RenderingServer::get_singleton()->instance_create2(
selection_box_xray->get_rid(),
@@ -4663,7 +4815,9 @@ Object *Node3DEditor::_get_editor_data(Object *p_what) {
RS::get_singleton()->instance_geometry_set_cast_shadows_setting(
si->sbox_instance_xray,
RS::SHADOW_CASTING_SETTING_OFF);
- RS::get_singleton()->instance_set_layer_mask(si->sbox_instance_xray, 1 << Node3DEditorViewport::MISC_TOOL_LAYER);
+ // Use the Edit layer to hide the selection box when View Gizmos is disabled, since it is a bit distracting.
+ // It's still possible to approximately guess what is selected by looking at the manipulation gizmo position.
+ RS::get_singleton()->instance_set_layer_mask(si->sbox_instance_xray, 1 << Node3DEditorViewport::GIZMO_EDIT_LAYER);
RS::get_singleton()->instance_geometry_set_flag(si->sbox_instance, RS::INSTANCE_FLAG_IGNORE_OCCLUSION_CULLING, true);
return si;
@@ -4857,13 +5011,13 @@ void Node3DEditor::set_state(const Dictionary &p_state) {
}
if (d.has("zfar")) {
- settings_zfar->set_value(float(d["zfar"]));
+ settings_zfar->set_value(double(d["zfar"]));
}
if (d.has("znear")) {
- settings_znear->set_value(float(d["znear"]));
+ settings_znear->set_value(double(d["znear"]));
}
if (d.has("fov")) {
- settings_fov->set_value(float(d["fov"]));
+ settings_fov->set_value(double(d["fov"]));
}
if (d.has("show_grid")) {
bool use = d["show_grid"];
@@ -4940,22 +5094,38 @@ void Node3DEditor::set_state(const Dictionary &p_state) {
void Node3DEditor::edit(Node3D *p_spatial) {
if (p_spatial != selected) {
if (selected) {
- Ref<EditorNode3DGizmo> seg = selected->get_gizmo();
- if (seg.is_valid()) {
+ Vector<Ref<Node3DGizmo>> gizmos = selected->get_gizmos();
+ for (int i = 0; i < gizmos.size(); i++) {
+ Ref<EditorNode3DGizmo> seg = gizmos[i];
+ if (!seg.is_valid()) {
+ continue;
+ }
seg->set_selected(false);
- selected->update_gizmo();
}
+
+ Node3DEditorSelectedItem *se = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(selected);
+ if (se) {
+ se->gizmo.unref();
+ se->subgizmos.clear();
+ }
+
+ selected->update_gizmos();
}
selected = p_spatial;
- over_gizmo_handle = -1;
+ current_hover_gizmo = Ref<EditorNode3DGizmo>();
+ current_hover_gizmo_handle = -1;
if (selected) {
- Ref<EditorNode3DGizmo> seg = selected->get_gizmo();
- if (seg.is_valid()) {
+ Vector<Ref<Node3DGizmo>> gizmos = selected->get_gizmos();
+ for (int i = 0; i < gizmos.size(); i++) {
+ Ref<EditorNode3DGizmo> seg = gizmos[i];
+ if (!seg.is_valid()) {
+ continue;
+ }
seg->set_selected(true);
- selected->update_gizmo();
}
+ selected->update_gizmos();
}
}
}
@@ -4993,8 +5163,8 @@ void Node3DEditor::_xform_dialog_action() {
List<Node *> &selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
+ for (Node *E : selection) {
+ Node3D *sp = Object::cast_to<Node3D>(E);
if (!sp) {
continue;
}
@@ -5230,8 +5400,8 @@ void Node3DEditor::_menu_item_pressed(int p_option) {
List<Node *> &selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *spatial = Object::cast_to<Node3D>(E->get());
+ for (Node *E : selection) {
+ Node3D *spatial = Object::cast_to<Node3D>(E);
if (!spatial || !spatial->is_inside_tree()) {
continue;
}
@@ -5255,8 +5425,8 @@ void Node3DEditor::_menu_item_pressed(int p_option) {
List<Node *> &selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *spatial = Object::cast_to<Node3D>(E->get());
+ for (Node *E : selection) {
+ Node3D *spatial = Object::cast_to<Node3D>(E);
if (!spatial || !spatial->is_inside_tree()) {
continue;
}
@@ -5280,8 +5450,8 @@ void Node3DEditor::_menu_item_pressed(int p_option) {
List<Node *> &selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *spatial = Object::cast_to<Node3D>(E->get());
+ for (Node *E : selection) {
+ Node3D *spatial = Object::cast_to<Node3D>(E);
if (!spatial || !spatial->is_inside_tree()) {
continue;
}
@@ -5304,8 +5474,8 @@ void Node3DEditor::_menu_item_pressed(int p_option) {
undo_redo->create_action(TTR("Ungroup Selected"));
List<Node *> &selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *spatial = Object::cast_to<Node3D>(E->get());
+ for (Node *E : selection) {
+ Node3D *spatial = Object::cast_to<Node3D>(E);
if (!spatial || !spatial->is_inside_tree()) {
continue;
}
@@ -5479,8 +5649,7 @@ void fragment() {
gizmo_color[i] = mat;
Ref<StandardMaterial3D> mat_hl = mat->duplicate();
- const float brightness = 1.3;
- const Color albedo = Color(col.r * brightness, col.g * brightness, col.b * brightness);
+ const Color albedo = col.from_hsv(col.get_h(), 0.25, 1.0, 1);
mat_hl->set_albedo(albedo);
gizmo_color_hl[i] = mat_hl;
@@ -5587,7 +5756,7 @@ void fragment() {
surftool->begin(Mesh::PRIMITIVE_TRIANGLES);
int n = 128; // number of circle segments
- int m = 6; // number of thickness segments
+ int m = 3; // number of thickness segments
real_t step = Math_TAU / n;
for (int j = 0; j < n; ++j) {
@@ -5795,7 +5964,7 @@ void fragment() {
surftool->commit(scale_plane_gizmo[i]);
Ref<StandardMaterial3D> plane_mat_hl = plane_mat->duplicate();
- plane_mat_hl->set_albedo(Color(col.r * 1.3, col.g * 1.3, col.b * 1.3));
+ plane_mat_hl->set_albedo(col.from_hsv(col.get_h(), 0.25, 1.0, 1));
plane_gizmo_color_hl[i] = plane_mat_hl; // needed, so we can draw planes from both sides
}
}
@@ -5804,6 +5973,18 @@ void fragment() {
_generate_selection_boxes();
}
+void Node3DEditor::_update_context_menu_stylebox() {
+ // This must be called when the theme changes to follow the new accent color.
+ Ref<StyleBoxFlat> context_menu_stylebox = memnew(StyleBoxFlat);
+ const Color accent_color = EditorNode::get_singleton()->get_gui_base()->get_theme_color("accent_color", "Editor");
+ context_menu_stylebox->set_bg_color(accent_color * Color(1, 1, 1, 0.1));
+ // Add an underline to the StyleBox, but prevent its minimum vertical size from changing.
+ context_menu_stylebox->set_border_color(accent_color);
+ context_menu_stylebox->set_border_width(SIDE_BOTTOM, Math::round(2 * EDSCALE));
+ context_menu_stylebox->set_default_margin(SIDE_BOTTOM, 0);
+ context_menu_container->add_theme_style_override("panel", context_menu_stylebox);
+}
+
void Node3DEditor::_update_gizmos_menu() {
gizmos_menu->clear();
@@ -6027,13 +6208,27 @@ void Node3DEditor::update_grid() {
_init_grid();
}
-bool Node3DEditor::is_any_freelook_active() const {
- for (unsigned int i = 0; i < VIEWPORTS_COUNT; ++i) {
- if (viewports[i]->is_freelook_active()) {
- return true;
+void Node3DEditor::_selection_changed() {
+ _refresh_menu_icons();
+ if (selected && editor_selection->get_selected_node_list().size() != 1) {
+ Vector<Ref<Node3DGizmo>> gizmos = selected->get_gizmos();
+ for (int i = 0; i < gizmos.size(); i++) {
+ Ref<EditorNode3DGizmo> seg = gizmos[i];
+ if (!seg.is_valid()) {
+ continue;
+ }
+ seg->set_selected(false);
+ }
+
+ Node3DEditorSelectedItem *se = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(selected);
+ if (se) {
+ se->gizmo.unref();
+ se->subgizmos.clear();
}
+ selected->update_gizmos();
+ selected = nullptr;
}
- return false;
+ update_transform_gizmo();
}
void Node3DEditor::_refresh_menu_icons() {
@@ -6046,14 +6241,14 @@ void Node3DEditor::_refresh_menu_icons() {
all_locked = false;
all_grouped = false;
} else {
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- if (Object::cast_to<Node3D>(E->get()) && !Object::cast_to<Node3D>(E->get())->has_meta("_edit_lock_")) {
+ for (Node *E : selection) {
+ if (Object::cast_to<Node3D>(E) && !Object::cast_to<Node3D>(E)->has_meta("_edit_lock_")) {
all_locked = false;
break;
}
}
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- if (Object::cast_to<Node3D>(E->get()) && !Object::cast_to<Node3D>(E->get())->has_meta("_edit_group_")) {
+ for (Node *E : selection) {
+ if (Object::cast_to<Node3D>(E) && !Object::cast_to<Node3D>(E)->has_meta("_edit_group_")) {
all_grouped = false;
break;
}
@@ -6106,8 +6301,8 @@ void Node3DEditor::snap_selected_nodes_to_floor() {
List<Node *> &selection = editor_selection->get_selected_node_list();
Dictionary snap_data;
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node3D *sp = Object::cast_to<Node3D>(E->get());
+ for (Node *E : selection) {
+ Node3D *sp = Object::cast_to<Node3D>(E);
if (sp) {
Vector3 from = Vector3();
Vector3 position_offset = Vector3();
@@ -6295,101 +6490,122 @@ void Node3DEditor::_add_environment_to_scene(bool p_already_added_sun) {
undo_redo->commit_action();
}
+void Node3DEditor::_update_theme() {
+ tool_button[Node3DEditor::TOOL_MODE_SELECT]->set_icon(get_theme_icon(SNAME("ToolSelect"), SNAME("EditorIcons")));
+ tool_button[Node3DEditor::TOOL_MODE_MOVE]->set_icon(get_theme_icon(SNAME("ToolMove"), SNAME("EditorIcons")));
+ tool_button[Node3DEditor::TOOL_MODE_ROTATE]->set_icon(get_theme_icon(SNAME("ToolRotate"), SNAME("EditorIcons")));
+ tool_button[Node3DEditor::TOOL_MODE_SCALE]->set_icon(get_theme_icon(SNAME("ToolScale"), SNAME("EditorIcons")));
+ tool_button[Node3DEditor::TOOL_MODE_LIST_SELECT]->set_icon(get_theme_icon(SNAME("ListSelect"), SNAME("EditorIcons")));
+ tool_button[Node3DEditor::TOOL_LOCK_SELECTED]->set_icon(get_theme_icon(SNAME("Lock"), SNAME("EditorIcons")));
+ tool_button[Node3DEditor::TOOL_UNLOCK_SELECTED]->set_icon(get_theme_icon(SNAME("Unlock"), SNAME("EditorIcons")));
+ tool_button[Node3DEditor::TOOL_GROUP_SELECTED]->set_icon(get_theme_icon(SNAME("Group"), SNAME("EditorIcons")));
+ tool_button[Node3DEditor::TOOL_UNGROUP_SELECTED]->set_icon(get_theme_icon(SNAME("Ungroup"), SNAME("EditorIcons")));
+
+ tool_option_button[Node3DEditor::TOOL_OPT_LOCAL_COORDS]->set_icon(get_theme_icon(SNAME("Object"), SNAME("EditorIcons")));
+ tool_option_button[Node3DEditor::TOOL_OPT_USE_SNAP]->set_icon(get_theme_icon(SNAME("Snap"), SNAME("EditorIcons")));
+ tool_option_button[Node3DEditor::TOOL_OPT_OVERRIDE_CAMERA]->set_icon(get_theme_icon(SNAME("Camera3D"), SNAME("EditorIcons")));
+
+ view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_1_VIEWPORT), get_theme_icon(SNAME("Panels1"), SNAME("EditorIcons")));
+ view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_2_VIEWPORTS), get_theme_icon(SNAME("Panels2"), SNAME("EditorIcons")));
+ view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_2_VIEWPORTS_ALT), get_theme_icon(SNAME("Panels2Alt"), SNAME("EditorIcons")));
+ view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_3_VIEWPORTS), get_theme_icon(SNAME("Panels3"), SNAME("EditorIcons")));
+ view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_3_VIEWPORTS_ALT), get_theme_icon(SNAME("Panels3Alt"), SNAME("EditorIcons")));
+ view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_4_VIEWPORTS), get_theme_icon(SNAME("Panels4"), SNAME("EditorIcons")));
+
+ sun_button->set_icon(get_theme_icon(SNAME("DirectionalLight3D"), SNAME("EditorIcons")));
+ environ_button->set_icon(get_theme_icon(SNAME("WorldEnvironment"), SNAME("EditorIcons")));
+ sun_environ_settings->set_icon(get_theme_icon(SNAME("GuiTabMenuHl"), SNAME("EditorIcons")));
+
+ sun_title->add_theme_font_override("font", get_theme_font(SNAME("title_font"), SNAME("Window")));
+ environ_title->add_theme_font_override("font", get_theme_font(SNAME("title_font"), SNAME("Window")));
+}
+
void Node3DEditor::_notification(int p_what) {
- if (p_what == NOTIFICATION_READY) {
- tool_button[Node3DEditor::TOOL_MODE_SELECT]->set_icon(get_theme_icon(SNAME("ToolSelect"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_MODE_MOVE]->set_icon(get_theme_icon(SNAME("ToolMove"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_MODE_ROTATE]->set_icon(get_theme_icon(SNAME("ToolRotate"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_MODE_SCALE]->set_icon(get_theme_icon(SNAME("ToolScale"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_MODE_LIST_SELECT]->set_icon(get_theme_icon(SNAME("ListSelect"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_LOCK_SELECTED]->set_icon(get_theme_icon(SNAME("Lock"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_UNLOCK_SELECTED]->set_icon(get_theme_icon(SNAME("Unlock"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_GROUP_SELECTED]->set_icon(get_theme_icon(SNAME("Group"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_UNGROUP_SELECTED]->set_icon(get_theme_icon(SNAME("Ungroup"), SNAME("EditorIcons")));
-
- tool_option_button[Node3DEditor::TOOL_OPT_LOCAL_COORDS]->set_icon(get_theme_icon(SNAME("Object"), SNAME("EditorIcons")));
- tool_option_button[Node3DEditor::TOOL_OPT_USE_SNAP]->set_icon(get_theme_icon(SNAME("Snap"), SNAME("EditorIcons")));
- tool_option_button[Node3DEditor::TOOL_OPT_OVERRIDE_CAMERA]->set_icon(get_theme_icon(SNAME("Camera3D"), SNAME("EditorIcons")));
-
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_1_VIEWPORT), get_theme_icon(SNAME("Panels1"), SNAME("EditorIcons")));
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_2_VIEWPORTS), get_theme_icon(SNAME("Panels2"), SNAME("EditorIcons")));
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_2_VIEWPORTS_ALT), get_theme_icon(SNAME("Panels2Alt"), SNAME("EditorIcons")));
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_3_VIEWPORTS), get_theme_icon(SNAME("Panels3"), SNAME("EditorIcons")));
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_3_VIEWPORTS_ALT), get_theme_icon(SNAME("Panels3Alt"), SNAME("EditorIcons")));
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_4_VIEWPORTS), get_theme_icon(SNAME("Panels4"), SNAME("EditorIcons")));
-
- _menu_item_pressed(MENU_VIEW_USE_1_VIEWPORT);
-
- _refresh_menu_icons();
-
- get_tree()->connect("node_removed", callable_mp(this, &Node3DEditor::_node_removed));
- get_tree()->connect("node_added", callable_mp(this, &Node3DEditor::_node_added));
- EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor()->connect("node_changed", callable_mp(this, &Node3DEditor::_refresh_menu_icons));
- editor_selection->connect("selection_changed", callable_mp(this, &Node3DEditor::_refresh_menu_icons));
-
- editor->connect("stop_pressed", callable_mp(this, &Node3DEditor::_update_camera_override_button), make_binds(false));
- editor->connect("play_pressed", callable_mp(this, &Node3DEditor::_update_camera_override_button), make_binds(true));
-
- sun_button->set_icon(get_theme_icon(SNAME("DirectionalLight3D"), SNAME("EditorIcons")));
- environ_button->set_icon(get_theme_icon(SNAME("WorldEnvironment"), SNAME("EditorIcons")));
- sun_environ_settings->set_icon(get_theme_icon(SNAME("GuiTabMenuHl"), SNAME("EditorIcons")));
+ switch (p_what) {
+ case NOTIFICATION_READY: {
+ _menu_item_pressed(MENU_VIEW_USE_1_VIEWPORT);
- _update_preview_environment();
- sun_title->add_theme_font_override("font", get_theme_font(SNAME("title_font"), SNAME("Window")));
- environ_title->add_theme_font_override("font", get_theme_font(SNAME("title_font"), SNAME("Window")));
+ _refresh_menu_icons();
- sun_state->set_custom_minimum_size(sun_vb->get_combined_minimum_size());
- environ_state->set_custom_minimum_size(environ_vb->get_combined_minimum_size());
- } else if (p_what == NOTIFICATION_ENTER_TREE) {
- _register_all_gizmos();
- _update_gizmos_menu();
- _init_indicators();
- } else if (p_what == NOTIFICATION_THEME_CHANGED) {
- _update_gizmos_menu_theme();
- sun_title->add_theme_font_override("font", get_theme_font(SNAME("title_font"), SNAME("Window")));
- environ_title->add_theme_font_override("font", get_theme_font(SNAME("title_font"), SNAME("Window")));
- } else if (p_what == NOTIFICATION_EXIT_TREE) {
- _finish_indicators();
- } else if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
- tool_button[Node3DEditor::TOOL_MODE_SELECT]->set_icon(get_theme_icon(SNAME("ToolSelect"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_MODE_MOVE]->set_icon(get_theme_icon(SNAME("ToolMove"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_MODE_ROTATE]->set_icon(get_theme_icon(SNAME("ToolRotate"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_MODE_SCALE]->set_icon(get_theme_icon(SNAME("ToolScale"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_MODE_LIST_SELECT]->set_icon(get_theme_icon(SNAME("ListSelect"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_LOCK_SELECTED]->set_icon(get_theme_icon(SNAME("Lock"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_UNLOCK_SELECTED]->set_icon(get_theme_icon(SNAME("Unlock"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_GROUP_SELECTED]->set_icon(get_theme_icon(SNAME("Group"), SNAME("EditorIcons")));
- tool_button[Node3DEditor::TOOL_UNGROUP_SELECTED]->set_icon(get_theme_icon(SNAME("Ungroup"), SNAME("EditorIcons")));
-
- tool_option_button[Node3DEditor::TOOL_OPT_LOCAL_COORDS]->set_icon(get_theme_icon(SNAME("Object"), SNAME("EditorIcons")));
- tool_option_button[Node3DEditor::TOOL_OPT_USE_SNAP]->set_icon(get_theme_icon(SNAME("Snap"), SNAME("EditorIcons")));
-
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_1_VIEWPORT), get_theme_icon(SNAME("Panels1"), SNAME("EditorIcons")));
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_2_VIEWPORTS), get_theme_icon(SNAME("Panels2"), SNAME("EditorIcons")));
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_2_VIEWPORTS_ALT), get_theme_icon(SNAME("Panels2Alt"), SNAME("EditorIcons")));
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_3_VIEWPORTS), get_theme_icon(SNAME("Panels3"), SNAME("EditorIcons")));
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_3_VIEWPORTS_ALT), get_theme_icon(SNAME("Panels3Alt"), SNAME("EditorIcons")));
- view_menu->get_popup()->set_item_icon(view_menu->get_popup()->get_item_index(MENU_VIEW_USE_4_VIEWPORTS), get_theme_icon(SNAME("Panels4"), SNAME("EditorIcons")));
-
- // Update grid color by rebuilding grid.
- _finish_grid();
- _init_grid();
- } else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
- if (!is_visible() && tool_option_button[TOOL_OPT_OVERRIDE_CAMERA]->is_pressed()) {
- EditorDebuggerNode *debugger = EditorDebuggerNode::get_singleton();
+ get_tree()->connect("node_removed", callable_mp(this, &Node3DEditor::_node_removed));
+ get_tree()->connect("node_added", callable_mp(this, &Node3DEditor::_node_added));
+ EditorNode::get_singleton()->get_scene_tree_dock()->get_tree_editor()->connect("node_changed", callable_mp(this, &Node3DEditor::_refresh_menu_icons));
+ editor_selection->connect("selection_changed", callable_mp(this, &Node3DEditor::_selection_changed));
+
+ editor->connect("stop_pressed", callable_mp(this, &Node3DEditor::_update_camera_override_button), make_binds(false));
+ editor->connect("play_pressed", callable_mp(this, &Node3DEditor::_update_camera_override_button), make_binds(true));
+
+ _update_preview_environment();
+
+ sun_state->set_custom_minimum_size(sun_vb->get_combined_minimum_size());
+ environ_state->set_custom_minimum_size(environ_vb->get_combined_minimum_size());
+ } break;
+ case NOTIFICATION_ENTER_TREE: {
+ _update_theme();
+ _register_all_gizmos();
+ _update_gizmos_menu();
+ _init_indicators();
+ } break;
+ case NOTIFICATION_EXIT_TREE: {
+ _finish_indicators();
+ } break;
+ case NOTIFICATION_THEME_CHANGED: {
+ _update_theme();
+ _update_gizmos_menu_theme();
+ _update_context_menu_stylebox();
+ sun_title->add_theme_font_override("font", get_theme_font(SNAME("title_font"), SNAME("Window")));
+ environ_title->add_theme_font_override("font", get_theme_font(SNAME("title_font"), SNAME("Window")));
+ } break;
+ case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
+ // Update grid color by rebuilding grid.
+ _finish_grid();
+ _init_grid();
+ } break;
+ case NOTIFICATION_VISIBILITY_CHANGED: {
+ if (!is_visible() && tool_option_button[TOOL_OPT_OVERRIDE_CAMERA]->is_pressed()) {
+ EditorDebuggerNode *debugger = EditorDebuggerNode::get_singleton();
- debugger->set_camera_override(EditorDebuggerNode::OVERRIDE_NONE);
- tool_option_button[TOOL_OPT_OVERRIDE_CAMERA]->set_pressed(false);
+ debugger->set_camera_override(EditorDebuggerNode::OVERRIDE_NONE);
+ tool_option_button[TOOL_OPT_OVERRIDE_CAMERA]->set_pressed(false);
+ }
+ } break;
+ }
+}
+
+bool Node3DEditor::is_subgizmo_selected(int p_id) {
+ Node3DEditorSelectedItem *se = selected ? editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(selected) : nullptr;
+ if (se) {
+ return se->subgizmos.has(p_id);
+ }
+ return false;
+}
+
+bool Node3DEditor::is_current_selected_gizmo(const EditorNode3DGizmo *p_gizmo) {
+ Node3DEditorSelectedItem *se = selected ? editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(selected) : nullptr;
+ if (se) {
+ return se->gizmo == p_gizmo;
+ }
+ return false;
+}
+
+Vector<int> Node3DEditor::get_subgizmo_selection() {
+ Node3DEditorSelectedItem *se = selected ? editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(selected) : nullptr;
+
+ Vector<int> ret;
+ if (se) {
+ for (Map<int, Transform3D>::Element *E = se->subgizmos.front(); E; E = E->next()) {
+ ret.push_back(E->key());
}
}
+ return ret;
}
void Node3DEditor::add_control_to_menu_panel(Control *p_control) {
- hbc_menu->add_child(p_control);
+ hbc_context_menu->add_child(p_control);
}
void Node3DEditor::remove_control_from_menu_panel(Control *p_control) {
- hbc_menu->remove_child(p_control);
+ hbc_context_menu->remove_child(p_control);
}
void Node3DEditor::set_can_preview(Camera3D *p_preview) {
@@ -6411,23 +6627,43 @@ void Node3DEditor::_request_gizmo(Object *p_obj) {
if (!sp) {
return;
}
- if (editor->get_edited_scene() && (sp == editor->get_edited_scene() || (sp->get_owner() && editor->get_edited_scene()->is_ancestor_of(sp)))) {
- Ref<EditorNode3DGizmo> seg;
+ bool is_selected = (sp == selected);
+
+ if (editor->get_edited_scene() && (sp == editor->get_edited_scene() || (sp->get_owner() && editor->get_edited_scene()->is_ancestor_of(sp)))) {
for (int i = 0; i < gizmo_plugins_by_priority.size(); ++i) {
- seg = gizmo_plugins_by_priority.write[i]->get_gizmo(sp);
+ Ref<EditorNode3DGizmo> seg = gizmo_plugins_by_priority.write[i]->get_gizmo(sp);
if (seg.is_valid()) {
- sp->set_gizmo(seg);
+ sp->add_gizmo(seg);
- if (sp == selected) {
- seg->set_selected(true);
- selected->update_gizmo();
+ if (is_selected != seg->is_selected()) {
+ seg->set_selected(is_selected);
}
-
- break;
}
}
+ sp->update_gizmos();
+ }
+}
+
+void Node3DEditor::_clear_subgizmo_selection(Object *p_obj) {
+ Node3D *sp = nullptr;
+ if (p_obj) {
+ sp = Object::cast_to<Node3D>(p_obj);
+ } else {
+ sp = selected;
+ }
+
+ if (!sp) {
+ return;
+ }
+
+ Node3DEditorSelectedItem *se = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(sp);
+ if (se) {
+ se->subgizmos.clear();
+ se->gizmo.unref();
+ sp->update_gizmos();
+ update_transform_gizmo();
}
}
@@ -6516,7 +6752,13 @@ void Node3DEditor::_node_removed(Node *p_node) {
}
if (p_node == selected) {
+ Node3DEditorSelectedItem *se = editor_selection->get_node_editor_data<Node3DEditorSelectedItem>(selected);
+ if (se) {
+ se->gizmo.unref();
+ se->subgizmos.clear();
+ }
selected = nullptr;
+ update_transform_gizmo();
}
}
@@ -6554,6 +6796,7 @@ void Node3DEditor::_bind_methods() {
ClassDB::bind_method("_unhandled_key_input", &Node3DEditor::_unhandled_key_input);
ClassDB::bind_method("_get_editor_data", &Node3DEditor::_get_editor_data);
ClassDB::bind_method("_request_gizmo", &Node3DEditor::_request_gizmo);
+ ClassDB::bind_method("_clear_subgizmo_selection", &Node3DEditor::_clear_subgizmo_selection);
ClassDB::bind_method("_refresh_menu_icons", &Node3DEditor::_refresh_menu_icons);
ADD_SIGNAL(MethodInfo("transform_key_request"));
@@ -6769,8 +7012,7 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) {
tool_button[TOOL_MODE_SELECT]->connect("pressed", callable_mp(this, &Node3DEditor::_menu_item_pressed), button_binds);
tool_button[TOOL_MODE_SELECT]->set_shortcut(ED_SHORTCUT("spatial_editor/tool_select", TTR("Select Mode"), KEY_Q));
tool_button[TOOL_MODE_SELECT]->set_shortcut_context(this);
- tool_button[TOOL_MODE_SELECT]->set_tooltip(keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate\nAlt+Drag: Move\nAlt+RMB: Show list of all nodes at position clicked, including locked."));
-
+ tool_button[TOOL_MODE_SELECT]->set_tooltip(keycode_get_string(KEY_MASK_CMD) + TTR("Drag: Rotate selected node around pivot.") + "\n" + TTR("Alt+RMB: Show list of all nodes at position clicked, including locked."));
hbc_menu->add_child(memnew(VSeparator));
tool_button[TOOL_MODE_MOVE] = memnew(Button);
@@ -6946,7 +7188,20 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) {
view_menu->set_shortcut_context(this);
hbc_menu->add_child(view_menu);
+ hbc_menu->add_child(memnew(VSeparator));
+
+ context_menu_container = memnew(PanelContainer);
+ hbc_context_menu = memnew(HBoxContainer);
+ context_menu_container->add_child(hbc_context_menu);
+ // Use a custom stylebox to make contextual menu items stand out from the rest.
+ // This helps with editor usability as contextual menu items change when selecting nodes,
+ // even though it may not be immediately obvious at first.
+ hbc_menu->add_child(context_menu_container);
+ _update_context_menu_stylebox();
+
+ // Get the view menu popup and have it stay open when a checkable item is selected
p = view_menu->get_popup();
+ p->set_hide_on_checkable_item_selection(false);
accept = memnew(AcceptDialog);
editor->get_gui_base()->add_child(accept);
@@ -7130,7 +7385,7 @@ Node3DEditor::Node3DEditor(EditorNode *p_editor) {
EditorSettings::get_singleton()->add_property_hint(PropertyInfo(Variant::FLOAT, "editors/3d/manipulator_gizmo_opacity", PROPERTY_HINT_RANGE, "0,1,0.01"));
EDITOR_DEF("editors/3d/navigation/show_viewport_rotation_gizmo", true);
- over_gizmo_handle = -1;
+ current_hover_gizmo_handle = -1;
{
//sun popup
@@ -7365,8 +7620,8 @@ Vector3 Node3DEditor::snap_point(Vector3 p_target, Vector3 p_start) const {
return p_target;
}
-float Node3DEditor::get_translate_snap() const {
- float snap_value;
+double Node3DEditor::get_translate_snap() const {
+ double snap_value;
if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
snap_value = snap_translate->get_text().to_float() / 10.0;
} else {
@@ -7376,8 +7631,8 @@ float Node3DEditor::get_translate_snap() const {
return snap_value;
}
-float Node3DEditor::get_rotate_snap() const {
- float snap_value;
+double Node3DEditor::get_rotate_snap() const {
+ double snap_value;
if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
snap_value = snap_rotate->get_text().to_float() / 3.0;
} else {
@@ -7387,8 +7642,8 @@ float Node3DEditor::get_rotate_snap() const {
return snap_value;
}
-float Node3DEditor::get_scale_snap() const {
- float snap_value;
+double Node3DEditor::get_scale_snap() const {
+ double snap_value;
if (Input::get_singleton()->is_key_pressed(KEY_SHIFT)) {
snap_value = snap_scale->get_text().to_float() / 2.0;
} else {
@@ -7444,303 +7699,3 @@ Node3DEditorPlugin::Node3DEditorPlugin(EditorNode *p_node) {
Node3DEditorPlugin::~Node3DEditorPlugin() {
}
-
-void EditorNode3DGizmoPlugin::create_material(const String &p_name, const Color &p_color, bool p_billboard, bool p_on_top, bool p_use_vertex_color) {
- Color instantiated_color = EDITOR_DEF("editors/3d_gizmos/gizmo_colors/instantiated", Color(0.7, 0.7, 0.7, 0.6));
-
- Vector<Ref<StandardMaterial3D>> mats;
-
- for (int i = 0; i < 4; i++) {
- bool selected = i % 2 == 1;
- bool instantiated = i < 2;
-
- Ref<StandardMaterial3D> material = Ref<StandardMaterial3D>(memnew(StandardMaterial3D));
-
- Color color = instantiated ? instantiated_color : p_color;
-
- if (!selected) {
- color.a *= 0.3;
- }
-
- material->set_albedo(color);
- material->set_shading_mode(StandardMaterial3D::SHADING_MODE_UNSHADED);
- material->set_transparency(StandardMaterial3D::TRANSPARENCY_ALPHA);
- material->set_render_priority(StandardMaterial3D::RENDER_PRIORITY_MIN + 1);
- material->set_cull_mode(StandardMaterial3D::CULL_DISABLED);
-
- if (p_use_vertex_color) {
- material->set_flag(StandardMaterial3D::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
- material->set_flag(StandardMaterial3D::FLAG_SRGB_VERTEX_COLOR, true);
- }
-
- if (p_billboard) {
- material->set_billboard_mode(StandardMaterial3D::BILLBOARD_ENABLED);
- }
-
- if (p_on_top && selected) {
- material->set_on_top_of_alpha();
- }
-
- mats.push_back(material);
- }
-
- materials[p_name] = mats;
-}
-
-void EditorNode3DGizmoPlugin::create_icon_material(const String &p_name, const Ref<Texture2D> &p_texture, bool p_on_top, const Color &p_albedo) {
- Color instantiated_color = EDITOR_DEF("editors/3d_gizmos/gizmo_colors/instantiated", Color(0.7, 0.7, 0.7, 0.6));
-
- Vector<Ref<StandardMaterial3D>> icons;
-
- for (int i = 0; i < 4; i++) {
- bool selected = i % 2 == 1;
- bool instantiated = i < 2;
-
- Ref<StandardMaterial3D> icon = Ref<StandardMaterial3D>(memnew(StandardMaterial3D));
-
- Color color = instantiated ? instantiated_color : p_albedo;
-
- if (!selected) {
- color.a *= 0.85;
- }
-
- icon->set_albedo(color);
-
- icon->set_shading_mode(StandardMaterial3D::SHADING_MODE_UNSHADED);
- icon->set_flag(StandardMaterial3D::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
- icon->set_flag(StandardMaterial3D::FLAG_SRGB_VERTEX_COLOR, true);
- icon->set_cull_mode(StandardMaterial3D::CULL_DISABLED);
- icon->set_depth_draw_mode(StandardMaterial3D::DEPTH_DRAW_DISABLED);
- icon->set_transparency(StandardMaterial3D::TRANSPARENCY_ALPHA);
- icon->set_texture(StandardMaterial3D::TEXTURE_ALBEDO, p_texture);
- icon->set_flag(StandardMaterial3D::FLAG_FIXED_SIZE, true);
- icon->set_billboard_mode(StandardMaterial3D::BILLBOARD_ENABLED);
- icon->set_render_priority(StandardMaterial3D::RENDER_PRIORITY_MIN);
-
- if (p_on_top && selected) {
- icon->set_on_top_of_alpha();
- }
-
- icons.push_back(icon);
- }
-
- materials[p_name] = icons;
-}
-
-void EditorNode3DGizmoPlugin::create_handle_material(const String &p_name, bool p_billboard, const Ref<Texture2D> &p_icon) {
- Ref<StandardMaterial3D> handle_material = Ref<StandardMaterial3D>(memnew(StandardMaterial3D));
-
- handle_material->set_shading_mode(StandardMaterial3D::SHADING_MODE_UNSHADED);
- handle_material->set_flag(StandardMaterial3D::FLAG_USE_POINT_SIZE, true);
- Ref<Texture2D> handle_t = p_icon != nullptr ? p_icon : Node3DEditor::get_singleton()->get_theme_icon(SNAME("Editor3DHandle"), SNAME("EditorIcons"));
- handle_material->set_point_size(handle_t->get_width());
- handle_material->set_texture(StandardMaterial3D::TEXTURE_ALBEDO, handle_t);
- handle_material->set_albedo(Color(1, 1, 1));
- handle_material->set_flag(StandardMaterial3D::FLAG_ALBEDO_FROM_VERTEX_COLOR, true);
- handle_material->set_flag(StandardMaterial3D::FLAG_SRGB_VERTEX_COLOR, true);
- handle_material->set_on_top_of_alpha();
- if (p_billboard) {
- handle_material->set_billboard_mode(StandardMaterial3D::BILLBOARD_ENABLED);
- handle_material->set_on_top_of_alpha();
- }
- handle_material->set_transparency(StandardMaterial3D::TRANSPARENCY_ALPHA);
-
- materials[p_name] = Vector<Ref<StandardMaterial3D>>();
- materials[p_name].push_back(handle_material);
-}
-
-void EditorNode3DGizmoPlugin::add_material(const String &p_name, Ref<StandardMaterial3D> p_material) {
- materials[p_name] = Vector<Ref<StandardMaterial3D>>();
- materials[p_name].push_back(p_material);
-}
-
-Ref<StandardMaterial3D> EditorNode3DGizmoPlugin::get_material(const String &p_name, const Ref<EditorNode3DGizmo> &p_gizmo) {
- ERR_FAIL_COND_V(!materials.has(p_name), Ref<StandardMaterial3D>());
- ERR_FAIL_COND_V(materials[p_name].size() == 0, Ref<StandardMaterial3D>());
-
- if (p_gizmo.is_null() || materials[p_name].size() == 1) {
- return materials[p_name][0];
- }
-
- int index = (p_gizmo->is_selected() ? 1 : 0) + (p_gizmo->is_editable() ? 2 : 0);
-
- Ref<StandardMaterial3D> mat = materials[p_name][index];
-
- if (current_state == ON_TOP && p_gizmo->is_selected()) {
- mat->set_flag(StandardMaterial3D::FLAG_DISABLE_DEPTH_TEST, true);
- } else {
- mat->set_flag(StandardMaterial3D::FLAG_DISABLE_DEPTH_TEST, false);
- }
-
- return mat;
-}
-
-String EditorNode3DGizmoPlugin::get_gizmo_name() const {
- if (get_script_instance() && get_script_instance()->has_method("_get_gizmo_name")) {
- return get_script_instance()->call("_get_gizmo_name");
- }
- return TTR("Nameless gizmo");
-}
-
-int EditorNode3DGizmoPlugin::get_priority() const {
- if (get_script_instance() && get_script_instance()->has_method("_get_priority")) {
- return get_script_instance()->call("_get_priority");
- }
- return 0;
-}
-
-Ref<EditorNode3DGizmo> EditorNode3DGizmoPlugin::get_gizmo(Node3D *p_spatial) {
- if (get_script_instance() && get_script_instance()->has_method("get_gizmo")) {
- return get_script_instance()->call("get_gizmo", p_spatial);
- }
-
- Ref<EditorNode3DGizmo> ref = create_gizmo(p_spatial);
-
- if (ref.is_null()) {
- return ref;
- }
-
- ref->set_plugin(this);
- ref->set_spatial_node(p_spatial);
- ref->set_hidden(current_state == HIDDEN);
-
- current_gizmos.push_back(ref.ptr());
- return ref;
-}
-
-void EditorNode3DGizmoPlugin::_bind_methods() {
-#define GIZMO_REF PropertyInfo(Variant::OBJECT, "gizmo", PROPERTY_HINT_RESOURCE_TYPE, "EditorNode3DGizmo")
-
- BIND_VMETHOD(MethodInfo(Variant::BOOL, "_has_gizmo", PropertyInfo(Variant::OBJECT, "spatial", PROPERTY_HINT_RESOURCE_TYPE, "Node3D")));
- BIND_VMETHOD(MethodInfo(GIZMO_REF, "_create_gizmo", PropertyInfo(Variant::OBJECT, "spatial", PROPERTY_HINT_RESOURCE_TYPE, "Node3D")));
-
- ClassDB::bind_method(D_METHOD("create_material", "name", "color", "billboard", "on_top", "use_vertex_color"), &EditorNode3DGizmoPlugin::create_material, DEFVAL(false), DEFVAL(false), DEFVAL(false));
- ClassDB::bind_method(D_METHOD("create_icon_material", "name", "texture", "on_top", "color"), &EditorNode3DGizmoPlugin::create_icon_material, DEFVAL(false), DEFVAL(Color(1, 1, 1, 1)));
- ClassDB::bind_method(D_METHOD("create_handle_material", "name", "billboard", "texture"), &EditorNode3DGizmoPlugin::create_handle_material, DEFVAL(false), DEFVAL(Variant()));
- ClassDB::bind_method(D_METHOD("add_material", "name", "material"), &EditorNode3DGizmoPlugin::add_material);
-
- ClassDB::bind_method(D_METHOD("get_material", "name", "gizmo"), &EditorNode3DGizmoPlugin::get_material, DEFVAL(Ref<EditorNode3DGizmo>()));
-
- BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_gizmo_name"));
- BIND_VMETHOD(MethodInfo(Variant::INT, "_get_priority"));
- BIND_VMETHOD(MethodInfo(Variant::BOOL, "_can_be_hidden"));
- BIND_VMETHOD(MethodInfo(Variant::BOOL, "_is_selectable_when_hidden"));
-
- BIND_VMETHOD(MethodInfo("_redraw", GIZMO_REF));
- BIND_VMETHOD(MethodInfo(Variant::STRING, "_get_handle_name", GIZMO_REF, PropertyInfo(Variant::INT, "index")));
-
- MethodInfo hvget(Variant::NIL, "_get_handle_value", GIZMO_REF, PropertyInfo(Variant::INT, "index"));
- hvget.return_val.usage |= PROPERTY_USAGE_NIL_IS_VARIANT;
- BIND_VMETHOD(hvget);
-
- BIND_VMETHOD(MethodInfo("_set_handle", GIZMO_REF, PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::OBJECT, "camera", PROPERTY_HINT_RESOURCE_TYPE, "Camera3D"), PropertyInfo(Variant::VECTOR2, "point")));
- MethodInfo cm = MethodInfo("_commit_handle", GIZMO_REF, PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::NIL, "restore"), PropertyInfo(Variant::BOOL, "cancel"));
- cm.default_arguments.push_back(false);
- BIND_VMETHOD(cm);
-
- BIND_VMETHOD(MethodInfo(Variant::BOOL, "_is_handle_highlighted", GIZMO_REF, PropertyInfo(Variant::INT, "index")));
-
-#undef GIZMO_REF
-}
-
-bool EditorNode3DGizmoPlugin::has_gizmo(Node3D *p_spatial) {
- if (get_script_instance() && get_script_instance()->has_method("_has_gizmo")) {
- return get_script_instance()->call("_has_gizmo", p_spatial);
- }
- return false;
-}
-
-Ref<EditorNode3DGizmo> EditorNode3DGizmoPlugin::create_gizmo(Node3D *p_spatial) {
- if (get_script_instance() && get_script_instance()->has_method("_create_gizmo")) {
- return get_script_instance()->call("_create_gizmo", p_spatial);
- }
-
- Ref<EditorNode3DGizmo> ref;
- if (has_gizmo(p_spatial)) {
- ref.instantiate();
- }
- return ref;
-}
-
-bool EditorNode3DGizmoPlugin::can_be_hidden() const {
- if (get_script_instance() && get_script_instance()->has_method("_can_be_hidden")) {
- return get_script_instance()->call("_can_be_hidden");
- }
- return true;
-}
-
-bool EditorNode3DGizmoPlugin::is_selectable_when_hidden() const {
- if (get_script_instance() && get_script_instance()->has_method("_is_selectable_when_hidden")) {
- return get_script_instance()->call("_is_selectable_when_hidden");
- }
- return false;
-}
-
-void EditorNode3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
- if (get_script_instance() && get_script_instance()->has_method("_redraw")) {
- Ref<EditorNode3DGizmo> ref(p_gizmo);
- get_script_instance()->call("_redraw", ref);
- }
-}
-
-String EditorNode3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
- if (get_script_instance() && get_script_instance()->has_method("_get_handle_name")) {
- return get_script_instance()->call("_get_handle_name", p_gizmo, p_idx);
- }
- return "";
-}
-
-Variant EditorNode3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
- if (get_script_instance() && get_script_instance()->has_method("_get_handle_value")) {
- return get_script_instance()->call("_get_handle_value", p_gizmo, p_idx);
- }
- return Variant();
-}
-
-void EditorNode3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
- if (get_script_instance() && get_script_instance()->has_method("_set_handle")) {
- get_script_instance()->call("_set_handle", p_gizmo, p_idx, p_camera, p_point);
- }
-}
-
-void EditorNode3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
- if (get_script_instance() && get_script_instance()->has_method("_commit_handle")) {
- get_script_instance()->call("_commit_handle", p_gizmo, p_idx, p_restore, p_cancel);
- }
-}
-
-bool EditorNode3DGizmoPlugin::is_handle_highlighted(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
- if (get_script_instance() && get_script_instance()->has_method("_is_handle_highlighted")) {
- return get_script_instance()->call("_is_handle_highlighted", p_gizmo, p_idx);
- }
- return false;
-}
-
-void EditorNode3DGizmoPlugin::set_state(int p_state) {
- current_state = p_state;
- for (int i = 0; i < current_gizmos.size(); ++i) {
- current_gizmos[i]->set_hidden(current_state == HIDDEN);
- }
-}
-
-int EditorNode3DGizmoPlugin::get_state() const {
- return current_state;
-}
-
-void EditorNode3DGizmoPlugin::unregister_gizmo(EditorNode3DGizmo *p_gizmo) {
- current_gizmos.erase(p_gizmo);
-}
-
-EditorNode3DGizmoPlugin::EditorNode3DGizmoPlugin() {
- current_state = VISIBLE;
-}
-
-EditorNode3DGizmoPlugin::~EditorNode3DGizmoPlugin() {
- for (int i = 0; i < current_gizmos.size(); ++i) {
- current_gizmos[i]->set_plugin(nullptr);
- current_gizmos[i]->get_spatial_node()->set_gizmo(nullptr);
- }
- if (Node3DEditor::get_singleton()) {
- Node3DEditor::get_singleton()->update_all_gizmos();
- }
-}
diff --git a/editor/plugins/node_3d_editor_plugin.h b/editor/plugins/node_3d_editor_plugin.h
index cc65cb53ca..cb2edbcbc1 100644
--- a/editor/plugins/node_3d_editor_plugin.h
+++ b/editor/plugins/node_3d_editor_plugin.h
@@ -34,6 +34,7 @@
#include "editor/editor_node.h"
#include "editor/editor_plugin.h"
#include "editor/editor_scale.h"
+#include "editor/plugins/node_3d_editor_gizmos.h"
#include "scene/3d/light_3d.h"
#include "scene/3d/visual_instance_3d.h"
#include "scene/3d/world_environment.h"
@@ -43,96 +44,10 @@
class Camera3D;
class Node3DEditor;
-class EditorNode3DGizmoPlugin;
class Node3DEditorViewport;
class SubViewportContainer;
-
-class EditorNode3DGizmo : public Node3DGizmo {
- GDCLASS(EditorNode3DGizmo, Node3DGizmo);
-
- bool selected;
- bool instantiated;
-
-public:
- void set_selected(bool p_selected) { selected = p_selected; }
- bool is_selected() const { return selected; }
-
- struct Instance {
- RID instance;
- Ref<ArrayMesh> mesh;
- Ref<Material> material;
- Ref<SkinReference> skin_reference;
- RID skeleton;
- bool billboard = false;
- bool unscaled = false;
- bool can_intersect = false;
- bool extra_margin = false;
-
- void create_instance(Node3D *p_base, bool p_hidden = false);
- };
-
- Vector<Vector3> collision_segments;
- Ref<TriangleMesh> collision_mesh;
-
- struct Handle {
- Vector3 pos;
- bool billboard = false;
- };
-
- Vector<Vector3> handles;
- Vector<Vector3> secondary_handles;
- float selectable_icon_size;
- bool billboard_handle;
-
- bool valid;
- bool hidden;
- Node3D *base;
- Vector<Instance> instances;
- Node3D *spatial_node;
- EditorNode3DGizmoPlugin *gizmo_plugin;
-
- void _set_spatial_node(Node *p_node) { set_spatial_node(Object::cast_to<Node3D>(p_node)); }
-
-protected:
- static void _bind_methods();
-
-public:
- void add_lines(const Vector<Vector3> &p_lines, const Ref<Material> &p_material, bool p_billboard = false, const Color &p_modulate = Color(1, 1, 1));
- void add_vertices(const Vector<Vector3> &p_vertices, const Ref<Material> &p_material, Mesh::PrimitiveType p_primitive_type, bool p_billboard = false, const Color &p_modulate = Color(1, 1, 1));
- void add_mesh(const Ref<ArrayMesh> &p_mesh, bool p_billboard = false, const Ref<SkinReference> &p_skin_reference = Ref<SkinReference>(), const Ref<Material> &p_material = Ref<Material>());
- void add_collision_segments(const Vector<Vector3> &p_lines);
- void add_collision_triangles(const Ref<TriangleMesh> &p_tmesh);
- void add_unscaled_billboard(const Ref<Material> &p_material, float p_scale = 1, const Color &p_modulate = Color(1, 1, 1));
- void add_handles(const Vector<Vector3> &p_handles, const Ref<Material> &p_material, bool p_billboard = false, bool p_secondary = false);
- void add_solid_box(Ref<Material> &p_material, Vector3 p_size, Vector3 p_position = Vector3());
-
- virtual bool is_handle_highlighted(int p_idx) const;
- virtual String get_handle_name(int p_idx) const;
- virtual Variant get_handle_value(int p_idx);
- virtual void set_handle(int p_idx, Camera3D *p_camera, const Point2 &p_point);
- virtual void commit_handle(int p_idx, const Variant &p_restore, bool p_cancel = false);
-
- void set_spatial_node(Node3D *p_node);
- Node3D *get_spatial_node() const { return spatial_node; }
- Ref<EditorNode3DGizmoPlugin> get_plugin() const { return gizmo_plugin; }
- Vector3 get_handle_pos(int p_idx) const;
- bool intersect_frustum(const Camera3D *p_camera, const Vector<Plane> &p_frustum);
- bool intersect_ray(Camera3D *p_camera, const Point2 &p_point, Vector3 &r_pos, Vector3 &r_normal, int *r_gizmo_handle = nullptr, bool p_sec_first = false);
-
- virtual void clear() override;
- virtual void create() override;
- virtual void transform() override;
- virtual void redraw() override;
- virtual void free() override;
-
- virtual bool is_editable() const;
-
- void set_hidden(bool p_hidden);
- void set_plugin(EditorNode3DGizmoPlugin *p_plugin);
-
- EditorNode3DGizmo();
- ~EditorNode3DGizmo();
-};
+class DirectionalLight3D;
+class WorldEnvironment;
class ViewportRotationControl : public Control {
GDCLASS(ViewportRotationControl, Control);
@@ -286,7 +201,7 @@ private:
bool orthogonal;
bool auto_orthogonal;
bool lock_rotation;
- float gizmo_scale;
+ real_t gizmo_scale;
bool freelook_active;
real_t freelook_speed;
@@ -306,18 +221,16 @@ private:
struct _RayResult {
Node3D *item = nullptr;
- float depth = 0;
- int handle = 0;
+ real_t depth = 0;
_FORCE_INLINE_ bool operator<(const _RayResult &p_rr) const { return depth < p_rr.depth; }
};
void _update_name();
void _compute_edit(const Point2 &p_point);
void _clear_selected();
- void _select_clicked(bool p_append, bool p_single, bool p_allow_locked = false);
- void _select(Node *p_node, bool p_append, bool p_single);
- ObjectID _select_ray(const Point2 &p_pos, bool p_append, bool &r_includes_current, int *r_gizmo_handle = nullptr, bool p_alt_select = false);
- void _find_items_at_pos(const Point2 &p_pos, bool &r_includes_current, Vector<_RayResult> &results, bool p_alt_select = false, bool p_include_locked_nodes = false);
+ void _select_clicked(bool p_allow_locked);
+ ObjectID _select_ray(const Point2 &p_pos);
+ void _find_items_at_pos(const Point2 &p_pos, Vector<_RayResult> &r_results, bool p_include_locked);
Vector3 _get_ray_pos(const Vector2 &p_pos) const;
Vector3 _get_ray(const Vector2 &p_pos) const;
Point2 _point_to_screen(const Vector3 &p_point);
@@ -329,7 +242,8 @@ private:
Vector3 _get_screen_to_space(const Vector3 &p_vector3);
void _select_region();
- bool _gizmo_select(const Vector2 &p_screenpos, bool p_highlight_only = false);
+ bool _transform_gizmo_select(const Vector2 &p_screenpos, bool p_highlight_only = false);
+ void _transform_gizmo_apply(Node3D *p_node, const Transform3D &p_transform, bool p_local);
void _nav_pan(Ref<InputEventWithModifiers> p_event, const Vector2 &p_relative);
void _nav_zoom(Ref<InputEventWithModifiers> p_event, const Vector2 &p_relative);
@@ -342,7 +256,6 @@ private:
ObjectID clicked;
Vector<_RayResult> selection_results;
- bool clicked_includes_current;
bool clicked_wants_append;
PopupMenu *selection_menu;
@@ -383,20 +296,17 @@ private:
Vector3 click_ray;
Vector3 click_ray_pos;
Vector3 center;
- Vector3 orig_gizmo_pos;
- int edited_gizmo = 0;
Point2 mouse_pos;
Point2 original_mouse_pos;
bool snap = false;
Ref<EditorNode3DGizmo> gizmo;
int gizmo_handle = 0;
Variant gizmo_initial_value;
- Vector3 gizmo_initial_pos;
} _edit;
struct Cursor {
Vector3 pos;
- float x_rot, y_rot, distance;
+ real_t x_rot, y_rot, distance;
Vector3 eye_pos; // Used in freelook mode
bool region_select;
Point2 region_begin, region_end;
@@ -430,8 +340,7 @@ private:
void set_message(String p_message, float p_time = 5);
- //
- void _update_camera(float p_interp_delta);
+ void _update_camera(real_t p_interp_delta);
Transform3D to_camera_transform(const Cursor &p_cursor) const;
void _draw();
@@ -472,6 +381,8 @@ private:
void _project_settings_changed();
+ Transform3D _compute_transform(TransformMode p_mode, const Transform3D &p_original, const Transform3D &p_original_local, Vector3 p_motion, double p_extra, bool p_local);
+
protected:
void _notification(int p_what);
static void _bind_methods();
@@ -512,6 +423,8 @@ public:
Node3D *sp;
RID sbox_instance;
RID sbox_instance_xray;
+ Ref<EditorNode3DGizmo> gizmo;
+ Map<int, Transform3D> subgizmos; // map ID -> initial transform
Node3DEditorSelectedItem() {
sp = nullptr;
@@ -536,8 +449,8 @@ public:
private:
View view;
bool mouseover;
- float ratio_h;
- float ratio_v;
+ real_t ratio_h;
+ real_t ratio_v;
bool hovering_v;
bool hovering_h;
@@ -617,10 +530,12 @@ private:
Ref<StandardMaterial3D> plane_gizmo_color_hl[3];
Ref<ShaderMaterial> rotate_gizmo_color_hl[3];
- int over_gizmo_handle;
- float snap_translate_value;
- float snap_rotate_value;
- float snap_scale_value;
+ Ref<Node3DGizmo> current_hover_gizmo;
+ int current_hover_gizmo_handle;
+
+ real_t snap_translate_value;
+ real_t snap_rotate_value;
+ real_t snap_scale_value;
Ref<ArrayMesh> selection_box_xray;
Ref<ArrayMesh> selection_box;
@@ -638,7 +553,7 @@ private:
struct Gizmo {
bool visible = false;
- float scale = 0;
+ real_t scale = 0;
Transform3D transform;
} gizmo;
@@ -688,7 +603,6 @@ private:
LineEdit *snap_translate;
LineEdit *snap_rotate;
LineEdit *snap_scale;
- PanelContainer *menu_panel;
LineEdit *xform_translate[3];
LineEdit *xform_rotate[3];
@@ -710,6 +624,10 @@ private:
void _update_camera_override_viewport(Object *p_viewport);
HBoxContainer *hbc_menu;
+ // Used for secondary menu items which are displayed depending on the currently selected node
+ // (such as MeshInstance's "Mesh" menu).
+ PanelContainer *context_menu_container;
+ HBoxContainer *hbc_context_menu;
void _generate_selection_boxes();
UndoRedo *undo_redo;
@@ -717,6 +635,7 @@ private:
int camera_override_viewport_id;
void _init_indicators();
+ void _update_context_menu_stylebox();
void _update_gizmos_menu();
void _update_gizmos_menu_theme();
void _init_grid();
@@ -734,6 +653,7 @@ private:
Node3D *selected;
void _request_gizmo(Object *p_obj);
+ void _clear_subgizmo_selection(Object *p_obj = nullptr);
static Node3DEditor *singleton;
@@ -746,8 +666,7 @@ private:
Node3DEditor();
- bool is_any_freelook_active() const;
-
+ void _selection_changed();
void _refresh_menu_icons();
// Preview Sun and Environment
@@ -808,6 +727,8 @@ private:
void _add_sun_to_scene(bool p_already_added_environment = false);
void _add_environment_to_scene(bool p_already_added_sun = false);
+ void _update_theme();
+
protected:
void _notification(int p_what);
//void _gui_input(InputEvent p_event);
@@ -830,9 +751,9 @@ public:
ToolMode get_tool_mode() const { return tool_mode; }
bool are_local_coords_enabled() const { return tool_option_button[Node3DEditor::TOOL_OPT_LOCAL_COORDS]->is_pressed(); }
bool is_snap_enabled() const { return snap_enabled ^ snap_key_enabled; }
- float get_translate_snap() const;
- float get_rotate_snap() const;
- float get_scale_snap() const;
+ double get_translate_snap() const;
+ double get_rotate_snap() const;
+ double get_scale_snap() const;
Ref<ArrayMesh> get_move_gizmo(int idx) const { return move_gizmo[idx]; }
Ref<ArrayMesh> get_move_plane_gizmo(int idx) const { return move_plane_gizmo[idx]; }
@@ -861,10 +782,16 @@ public:
VSplitContainer *get_shader_split();
HSplitContainer *get_palette_split();
- Node3D *get_selected() { return selected; }
+ Node3D *get_single_selected_node() { return selected; }
+ bool is_current_selected_gizmo(const EditorNode3DGizmo *p_gizmo);
+ bool is_subgizmo_selected(int p_id);
+ Vector<int> get_subgizmo_selection();
+
+ Ref<EditorNode3DGizmo> get_current_hover_gizmo() const { return current_hover_gizmo; }
+ void set_current_hover_gizmo(Ref<EditorNode3DGizmo> p_gizmo) { current_hover_gizmo = p_gizmo; }
- int get_over_gizmo_handle() const { return over_gizmo_handle; }
- void set_over_gizmo_handle(int idx) { over_gizmo_handle = idx; }
+ void set_current_hover_gizmo_handle(int p_id) { current_hover_gizmo_handle = p_id; }
+ int get_current_hover_gizmo_handle() const { return current_hover_gizmo_handle; }
void set_can_preview(Camera3D *p_preview);
@@ -907,50 +834,4 @@ public:
~Node3DEditorPlugin();
};
-class EditorNode3DGizmoPlugin : public Resource {
- GDCLASS(EditorNode3DGizmoPlugin, Resource);
-
-public:
- static const int VISIBLE = 0;
- static const int HIDDEN = 1;
- static const int ON_TOP = 2;
-
-protected:
- int current_state;
- List<EditorNode3DGizmo *> current_gizmos;
- HashMap<String, Vector<Ref<StandardMaterial3D>>> materials;
-
- static void _bind_methods();
- virtual bool has_gizmo(Node3D *p_spatial);
- virtual Ref<EditorNode3DGizmo> create_gizmo(Node3D *p_spatial);
-
-public:
- void create_material(const String &p_name, const Color &p_color, bool p_billboard = false, bool p_on_top = false, bool p_use_vertex_color = false);
- void create_icon_material(const String &p_name, const Ref<Texture2D> &p_texture, bool p_on_top = false, const Color &p_albedo = Color(1, 1, 1, 1));
- void create_handle_material(const String &p_name, bool p_billboard = false, const Ref<Texture2D> &p_texture = nullptr);
- void add_material(const String &p_name, Ref<StandardMaterial3D> p_material);
-
- Ref<StandardMaterial3D> get_material(const String &p_name, const Ref<EditorNode3DGizmo> &p_gizmo = Ref<EditorNode3DGizmo>());
-
- virtual String get_gizmo_name() const;
- virtual int get_priority() const;
- virtual bool can_be_hidden() const;
- virtual bool is_selectable_when_hidden() const;
-
- virtual void redraw(EditorNode3DGizmo *p_gizmo);
- virtual String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const;
- virtual Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const;
- virtual void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point);
- virtual void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel = false);
- virtual bool is_handle_highlighted(const EditorNode3DGizmo *p_gizmo, int p_idx) const;
-
- Ref<EditorNode3DGizmo> get_gizmo(Node3D *p_spatial);
- void set_state(int p_state);
- int get_state() const;
- void unregister_gizmo(EditorNode3DGizmo *p_gizmo);
-
- EditorNode3DGizmoPlugin();
- virtual ~EditorNode3DGizmoPlugin();
-};
-
#endif // NODE_3D_EDITOR_PLUGIN_H
diff --git a/editor/plugins/path_3d_editor_plugin.cpp b/editor/plugins/path_3d_editor_plugin.cpp
index 0a95986fe2..63b89aea35 100644
--- a/editor/plugins/path_3d_editor_plugin.cpp
+++ b/editor/plugins/path_3d_editor_plugin.cpp
@@ -36,20 +36,20 @@
#include "node_3d_editor_plugin.h"
#include "scene/resources/curve.h"
-String Path3DGizmo::get_handle_name(int p_idx) const {
+String Path3DGizmo::get_handle_name(int p_id) const {
Ref<Curve3D> c = path->get_curve();
if (c.is_null()) {
return "";
}
- if (p_idx < c->get_point_count()) {
- return TTR("Curve Point #") + itos(p_idx);
+ if (p_id < c->get_point_count()) {
+ return TTR("Curve Point #") + itos(p_id);
}
- p_idx = p_idx - c->get_point_count() + 1;
+ p_id = p_id - c->get_point_count() + 1;
- int idx = p_idx / 2;
- int t = p_idx % 2;
+ int idx = p_id / 2;
+ int t = p_id % 2;
String n = TTR("Curve Point #") + itos(idx);
if (t == 0) {
n += " In";
@@ -60,21 +60,21 @@ String Path3DGizmo::get_handle_name(int p_idx) const {
return n;
}
-Variant Path3DGizmo::get_handle_value(int p_idx) {
+Variant Path3DGizmo::get_handle_value(int p_id) const {
Ref<Curve3D> c = path->get_curve();
if (c.is_null()) {
return Variant();
}
- if (p_idx < c->get_point_count()) {
- original = c->get_point_position(p_idx);
+ if (p_id < c->get_point_count()) {
+ original = c->get_point_position(p_id);
return original;
}
- p_idx = p_idx - c->get_point_count() + 1;
+ p_id = p_id - c->get_point_count() + 1;
- int idx = p_idx / 2;
- int t = p_idx % 2;
+ int idx = p_id / 2;
+ int t = p_id % 2;
Vector3 ofs;
if (t == 0) {
@@ -88,7 +88,7 @@ Variant Path3DGizmo::get_handle_value(int p_idx) {
return ofs;
}
-void Path3DGizmo::set_handle(int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void Path3DGizmo::set_handle(int p_id, Camera3D *p_camera, const Point2 &p_point) const {
Ref<Curve3D> c = path->get_curve();
if (c.is_null()) {
return;
@@ -100,7 +100,7 @@ void Path3DGizmo::set_handle(int p_idx, Camera3D *p_camera, const Point2 &p_poin
Vector3 ray_dir = p_camera->project_ray_normal(p_point);
// Setting curve point positions
- if (p_idx < c->get_point_count()) {
+ if (p_id < c->get_point_count()) {
Plane p(gt.xform(original), p_camera->get_transform().basis.get_axis(2));
Vector3 inters;
@@ -112,16 +112,16 @@ void Path3DGizmo::set_handle(int p_idx, Camera3D *p_camera, const Point2 &p_poin
}
Vector3 local = gi.xform(inters);
- c->set_point_position(p_idx, local);
+ c->set_point_position(p_id, local);
}
return;
}
- p_idx = p_idx - c->get_point_count() + 1;
+ p_id = p_id - c->get_point_count() + 1;
- int idx = p_idx / 2;
- int t = p_idx % 2;
+ int idx = p_id / 2;
+ int t = p_id % 2;
Vector3 base = c->get_point_position(idx);
@@ -157,7 +157,7 @@ void Path3DGizmo::set_handle(int p_idx, Camera3D *p_camera, const Point2 &p_poin
}
}
-void Path3DGizmo::commit_handle(int p_idx, const Variant &p_restore, bool p_cancel) {
+void Path3DGizmo::commit_handle(int p_id, const Variant &p_restore, bool p_cancel) const {
Ref<Curve3D> c = path->get_curve();
if (c.is_null()) {
return;
@@ -165,27 +165,27 @@ void Path3DGizmo::commit_handle(int p_idx, const Variant &p_restore, bool p_canc
UndoRedo *ur = Node3DEditor::get_singleton()->get_undo_redo();
- if (p_idx < c->get_point_count()) {
+ if (p_id < c->get_point_count()) {
if (p_cancel) {
- c->set_point_position(p_idx, p_restore);
+ c->set_point_position(p_id, p_restore);
return;
}
ur->create_action(TTR("Set Curve Point Position"));
- ur->add_do_method(c.ptr(), "set_point_position", p_idx, c->get_point_position(p_idx));
- ur->add_undo_method(c.ptr(), "set_point_position", p_idx, p_restore);
+ ur->add_do_method(c.ptr(), "set_point_position", p_id, c->get_point_position(p_id));
+ ur->add_undo_method(c.ptr(), "set_point_position", p_id, p_restore);
ur->commit_action();
return;
}
- p_idx = p_idx - c->get_point_count() + 1;
+ p_id = p_id - c->get_point_count() + 1;
- int idx = p_idx / 2;
- int t = p_idx % 2;
+ int idx = p_id / 2;
+ int t = p_id % 2;
if (t == 0) {
if (p_cancel) {
- c->set_point_in(p_idx, p_restore);
+ c->set_point_in(p_id, p_restore);
return;
}
@@ -282,7 +282,7 @@ void Path3DGizmo::redraw() {
add_handles(handles, handles_material);
}
if (sec_handles.size()) {
- add_handles(sec_handles, sec_handles_material, false, true);
+ add_handles(sec_handles, sec_handles_material, Vector<int>(), false, true);
}
}
}
diff --git a/editor/plugins/path_3d_editor_plugin.h b/editor/plugins/path_3d_editor_plugin.h
index 13870d7591..5902500526 100644
--- a/editor/plugins/path_3d_editor_plugin.h
+++ b/editor/plugins/path_3d_editor_plugin.h
@@ -31,7 +31,9 @@
#ifndef PATH_EDITOR_PLUGIN_H
#define PATH_EDITOR_PLUGIN_H
-#include "editor/node_3d_editor_gizmos.h"
+#include "editor/editor_plugin.h"
+#include "editor/plugins/node_3d_editor_gizmos.h"
+#include "scene/3d/camera_3d.h"
#include "scene/3d/path_3d.h"
class Path3DGizmo : public EditorNode3DGizmo {
@@ -44,9 +46,9 @@ class Path3DGizmo : public EditorNode3DGizmo {
public:
virtual String get_handle_name(int p_idx) const override;
- virtual Variant get_handle_value(int p_idx) override;
- virtual void set_handle(int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- virtual void commit_handle(int p_idx, const Variant &p_restore, bool p_cancel = false) override;
+ virtual Variant get_handle_value(int p_id) const override;
+ virtual void set_handle(int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ virtual void commit_handle(int p_id, const Variant &p_restore, bool p_cancel = false) const override;
virtual void redraw() override;
Path3DGizmo(Path3D *p_path = nullptr);
diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp
index b420372eff..9377395418 100644
--- a/editor/plugins/polygon_2d_editor_plugin.cpp
+++ b/editor/plugins/polygon_2d_editor_plugin.cpp
@@ -400,25 +400,25 @@ void Polygon2DEditor::_set_show_grid(bool p_show) {
uv_edit_draw->update();
}
-void Polygon2DEditor::_set_snap_off_x(float p_val) {
+void Polygon2DEditor::_set_snap_off_x(real_t p_val) {
snap_offset.x = p_val;
EditorSettings::get_singleton()->set_project_metadata("polygon_2d_uv_editor", "snap_offset", snap_offset);
uv_edit_draw->update();
}
-void Polygon2DEditor::_set_snap_off_y(float p_val) {
+void Polygon2DEditor::_set_snap_off_y(real_t p_val) {
snap_offset.y = p_val;
EditorSettings::get_singleton()->set_project_metadata("polygon_2d_uv_editor", "snap_offset", snap_offset);
uv_edit_draw->update();
}
-void Polygon2DEditor::_set_snap_step_x(float p_val) {
+void Polygon2DEditor::_set_snap_step_x(real_t p_val) {
snap_step.x = p_val;
EditorSettings::get_singleton()->set_project_metadata("polygon_2d_uv_editor", "snap_step", snap_step);
uv_edit_draw->update();
}
-void Polygon2DEditor::_set_snap_step_y(float p_val) {
+void Polygon2DEditor::_set_snap_step_y(real_t p_val) {
snap_step.y = p_val;
EditorSettings::get_singleton()->set_project_metadata("polygon_2d_uv_editor", "snap_step", snap_step);
uv_edit_draw->update();
@@ -569,11 +569,11 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
}
int closest = -1;
- float closest_dist = 1e20;
+ real_t closest_dist = 1e20;
for (int i = points_prev.size() - internal_vertices; i < points_prev.size(); i++) {
Vector2 tuv = mtx.xform(uv_create_poly_prev[i]);
- float dist = tuv.distance_to(Vector2(mb->get_position().x, mb->get_position().y));
+ real_t dist = tuv.distance_to(Vector2(mb->get_position().x, mb->get_position().y));
if (dist < 8 && dist < closest_dist) {
closest = i;
closest_dist = dist;
@@ -639,11 +639,11 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
if (uv_move_current == UV_MODE_ADD_POLYGON) {
int closest = -1;
- float closest_dist = 1e20;
+ real_t closest_dist = 1e20;
for (int i = 0; i < points_prev.size(); i++) {
Vector2 tuv = mtx.xform(points_prev[i]);
- float dist = tuv.distance_to(Vector2(mb->get_position().x, mb->get_position().y));
+ real_t dist = tuv.distance_to(Vector2(mb->get_position().x, mb->get_position().y));
if (dist < 8 && dist < closest_dist) {
closest = i;
closest_dist = dist;
@@ -825,7 +825,7 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
}
center /= uv_new.size();
- float angle = (uv_drag_from - mtx.xform(center)).normalized().angle_to((uv_drag_to - mtx.xform(center)).normalized());
+ real_t angle = (uv_drag_from - mtx.xform(center)).normalized().angle_to((uv_drag_to - mtx.xform(center)).normalized());
for (int i = 0; i < uv_new.size(); i++) {
Vector2 rel = points_prev[i] - center;
@@ -848,13 +848,13 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
}
center /= uv_new.size();
- float from_dist = uv_drag_from.distance_to(mtx.xform(center));
- float to_dist = uv_drag_to.distance_to(mtx.xform(center));
+ real_t from_dist = uv_drag_from.distance_to(mtx.xform(center));
+ real_t to_dist = uv_drag_to.distance_to(mtx.xform(center));
if (from_dist < 2) {
break;
}
- float scale = to_dist / from_dist;
+ real_t scale = to_dist / from_dist;
for (int i = 0; i < uv_new.size(); i++) {
Vector2 rel = points_prev[i] - center;
@@ -881,8 +881,8 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
{
int pc = painted_weights.size();
- float amount = bone_paint_strength->get_value();
- float radius = bone_paint_radius->get_value() * EDSCALE;
+ real_t amount = bone_paint_strength->get_value();
+ real_t radius = bone_paint_radius->get_value() * EDSCALE;
if (uv_mode == UV_MODE_CLEAR_WEIGHT) {
amount = -amount;
@@ -925,7 +925,7 @@ void Polygon2DEditor::_uv_input(const Ref<InputEvent> &p_input) {
}
}
-void Polygon2DEditor::_uv_scroll_changed(float) {
+void Polygon2DEditor::_uv_scroll_changed(real_t) {
if (updating_uv_scroll) {
return;
}
diff --git a/editor/plugins/polygon_2d_editor_plugin.h b/editor/plugins/polygon_2d_editor_plugin.h
index af3b2f5aef..cbe7ecf360 100644
--- a/editor/plugins/polygon_2d_editor_plugin.h
+++ b/editor/plugins/polygon_2d_editor_plugin.h
@@ -95,7 +95,7 @@ class Polygon2DEditor : public AbstractPolygon2DEditor {
void _update_bone_list();
Vector2 uv_draw_ofs;
- float uv_draw_zoom;
+ real_t uv_draw_zoom;
Vector<Vector2> points_prev;
Vector<Vector2> uv_create_uv_prev;
Vector<Vector2> uv_create_poly_prev;
@@ -127,17 +127,17 @@ class Polygon2DEditor : public AbstractPolygon2DEditor {
void _cancel_editing();
void _update_polygon_editing_state();
- void _uv_scroll_changed(float);
+ void _uv_scroll_changed(real_t);
void _uv_input(const Ref<InputEvent> &p_input);
void _uv_draw();
void _uv_mode(int p_mode);
void _set_use_snap(bool p_use);
void _set_show_grid(bool p_show);
- void _set_snap_off_x(float p_val);
- void _set_snap_off_y(float p_val);
- void _set_snap_step_x(float p_val);
- void _set_snap_step_y(float p_val);
+ void _set_snap_off_x(real_t p_val);
+ void _set_snap_off_y(real_t p_val);
+ void _set_snap_step_x(real_t p_val);
+ void _set_snap_step_y(real_t p_val);
void _uv_edit_mode_select(int p_mode);
void _uv_edit_popup_hide();
diff --git a/editor/plugins/resource_preloader_editor_plugin.cpp b/editor/plugins/resource_preloader_editor_plugin.cpp
index e099c8b5fd..cbea2405b8 100644
--- a/editor/plugins/resource_preloader_editor_plugin.cpp
+++ b/editor/plugins/resource_preloader_editor_plugin.cpp
@@ -181,21 +181,21 @@ void ResourcePreloaderEditor::_update_library() {
preloader->get_resource_list(&rnames);
List<String> names;
- for (List<StringName>::Element *E = rnames.front(); E; E = E->next()) {
- names.push_back(E->get());
+ for (const StringName &E : rnames) {
+ names.push_back(E);
}
names.sort();
- for (List<String>::Element *E = names.front(); E; E = E->next()) {
+ for (const String &E : names) {
TreeItem *ti = tree->create_item(root);
ti->set_cell_mode(0, TreeItem::CELL_MODE_STRING);
ti->set_editable(0, true);
ti->set_selectable(0, true);
- ti->set_text(0, E->get());
- ti->set_metadata(0, E->get());
+ ti->set_text(0, E);
+ ti->set_metadata(0, E);
- RES r = preloader->get_resource(E->get());
+ RES r = preloader->get_resource(E);
ERR_CONTINUE(r.is_null());
diff --git a/editor/plugins/root_motion_editor_plugin.cpp b/editor/plugins/root_motion_editor_plugin.cpp
index cea76f5233..ed91f174d1 100644
--- a/editor/plugins/root_motion_editor_plugin.cpp
+++ b/editor/plugins/root_motion_editor_plugin.cpp
@@ -70,8 +70,8 @@ void EditorPropertyRootMotion::_node_assign() {
List<StringName> animations;
player->get_animation_list(&animations);
- for (List<StringName>::Element *E = animations.front(); E; E = E->next()) {
- Ref<Animation> anim = player->get_animation(E->get());
+ for (const StringName &E : animations) {
+ Ref<Animation> anim = player->get_animation(E);
for (int i = 0; i < anim->get_track_count(); i++) {
paths.insert(anim->track_get_path(i));
}
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index 1851ffdc34..668a15da37 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -103,8 +103,8 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
const Color type_color = EDITOR_GET("text_editor/highlighting/engine_type_color");
List<StringName> types;
ClassDB::get_class_list(&types);
- for (List<StringName>::Element *E = types.front(); E; E = E->next()) {
- String n = E->get();
+ for (const StringName &E : types) {
+ String n = E;
if (n.begins_with("_")) {
n = n.substr(1, n.length());
}
@@ -115,8 +115,8 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
const Color usertype_color = EDITOR_GET("text_editor/highlighting/user_type_color");
List<StringName> global_classes;
ScriptServer::get_global_class_list(&global_classes);
- for (List<StringName>::Element *E = global_classes.front(); E; E = E->next()) {
- highlighter->add_keyword_color(E->get(), usertype_color);
+ for (const StringName &E : global_classes) {
+ highlighter->add_keyword_color(E, usertype_color);
}
/* Autoloads. */
@@ -134,8 +134,8 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
const Color basetype_color = EDITOR_GET("text_editor/highlighting/base_type_color");
List<String> core_types;
script->get_language()->get_core_type_words(&core_types);
- for (List<String>::Element *E = core_types.front(); E; E = E->next()) {
- highlighter->add_keyword_color(E->get(), basetype_color);
+ for (const String &E : core_types) {
+ highlighter->add_keyword_color(E, basetype_color);
}
/* Reserved words. */
@@ -143,11 +143,11 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
const Color control_flow_keyword_color = EDITOR_GET("text_editor/highlighting/control_flow_keyword_color");
List<String> keywords;
script->get_language()->get_reserved_words(&keywords);
- for (List<String>::Element *E = keywords.front(); E; E = E->next()) {
- if (script->get_language()->is_control_flow_keyword(E->get())) {
- highlighter->add_keyword_color(E->get(), control_flow_keyword_color);
+ for (const String &E : keywords) {
+ if (script->get_language()->is_control_flow_keyword(E)) {
+ highlighter->add_keyword_color(E, control_flow_keyword_color);
} else {
- highlighter->add_keyword_color(E->get(), keyword_color);
+ highlighter->add_keyword_color(E, keyword_color);
}
}
@@ -157,9 +157,9 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
if (instance_base != StringName()) {
List<PropertyInfo> plist;
ClassDB::get_property_list(instance_base, &plist);
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- String name = E->get().name;
- if (E->get().usage & PROPERTY_USAGE_CATEGORY || E->get().usage & PROPERTY_USAGE_GROUP || E->get().usage & PROPERTY_USAGE_SUBGROUP) {
+ for (const PropertyInfo &E : plist) {
+ String name = E.name;
+ if (E.usage & PROPERTY_USAGE_CATEGORY || E.usage & PROPERTY_USAGE_GROUP || E.usage & PROPERTY_USAGE_SUBGROUP) {
continue;
}
if (name.find("/") != -1) {
@@ -170,8 +170,8 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
List<String> clist;
ClassDB::get_integer_constant_list(instance_base, &clist);
- for (List<String>::Element *E = clist.front(); E; E = E->next()) {
- highlighter->add_member_keyword_color(E->get(), member_variable_color);
+ for (const String &E : clist) {
+ highlighter->add_member_keyword_color(E, member_variable_color);
}
}
@@ -179,8 +179,7 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
const Color comment_color = EDITOR_GET("text_editor/highlighting/comment_color");
List<String> comments;
script->get_language()->get_comment_delimiters(&comments);
- for (List<String>::Element *E = comments.front(); E; E = E->next()) {
- String comment = E->get();
+ for (const String &comment : comments) {
String beg = comment.get_slice(" ", 0);
String end = comment.get_slice_count(" ") > 1 ? comment.get_slice(" ", 1) : String();
highlighter->add_color_region(beg, end, comment_color, end == "");
@@ -190,8 +189,7 @@ void EditorStandardSyntaxHighlighter::_update_cache() {
const Color string_color = EDITOR_GET("text_editor/highlighting/string_color");
List<String> strings;
script->get_language()->get_string_delimiters(&strings);
- for (List<String>::Element *E = strings.front(); E; E = E->next()) {
- String string = E->get();
+ for (const String &string : strings) {
String beg = string.get_slice(" ", 0);
String end = string.get_slice_count(" ") > 1 ? string.get_slice(" ", 1) : String();
highlighter->add_color_region(beg, end, string_color, end == "");
diff --git a/editor/plugins/script_text_editor.cpp b/editor/plugins/script_text_editor.cpp
index 1a6dfa273e..5bbe56a800 100644
--- a/editor/plugins/script_text_editor.cpp
+++ b/editor/plugins/script_text_editor.cpp
@@ -50,9 +50,7 @@ void ConnectionInfoDialog::popup_connections(String p_method, Vector<Node *> p_n
List<Connection> all_connections;
p_nodes[i]->get_signals_connected_to_this(&all_connections);
- for (List<Connection>::Element *E = all_connections.front(); E; E = E->next()) {
- Connection connection = E->get();
-
+ for (const Connection &connection : all_connections) {
if (connection.callable.get_method() != p_method) {
continue;
}
@@ -116,8 +114,8 @@ Vector<String> ScriptTextEditor::get_functions() {
if (script->get_language()->validate(text, script->get_path(), &fnc)) {
//if valid rewrite functions to latest
functions.clear();
- for (List<String>::Element *E = fnc.front(); E; E = E->next()) {
- functions.push_back(E->get());
+ for (const String &E : fnc) {
+ functions.push_back(E);
}
}
@@ -203,21 +201,29 @@ void ScriptTextEditor::_set_theme_for_script() {
List<String> strings;
script->get_language()->get_string_delimiters(&strings);
text_edit->clear_string_delimiters();
- for (List<String>::Element *E = strings.front(); E; E = E->next()) {
- String string = E->get();
+ for (const String &string : strings) {
String beg = string.get_slice(" ", 0);
String end = string.get_slice_count(" ") > 1 ? string.get_slice(" ", 1) : String();
- text_edit->add_string_delimiter(beg, end, end == "");
+ if (!text_edit->has_string_delimiter(beg)) {
+ text_edit->add_string_delimiter(beg, end, end == "");
+ }
+
+ if (!end.is_empty() && !text_edit->has_auto_brace_completion_open_key(beg)) {
+ text_edit->add_auto_brace_completion_pair(beg, end);
+ }
}
List<String> comments;
script->get_language()->get_comment_delimiters(&comments);
text_edit->clear_comment_delimiters();
- for (List<String>::Element *E = comments.front(); E; E = E->next()) {
- String comment = E->get();
+ for (const String &comment : comments) {
String beg = comment.get_slice(" ", 0);
String end = comment.get_slice_count(" ") > 1 ? comment.get_slice(" ", 1) : String();
text_edit->add_comment_delimiter(beg, end, end == "");
+
+ if (!end.is_empty() && !text_edit->has_auto_brace_completion_open_key(beg)) {
+ text_edit->add_auto_brace_completion_pair(beg, end);
+ }
}
}
@@ -417,8 +423,8 @@ void ScriptTextEditor::_validate_script() {
}
functions.clear();
- for (List<String>::Element *E = fnc.front(); E; E = E->next()) {
- functions.push_back(E->get());
+ for (const String &E : fnc) {
+ functions.push_back(E);
}
script_is_valid = true;
}
@@ -432,9 +438,7 @@ void ScriptTextEditor::_validate_script() {
Node *base = get_tree()->get_edited_scene_root();
if (base && missing_connections.size() > 0) {
warnings_panel->push_table(1);
- for (List<Connection>::Element *E = missing_connections.front(); E; E = E->next()) {
- Connection connection = E->get();
-
+ for (const Connection &connection : missing_connections) {
String base_path = base->get_name();
String source_path = base == connection.signal.get_object() ? base_path : base_path + "/" + base->get_path_to(Object::cast_to<Node>(connection.signal.get_object()));
String target_path = base == connection.callable.get_object() ? base_path : base_path + "/" + base->get_path_to(Object::cast_to<Node>(connection.callable.get_object()));
@@ -456,9 +460,7 @@ void ScriptTextEditor::_validate_script() {
// Add script warnings.
warnings_panel->push_table(3);
- for (List<ScriptLanguage::Warning>::Element *E = warnings.front(); E; E = E->next()) {
- ScriptLanguage::Warning w = E->get();
-
+ for (const ScriptLanguage::Warning &w : warnings) {
Dictionary ignore_meta;
ignore_meta["line"] = w.start_line;
ignore_meta["code"] = w.string_code.to_lower();
@@ -488,9 +490,7 @@ void ScriptTextEditor::_validate_script() {
errors_panel->clear();
errors_panel->push_table(2);
- for (List<ScriptLanguage::ScriptError>::Element *E = errors.front(); E; E = E->next()) {
- ScriptLanguage::ScriptError err = E->get();
-
+ for (const ScriptLanguage::ScriptError &err : errors) {
errors_panel->push_cell();
errors_panel->push_meta(err.line - 1);
errors_panel->push_color(warnings_panel->get_theme_color(SNAME("error_color"), SNAME("Editor")));
@@ -511,8 +511,8 @@ void ScriptTextEditor::_validate_script() {
if (errors.is_empty()) {
te->set_line_background_color(i, Color(0, 0, 0, 0));
} else {
- for (List<ScriptLanguage::ScriptError>::Element *E = errors.front(); E; E = E->next()) {
- bool error_line = i == E->get().line - 1;
+ for (const ScriptLanguage::ScriptError &E : errors) {
+ bool error_line = i == E.line - 1;
te->set_line_background_color(i, error_line ? marked_line_color : Color(0, 0, 0, 0));
if (error_line) {
break;
@@ -752,7 +752,7 @@ void ScriptTextEditor::_lookup_symbol(const String &p_symbol, int p_row, int p_c
EditorNode::get_singleton()->load_resource(p_symbol);
}
- } else if (script->get_language()->lookup_code(code_editor->get_text_editor()->get_text_for_lookup_completion(), p_symbol, script->get_path(), base, result) == OK) {
+ } else if (script->get_language()->lookup_code(code_editor->get_text_editor()->get_text_for_symbol_lookup(), p_symbol, script->get_path(), base, result) == OK) {
_goto_line(p_row);
result.class_name = result.class_name.trim_prefix("_");
@@ -855,18 +855,17 @@ void ScriptTextEditor::_validate_symbol(const String &p_symbol) {
}
ScriptLanguage::LookupResult result;
- if (ScriptServer::is_global_class(p_symbol) || p_symbol.is_resource_file() || script->get_language()->lookup_code(code_editor->get_text_editor()->get_text_for_lookup_completion(), p_symbol, script->get_path(), base, result) == OK || (ProjectSettings::get_singleton()->has_autoload(p_symbol) && ProjectSettings::get_singleton()->get_autoload(p_symbol).is_singleton)) {
- text_edit->set_highlighted_word(p_symbol);
+ if (ScriptServer::is_global_class(p_symbol) || p_symbol.is_resource_file() || script->get_language()->lookup_code(code_editor->get_text_editor()->get_text_for_symbol_lookup(), p_symbol, script->get_path(), base, result) == OK || (ProjectSettings::get_singleton()->has_autoload(p_symbol) && ProjectSettings::get_singleton()->get_autoload(p_symbol).is_singleton)) {
+ text_edit->set_symbol_lookup_word_as_valid(true);
} else if (p_symbol.is_rel_path()) {
String path = _get_absolute_path(p_symbol);
if (FileAccess::exists(path)) {
- text_edit->set_highlighted_word(p_symbol);
+ text_edit->set_symbol_lookup_word_as_valid(true);
} else {
- text_edit->set_highlighted_word(String());
+ text_edit->set_symbol_lookup_word_as_valid(false);
}
-
} else {
- text_edit->set_highlighted_word(String());
+ text_edit->set_symbol_lookup_word_as_valid(false);
}
}
@@ -910,8 +909,7 @@ void ScriptTextEditor::_update_connected_methods() {
List<Connection> connections;
nodes[i]->get_signals_connected_to_this(&connections);
- for (List<Connection>::Element *E = connections.front(); E; E = E->next()) {
- Connection connection = E->get();
+ for (const Connection &connection : connections) {
if (!(connection.flags & CONNECT_PERSIST)) {
continue;
}
@@ -1286,8 +1284,7 @@ void ScriptTextEditor::_edit_option_toggle_inline_comment() {
List<String> comment_delimiters;
script->get_language()->get_comment_delimiters(&comment_delimiters);
- for (List<String>::Element *E = comment_delimiters.front(); E; E = E->next()) {
- String script_delimiter = E->get();
+ for (const String &script_delimiter : comment_delimiters) {
if (script_delimiter.find(" ") == -1) {
delimiter = script_delimiter;
break;
@@ -1556,7 +1553,7 @@ void ScriptTextEditor::_text_edit_gui_input(const Ref<InputEvent> &ev) {
base = _find_node_for_script(base, base, script);
}
ScriptLanguage::LookupResult result;
- if (script->get_language()->lookup_code(code_editor->get_text_editor()->get_text_for_lookup_completion(), word_at_pos, script->get_path(), base, result) == OK) {
+ if (script->get_language()->lookup_code(code_editor->get_text_editor()->get_text_for_symbol_lookup(), word_at_pos, script->get_path(), base, result) == OK) {
open_docs = true;
}
}
@@ -1841,7 +1838,7 @@ ScriptTextEditor::ScriptTextEditor() {
code_editor->get_text_editor()->set_code_hint_draw_below(EditorSettings::get_singleton()->get("text_editor/completion/put_callhint_tooltip_below_current_line"));
- code_editor->get_text_editor()->set_select_identifiers_on_hover(true);
+ code_editor->get_text_editor()->set_symbol_lookup_on_click_enabled(true);
code_editor->get_text_editor()->set_context_menu_enabled(false);
context_menu = memnew(PopupMenu);
diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp
index 0d65dec87b..95973f9dfd 100644
--- a/editor/plugins/shader_editor_plugin.cpp
+++ b/editor/plugins/shader_editor_plugin.cpp
@@ -118,11 +118,11 @@ void ShaderTextEditor::_load_theme_settings() {
const Color keyword_color = EDITOR_GET("text_editor/highlighting/keyword_color");
const Color control_flow_keyword_color = EDITOR_GET("text_editor/highlighting/control_flow_keyword_color");
- for (List<String>::Element *E = keywords.front(); E; E = E->next()) {
- if (ShaderLanguage::is_control_flow_keyword(E->get())) {
- syntax_highlighter->add_keyword_color(E->get(), control_flow_keyword_color);
+ for (const String &E : keywords) {
+ if (ShaderLanguage::is_control_flow_keyword(E)) {
+ syntax_highlighter->add_keyword_color(E, control_flow_keyword_color);
} else {
- syntax_highlighter->add_keyword_color(E->get(), keyword_color);
+ syntax_highlighter->add_keyword_color(E, keyword_color);
}
}
@@ -144,8 +144,8 @@ void ShaderTextEditor::_load_theme_settings() {
const Color member_variable_color = EDITOR_GET("text_editor/highlighting/member_variable_color");
- for (List<String>::Element *E = built_ins.front(); E; E = E->next()) {
- syntax_highlighter->add_keyword_color(E->get(), member_variable_color);
+ for (const String &E : built_ins) {
+ syntax_highlighter->add_keyword_color(E, member_variable_color);
}
// Colorize comments.
@@ -158,6 +158,10 @@ void ShaderTextEditor::_load_theme_settings() {
text_editor->add_comment_delimiter("/*", "*/", false);
text_editor->add_comment_delimiter("//", "", true);
+ if (!text_editor->has_auto_brace_completion_open_key("/*")) {
+ text_editor->add_auto_brace_completion_pair("/*", "*/");
+ }
+
if (warnings_panel) {
// Warnings panel
warnings_panel->add_theme_font_override("normal_font", EditorNode::get_singleton()->get_gui_base()->get_theme_font(SNAME("main"), SNAME("EditorFonts")));
@@ -659,7 +663,7 @@ ShaderEditor::ShaderEditor(EditorNode *p_node) {
shader_editor->get_text_editor()->set_code_hint_draw_below(EditorSettings::get_singleton()->get("text_editor/completion/put_callhint_tooltip_below_current_line"));
- shader_editor->get_text_editor()->set_select_identifiers_on_hover(true);
+ shader_editor->get_text_editor()->set_symbol_lookup_on_click_enabled(true);
shader_editor->get_text_editor()->set_context_menu_enabled(false);
shader_editor->get_text_editor()->connect("gui_input", callable_mp(this, &ShaderEditor::_text_edit_gui_input));
@@ -770,7 +774,7 @@ ShaderEditor::ShaderEditor(EditorNode *p_node) {
disk_changed->add_child(vbc);
Label *dl = memnew(Label);
- dl->set_text(TTR("This shader has been modified on on disk.\nWhat action should be taken?"));
+ dl->set_text(TTR("This shader has been modified on disk.\nWhat action should be taken?"));
vbc->add_child(dl);
disk_changed->connect("confirmed", callable_mp(this, &ShaderEditor::_reload_shader_from_disk));
diff --git a/editor/plugins/shader_file_editor_plugin.cpp b/editor/plugins/shader_file_editor_plugin.cpp
index 66d2b36be1..1e62261244 100644
--- a/editor/plugins/shader_file_editor_plugin.cpp
+++ b/editor/plugins/shader_file_editor_plugin.cpp
@@ -55,7 +55,7 @@ void ShaderFileEditor::_version_selected(int p_option) {
RD::ShaderStage stage = RD::SHADER_STAGE_MAX;
int first_found = -1;
- Ref<RDShaderBytecode> bytecode = shader_file->get_bytecode(version_txt);
+ Ref<RDShaderSPIRV> bytecode = shader_file->get_spirv(version_txt);
ERR_FAIL_COND(bytecode.is_null());
for (int i = 0; i < RD::SHADER_STAGE_MAX; i++) {
@@ -142,7 +142,7 @@ void ShaderFileEditor::_update_options() {
Ref<Texture2D> icon;
- Ref<RDShaderBytecode> bytecode = shader_file->get_bytecode(version_list[i]);
+ Ref<RDShaderSPIRV> bytecode = shader_file->get_spirv(version_list[i]);
ERR_FAIL_COND(bytecode.is_null());
bool failed = false;
@@ -175,7 +175,7 @@ void ShaderFileEditor::_update_options() {
return;
}
- Ref<RDShaderBytecode> bytecode = shader_file->get_bytecode(current_version);
+ Ref<RDShaderSPIRV> bytecode = shader_file->get_spirv(current_version);
ERR_FAIL_COND(bytecode.is_null());
int first_valid = -1;
int current = -1;
diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp
index 9bb8fbacbb..42f7d23da2 100644
--- a/editor/plugins/sprite_frames_editor_plugin.cpp
+++ b/editor/plugins/sprite_frames_editor_plugin.cpp
@@ -365,8 +365,8 @@ void SpriteFramesEditor::_file_load_request(const Vector<String> &p_path, int p_
int count = 0;
- for (List<Ref<Texture2D>>::Element *E = resources.front(); E; E = E->next()) {
- undo_redo->add_do_method(frames, "add_frame", edited_anim, E->get(), p_at_pos == -1 ? -1 : p_at_pos + count);
+ for (const Ref<Texture2D> &E : resources) {
+ undo_redo->add_do_method(frames, "add_frame", edited_anim, E, p_at_pos == -1 ? -1 : p_at_pos + count);
undo_redo->add_undo_method(frames, "remove_frame", edited_anim, p_at_pos == -1 ? fc : p_at_pos);
count++;
}
@@ -624,10 +624,10 @@ void SpriteFramesEditor::_animation_name_edited() {
undo_redo->add_do_method(frames, "rename_animation", edited_anim, name);
undo_redo->add_undo_method(frames, "rename_animation", name, edited_anim);
- for (List<Node *>::Element *E = nodes.front(); E; E = E->next()) {
- String current = E->get()->call("get_animation");
- undo_redo->add_do_method(E->get(), "set_animation", name);
- undo_redo->add_undo_method(E->get(), "set_animation", edited_anim);
+ for (Node *E : nodes) {
+ String current = E->call("get_animation");
+ undo_redo->add_do_method(E, "set_animation", name);
+ undo_redo->add_undo_method(E, "set_animation", edited_anim);
}
undo_redo->add_do_method(this, "_update_library");
@@ -655,10 +655,10 @@ void SpriteFramesEditor::_animation_add() {
undo_redo->add_do_method(this, "_update_library");
undo_redo->add_undo_method(this, "_update_library");
- for (List<Node *>::Element *E = nodes.front(); E; E = E->next()) {
- String current = E->get()->call("get_animation");
- undo_redo->add_do_method(E->get(), "set_animation", name);
- undo_redo->add_undo_method(E->get(), "set_animation", current);
+ for (Node *E : nodes) {
+ String current = E->call("get_animation");
+ undo_redo->add_do_method(E, "set_animation", name);
+ undo_redo->add_undo_method(E, "set_animation", current);
}
edited_anim = name;
@@ -788,8 +788,8 @@ void SpriteFramesEditor::_update_library(bool p_skip_selector) {
anim_names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = anim_names.front(); E; E = E->next()) {
- String name = E->get();
+ for (const StringName &E : anim_names) {
+ String name = E;
TreeItem *it = animations->create_item(anim_root);
@@ -798,7 +798,7 @@ void SpriteFramesEditor::_update_library(bool p_skip_selector) {
it->set_text(0, name);
it->set_editable(0, true);
- if (E->get() == edited_anim) {
+ if (E == edited_anim) {
it->select(0);
}
}
diff --git a/editor/plugins/texture_editor_plugin.cpp b/editor/plugins/texture_editor_plugin.cpp
index 2eee9b8de3..44db06bcfd 100644
--- a/editor/plugins/texture_editor_plugin.cpp
+++ b/editor/plugins/texture_editor_plugin.cpp
@@ -48,8 +48,10 @@ void TexturePreview::_notification(int p_what) {
break;
}
- Ref<Font> metadata_label_font = get_theme_font(SNAME("expression"), SNAME("EditorFonts"));
- metadata_label->add_theme_font_override("font", metadata_label_font);
+ if (metadata_label) {
+ Ref<Font> metadata_label_font = get_theme_font(SNAME("expression"), SNAME("EditorFonts"));
+ metadata_label->add_theme_font_override("font", metadata_label_font);
+ }
checkerboard->set_texture(get_theme_icon(SNAME("Checkerboard"), SNAME("EditorIcons")));
} break;
diff --git a/editor/plugins/texture_editor_plugin.h b/editor/plugins/texture_editor_plugin.h
index c7272c83bc..36a5513ea6 100644
--- a/editor/plugins/texture_editor_plugin.h
+++ b/editor/plugins/texture_editor_plugin.h
@@ -39,10 +39,10 @@ class TexturePreview : public MarginContainer {
GDCLASS(TexturePreview, MarginContainer);
private:
- TextureRect *texture_display;
+ TextureRect *texture_display = nullptr;
- TextureRect *checkerboard;
- Label *metadata_label;
+ TextureRect *checkerboard = nullptr;
+ Label *metadata_label = nullptr;
protected:
void _notification(int p_what);
diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp
index e323f1571d..b277f2ab42 100644
--- a/editor/plugins/texture_region_editor_plugin.cpp
+++ b/editor/plugins/texture_region_editor_plugin.cpp
@@ -144,8 +144,7 @@ void TextureRegionEditor::_region_draw() {
}
}
} else if (snap_mode == SNAP_AUTOSLICE) {
- for (List<Rect2>::Element *E = autoslice_cache.front(); E; E = E->next()) {
- Rect2 r = E->get();
+ for (const Rect2 &r : autoslice_cache) {
Vector2 endpoints[4] = {
mtx.basis_xform(r.position),
mtx.basis_xform(r.position + Vector2(r.size.x, 0)),
@@ -328,9 +327,9 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
}
if (edited_margin < 0 && snap_mode == SNAP_AUTOSLICE) {
Vector2 point = mtx.affine_inverse().xform(Vector2(mb->get_position().x, mb->get_position().y));
- for (List<Rect2>::Element *E = autoslice_cache.front(); E; E = E->next()) {
- if (E->get().has_point(point)) {
- rect = E->get();
+ for (const Rect2 &E : autoslice_cache) {
+ if (E.has_point(point)) {
+ rect = E;
if (Input::get_singleton()->is_key_pressed(KEY_CTRL) && !(Input::get_singleton()->is_key_pressed(KEY_SHIFT | KEY_ALT))) {
Rect2 r;
if (node_sprite) {
@@ -749,12 +748,12 @@ void TextureRegionEditor::_update_autoslice() {
for (int x = 0; x < texture->get_width(); x++) {
if (texture->is_pixel_opaque(x, y)) {
bool found = false;
- for (List<Rect2>::Element *E = autoslice_cache.front(); E; E = E->next()) {
- Rect2 grown = E->get().grow(1.5);
+ for (Rect2 &E : autoslice_cache) {
+ Rect2 grown = E.grow(1.5);
if (grown.has_point(Point2(x, y))) {
- E->get().expand_to(Point2(x, y));
- E->get().expand_to(Point2(x + 1, y + 1));
- x = E->get().position.x + E->get().size.x - 1;
+ E.expand_to(Point2(x, y));
+ E.expand_to(Point2(x + 1, y + 1));
+ x = E.position.x + E.size.x - 1;
bool merged = true;
while (merged) {
merged = false;
@@ -764,12 +763,12 @@ void TextureRegionEditor::_update_autoslice() {
autoslice_cache.erase(F->prev());
queue_erase = false;
}
- if (F == E) {
+ if (F->get() == E) {
continue;
}
- if (E->get().grow(1).intersects(F->get())) {
- E->get().expand_to(F->get().position);
- E->get().expand_to(F->get().position + F->get().size);
+ if (E.grow(1).intersects(F->get())) {
+ E.expand_to(F->get().position);
+ E.expand_to(F->get().position + F->get().size);
if (F->prev()) {
F = F->prev();
autoslice_cache.erase(F->next());
diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp
index 9338ea6ddd..7ea3deedb9 100644
--- a/editor/plugins/theme_editor_plugin.cpp
+++ b/editor/plugins/theme_editor_plugin.cpp
@@ -65,8 +65,8 @@ void ThemeItemImportTree::_update_items_tree() {
tree_icon_items.clear();
tree_stylebox_items.clear();
- for (List<StringName>::Element *E = types.front(); E; E = E->next()) {
- String type_name = (String)E->get();
+ for (const StringName &E : types) {
+ String type_name = (String)E;
TreeItem *type_node = import_items_tree->create_item(root);
type_node->set_meta("_can_be_imported", false);
@@ -89,12 +89,12 @@ void ThemeItemImportTree::_update_items_tree() {
names.clear();
filtered_names.clear();
- base_theme->get_theme_item_list(dt, E->get(), &names);
+ base_theme->get_theme_item_list(dt, E, &names);
bool data_type_has_filtered_items = false;
- for (List<StringName>::Element *F = names.front(); F; F = F->next()) {
- String item_name = (String)F->get();
+ for (const StringName &F : names) {
+ String item_name = (String)F;
bool is_item_matching_filter = (item_name.findn(filter_text) > -1);
if (!filter_text.is_empty() && !is_matching_filter && !is_item_matching_filter) {
continue;
@@ -105,7 +105,7 @@ void ThemeItemImportTree::_update_items_tree() {
has_filtered_items = true;
data_type_has_filtered_items = true;
}
- filtered_names.push_back(F->get());
+ filtered_names.push_back(F);
}
if (filtered_names.size() == 0) {
@@ -182,10 +182,10 @@ void ThemeItemImportTree::_update_items_tree() {
bool data_type_any_checked_with_data = false;
filtered_names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *F = filtered_names.front(); F; F = F->next()) {
+ for (const StringName &F : filtered_names) {
TreeItem *item_node = import_items_tree->create_item(data_type_node);
item_node->set_meta("_can_be_imported", true);
- item_node->set_text(0, F->get());
+ item_node->set_text(0, F);
item_node->set_cell_mode(IMPORT_ITEM, TreeItem::CELL_MODE_CHECK);
item_node->set_checked(IMPORT_ITEM, false);
item_node->set_editable(IMPORT_ITEM, true);
@@ -754,7 +754,7 @@ void ThemeItemImportTree::_import_selected() {
return;
}
- // Prevent changes from immediatelly being reported while the operation is still ongoing.
+ // Prevent changes from immediately being reported while the operation is still ongoing.
edited_theme->_freeze_change_propagation();
ProgressDialog::get_singleton()->add_task("import_theme_items", TTR("Importing Theme Items"), selected_items.size() + 2);
@@ -1236,16 +1236,16 @@ void ThemeItemEditorDialog::_update_edit_types() {
bool item_reselected = false;
edit_type_list->clear();
int e_idx = 0;
- for (List<StringName>::Element *E = theme_types.front(); E; E = E->next()) {
+ for (const StringName &E : theme_types) {
Ref<Texture2D> item_icon;
- if (E->get() == "") {
+ if (E == "") {
item_icon = get_theme_icon(SNAME("NodeDisabled"), SNAME("EditorIcons"));
} else {
- item_icon = EditorNode::get_singleton()->get_class_icon(E->get(), "NodeDisabled");
+ item_icon = EditorNode::get_singleton()->get_class_icon(E, "NodeDisabled");
}
- edit_type_list->add_item(E->get(), item_icon);
+ edit_type_list->add_item(E, item_icon);
- if (E->get() == edited_item_type) {
+ if (E == edited_item_type) {
edit_type_list->select(e_idx);
item_reselected = true;
}
@@ -1278,6 +1278,9 @@ void ThemeItemEditorDialog::_update_edit_types() {
edit_items_remove_class->set_disabled(false);
edit_items_remove_custom->set_disabled(false);
edit_items_remove_all->set_disabled(false);
+
+ edit_items_message->set_text("");
+ edit_items_message->hide();
} else {
edit_items_add_color->set_disabled(true);
edit_items_add_constant->set_disabled(true);
@@ -1289,6 +1292,9 @@ void ThemeItemEditorDialog::_update_edit_types() {
edit_items_remove_class->set_disabled(true);
edit_items_remove_custom->set_disabled(true);
edit_items_remove_all->set_disabled(true);
+
+ edit_items_message->set_text(TTR("Select a theme type from the list to edit its items.\nYou can add a custom type or import a type with its items from another theme."));
+ edit_items_message->show();
}
_update_edit_item_tree(selected_type);
}
@@ -1305,6 +1311,7 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
TreeItem *root = edit_items_tree->create_item();
List<StringName> names;
+ bool has_any_items = false;
{ // Colors.
names.clear();
@@ -1318,12 +1325,14 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
color_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All Color Items"));
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ for (const StringName &E : names) {
TreeItem *item = edit_items_tree->create_item(color_root);
- item->set_text(0, E->get());
+ item->set_text(0, E);
item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
item->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_ITEM, false, TTR("Remove Item"));
}
+
+ has_any_items = true;
}
}
@@ -1339,12 +1348,14 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
constant_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All Constant Items"));
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ for (const StringName &E : names) {
TreeItem *item = edit_items_tree->create_item(constant_root);
- item->set_text(0, E->get());
+ item->set_text(0, E);
item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
item->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_ITEM, false, TTR("Remove Item"));
}
+
+ has_any_items = true;
}
}
@@ -1360,12 +1371,14 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
font_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All Font Items"));
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ for (const StringName &E : names) {
TreeItem *item = edit_items_tree->create_item(font_root);
- item->set_text(0, E->get());
+ item->set_text(0, E);
item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
item->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_ITEM, false, TTR("Remove Item"));
}
+
+ has_any_items = true;
}
}
@@ -1381,12 +1394,14 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
font_size_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All Font Size Items"));
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ for (const StringName &E : names) {
TreeItem *item = edit_items_tree->create_item(font_size_root);
- item->set_text(0, E->get());
+ item->set_text(0, E);
item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
item->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_ITEM, false, TTR("Remove Item"));
}
+
+ has_any_items = true;
}
}
@@ -1402,12 +1417,14 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
icon_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All Icon Items"));
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ for (const StringName &E : names) {
TreeItem *item = edit_items_tree->create_item(icon_root);
- item->set_text(0, E->get());
+ item->set_text(0, E);
item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
item->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_ITEM, false, TTR("Remove Item"));
}
+
+ has_any_items = true;
}
}
@@ -1423,12 +1440,26 @@ void ThemeItemEditorDialog::_update_edit_item_tree(String p_item_type) {
stylebox_root->add_button(0, get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_DATA_TYPE, false, TTR("Remove All StyleBox Items"));
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ for (const StringName &E : names) {
TreeItem *item = edit_items_tree->create_item(stylebox_root);
- item->set_text(0, E->get());
+ item->set_text(0, E);
item->add_button(0, get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), ITEMS_TREE_RENAME_ITEM, false, TTR("Rename Item"));
item->add_button(0, get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")), ITEMS_TREE_REMOVE_ITEM, false, TTR("Remove Item"));
}
+
+ has_any_items = true;
+ }
+ }
+
+ // If some type is selected, but it doesn't seem to have any items, show a guiding message.
+ Vector<int> selected_ids = edit_type_list->get_selected_items();
+ if (selected_ids.size() > 0) {
+ if (!has_any_items) {
+ edit_items_message->set_text(TTR("This theme type is empty.\nAdd more items to it manually or by importing from another theme."));
+ edit_items_message->show();
+ } else {
+ edit_items_message->set_text("");
+ edit_items_message->hide();
}
}
}
@@ -1503,12 +1534,12 @@ void ThemeItemEditorDialog::_add_theme_item(Theme::DataType p_data_type, String
void ThemeItemEditorDialog::_remove_data_type_items(Theme::DataType p_data_type, String p_item_type) {
List<StringName> names;
- // Prevent changes from immediatelly being reported while the operation is still ongoing.
+ // Prevent changes from immediately being reported while the operation is still ongoing.
edited_theme->_freeze_change_propagation();
edited_theme->get_theme_item_list(p_data_type, p_item_type, &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- edited_theme->clear_theme_item(p_data_type, E->get(), p_item_type);
+ for (const StringName &E : names) {
+ edited_theme->clear_theme_item(p_data_type, E, p_item_type);
}
// Allow changes to be reported now that the operation is finished.
@@ -1518,7 +1549,7 @@ void ThemeItemEditorDialog::_remove_data_type_items(Theme::DataType p_data_type,
void ThemeItemEditorDialog::_remove_class_items() {
List<StringName> names;
- // Prevent changes from immediatelly being reported while the operation is still ongoing.
+ // Prevent changes from immediately being reported while the operation is still ongoing.
edited_theme->_freeze_change_propagation();
for (int dt = 0; dt < Theme::DATA_TYPE_MAX; dt++) {
@@ -1526,9 +1557,9 @@ void ThemeItemEditorDialog::_remove_class_items() {
names.clear();
Theme::get_default()->get_theme_item_list(data_type, edited_item_type, &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- if (edited_theme->has_theme_item_nocheck(data_type, E->get(), edited_item_type)) {
- edited_theme->clear_theme_item(data_type, E->get(), edited_item_type);
+ for (const StringName &E : names) {
+ if (edited_theme->has_theme_item_nocheck(data_type, E, edited_item_type)) {
+ edited_theme->clear_theme_item(data_type, E, edited_item_type);
}
}
}
@@ -1542,7 +1573,7 @@ void ThemeItemEditorDialog::_remove_class_items() {
void ThemeItemEditorDialog::_remove_custom_items() {
List<StringName> names;
- // Prevent changes from immediatelly being reported while the operation is still ongoing.
+ // Prevent changes from immediately being reported while the operation is still ongoing.
edited_theme->_freeze_change_propagation();
for (int dt = 0; dt < Theme::DATA_TYPE_MAX; dt++) {
@@ -1550,9 +1581,9 @@ void ThemeItemEditorDialog::_remove_custom_items() {
names.clear();
edited_theme->get_theme_item_list(data_type, edited_item_type, &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- if (!Theme::get_default()->has_theme_item_nocheck(data_type, E->get(), edited_item_type)) {
- edited_theme->clear_theme_item(data_type, E->get(), edited_item_type);
+ for (const StringName &E : names) {
+ if (!Theme::get_default()->has_theme_item_nocheck(data_type, E, edited_item_type)) {
+ edited_theme->clear_theme_item(data_type, E, edited_item_type);
}
}
}
@@ -1566,7 +1597,7 @@ void ThemeItemEditorDialog::_remove_custom_items() {
void ThemeItemEditorDialog::_remove_all_items() {
List<StringName> names;
- // Prevent changes from immediatelly being reported while the operation is still ongoing.
+ // Prevent changes from immediately being reported while the operation is still ongoing.
edited_theme->_freeze_change_propagation();
for (int dt = 0; dt < Theme::DATA_TYPE_MAX; dt++) {
@@ -1574,8 +1605,8 @@ void ThemeItemEditorDialog::_remove_all_items() {
names.clear();
edited_theme->get_theme_item_list(data_type, edited_item_type, &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- edited_theme->clear_theme_item(data_type, E->get(), edited_item_type);
+ for (const StringName &E : names) {
+ edited_theme->clear_theme_item(data_type, E, edited_item_type);
}
}
@@ -1873,6 +1904,14 @@ ThemeItemEditorDialog::ThemeItemEditorDialog() {
edit_items_vb->add_child(edit_items_tree);
edit_items_tree->connect("button_pressed", callable_mp(this, &ThemeItemEditorDialog::_item_tree_button_pressed));
+ edit_items_message = memnew(Label);
+ edit_items_message->set_anchors_and_offsets_preset(Control::PRESET_WIDE);
+ edit_items_message->set_mouse_filter(Control::MOUSE_FILTER_STOP);
+ edit_items_message->set_align(Label::ALIGN_CENTER);
+ edit_items_message->set_valign(Label::VALIGN_CENTER);
+ edit_items_message->set_autowrap_mode(Label::AUTOWRAP_WORD);
+ edit_items_tree->add_child(edit_items_message);
+
edit_theme_item_dialog = memnew(ConfirmationDialog);
edit_theme_item_dialog->set_title(TTR("Add Theme Item"));
add_child(edit_theme_item_dialog);
@@ -1927,8 +1966,8 @@ ThemeItemEditorDialog::ThemeItemEditorDialog() {
import_another_theme_dialog->set_title(TTR("Select Another Theme Resource:"));
List<String> ext;
ResourceLoader::get_recognized_extensions_for_type("Theme", &ext);
- for (List<String>::Element *E = ext.front(); E; E = E->next()) {
- import_another_theme_dialog->add_filter("*." + E->get() + "; Theme Resource");
+ for (const String &E : ext) {
+ import_another_theme_dialog->add_filter("*." + E + "; Theme Resource");
}
import_another_file_hb->add_child(import_another_theme_dialog);
import_another_theme_dialog->connect("file_selected", callable_mp(this, &ThemeItemEditorDialog::_select_another_theme_cbk));
@@ -1969,26 +2008,26 @@ void ThemeTypeDialog::_update_add_type_options(const String &p_filter) {
names.sort_custom<StringName::AlphCompare>();
Vector<StringName> unique_names;
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ for (const StringName &E : names) {
// Filter out undesired values.
- if (!p_filter.is_subsequence_ofi(String(E->get()))) {
+ if (!p_filter.is_subsequence_ofi(String(E))) {
continue;
}
// Skip duplicate values.
- if (unique_names.has(E->get())) {
+ if (unique_names.has(E)) {
continue;
}
- unique_names.append(E->get());
+ unique_names.append(E);
Ref<Texture2D> item_icon;
- if (E->get() == "") {
+ if (E == "") {
item_icon = get_theme_icon(SNAME("NodeDisabled"), SNAME("EditorIcons"));
} else {
- item_icon = EditorNode::get_singleton()->get_class_icon(E->get(), "NodeDisabled");
+ item_icon = EditorNode::get_singleton()->get_class_icon(E, "NodeDisabled");
}
- add_type_options->add_item(E->get(), item_icon);
+ add_type_options->add_item(E, item_icon);
}
}
@@ -2132,16 +2171,16 @@ void ThemeTypeEditor::_update_type_list() {
bool item_reselected = false;
int e_idx = 0;
- for (List<StringName>::Element *E = theme_types.front(); E; E = E->next()) {
+ for (const StringName &E : theme_types) {
Ref<Texture2D> item_icon;
- if (E->get() == "") {
+ if (E == "") {
item_icon = get_theme_icon(SNAME("NodeDisabled"), SNAME("EditorIcons"));
} else {
- item_icon = EditorNode::get_singleton()->get_class_icon(E->get(), "NodeDisabled");
+ item_icon = EditorNode::get_singleton()->get_class_icon(E, "NodeDisabled");
}
- theme_type_list->add_icon_item(item_icon, E->get());
+ theme_type_list->add_icon_item(item_icon, E);
- if (E->get() == edited_type) {
+ if (E == edited_type) {
theme_type_list->select(e_idx);
item_reselected = true;
}
@@ -2182,8 +2221,8 @@ OrderedHashMap<StringName, bool> ThemeTypeEditor::_get_type_items(String p_type_
(Theme::get_default().operator->()->*get_list_func)(default_type, &names);
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- items[E->get()] = false;
+ for (const StringName &E : names) {
+ items[E] = false;
}
}
@@ -2191,8 +2230,8 @@ OrderedHashMap<StringName, bool> ThemeTypeEditor::_get_type_items(String p_type_
names.clear();
(edited_theme.operator->()->*get_list_func)(p_type_name, &names);
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- items[E->get()] = true;
+ for (const StringName &E : names) {
+ items[E] = true;
}
}
@@ -2203,8 +2242,8 @@ OrderedHashMap<StringName, bool> ThemeTypeEditor::_get_type_items(String p_type_
keys.sort_custom<StringName::AlphCompare>();
OrderedHashMap<StringName, bool> ordered_items;
- for (List<StringName>::Element *E = keys.front(); E; E = E->next()) {
- ordered_items[E->get()] = items[E->get()];
+ for (const StringName &E : keys) {
+ ordered_items[E] = items[E];
}
return ordered_items;
@@ -2542,15 +2581,15 @@ void ThemeTypeEditor::_update_type_items() {
// Various type settings.
if (ClassDB::class_exists(edited_type)) {
type_variation_edit->set_editable(false);
- type_variation_edit->set_tooltip(TTR("A type associated with a built-in class cannot be marked as a variation of another type."));
type_variation_edit->set_text("");
type_variation_button->hide();
+ type_variation_locked->show();
} else {
type_variation_edit->set_editable(true);
- type_variation_edit->set_tooltip("");
type_variation_edit->set_text(edited_theme->get_type_variation_base(edited_type));
_add_focusable(type_variation_edit);
type_variation_button->show();
+ type_variation_locked->hide();
}
}
@@ -2574,60 +2613,60 @@ void ThemeTypeEditor::_add_default_type_items() {
}
updating = true;
- // Prevent changes from immediatelly being reported while the operation is still ongoing.
+ // Prevent changes from immediately being reported while the operation is still ongoing.
edited_theme->_freeze_change_propagation();
{
names.clear();
Theme::get_default()->get_icon_list(default_type, &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- if (!edited_theme->has_icon(E->get(), edited_type)) {
- edited_theme->set_icon(E->get(), edited_type, Ref<Texture2D>());
+ for (const StringName &E : names) {
+ if (!edited_theme->has_icon(E, edited_type)) {
+ edited_theme->set_icon(E, edited_type, Ref<Texture2D>());
}
}
}
{
names.clear();
Theme::get_default()->get_stylebox_list(default_type, &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- if (!edited_theme->has_stylebox(E->get(), edited_type)) {
- edited_theme->set_stylebox(E->get(), edited_type, Ref<StyleBox>());
+ for (const StringName &E : names) {
+ if (!edited_theme->has_stylebox(E, edited_type)) {
+ edited_theme->set_stylebox(E, edited_type, Ref<StyleBox>());
}
}
}
{
names.clear();
Theme::get_default()->get_font_list(default_type, &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- if (!edited_theme->has_font(E->get(), edited_type)) {
- edited_theme->set_font(E->get(), edited_type, Ref<Font>());
+ for (const StringName &E : names) {
+ if (!edited_theme->has_font(E, edited_type)) {
+ edited_theme->set_font(E, edited_type, Ref<Font>());
}
}
}
{
names.clear();
Theme::get_default()->get_font_size_list(default_type, &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- if (!edited_theme->has_font_size(E->get(), edited_type)) {
- edited_theme->set_font_size(E->get(), edited_type, Theme::get_default()->get_font_size(E->get(), default_type));
+ for (const StringName &E : names) {
+ if (!edited_theme->has_font_size(E, edited_type)) {
+ edited_theme->set_font_size(E, edited_type, Theme::get_default()->get_font_size(E, default_type));
}
}
}
{
names.clear();
Theme::get_default()->get_color_list(default_type, &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- if (!edited_theme->has_color(E->get(), edited_type)) {
- edited_theme->set_color(E->get(), edited_type, Theme::get_default()->get_color(E->get(), default_type));
+ for (const StringName &E : names) {
+ if (!edited_theme->has_color(E, edited_type)) {
+ edited_theme->set_color(E, edited_type, Theme::get_default()->get_color(E, default_type));
}
}
}
{
names.clear();
Theme::get_default()->get_constant_list(default_type, &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- if (!edited_theme->has_constant(E->get(), edited_type)) {
- edited_theme->set_constant(E->get(), edited_type, Theme::get_default()->get_constant(E->get(), default_type));
+ for (const StringName &E : names) {
+ if (!edited_theme->has_constant(E, edited_type)) {
+ edited_theme->set_constant(E, edited_type, Theme::get_default()->get_constant(E, default_type));
}
}
}
@@ -2876,18 +2915,18 @@ void ThemeTypeEditor::_update_stylebox_from_leading() {
return;
}
- // Prevent changes from immediatelly being reported while the operation is still ongoing.
+ // Prevent changes from immediately being reported while the operation is still ongoing.
edited_theme->_freeze_change_propagation();
List<StringName> names;
edited_theme->get_stylebox_list(edited_type, &names);
List<Ref<StyleBox>> styleboxes;
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- if (E->get() == leading_stylebox.item_name) {
+ for (const StringName &E : names) {
+ if (E == leading_stylebox.item_name) {
continue;
}
- Ref<StyleBox> sb = edited_theme->get_stylebox(E->get(), edited_type);
+ Ref<StyleBox> sb = edited_theme->get_stylebox(E, edited_type);
if (sb->get_class() == leading_stylebox.stylebox->get_class()) {
styleboxes.push_back(sb);
}
@@ -2895,20 +2934,20 @@ void ThemeTypeEditor::_update_stylebox_from_leading() {
List<PropertyInfo> props;
leading_stylebox.stylebox->get_property_list(&props);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : props) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- Variant value = leading_stylebox.stylebox->get(E->get().name);
- Variant ref_value = leading_stylebox.ref_stylebox->get(E->get().name);
+ Variant value = leading_stylebox.stylebox->get(E.name);
+ Variant ref_value = leading_stylebox.ref_stylebox->get(E.name);
if (value == ref_value) {
continue;
}
- for (List<Ref<StyleBox>>::Element *F = styleboxes.front(); F; F = F->next()) {
- Ref<StyleBox> sb = F->get();
- sb->set(E->get().name, value);
+ for (const Ref<StyleBox> &F : styleboxes) {
+ Ref<StyleBox> sb = F;
+ sb->set(E.name, value);
}
}
@@ -3067,8 +3106,11 @@ ThemeTypeEditor::ThemeTypeEditor() {
type_settings_list->set_h_size_flags(SIZE_EXPAND_FILL);
type_settings_sc->add_child(type_settings_list);
+ VBoxContainer *type_variation_vb = memnew(VBoxContainer);
+ type_settings_list->add_child(type_variation_vb);
+
HBoxContainer *type_variation_hb = memnew(HBoxContainer);
- type_settings_list->add_child(type_variation_hb);
+ type_variation_vb->add_child(type_variation_hb);
Label *type_variation_label = memnew(Label);
type_variation_hb->add_child(type_variation_label);
type_variation_label->set_text(TTR("Base Type"));
@@ -3083,6 +3125,13 @@ ThemeTypeEditor::ThemeTypeEditor() {
type_variation_button->set_tooltip(TTR("Select the variation base type from a list of available types."));
type_variation_button->connect("pressed", callable_mp(this, &ThemeTypeEditor::_add_type_variation_cbk));
+ type_variation_locked = memnew(Label);
+ type_variation_vb->add_child(type_variation_locked);
+ type_variation_locked->set_align(Label::ALIGN_CENTER);
+ type_variation_locked->set_autowrap_mode(Label::AUTOWRAP_WORD);
+ type_variation_locked->set_text(TTR("A type associated with a built-in class cannot be marked as a variation of another type."));
+ type_variation_locked->hide();
+
add_type_dialog = memnew(ThemeTypeDialog);
add_child(add_type_dialog);
add_type_dialog->connect("type_selected", callable_mp(this, &ThemeTypeEditor::_add_type_dialog_selected));
@@ -3112,7 +3161,7 @@ void ThemeEditor::edit(const Ref<Theme> &p_theme) {
preview_tab->set_preview_theme(p_theme);
}
- theme_name->set_text(TTR("Theme") + ": " + theme->get_path().get_file());
+ theme_name->set_text(TTR("Theme:") + " " + theme->get_path().get_file());
}
Ref<Theme> ThemeEditor::get_edited_theme() {
@@ -3130,7 +3179,7 @@ void ThemeEditor::_theme_save_button_cbk(bool p_save_as) {
}
void ThemeEditor::_theme_edit_button_cbk() {
- theme_edit_dialog->popup_centered(Size2(850, 760) * EDSCALE);
+ theme_edit_dialog->popup_centered(Size2(850, 700) * EDSCALE);
}
void ThemeEditor::_add_preview_button_cbk() {
@@ -3230,7 +3279,7 @@ ThemeEditor::ThemeEditor() {
add_child(top_menu);
theme_name = memnew(Label);
- theme_name->set_text(TTR("Theme") + ": ");
+ theme_name->set_text(TTR("Theme:"));
theme_name->set_theme_type_variation("HeaderSmall");
top_menu->add_child(theme_name);
@@ -3301,8 +3350,8 @@ ThemeEditor::ThemeEditor() {
preview_scene_dialog->set_title(TTR("Select UI Scene:"));
List<String> ext;
ResourceLoader::get_recognized_extensions_for_type("PackedScene", &ext);
- for (List<String>::Element *E = ext.front(); E; E = E->next()) {
- preview_scene_dialog->add_filter("*." + E->get() + "; Scene");
+ for (const String &E : ext) {
+ preview_scene_dialog->add_filter("*." + E + "; Scene");
}
main_hs->add_child(preview_scene_dialog);
preview_scene_dialog->connect("file_selected", callable_mp(this, &ThemeEditor::_preview_scene_dialog_cbk));
@@ -3343,12 +3392,12 @@ bool ThemeEditorPlugin::handles(Object *p_node) const {
List<StringName> names;
edited_theme->get_font_type_list(&types);
- for (List<StringName>::Element *E = types.front(); E; E = E->next()) {
+ for (const StringName &E : types) {
names.clear();
- edited_theme->get_font_list(E->get(), &names);
+ edited_theme->get_font_list(E, &names);
- for (List<StringName>::Element *F = names.front(); F; F = F->next()) {
- if (font_item == edited_theme->get_font(F->get(), E->get())) {
+ for (const StringName &F : names) {
+ if (font_item == edited_theme->get_font(F, E)) {
belongs_to_theme = true;
break;
}
@@ -3360,12 +3409,12 @@ bool ThemeEditorPlugin::handles(Object *p_node) const {
List<StringName> names;
edited_theme->get_stylebox_type_list(&types);
- for (List<StringName>::Element *E = types.front(); E; E = E->next()) {
+ for (const StringName &E : types) {
names.clear();
- edited_theme->get_stylebox_list(E->get(), &names);
+ edited_theme->get_stylebox_list(E, &names);
- for (List<StringName>::Element *F = names.front(); F; F = F->next()) {
- if (stylebox_item == edited_theme->get_stylebox(F->get(), E->get())) {
+ for (const StringName &F : names) {
+ if (stylebox_item == edited_theme->get_stylebox(F, E)) {
belongs_to_theme = true;
break;
}
@@ -3377,12 +3426,12 @@ bool ThemeEditorPlugin::handles(Object *p_node) const {
List<StringName> names;
edited_theme->get_icon_type_list(&types);
- for (List<StringName>::Element *E = types.front(); E; E = E->next()) {
+ for (const StringName &E : types) {
names.clear();
- edited_theme->get_icon_list(E->get(), &names);
+ edited_theme->get_icon_list(E, &names);
- for (List<StringName>::Element *F = names.front(); F; F = F->next()) {
- if (icon_item == edited_theme->get_icon(F->get(), E->get())) {
+ for (const StringName &F : names) {
+ if (icon_item == edited_theme->get_icon(F, E)) {
belongs_to_theme = true;
break;
}
diff --git a/editor/plugins/theme_editor_plugin.h b/editor/plugins/theme_editor_plugin.h
index e78b244a42..5b0357e3f8 100644
--- a/editor/plugins/theme_editor_plugin.h
+++ b/editor/plugins/theme_editor_plugin.h
@@ -197,6 +197,7 @@ class ThemeItemEditorDialog : public AcceptDialog {
Button *edit_items_remove_custom;
Button *edit_items_remove_all;
Tree *edit_items_tree;
+ Label *edit_items_message;
enum ItemsTreeAction {
ITEMS_TREE_RENAME_ITEM,
@@ -324,6 +325,7 @@ class ThemeTypeEditor : public MarginContainer {
LineEdit *type_variation_edit;
Button *type_variation_button;
+ Label *type_variation_locked;
enum TypeDialogMode {
ADD_THEME_TYPE,
diff --git a/editor/plugins/tiles/atlas_merging_dialog.cpp b/editor/plugins/tiles/atlas_merging_dialog.cpp
index bbafc7802b..d54906c98c 100644
--- a/editor/plugins/tiles/atlas_merging_dialog.cpp
+++ b/editor/plugins/tiles/atlas_merging_dialog.cpp
@@ -154,7 +154,7 @@ void AtlasMergingDialog::_merge_confirmed(String p_path) {
Ref<Texture2D> new_texture_resource = ResourceLoader::load(p_path, "Texture2D");
merged->set_texture(new_texture_resource);
- undo_redo->create_action("Merge TileSetAtlasSource");
+ undo_redo->create_action(TTR("Merge TileSetAtlasSource"));
int next_id = tile_set->get_next_source_id();
undo_redo->add_do_method(*tile_set, "add_source", merged, next_id);
undo_redo->add_undo_method(*tile_set, "remove_source", next_id);
diff --git a/editor/plugins/tiles/tile_atlas_view.cpp b/editor/plugins/tiles/tile_atlas_view.cpp
index 84e40e2ffa..13f04cb804 100644
--- a/editor/plugins/tiles/tile_atlas_view.cpp
+++ b/editor/plugins/tiles/tile_atlas_view.cpp
@@ -32,6 +32,7 @@
#include "core/input/input.h"
#include "core/os/keyboard.h"
+#include "scene/2d/tile_map.h"
#include "scene/gui/box_container.h"
#include "scene/gui/label.h"
#include "scene/gui/panel.h"
@@ -259,7 +260,7 @@ void TileAtlasView::_draw_base_tiles() {
Vector2i offset_pos = (margins + (atlas_coords * texture_region_size) + tile_set_atlas_source->get_tile_texture_region(atlas_coords).size / 2 + tile_set_atlas_source->get_tile_effective_texture_offset(atlas_coords, 0));
// Draw the tile.
- TileSetPluginAtlasRendering::draw_tile(base_tiles_draw->get_canvas_item(), offset_pos, tile_set, source_id, atlas_coords, 0);
+ TileMap::draw_tile(base_tiles_draw->get_canvas_item(), offset_pos, tile_set, source_id, atlas_coords, 0);
}
}
}
@@ -375,7 +376,7 @@ void TileAtlasView::_draw_alternatives() {
}
// Draw the tile.
- TileSetPluginAtlasRendering::draw_tile(alternatives_draw->get_canvas_item(), offset_pos, tile_set, source_id, atlas_coords, alternative_id);
+ TileMap::draw_tile(alternatives_draw->get_canvas_item(), offset_pos, tile_set, source_id, atlas_coords, alternative_id);
// Increment the x position.
current_pos.x += transposed ? texture_region.size.y : texture_region.size.x;
diff --git a/editor/plugins/tiles/tile_data_editors.cpp b/editor/plugins/tiles/tile_data_editors.cpp
index dd2922286f..bab55df65a 100644
--- a/editor/plugins/tiles/tile_data_editors.cpp
+++ b/editor/plugins/tiles/tile_data_editors.cpp
@@ -1244,7 +1244,7 @@ void TileDataCollisionEditor::_polygons_changed() {
}
}
- // Remove uneeded properties and their editors.
+ // Remove unneeded properties and their editors.
for (int i = polygon_editor->get_polygon_count(); dummy_object->has_dummy_property(vformat("polygon_%d_one_way", i)); i++) {
dummy_object->remove_dummy_property(vformat("polygon_%d_one_way", i));
}
diff --git a/editor/plugins/tiles/tile_data_editors.h b/editor/plugins/tiles/tile_data_editors.h
index 781f26cc02..99998dc779 100644
--- a/editor/plugins/tiles/tile_data_editors.h
+++ b/editor/plugins/tiles/tile_data_editors.h
@@ -36,10 +36,10 @@
#include "editor/editor_node.h"
#include "editor/editor_properties.h"
+#include "scene/2d/tile_map.h"
#include "scene/gui/box_container.h"
#include "scene/gui/control.h"
#include "scene/gui/label.h"
-#include "scene/resources/tile_set.h"
class TileDataEditor : public VBoxContainer {
GDCLASS(TileDataEditor, VBoxContainer);
diff --git a/editor/plugins/tiles/tile_map_editor.cpp b/editor/plugins/tiles/tile_map_editor.cpp
index 44822bec3a..77084f551a 100644
--- a/editor/plugins/tiles/tile_map_editor.cpp
+++ b/editor/plugins/tiles/tile_map_editor.cpp
@@ -377,6 +377,11 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
return false;
}
+ if (tile_map_layer < 0) {
+ return false;
+ }
+ ERR_FAIL_INDEX_V(tile_map_layer, tile_map->get_layers_count(), false);
+
Ref<TileSet> tile_set = tile_map->get_tileset();
if (!tile_set.is_valid()) {
return false;
@@ -391,7 +396,7 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
for (Set<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
coords_array.push_back(E->get());
}
- tile_map_clipboard = tile_map->get_pattern(coords_array);
+ tile_map_clipboard = tile_map->get_pattern(tile_map_layer, coords_array);
}
if (ED_IS_SHORTCUT("tiles_editor/cut", p_event)) {
@@ -399,8 +404,8 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
if (!tile_map_selection.is_empty()) {
undo_redo->create_action(TTR("Delete tiles"));
for (Set<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
- undo_redo->add_do_method(tile_map, "set_cell", E->get(), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
- undo_redo->add_undo_method(tile_map, "set_cell", E->get(), tile_map->get_cell_source_id(E->get()), tile_map->get_cell_atlas_coords(E->get()), tile_map->get_cell_alternative_tile(E->get()));
+ undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E->get(), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
+ undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E->get(), tile_map->get_cell_source_id(tile_map_layer, E->get()), tile_map->get_cell_atlas_coords(tile_map_layer, E->get()), tile_map->get_cell_alternative_tile(tile_map_layer, E->get()));
}
undo_redo->add_undo_method(this, "_set_tile_map_selection", _get_tile_map_selection());
tile_map_selection.clear();
@@ -430,8 +435,8 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
if (!tile_map_selection.is_empty()) {
undo_redo->create_action(TTR("Delete tiles"));
for (Set<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
- undo_redo->add_do_method(tile_map, "set_cell", E->get(), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
- undo_redo->add_undo_method(tile_map, "set_cell", E->get(), tile_map->get_cell_source_id(E->get()), tile_map->get_cell_atlas_coords(E->get()), tile_map->get_cell_alternative_tile(E->get()));
+ undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E->get(), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
+ undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E->get(), tile_map->get_cell_source_id(tile_map_layer, E->get()), tile_map->get_cell_atlas_coords(tile_map_layer, E->get()), tile_map->get_cell_alternative_tile(tile_map_layer, E->get()));
}
undo_redo->add_undo_method(this, "_set_tile_map_selection", _get_tile_map_selection());
tile_map_selection.clear();
@@ -456,9 +461,9 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
}
Vector2i coords = E->key();
if (!drag_modified.has(coords)) {
- drag_modified.insert(coords, tile_map->get_cell(coords));
+ drag_modified.insert(coords, tile_map->get_cell(tile_map_layer, coords));
}
- tile_map->set_cell(coords, E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ tile_map->set_cell(tile_map_layer, coords, E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
}
} break;
case DRAG_TYPE_BUCKET: {
@@ -472,9 +477,9 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
}
Vector2i coords = E->key();
if (!drag_modified.has(coords)) {
- drag_modified.insert(coords, tile_map->get_cell(coords));
+ drag_modified.insert(coords, tile_map->get_cell(tile_map_layer, coords));
}
- tile_map->set_cell(coords, E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ tile_map->set_cell(tile_map_layer, coords, E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
}
}
}
@@ -497,7 +502,9 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
if (mb->get_button_index() == MOUSE_BUTTON_LEFT) {
if (mb->is_pressed()) {
// Pressed
- if (tool_buttons_group->get_pressed_button() == select_tool_button) {
+ if (drag_type == DRAG_TYPE_CLIPBOARD_PASTE) {
+ // Do nothing.
+ } else if (tool_buttons_group->get_pressed_button() == select_tool_button) {
drag_start_mouse_pos = mpos;
if (tile_map_selection.has(tile_map->world_to_map(drag_start_mouse_pos)) && !mb->is_shift_pressed()) {
// Move the selection
@@ -505,8 +512,8 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
drag_modified.clear();
for (Set<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
Vector2i coords = E->get();
- drag_modified.insert(coords, tile_map->get_cell(coords));
- tile_map->set_cell(coords, TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
+ drag_modified.insert(coords, tile_map->get_cell(tile_map_layer, coords));
+ tile_map->set_cell(tile_map_layer, coords, TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
}
} else {
// Select tiles
@@ -530,9 +537,9 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
}
Vector2i coords = E->key();
if (!drag_modified.has(coords)) {
- drag_modified.insert(coords, tile_map->get_cell(coords));
+ drag_modified.insert(coords, tile_map->get_cell(tile_map_layer, coords));
}
- tile_map->set_cell(coords, E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ tile_map->set_cell(tile_map_layer, coords, E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
}
} else if (tool_buttons_group->get_pressed_button() == line_tool_button) {
drag_type = DRAG_TYPE_LINE;
@@ -556,9 +563,9 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
}
Vector2i coords = E->key();
if (!drag_modified.has(coords)) {
- drag_modified.insert(coords, tile_map->get_cell(coords));
+ drag_modified.insert(coords, tile_map->get_cell(tile_map_layer, coords));
}
- tile_map->set_cell(coords, E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ tile_map->set_cell(tile_map_layer, coords, E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
}
}
}
@@ -587,6 +594,11 @@ void TileMapEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p_over
return;
}
+ if (tile_map_layer < 0) {
+ return;
+ }
+ ERR_FAIL_INDEX(tile_map_layer, tile_map->get_layers_count());
+
Ref<TileSet> tile_set = tile_map->get_tileset();
if (!tile_set.is_valid()) {
return;
@@ -623,7 +635,7 @@ void TileMapEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p_over
for (int x = rect.position.x; x < rect.get_end().x; x++) {
for (int y = rect.position.y; y < rect.get_end().y; y++) {
Vector2i coords = Vector2i(x, y);
- if (tile_map->get_cell_source_id(coords) != TileSet::INVALID_SOURCE) {
+ if (tile_map->get_cell_source_id(tile_map_layer, coords) != TileSet::INVALID_SOURCE) {
Rect2 cell_region = xform.xform(Rect2(tile_map->map_to_world(coords) - tile_shape_size / 2, tile_shape_size));
tile_set->draw_tile_shape(p_overlay, cell_region, Color(1.0, 1.0, 1.0), false);
}
@@ -637,7 +649,7 @@ void TileMapEditorTilesPlugin::forward_canvas_draw_over_viewport(Control *p_over
for (int x = rect.position.x; x < rect.get_end().x; x++) {
for (int y = rect.position.y; y < rect.get_end().y; y++) {
Vector2i coords = Vector2i(x, y);
- if (tile_map->get_cell_source_id(coords) != TileSet::INVALID_SOURCE) {
+ if (tile_map->get_cell_source_id(tile_map_layer, coords) != TileSet::INVALID_SOURCE) {
to_draw.insert(coords);
}
}
@@ -914,6 +926,8 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_rect(Vector2i p_start
TileMapPattern erase_pattern;
erase_pattern.set_cell(Vector2i(0, 0), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
TileMapPattern *pattern = erase_button->is_pressed() ? &erase_pattern : selection_pattern;
+ Map<Vector2i, TileMapCell> err_output;
+ ERR_FAIL_COND_V(pattern->is_empty(), err_output);
// Compute the offset to align things to the bottom or right.
bool aligned_right = p_end_cell.x < p_start_cell.x;
@@ -956,6 +970,12 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_bucket_fill(Vector2i
return Map<Vector2i, TileMapCell>();
}
+ if (tile_map_layer < 0) {
+ return Map<Vector2i, TileMapCell>();
+ }
+ Map<Vector2i, TileMapCell> output;
+ ERR_FAIL_INDEX_V(tile_map_layer, tile_map->get_layers_count(), output);
+
Ref<TileSet> tile_set = tile_map->get_tileset();
if (!tile_set.is_valid()) {
return Map<Vector2i, TileMapCell>();
@@ -966,9 +986,8 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_bucket_fill(Vector2i
erase_pattern.set_cell(Vector2i(0, 0), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
TileMapPattern *pattern = erase_button->is_pressed() ? &erase_pattern : selection_pattern;
- Map<Vector2i, TileMapCell> output;
if (!pattern->is_empty()) {
- TileMapCell source = tile_map->get_cell(p_coords);
+ TileMapCell source = tile_map->get_cell(tile_map_layer, p_coords);
// If we are filling empty tiles, compute the tilemap boundaries.
Rect2i boundaries;
@@ -985,9 +1004,9 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_bucket_fill(Vector2i
Vector2i coords = to_check.back()->get();
to_check.pop_back();
if (!already_checked.has(coords)) {
- if (source.source_id == tile_map->get_cell_source_id(coords) &&
- source.get_atlas_coords() == tile_map->get_cell_atlas_coords(coords) &&
- source.alternative_tile == tile_map->get_cell_alternative_tile(coords) &&
+ if (source.source_id == tile_map->get_cell_source_id(tile_map_layer, coords) &&
+ source.get_atlas_coords() == tile_map->get_cell_atlas_coords(tile_map_layer, coords) &&
+ source.alternative_tile == tile_map->get_cell_alternative_tile(tile_map_layer, coords) &&
(source.source_id != TileSet::INVALID_SOURCE || boundaries.has_point(coords))) {
if (!erase_button->is_pressed() && random_tile_checkbox->is_pressed()) {
// Paint a random tile.
@@ -1027,13 +1046,13 @@ Map<Vector2i, TileMapCell> TileMapEditorTilesPlugin::_draw_bucket_fill(Vector2i
}
}
} else {
- to_check = tile_map->get_used_cells();
+ to_check = tile_map->get_used_cells(tile_map_layer);
}
for (int i = 0; i < to_check.size(); i++) {
Vector2i coords = to_check[i];
- if (source.source_id == tile_map->get_cell_source_id(coords) &&
- source.get_atlas_coords() == tile_map->get_cell_atlas_coords(coords) &&
- source.alternative_tile == tile_map->get_cell_alternative_tile(coords) &&
+ if (source.source_id == tile_map->get_cell_source_id(tile_map_layer, coords) &&
+ source.get_atlas_coords() == tile_map->get_cell_atlas_coords(tile_map_layer, coords) &&
+ source.alternative_tile == tile_map->get_cell_alternative_tile(tile_map_layer, coords) &&
(source.source_id != TileSet::INVALID_SOURCE || boundaries.has_point(coords))) {
if (!erase_button->is_pressed() && random_tile_checkbox->is_pressed()) {
// Paint a random tile.
@@ -1066,6 +1085,11 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
return;
}
+ if (tile_map_layer < 0) {
+ return;
+ }
+ ERR_FAIL_INDEX(tile_map_layer, tile_map->get_layers_count());
+
Ref<TileSet> tile_set = tile_map->get_tileset();
if (!tile_set.is_valid()) {
return;
@@ -1091,7 +1115,7 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
tile_map_selection.erase(coords);
}
} else {
- if (tile_map->get_cell_source_id(coords) != TileSet::INVALID_SOURCE) {
+ if (tile_map->get_cell_source_id(tile_map_layer, coords) != TileSet::INVALID_SOURCE) {
tile_map_selection.insert(coords);
}
}
@@ -1123,7 +1147,7 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
coords = tile_map->map_pattern(top_left, selection_used_cells[i], selection_pattern);
cells_undo[coords] = TileMapCell(drag_modified[coords].source_id, drag_modified[coords].get_atlas_coords(), drag_modified[coords].alternative_tile);
coords = tile_map->map_pattern(top_left + offset, selection_used_cells[i], selection_pattern);
- cells_undo[coords] = TileMapCell(tile_map->get_cell_source_id(coords), tile_map->get_cell_atlas_coords(coords), tile_map->get_cell_alternative_tile(coords));
+ cells_undo[coords] = TileMapCell(tile_map->get_cell_source_id(tile_map_layer, coords), tile_map->get_cell_atlas_coords(tile_map_layer, coords), tile_map->get_cell_alternative_tile(tile_map_layer, coords));
}
Map<Vector2i, TileMapCell> cells_do;
@@ -1138,10 +1162,10 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
undo_redo->create_action(TTR("Move tiles"));
// Move the tiles.
for (Map<Vector2i, TileMapCell>::Element *E = cells_do.front(); E; E = E->next()) {
- undo_redo->add_do_method(tile_map, "set_cell", E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
}
for (Map<Vector2i, TileMapCell>::Element *E = cells_undo.front(); E; E = E->next()) {
- undo_redo->add_undo_method(tile_map, "set_cell", E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
}
// Update the selection.
@@ -1162,12 +1186,12 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
for (int x = rect.position.x; x < rect.get_end().x; x++) {
for (int y = rect.position.y; y < rect.get_end().y; y++) {
Vector2i coords = Vector2i(x, y);
- if (tile_map->get_cell_source_id(coords) != TileSet::INVALID_SOURCE) {
+ if (tile_map->get_cell_source_id(tile_map_layer, coords) != TileSet::INVALID_SOURCE) {
coords_array.push_back(coords);
}
}
}
- selection_pattern = tile_map->get_pattern(coords_array);
+ selection_pattern = tile_map->get_pattern(tile_map_layer, coords_array);
if (!selection_pattern->is_empty()) {
_update_tileset_selection_from_selection_pattern();
} else {
@@ -1178,8 +1202,8 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
case DRAG_TYPE_PAINT: {
undo_redo->create_action(TTR("Paint tiles"));
for (Map<Vector2i, TileMapCell>::Element *E = drag_modified.front(); E; E = E->next()) {
- undo_redo->add_do_method(tile_map, "set_cell", E->key(), tile_map->get_cell_source_id(E->key()), tile_map->get_cell_atlas_coords(E->key()), tile_map->get_cell_alternative_tile(E->key()));
- undo_redo->add_undo_method(tile_map, "set_cell", E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E->key(), tile_map->get_cell_source_id(tile_map_layer, E->key()), tile_map->get_cell_atlas_coords(tile_map_layer, E->key()), tile_map->get_cell_alternative_tile(tile_map_layer, E->key()));
+ undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
}
undo_redo->commit_action(false);
} break;
@@ -1190,8 +1214,8 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
if (!erase_button->is_pressed() && E->get().source_id == TileSet::INVALID_SOURCE) {
continue;
}
- undo_redo->add_do_method(tile_map, "set_cell", E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
- undo_redo->add_undo_method(tile_map, "set_cell", E->key(), tile_map->get_cell_source_id(E->key()), tile_map->get_cell_atlas_coords(E->key()), tile_map->get_cell_alternative_tile(E->key()));
+ undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E->key(), tile_map->get_cell_source_id(tile_map_layer, E->key()), tile_map->get_cell_atlas_coords(tile_map_layer, E->key()), tile_map->get_cell_alternative_tile(tile_map_layer, E->key()));
}
undo_redo->commit_action();
} break;
@@ -1202,19 +1226,16 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
if (!erase_button->is_pressed() && E->get().source_id == TileSet::INVALID_SOURCE) {
continue;
}
- undo_redo->add_do_method(tile_map, "set_cell", E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
- undo_redo->add_undo_method(tile_map, "set_cell", E->key(), tile_map->get_cell_source_id(E->key()), tile_map->get_cell_atlas_coords(E->key()), tile_map->get_cell_alternative_tile(E->key()));
+ undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E->key(), tile_map->get_cell_source_id(tile_map_layer, E->key()), tile_map->get_cell_atlas_coords(tile_map_layer, E->key()), tile_map->get_cell_alternative_tile(tile_map_layer, E->key()));
}
undo_redo->commit_action();
} break;
case DRAG_TYPE_BUCKET: {
undo_redo->create_action(TTR("Paint tiles"));
for (Map<Vector2i, TileMapCell>::Element *E = drag_modified.front(); E; E = E->next()) {
- if (!erase_button->is_pressed() && E->get().source_id == TileSet::INVALID_SOURCE) {
- continue;
- }
- undo_redo->add_do_method(tile_map, "set_cell", E->key(), tile_map->get_cell_source_id(E->key()), tile_map->get_cell_atlas_coords(E->key()), tile_map->get_cell_alternative_tile(E->key()));
- undo_redo->add_undo_method(tile_map, "set_cell", E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E->key(), tile_map->get_cell_source_id(tile_map_layer, E->key()), tile_map->get_cell_atlas_coords(tile_map_layer, E->key()), tile_map->get_cell_alternative_tile(tile_map_layer, E->key()));
+ undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
}
undo_redo->commit_action(false);
} break;
@@ -1224,8 +1245,8 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
TypedArray<Vector2i> used_cells = tile_map_clipboard->get_used_cells();
for (int i = 0; i < used_cells.size(); i++) {
Vector2i coords = tile_map->map_pattern(tile_map->world_to_map(mpos - mouse_offset), used_cells[i], tile_map_clipboard);
- undo_redo->add_do_method(tile_map, "set_cell", coords, tile_map_clipboard->get_cell_source_id(used_cells[i]), tile_map_clipboard->get_cell_atlas_coords(used_cells[i]), tile_map_clipboard->get_cell_alternative_tile(used_cells[i]));
- undo_redo->add_undo_method(tile_map, "set_cell", coords, tile_map->get_cell_source_id(coords), tile_map->get_cell_atlas_coords(coords), tile_map->get_cell_alternative_tile(coords));
+ undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, coords, tile_map_clipboard->get_cell_source_id(used_cells[i]), tile_map_clipboard->get_cell_atlas_coords(used_cells[i]), tile_map_clipboard->get_cell_alternative_tile(used_cells[i]));
+ undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, coords, tile_map->get_cell_source_id(tile_map_layer, coords), tile_map->get_cell_atlas_coords(tile_map_layer, coords), tile_map->get_cell_alternative_tile(tile_map_layer, coords));
}
undo_redo->commit_action();
} break;
@@ -1304,13 +1325,15 @@ void TileMapEditorTilesPlugin::_update_selection_pattern_from_tilemap_selection(
return;
}
+ ERR_FAIL_INDEX(tile_map_layer, tile_map->get_layers_count());
+
memdelete(selection_pattern);
TypedArray<Vector2i> coords_array;
for (Set<Vector2i>::Element *E = tile_map_selection.front(); E; E = E->next()) {
coords_array.push_back(E->get());
}
- selection_pattern = tile_map->get_pattern(coords_array);
+ selection_pattern = tile_map->get_pattern(tile_map_layer, coords_array);
}
void TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_selection() {
@@ -1347,8 +1370,7 @@ void TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_selection(
TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
if (atlas_source) {
// Organize using coordinates.
- for (List<const TileMapCell *>::Element *E_cell = E_source->get().front(); E_cell; E_cell = E_cell->next()) {
- const TileMapCell *current = E_cell->get();
+ for (const TileMapCell *current : E_source->get()) {
if (current->alternative_tile == 0) {
organized_pattern[current->get_atlas_coords()] = current;
} else {
@@ -1367,8 +1389,8 @@ void TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_selection(
}
} else {
// Add everything unorganized.
- for (List<const TileMapCell *>::Element *E_cell = E_source->get().front(); E_cell; E_cell = E_cell->next()) {
- unorganized.push_back(E_cell->get());
+ for (const TileMapCell *cell : E_source->get()) {
+ unorganized.push_back(cell);
}
}
@@ -1378,8 +1400,8 @@ void TileMapEditorTilesPlugin::_update_selection_pattern_from_tileset_selection(
}
Vector2i organized_size = selection_pattern->get_size();
int unorganized_index = 0;
- for (List<const TileMapCell *>::Element *E_cell = unorganized.front(); E_cell; E_cell = E_cell->next()) {
- selection_pattern->set_cell(Vector2(organized_size.x + unorganized_index, vertical_offset), E_cell->get()->source_id, E_cell->get()->get_atlas_coords(), E_cell->get()->alternative_tile);
+ for (const TileMapCell *cell : unorganized) {
+ selection_pattern->set_cell(Vector2(organized_size.x + unorganized_index, vertical_offset), cell->source_id, cell->get_atlas_coords(), cell->alternative_tile);
unorganized_index++;
}
vertical_offset += MAX(organized_size.y, 1);
@@ -1714,13 +1736,19 @@ TypedArray<Vector2i> TileMapEditorTilesPlugin::_get_tile_map_selection() const {
return output;
}
-void TileMapEditorTilesPlugin::edit(ObjectID p_tile_map_id) {
- tile_map_id = p_tile_map_id;
+void TileMapEditorTilesPlugin::edit(ObjectID p_tile_map_id, int p_tile_map_layer) {
+ _stop_dragging(); // Avoids staying in a wrong drag state.
- // Clear the selection.
- tile_set_selection.clear();
- tile_map_selection.clear();
- selection_pattern->clear();
+ if (tile_map_id != p_tile_map_id) {
+ tile_map_id = p_tile_map_id;
+
+ // Clear the selection.
+ tile_set_selection.clear();
+ tile_map_selection.clear();
+ selection_pattern->clear();
+ }
+
+ tile_map_layer = p_tile_map_layer;
}
void TileMapEditorTilesPlugin::_bind_methods() {
@@ -1759,7 +1787,7 @@ TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
paint_tool_button->set_flat(true);
paint_tool_button->set_toggle_mode(true);
paint_tool_button->set_button_group(tool_buttons_group);
- paint_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/paint_tool", "Paint", KEY_E));
+ paint_tool_button->set_shortcut(ED_SHORTCUT("tiles_editor/paint_tool", "Paint", KEY_D));
paint_tool_button->connect("pressed", callable_mp(this, &TileMapEditorTilesPlugin::_update_toolbar));
tilemap_tiles_tools_buttons->add_child(paint_tool_button);
@@ -2302,6 +2330,7 @@ Set<TileMapEditorTerrainsPlugin::Constraint> TileMapEditorTerrainsPlugin::_get_c
}
ERR_FAIL_INDEX_V(p_terrain_set, tile_set->get_terrain_sets_count(), Set<Constraint>());
+ ERR_FAIL_INDEX_V(tile_map_layer, tile_map->get_layers_count(), Set<Constraint>());
// Build a set of dummy constraints get the constrained points.
Set<Constraint> dummy_constraints;
@@ -2325,7 +2354,7 @@ Set<TileMapEditorTerrainsPlugin::Constraint> TileMapEditorTerrainsPlugin::_get_c
Map<Vector2i, TileSet::CellNeighbor> overlapping_terrain_bits = c.get_overlapping_coords_and_peering_bits();
for (Map<Vector2i, TileSet::CellNeighbor>::Element *E_overlapping = overlapping_terrain_bits.front(); E_overlapping; E_overlapping = E_overlapping->next()) {
if (!p_to_replace.has(E_overlapping->key())) {
- TileMapCell neighbor_cell = tile_map->get_cell(E_overlapping->key());
+ TileMapCell neighbor_cell = tile_map->get_cell(tile_map_layer, E_overlapping->key());
TileData *neighbor_tile_data = nullptr;
if (terrain_tiles.has(neighbor_cell) && terrain_tiles[neighbor_cell]->get_terrain_set() == p_terrain_set) {
neighbor_tile_data = terrain_tiles[neighbor_cell];
@@ -2632,6 +2661,90 @@ Map<Vector2i, TileMapCell> TileMapEditorTerrainsPlugin::_draw_terrains(const Map
return output;
}
+void TileMapEditorTerrainsPlugin::_stop_dragging() {
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
+ if (!tile_map) {
+ return;
+ }
+
+ Transform2D xform = CanvasItemEditor::get_singleton()->get_canvas_transform() * tile_map->get_global_transform();
+ Vector2 mpos = xform.affine_inverse().xform(CanvasItemEditor::get_singleton()->get_viewport_control()->get_local_mouse_position());
+
+ switch (drag_type) {
+ case DRAG_TYPE_PICK: {
+ Vector2i coords = tile_map->world_to_map(mpos);
+ TileMapCell tile = tile_map->get_cell(tile_map_layer, coords);
+
+ if (terrain_tiles.has(tile)) {
+ Array terrains_tile_pattern = _build_terrains_tile_pattern(terrain_tiles[tile]);
+
+ // Find the tree item for the right terrain set.
+ bool need_tree_item_switch = true;
+ TreeItem *tree_item = terrains_tree->get_selected();
+ if (tree_item) {
+ Dictionary metadata_dict = tree_item->get_metadata(0);
+ if (metadata_dict.has("terrain_set") && metadata_dict.has("terrain_id")) {
+ int terrain_set = metadata_dict["terrain_set"];
+ int terrain_id = metadata_dict["terrain_id"];
+ if (per_terrain_terrains_tile_patterns[terrain_set][terrain_id].has(terrains_tile_pattern)) {
+ need_tree_item_switch = false;
+ }
+ }
+ }
+
+ if (need_tree_item_switch) {
+ for (tree_item = terrains_tree->get_root()->get_first_child(); tree_item; tree_item = tree_item->get_next_visible()) {
+ Dictionary metadata_dict = tree_item->get_metadata(0);
+ if (metadata_dict.has("terrain_set") && metadata_dict.has("terrain_id")) {
+ int terrain_set = metadata_dict["terrain_set"];
+ int terrain_id = metadata_dict["terrain_id"];
+ if (per_terrain_terrains_tile_patterns[terrain_set][terrain_id].has(terrains_tile_pattern)) {
+ // Found
+ tree_item->select(0);
+ _update_tiles_list();
+ break;
+ }
+ }
+ }
+ }
+
+ // Find the list item for the given tile.
+ if (tree_item) {
+ for (int i = 0; i < terrains_tile_list->get_item_count(); i++) {
+ Dictionary metadata_dict = terrains_tile_list->get_item_metadata(i);
+ TerrainsTilePattern in_meta_terrains_tile_pattern = metadata_dict["terrains_tile_pattern"];
+ bool equals = true;
+ for (int j = 0; j < terrains_tile_pattern.size(); j++) {
+ if (terrains_tile_pattern[j] != in_meta_terrains_tile_pattern[j]) {
+ equals = false;
+ break;
+ }
+ }
+ if (equals) {
+ terrains_tile_list->select(i);
+ break;
+ }
+ }
+ } else {
+ ERR_PRINT("Terrain tile not found.");
+ }
+ }
+ picker_button->set_pressed(false);
+ } break;
+ case DRAG_TYPE_PAINT: {
+ undo_redo->create_action(TTR("Paint terrain"));
+ for (Map<Vector2i, TileMapCell>::Element *E = drag_modified.front(); E; E = E->next()) {
+ undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E->key(), tile_map->get_cell_source_id(tile_map_layer, E->key()), tile_map->get_cell_atlas_coords(tile_map_layer, E->key()), tile_map->get_cell_alternative_tile(tile_map_layer, E->key()));
+ undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ }
+ undo_redo->commit_action(false);
+ } break;
+ default:
+ break;
+ }
+ drag_type = DRAG_TYPE_NONE;
+}
+
bool TileMapEditorTerrainsPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p_event) {
if (!is_visible_in_tree()) {
// If the bottom editor is not visible, we ignore inputs.
@@ -2652,6 +2765,11 @@ bool TileMapEditorTerrainsPlugin::forward_canvas_gui_input(const Ref<InputEvent>
return false;
}
+ if (tile_map_layer < 0) {
+ return false;
+ }
+ ERR_FAIL_COND_V(tile_map_layer >= tile_map->get_layers_count(), false);
+
// Get the selected terrain.
TerrainsTilePattern selected_terrains_tile_pattern;
int selected_terrain_set = -1;
@@ -2693,9 +2811,9 @@ bool TileMapEditorTerrainsPlugin::forward_canvas_gui_input(const Ref<InputEvent>
Map<Vector2i, TileMapCell> modified = _draw_terrains(to_draw, selected_terrain_set);
for (Map<Vector2i, TileMapCell>::Element *E = modified.front(); E; E = E->next()) {
if (!drag_modified.has(E->key())) {
- drag_modified[E->key()] = tile_map->get_cell(E->key());
+ drag_modified[E->key()] = tile_map->get_cell(tile_map_layer, E->key());
}
- tile_map->set_cell(E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ tile_map->set_cell(tile_map_layer, E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
}
}
} break;
@@ -2731,86 +2849,14 @@ bool TileMapEditorTerrainsPlugin::forward_canvas_gui_input(const Ref<InputEvent>
Map<Vector2i, TileMapCell> to_draw = _draw_terrains(terrains_to_draw, selected_terrain_set);
for (Map<Vector2i, TileMapCell>::Element *E = to_draw.front(); E; E = E->next()) {
- drag_modified[E->key()] = tile_map->get_cell(E->key());
- tile_map->set_cell(E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
+ drag_modified[E->key()] = tile_map->get_cell(tile_map_layer, E->key());
+ tile_map->set_cell(tile_map_layer, E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
}
}
}
} else {
// Released
- switch (drag_type) {
- case DRAG_TYPE_PICK: {
- Vector2i coords = tile_map->world_to_map(mpos);
- TileMapCell tile = tile_map->get_cell(coords);
-
- if (terrain_tiles.has(tile)) {
- Array terrains_tile_pattern = _build_terrains_tile_pattern(terrain_tiles[tile]);
-
- // Find the tree item for the right terrain set.
- bool need_tree_item_switch = true;
- TreeItem *tree_item = terrains_tree->get_selected();
- if (tree_item) {
- Dictionary metadata_dict = tree_item->get_metadata(0);
- if (metadata_dict.has("terrain_set") && metadata_dict.has("terrain_id")) {
- int terrain_set = metadata_dict["terrain_set"];
- int terrain_id = metadata_dict["terrain_id"];
- if (per_terrain_terrains_tile_patterns[terrain_set][terrain_id].has(terrains_tile_pattern)) {
- need_tree_item_switch = false;
- }
- }
- }
-
- if (need_tree_item_switch) {
- for (tree_item = terrains_tree->get_root()->get_first_child(); tree_item; tree_item = tree_item->get_next_visible()) {
- Dictionary metadata_dict = tree_item->get_metadata(0);
- if (metadata_dict.has("terrain_set") && metadata_dict.has("terrain_id")) {
- int terrain_set = metadata_dict["terrain_set"];
- int terrain_id = metadata_dict["terrain_id"];
- if (per_terrain_terrains_tile_patterns[terrain_set][terrain_id].has(terrains_tile_pattern)) {
- // Found
- tree_item->select(0);
- _update_tiles_list();
- break;
- }
- }
- }
- }
-
- // Find the list item for the given tile.
- if (tree_item) {
- for (int i = 0; i < terrains_tile_list->get_item_count(); i++) {
- Dictionary metadata_dict = terrains_tile_list->get_item_metadata(i);
- TerrainsTilePattern in_meta_terrains_tile_pattern = metadata_dict["terrains_tile_pattern"];
- bool equals = true;
- for (int j = 0; j < terrains_tile_pattern.size(); j++) {
- if (terrains_tile_pattern[j] != in_meta_terrains_tile_pattern[j]) {
- equals = false;
- break;
- }
- }
- if (equals) {
- terrains_tile_list->select(i);
- break;
- }
- }
- } else {
- ERR_PRINT("Terrain tile not found.");
- }
- }
- picker_button->set_pressed(false);
- } break;
- case DRAG_TYPE_PAINT: {
- undo_redo->create_action(TTR("Paint terrain"));
- for (Map<Vector2i, TileMapCell>::Element *E = drag_modified.front(); E; E = E->next()) {
- undo_redo->add_do_method(tile_map, "set_cell", E->key(), tile_map->get_cell_source_id(E->key()), tile_map->get_cell_atlas_coords(E->key()), tile_map->get_cell_alternative_tile(E->key()));
- undo_redo->add_undo_method(tile_map, "set_cell", E->key(), E->get().source_id, E->get().get_atlas_coords(), E->get().alternative_tile);
- }
- undo_redo->commit_action(false);
- } break;
- default:
- break;
- }
- drag_type = DRAG_TYPE_NONE;
+ _stop_dragging();
}
CanvasItemEditor::get_singleton()->update_viewport();
@@ -3083,8 +3129,12 @@ void TileMapEditorTerrainsPlugin::_update_tiles_list() {
}
}
-void TileMapEditorTerrainsPlugin::edit(ObjectID p_tile_map_id) {
+void TileMapEditorTerrainsPlugin::edit(ObjectID p_tile_map_id, int p_tile_map_layer) {
+ _stop_dragging(); // Avoids staying in a wrong drag state.
+
tile_map_id = p_tile_map_id;
+ tile_map_layer = p_tile_map_layer;
+
_update_terrains_cache();
_update_terrains_tree();
_update_tiles_list();
@@ -3169,10 +3219,12 @@ void TileMapEditor::_notification(int p_what) {
advanced_menu_button->set_icon(get_theme_icon(SNAME("Tools"), SNAME("EditorIcons")));
toggle_grid_button->set_icon(get_theme_icon(SNAME("Grid"), SNAME("EditorIcons")));
toggle_grid_button->set_pressed(EditorSettings::get_singleton()->get("editors/tiles_editor/display_grid"));
+ toogle_highlight_selected_layer_button->set_icon(get_theme_icon(SNAME("TileMapHighlightSelected"), SNAME("EditorIcons")));
break;
case NOTIFICATION_INTERNAL_PROCESS:
if (is_visible_in_tree() && tileset_changed_needs_update) {
_update_bottom_panel();
+ _update_layers_selection();
tile_map_editor_plugins[tabs->get_current_tab()]->tile_set_changed();
CanvasItemEditor::get_singleton()->update_viewport();
tileset_changed_needs_update = false;
@@ -3181,6 +3233,16 @@ void TileMapEditor::_notification(int p_what) {
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED:
toggle_grid_button->set_pressed(EditorSettings::get_singleton()->get("editors/tiles_editor/display_grid"));
break;
+ case NOTIFICATION_VISIBILITY_CHANGED:
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
+ if (tile_map) {
+ if (is_visible_in_tree()) {
+ tile_map->set_selected_layer(tile_map_layer);
+ } else {
+ tile_map->set_selected_layer(-1);
+ }
+ }
+ break;
}
}
@@ -3188,6 +3250,63 @@ void TileMapEditor::_on_grid_toggled(bool p_pressed) {
EditorSettings::get_singleton()->set("editors/tiles_editor/display_grid", p_pressed);
}
+void TileMapEditor::_layers_selection_button_draw() {
+ if (!has_theme_icon(SNAME("arrow"), SNAME("OptionButton"))) {
+ return;
+ }
+
+ RID ci = layers_selection_button->get_canvas_item();
+ Ref<Texture2D> arrow = Control::get_theme_icon(SNAME("arrow"), SNAME("OptionButton"));
+
+ Color clr = Color(1, 1, 1);
+ if (get_theme_constant(SNAME("modulate_arrow"))) {
+ switch (layers_selection_button->get_draw_mode()) {
+ case BaseButton::DRAW_PRESSED:
+ clr = get_theme_color(SNAME("font_pressed_color"));
+ break;
+ case BaseButton::DRAW_HOVER:
+ clr = get_theme_color(SNAME("font_hover_color"));
+ break;
+ case BaseButton::DRAW_DISABLED:
+ clr = get_theme_color(SNAME("font_disabled_color"));
+ break;
+ default:
+ clr = get_theme_color(SNAME("font_color"));
+ }
+ }
+
+ Size2 size = layers_selection_button->get_size();
+
+ Point2 ofs;
+ if (is_layout_rtl()) {
+ ofs = Point2(get_theme_constant(SNAME("arrow_margin"), SNAME("OptionButton")), int(Math::abs((size.height - arrow->get_height()) / 2)));
+ } else {
+ ofs = Point2(size.width - arrow->get_width() - get_theme_constant(SNAME("arrow_margin"), SNAME("OptionButton")), int(Math::abs((size.height - arrow->get_height()) / 2)));
+ }
+ Rect2 dst_rect = Rect2(ofs, arrow->get_size());
+ if (!layers_selection_button->is_pressed()) {
+ dst_rect.size = -dst_rect.size;
+ }
+ arrow->draw_rect(ci, dst_rect, false, clr);
+}
+
+void TileMapEditor::_layers_selection_button_pressed() {
+ if (!layers_selection_popup->is_visible()) {
+ Size2 size = layers_selection_popup->get_contents_minimum_size();
+ size.x = MAX(size.x, layers_selection_button->get_size().x);
+ layers_selection_popup->set_position(layers_selection_button->get_screen_position() - Size2(0, size.y * get_global_transform().get_scale().y));
+ layers_selection_popup->set_size(size);
+ layers_selection_popup->popup();
+ } else {
+ layers_selection_popup->hide();
+ }
+}
+
+void TileMapEditor::_layers_selection_id_pressed(int p_id) {
+ tile_map_layer = p_id;
+ _update_layers_selection();
+}
+
void TileMapEditor::_advanced_menu_button_id_pressed(int p_id) {
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (!tile_map) {
@@ -3201,18 +3320,20 @@ void TileMapEditor::_advanced_menu_button_id_pressed(int p_id) {
if (p_id == 0) { // Replace Tile Proxies
undo_redo->create_action(TTR("Replace Tiles with Proxies"));
- TypedArray<Vector2i> used_cells = tile_map->get_used_cells();
- for (int i = 0; i < used_cells.size(); i++) {
- Vector2i cell_coords = used_cells[i];
- TileMapCell from = tile_map->get_cell(cell_coords);
- Array to_array = tile_set->map_tile_proxy(from.source_id, from.get_atlas_coords(), from.alternative_tile);
- TileMapCell to;
- to.source_id = to_array[0];
- to.set_atlas_coords(to_array[1]);
- to.alternative_tile = to_array[2];
- if (from != to) {
- undo_redo->add_do_method(tile_map, "set_cell", cell_coords, to.source_id, to.get_atlas_coords(), to.alternative_tile);
- undo_redo->add_undo_method(tile_map, "set_cell", cell_coords, from.source_id, from.get_atlas_coords(), from.alternative_tile);
+ for (int layer_index = 0; layer_index < tile_map->get_layers_count(); layer_index++) {
+ TypedArray<Vector2i> used_cells = tile_map->get_used_cells(layer_index);
+ for (int i = 0; i < used_cells.size(); i++) {
+ Vector2i cell_coords = used_cells[i];
+ TileMapCell from = tile_map->get_cell(layer_index, cell_coords);
+ Array to_array = tile_set->map_tile_proxy(from.source_id, from.get_atlas_coords(), from.alternative_tile);
+ TileMapCell to;
+ to.source_id = to_array[0];
+ to.set_atlas_coords(to_array[1]);
+ to.alternative_tile = to_array[2];
+ if (from != to) {
+ undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, cell_coords, to.source_id, to.get_atlas_coords(), to.alternative_tile);
+ undo_redo->add_undo_method(tile_map, "set_cell", tile_map_layer, cell_coords, from.source_id, from.get_atlas_coords(), from.alternative_tile);
+ }
}
}
undo_redo->commit_action();
@@ -3318,7 +3439,7 @@ void TileMapEditor::_tile_map_changed() {
void TileMapEditor::_tab_changed(int p_tab_id) {
// Make the plugin edit the correct tilemap.
- tile_map_editor_plugins[tabs->get_current_tab()]->edit(tile_map_id);
+ tile_map_editor_plugins[tabs->get_current_tab()]->edit(tile_map_id, tile_map_layer);
// Update toolbar.
for (int i = 0; i < tile_map_editor_plugins.size(); i++) {
@@ -3342,7 +3463,129 @@ void TileMapEditor::_tab_changed(int p_tab_id) {
CanvasItemEditor::get_singleton()->update_viewport();
}
+void TileMapEditor::_layers_select_next_or_previous(bool p_next) {
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
+ if (!tile_map) {
+ return;
+ }
+
+ if (tile_map->get_layers_count() < 1) {
+ return;
+ }
+
+ if (tile_map_layer < 0) {
+ tile_map_layer = 0;
+ }
+
+ int inc = p_next ? 1 : -1;
+ int origin_layer = tile_map_layer;
+ tile_map_layer = Math::posmod((tile_map_layer + inc), tile_map->get_layers_count());
+ while (tile_map_layer != origin_layer) {
+ if (tile_map->is_layer_enabled(tile_map_layer)) {
+ break;
+ }
+ tile_map_layer = Math::posmod((tile_map_layer + inc), tile_map->get_layers_count());
+ }
+
+ _update_layers_selection();
+}
+
+void TileMapEditor::_update_layers_selection() {
+ layers_selection_popup->clear();
+
+ TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
+ if (!tile_map) {
+ return;
+ }
+
+ // Update the selected layer.
+ if (is_visible_in_tree() && tile_map->get_layers_count() >= 1) {
+ tile_map_layer = CLAMP(tile_map_layer, 0, tile_map->get_layers_count() - 1);
+
+ // Search for an enabled layer if the current one is not.
+ int origin_layer = tile_map_layer;
+ while (tile_map_layer >= 0 && !tile_map->is_layer_enabled(tile_map_layer)) {
+ tile_map_layer--;
+ }
+ if (tile_map_layer < 0) {
+ tile_map_layer = origin_layer;
+ while (tile_map_layer < tile_map->get_layers_count() && !tile_map->is_layer_enabled(tile_map_layer)) {
+ tile_map_layer++;
+ }
+ }
+ if (tile_map_layer >= tile_map->get_layers_count()) {
+ tile_map_layer = -1;
+ }
+ } else {
+ tile_map_layer = -1;
+ }
+ tile_map->set_selected_layer(toogle_highlight_selected_layer_button->is_pressed() ? tile_map_layer : -1);
+
+ // Build the list of layers.
+ for (int i = 0; i < tile_map->get_layers_count(); i++) {
+ String name = tile_map->get_layer_name(i);
+ layers_selection_popup->add_item(name.is_empty() ? vformat(TTR("Layer #%d"), i) : name, i);
+ layers_selection_popup->set_item_as_radio_checkable(i, true);
+ layers_selection_popup->set_item_disabled(i, !tile_map->is_layer_enabled(i));
+ layers_selection_popup->set_item_checked(i, i == tile_map_layer);
+ }
+
+ // Update the button label.
+ if (tile_map_layer >= 0) {
+ layers_selection_button->set_text(layers_selection_popup->get_item_text(tile_map_layer));
+ } else {
+ layers_selection_button->set_text(TTR("Select a layer"));
+ }
+
+ // Set button minimum width.
+ Size2 min_button_size = Size2(layers_selection_popup->get_contents_minimum_size().x, 0);
+ if (has_theme_icon(SNAME("arrow"), SNAME("OptionButton"))) {
+ Ref<Texture2D> arrow = Control::get_theme_icon(SNAME("arrow"), SNAME("OptionButton"));
+ min_button_size.x += arrow->get_size().x;
+ }
+ layers_selection_button->set_custom_minimum_size(min_button_size);
+ layers_selection_button->update();
+
+ tile_map_editor_plugins[tabs->get_current_tab()]->edit(tile_map_id, tile_map_layer);
+}
+
+void TileMapEditor::_undo_redo_inspector_callback(Object *p_undo_redo, Object *p_edited, String p_property, Variant p_new_value) {
+ UndoRedo *undo_redo = Object::cast_to<UndoRedo>(p_undo_redo);
+ ERR_FAIL_COND(!undo_redo);
+
+ TileMap *tile_map = Object::cast_to<TileMap>(p_edited);
+ if (tile_map) {
+ if (p_property == "layers_count") {
+ int new_layers_count = (int)p_new_value;
+ if (new_layers_count < tile_map->get_layers_count()) {
+ List<PropertyInfo> property_list;
+ tile_map->get_property_list(&property_list);
+
+ for (PropertyInfo property_info : property_list) {
+ Vector<String> components = String(property_info.name).split("/", true, 2);
+ if (components.size() == 2 && components[0].begins_with("layer_") && components[0].trim_prefix("layer_").is_valid_int()) {
+ int index = components[0].trim_prefix("layer_").to_int();
+ if (index >= new_layers_count) {
+ undo_redo->add_undo_property(tile_map, property_info.name, tile_map->get(property_info.name));
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
bool TileMapEditor::forward_canvas_gui_input(const Ref<InputEvent> &p_event) {
+ if (ED_IS_SHORTCUT("tiles_editor/select_next_layer", p_event) && p_event->is_pressed()) {
+ _layers_select_next_or_previous(true);
+ return true;
+ }
+
+ if (ED_IS_SHORTCUT("tiles_editor/select_previous_layer", p_event) && p_event->is_pressed()) {
+ _layers_select_next_or_previous(false);
+ return true;
+ }
+
return tile_map_editor_plugins[tabs->get_current_tab()]->forward_canvas_gui_input(p_event);
}
@@ -3366,49 +3609,52 @@ void TileMapEditor::forward_canvas_draw_over_viewport(Control *p_overlay) {
Vector2i tile_shape_size = tile_set->get_tile_size();
// Draw tiles with invalid IDs in the grid.
- TypedArray<Vector2i> used_cells = tile_map->get_used_cells();
- for (int i = 0; i < used_cells.size(); i++) {
- Vector2i coords = used_cells[i];
- int tile_source_id = tile_map->get_cell_source_id(coords);
- if (tile_source_id >= 0) {
- Vector2i tile_atlas_coords = tile_map->get_cell_atlas_coords(coords);
- int tile_alternative_tile = tile_map->get_cell_alternative_tile(coords);
-
- TileSetSource *source = nullptr;
- if (tile_set->has_source(tile_source_id)) {
- source = *tile_set->get_source(tile_source_id);
- }
-
- if (!source || !source->has_tile(tile_atlas_coords) || !source->has_alternative_tile(tile_atlas_coords, tile_alternative_tile)) {
- // Generate a random color from the hashed values of the tiles.
- Array a = tile_set->map_tile_proxy(tile_source_id, tile_atlas_coords, tile_alternative_tile);
- if (int(a[0]) == tile_source_id && Vector2i(a[1]) == tile_atlas_coords && int(a[2]) == tile_alternative_tile) {
- // Only display the pattern if we have no proxy tile.
- Array to_hash;
- to_hash.push_back(tile_source_id);
- to_hash.push_back(tile_atlas_coords);
- to_hash.push_back(tile_alternative_tile);
- uint32_t hash = RandomPCG(to_hash.hash()).rand();
-
- Color color;
- color = color.from_hsv(
- (float)((hash >> 24) & 0xFF) / 256.0,
- Math::lerp(0.5, 1.0, (float)((hash >> 16) & 0xFF) / 256.0),
- Math::lerp(0.5, 1.0, (float)((hash >> 8) & 0xFF) / 256.0),
- 0.8);
-
- // Draw the scaled tile.
- Rect2 cell_region = xform.xform(Rect2(tile_map->map_to_world(coords) - Vector2(tile_shape_size) / 2, Vector2(tile_shape_size)));
- tile_set->draw_tile_shape(p_overlay, cell_region, color, true, warning_pattern_texture);
+ if (tile_map_layer >= 0) {
+ ERR_FAIL_COND(tile_map_layer >= tile_map->get_layers_count());
+ TypedArray<Vector2i> used_cells = tile_map->get_used_cells(tile_map_layer);
+ for (int i = 0; i < used_cells.size(); i++) {
+ Vector2i coords = used_cells[i];
+ int tile_source_id = tile_map->get_cell_source_id(tile_map_layer, coords);
+ if (tile_source_id >= 0) {
+ Vector2i tile_atlas_coords = tile_map->get_cell_atlas_coords(tile_map_layer, coords);
+ int tile_alternative_tile = tile_map->get_cell_alternative_tile(tile_map_layer, coords);
+
+ TileSetSource *source = nullptr;
+ if (tile_set->has_source(tile_source_id)) {
+ source = *tile_set->get_source(tile_source_id);
}
- // Draw the warning icon.
- int min_axis = missing_tile_texture->get_size().min_axis();
- Vector2 icon_size;
- icon_size[min_axis] = tile_set->get_tile_size()[min_axis] / 3;
- icon_size[(min_axis + 1) % 2] = (icon_size[min_axis] * missing_tile_texture->get_size()[(min_axis + 1) % 2] / missing_tile_texture->get_size()[min_axis]);
- Rect2 rect = Rect2(xform.xform(tile_map->map_to_world(coords)) - (icon_size * xform.get_scale() / 2), icon_size * xform.get_scale());
- p_overlay->draw_texture_rect(missing_tile_texture, rect);
+ if (!source || !source->has_tile(tile_atlas_coords) || !source->has_alternative_tile(tile_atlas_coords, tile_alternative_tile)) {
+ // Generate a random color from the hashed values of the tiles.
+ Array a = tile_set->map_tile_proxy(tile_source_id, tile_atlas_coords, tile_alternative_tile);
+ if (int(a[0]) == tile_source_id && Vector2i(a[1]) == tile_atlas_coords && int(a[2]) == tile_alternative_tile) {
+ // Only display the pattern if we have no proxy tile.
+ Array to_hash;
+ to_hash.push_back(tile_source_id);
+ to_hash.push_back(tile_atlas_coords);
+ to_hash.push_back(tile_alternative_tile);
+ uint32_t hash = RandomPCG(to_hash.hash()).rand();
+
+ Color color;
+ color = color.from_hsv(
+ (float)((hash >> 24) & 0xFF) / 256.0,
+ Math::lerp(0.5, 1.0, (float)((hash >> 16) & 0xFF) / 256.0),
+ Math::lerp(0.5, 1.0, (float)((hash >> 8) & 0xFF) / 256.0),
+ 0.8);
+
+ // Draw the scaled tile.
+ Rect2 cell_region = xform.xform(Rect2(tile_map->map_to_world(coords) - Vector2(tile_shape_size) / 2, Vector2(tile_shape_size)));
+ tile_set->draw_tile_shape(p_overlay, cell_region, color, true, warning_pattern_texture);
+ }
+
+ // Draw the warning icon.
+ int min_axis = missing_tile_texture->get_size().min_axis();
+ Vector2 icon_size;
+ icon_size[min_axis] = tile_set->get_tile_size()[min_axis] / 3;
+ icon_size[(min_axis + 1) % 2] = (icon_size[min_axis] * missing_tile_texture->get_size()[(min_axis + 1) % 2] / missing_tile_texture->get_size()[min_axis]);
+ Rect2 rect = Rect2(xform.xform(tile_map->map_to_world(coords)) - (icon_size * xform.get_scale() / 2), icon_size * xform.get_scale());
+ p_overlay->draw_texture_rect(missing_tile_texture, rect);
+ }
}
}
}
@@ -3479,14 +3725,19 @@ void TileMapEditor::edit(TileMap *p_tile_map) {
return;
}
- // Disconnect to changes.
TileMap *tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
if (tile_map) {
+ // Unselect layer if we are changing tile_map.
+ if (tile_map != p_tile_map) {
+ tile_map->set_selected_layer(-1);
+ }
+
+ // Disconnect to changes.
tile_map->disconnect("changed", callable_mp(this, &TileMapEditor::_tile_map_changed));
}
- // Change the edited object.
if (p_tile_map) {
+ // Change the edited object.
tile_map_id = p_tile_map->get_instance_id();
tile_map = Object::cast_to<TileMap>(ObjectDB::get_instance(tile_map_id));
// Connect to changes.
@@ -3497,8 +3748,10 @@ void TileMapEditor::edit(TileMap *p_tile_map) {
tile_map_id = ObjectID();
}
+ _update_layers_selection();
+
// Call the plugins.
- tile_map_editor_plugins[tabs->get_current_tab()]->edit(tile_map_id);
+ tile_map_editor_plugins[tabs->get_current_tab()]->edit(tile_map_id, tile_map_layer);
_tile_map_changed();
}
@@ -3506,6 +3759,10 @@ void TileMapEditor::edit(TileMap *p_tile_map) {
TileMapEditor::TileMapEditor() {
set_process_internal(true);
+ // Shortcuts.
+ ED_SHORTCUT("tiles_editor/select_next_layer", TTR("Select Next Tile Map Layer"), KEY_PAGEUP);
+ ED_SHORTCUT("tiles_editor/select_previous_layer", TTR("Select Previous Tile Map Layer"), KEY_PAGEDOWN);
+
// TileMap editor plugins
tile_map_editor_plugins.push_back(memnew(TileMapEditorTilesPlugin));
tile_map_editor_plugins.push_back(memnew(TileMapEditorTerrainsPlugin));
@@ -3519,18 +3776,46 @@ TileMapEditor::TileMapEditor() {
tabs->connect("tab_changed", callable_mp(this, &TileMapEditor::_tab_changed));
// --- TileMap toolbar ---
- tilemap_toolbar = memnew(HBoxContainer);
- tilemap_toolbar->set_h_size_flags(SIZE_EXPAND_FILL);
- tilemap_toolbar->add_child(tabs);
+ tile_map_toolbar = memnew(HBoxContainer);
+ tile_map_toolbar->set_h_size_flags(SIZE_EXPAND_FILL);
+
+ // Tabs.
+ tile_map_toolbar->add_child(tabs);
+
+ // Tabs toolbars.
for (int i = 0; i < tile_map_editor_plugins.size(); i++) {
tile_map_editor_plugins[i]->get_toolbar()->hide();
- tilemap_toolbar->add_child(tile_map_editor_plugins[i]->get_toolbar());
+ tile_map_toolbar->add_child(tile_map_editor_plugins[i]->get_toolbar());
}
// Wide empty separation control.
Control *h_empty_space = memnew(Control);
h_empty_space->set_h_size_flags(SIZE_EXPAND_FILL);
- tilemap_toolbar->add_child(h_empty_space);
+ tile_map_toolbar->add_child(h_empty_space);
+
+ // Layer selector.
+ layers_selection_popup = memnew(PopupMenu);
+ layers_selection_popup->connect("id_pressed", callable_mp(this, &TileMapEditor::_layers_selection_id_pressed));
+ layers_selection_popup->set_close_on_parent_focus(false);
+
+ layers_selection_button = memnew(Button);
+ layers_selection_button->set_toggle_mode(true);
+ layers_selection_button->connect("draw", callable_mp(this, &TileMapEditor::_layers_selection_button_draw));
+ layers_selection_button->connect("pressed", callable_mp(this, &TileMapEditor::_layers_selection_button_pressed));
+ layers_selection_button->connect("hidden", callable_mp((Window *)layers_selection_popup, &Popup::hide));
+ layers_selection_button->set_tooltip(TTR("Tile Map Layer"));
+ layers_selection_button->add_child(layers_selection_popup);
+ tile_map_toolbar->add_child(layers_selection_button);
+
+ toogle_highlight_selected_layer_button = memnew(Button);
+ toogle_highlight_selected_layer_button->set_flat(true);
+ toogle_highlight_selected_layer_button->set_toggle_mode(true);
+ toogle_highlight_selected_layer_button->set_pressed(true);
+ toogle_highlight_selected_layer_button->connect("pressed", callable_mp(this, &TileMapEditor::_update_layers_selection));
+ toogle_highlight_selected_layer_button->set_tooltip(TTR("Highlight Selected TileMap Layer"));
+ tile_map_toolbar->add_child(toogle_highlight_selected_layer_button);
+
+ tile_map_toolbar->add_child(memnew(VSeparator));
// Grid toggle.
toggle_grid_button = memnew(Button);
@@ -3538,14 +3823,14 @@ TileMapEditor::TileMapEditor() {
toggle_grid_button->set_toggle_mode(true);
toggle_grid_button->set_tooltip(TTR("Toggle grid visibility."));
toggle_grid_button->connect("toggled", callable_mp(this, &TileMapEditor::_on_grid_toggled));
- tilemap_toolbar->add_child(toggle_grid_button);
+ tile_map_toolbar->add_child(toggle_grid_button);
// Advanced settings menu button.
advanced_menu_button = memnew(MenuButton);
advanced_menu_button->set_flat(true);
advanced_menu_button->get_popup()->add_item(TTR("Automatically Replace Tiles with Proxies"));
advanced_menu_button->get_popup()->connect("id_pressed", callable_mp(this, &TileMapEditor::_advanced_menu_button_id_pressed));
- tilemap_toolbar->add_child(advanced_menu_button);
+ tile_map_toolbar->add_child(advanced_menu_button);
missing_tileset_label = memnew(Label);
missing_tileset_label->set_text(TTR("The edited TileMap node has no TileSet resource."));
@@ -3564,6 +3849,9 @@ TileMapEditor::TileMapEditor() {
}
_tab_changed(0);
+
+ // Registers UndoRedo inspector callback.
+ EditorNode::get_singleton()->get_editor_data().add_undo_redo_inspector_hook_callback(callable_mp(this, &TileMapEditor::_undo_redo_inspector_callback));
}
TileMapEditor::~TileMapEditor() {
diff --git a/editor/plugins/tiles/tile_map_editor.h b/editor/plugins/tiles/tile_map_editor.h
index 236774a06b..6e2f2ce2ba 100644
--- a/editor/plugins/tiles/tile_map_editor.h
+++ b/editor/plugins/tiles/tile_map_editor.h
@@ -47,7 +47,7 @@ public:
virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) { return false; };
virtual void forward_canvas_draw_over_viewport(Control *p_overlay){};
virtual void tile_set_changed(){};
- virtual void edit(ObjectID p_tile_map_id){};
+ virtual void edit(ObjectID p_tile_map_id, int p_tile_map_layer){};
};
class TileMapEditorTilesPlugin : public TileMapEditorPlugin {
@@ -56,7 +56,8 @@ class TileMapEditorTilesPlugin : public TileMapEditorPlugin {
private:
UndoRedo *undo_redo = EditorNode::get_undo_redo();
ObjectID tile_map_id;
- virtual void edit(ObjectID p_tile_map_id) override;
+ int tile_map_layer = -1;
+ virtual void edit(ObjectID p_tile_map_id, int p_tile_map_layer) override;
///// Toolbar /////
HBoxContainer *toolbar;
@@ -185,7 +186,8 @@ class TileMapEditorTerrainsPlugin : public TileMapEditorPlugin {
private:
UndoRedo *undo_redo = EditorNode::get_undo_redo();
ObjectID tile_map_id;
- virtual void edit(ObjectID p_tile_map_id) override;
+ int tile_map_layer = -1;
+ virtual void edit(ObjectID p_tile_map_id, int p_tile_map_layer) override;
// Toolbar.
HBoxContainer *toolbar;
@@ -258,9 +260,9 @@ private:
Map<Vector2i, TerrainsTilePattern> _wave_function_collapse(const Set<Vector2i> &p_to_replace, int p_terrain_set, const Set<TileMapEditorTerrainsPlugin::Constraint> p_constraints) const;
TileMapCell _get_random_tile_from_pattern(int p_terrain_set, TerrainsTilePattern p_terrain_tile_pattern) const;
Map<Vector2i, TileMapCell> _draw_terrains(const Map<Vector2i, TerrainsTilePattern> &p_to_paint, int p_terrain_set) const;
+ void _stop_dragging();
// Cached data.
-
TerrainsTilePattern _build_terrains_tile_pattern(TileData *p_tile_data);
LocalVector<Map<TerrainsTilePattern, Set<TileMapCell>>> per_terrain_terrains_tile_patterns_tiles;
LocalVector<LocalVector<Set<TerrainsTilePattern>>> per_terrain_terrains_tile_patterns;
@@ -300,12 +302,20 @@ private:
UndoRedo *undo_redo = EditorNode::get_undo_redo();
bool tileset_changed_needs_update = false;
ObjectID tile_map_id;
+ int tile_map_layer = -1;
// Vector to keep plugins.
Vector<TileMapEditorPlugin *> tile_map_editor_plugins;
// Toolbar.
- HBoxContainer *tilemap_toolbar;
+ HBoxContainer *tile_map_toolbar;
+
+ PopupMenu *layers_selection_popup;
+ Button *layers_selection_button;
+ Button *toogle_highlight_selected_layer_button;
+ void _layers_selection_button_draw();
+ void _layers_selection_button_pressed();
+ void _layers_selection_id_pressed(int p_id);
Button *toggle_grid_button;
void _on_grid_toggled(bool p_pressed);
@@ -313,19 +323,26 @@ private:
MenuButton *advanced_menu_button;
void _advanced_menu_button_id_pressed(int p_id);
- // Bottom panel
+ // Bottom panel.
Label *missing_tileset_label;
Tabs *tabs;
void _update_bottom_panel();
- // TileMap
+ // TileMap.
Ref<Texture2D> missing_tile_texture;
Ref<Texture2D> warning_pattern_texture;
- // CallBack
+ // CallBack.
void _tile_map_changed();
void _tab_changed(int p_tab_changed);
+ // Updates.
+ void _layers_select_next_or_previous(bool p_next);
+ void _update_layers_selection();
+
+ // Inspector undo/redo callback.
+ void _undo_redo_inspector_callback(Object *p_undo_redo, Object *p_edited, String p_property, Variant p_new_value);
+
protected:
void _notification(int p_what);
void _draw_shape(Control *p_control, Rect2 p_region, TileSet::TileShape p_shape, TileSet::TileOffsetAxis p_offset_axis, Color p_color);
@@ -335,7 +352,7 @@ public:
void forward_canvas_draw_over_viewport(Control *p_overlay);
void edit(TileMap *p_tile_map);
- Control *get_toolbar() { return tilemap_toolbar; };
+ Control *get_toolbar() { return tile_map_toolbar; };
TileMapEditor();
~TileMapEditor();
diff --git a/editor/plugins/tiles/tile_proxies_manager_dialog.cpp b/editor/plugins/tiles/tile_proxies_manager_dialog.cpp
index e5e7efa531..9e47a44b34 100644
--- a/editor/plugins/tiles/tile_proxies_manager_dialog.cpp
+++ b/editor/plugins/tiles/tile_proxies_manager_dialog.cpp
@@ -47,7 +47,7 @@ void TileProxiesManagerDialog::_menu_id_pressed(int p_id) {
}
void TileProxiesManagerDialog::_delete_selected_bindings() {
- undo_redo->create_action("Remove Tile Proxies");
+ undo_redo->create_action(TTR("Remove Tile Proxies"));
Vector<int> source_level_selected = source_level_list->get_selected_items();
for (int i = 0; i < source_level_selected.size(); i++) {
@@ -151,7 +151,7 @@ void TileProxiesManagerDialog::_add_button_pressed() {
Vector2i to_coords = to.get_atlas_coords();
if (from_coords.x >= 0 && from_coords.y >= 0 && to_coords.x >= 0 && to_coords.y >= 0) {
if (from.alternative_tile != TileSetSource::INVALID_TILE_ALTERNATIVE && to.alternative_tile != TileSetSource::INVALID_TILE_ALTERNATIVE) {
- undo_redo->create_action("Create Alternative-level Tile Proxy");
+ undo_redo->create_action(TTR("Create Alternative-level Tile Proxy"));
undo_redo->add_do_method(*tile_set, "set_alternative_level_tile_proxy", from.source_id, from.get_atlas_coords(), from.alternative_tile, to.source_id, to.get_atlas_coords(), to.alternative_tile);
if (tile_set->has_alternative_level_tile_proxy(from.source_id, from.get_atlas_coords(), from.alternative_tile)) {
Array a = tile_set->get_alternative_level_tile_proxy(from.source_id, from.get_atlas_coords(), from.alternative_tile);
@@ -160,7 +160,7 @@ void TileProxiesManagerDialog::_add_button_pressed() {
undo_redo->add_undo_method(*tile_set, "remove_alternative_level_tile_proxy", from.source_id, from.get_atlas_coords(), from.alternative_tile);
}
} else {
- undo_redo->create_action("Create Coords-level Tile Proxy");
+ undo_redo->create_action(TTR("Create Coords-level Tile Proxy"));
undo_redo->add_do_method(*tile_set, "set_coords_level_tile_proxy", from.source_id, from.get_atlas_coords(), to.source_id, to.get_atlas_coords());
if (tile_set->has_coords_level_tile_proxy(from.source_id, from.get_atlas_coords())) {
Array a = tile_set->get_coords_level_tile_proxy(from.source_id, from.get_atlas_coords());
@@ -170,7 +170,7 @@ void TileProxiesManagerDialog::_add_button_pressed() {
}
}
} else {
- undo_redo->create_action("Create source-level Tile Proxy");
+ undo_redo->create_action(TTR("Create source-level Tile Proxy"));
undo_redo->add_do_method(*tile_set, "set_source_level_tile_proxy", from.source_id, to.source_id);
if (tile_set->has_source_level_tile_proxy(from.source_id)) {
undo_redo->add_undo_method(*tile_set, "set_source_level_tile_proxy", to.source_id, tile_set->get_source_level_tile_proxy(from.source_id));
@@ -186,7 +186,7 @@ void TileProxiesManagerDialog::_add_button_pressed() {
}
void TileProxiesManagerDialog::_clear_invalid_button_pressed() {
- undo_redo->create_action("Delete All Invalid Tile Proxies");
+ undo_redo->create_action(TTR("Delete All Invalid Tile Proxies"));
undo_redo->add_do_method(*tile_set, "cleanup_invalid_tile_proxies");
@@ -213,7 +213,7 @@ void TileProxiesManagerDialog::_clear_invalid_button_pressed() {
}
void TileProxiesManagerDialog::_clear_all_button_pressed() {
- undo_redo->create_action("Delete All Tile Proxies");
+ undo_redo->create_action(TTR("Delete All Tile Proxies"));
undo_redo->add_do_method(*tile_set, "clear_tile_proxies");
diff --git a/editor/plugins/tiles/tile_proxies_manager_dialog.h b/editor/plugins/tiles/tile_proxies_manager_dialog.h
index f6898e960b..6849be2cd6 100644
--- a/editor/plugins/tiles/tile_proxies_manager_dialog.h
+++ b/editor/plugins/tiles/tile_proxies_manager_dialog.h
@@ -34,9 +34,9 @@
#include "editor/editor_node.h"
#include "editor/editor_properties.h"
+#include "scene/2d/tile_map.h"
#include "scene/gui/dialogs.h"
#include "scene/gui/item_list.h"
-#include "scene/resources/tile_set.h"
class TileProxiesManagerDialog : public ConfirmationDialog {
GDCLASS(TileProxiesManagerDialog, ConfirmationDialog);
diff --git a/editor/plugins/tiles/tile_set_atlas_source_editor.cpp b/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
index de910dfd32..432f48fa85 100644
--- a/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
+++ b/editor/plugins/tiles/tile_set_atlas_source_editor.cpp
@@ -303,9 +303,9 @@ void TileSetAtlasSourceEditor::AtlasTileProxyObject::_get_property_list(List<Pro
}
// Add only properties that are common to all tiles.
- for (List<PLData *>::Element *E = data_list.front(); E; E = E->next()) {
- if (E->get()->uses == tiles.size()) {
- p_list->push_back(E->get()->property_info);
+ for (const PLData *E : data_list) {
+ if (E->uses == tiles.size()) {
+ p_list->push_back(E->property_info);
}
}
}
diff --git a/editor/plugins/version_control_editor_plugin.cpp b/editor/plugins/version_control_editor_plugin.cpp
index 5804f54649..a9a36427db 100644
--- a/editor/plugins/version_control_editor_plugin.cpp
+++ b/editor/plugins/version_control_editor_plugin.cpp
@@ -31,6 +31,7 @@
#include "version_control_editor_plugin.h"
#include "core/object/script_language.h"
+#include "core/os/keyboard.h"
#include "editor/editor_file_system.h"
#include "editor/editor_node.h"
#include "editor/editor_scale.h"
@@ -292,6 +293,29 @@ void VersionControlEditorPlugin::_update_commit_button() {
commit_button->set_disabled(commit_message->get_text().strip_edges() == "");
}
+void VersionControlEditorPlugin::_commit_message_gui_input(const Ref<InputEvent> &p_event) {
+ if (!commit_message->has_focus()) {
+ return;
+ }
+ if (commit_message->get_text().strip_edges().is_empty()) {
+ // Do not allow empty commit messages.
+ return;
+ }
+ const Ref<InputEventKey> k = p_event;
+
+ if (k.is_valid() && k->is_pressed()) {
+ if (ED_IS_SHORTCUT("version_control/commit", p_event)) {
+ if (staged_files_count == 0) {
+ // Stage all files only when no files were previously staged.
+ _stage_all();
+ }
+ _send_commit_msg();
+ commit_message->accept_event();
+ return;
+ }
+ }
+}
+
void VersionControlEditorPlugin::register_editor() {
if (!EditorVCSInterface::get_singleton()) {
EditorNode::get_singleton()->add_control_to_dock(EditorNode::DOCK_SLOT_RIGHT_UL, version_commit_dock);
@@ -462,7 +486,9 @@ VersionControlEditorPlugin::VersionControlEditorPlugin() {
commit_message->set_custom_minimum_size(Size2(200, 100));
commit_message->set_wrap_enabled(true);
commit_message->connect("text_changed", callable_mp(this, &VersionControlEditorPlugin::_update_commit_button));
+ commit_message->connect("gui_input", callable_mp(this, &VersionControlEditorPlugin::_commit_message_gui_input));
commit_box_vbc->add_child(commit_message);
+ ED_SHORTCUT("version_control/commit", TTR("Commit"), KEY_MASK_CMD | KEY_ENTER);
commit_button = memnew(Button);
commit_button->set_text(TTR("Commit Changes"));
diff --git a/editor/plugins/version_control_editor_plugin.h b/editor/plugins/version_control_editor_plugin.h
index 7d7c66a7ee..d2ba63c86c 100644
--- a/editor/plugins/version_control_editor_plugin.h
+++ b/editor/plugins/version_control_editor_plugin.h
@@ -111,6 +111,7 @@ private:
void _update_stage_status();
void _update_commit_status();
void _update_commit_button();
+ void _commit_message_gui_input(const Ref<InputEvent> &p_event);
friend class EditorVCSInterface;
diff --git a/editor/plugins/visual_shader_editor_plugin.cpp b/editor/plugins/visual_shader_editor_plugin.cpp
index f49279aa33..452ad126b3 100644
--- a/editor/plugins/visual_shader_editor_plugin.cpp
+++ b/editor/plugins/visual_shader_editor_plugin.cpp
@@ -35,7 +35,6 @@
#include "core/io/resource_loader.h"
#include "core/math/math_defs.h"
#include "core/os/keyboard.h"
-#include "core/version.h"
#include "editor/editor_log.h"
#include "editor/editor_properties.h"
#include "editor/editor_scale.h"
@@ -666,8 +665,8 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
if (valid_left) {
name_left = vsnode->get_input_port_name(i);
port_left = vsnode->get_input_port_type(i);
- for (List<VisualShader::Connection>::Element *E = connections.front(); E; E = E->next()) {
- if (E->get().to_node == p_id && E->get().to_port == j) {
+ for (const VisualShader::Connection &E : connections) {
+ if (E.to_node == p_id && E.to_port == j) {
port_left_used = true;
}
}
@@ -899,11 +898,11 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
expression_box->set_syntax_highlighter(expression_syntax_highlighter);
expression_box->add_theme_color_override("background_color", background_color);
- for (List<String>::Element *E = VisualShaderEditor::get_singleton()->keyword_list.front(); E; E = E->next()) {
- if (ShaderLanguage::is_control_flow_keyword(E->get())) {
- expression_syntax_highlighter->add_keyword_color(E->get(), control_flow_keyword_color);
+ for (const String &E : VisualShaderEditor::get_singleton()->keyword_list) {
+ if (ShaderLanguage::is_control_flow_keyword(E)) {
+ expression_syntax_highlighter->add_keyword_color(E, control_flow_keyword_color);
} else {
- expression_syntax_highlighter->add_keyword_color(E->get(), keyword_color);
+ expression_syntax_highlighter->add_keyword_color(E, keyword_color);
}
}
@@ -921,6 +920,10 @@ void VisualShaderGraphPlugin::add_node(VisualShader::Type p_type, int p_id) {
expression_box->add_comment_delimiter("/*", "*/", false);
expression_box->add_comment_delimiter("//", "", true);
+ if (!expression_box->has_auto_brace_completion_open_key("/*")) {
+ expression_box->add_auto_brace_completion_pair("/*", "*/");
+ }
+
expression_box->set_text(expression);
expression_box->set_context_menu_enabled(false);
expression_box->set_draw_line_numbers(true);
@@ -961,7 +964,7 @@ void VisualShaderGraphPlugin::connect_nodes(VisualShader::Type p_type, int p_fro
void VisualShaderGraphPlugin::disconnect_nodes(VisualShader::Type p_type, int p_from_node, int p_from_port, int p_to_node, int p_to_port) {
if (visual_shader->get_shader_type() == p_type) {
VisualShaderEditor::get_singleton()->graph->disconnect_node(itos(p_from_node), p_from_port, itos(p_to_node), p_to_port);
- for (List<VisualShader::Connection>::Element *E = connections.front(); E; E = E->next()) {
+ for (const List<VisualShader::Connection>::Element *E = connections.front(); E; E = E->next()) {
if (E->get().from_node == p_from_node && E->get().from_port == p_from_port && E->get().to_node == p_to_node && E->get().to_port == p_to_port) {
connections.erase(E);
break;
@@ -995,9 +998,23 @@ void VisualShaderEditor::edit(VisualShader *p_visual_shader) {
visual_shader->connect("changed", callable_mp(this, &VisualShaderEditor::_update_preview));
}
#ifndef DISABLE_DEPRECATED
- String version = VERSION_BRANCH;
- if (visual_shader->get_version() != version) {
- visual_shader->update_version(version);
+ Dictionary engine_version = Engine::get_singleton()->get_version_info();
+ static Array components;
+ if (components.is_empty()) {
+ components.push_back("major");
+ components.push_back("minor");
+ }
+ const Dictionary vs_version = visual_shader->get_engine_version();
+ if (!vs_version.has_all(components)) {
+ visual_shader->update_engine_version(engine_version);
+ } else {
+ for (int i = 0; i < components.size(); i++) {
+ if (vs_version[components[i]] != engine_version[components[i]]) {
+ visual_shader->update_engine_version(engine_version);
+ print_line(vformat(TTR("The shader (\"%s\") has been updated to correspond Godot %s.%s version."), visual_shader->get_path(), engine_version["major"], engine_version["minor"]));
+ break;
+ }
+ }
}
#endif
visual_shader->set_graph_offset(graph->get_scroll_ofs() / EDSCALE);
@@ -1470,11 +1487,11 @@ void VisualShaderEditor::_update_graph() {
graph_plugin->make_dirty(false);
- for (List<VisualShader::Connection>::Element *E = connections.front(); E; E = E->next()) {
- int from = E->get().from_node;
- int from_idx = E->get().from_port;
- int to = E->get().to_node;
- int to_idx = E->get().to_port;
+ for (const VisualShader::Connection &E : connections) {
+ int from = E.from_node;
+ int from_idx = E.from_port;
+ int to = E.to_node;
+ int to_idx = E.to_port;
graph->connect_node(itos(from), from_idx, itos(to), to_idx);
}
@@ -1634,11 +1651,11 @@ void VisualShaderEditor::_expand_output_port(int p_node, int p_port, bool p_expa
List<VisualShader::Connection> conns;
visual_shader->get_node_connections(type, &conns);
- for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) {
- int from_node = E->get().from_node;
- int from_port = E->get().from_port;
- int to_node = E->get().to_node;
- int to_port = E->get().to_port;
+ for (const VisualShader::Connection &E : conns) {
+ int from_node = E.from_node;
+ int from_port = E.from_port;
+ int to_node = E.to_node;
+ int to_port = E.to_port;
if (from_node == p_node) {
if (p_expand) {
@@ -1708,11 +1725,11 @@ void VisualShaderEditor::_remove_input_port(int p_node, int p_port) {
List<VisualShader::Connection> conns;
visual_shader->get_node_connections(type, &conns);
- for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) {
- int from_node = E->get().from_node;
- int from_port = E->get().from_port;
- int to_node = E->get().to_node;
- int to_port = E->get().to_port;
+ for (const VisualShader::Connection &E : conns) {
+ int from_node = E.from_node;
+ int from_port = E.from_port;
+ int to_node = E.to_node;
+ int to_port = E.to_port;
if (to_node == p_node) {
if (to_port == p_port) {
@@ -1757,11 +1774,11 @@ void VisualShaderEditor::_remove_output_port(int p_node, int p_port) {
List<VisualShader::Connection> conns;
visual_shader->get_node_connections(type, &conns);
- for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) {
- int from_node = E->get().from_node;
- int from_port = E->get().from_port;
- int to_node = E->get().to_node;
- int to_port = E->get().to_port;
+ for (const VisualShader::Connection &E : conns) {
+ int from_node = E.from_node;
+ int from_port = E.from_port;
+ int to_node = E.to_node;
+ int to_port = E.to_port;
if (from_node == p_node) {
if (from_port == p_port) {
@@ -2518,11 +2535,11 @@ void VisualShaderEditor::_nodes_dragged() {
undo_redo->create_action(TTR("Node(s) Moved"));
- for (List<DragOp>::Element *E = drag_buffer.front(); E; E = E->next()) {
- undo_redo->add_do_method(visual_shader.ptr(), "set_node_position", E->get().type, E->get().node, E->get().to);
- undo_redo->add_undo_method(visual_shader.ptr(), "set_node_position", E->get().type, E->get().node, E->get().from);
- undo_redo->add_do_method(graph_plugin.ptr(), "set_node_position", E->get().type, E->get().node, E->get().to);
- undo_redo->add_undo_method(graph_plugin.ptr(), "set_node_position", E->get().type, E->get().node, E->get().from);
+ for (const DragOp &E : drag_buffer) {
+ undo_redo->add_do_method(visual_shader.ptr(), "set_node_position", E.type, E.node, E.to);
+ undo_redo->add_undo_method(visual_shader.ptr(), "set_node_position", E.type, E.node, E.from);
+ undo_redo->add_do_method(graph_plugin.ptr(), "set_node_position", E.type, E.node, E.to);
+ undo_redo->add_undo_method(graph_plugin.ptr(), "set_node_position", E.type, E.node, E.from);
}
drag_buffer.clear();
@@ -2544,12 +2561,12 @@ void VisualShaderEditor::_connection_request(const String &p_from, int p_from_in
List<VisualShader::Connection> conns;
visual_shader->get_node_connections(type, &conns);
- for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) {
- if (E->get().to_node == to && E->get().to_port == p_to_index) {
- undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
+ for (const VisualShader::Connection &E : conns) {
+ if (E.to_node == to && E.to_port == p_to_index) {
+ undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
}
}
@@ -2597,22 +2614,22 @@ void VisualShaderEditor::_delete_nodes(int p_type, const List<int> &p_nodes) {
List<VisualShader::Connection> conns;
visual_shader->get_node_connections(type, &conns);
- for (const List<int>::Element *F = p_nodes.front(); F; F = F->next()) {
- for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) {
- if (E->get().from_node == F->get() || E->get().to_node == F->get()) {
- undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
+ for (const int &F : p_nodes) {
+ for (const VisualShader::Connection &E : conns) {
+ if (E.from_node == F || E.to_node == F) {
+ undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
}
}
}
Set<String> uniform_names;
- for (const List<int>::Element *F = p_nodes.front(); F; F = F->next()) {
- Ref<VisualShaderNode> node = visual_shader->get_node(type, F->get());
+ for (const int &F : p_nodes) {
+ Ref<VisualShaderNode> node = visual_shader->get_node(type, F);
- undo_redo->add_do_method(visual_shader.ptr(), "remove_node", type, F->get());
- undo_redo->add_undo_method(visual_shader.ptr(), "add_node", type, node, visual_shader->get_node_position(type, F->get()), F->get());
- undo_redo->add_undo_method(graph_plugin.ptr(), "add_node", type, F->get());
+ undo_redo->add_do_method(visual_shader.ptr(), "remove_node", type, F);
+ undo_redo->add_undo_method(visual_shader.ptr(), "add_node", type, node, visual_shader->get_node_position(type, F), F);
+ undo_redo->add_undo_method(graph_plugin.ptr(), "add_node", type, F);
undo_redo->add_do_method(this, "_clear_buffer");
undo_redo->add_undo_method(this, "_clear_buffer");
@@ -2638,28 +2655,28 @@ void VisualShaderEditor::_delete_nodes(int p_type, const List<int> &p_nodes) {
}
List<VisualShader::Connection> used_conns;
- for (const List<int>::Element *F = p_nodes.front(); F; F = F->next()) {
- for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) {
- if (E->get().from_node == F->get() || E->get().to_node == F->get()) {
+ for (const int &F : p_nodes) {
+ for (const VisualShader::Connection &E : conns) {
+ if (E.from_node == F || E.to_node == F) {
bool cancel = false;
for (List<VisualShader::Connection>::Element *R = used_conns.front(); R; R = R->next()) {
- if (R->get().from_node == E->get().from_node && R->get().from_port == E->get().from_port && R->get().to_node == E->get().to_node && R->get().to_port == E->get().to_port) {
+ if (R->get().from_node == E.from_node && R->get().from_port == E.from_port && R->get().to_node == E.to_node && R->get().to_port == E.to_port) {
cancel = true; // to avoid ERR_ALREADY_EXISTS warning
break;
}
}
if (!cancel) {
- undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- used_conns.push_back(E->get());
+ undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ used_conns.push_back(E);
}
}
}
}
// delete nodes from the graph
- for (const List<int>::Element *F = p_nodes.front(); F; F = F->next()) {
- undo_redo->add_do_method(graph_plugin.ptr(), "remove_node", type, F->get());
+ for (const int &F : p_nodes) {
+ undo_redo->add_do_method(graph_plugin.ptr(), "remove_node", type, F);
}
// update uniform refs if any uniform has been deleted
@@ -3094,11 +3111,11 @@ void VisualShaderEditor::_notification(int p_what) {
preview_text->add_theme_color_override("background_color", background_color);
- for (List<String>::Element *E = keyword_list.front(); E; E = E->next()) {
- if (ShaderLanguage::is_control_flow_keyword(E->get())) {
- syntax_highlighter->add_keyword_color(E->get(), control_flow_keyword_color);
+ for (const String &E : keyword_list) {
+ if (ShaderLanguage::is_control_flow_keyword(E)) {
+ syntax_highlighter->add_keyword_color(E, control_flow_keyword_color);
} else {
- syntax_highlighter->add_keyword_color(E->get(), keyword_color);
+ syntax_highlighter->add_keyword_color(E, keyword_color);
}
}
@@ -3206,9 +3223,9 @@ void VisualShaderEditor::_dup_paste_nodes(int p_type, int p_pasted_type, List<in
Map<int, int> connection_remap;
Set<int> unsupported_set;
- for (List<int>::Element *E = r_nodes.front(); E; E = E->next()) {
- connection_remap[E->get()] = id_from;
- Ref<VisualShaderNode> node = visual_shader->get_node(pasted_type, E->get());
+ for (int &E : r_nodes) {
+ connection_remap[E] = id_from;
+ Ref<VisualShaderNode> node = visual_shader->get_node(pasted_type, E);
bool unsupported = false;
for (int i = 0; i < add_options.size(); i++) {
@@ -3220,13 +3237,13 @@ void VisualShaderEditor::_dup_paste_nodes(int p_type, int p_pasted_type, List<in
}
}
if (unsupported) {
- unsupported_set.insert(E->get());
+ unsupported_set.insert(E);
continue;
}
Ref<VisualShaderNode> dupli = node->duplicate();
- undo_redo->add_do_method(visual_shader.ptr(), "add_node", type, dupli, visual_shader->get_node_position(pasted_type, E->get()) + p_offset, id_from);
+ undo_redo->add_do_method(visual_shader.ptr(), "add_node", type, dupli, visual_shader->get_node_position(pasted_type, E) + p_offset, id_from);
undo_redo->add_do_method(graph_plugin.ptr(), "add_node", type, id_from);
// duplicate size, inputs and outputs if node is group
@@ -3249,19 +3266,19 @@ void VisualShaderEditor::_dup_paste_nodes(int p_type, int p_pasted_type, List<in
List<VisualShader::Connection> conns;
visual_shader->get_node_connections(pasted_type, &conns);
- for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) {
- if (unsupported_set.has(E->get().from_node) || unsupported_set.has(E->get().to_node)) {
+ for (const VisualShader::Connection &E : conns) {
+ if (unsupported_set.has(E.from_node) || unsupported_set.has(E.to_node)) {
continue;
}
- if (connection_remap.has(E->get().from_node) && connection_remap.has(E->get().to_node)) {
- undo_redo->add_do_method(visual_shader.ptr(), "connect_nodes", type, connection_remap[E->get().from_node], E->get().from_port, connection_remap[E->get().to_node], E->get().to_port);
- undo_redo->add_do_method(graph_plugin.ptr(), "connect_nodes", type, connection_remap[E->get().from_node], E->get().from_port, connection_remap[E->get().to_node], E->get().to_port);
- undo_redo->add_undo_method(graph_plugin.ptr(), "disconnect_nodes", type, connection_remap[E->get().from_node], E->get().from_port, connection_remap[E->get().to_node], E->get().to_port);
+ if (connection_remap.has(E.from_node) && connection_remap.has(E.to_node)) {
+ undo_redo->add_do_method(visual_shader.ptr(), "connect_nodes", type, connection_remap[E.from_node], E.from_port, connection_remap[E.to_node], E.to_port);
+ undo_redo->add_do_method(graph_plugin.ptr(), "connect_nodes", type, connection_remap[E.from_node], E.from_port, connection_remap[E.to_node], E.to_port);
+ undo_redo->add_undo_method(graph_plugin.ptr(), "disconnect_nodes", type, connection_remap[E.from_node], E.from_port, connection_remap[E.to_node], E.to_port);
}
}
id_from = base_id;
- for (List<int>::Element *E = r_nodes.front(); E; E = E->next()) {
+ for (int i = 0; i < r_nodes.size(); i++) {
undo_redo->add_undo_method(visual_shader.ptr(), "remove_node", type, id_from);
undo_redo->add_undo_method(graph_plugin.ptr(), "remove_node", type, id_from);
id_from++;
@@ -3399,17 +3416,17 @@ void VisualShaderEditor::_input_select_item(Ref<VisualShaderNodeInput> p_input,
if (type_changed) {
List<VisualShader::Connection> conns;
visual_shader->get_node_connections(type, &conns);
- for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) {
- if (E->get().from_node == id) {
- if (visual_shader->is_port_types_compatible(p_input->get_input_type_by_name(p_name), visual_shader->get_node(type, E->get().to_node)->get_input_port_type(E->get().to_port))) {
- undo_redo->add_do_method(visual_shader.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
+ for (const VisualShader::Connection &E : conns) {
+ if (E.from_node == id) {
+ if (visual_shader->is_port_types_compatible(p_input->get_input_type_by_name(p_name), visual_shader->get_node(type, E.to_node)->get_input_port_type(E.to_port))) {
+ undo_redo->add_do_method(visual_shader.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
continue;
}
- undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
+ undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
}
}
}
@@ -3445,15 +3462,15 @@ void VisualShaderEditor::_uniform_select_item(Ref<VisualShaderNodeUniformRef> p_
if (type_changed) {
List<VisualShader::Connection> conns;
visual_shader->get_node_connections(type, &conns);
- for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) {
- if (E->get().from_node == id) {
- if (visual_shader->is_port_types_compatible(p_uniform_ref->get_uniform_type_by_name(p_name), visual_shader->get_node(type, E->get().to_node)->get_input_port_type(E->get().to_port))) {
+ for (const VisualShader::Connection &E : conns) {
+ if (E.from_node == id) {
+ if (visual_shader->is_port_types_compatible(p_uniform_ref->get_uniform_type_by_name(p_name), visual_shader->get_node(type, E.to_node)->get_input_port_type(E.to_port))) {
continue;
}
- undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
- undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
+ undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ undo_redo->add_do_method(graph_plugin.ptr(), "disconnect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
+ undo_redo->add_undo_method(graph_plugin.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
}
}
}
@@ -4143,6 +4160,8 @@ VisualShaderEditor::VisualShaderEditor() {
add_options.push_back(AddOption("OutputIsSRGB", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "output_is_srgb"), "output_is_srgb", VisualShaderNode::PORT_TYPE_BOOLEAN, -1, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Projection", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "projection"), "projection", VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Time", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "time"), "time", VisualShaderNode::PORT_TYPE_SCALAR, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("UV", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "uv"), "uv", VisualShaderNode::PORT_TYPE_VECTOR, -1, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("UV2", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "uv2"), "uv2", VisualShaderNode::PORT_TYPE_VECTOR, -1, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("ViewportSize", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "viewport_size"), "viewport_size", VisualShaderNode::PORT_TYPE_VECTOR, -1, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("World", "Input", "All", "VisualShaderNodeInput", vformat(input_param_shader_modes, "world"), "world", VisualShaderNode::PORT_TYPE_TRANSFORM, -1, Shader::MODE_SPATIAL));
@@ -4175,8 +4194,6 @@ VisualShaderEditor::VisualShaderEditor() {
add_options.push_back(AddOption("Input", "Input", "Common", "VisualShaderNodeInput", TTR("Input parameter.")));
- // SPATIAL INPUTS
-
const String input_param_for_vertex_and_fragment_shader_modes = TTR("'%s' input parameter for vertex and fragment shader modes.");
const String input_param_for_fragment_and_light_shader_modes = TTR("'%s' input parameter for fragment and light shader modes.");
const String input_param_for_fragment_shader_mode = TTR("'%s' input parameter for fragment shader mode.");
@@ -4190,6 +4207,19 @@ VisualShaderEditor::VisualShaderEditor() {
const String input_param_for_process_and_collide_shader_mode = TTR("'%s' input parameter for process and collide shader modes.");
const String input_param_for_vertex_and_fragment_shader_mode = TTR("'%s' input parameter for vertex and fragment shader modes.");
+ // NODE3D INPUTS
+
+ add_options.push_back(AddOption("Alpha", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "alpha"), "alpha", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Binormal", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "binormal"), "binormal", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Color", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "color"), "color", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("InstanceId", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_id"), "instance_id", VisualShaderNode::PORT_TYPE_SCALAR_INT, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("InstanceCustom", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom"), "instance_custom", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("InstanceCustomAlpha", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom_alpha"), "instance_custom_alpha", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("ModelView", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "modelview"), "modelview", VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("PointSize", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "point_size"), "point_size", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Tangent", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_mode, "tangent"), "tangent", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Vertex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "vertex"), "vertex", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
+
add_options.push_back(AddOption("Alpha", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "alpha"), "alpha", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Binormal", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "binormal"), "binormal", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Color", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "color"), "color", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
@@ -4199,15 +4229,13 @@ VisualShaderEditor::VisualShaderEditor() {
add_options.push_back(AddOption("PointCoord", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "point_coord"), "point_coord", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("ScreenTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "screen_texture"), "screen_texture", VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("ScreenUV", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "screen_uv"), "screen_uv", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Side", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "side"), "side", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Tangent", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "tangent"), "tangent", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("UV", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "uv"), "uv", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("UV2", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "uv2"), "uv2", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Vertex", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "vertex"), "vertex", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("View", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "view"), "view", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_FRAGMENT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Albedo", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "albedo"), "albedo", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Attenuation", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "attenuation"), "attenuation", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
+ add_options.push_back(AddOption("Backlight", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "backlight"), "backlight", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Diffuse", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "diffuse"), "diffuse", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("FragCoord", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "fragcoord"), "fragcoord", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Light", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light"), "light", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
@@ -4215,21 +4243,19 @@ VisualShaderEditor::VisualShaderEditor() {
add_options.push_back(AddOption("Metallic", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "metallic"), "metallic", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Roughness", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "roughness"), "roughness", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("Specular", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "specular"), "specular", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Backlight", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "backlight"), "backlight", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
add_options.push_back(AddOption("View", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "view"), "view", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Alpha", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "alpha"), "alpha", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Binormal", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "binormal"), "binormal", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Color", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "color"), "color", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("ModelView", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "modelview"), "modelview", VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("PointSize", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "point_size"), "point_size", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Tangent", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_mode, "tangent"), "tangent", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("UV", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "uv"), "uv", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("UV2", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "uv2"), "uv2", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
- add_options.push_back(AddOption("Vertex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "vertex"), "vertex", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_SPATIAL));
-
// CANVASITEM INPUTS
+ add_options.push_back(AddOption("AtLightPass", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "at_light_pass"), "at_light_pass", VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Canvas", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "canvas"), "canvas", VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("InstanceCustom", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom"), "instance_custom", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("InstanceCustomAlpha", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "instance_custom_alpha"), "instance_custom_alpha", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("PointSize", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "point_size"), "point_size", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Screen", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "screen"), "screen", VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Vertex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_mode, "vertex"), "vertex", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("World", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "world"), "world", VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
+
add_options.push_back(AddOption("AtLightPass", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "at_light_pass"), "at_light_pass", VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("FragCoord", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "fragcoord"), "fragcoord", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("NormalTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "normal_texture"), "normal_texture", VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
@@ -4241,6 +4267,7 @@ VisualShaderEditor::VisualShaderEditor() {
add_options.push_back(AddOption("SpecularShininessAlpha", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "specular_shininess_alpha"), "specular_shininess_alpha", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("SpecularShininessTexture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_shader_mode, "specular_shininess_texture"), "specular_shininess_texture", VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("Texture", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "texture"), "texture", VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Vertex", "Input", "Fragment", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_mode, "vertex"), "vertex", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_FRAGMENT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("FragCoord", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "fragcoord"), "fragcoord", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("Light", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light"), "light", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
@@ -4248,23 +4275,16 @@ VisualShaderEditor::VisualShaderEditor() {
add_options.push_back(AddOption("LightColor", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_color"), "light_color", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("LightColorAlpha", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_color_alpha"), "light_color_alpha", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("LightPosition", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_position"), "light_position", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("LightVertex", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "light_vertex"), "light_vertex", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("LightVertex", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "light_vertex"), "light_vertex", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("Normal", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "normal"), "normal", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("PointCoord", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "point_coord"), "point_coord", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("ScreenUV", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "screen_uv"), "screen_uv", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
+ add_options.push_back(AddOption("Shadow", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "shadow"), "shadow", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("ShadowAlpha", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "shadow_alpha"), "shadow_alpha", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("ShadowColor", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_light_shader_mode, "shadow_color"), "shadow_color", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("SpecularShininess", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "specular_shininess"), "specular_shininess", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("SpecularShininessAlpha", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "specular_shininess_alpha"), "specular_shininess_alpha", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
add_options.push_back(AddOption("Texture", "Input", "Light", "VisualShaderNodeInput", vformat(input_param_for_fragment_and_light_shader_modes, "texture"), "texture", VisualShaderNode::PORT_TYPE_SAMPLER, TYPE_FLAGS_LIGHT, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("AtLightPass", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_and_fragment_shader_modes, "at_light_pass"), "at_light_pass", VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Canvas", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "canvas"), "canvas", VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("PointSize", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "point_size"), "point_size", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Screen", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "screen"), "screen", VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("Vertex", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "vertex"), "vertex", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
- add_options.push_back(AddOption("World", "Input", "Vertex", "VisualShaderNodeInput", vformat(input_param_for_vertex_shader_mode, "world"), "world", VisualShaderNode::PORT_TYPE_TRANSFORM, TYPE_FLAGS_VERTEX, Shader::MODE_CANVAS_ITEM));
-
// SKY INPUTS
add_options.push_back(AddOption("AtCubeMapPass", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "at_cubemap_pass"), "at_cubemap_pass", VisualShaderNode::PORT_TYPE_BOOLEAN, TYPE_FLAGS_SKY, Shader::MODE_SKY));
@@ -4297,12 +4317,14 @@ VisualShaderEditor::VisualShaderEditor() {
add_options.push_back(AddOption("SkyCoords", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "sky_coords"), "sky_coords", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
add_options.push_back(AddOption("Time", "Input", "Sky", "VisualShaderNodeInput", vformat(input_param_for_sky_shader_mode, "time"), "time", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_SKY, Shader::MODE_SKY));
- // PARTICLES
+ // PARTICLES INPUTS
add_options.push_back(AddOption("CollisionDepth", "Input", "Collide", "VisualShaderNodeInput", vformat(input_param_for_collide_shader_mode, "collision_depth"), "collision_depth", VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_COLLIDE, Shader::MODE_PARTICLES));
add_options.push_back(AddOption("CollisionNormal", "Input", "Collide", "VisualShaderNodeInput", vformat(input_param_for_collide_shader_mode, "collision_normal"), "collision_normal", VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_COLLIDE, Shader::MODE_PARTICLES));
- add_options.push_back(AddOption("EmitParticle", "Particles", "", "VisualShaderNodeParticleEmit", "", -1, -1, -1, Shader::MODE_PARTICLES));
+ // PARTICLES
+
+ add_options.push_back(AddOption("EmitParticle", "Particles", "", "VisualShaderNodeParticleEmit", "", -1, -1, TYPE_FLAGS_PROCESS | TYPE_FLAGS_PROCESS_CUSTOM | TYPE_FLAGS_COLLIDE, Shader::MODE_PARTICLES));
add_options.push_back(AddOption("ParticleAccelerator", "Particles", "", "VisualShaderNodeParticleAccelerator", "", -1, VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_PROCESS, Shader::MODE_PARTICLES));
add_options.push_back(AddOption("ParticleRandomness", "Particles", "", "VisualShaderNodeParticleRandomness", "", -1, VisualShaderNode::PORT_TYPE_SCALAR, TYPE_FLAGS_EMIT | TYPE_FLAGS_PROCESS | TYPE_FLAGS_COLLIDE, Shader::MODE_PARTICLES));
add_options.push_back(AddOption("MultiplyByAxisAngle", "Particles", "Transform", "VisualShaderNodeParticleMultiplyByAxisAngle", "A node for help to multiply a position input vector by rotation using specific axis. Intended to work with emitters.", -1, VisualShaderNode::PORT_TYPE_VECTOR, TYPE_FLAGS_EMIT | TYPE_FLAGS_PROCESS | TYPE_FLAGS_COLLIDE, Shader::MODE_PARTICLES));
@@ -4320,7 +4342,7 @@ VisualShaderEditor::VisualShaderEditor() {
add_options.push_back(AddOption("FloatOp", "Scalar", "Common", "VisualShaderNodeFloatOp", TTR("Float operator."), -1, VisualShaderNode::PORT_TYPE_SCALAR));
add_options.push_back(AddOption("IntOp", "Scalar", "Common", "VisualShaderNodeIntOp", TTR("Integer operator."), -1, VisualShaderNode::PORT_TYPE_SCALAR_INT));
- //CONSTANTS
+ // CONSTANTS
for (int i = 0; i < MAX_FLOAT_CONST_DEFS; i++) {
add_options.push_back(AddOption(float_constant_defs[i].name, "Scalar", "Constants", "VisualShaderNodeFloatConstant", float_constant_defs[i].desc, -1, VisualShaderNode::PORT_TYPE_SCALAR, -1, -1, float_constant_defs[i].value));
@@ -4697,7 +4719,7 @@ public:
UndoRedo *undo_redo = EditorNode::get_singleton()->get_undo_redo();
updating = true;
- undo_redo->create_action(TTR("Edit Visual Property") + ": " + p_property, UndoRedo::MERGE_ENDS);
+ undo_redo->create_action(TTR("Edit Visual Property:") + " " + p_property, UndoRedo::MERGE_ENDS);
undo_redo->add_do_property(node.ptr(), p_property, p_value);
undo_redo->add_undo_property(node.ptr(), p_property, node->get(p_property));
@@ -4825,10 +4847,10 @@ Control *VisualShaderNodePluginDefault::create_editor(const Ref<Resource> &p_par
Vector<PropertyInfo> pinfo;
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
+ for (const PropertyInfo &E : props) {
for (int i = 0; i < properties.size(); i++) {
- if (E->get().name == String(properties[i])) {
- pinfo.push_back(E->get());
+ if (E.name == String(properties[i])) {
+ pinfo.push_back(E);
}
}
}
@@ -4894,9 +4916,9 @@ void EditorPropertyShaderMode::_option_selected(int p_which) {
VisualShader::Type type = VisualShader::Type(i);
List<VisualShader::Connection> conns;
visual_shader->get_node_connections(type, &conns);
- for (List<VisualShader::Connection>::Element *E = conns.front(); E; E = E->next()) {
- if (E->get().to_node == VisualShader::NODE_ID_OUTPUT) {
- undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
+ for (const VisualShader::Connection &E : conns) {
+ if (E.to_node == VisualShader::NODE_ID_OUTPUT) {
+ undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, E.from_node, E.from_port, E.to_node, E.to_port);
}
}
}
@@ -4918,9 +4940,9 @@ void EditorPropertyShaderMode::_option_selected(int p_which) {
List<PropertyInfo> props;
visual_shader->get_property_list(&props);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (E->get().name.begins_with("flags/") || E->get().name.begins_with("modes/")) {
- undo_redo->add_undo_property(visual_shader.ptr(), E->get().name, visual_shader->get(E->get().name));
+ for (const PropertyInfo &E : props) {
+ if (E.name.begins_with("flags/") || E.name.begins_with("modes/")) {
+ undo_redo->add_undo_property(visual_shader.ptr(), E.name, visual_shader->get(E.name));
}
}
@@ -5024,8 +5046,8 @@ void VisualShaderNodePortPreview::_shader_changed() {
if (src_mat && src_mat->get_shader().is_valid()) {
List<PropertyInfo> params;
src_mat->get_shader()->get_param_list(&params);
- for (List<PropertyInfo>::Element *E = params.front(); E; E = E->next()) {
- material->set(E->get().name, src_mat->get(E->get().name));
+ for (const PropertyInfo &E : params) {
+ material->set(E.name, src_mat->get(E.name));
}
}
}
diff --git a/editor/project_export.cpp b/editor/project_export.cpp
index 1e818b9d43..14158b02c8 100644
--- a/editor/project_export.cpp
+++ b/editor/project_export.cpp
@@ -340,8 +340,8 @@ void ProjectExportDialog::_update_feature_list() {
}
}
- for (List<String>::Element *E = features.front(); E; E = E->next()) {
- fset.insert(E->get());
+ for (const String &E : features) {
+ fset.insert(E);
}
custom_feature_display->clear();
@@ -567,8 +567,8 @@ void ProjectExportDialog::_duplicate_preset() {
preset->set_exclude_filter(current->get_exclude_filter());
preset->set_custom_features(current->get_custom_features());
- for (const List<PropertyInfo>::Element *E = current->get_properties().front(); E; E = E->next()) {
- preset->set(E->get().name, current->get(E->get().name));
+ for (const PropertyInfo &E : current->get_properties()) {
+ preset->set(E.name, current->get(E.name));
}
EditorExport::get_singleton()->add_export_preset(preset);
@@ -1171,7 +1171,7 @@ ProjectExportDialog::ProjectExportDialog() {
script_key = memnew(LineEdit);
script_key->connect("text_changed", callable_mp(this, &ProjectExportDialog::_script_encryption_key_changed));
script_key_error = memnew(Label);
- script_key_error->set_text("- " + TTR("Invalid Encryption Key (must be 64 hexadecimal characters long)"));
+ script_key_error->set_text(String::utf8("• ") + TTR("Invalid Encryption Key (must be 64 hexadecimal characters long)"));
script_key_error->add_theme_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_theme_color(SNAME("error_color"), SNAME("Editor")));
sec_vb->add_margin_child(TTR("Encryption Key (256-bits as hexadecimal):"), script_key);
sec_vb->add_child(script_key_error);
@@ -1250,7 +1250,7 @@ ProjectExportDialog::ProjectExportDialog() {
Label *export_error2 = memnew(Label);
export_templates_error->add_child(export_error2);
export_error2->add_theme_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_theme_color(SNAME("error_color"), SNAME("Editor")));
- export_error2->set_text(" - " + TTR("Export templates for this platform are missing:") + " ");
+ export_error2->set_text(String::utf8("• ") + TTR("Export templates for this platform are missing:") + " ");
error_dialog = memnew(AcceptDialog);
error_dialog->set_title(TTR("Error"));
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index 447fe6424f..8d425a1e51 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -474,13 +474,7 @@ private:
return;
}
ProjectSettings::CustomMap initial_settings;
- if (rasterizer_button_group->get_pressed_button()->get_meta("driver_name") == "Vulkan") {
- initial_settings["rendering/driver/driver_name"] = "Vulkan";
- } else {
- initial_settings["rendering/driver/driver_name"] = "GLES2";
- initial_settings["rendering/textures/vram_compression/import_etc2"] = false;
- initial_settings["rendering/textures/vram_compression/import_etc"] = true;
- }
+ initial_settings["rendering/vulkan/rendering/back_end"] = rasterizer_button_group->get_pressed_button()->get_meta(SNAME("driver_name"));
initial_settings["application/config/name"] = project_name->get_text().strip_edges();
initial_settings["application/config/icon"] = "res://icon.png";
initial_settings["rendering/environment/defaults/default_environment"] = "res://default_env.tres";
@@ -869,37 +863,36 @@ public:
rshb->add_child(rvb);
Button *rs_button = memnew(CheckBox);
rs_button->set_button_group(rasterizer_button_group);
- rs_button->set_text(TTR("Vulkan"));
- rs_button->set_meta("driver_name", "Vulkan");
+ rs_button->set_text(TTR("Vulkan Clustered"));
+ rs_button->set_meta(SNAME("driver_name"), 0); // Vulkan backend "Forward Clustered"
rs_button->set_pressed(true);
rvb->add_child(rs_button);
l = memnew(Label);
- l->set_text(TTR("- Higher visual quality\n- More accurate API, which produces very fast code\n- Some features not implemented yet - work in progress\n- Incompatible with older hardware\n- Not recommended for web and mobile games"));
+ l->set_text(
+ String::utf8("• ") + TTR("Supports desktop platforms only.") +
+ String::utf8("\n• ") + TTR("Advanced 3D graphics available.") +
+ String::utf8("\n• ") + TTR("Can scale to large complex scenes.") +
+ String::utf8("\n• ") + TTR("Slower rendering of simple scenes."));
l->set_modulate(Color(1, 1, 1, 0.7));
rvb->add_child(l);
rshb->add_child(memnew(VSeparator));
- const String gles2_unsupported_tooltip =
- TTR("The GLES2 renderer is currently unavailable, as it needs to be reworked for Godot 4.0.\nUse Godot 3.2 if you need GLES2 support.");
-
rvb = memnew(VBoxContainer);
rvb->set_h_size_flags(Control::SIZE_EXPAND_FILL);
rshb->add_child(rvb);
rs_button = memnew(CheckBox);
rs_button->set_button_group(rasterizer_button_group);
- rs_button->set_text(TTR("OpenGL ES 2.0 (currently unavailable)"));
- rs_button->set_meta("driver_name", "GLES2");
- rs_button->set_disabled(true);
- rs_button->set_tooltip(gles2_unsupported_tooltip);
+ rs_button->set_text(TTR("Vulkan Mobile"));
+ rs_button->set_meta(SNAME("driver_name"), 1); // Vulkan backend "Forward Mobile"
rvb->add_child(rs_button);
l = memnew(Label);
- l->set_text(TTR("- Lower visual quality\n- Some features not available\n- Works on most hardware\n- Recommended for web and mobile games"));
+ l->set_text(
+ String::utf8("• ") + TTR("Supports desktop + mobile platforms.") +
+ String::utf8("\n• ") + TTR("Less advanced 3D graphics.") +
+ String::utf8("\n• ") + TTR("Less scalable for complex scenes.") +
+ String::utf8("\n• ") + TTR("Faster rendering of simple scenes."));
l->set_modulate(Color(1, 1, 1, 0.7));
- // Also set the tooltip on the label so it appears when hovering either the checkbox or label.
- l->set_tooltip(gles2_unsupported_tooltip);
- // Required for the tooltip to show.
- l->set_mouse_filter(Control::MOUSE_FILTER_STOP);
rvb->add_child(l);
l = memnew(Label);
@@ -1238,16 +1231,16 @@ void ProjectList::load_projects() {
Set<String> favorites;
// Find favourites...
- for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
- String property_key = E->get().name;
+ for (const PropertyInfo &E : properties) {
+ String property_key = E.name;
if (property_key.begins_with("favorite_projects/")) {
favorites.insert(property_key);
}
}
- for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
+ for (const PropertyInfo &E : properties) {
// This is actually something like "projects/C:::Documents::Godot::Projects::MyGame"
- String property_key = E->get().name;
+ String property_key = E.name;
if (!property_key.begins_with("projects/")) {
continue;
}
@@ -1582,8 +1575,8 @@ int ProjectList::refresh_project(const String &dir_path) {
String favorite_property_key = "favorite_projects/" + project_key;
bool found = false;
- for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
- String prop = E->get().name;
+ for (const PropertyInfo &E : properties) {
+ String prop = E.name;
if (!found && prop == property_key) {
found = true;
} else if (!is_favourite && prop == favorite_property_key) {
@@ -2188,9 +2181,9 @@ void ProjectManager::_scan_begin(const String &p_base) {
_scan_dir(p_base, &projects);
print_line("Found " + itos(projects.size()) + " projects.");
- for (List<String>::Element *E = projects.front(); E; E = E->next()) {
- String proj = get_project_key_from_path(E->get());
- EditorSettings::get_singleton()->set("projects/" + proj, E->get());
+ for (const String &E : projects) {
+ String proj = get_project_key_from_path(E);
+ EditorSettings::get_singleton()->set("projects/" + proj, E);
}
EditorSettings::get_singleton()->save();
_load_recent_projects();
@@ -2625,8 +2618,7 @@ ProjectManager::ProjectManager() {
Vector<String> editor_languages;
List<PropertyInfo> editor_settings_properties;
EditorSettings::get_singleton()->get_property_list(&editor_settings_properties);
- for (List<PropertyInfo>::Element *E = editor_settings_properties.front(); E; E = E->next()) {
- PropertyInfo &pi = E->get();
+ for (const PropertyInfo &pi : editor_settings_properties) {
if (pi.name == "interface/editor/editor_language") {
editor_languages = pi.hint_string.split(",");
break;
diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp
index 2c4b28e13d..b8ccab78dd 100644
--- a/editor/project_settings_editor.cpp
+++ b/editor/project_settings_editor.cpp
@@ -229,16 +229,16 @@ void ProjectSettingsEditor::_add_feature_overrides() {
for (int i = 0; i < ee->get_export_platform_count(); i++) {
List<String> p;
ee->get_export_platform(i)->get_platform_features(&p);
- for (List<String>::Element *E = p.front(); E; E = E->next()) {
- presets.insert(E->get());
+ for (const String &E : p) {
+ presets.insert(E);
}
}
for (int i = 0; i < ee->get_export_preset_count(); i++) {
List<String> p;
ee->get_export_preset(i)->get_platform()->get_preset_features(ee->get_export_preset(i), &p);
- for (List<String>::Element *E = p.front(); E; E = E->next()) {
- presets.insert(E->get());
+ for (const String &E : p) {
+ presets.insert(E);
}
String custom = ee->get_export_preset(i)->get_custom_features();
@@ -391,8 +391,7 @@ void ProjectSettingsEditor::_action_reordered(const String &p_action_name, const
undo_redo->create_action(TTR("Update Input Action Order"));
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- PropertyInfo prop = E->get();
+ for (const PropertyInfo &prop : props) {
// Skip builtins and non-inputs
if (ProjectSettings::get_singleton()->is_builtin_setting(prop.name) || !prop.name.begins_with("input/")) {
continue;
@@ -445,8 +444,8 @@ void ProjectSettingsEditor::_update_action_map_editor() {
ProjectSettings::get_singleton()->get_property_list(&props);
const Ref<Texture2D> builtin_icon = get_theme_icon(SNAME("PinPressed"), SNAME("EditorIcons"));
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- const String property_name = E->get().name;
+ for (const PropertyInfo &E : props) {
+ const String property_name = E.name;
if (!property_name.begins_with("input/")) {
continue;
diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp
index db8334b485..7338588d56 100644
--- a/editor/property_editor.cpp
+++ b/editor/property_editor.cpp
@@ -143,8 +143,8 @@ void CustomPropertyEditor::_menu_option(int p_which) {
}
Set<String> valid_extensions;
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- valid_extensions.insert(E->get());
+ for (const String &E : extensions) {
+ valid_extensions.insert(E);
}
file->clear_filters();
@@ -179,9 +179,8 @@ void CustomPropertyEditor::_menu_option(int p_which) {
res_orig->get_property_list(&property_list);
List<Pair<String, Variant>> propvalues;
- for (List<PropertyInfo>::Element *E = property_list.front(); E; E = E->next()) {
+ for (const PropertyInfo &pi : property_list) {
Pair<String, Variant> p;
- PropertyInfo &pi = E->get();
if (pi.usage & PROPERTY_USAGE_STORAGE) {
p.first = pi.name;
p.second = res_orig->get(pi.name);
@@ -198,8 +197,7 @@ void CustomPropertyEditor::_menu_option(int p_which) {
ERR_FAIL_COND(res.is_null());
- for (List<Pair<String, Variant>>::Element *E = propvalues.front(); E; E = E->next()) {
- Pair<String, Variant> &p = E->get();
+ for (const Pair<String, Variant> &p : propvalues) {
res->set(p.first, p.second);
}
@@ -1293,8 +1291,8 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
ResourceLoader::get_recognized_extensions_for_type(type, &extensions);
file->clear_filters();
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- file->add_filter("*." + E->get() + " ; " + E->get().to_upper());
+ for (const String &E : extensions) {
+ file->add_filter("*." + E + " ; " + E.to_upper());
}
file->popup_file_dialog();
@@ -1321,9 +1319,8 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
res_orig->get_property_list(&property_list);
List<Pair<String, Variant>> propvalues;
- for (List<PropertyInfo>::Element *E = property_list.front(); E; E = E->next()) {
+ for (const PropertyInfo &pi : property_list) {
Pair<String, Variant> p;
- PropertyInfo &pi = E->get();
if (pi.usage & PROPERTY_USAGE_STORAGE) {
p.first = pi.name;
p.second = res_orig->get(pi.name);
@@ -1336,8 +1333,7 @@ void CustomPropertyEditor::_action_pressed(int p_which) {
ERR_FAIL_COND(res.is_null());
- for (List<Pair<String, Variant>>::Element *E = propvalues.front(); E; E = E->next()) {
- Pair<String, Variant> &p = E->get();
+ for (const Pair<String, Variant> &p : propvalues) {
res->set(p.first, p.second);
}
diff --git a/editor/property_selector.cpp b/editor/property_selector.cpp
index d26fc6ad9d..a1deae92a4 100644
--- a/editor/property_selector.cpp
+++ b/editor/property_selector.cpp
@@ -156,43 +156,43 @@ void PropertySelector::_update_search() {
search_options->get_theme_icon(SNAME("PackedColorArray"), SNAME("EditorIcons"))
};
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (E->get().usage == PROPERTY_USAGE_CATEGORY) {
+ for (const PropertyInfo &E : props) {
+ if (E.usage == PROPERTY_USAGE_CATEGORY) {
if (category && category->get_first_child() == nullptr) {
memdelete(category); //old category was unused
}
category = search_options->create_item(root);
- category->set_text(0, E->get().name);
+ category->set_text(0, E.name);
category->set_selectable(0, false);
Ref<Texture2D> icon;
- if (E->get().name == "Script Variables") {
+ if (E.name == "Script Variables") {
icon = search_options->get_theme_icon(SNAME("Script"), SNAME("EditorIcons"));
} else {
- icon = EditorNode::get_singleton()->get_class_icon(E->get().name);
+ icon = EditorNode::get_singleton()->get_class_icon(E.name);
}
category->set_icon(0, icon);
continue;
}
- if (!(E->get().usage & PROPERTY_USAGE_EDITOR) && !(E->get().usage & PROPERTY_USAGE_SCRIPT_VARIABLE)) {
+ if (!(E.usage & PROPERTY_USAGE_EDITOR) && !(E.usage & PROPERTY_USAGE_SCRIPT_VARIABLE)) {
continue;
}
- if (search_box->get_text() != String() && E->get().name.findn(search_text) == -1) {
+ if (search_box->get_text() != String() && E.name.findn(search_text) == -1) {
continue;
}
- if (type_filter.size() && type_filter.find(E->get().type) == -1) {
+ if (type_filter.size() && type_filter.find(E.type) == -1) {
continue;
}
TreeItem *item = search_options->create_item(category ? category : root);
- item->set_text(0, E->get().name);
- item->set_metadata(0, E->get().name);
- item->set_icon(0, type_icons[E->get().type]);
+ item->set_text(0, E.name);
+ item->set_metadata(0, E.name);
+ item->set_icon(0, type_icons[E.type]);
- if (!found && search_box->get_text() != String() && E->get().name.findn(search_text) != -1) {
+ if (!found && search_box->get_text() != String() && E.name.findn(search_text) != -1) {
item->select(0);
found = true;
}
@@ -231,19 +231,19 @@ void PropertySelector::_update_search() {
bool found = false;
bool script_methods = false;
- for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
- if (E->get().name.begins_with("*")) {
+ for (MethodInfo &mi : methods) {
+ if (mi.name.begins_with("*")) {
if (category && category->get_first_child() == nullptr) {
memdelete(category); //old category was unused
}
category = search_options->create_item(root);
- category->set_text(0, E->get().name.replace_first("*", ""));
+ category->set_text(0, mi.name.replace_first("*", ""));
category->set_selectable(0, false);
Ref<Texture2D> icon;
script_methods = false;
- String rep = E->get().name.replace("*", "");
- if (E->get().name == "*Script Methods") {
+ String rep = mi.name.replace("*", "");
+ if (mi.name == "*Script Methods") {
icon = search_options->get_theme_icon(SNAME("Script"), SNAME("EditorIcons"));
script_methods = true;
} else {
@@ -254,16 +254,16 @@ void PropertySelector::_update_search() {
continue;
}
- String name = E->get().name.get_slice(":", 0);
- if (!script_methods && name.begins_with("_") && !(E->get().flags & METHOD_FLAG_VIRTUAL)) {
+ String name = mi.name.get_slice(":", 0);
+ if (!script_methods && name.begins_with("_") && !(mi.flags & METHOD_FLAG_VIRTUAL)) {
continue;
}
- if (virtuals_only && !(E->get().flags & METHOD_FLAG_VIRTUAL)) {
+ if (virtuals_only && !(mi.flags & METHOD_FLAG_VIRTUAL)) {
continue;
}
- if (!virtuals_only && (E->get().flags & METHOD_FLAG_VIRTUAL)) {
+ if (!virtuals_only && (mi.flags & METHOD_FLAG_VIRTUAL)) {
continue;
}
@@ -273,8 +273,6 @@ void PropertySelector::_update_search() {
TreeItem *item = search_options->create_item(category ? category : root);
- MethodInfo mi = E->get();
-
String desc;
if (mi.name.find(":") != -1) {
desc = mi.name.get_slice(":", 1) + " ";
@@ -306,11 +304,11 @@ void PropertySelector::_update_search() {
desc += ")";
- if (E->get().flags & METHOD_FLAG_CONST) {
+ if (mi.flags & METHOD_FLAG_CONST) {
desc += " const";
}
- if (E->get().flags & METHOD_FLAG_VIRTUAL) {
+ if (mi.flags & METHOD_FLAG_VIRTUAL) {
desc += " virtual";
}
diff --git a/editor/quick_open.cpp b/editor/quick_open.cpp
index bda7540a23..ed94f859e2 100644
--- a/editor/quick_open.cpp
+++ b/editor/quick_open.cpp
@@ -118,6 +118,11 @@ void EditorQuickOpen::_update_search() {
float EditorQuickOpen::_score_path(const String &p_search, const String &p_path) {
float score = 0.9f + .1f * (p_search.length() / (float)p_path.length());
+ // Exact match.
+ if (p_search == p_path) {
+ return 1.2f;
+ }
+
// Positive bias for matches close to the beginning of the file name.
String file = p_path.get_file();
int pos = file.findn(p_search);
@@ -128,11 +133,11 @@ float EditorQuickOpen::_score_path(const String &p_search, const String &p_path)
// Positive bias for matches close to the end of the path.
pos = p_path.rfindn(p_search);
if (pos != -1) {
- return score * (0.8f - 0.1f * (float(p_path.length() - pos) / p_path.length()));
+ return 1.1f + 0.09 / (p_path.length() - pos + 1);
}
- // Remaining results belong to the same class of results.
- return score * 0.69f;
+ // Similarity
+ return p_path.to_lower().similarity(p_search.to_lower());
}
void EditorQuickOpen::_confirmed() {
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp
index f453f4102d..c4d47c7594 100644
--- a/editor/scene_tree_dock.cpp
+++ b/editor/scene_tree_dock.cpp
@@ -263,8 +263,8 @@ void SceneTreeDock::_replace_with_branch_scene(const String &p_file, Node *base)
List<Node *> owned;
base->get_owned_by(base->get_owner(), &owned);
Array owners;
- for (List<Node *>::Element *F = owned.front(); F; F = F->next()) {
- owners.push_back(F->get());
+ for (Node *F : owned) {
+ owners.push_back(F);
}
undo_redo->add_do_method(instantiated_scene, "set_owner", edited_scene);
undo_redo->add_undo_method(this, "_set_owners", edited_scene, owners);
@@ -441,8 +441,7 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
selection.sort_custom<Node::Comparator>();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node *node = E->get();
+ for (Node *node : selection) {
Map<const Node *, Node *> duplimap;
Node *dup = node->duplicate_from_editor(duplimap);
@@ -462,8 +461,8 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
bool has_cycle = false;
if (edited_scene->get_filename() != String()) {
- for (List<Node *>::Element *E = node_clipboard.front(); E; E = E->next()) {
- if (edited_scene->get_filename() == E->get()->get_filename()) {
+ for (Node *E : node_clipboard) {
+ if (edited_scene->get_filename() == E->get_filename()) {
has_cycle = true;
break;
}
@@ -496,16 +495,15 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
if (target_scene != clipboard_source_scene) {
if (!clipboard_resource_remap.has(target_scene)) {
Map<RES, RES> remap;
- for (List<Node *>::Element *E = node_clipboard.front(); E; E = E->next()) {
- _create_remap_for_node(E->get(), remap);
+ for (Node *E : node_clipboard) {
+ _create_remap_for_node(E, remap);
}
clipboard_resource_remap[target_scene] = remap;
}
resource_remap = clipboard_resource_remap[target_scene];
}
- for (List<Node *>::Element *E = node_clipboard.front(); E; E = E->next()) {
- Node *node = E->get();
+ for (Node *node : node_clipboard) {
Map<const Node *, Node *> duplimap;
Node *dup = node->duplicate_from_editor(duplimap, resource_remap);
@@ -627,8 +625,8 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
int lowest_id = common_parent->get_child_count() - 1;
int highest_id = 0;
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- int index = E->get()->get_index();
+ for (Node *E : selection) {
+ int index = E->get_index();
if (index > highest_id) {
highest_id = index;
@@ -637,7 +635,7 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
lowest_id = index;
}
- if (E->get()->get_parent() != common_parent) {
+ if (E->get_parent() != common_parent) {
common_parent = nullptr;
}
}
@@ -704,8 +702,7 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
Node *add_below_node = selection.back()->get();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node *node = E->get();
+ for (Node *node : selection) {
Node *parent = node->get_parent();
List<Node *> owned;
@@ -724,11 +721,11 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
editor_data->get_undo_redo().add_do_method(add_below_node, "add_sibling", dup);
- for (List<Node *>::Element *F = owned.front(); F; F = F->next()) {
- if (!duplimap.has(F->get())) {
+ for (Node *F : owned) {
+ if (!duplimap.has(F)) {
continue;
}
- Node *d = duplimap[F->get()];
+ Node *d = duplimap[F];
editor_data->get_undo_redo().add_do_method(d, "set_owner", node->get_owner());
}
editor_data->get_undo_redo().add_do_method(editor_selection, "add_node", dup);
@@ -771,8 +768,8 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
List<Node *> nodes = editor_selection->get_selected_node_list();
Set<Node *> nodeset;
- for (List<Node *>::Element *E = nodes.front(); E; E = E->next()) {
- nodeset.insert(E->get());
+ for (Node *E : nodes) {
+ nodeset.insert(E);
}
reparent_dialog->set_current(nodeset);
reparent_dialog->popup_centered_clamped(Size2(350, 700) * EDSCALE);
@@ -1534,11 +1531,11 @@ void SceneTreeDock::perform_node_renames(Node *p_base, Map<Node *, NodePath> *p_
List<PropertyInfo> properties;
p_base->get_property_list(&properties);
- for (List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
- if (!(E->get().usage & (PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR))) {
+ for (const PropertyInfo &E : properties) {
+ if (!(E.usage & (PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_EDITOR))) {
continue;
}
- String propertyname = E->get().name;
+ String propertyname = E.name;
Variant old_variant = p_base->get(propertyname);
Variant updated_variant = old_variant;
if (_check_node_path_recursive(p_base, updated_variant, p_renames)) {
@@ -1560,8 +1557,8 @@ void SceneTreeDock::perform_node_renames(Node *p_base, Map<Node *, NodePath> *p_
Map<Node *, NodePath>::Element *found_root_path = p_renames->find(root);
NodePath new_root_path = found_root_path ? found_root_path->get() : root->get_path();
if (!new_root_path.is_empty()) { // No renaming if root node is deleted.
- for (List<StringName>::Element *E = anims.front(); E; E = E->next()) {
- Ref<Animation> anim = ap->get_animation(E->get());
+ for (const StringName &E : anims) {
+ Ref<Animation> anim = ap->get_animation(E);
if (!r_rem_anims->has(anim)) {
r_rem_anims->insert(anim, Set<int>());
Set<int> &ran = r_rem_anims->find(anim)->get();
@@ -1663,8 +1660,8 @@ void SceneTreeDock::_node_prerenamed(Node *p_node, const String &p_new_name) {
bool SceneTreeDock::_validate_no_foreign() {
List<Node *> selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- if (E->get() != edited_scene && E->get()->get_owner() != edited_scene) {
+ for (Node *E : selection) {
+ if (E != edited_scene && E->get_owner() != edited_scene) {
accept->set_text(TTR("Can't operate on nodes from a foreign scene!"));
accept->popup_centered();
return false;
@@ -1673,11 +1670,11 @@ bool SceneTreeDock::_validate_no_foreign() {
// When edited_scene inherits from another one the root Node will be the parent Scene,
// we don't want to consider that Node a foreign one otherwise we would not be able to
// delete it.
- if (edited_scene->get_scene_inherited_state().is_valid() && edited_scene == E->get()) {
+ if (edited_scene->get_scene_inherited_state().is_valid() && edited_scene == E) {
continue;
}
- if (edited_scene->get_scene_inherited_state().is_valid() && edited_scene->get_scene_inherited_state()->find_node_by_path(edited_scene->get_path_to(E->get())) >= 0) {
+ if (edited_scene->get_scene_inherited_state().is_valid() && edited_scene->get_scene_inherited_state()->find_node_by_path(edited_scene->get_path_to(E)) >= 0) {
accept->set_text(TTR("Can't operate on nodes the current scene inherits from!"));
accept->popup_centered();
return false;
@@ -1690,8 +1687,8 @@ bool SceneTreeDock::_validate_no_foreign() {
bool SceneTreeDock::_validate_no_instance() {
List<Node *> selection = editor_selection->get_selected_node_list();
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- if (E->get() != edited_scene && E->get()->get_filename() != "") {
+ for (Node *E : selection) {
+ if (E != edited_scene && E->get_filename() != "") {
accept->set_text(TTR("This operation can't be done on instantiated scenes."));
accept->popup_centered();
return false;
@@ -1713,8 +1710,8 @@ void SceneTreeDock::_node_reparent(NodePath p_path, bool p_keep_global_xform) {
Vector<Node *> nodes;
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- nodes.push_back(E->get());
+ for (Node *E : selection) {
+ nodes.push_back(E);
}
_do_reparent(new_parent, -1, nodes, p_keep_global_xform);
@@ -1771,8 +1768,8 @@ void SceneTreeDock::_do_reparent(Node *p_new_parent, int p_position_in_parent, V
List<Node *> owned;
node->get_owned_by(node->get_owner(), &owned);
Array owners;
- for (List<Node *>::Element *E = owned.front(); E; E = E->next()) {
- owners.push_back(E->get());
+ for (Node *E : owned) {
+ owners.push_back(E);
}
if (new_parent == node->get_parent() && node->get_index() < p_position_in_parent + ni) {
@@ -1847,8 +1844,8 @@ void SceneTreeDock::_do_reparent(Node *p_new_parent, int p_position_in_parent, V
List<Node *> owned;
node->get_owned_by(node->get_owner(), &owned);
Array owners;
- for (List<Node *>::Element *E = owned.front(); E; E = E->next()) {
- owners.push_back(E->get());
+ for (Node *E : owned) {
+ owners.push_back(E);
}
int child_pos = node->get_index();
@@ -1928,10 +1925,10 @@ void SceneTreeDock::_script_created(Ref<Script> p_script) {
}
editor_data->get_undo_redo().create_action(TTR("Attach Script"));
- for (List<Node *>::Element *E = selected.front(); E; E = E->next()) {
- Ref<Script> existing = E->get()->get_script();
- editor_data->get_undo_redo().add_do_method(E->get(), "set_script", p_script);
- editor_data->get_undo_redo().add_undo_method(E->get(), "set_script", existing);
+ for (Node *E : selected) {
+ Ref<Script> existing = E->get_script();
+ editor_data->get_undo_redo().add_do_method(E, "set_script", p_script);
+ editor_data->get_undo_redo().add_undo_method(E, "set_script", existing);
editor_data->get_undo_redo().add_do_method(this, "_update_script_button");
editor_data->get_undo_redo().add_undo_method(this, "_update_script_button");
}
@@ -2006,8 +2003,8 @@ void SceneTreeDock::_delete_confirm(bool p_cut) {
bool entire_scene = false;
- for (List<Node *>::Element *E = remove_list.front(); E; E = E->next()) {
- if (E->get() == edited_scene) {
+ for (Node *E : remove_list) {
+ if (E == edited_scene) {
entire_scene = true;
}
}
@@ -2024,8 +2021,7 @@ void SceneTreeDock::_delete_confirm(bool p_cut) {
Map<Node *, NodePath> path_renames;
//delete from animation
- for (List<Node *>::Element *E = remove_list.front(); E; E = E->next()) {
- Node *n = E->get();
+ for (Node *n : remove_list) {
if (!n->is_inside_tree() || !n->get_parent()) {
continue;
}
@@ -2035,8 +2031,7 @@ void SceneTreeDock::_delete_confirm(bool p_cut) {
perform_node_renames(nullptr, &path_renames);
//delete for read
- for (List<Node *>::Element *E = remove_list.front(); E; E = E->next()) {
- Node *n = E->get();
+ for (Node *n : remove_list) {
if (!n->is_inside_tree() || !n->get_parent()) {
continue;
}
@@ -2044,8 +2039,8 @@ void SceneTreeDock::_delete_confirm(bool p_cut) {
List<Node *> owned;
n->get_owned_by(n->get_owner(), &owned);
Array owners;
- for (List<Node *>::Element *F = owned.front(); F; F = F->next()) {
- owners.push_back(F->get());
+ for (Node *F : owned) {
+ owners.push_back(F);
}
editor_data->get_undo_redo().add_do_method(n->get_parent(), "remove_child", n);
@@ -2198,8 +2193,7 @@ void SceneTreeDock::_create() {
UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
ur->create_action(TTR("Change type of node(s)"));
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node *n = E->get();
+ for (Node *n : selection) {
ERR_FAIL_COND(!n);
Variant c = create_dialog->instance_selected();
@@ -2256,8 +2250,8 @@ void SceneTreeDock::_create() {
_do_create(parent);
Vector<Node *> nodes;
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- nodes.push_back(E->get());
+ for (Node *E : selection) {
+ nodes.push_back(E);
}
// This works because editor_selection was cleared and populated with last created node in _do_create()
@@ -2277,13 +2271,13 @@ void SceneTreeDock::replace_node(Node *p_node, Node *p_by_node, bool p_keep_prop
List<PropertyInfo> pinfo;
n->get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : pinfo) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- if (E->get().name == "__meta__") {
- Dictionary metadata = n->get(E->get().name);
+ if (E.name == "__meta__") {
+ Dictionary metadata = n->get(E.name);
if (metadata.has("_editor_description_")) {
newnode->set_meta("_editor_description_", metadata["_editor_description_"]);
}
@@ -2300,8 +2294,8 @@ void SceneTreeDock::replace_node(Node *p_node, Node *p_by_node, bool p_keep_prop
continue;
}
- if (default_oldnode->get(E->get().name) != n->get(E->get().name)) {
- newnode->set(E->get().name, n->get(E->get().name));
+ if (default_oldnode->get(E.name) != n->get(E.name)) {
+ newnode->set(E.name, n->get(E.name));
}
}
@@ -2314,12 +2308,11 @@ void SceneTreeDock::replace_node(Node *p_node, Node *p_by_node, bool p_keep_prop
List<MethodInfo> sl;
n->get_signal_list(&sl);
- for (List<MethodInfo>::Element *E = sl.front(); E; E = E->next()) {
+ for (const MethodInfo &E : sl) {
List<Object::Connection> cl;
- n->get_signal_connection_list(E->get().name, &cl);
+ n->get_signal_connection_list(E.name, &cl);
- for (List<Object::Connection>::Element *F = cl.front(); F; F = F->next()) {
- Object::Connection &c = F->get();
+ for (const Object::Connection &c : cl) {
if (!(c.flags & Object::CONNECT_PERSIST)) {
continue;
}
@@ -2525,13 +2518,13 @@ void SceneTreeDock::_files_dropped(Vector<String> p_files, NodePath p_to, int p_
List<PropertyInfo> pinfo;
node->get_property_list(&pinfo);
- for (PropertyInfo &p : pinfo) {
+ for (const PropertyInfo &p : pinfo) {
if (!(p.usage & PROPERTY_USAGE_EDITOR) || !(p.usage & PROPERTY_USAGE_STORAGE) || p.hint != PROPERTY_HINT_RESOURCE_TYPE) {
continue;
}
Vector<String> valid_types = p.hint_string.split(",");
- for (String &prop_type : valid_types) {
+ for (const String &prop_type : valid_types) {
if (res_type == prop_type || ClassDB::is_parent_class(res_type, prop_type) || EditorNode::get_editor_data().script_class_is_parent(res_type, prop_type)) {
valid_properties.push_back(p.name);
break;
@@ -2545,7 +2538,7 @@ void SceneTreeDock::_files_dropped(Vector<String> p_files, NodePath p_to, int p_
bool capitalize = bool(EDITOR_GET("interface/inspector/capitalize_properties"));
menu_properties->clear();
- for (String &p : valid_properties) {
+ for (const String &p : valid_properties) {
menu_properties->add_item(capitalize ? p.capitalize() : p);
menu_properties->set_item_metadata(menu_properties->get_item_count() - 1, p);
}
@@ -2586,8 +2579,8 @@ void SceneTreeDock::_nodes_dragged(Array p_nodes, NodePath p_to, int p_type) {
}
Vector<Node *> nodes;
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- nodes.push_back(E->get());
+ for (Node *E : selection) {
+ nodes.push_back(E);
}
int to_pos = -1;
@@ -2603,15 +2596,15 @@ void SceneTreeDock::_add_children_to_popup(Object *p_obj, int p_depth) {
List<PropertyInfo> pinfo;
p_obj->get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_EDITOR)) {
+ for (const PropertyInfo &E : pinfo) {
+ if (!(E.usage & PROPERTY_USAGE_EDITOR)) {
continue;
}
- if (E->get().hint != PROPERTY_HINT_RESOURCE_TYPE) {
+ if (E.hint != PROPERTY_HINT_RESOURCE_TYPE) {
continue;
}
- Variant value = p_obj->get(E->get().name);
+ Variant value = p_obj->get(E.name);
if (value.get_type() != Variant::OBJECT) {
continue;
}
@@ -2626,7 +2619,7 @@ void SceneTreeDock::_add_children_to_popup(Object *p_obj, int p_depth) {
menu->add_submenu_item(TTR("Sub-Resources"), "Sub-Resources");
}
int index = menu_subresources->get_item_count();
- menu_subresources->add_icon_item(icon, E->get().name.capitalize(), EDIT_SUBRESOURCE_BASE + subresources.size());
+ menu_subresources->add_icon_item(icon, E.name.capitalize(), EDIT_SUBRESOURCE_BASE + subresources.size());
menu_subresources->set_item_h_offset(index, p_depth * 10 * EDSCALE);
subresources.push_back(obj->get_instance_id());
@@ -2708,8 +2701,8 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) {
menu->add_icon_shortcut(get_theme_icon(SNAME("ScriptRemove"), SNAME("EditorIcons")), ED_GET_SHORTCUT("scene_tree/detach_script"), TOOL_DETACH_SCRIPT);
} else if (full_selection.size() > 1) {
bool script_exists = false;
- for (List<Node *>::Element *E = full_selection.front(); E; E = E->next()) {
- if (!E->get()->get_script().is_null()) {
+ for (Node *E : full_selection) {
+ if (!E->get_script().is_null()) {
script_exists = true;
break;
}
@@ -2732,8 +2725,8 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) {
}
bool can_replace = true;
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- if (E->get() != edited_scene && (E->get()->get_owner() != edited_scene || E->get()->get_filename() != "")) {
+ for (Node *E : selection) {
+ if (E != edited_scene && (E->get_owner() != edited_scene || E->get_filename() != "")) {
can_replace = false;
break;
}
@@ -3046,8 +3039,8 @@ void SceneTreeDock::_feature_profile_changed() {
}
void SceneTreeDock::_clear_clipboard() {
- for (List<Node *>::Element *E = node_clipboard.front(); E; E = E->next()) {
- memdelete(E->get());
+ for (Node *E : node_clipboard) {
+ memdelete(E);
}
node_clipboard.clear();
clipboard_resource_remap.clear();
@@ -3058,18 +3051,18 @@ void SceneTreeDock::_create_remap_for_node(Node *p_node, Map<RES, RES> &r_remap)
p_node->get_property_list(&props);
bool is_instantiated = EditorPropertyRevert::may_node_be_in_instance(p_node);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : props) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- Variant v = p_node->get(E->get().name);
+ Variant v = p_node->get(E.name);
if (v.is_ref()) {
RES res = v;
if (res.is_valid()) {
if (is_instantiated) {
Variant orig;
- if (EditorPropertyRevert::get_instantiated_node_original_property(p_node, E->get().name, orig)) {
+ if (EditorPropertyRevert::get_instantiated_node_original_property(p_node, E.name, orig)) {
if (!EditorPropertyRevert::is_node_property_different(p_node, v, orig)) {
continue;
}
@@ -3094,12 +3087,12 @@ void SceneTreeDock::_create_remap_for_resource(RES p_resource, Map<RES, RES> &r_
List<PropertyInfo> props;
p_resource->get_property_list(&props);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : props) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- Variant v = p_resource->get(E->get().name);
+ Variant v = p_resource->get(E.name);
if (v.is_ref()) {
RES res = v;
if (res.is_valid()) {
diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp
index c6f2c9253e..83b0203f32 100644
--- a/editor/scene_tree_editor.cpp
+++ b/editor/scene_tree_editor.cpp
@@ -79,8 +79,7 @@ void SceneTreeEditor::_cell_button_pressed(Object *p_item, int p_column, int p_i
_toggle_visible(n);
List<Node *> selection = editor_selection->get_selected_node_list();
if (selection.size() > 1 && selection.find(n) != nullptr) {
- for (List<Node *>::Element *E = selection.front(); E; E = E->next()) {
- Node *nv = E->get();
+ for (Node *nv : selection) {
ERR_FAIL_COND(!nv);
if (nv == n) {
continue;
@@ -521,7 +520,7 @@ void SceneTreeEditor::_node_removed(Node *p_node) {
if (p_node == selected) {
selected = nullptr;
- _emit_node_selected();
+ emit_signal("node_selected");
}
}
@@ -615,6 +614,24 @@ void SceneTreeEditor::_tree_changed() {
pending_test_update = true;
}
+void SceneTreeEditor::_selected_changed() {
+ TreeItem *s = tree->get_selected();
+ ERR_FAIL_COND(!s);
+ NodePath np = s->get_metadata(0);
+
+ Node *n = get_node(np);
+
+ if (n == selected) {
+ return;
+ }
+
+ selected = get_node(np);
+
+ blocked++;
+ emit_signal("node_selected");
+ blocked--;
+}
+
void SceneTreeEditor::_deselect_items() {
// Clear currently selected items in scene tree dock.
if (editor_selection) {
@@ -623,12 +640,6 @@ void SceneTreeEditor::_deselect_items() {
}
}
-void SceneTreeEditor::_emit_node_selected() {
- blocked++;
- emit_signal(SNAME("node_selected"));
- blocked--;
-}
-
void SceneTreeEditor::_cell_multi_selected(Object *p_object, int p_cell, bool p_selected) {
TreeItem *item = Object::cast_to<TreeItem>(p_object);
ERR_FAIL_COND(!item);
@@ -652,11 +663,8 @@ void SceneTreeEditor::_cell_multi_selected(Object *p_object, int p_cell, bool p_
editor_selection->remove_node(n);
}
- // Selection changed to be single node, so emit "selected" (for single node) rather than "changed" (for multiple nodes)
- if (editor_selection->get_selected_nodes().size() == 1) {
- selected = editor_selection->get_selected_node_list()[0];
- _emit_node_selected();
- } else {
+ // Emitted "selected" in _selected_changed() when select single node, so select multiple node emit "changed"
+ if (editor_selection->get_selected_nodes().size() > 1) {
emit_signal(SNAME("node_changed"));
}
}
@@ -747,7 +755,7 @@ void SceneTreeEditor::set_selected(Node *p_node, bool p_emit_selected) {
}
if (p_emit_selected) {
- _emit_node_selected();
+ emit_signal("node_selected");
}
}
@@ -1197,6 +1205,7 @@ SceneTreeEditor::SceneTreeEditor(bool p_label, bool p_can_rename, bool p_can_ope
tree->connect("empty_tree_rmb_selected", callable_mp(this, &SceneTreeEditor::_rmb_select));
}
+ tree->connect("cell_selected", callable_mp(this, &SceneTreeEditor::_selected_changed));
tree->connect("item_edited", callable_mp(this, &SceneTreeEditor::_renamed), varray(), CONNECT_DEFERRED);
tree->connect("multi_selected", callable_mp(this, &SceneTreeEditor::_cell_multi_selected));
tree->connect("button_pressed", callable_mp(this, &SceneTreeEditor::_cell_button_pressed));
diff --git a/editor/scene_tree_editor.h b/editor/scene_tree_editor.h
index e833bf93e0..acd49e8d92 100644
--- a/editor/scene_tree_editor.h
+++ b/editor/scene_tree_editor.h
@@ -81,6 +81,7 @@ class SceneTreeEditor : public Control {
TreeItem *_find(TreeItem *p_node, const NodePath &p_path);
void _notification(int p_what);
+ void _selected_changed();
void _deselect_items();
void _rename_node(ObjectID p_node, const String &p_name);
@@ -132,8 +133,6 @@ class SceneTreeEditor : public Control {
Vector<StringName> valid_types;
- void _emit_node_selected();
-
public:
void set_filter(const String &p_filter);
String get_filter() const;
diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp
index 2601382009..4cbc859e0c 100644
--- a/editor/script_create_dialog.cpp
+++ b/editor/script_create_dialog.cpp
@@ -205,12 +205,12 @@ String ScriptCreateDialog::_validate_path(const String &p_path, bool p_file_must
bool found = false;
bool match = false;
int index = 0;
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- if (E->get().nocasecmp_to(extension) == 0) {
+ for (const String &E : extensions) {
+ if (E.nocasecmp_to(extension) == 0) {
//FIXME (?) - changing language this way doesn't update controls, needs rework
//language_menu->select(index); // change Language option by extension
found = true;
- if (E->get() == ScriptServer::get_language(language_menu->get_selected())->get_extension()) {
+ if (E == ScriptServer::get_language(language_menu->get_selected())->get_extension()) {
match = true;
}
break;
@@ -373,8 +373,8 @@ void ScriptCreateDialog::_lang_changed(int l) {
ScriptServer::get_language(m)->get_recognized_extensions(&extensions);
}
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- if (E->get().nocasecmp_to(extension) == 0) {
+ for (const String &E : extensions) {
+ if (E.nocasecmp_to(extension) == 0) {
path = path.get_basename() + selected_ext;
_path_changed(path);
break;
@@ -534,8 +534,8 @@ void ScriptCreateDialog::_browse_path(bool browse_parent, bool p_save) {
int lang = language_menu->get_selected();
ScriptServer::get_language(lang)->get_recognized_extensions(&extensions);
- for (List<String>::Element *E = extensions.front(); E; E = E->next()) {
- file_browse->add_filter("*." + E->get());
+ for (const String &E : extensions) {
+ file_browse->add_filter("*." + E);
}
file_browse->set_current_path(file_path->get_text());
@@ -604,7 +604,7 @@ void ScriptCreateDialog::_path_submitted(const String &p_path) {
}
void ScriptCreateDialog::_msg_script_valid(bool valid, const String &p_msg) {
- error_label->set_text("- " + p_msg);
+ error_label->set_text(String::utf8("• ") + p_msg);
if (valid) {
error_label->add_theme_color_override("font_color", get_theme_color(SNAME("success_color"), SNAME("Editor")));
} else {
@@ -613,7 +613,7 @@ void ScriptCreateDialog::_msg_script_valid(bool valid, const String &p_msg) {
}
void ScriptCreateDialog::_msg_path_valid(bool valid, const String &p_msg) {
- path_error_label->set_text("- " + p_msg);
+ path_error_label->set_text(String::utf8("• ") + p_msg);
if (valid) {
path_error_label->add_theme_color_override("font_color", get_theme_color(SNAME("success_color"), SNAME("Editor")));
} else {
diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp
index 0524b91634..e7ba3daccd 100644
--- a/editor/settings_config_dialog.cpp
+++ b/editor/settings_config_dialog.cpp
@@ -209,7 +209,7 @@ void EditorSettingsDialog::_event_config_confirmed() {
undo_redo->create_action(TTR("Change Shortcut") + " '" + shortcut_being_edited + "'");
undo_redo->add_do_method(current_sc.ptr(), "set_shortcut", k);
- undo_redo->add_undo_method(current_sc.ptr(), "set_shortcut", current_sc->get_shortcut());
+ undo_redo->add_undo_method(current_sc.ptr(), "set_shortcut", current_sc->get_event());
undo_redo->add_do_method(this, "_update_shortcuts");
undo_redo->add_undo_method(this, "_update_shortcuts");
undo_redo->add_do_method(this, "_settings_changed");
@@ -324,15 +324,15 @@ void EditorSettingsDialog::_update_shortcuts() {
List<String> slist;
EditorSettings::get_singleton()->get_shortcut_list(&slist);
- for (List<String>::Element *E = slist.front(); E; E = E->next()) {
- Ref<Shortcut> sc = EditorSettings::get_singleton()->get_shortcut(E->get());
+ for (const String &E : slist) {
+ Ref<Shortcut> sc = EditorSettings::get_singleton()->get_shortcut(E);
if (!sc->has_meta("original")) {
continue;
}
Ref<InputEvent> original = sc->get_meta("original");
- String section_name = E->get().get_slice("/", 0);
+ String section_name = E.get_slice("/", 0);
TreeItem *section;
@@ -361,7 +361,7 @@ void EditorSettingsDialog::_update_shortcuts() {
item->set_text(0, sc->get_name());
item->set_text(1, sc->get_as_text());
- if (!sc->is_shortcut(original) && !(sc->get_shortcut().is_null() && original.is_null())) {
+ if (!sc->matches_event(original) && !(sc->get_event().is_null() && original.is_null())) {
item->add_button(1, shortcuts->get_theme_icon(SNAME("Reload"), SNAME("EditorIcons")), 2);
}
@@ -372,8 +372,8 @@ void EditorSettingsDialog::_update_shortcuts() {
item->add_button(1, shortcuts->get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), 0);
item->add_button(1, shortcuts->get_theme_icon(SNAME("Close"), SNAME("EditorIcons")), 1);
- item->set_tooltip(0, E->get());
- item->set_metadata(0, E->get());
+ item->set_tooltip(0, E);
+ item->set_metadata(0, E);
}
}
@@ -403,10 +403,9 @@ void EditorSettingsDialog::_shortcut_button_pressed(Object *p_item, int p_column
List<Ref<InputEvent>> defaults = InputMap::get_singleton()->get_builtins()[current_action];
// Convert the list to an array, and only keep key events as this is for the editor.
- for (List<Ref<InputEvent>>::Element *E = defaults.front(); E; E = E->next()) {
- Ref<InputEventKey> k = E->get();
+ for (const Ref<InputEvent> &k : defaults) {
if (k.is_valid()) {
- events.append(E->get());
+ events.append(k);
}
}
@@ -445,7 +444,7 @@ void EditorSettingsDialog::_shortcut_button_pressed(Object *p_item, int p_column
switch (button_idx) {
case EditorSettingsDialog::SHORTCUT_EDIT:
- shortcut_editor->popup_and_configure(sc->get_shortcut());
+ shortcut_editor->popup_and_configure(sc->get_event());
shortcut_being_edited = item;
break;
case EditorSettingsDialog::SHORTCUT_ERASE: {
@@ -455,7 +454,7 @@ void EditorSettingsDialog::_shortcut_button_pressed(Object *p_item, int p_column
undo_redo->create_action(TTR("Erase Shortcut"));
undo_redo->add_do_method(sc.ptr(), "set_shortcut", Ref<InputEvent>());
- undo_redo->add_undo_method(sc.ptr(), "set_shortcut", sc->get_shortcut());
+ undo_redo->add_undo_method(sc.ptr(), "set_shortcut", sc->get_event());
undo_redo->add_do_method(this, "_update_shortcuts");
undo_redo->add_undo_method(this, "_update_shortcuts");
undo_redo->add_do_method(this, "_settings_changed");
@@ -471,7 +470,7 @@ void EditorSettingsDialog::_shortcut_button_pressed(Object *p_item, int p_column
undo_redo->create_action(TTR("Restore Shortcut"));
undo_redo->add_do_method(sc.ptr(), "set_shortcut", original);
- undo_redo->add_undo_method(sc.ptr(), "set_shortcut", sc->get_shortcut());
+ undo_redo->add_undo_method(sc.ptr(), "set_shortcut", sc->get_event());
undo_redo->add_do_method(this, "_update_shortcuts");
undo_redo->add_undo_method(this, "_update_shortcuts");
undo_redo->add_do_method(this, "_settings_changed");
diff --git a/editor/translations/af.po b/editor/translations/af.po
index bb7e7ca553..18ad28af62 100644
--- a/editor/translations/af.po
+++ b/editor/translations/af.po
@@ -535,7 +535,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -562,7 +563,8 @@ msgstr "Skaal Seleksie"
msgid "Scale From Cursor"
msgstr "Skaal van Wyser"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Dupliseer Seleksie"
@@ -586,6 +588,11 @@ msgid "Go to Previous Step"
msgstr "Gaan na Vorige Stap"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Herset Zoem"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimaliseer Animasie"
@@ -602,6 +609,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Anim. Optimaliseerder"
@@ -651,7 +662,7 @@ msgid "Select Tracks to Copy"
msgstr "Stel Oorgange na:"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -741,12 +752,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoem In"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -809,11 +822,9 @@ msgid "Add"
msgstr "Voeg By"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -865,6 +876,7 @@ msgstr "Koppel tans Sein:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -942,7 +954,7 @@ msgstr ""
#: editor/connections_dialog.cpp
#, fuzzy
-msgid "Go To Method"
+msgid "Go to Method"
msgstr "Metodes"
#: editor/create_dialog.cpp
@@ -959,6 +971,14 @@ msgstr ""
msgid "Create New %s"
msgstr "Skep Nuwe"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -980,8 +1000,8 @@ msgstr "Soek:"
msgid "Matches:"
msgstr "Passendes:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1061,8 +1081,9 @@ msgstr "Eienaars van:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "Verwyder geselekteerde lêers uit die projek? (geen ontdoen)"
#: editor/dependency_editor.cpp
@@ -1070,8 +1091,9 @@ msgstr "Verwyder geselekteerde lêers uit die projek? (geen ontdoen)"
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Die lêers wat verwyder word, word vereis deur ander hulpbronne sodat hulle "
"reg kan werk.\n"
@@ -1122,7 +1144,7 @@ msgstr "Verweerde Hulpbron Verkenner"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1252,31 +1274,39 @@ msgstr "Komponente"
msgid "Licenses"
msgstr "Lisensies"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Error opening package file, not in ZIP format."
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "Fout met oopmaak, die pakket-lêer is nie in zip format nie."
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr "AutoLaai '%s' bestaan reeds!"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Ontpak Bates"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "(and %s more files)"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Package installed successfully!"
+msgid "Asset \"%s\" installed successfully!"
msgstr "Pakket Suksesvol Geïnstalleer!"
#: editor/editor_asset_installer.cpp
@@ -1284,17 +1314,13 @@ msgstr "Pakket Suksesvol Geïnstalleer!"
msgid "Success!"
msgstr "Sukses!"
-#: editor/editor_asset_installer.cpp
-#, fuzzy
-msgid "Package Contents:"
-msgstr "Pakket Installeerder"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Installeer"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Pakket Installeerder"
#: editor/editor_audio_buses.cpp
@@ -1360,7 +1386,8 @@ msgid "Bypass"
msgstr "Omseil"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Bus opsies"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1442,7 +1469,7 @@ msgstr "Voeg Bus By"
msgid "Add a new Audio Bus to this layout."
msgstr "Stoor Oudio-Bus Uitleg As..."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1535,6 +1562,15 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Lêer bestaan nie."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Voeg AutoLaai By"
@@ -1550,16 +1586,16 @@ msgid "Node Name:"
msgstr "Nodus Naam:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Naam"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "EnkelHouer"
+msgid "Global Variable"
+msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1575,7 +1611,7 @@ msgstr "Plaaslike veranderinge word gebêre..."
msgid "Updating scene..."
msgstr "Toneel word opgedateer..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1721,9 +1757,48 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Vervang Alles"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1759,16 +1834,16 @@ msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr "Eienskappe"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr "Deursoek Klasse"
#: editor/editor_feature_profile.cpp
@@ -1787,8 +1862,9 @@ msgid "Error saving profile to path: '%s'."
msgstr "Fout tydens storing van hulpbron!"
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Laai Verstek"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1797,17 +1873,26 @@ msgstr "Skep Vouer"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Make Current"
-msgstr "Maak Funksie"
+msgid "Create Profile"
+msgstr "Skep Vouer"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Verwyder"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "Eienskappe"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Make Current"
+msgstr "Maak Funksie"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1817,13 +1902,17 @@ msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Available Profiles:"
-msgstr "Eienskappe"
+msgid "Configure Selected Profile:"
+msgstr "Skep Vouer"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
-msgstr "Beskrywing"
+msgid "Extra Options:"
+msgstr "Beskrywing:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1831,10 +1920,6 @@ msgid "New profile name:"
msgstr "Nodus Naam:"
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
msgstr ""
@@ -1856,7 +1941,8 @@ msgid "Select Current Folder"
msgstr "Skep Vouer"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Lêer Bestaan reeds. Oorskryf?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1913,9 +1999,10 @@ msgid "Open a File or Directory"
msgstr "Open 'n Lêer of Gids"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Stoor"
@@ -2002,8 +2089,7 @@ msgid "Directories & Files:"
msgstr "Gidse & Lêers:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Voorskou:"
@@ -2077,7 +2163,7 @@ msgstr "Eienskappe"
msgid "Enumerations"
msgstr "Opnoemings"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstantes"
@@ -2179,7 +2265,7 @@ msgstr "Metodes"
msgid "Signal"
msgstr "Seine"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstant"
@@ -2197,8 +2283,9 @@ msgstr "Eienskappe"
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2215,7 +2302,7 @@ msgid "Copy Selection"
msgstr "Verwyder Seleksie"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2280,7 +2367,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2475,18 +2563,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2658,7 +2750,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
#, fuzzy
msgid "Show in FileSystem"
@@ -2847,6 +2939,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Verweerde Hulpbron Verkenner"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Skep Vouer"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2981,13 +3078,13 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr ""
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Opnoemings"
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2995,6 +3092,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -3003,7 +3104,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -3101,6 +3202,15 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Installeer"
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3127,7 +3237,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3168,6 +3278,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Skep Vouer"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3200,6 +3315,11 @@ msgstr ""
msgid "No sub-resources found."
msgstr "Hulpbron"
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Hulpbron"
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3225,21 +3345,19 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr ""
+#, fuzzy
+msgid "Author"
+msgstr "Outeurs"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3247,11 +3365,12 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "Tree (s):"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3271,6 +3390,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3314,12 +3443,6 @@ msgstr "Ongeldige naam."
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3337,22 +3460,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3366,37 +3512,21 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Hernoem AutoLaai"
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3431,7 +3561,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3451,64 +3581,73 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr ""
+#, fuzzy
+msgid "Error requesting URL:"
+msgstr "Fout terwyl laai:"
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr ""
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Koppel aan Nodus:"
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+#, fuzzy
+msgid "Cannot remove temporary file:"
+msgstr "Kan nie verwyder nie:\n"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3516,7 +3655,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3526,140 +3669,171 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+#, fuzzy
+msgid "Can't Connect"
+msgstr "Koppel"
+
+#: editor/export_template_manager.cpp
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Cannot remove temporary file:"
-msgstr "Kan nie verwyder nie:\n"
+msgid "Connection Error"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error requesting URL:"
-msgstr "Fout terwyl laai:"
+msgid "Can't open the export templates file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Can't Connect"
-msgstr "Koppel"
+msgid "Uncompressing Android Build Sources"
+msgstr "Ontpak Bates"
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+#, fuzzy
+msgid "Open Folder"
+msgstr "Open 'n Lêer"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Uncompressing Android Build Sources"
-msgstr "Ontpak Bates"
+msgid "Uninstall"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "Skep Vouer"
+msgid "Install from File"
+msgstr "Installeer"
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Other Installed Versions:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Select Template File"
+msgstr "Skep Vouer"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3798,12 +3972,14 @@ msgstr ""
msgid "New Resource..."
msgstr "Stoor Hulpbron As..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Collapse All"
@@ -3811,19 +3987,47 @@ msgstr "Vervang Alles"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Duplicate..."
-msgstr "Dupliseer"
+msgid "Sort files"
+msgstr "Deursoek Klasse"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "Skuif AutoLaai"
+msgid "Duplicate..."
+msgstr "Dupliseer"
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "Voorskou:"
@@ -3911,10 +4115,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
#, fuzzy
msgid "Find: "
@@ -4153,54 +4353,52 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr "Eienskappe"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Collapse All Properties"
+msgid "Paste Properties"
msgstr "Eienskappe"
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
-
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-#, fuzzy
-msgid "Edit Resource Clipboard"
-msgstr "Hulpbron"
+msgid "Create a new resource in memory and edit it."
+msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr ""
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Nie in hulpbron pad nie."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Hulpbron"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4216,8 +4414,14 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr ""
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Opnoemings"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "Opnoemings"
#: editor/inspector_dock.cpp
#, fuzzy
@@ -4225,6 +4429,11 @@ msgid "Filter properties"
msgstr "Eienskappe"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Animasie Zoem."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4253,6 +4462,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4464,7 +4682,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4693,6 +4911,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "Oorgange"
@@ -5045,10 +5268,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -5057,15 +5288,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5094,6 +5329,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5198,7 +5437,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5243,6 +5486,10 @@ msgstr "Laai"
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5251,8 +5498,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5495,15 +5742,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5561,6 +5809,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
@@ -5573,19 +5822,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Verwyder geselekteerde baan."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "Skrap gekose lêers?"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Verwyder geselekteerde baan."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5823,6 +6081,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Skuif Gunsteling Op"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Voeg Sleutel Hier"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5835,6 +6103,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Zoem Uit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Zoem Uit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Zoem Uit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Zoem Uit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Zoem Uit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Zoem Uit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -6085,6 +6399,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Skep Nuwe"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "Skep Nuwe"
@@ -6119,7 +6438,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6180,13 +6499,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Skep Intekening"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Skep Intekening"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6240,7 +6572,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6514,7 +6845,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6827,6 +7159,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr "Hulpbron"
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Verskuif Bezier Punte"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Skep"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7045,7 +7395,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Soek"
@@ -7076,6 +7426,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation."
msgstr "Opnoemings"
@@ -7206,8 +7561,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -7240,10 +7595,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7408,6 +7759,26 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Wissel Modus"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7428,39 +7799,46 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Verander Skikking Waarde-Soort"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Verander Skikking Waarde-Soort"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "Eienskappe"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7617,6 +7995,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Wissel Gunsteling"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7632,6 +8015,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Hernoem AutoLaai"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7645,7 +8033,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7653,18 +8041,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7761,6 +8146,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -8066,11 +8455,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -8091,171 +8475,580 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Opnoemings:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "Lede"
+msgid "No colors found."
+msgstr "Hulpbron"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstantes"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+#, fuzzy
+msgid "No constants found."
+msgstr "Konstant"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "Nie gevind nie!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "No icons found."
+msgstr "Nie gevind nie!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Hulpbron"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "GUI Tema Items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Toggle Button"
-msgstr "Wissel Modus"
+msgid "Updating the editor"
+msgstr "Toneel word Opgedateer"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Finalizing"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "Afgeskaskel"
+msgid "Filter:"
+msgstr "Eienskappe"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select by data type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "Afgeskaskel"
+msgid "Collapse types."
+msgstr "Vervang Alles"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Expand types."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Skep Vouer"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Ontkoppel"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#, fuzzy
+msgid "Import Selected"
+msgstr "Verwyder Seleksie"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Hernoem AutoLaai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Nodus Naam:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Hernoem AutoLaai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Hernoem AutoLaai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Hernoem AutoLaai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Hernoem AutoLaai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Gunstelinge:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konstant"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Skuif Gunsteling Op"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Skuif Gunsteling Op"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Hernoem AutoLaai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Rename Font Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Rename Icon Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Rename Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Afgeskaskel"
+msgid "Invalid file, not a Theme resource."
+msgstr "Ongeldige lêer, dis nie 'n oudio-bus uitleg nie."
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "GUI Tema Items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Lede"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Add Type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Add Item:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Add StyleBox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Remove Items:"
+msgstr "GUI Tema Items:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Hernoem AutoLaai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "GUI Tema Items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nodus Naam:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Ek sien..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Verander Skikking Waarde-Soort"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Lede"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Soek Vervanging Hulpbron:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Lede"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Anim Baan Hernoem"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Pas Letterkas"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Unpin this StyleBox as a main style."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Anim Voeg Baan By"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Nodus Naam:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Laai Verstek"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Override All"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Override all default type items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "Open 'n Lêer"
+msgid "Theme:"
+msgstr "Lede"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Voorskou:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Voorskou:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Stoor As"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Toggle Button"
+msgstr "Wissel Modus"
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "Afgeskaskel"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "Afgeskaskel"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Afgeskaskel"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Ongeldige lêer, dis nie 'n oudio-bus uitleg nie."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8432,6 +9225,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8780,11 +9577,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9626,8 +10418,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "Eienskappe"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9741,7 +10534,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9749,7 +10542,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9757,11 +10550,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9838,7 +10631,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr "Ongeldige naam."
#: editor/project_manager.cpp
@@ -9873,6 +10666,20 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Error opening package file, not in ZIP format."
+msgstr "Fout met oopmaak, die pakket-lêer is nie in zip format nie."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Package installed successfully!"
+msgstr "Pakket Suksesvol Geïnstalleer!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -10020,15 +10827,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -10056,7 +10859,7 @@ msgstr "Projek Bestuurder"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Projek Stigters"
#: editor/project_manager.cpp
@@ -10069,10 +10872,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Projek Stigters"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Projek Stigters"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projek Stigters"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -10082,11 +10900,25 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Projek Stigters"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Skuif Gunsteling Op"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Verwyder"
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -10094,6 +10926,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -10104,8 +10944,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Eienskappe"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10115,6 +10960,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10158,6 +11007,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10297,19 +11150,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Oorgang"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10585,6 +11439,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10754,11 +11612,29 @@ msgid "Delete node \"%s\"?"
msgstr "Skrap"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10816,6 +11692,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10864,11 +11744,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "Opnoemings"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11153,6 +12028,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "Klas:"
@@ -11228,6 +12109,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11514,6 +12399,15 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Ek sien..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11557,6 +12451,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Alle Seleksie"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11806,6 +12705,16 @@ msgstr "Gunstelinge:"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "Verander Skikking Waarde-Soort"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Verander Woordeboek Waarde"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr ""
"Ongeldige naam. Dit moet nie met bestaande ingeboude tiepename bots nie."
@@ -11921,6 +12830,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Skuif Gunsteling Op"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -12155,10 +13069,6 @@ msgstr "Deursoek Hulp"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12188,6 +13098,38 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Installeer"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Laai"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Kon nie vouer skep nie."
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Kon nie vouer skep nie."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12285,6 +13227,43 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Kon nie vouer skep nie."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12297,6 +13276,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12311,6 +13294,20 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Kon nie vouer skep nie."
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12330,11 +13327,53 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animasie lengte (in sekondes)."
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Kon nie vouer skep nie."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Vind"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Kon nie vouer skep nie."
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12365,29 +13404,57 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
+msgid "Invalid export template:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:"
+msgid "Could not write file:"
msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
-msgstr ""
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr "Kon nie vouer skep nie."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Leêr word gebêre:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Ongeldige naam."
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12741,6 +13808,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12810,12 +13884,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12865,6 +13991,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "Animasie lengte (in sekondes)."
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -13015,15 +14145,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
@@ -13031,6 +14177,33 @@ msgid "Constants cannot be modified."
msgstr ""
#, fuzzy
+#~ msgid "Package Contents:"
+#~ msgstr "Pakket Installeerder"
+
+#~ msgid "Singleton"
+#~ msgstr "EnkelHouer"
+
+#, fuzzy
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Vervang Alles"
+
+#, fuzzy
+#~ msgid "Class Options"
+#~ msgstr "Beskrywing"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Skuif AutoLaai"
+
+#, fuzzy
+#~ msgid "Expand All Properties"
+#~ msgstr "Eienskappe"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "Open 'n Lêer"
+
+#, fuzzy
#~ msgid "Search complete"
#~ msgstr "Deursoek Teks"
@@ -13046,9 +14219,6 @@ msgstr ""
#~ msgid "Pack File"
#~ msgstr "Verpak"
-#~ msgid "Not in resource path."
-#~ msgstr "Nie in hulpbron pad nie."
-
#~ msgid "Replaced %d occurrence(s)."
#~ msgstr "Het %d verskynsel(s) vervang."
@@ -13080,9 +14250,6 @@ msgstr ""
#~ msgid "Theme Properties:"
#~ msgstr "Eienskappe"
-#~ msgid "Enumerations:"
-#~ msgstr "Opnoemings:"
-
#~ msgid "Constants:"
#~ msgstr "Konstantes:"
@@ -13162,12 +14329,6 @@ msgstr ""
#~ msgid "Public Methods:"
#~ msgstr "Openbare Metodes:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "GUI Tema Items"
-
-#~ msgid "GUI Theme Items:"
-#~ msgstr "GUI Tema Items:"
-
#, fuzzy
#~ msgid "Toggle folder status as Favorite."
#~ msgstr "Wissel Gunsteling"
@@ -13190,9 +14351,6 @@ msgstr ""
#~ msgid "Move Anim Track Down"
#~ msgstr "Skuif Anim Baan Af"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Anim Baan Hernoem"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Anim Baan Verander Interpolasie"
@@ -13257,9 +14415,6 @@ msgstr ""
#~ msgid "Thanks!"
#~ msgstr "Dankie!"
-#~ msgid "Not found!"
-#~ msgstr "Nie gevind nie!"
-
#~ msgid "Replace By"
#~ msgstr "Vervang Met"
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index 6d8db6f47b..9093792ef8 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -52,12 +52,14 @@
# ILG - Game <moegypt277@gmail.com>, 2021.
# Hatim Jamal <hatimjamal8@gmail.com>, 2021.
# HASSAN GAMER - حسن جيمر <gamerhassan55@gmail.com>, 2021.
+# abubakrAlsaab <madeinsudan19@gmail.com>, 2021.
+# Hafid Talbi <atalbiie@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-07-09 14:32+0000\n"
-"Last-Translator: HASSAN GAMER - حسن جيمر <gamerhassan55@gmail.com>\n"
+"PO-Revision-Date: 2021-07-29 02:33+0000\n"
+"Last-Translator: Hafid Talbi <atalbiie@gmail.com>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/"
"godot/ar/>\n"
"Language: ar\n"
@@ -66,7 +68,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
-"X-Generator: Weblate 4.8-dev\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -571,7 +573,8 @@ msgstr "ثواني"
msgid "FPS"
msgstr "إطار خلال ثانية"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -597,7 +600,8 @@ msgstr "تكبير المحدد"
msgid "Scale From Cursor"
msgstr "تكبير من المؤشر"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "تكرير المحدد"
@@ -618,6 +622,11 @@ msgid "Go to Previous Step"
msgstr "إذهب إلى الخطوة السابقة"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "إعادة تعيين"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "تحسين الحركة"
@@ -634,6 +643,11 @@ msgid "Use Bezier Curves"
msgstr "إستعمل منحنيات بيزر"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "لصق المقاطع"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Ù…ÙØ­Ø³Ù† الحركة"
@@ -682,7 +696,7 @@ msgid "Select Tracks to Copy"
msgstr "إختر المقاطع المراد نسخها"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -768,12 +782,14 @@ msgid "Toggle Scripts Panel"
msgstr "تحديد التبويب البرمجي"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "تكبير"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -830,11 +846,9 @@ msgid "Add"
msgstr "أضÙ"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -884,6 +898,7 @@ msgstr "إشارة غير قادر على الاتصال"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -953,7 +968,8 @@ msgid "Edit..."
msgstr "تعديل..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "إذهب إلى الدالة"
#: editor/create_dialog.cpp
@@ -968,6 +984,14 @@ msgstr "تغير"
msgid "Create New %s"
msgstr "إنشاء %s جديد"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "لا نتائج من أجل \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -989,8 +1013,8 @@ msgstr "بحث:"
msgid "Matches:"
msgstr "يطابق:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1066,19 +1090,23 @@ msgid "Owners Of:"
msgstr "ملاك:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Ø­Ø°Ù Ø§Ù„Ù…Ù„ÙØ§Øª المختارة من المشروع؟ (لا يمكن استعادتها)\n"
"يمكنك إيجاد Ø§Ù„Ù…Ù„ÙØ§Øª Ø§Ù„Ù…Ø­Ø°ÙˆÙØ© ÙÙŠ سلة مهملات النظام حيث يمكنك إسترجاعها."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Ø§Ù„Ù…Ù„ÙØ§Øª التي يتم إزالتها مطلوبة من قبل موارد أخرى من اجل ان تعمل.\n"
"هل تريد إزالتها على أي حال؟ (لا تراجع)\n"
@@ -1126,7 +1154,7 @@ msgstr "Ù…ØªØµÙØ­ الموارد Ø£ÙˆØ±ÙØ§Ù†"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1251,28 +1279,41 @@ msgstr "مكونات"
msgid "Licenses"
msgstr "تراخيص"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "حدث خطأ Ø¹Ù†Ø¯ÙØªØ­ مل٠الحزمة بسبب أن المل٠ليس ÙÙŠ صيغة \"ZIP\"."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (موجود Ø¨Ø§Ù„ÙØ¹Ù„!)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "ÙŠÙكك الضغط عن الأصول"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "ÙØ´Ù„ استخراج Ø§Ù„Ù…Ù„ÙØ§Øª التالية من الحزمة:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Ùˆ %s أيضاً من Ø§Ù„Ù…Ù„ÙØ§Øª."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "تم تتبيث الحزمة بنجاح!"
#: editor/editor_asset_installer.cpp
@@ -1280,16 +1321,13 @@ msgstr "تم تتبيث الحزمة بنجاح!"
msgid "Success!"
msgstr "تم بشكل ناجح!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "محتويات الرزمة:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "تثبيت"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "مثبت الحزم"
#: editor/editor_audio_buses.cpp
@@ -1353,7 +1391,8 @@ msgid "Bypass"
msgstr "تخطي"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "إعدادات مسار الصوت"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1433,7 +1472,7 @@ msgstr "أض٠مسار"
msgid "Add a new Audio Bus to this layout."
msgstr "أض٠مسار صوت (Audio Bus) جديد إلى هذا التصميم."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1520,6 +1559,15 @@ msgid "Can't add autoload:"
msgstr "لا يمكن Ø¥Ø¶Ø§ÙØ© التحميل التلقائي:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "المل٠غير موجود."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Ø¥Ø¶Ø§ÙØ© للتحميل التلقائي"
@@ -1535,16 +1583,17 @@ msgid "Node Name:"
msgstr "إسم العقدة:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "الأسم"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Ø§Ù„ÙØ±Ø¯ÙŠØ©"
+#, fuzzy
+msgid "Global Variable"
+msgstr "إعادة تسمية Ø§Ù„Ù…ÙØªØºÙŠÙ‘ر"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "لصق Ø§Ù„Ù…ÙØ¹Ø§Ù…Ù„"
@@ -1560,7 +1609,7 @@ msgstr "جاري تخزين التعديلات المحلية..."
msgid "Updating scene..."
msgstr "ÙŠÙØ­Ø¯Ø« المشهد..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[ÙØ§Ø±Øº]"
@@ -1715,8 +1764,49 @@ msgid "Import Dock"
msgstr "رصي٠الاستيراد"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "مسح المل٠الشخصي '%s'؟ (لا تراجع)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(الحالي)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1747,15 +1837,18 @@ msgid "Enable Contextual Editor"
msgstr "مكّن المحرر السياقي Contextual"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "الخصائص المÙمكّنة:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "خصائص:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "الميزات المÙمكّنة:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "المزايا"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "الصÙو٠المÙمكّنة:"
#: editor/editor_feature_profile.cpp
@@ -1773,25 +1866,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "خطأ ÙÙŠ Ø­ÙØ¸ المل٠إلى المسار: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "غير Ù…ÙØ­Ø¯Ø¯"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "اعادة التعيين Ù„Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠØ§Øª"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "المل٠(النسخة) الحالية:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "إجعل الحالي"
+#, fuzzy
+msgid "Create Profile"
+msgstr "مسح الملÙ"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "جديد"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "إزالة البلاط"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Ø§Ù„Ù…Ù„ÙØ§Øª Ø§Ù„Ù…ØªÙˆØ§ÙØ±Ø©:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "إجعل الحالي"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "استيراد"
@@ -1800,20 +1902,22 @@ msgid "Export"
msgstr "تصدير"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Ø§Ù„Ù…Ù„ÙØ§Øª Ø§Ù„Ù…ØªÙˆØ§ÙØ±Ø©:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "المل٠(النسخة) الحالية:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "إعدادات الص٠Class"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "إعدادات الص٠(Class):"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "اسم مَل٠(profile) جديد:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "مسح الملÙ"
+msgid "New profile name:"
+msgstr "اسم مَل٠(profile) جديد:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1836,7 +1940,8 @@ msgid "Select Current Folder"
msgstr "تحديد المجلد الحالي"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "المل٠موجود، إستبدال؟"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1890,9 +1995,10 @@ msgid "Open a File or Directory"
msgstr "Ø¥ÙØªØ­ مل٠أو وجهة"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Ø­ÙØ¸"
@@ -1973,8 +2079,7 @@ msgid "Directories & Files:"
msgstr "الوجهات ÙˆØ§Ù„Ù…Ù„ÙØ§Øª:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "إستعراض:"
@@ -2045,7 +2150,7 @@ msgstr "خصائص الثÙمة"
msgid "Enumerations"
msgstr "التعدادات"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "الثوابت"
@@ -2134,7 +2239,7 @@ msgstr "دالة"
msgid "Signal"
msgstr "الإشاراة"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "ثابت"
@@ -2150,9 +2255,10 @@ msgstr "خاصية الموضوع (Theme)"
msgid "Property:"
msgstr "خاصية:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "مجموعة"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "تحديد %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2167,7 +2273,7 @@ msgid "Copy Selection"
msgstr "نسخ Ø§Ù„Ù…ÙØ­Ø¯Ø¯"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2231,7 +2337,8 @@ msgid "Imported resources can't be saved."
msgstr "لا يمكن Ø­ÙØ¸ الموارد المستوردة."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "حسنا"
@@ -2449,18 +2556,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "هل تريد Ø­ÙØ¸ التغييرات إلي'%s' قبل الإغلاق؟"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Ø­ÙØ¸Øª %s الموارد المعدلة."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "يتطلب Ø­ÙØ¸ المشهد ØªÙˆØ§ÙØ± عÙقدة رئيسة."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Ø­ÙØ¸ المشهد ك…"
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "هذه العملية لا يمكن الإكتمال من غير مشهد."
@@ -2567,14 +2679,14 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "غير قادر علي تحميل النص البرمجي Ù„Ù„Ø¥Ø¶Ø§ÙØ© من المسار: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s'. This might be due to a code "
"error in that script.\n"
"Disabling the addon at '%s' to prevent further errors."
msgstr ""
-"غير قادر علي تحميل النص البرمجي Ø§Ù„Ø¥Ø¶Ø§ÙØ¨ من المسار: '%s' يبدو أن Ø´ÙÙØ±Ø© "
-"البرمجية يوجد بها أخطاء , الرجاء مراجعة الشÙÙØ±Ø© البرمجية."
+"غير قادر علي تحميل النص البرمجي Ù„Ù„Ø¥Ø¶Ø§ÙØ© من المسار: '%s'. يبدو أنه يوجد خطأ "
+"ÙÙŠ ذلك النص البرمجي.\n"
+" تعطيل Ø§Ù„Ø¥Ø¶Ø§ÙØ© ÙÙŠ '%s' كي لا تحصل أخطاء."
#: editor/editor_node.cpp
msgid ""
@@ -2653,7 +2765,7 @@ msgstr "مسح المخطط"
msgid "Default"
msgstr "Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "أظهر ÙÙŠ مدير Ø§Ù„Ù…Ù„ÙØ§Øª"
@@ -2834,6 +2946,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Ù…ØªØµÙØ­ الموارد Ø£ÙˆØ±ÙØ§Ù†..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "إعادة تسمية المشروع"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "العودة إلى قائمة المشاريع"
@@ -2863,9 +2980,8 @@ msgstr ""
"لا تحتاج إلى تمكينه لاستخدام مصحح أخطاء GDScript محليًا."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Small Deploy with Network Filesystem"
-msgstr "نشر مصغر مع نظام شبكات Ø§Ù„Ù…Ù„ÙØ§Øª"
+msgstr "نشر مصغر مع نظام Ù…Ù„ÙØ§Øª الشبكة"
#: editor/editor_node.cpp
msgid ""
@@ -2899,35 +3015,32 @@ msgid "Visible Navigation"
msgstr "الإنتقال المرئي"
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"When this option is enabled, navigation meshes and polygons will be visible "
"in the running project."
msgstr ""
-"مجسمات التنقل والأشكال المضلعة سو٠تكون ظاهرة حينما يتم ØªÙØ¹ÙŠÙ„ هذا الإعداد."
+"عندما يكون هذا الخيار Ù…ÙØ¹Ù„,مجسمات التنقل والأشكال المضلعة سو٠تكون ظاهرة ÙÙŠ "
+"المشروع المشغل."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Synchronize Scene Changes"
msgstr "مزامنة تغييرات المشهد"
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"When this option is enabled, any changes made to the scene in the editor "
"will be replicated in the running project.\n"
"When used remotely on a device, this is more efficient when the network "
"filesystem option is enabled."
msgstr ""
-"حينما يكون هذا الإعداد Ù…ÙÙØ¹Ù„ØŒ أي تغيير يحدث ÙÙŠ المشهد من خلال Ø§Ù„Ù…ÙØ¹Ø¯Ù„ سو٠يتم "
+"حينما يكون هذا الخيار Ù…ÙÙØ¹Ù„ØŒ أي تغيير يحدث ÙÙŠ المشهد من خلال Ø§Ù„Ù…ÙØ¹Ø¯Ù„ سو٠يتم "
"تطبيقة ÙÙŠ اللعبة العاملة.\n"
"حينما يتم إستخدامه عن بعد علي جهاز، سيكون هذا أكثر ÙØ¹Ø§Ù„ية مع نظام شبكات "
"Ø§Ù„Ù…Ù„ÙØ§Øª."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Synchronize Script Changes"
-msgstr "مزامنة تغييرات الكود"
+msgstr "مزامنة تغييرات النص البرمجي"
#: editor/editor_node.cpp
#, fuzzy
@@ -2994,20 +3107,24 @@ msgstr "إدارة قوالب التصدير..."
msgid "Help"
msgstr "مساعدة"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "مستندات الإنترنت"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "ÙØªØ­ الوثائق"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "الأسئلة و الأجوبة"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "إرسال تقرير عن خلل برمجي"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "إرسال مستندات التغذية الراجعة Feedback"
@@ -3016,12 +3133,13 @@ msgid "Community"
msgstr "المجتمع"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "حول"
#: editor/editor_node.cpp
msgid "Support Godot Development"
-msgstr ""
+msgstr "إدعم تطوير محرك غو-دوت"
#: editor/editor_node.cpp
msgid "Play the project."
@@ -3113,6 +3231,16 @@ msgid "Manage Templates"
msgstr "إدارة القوالب"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "تثبيت من ملÙ"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "حدد مصدر ميش:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3149,7 +3277,7 @@ msgstr "إستيراد القوالب من مل٠مضغوط بصيغة Zip"
msgid "Template Package"
msgstr "رزمة القوالب"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "تصدير المكتبة"
@@ -3192,6 +3320,11 @@ msgid "Select"
msgstr "حدد"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "تحديد المجلد الحالي"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "ÙØªØ­ Ø§Ù„Ù…ÙØ­Ø±Ø± 2D"
@@ -3223,6 +3356,11 @@ msgstr "تحذيرات!"
msgid "No sub-resources found."
msgstr "لا مصدر للسطح تم تحديده."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "لا مصدر للسطح تم تحديده."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "ÙŠÙنشئ مستعرضات الميش"
@@ -3247,33 +3385,34 @@ msgstr "Ø§Ù„Ø¥Ø¶Ø§ÙØ§Øª Ø§Ù„Ù…ÙØ«Ø¨ØªØ©:"
msgid "Update"
msgstr "تحديث"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "النسخة:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "المالك:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "الحالة:"
+#, fuzzy
+msgid "Author"
+msgstr "المالكون"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "تحرير:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "الحالة"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "قياس:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "وقت الاطار (ثانية)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "متوسط الوقت (ثانية)"
#: editor/editor_profiler.cpp
@@ -3293,6 +3432,16 @@ msgid "Self"
msgstr "ذاتي"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "إطار #:"
@@ -3334,13 +3483,6 @@ msgstr "RID غير صالح"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"يلا يتطابق نوع المورد المختار (%s) مع أي نوع متوقع لأجل هذه الخاصية (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3364,40 +3506,6 @@ msgid "Pick a Viewport"
msgstr "اختر إطار عرض"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "نص برمجي جديد"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "ÙØªØ­ الكود البرمجي"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "%s جديدة"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "إجعلة مميزاً"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "لصق"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "تحويل إلي %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "العÙقدة المختارة ليست إطار عرض Viewport!"
@@ -3426,6 +3534,48 @@ msgstr "قيمة جديدة:"
msgid "Add Key/Value Pair"
msgstr "Ø¥Ø¶Ø§ÙØ© زوج Ù…ÙØªØ§Ø­/قيمة"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"يلا يتطابق نوع المورد المختار (%s) مع أي نوع متوقع لأجل هذه الخاصية (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "إجعلة مميزاً"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "لصق"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "تحويل إلي %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "%s جديدة"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "نص برمجي جديد"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "ÙØªØ­ الكود البرمجي"
+
#: editor/editor_run_native.cpp
#, fuzzy
msgid ""
@@ -3461,7 +3611,8 @@ msgid "Did you forget the '_run' method?"
msgstr "هل نسيت الطريقة '_run' ؟"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"امسك Ctrl للتدوير للأعداد الصحيحة. اضغط على Shift لإجراء تغييرات أكثر دقة."
@@ -3482,115 +3633,69 @@ msgid "Import From Node:"
msgstr "إستيراد من عقدة:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "إعادة التحميل"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "إلغاء التثبيت"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(مثبت)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "تنزيل"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "قوالب التصدير الرسمية غير مدعومة لأجل البناء الخاص بالتطوير."
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Ù…Ùقود)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(الحالي)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "لا يوجد مل٠'%s'."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "يستقبل المرايا، من ÙØ¶Ù„Ùƒ إنتظر..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "ازالة نسخة القالب '%s'؟"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "لم نستطع ÙØªØ­ المل٠المضغوط المÙورد."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "صيغة غير صالحة ل version.txt داخل القالب: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "لا مل٠version.txt تم إيجاده داخل القالب."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "خطأ ÙÙŠ إنشاء المسار للقوالب:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "يستخرج قوالب التصدير"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "يستورد:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "هناك خطأ ÙÙŠ جلب قائمة المرايا mirrors."
+msgid "Error requesting URL:"
+msgstr "خطأ ÙÙŠ طلب الرابط:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"حدث خطأ ÙÙŠ ÙÙƒ (ØªÙØ³ÙŠØ± parsing) مل٠JSON الخاص بقائمة المرايا. من ÙØ¶Ù„Ùƒ بلّغ عن "
-"هذه المشكلة!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "يتصل Ø¨Ø§Ù„Ø³Ø±ÙØ±..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"لا روابط تحميل تم إيجادها لهذه النسخة. التحميل المباشر Ù…ØªÙˆÙØ± Ùقط للنسخ "
-"الرسمية."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "لا يمكن حل أسم Ø§Ù„Ù…ÙØ¶ÙŠÙ:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "لا يمكن الحل."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "لا يمكن الإتصال Ø¨Ø§Ù„Ù…ÙØ¶ÙŠÙ:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "لا يمكن الإتصال."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "لا ردّ من Ø§Ù„Ù…ÙØ¶ÙŠÙ:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "لا يوجد إستجابة."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "ÙØ´Ù„ الطلب."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "اعادة توجيه حلقة التكرار."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "ÙØ´Ù„ الطلب٫ السبب هو اعادة التحويل مرات اكثر من اللازم"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "ÙØ´Ù„:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "ÙØ´Ù„ الطلب."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "التحميل إكتمل."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3605,12 +3710,27 @@ msgstr ""
"يمكن إيجاد أرشي٠القوالب المعطوبة ÙÙŠ '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "خطأ ÙÙŠ طلب الرابط:"
+msgid "Error getting the list of mirrors."
+msgstr "هناك خطأ ÙÙŠ جلب قائمة المرايا mirrors."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "يتصل Ø¨Ø§Ù„Ø³Ø±ÙØ±..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"حدث خطأ ÙÙŠ ÙÙƒ (ØªÙØ³ÙŠØ± parsing) مل٠JSON الخاص بقائمة المرايا. من ÙØ¶Ù„Ùƒ بلّغ عن "
+"هذه المشكلة!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"لا روابط تحميل تم إيجادها لهذه النسخة. التحميل المباشر Ù…ØªÙˆÙØ± Ùقط للنسخ "
+"الرسمية."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3655,44 +3775,138 @@ msgid "SSL Handshake Error"
msgstr "خطأ مطابقة ssl"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "لم نستطع ÙØªØ­ المل٠المضغوط المÙورد."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "صيغة غير صالحة ل version.txt داخل القالب: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "لا مل٠version.txt تم إيجاده داخل القالب."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "خطأ ÙÙŠ إنشاء المسار للقوالب:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "يستخرج قوالب التصدير"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "يستورد:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "ازالة نسخة القالب '%s'؟"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "يتم تÙكيك مصادر بناء أندرويد Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "‌تصدير مدير القوالب"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "النسخة الحالية:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "النسخة Ø§Ù„Ù…ÙØ«Ø¨ØªØ©:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Ø§ÙØªØ­ الملÙ"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "إلغاء التثبيت"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "القيمة المبدئية للعداد"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "خطأ ÙÙŠ التحميل"
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "قوالب التصدير الرسمية غير مدعومة لأجل البناء الخاص بالتطوير."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "تثبيت من ملÙ"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "مسح القالب"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "إستيراد القوالب من مل٠مضغوط بصيغة Zip"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "إلغاء"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "حدد مل٠القالب"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "لم نستطع ÙØªØ­ المل٠المضغوط المÙورد."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "إدارة قوالب التصدير لغودوت"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "النسخة Ø§Ù„Ù…ÙØ«Ø¨ØªØ©:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "‌تصدير مدير القوالب"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "إلغاء التثبيت"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "حدد مل٠القالب"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "تنزيل القوالب"
+msgid "Godot Export Templates"
+msgstr "إدارة قوالب التصدير لغودوت"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "حدد Ø§Ù„Ø³Ø±ÙØ± من القائمة: (Shift+Click: Ù„Ù„ÙØªØ­ ÙÙŠ Ø§Ù„Ù…ØªØµÙØ­)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3819,29 +4033,62 @@ msgstr "ÙØªØ­ النص البرمجي..."
msgid "New Resource..."
msgstr "مصدر جديد..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "توسيع الكل"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "طوي الكل"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "تكرير..."
+#, fuzzy
+msgid "Sort files"
+msgstr "بحث Ø§Ù„Ù…Ù„ÙØ§Øª"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "نقل الي سلة Ø§Ù„Ù…Ø­Ø°ÙˆÙØ§Øª"
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "آخر ما تم تعديله"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "آخر ما تم تعديله"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "تكرير..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "إعادة تسمية..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "المجلد/المل٠السابق"
@@ -3925,10 +4172,6 @@ msgstr "ابحث..."
msgid "Replace..."
msgstr "استبدال..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "إلغاء"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "إيجاد: "
@@ -4149,53 +4392,55 @@ msgid "Failed to load resource."
msgstr "ÙØ´Ù„ تحميل المورد."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "توسيع كل الخصائص"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "خاصيات"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "طي كل الخصائص"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Ø­ÙØ¸ باسم..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "خاصيات"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "إنسخ Ø§Ù„Ù…ÙØ¹Ø§Ù…Ù„"
+msgid "Make Sub-Resources Unique"
+msgstr "إجعل الموارد الجانبية مميزة"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "تحرير Ø­Ø§ÙØ¸Ø© الموارد"
+msgid "Create a new resource in memory and edit it."
+msgstr "انشاء مورد جديد ÙÙ‰ الذاكرة Ùˆ تعديله"
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "نسخ الموارد"
+msgid "Load an existing resource from disk and edit it."
+msgstr "تحميل مورد موجود مسبقا من الذاكرة وتعديله."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "إجعله Ù…ÙØ¯Ù…ج"
+msgid "Save the currently edited resource."
+msgstr "Ø­ÙØ¸ المورد الذي يتم تعديله حاليا."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "إجعل الموارد الجانبية مميزة"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Ø­ÙØ¸ باسم..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Ø¥ÙØªØ­ ÙÙŠ المساعدة"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "ليس ÙÙŠ مسار الموارد."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "انشاء مورد جديد ÙÙ‰ الذاكرة Ùˆ تعديله"
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "تحرير Ø­Ø§ÙØ¸Ø© الموارد"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "تحميل مورد موجود مسبقا من الذاكرة وتعديله."
+msgid "Copy Resource"
+msgstr "نسخ الموارد"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Ø­ÙØ¸ المورد الذي يتم تعديله حاليا."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "إجعله Ù…ÙØ¯Ù…ج"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4210,14 +4455,24 @@ msgid "History of recently edited objects."
msgstr "تاريخ العناصر المعدلة حالياً."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "خصائص العنصر."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "ÙØªØ­ الوثائق"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "ÙØªØ­ الوثائق"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "خصائص التصÙية"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "خصائص العنصر."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "التغييرات ربما تÙÙقد!"
@@ -4245,6 +4500,15 @@ msgstr "اسم Ø§Ù„Ø¥Ø¶Ø§ÙØ©:"
msgid "Subfolder:"
msgstr "المجلد Ø§Ù„ÙØ±Ø¹ÙŠ:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "المالك:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "النسخة:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "اللغة:"
@@ -4452,7 +4716,8 @@ msgid "Blend:"
msgstr "الدمج:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "لقد تم تغيير المَعلم"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4671,6 +4936,11 @@ msgid "Animation"
msgstr "رسوم متحركة"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "جديد"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "تحرير الانتقالات..."
@@ -5013,10 +5283,18 @@ msgid "View Files"
msgstr "إظهار Ø§Ù„Ù…Ù„ÙØ§Øª"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "تنزيل"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "خطأ ÙÙŠ الإتصال، من ÙØ¶Ù„Ùƒ حاول مجدداً."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "لا يمكن الإتصال."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "لا يمكن الإتصال Ø¨Ø§Ù„Ù…ÙØ¶ÙŠÙ:"
@@ -5025,16 +5303,20 @@ msgid "No response from host:"
msgstr "لا ردّ من Ø§Ù„Ù…ÙØ¶ÙŠÙ:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "لا يوجد إستجابة."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "لا يمكن حل أسم Ø§Ù„Ù…ÙØ¶ÙŠÙ:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "ÙØ´Ù„ إتمام الطلب٫ الرمز الذي تم إرجاعه:"
+msgid "Can't resolve."
+msgstr "لا يمكن الحل."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "ÙØ´Ù„ الطلب."
+msgid "Request failed, return code:"
+msgstr "ÙØ´Ù„ إتمام الطلب٫ الرمز الذي تم إرجاعه:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5061,6 +5343,10 @@ msgid "Timeout."
msgstr "انتهت المهلة."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "ÙØ´Ù„:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "تجزئة تحميل سيئة، من المتوقع أن يكون المل٠قد تم العبث به."
@@ -5161,8 +5447,12 @@ msgid "All"
msgstr "الكل"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "لا نتائج من أجل \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5204,6 +5494,10 @@ msgstr "جاري التحميل..."
msgid "Assets ZIP File"
msgstr "مل٠أصول مضغوط"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
#, fuzzy
msgid ""
@@ -5215,9 +5509,10 @@ msgstr ""
"الضوء المعدة مسبقا."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"لايوجد ميش لكي يتم تجهيزة. تاكد من انه يحتوي على Ù…Ù†ÙØ° UV2 Ùˆ ان زر الضوء "
"'المعد' Ù…ÙØ¹Ù„."
@@ -5342,7 +5637,7 @@ msgstr "تعديل حجم العقدة \"Node2D \"%s إلى (s, %s%)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Resize Control \"%s\" to (%d, %d)"
-msgstr ""
+msgstr "تغيير حجم عنصر التحكم \"٪ s\" إلى (٪ d،٪ d)"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -5464,9 +5759,10 @@ msgstr "تغيير المرتكزات"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"تجاوز كاميرا اللعبة.\n"
"تجاوز كاميرا اللعبة عن طريق كاميرا إطار العرض ÙÙŠ المحرر."
@@ -5474,11 +5770,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"تجاوز كاميرا اللعبة.\n"
-"ليس هناك لعبة منمذجة قيد التشغيل."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5531,6 +5826,7 @@ msgid ""
msgstr "تحذير: Ø§Ù„Ø£Ø·ÙØ§Ù„ يأخذون موقعهم وحجمهم من خلال الوالدين Ùقط."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5542,20 +5838,32 @@ msgid "Select Mode"
msgstr "تحديد الوضع"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "سحب: للتدوير"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "ازالة الكائن المحدد او الإنتقال المحدد."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+سحب: تحريك"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
-msgstr "إضغط 'ر' لكي تغيير المحور، 'Shift+ر' لسحب المحور (ÙÙŠ حين التحرك)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "ازالة الكائن المحدد او الإنتقال المحدد."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+"أظهر قائمة من كل العناصر ÙÙŠ المنطقة المضغوطة\n"
+"(تماماً مثل Alt+زر Ø§Ù„ÙØ£Ø±Ø© الأيمن ÙÙŠ وضع التحديد)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+زر Ø§Ù„ÙØ£Ø±Ø© الأيمن: تحديد قائمة العمق"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5792,6 +6100,16 @@ msgid "Clear Pose"
msgstr "إخلاء الوضع"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Ø¥Ø¶Ø§ÙØ© عÙقدة"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "نمذجة المشهد(المشاهد)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "ضاع٠خطوة الشبكة ب 2"
@@ -5804,6 +6122,52 @@ msgid "Pan View"
msgstr "إظهار شامل"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "تصغير"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "تصغير"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "تصغير"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "تصغير"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "تصغير"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "تصغير"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "أض٠%s"
@@ -6046,6 +6410,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "لم يتم إنشاء شكل محدب تصادمي وحيد."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "أنشئ شكل محدب وحيد"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "أنشئ شكل محدب وحيد"
@@ -6078,7 +6447,8 @@ msgid "No mesh to debug."
msgstr "لا ميش لتصحيحة."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "النموذج ليس لديه UV ÙÙŠ هذا الطابق"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6143,13 +6513,27 @@ msgstr ""
"هذا هو الخيار الأسرع (لكنه الأقل دقة) للكش٠عن وقوع التصادم."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "إنشاء شقيق تصادم محدب Ù…ÙØ±Ø¯"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "إنشاء أشقاء تصادم محدب متعددة"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"إنشاء شكل تصادمي Ù…ÙØ¶Ù„عي الهيئة.\n"
"هذا الخيار \\Ù…ÙØªÙˆØ³Ø· الأداء بين الخيارين أعلاه."
@@ -6211,7 +6595,6 @@ msgid "Mesh Library"
msgstr "مكتبة المجسم"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Ø¥Ø¶Ø§ÙØ© عنصر"
@@ -6484,7 +6867,8 @@ msgid "Close Curve"
msgstr "إغلاق المنحنى"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "الإعدادات"
@@ -6799,6 +7183,26 @@ msgstr "تحميل المورد"
msgid "ResourcePreloader"
msgstr "مورد محمل Ø³Ù„ÙØ§Ù‹"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "القلب Ø£Ùقياً"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "عدد النقاط المولدة:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "عدد النقاط المولدة:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "القلب Ø£Ùقياً"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "لا تملك شجرة الرسومات المتحركة مساراً لمشغل الرسومات المتحركة"
@@ -7004,7 +7408,7 @@ msgstr "تشغيل"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "بحث"
@@ -7035,6 +7439,11 @@ msgid "Debug with External Editor"
msgstr "تنقيح الأخطاء ÙÙŠ محرر خارجي"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "مستندات الإنترنت"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Ø§ÙØªØ­ مستندات غودوت على الشبكة."
@@ -7160,8 +7569,8 @@ msgstr "التوجه إلى"
msgid "Cut"
msgstr "قص"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "تحديد الكل"
@@ -7194,10 +7603,6 @@ msgid "Unfold All Lines"
msgstr "كش٠جميع الخطوط"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "استنساخ أدناه"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "رمز التمام"
@@ -7351,6 +7756,28 @@ msgid "View Plane Transform."
msgstr "إظهار تحولات المستوى."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "لا شيء"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "وضع التدوير"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "الترجمة:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "تكبير/تصغير:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "ÙŠÙØ­Ø¬Ù…: "
@@ -7371,42 +7798,54 @@ msgid "Animation Key Inserted."
msgstr "Ø£ÙØ¯Ø®Ù„ Ù…ÙØªØ§Ø­ الرسوم المتحركة."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "حدّة"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "الإنحرا٠Yaw"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "الحجم"
+#, fuzzy
+msgid "Size:"
+msgstr "الحجم: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "كائنات مرسومة"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "ØªÙØºÙŠØ±Ø§Øª المادة"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "تغيرات Ø§Ù„Ù…ÙØ¸Ù„Ù„"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "تغيرات السطح"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "رسم الاستدعاءات"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "القمم"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "الواجهة العلوية."
@@ -7559,6 +7998,11 @@ msgid "Freelook Slow Modifier"
msgstr "Ù…ÙØ¹Ø¯Ù‘Ù„ تباطؤ الرؤية Ø§Ù„Ø­ÙØ±Ø©"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "غيّر حجم الكاميرا"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "تدوير الرؤية مقÙول"
@@ -7566,6 +8010,7 @@ msgstr "تدوير الرؤية مقÙول"
msgid ""
"To zoom further, change the camera's clipping planes (View -> Settings...)"
msgstr ""
+"للتكبير بشكل أكبر ، قم بتغيير مستويات اقتصاص الكاميرا (عرض -> الإعدادات ...)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
@@ -7576,6 +8021,11 @@ msgstr ""
"لا يمكن الاعتماد على تلك القيمة كمؤشر لأداء اللعبة."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "تحويل إلي %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Ù†Ø§ÙØ°Ø© XForm"
@@ -7595,7 +8045,8 @@ msgstr ""
"\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "محاذاة العÙقد إلى الأرضية"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7603,16 +8054,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "لم يتم إيجاد أرضية صÙلبة لمحاذاة ما تم اختياره إليها."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"السحب: تدوير.\n"
-"Alt+السحب: تحريك.\n"
-"Alt+ كبسة الزر الأيمن Ù„Ù„ÙØ£Ø±Ø©RMB : اختيار قائمة العÙمق"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "استخدام الحيّز المحلي"
@@ -7621,6 +8062,10 @@ msgid "Use Snap"
msgstr "استخدام المحاذاة"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "الواجهة View السÙلية"
@@ -7714,6 +8159,11 @@ msgid "View Grid"
msgstr "إظهار الشبكة"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "إعدادات إطار العرض"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "اعدادات..."
@@ -8006,11 +8456,6 @@ msgid "Snap Mode:"
msgstr "وضع المحاذاة:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "لا شيء"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "محاذاة البكسل"
@@ -8031,165 +8476,603 @@ msgid "Step:"
msgstr "الخطوة:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Ø§Ù„ÙØ§ØµÙ„:"
+#, fuzzy
+msgid "Separation:"
+msgstr "التعدادات:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "منطقة النقش TextureRegion"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Ø¥Ø¶Ø§ÙØ© جميع العناصر"
+#, fuzzy
+msgid "Colors"
+msgstr "اللون"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Ø¥Ø¶Ø§ÙØ© الجميع"
+#, fuzzy
+msgid "Fonts"
+msgstr "الخط"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "الأيقونة"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "الأسلوب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "لا مصدر للسطح تم تحديده."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "الثوابت"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "ثابت اللون."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "لم يوجد!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "لم يوجد!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "لا مصدر للسطح تم تحديده."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "استيراد الموضوع Theme"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "خروج من Ø§Ù„Ù…ÙØ¹Ø¯Ù„ØŸ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "جاري التحليل"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "تنقيات:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "اختر عÙقدة"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "اختر عنصر إعدادات بدايةً!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "اختر عنصر إعدادات بدايةً!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "اختر عنصر إعدادات بدايةً!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "اختر عنصر إعدادات بدايةً!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "اختر عنصر إعدادات بدايةً!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "طوي الكل"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "توسيع الكل"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "حدد مل٠القالب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "إختر النقاط"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "تحديد الكل"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "إستيراد مشهد"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "إزالة جميع العناصر"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "مسح الكل"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "إزالة عنصر"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "تحرير الموضوع"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "إزالة جميع العناصر"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "إزالة جميع العناصر"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "قائمة تحرير الموضوع."
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "إزالة جميع العناصر"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "إزالة جميع العناصر"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Ø¥Ø¶Ø§ÙØ© بنود للصنÙ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Ø¥Ø¶Ø§ÙØ© بنود للصنÙ"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Ø¥Ø¶Ø§ÙØ© عنصر"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Ø¥Ø¶Ø§ÙØ© عنصر"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Ø¥Ø¶Ø§ÙØ© جميع العناصر"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "حذ٠بنود من الصنÙ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "حذ٠بنود من الصنÙ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "إعادة تسمية العÙقدة"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "إعادة تسمية العÙقدة"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "مسح العنصر المحدد"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "مل٠خطأ، ليس مل٠نسق مسار الصوت."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "إدارة القوالب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "عنصر قابل للتعديل"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "نوع:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "نوع:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Ø¥Ø¶Ø§ÙØ© عنصر"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Ø¥Ø¶Ø§ÙØ© جميع العناصر"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "إزالة عنصر"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "حذ٠بنود من الصنÙ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "إنشاء قالب ÙØ§Ø±Øº"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "حذ٠بنود من الصنÙ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "إنشاء قالب Ù…ÙØ­Ø±Ø± ÙØ§Ø±Øº"
+msgid "Remove All Items"
+msgstr "إزالة جميع العناصر"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "إنشاء مستمد من موضوع Theme المحرر الحالي"
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "عناصر ثيم واجهة المستخدم"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "إسم العقدة:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "استيراد الموضوع Theme"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "تحرير الموضوع"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "حذ٠المورد"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "استيراد الموضوع Theme"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "تغيير إسم مسار التحريك"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "إعادة تسمية Ø§Ù„Ø¯ÙØ¹Ø©"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "يتجاوز"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "النوع"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Ø¥Ø¶Ø§ÙØ© عنصر"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "نوع العÙقدة"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "تحميل Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "يتجاوز"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "الموضوع"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "إدارة قوالب التصدير..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "عرض"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "تحديث Ø§Ù„Ù…ÙØ¹Ø§ÙŠÙ†Ø©"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "حدد مصدر ميش:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "زر التبديل"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "زر معطّل"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "عنصر"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "عنصر معطّل"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Ùَعل العنصر"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "عنصر Ù…ÙÙØ¹Ù„"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "عنصر Ø®Ùيار"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "عنصر Ù…ÙÙØ¹Ù„ اختياري"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Ø§Ù„ÙØ§ØµÙ„ Ø§Ù„Ù…ÙØ³Ù…ّى."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "القائمة Ø§Ù„ÙØ±Ø¹ÙŠØ©"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "العنصر Ø§Ù„ÙØ±Ø¹ÙŠ 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "العنصر Ø§Ù„ÙØ±Ø¹ÙŠ 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "يملك"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "العديد"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "تعديل الخط معطّل"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "علامة التبويب 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "علامة التبويب 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "علامة التبويب 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "عنصر قابل للتعديل"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "الشجرة Ø§Ù„ÙØ±Ø¹ÙŠØ©"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "يمتلك، خيارات، عديدة"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "نوع البيانات:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "الأيقونة"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "الأسلوب"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "الخط"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "اللون"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "مل٠خطأ، ليس مل٠نسق مسار الصوت."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "مل٠الثيم"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8363,6 +9246,10 @@ msgid "Priority"
msgstr "الأولية"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "الأيقونة"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "ترتيبية المحور Z"
@@ -8698,11 +9585,6 @@ msgid "Commit Changes"
msgstr "اقترا٠التعديلا"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "الحالة"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "إظهار آخر تعديلات المل٠قبل قبولهم ÙÙŠ آخر نسخة"
@@ -9536,7 +10418,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "A reference to an existing uniform."
-msgstr ""
+msgstr "إشارة إلى زي موحد موجود."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "(Fragment/Light mode only) Scalar derivative function."
@@ -9600,7 +10482,8 @@ msgid "VisualShader"
msgstr "Ø§Ù„Ù…ÙØ¸Ù„Ù„ البصري"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "تحرير الخاصية البصرية"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9726,7 +10609,8 @@ msgid "Script"
msgstr "النص البرمجي"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "وضع تصدير النص البرمجي:"
#: editor/project_export.cpp
@@ -9734,19 +10618,21 @@ msgid "Text"
msgstr "نص"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Ù…ÙØ­ÙˆÙ„Ø© برمجياً"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "مشÙّرة (قدّم Ø§Ù„Ù…ÙØªØ§Ø­ أدناه)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Ù…ÙØªØ§Ø­ تشÙير غير صالح (ينبغي أن يكون طوله 46 حرÙ)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Ù…ÙØªØ§Ø­ تشÙير النص البرمجي (256-bits Ùƒ hex ):"
#: editor/project_export.cpp
@@ -9819,7 +10705,8 @@ msgid "Imported Project"
msgstr "المشاريع المستوردة"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "اسم مشروع غير صالح."
#: editor/project_manager.cpp
@@ -9854,6 +10741,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "لا قدرة على إنشاء project.godot ÙÙŠ مسار المشروع."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "حدث خطأ Ø¹Ù†Ø¯ÙØªØ­ مل٠الحزمة بسبب أن المل٠ليس ÙÙŠ صيغة \"ZIP\"."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "ÙØ´Ù„ استخراج Ø§Ù„Ù…Ù„ÙØ§Øª التالية من الحزمة:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "تم تتبيث الحزمة بنجاح!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "إعادة تسمية المشروع"
@@ -9903,7 +10802,7 @@ msgstr "OpenGL ES 3.0"
#: editor/project_manager.cpp
msgid "Not supported by your GPU drivers."
-msgstr ""
+msgstr "غير مدعوم من قبل برامج تشغيل GPU(اجهزة اارسوم) الخاصة بك."
#: editor/project_manager.cpp
msgid ""
@@ -10027,20 +10926,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "هل أنت متأكد من ÙØªØ­ %d مشاريع مرّة واحدة؟"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"إزالة %d مشاريع من القائمة؟\n"
-"لن يتم تعديل محتويات Ù…ÙØ¬Ù„دات المشاريع."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "اختر جهازاً من القائمة"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"إزالة هذا المشروع من القائمة؟\n"
-"لن يتم تعديل محتوى Ù…ÙØ¬Ù„د المشروع."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "اختر جهازاً من القائمة"
#: editor/project_manager.cpp
msgid ""
@@ -10072,7 +10965,8 @@ msgid "Project Manager"
msgstr "مدير المشروع"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "المشاريع"
#: editor/project_manager.cpp
@@ -10085,10 +10979,25 @@ msgid "Last Modified"
msgstr "آخر ما تم تعديله"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "تصدير المشروع"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "إعادة تسمية المشروع"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "ÙØ­Øµ"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "المشاريع"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "اختر Ù…ÙØ¬Ù„داً Ù„ÙØ­ØµÙ‡"
@@ -10097,18 +11006,41 @@ msgid "New Project"
msgstr "مشروع جديد"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "المشاريع المستوردة"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "إعادة تسمية المشروع"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "إزالة المÙقود"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "القوالب"
+msgid "About"
+msgstr "حول"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "مكتبة المÙلحقات"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "إعادة التشغيل الآن"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "مسح الكل"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "غير قادر على تشغيل المشروع"
@@ -10121,8 +11053,14 @@ msgstr ""
"هل ترغب ÙÙŠ استكشا٠مشاريع الأمثلة الرسمية ÙÙŠ مكتبة المÙلحقات؟"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "خصائص التصÙية"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10135,6 +11073,10 @@ msgid "Key "
msgstr "زر "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "زر Joy"
@@ -10178,6 +11120,10 @@ msgstr "جميع الأجهزة"
msgid "Device"
msgstr "الجهاز"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "اضغط زراً..."
@@ -10319,7 +11265,8 @@ msgid "Override for Feature"
msgstr "التجاوز للميزة"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Ø¥Ø¶Ø§ÙØ© ترجمة"
#: editor/project_settings_editor.cpp
@@ -10327,11 +11274,13 @@ msgid "Remove Translation"
msgstr "إزالة الترجمة"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Ø¥Ø¶Ø§ÙØ© مسار Ù…ÙØ¹Ø§Ø¯ تعيينه Remapped"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "مورد إعادة رسم الخريطة ÙŠÙØ¶ÙŠÙ إعادة رسم خريطة"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "مورد إعادة رسم الخريطة ÙŠÙØ¶ÙŠÙ إعادة رسم خريطة"
#: editor/project_settings_editor.cpp
@@ -10604,6 +11553,10 @@ msgid "Post-Process"
msgstr "المعالجة-اللاحقة Post-Process"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "الأسلوب"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Ø§Ø­ØªÙØ¸"
@@ -10769,12 +11722,30 @@ msgid "Delete node \"%s\"?"
msgstr "حذ٠العقدة \"%s\"؟"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "لا يمكن التنÙيذ مع العÙقدة الرئيسة (الجذر)."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "لا يمكن تنÙيذ هذا الإجراء على المشاهد المÙنمذجة."
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10834,6 +11805,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "لا يمكن تنÙيذ الإجراء على عÙقد يرثها المشهد الحالي!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "لا يمكن تنÙيذ هذا الإجراء على المشاهد المÙنمذجة."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "إلحاق نص برمجي"
@@ -10881,10 +11856,6 @@ msgid "Load As Placeholder"
msgstr "تحميله كعنصر نائب"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "ÙØªØ­ الوثائق"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10959,6 +11930,9 @@ msgid ""
"every time it updates.\n"
"Switch back to the Local scene tree dock to improve performance."
msgstr ""
+"إذا تم تحديده ØŒ ÙØ³ÙŠØ¤Ø¯ÙŠ Ø´Ø¬Ø±Ø© المشهد إلى توق٠المشروع ÙÙŠ كل مرة يتم Ùيها "
+"تحديثه.\n"
+"قم بالتبديل مرة أخرى إلى رصي٠شجرة المشهد المحلي لتحسين الأداء."
#: editor/scene_tree_dock.cpp
msgid "Local"
@@ -11173,6 +12147,12 @@ msgstr ""
"تعديلها باستخدام Ù…ÙØ­Ø±Ø± خارجي."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "اسم Ø§Ù„ÙØ¦Ø©:"
@@ -11241,6 +12221,10 @@ msgid "Copy Error"
msgstr "خطأ ÙÙŠ نسخ"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "الذاكرة العشوائية للÙيديو"
@@ -11525,6 +12509,16 @@ msgstr "نموذج القاموس غير صالح (Ø£ØµÙ†Ø§Ù ÙØ±Ø¹ÙŠØ© غير
msgid "Object can't provide a length."
msgstr "لا يمكن للكائن أن يمنح طولاً."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "تصدير مكتبة الميش"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "تصدير..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "التبويب التالي"
@@ -11566,6 +12560,11 @@ msgid "GridMap Paint"
msgstr "تلوين (طلاء) خريطة الشبكة GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "تحديد الملئ خريطة-الشبكة"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "خريطة الشبكة"
@@ -11657,11 +12656,11 @@ msgstr ""
#: modules/lightmapper_cpu/lightmapper_cpu.cpp
msgid "Begin Bake"
-msgstr ""
+msgstr "ابدأ الخبز (دمج تاثير الضوء ÙÙŠ الصورة )"
#: modules/lightmapper_cpu/lightmapper_cpu.cpp
msgid "Preparing data structures"
-msgstr ""
+msgstr "تحضير هياكل البيانات"
#: modules/lightmapper_cpu/lightmapper_cpu.cpp
#, fuzzy
@@ -11817,6 +12816,16 @@ msgid "Add Output Port"
msgstr "Ø£Ø¶Ù Ù…Ù†ÙØ° إخراج"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "تغيير النوع"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "غيّر اسم Ù…Ù†ÙØ° Ø§Ù„Ù…ÙØ¯Ø®Ù„ات"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "تجاوز لدالة Ù…ÙØ¯Ù…جة موجودة مسبقًا."
@@ -11929,6 +12938,11 @@ msgid "Add Preload Node"
msgstr "Ø¥Ø¶Ø§ÙØ© عÙقدة مسبقة التحميل"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Ø¥Ø¶Ø§ÙØ© عÙقدة"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Ø¥Ø¶Ø§ÙØ© عÙقدة (عÙقد) من الشجرة"
@@ -12158,10 +13172,6 @@ msgstr "بحث VisualScript"
msgid "Get %s"
msgstr "جلب %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "تحديد %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "اسم Ø§Ù„Ø±ÙØ²Ù…Ø© Ù…Ùقود."
@@ -12191,10 +13201,44 @@ msgid "Select device from the list"
msgstr "اختر جهازاً من القائمة"
#: platform/android/export/export.cpp
-msgid "Unable to find the 'apksigner' tool."
+msgid "Running on %s"
msgstr ""
#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "تصدير الكÙÙ„"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "إلغاء التثبيت"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "يستقبل المرايا، من ÙØ¶Ù„Ùƒ إنتظر..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "لا يمكن بدء عملية جانبية!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "تشغيل النص البرمجي Ø§Ù„Ù…ÙØ®ØµØµ..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "لا يمكن إنشاء المجلد."
+
+#: platform/android/export/export.cpp
+msgid "Unable to find the 'apksigner' tool."
+msgstr "تعذر العثور على أداة توقيع تطبيق اندرويد\"apksigner\"."
+
+#: platform/android/export/export.cpp
msgid ""
"Android build template not installed in the project. Install it from the "
"Project menu."
@@ -12304,6 +13348,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"ÙŠÙØ­Øµ Ø§Ù„Ù…Ù„ÙØ§ØªØŒ\n"
+"من ÙØ¶Ù„Ùƒ إنتظر..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "لا يمكن ÙØªØ­ القالب من أجل التصدير:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Ø¥Ø¶Ø§ÙØ© %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "تصدير الكÙÙ„"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12316,6 +13402,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12336,6 +13426,21 @@ msgstr ""
"من ÙØ¶Ù„Ùƒ أعد تنصيب قالب بناء الأندرويد Android من قائمة \"المشروع\"."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "لا قدرة على تحرير project.godot ÙÙŠ مسار المشروع."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "لا يمكن كتابة الملÙ:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "بناء مشروع الأندرويد (gradle)"
@@ -12357,11 +13462,54 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "لم يتم إيجاد الرسم المتحرك: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "إنشاء المحيط..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "لا يمكن ÙØªØ­ القالب من أجل التصدير:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Ø¥Ø¶Ø§ÙØ© %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "لا يمكن كتابة الملÙ:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Ø§Ù„Ù…ÙØ­Ø¯Ø¯ Ù…Ùقود."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "إن الحر٠'%s' غير مسموح ÙÙŠ Ø§Ù„Ù…ÙØ­Ø¯Ø¯ Identifier."
@@ -12392,10 +13540,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "شغل مل٠HTML Ø§Ù„Ù…ÙØµØ¯Ø± ÙÙŠ Ø§Ù„Ù…ØªØµÙØ­ Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ Ù„Ù„Ù†Ø¸Ø§Ù…."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "لا يمكن كتابة الملÙ:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "لا يمكن ÙØªØ­ القالب من أجل التصدير:"
@@ -12404,16 +13548,49 @@ msgid "Invalid export template:"
msgstr "إدارة قوالب التصدير:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "لا يمكن كتابة الملÙ:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "لا يمكن كتابة الملÙ:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "لا يمكن قراءة مل٠HTML مخصص:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "لا يمكن قراءة مل٠الإقلاع الصوري:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "لا يمكن إنشاء المجلد."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "استخدام الصورة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© للشروع بالتشغيل."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "خطأ ÙÙŠ Ø­ÙØ¸ المشهد."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Ù…ÙØ­Ø¯Ø¯ غير صالح:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12856,6 +14033,13 @@ msgstr ""
"GIProbes لا يدعم برنامج تشغيل الÙيديو GLES2.\n"
"استخدم BakedLightmap بدلاً من ذلك."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "بقعة الضوء بزاوية أكبر من 90 درجة لا يمكنها إلقاء الظلال."
@@ -12939,6 +14123,18 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12947,6 +14143,46 @@ msgstr ""
"يجب أن تشير خاصية \"المسار البعيد\" إلى عقدة مكانية أو مشتقة مكانية صالحة "
"لكي تعمل."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "سيتم تجاهل هذا الجسم حتى تضع تحدد له مجسمًا."
@@ -13008,6 +14244,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "لم يتم إيجاد الرسم المتحرك: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "ÙÙŠ العÙقدة '%s'ØŒ رسومية متحركة غير صالحة: '%s'."
@@ -13177,6 +14417,27 @@ msgid "Invalid comparison function for that type."
msgstr "ÙˆØ¸ÙŠÙØ© برمجية Ù…ÙقارÙنة غير صالحة لأجل ذلك النوع."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "يمكن تعيين المتغيرات Ùقط ÙÙŠ الذروة ."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "تكليÙها Ù„ÙˆØ¸ÙŠÙØ© برمجية."
@@ -13185,13 +14446,177 @@ msgid "Assignment to uniform."
msgstr "التعين للإنتظام."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "يمكن تعيين المتغيرات Ùقط ÙÙŠ الذروة ."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "لا يمكن تعديل الثوابت."
+#~ msgid "Package Contents:"
+#~ msgstr "محتويات الرزمة:"
+
+#~ msgid "Singleton"
+#~ msgstr "Ø§Ù„ÙØ±Ø¯ÙŠØ©"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "مسح المل٠الشخصي '%s'؟ (لا تراجع)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "الخصائص المÙمكّنة:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "الميزات المÙمكّنة:"
+
+#~ msgid "Unset"
+#~ msgstr "غير Ù…ÙØ­Ø¯Ø¯"
+
+#~ msgid "Class Options"
+#~ msgstr "إعدادات الص٠Class"
+
+#~ msgid "Set"
+#~ msgstr "مجموعة"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Ø­ÙØ¸Øª %s الموارد المعدلة."
+
+#~ msgid "Q&A"
+#~ msgstr "الأسئلة و الأجوبة"
+
+#~ msgid "Status:"
+#~ msgstr "الحالة:"
+
+#~ msgid "Edit:"
+#~ msgstr "تحرير:"
+
+#~ msgid "Redownload"
+#~ msgstr "إعادة التحميل"
+
+#~ msgid "(Installed)"
+#~ msgstr "(مثبت)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Ù…Ùقود)"
+
+#~ msgid "Request Failed."
+#~ msgstr "ÙØ´Ù„ الطلب."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "اعادة توجيه حلقة التكرار."
+
+#~ msgid "Download Complete."
+#~ msgstr "التحميل إكتمل."
+
+#~ msgid "Remove Template"
+#~ msgstr "مسح القالب"
+
+#~ msgid "Download Templates"
+#~ msgstr "تنزيل القوالب"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "حدد Ø§Ù„Ø³Ø±ÙØ± من القائمة: (Shift+Click: Ù„Ù„ÙØªØ­ ÙÙŠ Ø§Ù„Ù…ØªØµÙØ­)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "نقل الي سلة Ø§Ù„Ù…Ø­Ø°ÙˆÙØ§Øª"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "توسيع كل الخصائص"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "طي كل الخصائص"
+
+#~ msgid "Copy Params"
+#~ msgstr "إنسخ Ø§Ù„Ù…ÙØ¹Ø§Ù…Ù„"
+
+#~ msgid "Open in Help"
+#~ msgstr "Ø¥ÙØªØ­ ÙÙŠ المساعدة"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "تجاوز كاميرا اللعبة.\n"
+#~ "ليس هناك لعبة منمذجة قيد التشغيل."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "سحب: للتدوير"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr "إضغط 'ر' لكي تغيير المحور، 'Shift+ر' لسحب المحور (ÙÙŠ حين التحرك)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+زر Ø§Ù„ÙØ£Ø±Ø© الأيمن: تحديد قائمة العمق"
+
+#~ msgid "Clone Down"
+#~ msgstr "استنساخ أدناه"
+
+#~ msgid "Yaw"
+#~ msgstr "الإنحرا٠Yaw"
+
+#~ msgid "Size"
+#~ msgstr "الحجم"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "السحب: تدوير.\n"
+#~ "Alt+السحب: تحريك.\n"
+#~ "Alt+ كبسة الزر الأيمن Ù„Ù„ÙØ£Ø±Ø©RMB : اختيار قائمة العÙمق"
+
+#~ msgid "Sep.:"
+#~ msgstr "Ø§Ù„ÙØ§ØµÙ„:"
+
+#~ msgid "Add All"
+#~ msgstr "Ø¥Ø¶Ø§ÙØ© الجميع"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "قائمة تحرير الموضوع."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "إنشاء قالب ÙØ§Ø±Øº"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "إنشاء قالب Ù…ÙØ­Ø±Ø± ÙØ§Ø±Øº"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "إنشاء مستمد من موضوع Theme المحرر الحالي"
+
+#~ msgid "Data Type:"
+#~ msgstr "نوع البيانات:"
+
+#~ msgid "Theme File"
+#~ msgstr "مل٠الثيم"
+
+#~ msgid "Compiled"
+#~ msgstr "Ù…ÙØ­ÙˆÙ„Ø© برمجياً"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "إزالة %d مشاريع من القائمة؟\n"
+#~ "لن يتم تعديل محتويات Ù…ÙØ¬Ù„دات المشاريع."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "إزالة هذا المشروع من القائمة؟\n"
+#~ "لن يتم تعديل محتوى Ù…ÙØ¬Ù„د المشروع."
+
+#~ msgid "Templates"
+#~ msgstr "القوالب"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Ø¥Ø¶Ø§ÙØ© مسار Ù…ÙØ¹Ø§Ø¯ تعيينه Remapped"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "لا يمكن التنÙيذ مع العÙقدة الرئيسة (الجذر)."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "لا يمكن قراءة مل٠الإقلاع الصوري:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "استخدام الصورة Ø§Ù„Ø§ÙØªØ±Ø§Ø¶ÙŠØ© للشروع بالتشغيل."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "مشغل الحركة لا يمكنه أن يحرك Ù†ÙØ³Ù‡, Ùقط الاعبين الأخرين."
@@ -13296,9 +14721,6 @@ msgstr "لا يمكن تعديل الثوابت."
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "المشهد الحالي لم يتم Ø­ÙØ¸Ù‡. الرجاء Ø­ÙØ¸ المشهد قبل تشغيله Ùˆ اختباره."
-#~ msgid "Not in resource path."
-#~ msgstr "ليس ÙÙŠ مسار الموارد."
-
#~ msgid "Revert"
#~ msgstr "إرجاع"
@@ -13359,9 +14781,6 @@ msgstr "لا يمكن تعديل الثوابت."
#~ msgid "Input"
#~ msgstr "إدخال"
-#~ msgid "Properties:"
-#~ msgstr "خصائص:"
-
#, fuzzy
#~ msgid "Methods:"
#~ msgstr "قائمة الطرق"
@@ -13370,9 +14789,6 @@ msgstr "لا يمكن تعديل الثوابت."
#~ msgid "Theme Properties:"
#~ msgstr "خصائص"
-#~ msgid "Enumerations:"
-#~ msgstr "التعدادات:"
-
#~ msgid "Constants:"
#~ msgstr "الثوابت:"
@@ -13600,9 +15016,6 @@ msgstr "لا يمكن تعديل الثوابت."
#~ msgid "Public Methods:"
#~ msgstr "الطرق العامة:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "عناصر ثيم واجهة المستخدم"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "عناصر ثيم واجهة المستخدم:"
@@ -13654,9 +15067,6 @@ msgstr "لا يمكن تعديل الثوابت."
#~ msgid "Set Transitions to:"
#~ msgstr "تحديد التحويلات لـ:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "تغيير إسم مسار التحريك"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "تغيير إقحام مسار التحريك"
@@ -13801,9 +15211,6 @@ msgstr "لا يمكن تعديل الثوابت."
#~ msgid "Can't write file."
#~ msgstr "لا يمكن كتابة الملÙ."
-#~ msgid "Not found!"
-#~ msgstr "لم يوجد!"
-
#~ msgid "Replace By"
#~ msgstr "إستبدلت بـ"
diff --git a/editor/translations/az.po b/editor/translations/az.po
index 054bc9263d..4ac0ae6469 100644
--- a/editor/translations/az.po
+++ b/editor/translations/az.po
@@ -554,7 +554,8 @@ msgstr "SaniyÉ™"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -580,7 +581,8 @@ msgstr "Ölçmə seçimi"
msgid "Scale From Cursor"
msgstr "Kursordan Ölçülə"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Seçiləni Çoxalt"
@@ -601,6 +603,10 @@ msgid "Go to Previous Step"
msgstr "ÆvvÉ™lki addıma keç"
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Animasiyanı Optimallaşdırma"
@@ -617,6 +623,11 @@ msgid "Use Bezier Curves"
msgstr "Bezier Æyrisini istifadÉ™ edin"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "İzləri yapışdır"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Animasya Optimizator"
@@ -665,7 +676,7 @@ msgid "Select Tracks to Copy"
msgstr "Kopyalanacaq izləri seçin"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -754,12 +765,14 @@ msgid "Toggle Scripts Panel"
msgstr "Skriptlər Panelini Aktivləşdir/Söndür"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Yaxınlaşdır"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -816,11 +829,9 @@ msgid "Add"
msgstr "ÆlavÉ™ Et"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -872,6 +883,7 @@ msgstr "Siqnala baÄŸlana bilmir"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -943,7 +955,8 @@ msgid "Edit..."
msgstr "RedaktÉ™ et..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Metoda Get"
#: editor/create_dialog.cpp
@@ -958,6 +971,14 @@ msgstr "Dəyişdir"
msgid "Create New %s"
msgstr "Yeni %s yarat"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -979,8 +1000,8 @@ msgstr "Axtar:"
msgid "Matches:"
msgstr "UyÄŸunlaÅŸmalar:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1056,20 +1077,24 @@ msgid "Owners Of:"
msgstr "Bunların Sahibləri:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Seçili fayllar layihənizdən silindi? (geri qaytarma yoxdur)\n"
"Aradan qaldırılan faylları sistemin zibil qutusunda tapıb bərpa edə "
"bilərsiniz."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Aradan qaldırılan fayllar işləməsi üçün digər resurslar tərəfindən tələb "
"olunur.\n"
@@ -1119,7 +1144,7 @@ msgstr "Orphan qaynaq Səyyahı"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1244,37 +1269,41 @@ msgstr "Komponentlər"
msgid "Licenses"
msgstr "Lisenziyalar"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1282,7 +1311,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1346,7 +1375,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1426,7 +1455,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1513,6 +1542,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1528,16 +1565,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1553,7 +1590,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1692,7 +1729,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1724,15 +1801,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1750,7 +1827,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1758,17 +1835,25 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Yarat"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Səhv açarları sil"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1777,19 +1862,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1813,7 +1898,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1867,9 +1952,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1950,8 +2036,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -2022,7 +2107,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2107,7 +2192,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2123,8 +2208,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2140,7 +2226,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2204,7 +2290,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2398,18 +2485,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2579,7 +2670,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2760,6 +2851,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2892,13 +2987,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2906,6 +3000,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2914,7 +3012,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -3011,6 +3109,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3037,7 +3143,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3078,6 +3184,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3109,6 +3219,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3133,21 +3247,19 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr ""
+#, fuzzy
+msgid "Author"
+msgstr "Müəlliflər"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3155,11 +3267,12 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "Vaxt (sn): "
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3179,6 +3292,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3220,12 +3343,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3243,22 +3360,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3272,37 +3412,21 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "'%s' ilÉ™ '%s' qoÅŸ"
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3337,7 +3461,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3357,64 +3481,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3422,7 +3552,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3432,135 +3566,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Install from File"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3686,22 +3851,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3709,6 +3900,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3788,10 +3983,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -4012,52 +4203,51 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Animasiya xüsusiyyətləri."
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Animasiya xüsusiyyətləri."
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4073,7 +4263,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4081,6 +4275,11 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Animasiya xüsusiyyətləri."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4108,6 +4307,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4307,7 +4515,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4521,6 +4729,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4857,10 +5070,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4869,15 +5090,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4905,6 +5130,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5005,7 +5234,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5048,6 +5281,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5056,8 +5293,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5291,15 +5528,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5353,6 +5591,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5364,19 +5603,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5608,6 +5853,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Açar sözü buraya daxil edin"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5620,6 +5874,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Uzaqlaşdır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Uzaqlaşdır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Uzaqlaşdır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Uzaqlaşdır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Uzaqlaşdır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Uzaqlaşdır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5860,6 +6160,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5892,7 +6196,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5951,13 +6255,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6011,7 +6327,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6283,7 +6598,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6587,6 +6903,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Bezier Nöqtələrini Köçür"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Bezier Nöqtələrini Köçür"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6790,7 +7124,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6821,6 +7155,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6943,8 +7282,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6977,10 +7316,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7132,6 +7467,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7152,39 +7506,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7340,6 +7698,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7355,6 +7717,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7368,7 +7734,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7376,18 +7742,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7484,6 +7847,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7773,11 +8140,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7798,164 +8160,532 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "İzah:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Hamısını ayır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Sil"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "ÆvÉ™zetmÉ™ mÉ™nbÉ™yini axtarın:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Add, remove, organize and import Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Add Preview"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8124,6 +8854,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8440,11 +9174,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9264,7 +9993,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9379,7 +10108,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9387,7 +10116,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9395,11 +10124,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9472,7 +10201,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9506,6 +10235,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9650,15 +10391,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9685,7 +10422,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9697,10 +10434,23 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "ÆlaqÉ™ni redaktÉ™ edin:"
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9709,11 +10459,24 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Sil"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9721,6 +10484,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9731,8 +10502,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9742,6 +10517,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9783,6 +10562,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9922,7 +10705,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9930,11 +10713,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10202,6 +10985,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10364,11 +11151,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10424,6 +11229,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10470,10 +11279,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10744,6 +11549,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10812,6 +11623,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11095,6 +11910,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11136,6 +11959,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Ölçmə seçimi"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11378,6 +12206,16 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "%s növünü dəyişdirin"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Massiv dəyərini dəyiş"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11486,6 +12324,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11709,10 +12551,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11742,6 +12580,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11838,6 +12704,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11850,6 +12752,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11864,6 +12770,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11883,11 +12802,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11916,27 +12873,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Could not create HTTP server directory:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12284,6 +13265,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12353,12 +13341,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12407,6 +13447,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12554,15 +13598,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index 7bf3d40805..b0bf9a4d6c 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -522,7 +522,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -548,7 +549,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -569,6 +571,10 @@ msgid "Go to Previous Step"
msgstr "Преминаване към предходната Ñтъпка"
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Оптимизиране на анимациÑта"
@@ -585,6 +591,11 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "ПоÑтавÑне на пътечки"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -633,7 +644,7 @@ msgid "Select Tracks to Copy"
msgstr "Изберете пътечки за копиране"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -719,12 +730,14 @@ msgid "Toggle Scripts Panel"
msgstr "Превключване на панела за Ñкриптове"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Приближаване"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -779,11 +792,9 @@ msgid "Add"
msgstr "ДобавÑне"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -833,6 +844,7 @@ msgstr "Сигналът не може да бъде Ñвързан"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -902,7 +914,8 @@ msgid "Edit..."
msgstr "Редактиране..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Преминаване към метода"
#: editor/create_dialog.cpp
@@ -917,6 +930,14 @@ msgstr ""
msgid "Create New %s"
msgstr "Създаване на %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -938,8 +959,8 @@ msgstr "ТърÑене:"
msgid "Matches:"
msgstr "СъвпадениÑ:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1011,9 +1032,11 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Да Ñе премахнат ли избраните файлове от проекта? (ДейÑтвието е необратимо)\n"
"Ще можете да ги откриете в кошчето, ако иÑкате да ги възÑтановите."
@@ -1022,8 +1045,9 @@ msgstr ""
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1068,7 +1092,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1189,28 +1213,41 @@ msgstr "Компоненти"
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Вече ÑъщеÑтвува)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Разархивиране на реÑурÑите"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
+"Следните файлове Ñа по-нови на диÑка.\n"
+"Кое дейÑтвие трÑбва да Ñе предприеме?:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "И още %s файл(а)."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "Asset \"%s\" installed successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
@@ -1218,17 +1255,14 @@ msgstr ""
msgid "Success!"
msgstr "Готово!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Съдържание на пакета:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "ИнÑталиране"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
-msgstr ""
+#, fuzzy
+msgid "Asset Installer"
+msgstr "ИнÑталиране"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
@@ -1291,7 +1325,8 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "ÐаÑтройки на шината"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1371,7 +1406,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1458,6 +1493,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1473,16 +1516,17 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr ""
+#, fuzzy
+msgid "Global Variable"
+msgstr "Преименуване на променливата"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1498,7 +1542,7 @@ msgstr "Запазване на локалните промени..."
msgid "Updating scene..."
msgstr "ОбновÑване на Ñцената..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1637,7 +1681,47 @@ msgid "Import Dock"
msgstr "Панел за внаÑÑне"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1669,15 +1753,17 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Включени ÑвойÑтва:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Свиване на вÑички ÑвойÑтва"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Включени клаÑове:"
#: editor/editor_feature_profile.cpp
@@ -1695,25 +1781,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Грешка при запазването на профила в: „%s“."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Връщане на Ñтандартните наÑтройки"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Текущ профил:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr ""
+#, fuzzy
+msgid "Create Profile"
+msgstr "Изтриване на профила"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Премахване на плочката"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Ðалични профили:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "ВнаÑÑне"
@@ -1722,20 +1817,22 @@ msgid "Export"
msgstr "ИзнаÑÑне"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Ðалични профили:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Текущ профил:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "ÐаÑтройки на клаÑа"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "ÐаÑтройки на клаÑа:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Ðово име на профила:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Изтриване на профила"
+msgid "New profile name:"
+msgstr "Ðово име на профила:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1758,7 +1855,8 @@ msgid "Select Current Folder"
msgstr "Избиране на текущата папка"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Файлът ÑъщеÑтвува. ИÑкате ли да го презапишете?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1812,9 +1910,10 @@ msgid "Open a File or Directory"
msgstr "ОтварÑне на файл или папка"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Запазване"
@@ -1895,8 +1994,7 @@ msgid "Directories & Files:"
msgstr "Папки и файлове:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1967,7 +2065,7 @@ msgstr "СвойÑтва на темата"
msgid "Enumerations"
msgstr "Изброени типове"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "КонÑтанти"
@@ -2052,7 +2150,7 @@ msgstr "Метод"
msgid "Signal"
msgstr "Сигнал"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "КонÑтанта"
@@ -2068,8 +2166,9 @@ msgstr "СвойÑтво на тема"
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2085,7 +2184,7 @@ msgid "Copy Selection"
msgstr "Копиране на избраното"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2149,7 +2248,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Добре"
@@ -2343,18 +2443,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "%s променени реÑурÑа бÑха запазени."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Запазване на Ñцената като..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "ОперациÑта не може да Ñе извърши без Ñцена."
@@ -2546,7 +2650,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Показване във файловата ÑиÑтема"
@@ -2727,6 +2831,11 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Преименуване на проекта"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Изход към ÑпиÑъка Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¸"
@@ -2861,13 +2970,13 @@ msgstr "Управление на шаблоните за изнаÑÑне..."
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr ""
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "ОтварÑне на документациÑта"
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2875,6 +2984,10 @@ msgid "Report a Bug"
msgstr "Докладване на проблем"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2883,7 +2996,8 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "ОтноÑно"
#: editor/editor_node.cpp
@@ -2980,6 +3094,16 @@ msgid "Manage Templates"
msgstr "Управление на шаблоните"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "ИнÑталиране и редактиране"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Изберете източник за полигонна мрежа:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3006,7 +3130,7 @@ msgstr "ВнаÑÑне на шаблони от архив във формат Z
msgid "Template Package"
msgstr "Пакет Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "ИзнаÑÑне на библиотеката"
@@ -3050,6 +3174,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Избиране на текущата папка"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3081,6 +3210,10 @@ msgstr "Внимание!"
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3105,21 +3238,20 @@ msgstr "ИнÑталирани приÑтавки:"
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "ВерÑиÑ:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr ""
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr ""
+#, fuzzy
+msgid "Author"
+msgstr "Ðвтори"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3127,11 +3259,12 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "Време (Ñек): "
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3151,6 +3284,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3192,12 +3335,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3215,40 +3352,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Ðов Ñкрипт"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "РазширÑване на Ñкрипта"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "ПоÑтавÑне"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3277,6 +3380,47 @@ msgstr "Ðова ÑтойноÑÑ‚:"
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "ПоÑтавÑне"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Преобразуване в Mesh2D"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Ðов Ñкрипт"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "РазширÑване на Ñкрипта"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3309,7 +3453,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3329,72 +3473,87 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Повторно ÑвалÑне"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(ИнÑталирано)"
+msgid "There are no mirrors available."
+msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr ""
+#, fuzzy
+msgid "Retrieving the mirror list..."
+msgstr "Свързване Ñ Ð¾Ð³Ð»ÐµÐ´Ð°Ð»Ð½Ð¾Ñ‚Ð¾ меÑтоположение..."
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr ""
+msgid "Error requesting URL:"
+msgstr "Грешка при заÑвката за адреÑ:"
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr ""
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Свързване Ñ Ð¾Ð³Ð»ÐµÐ´Ð°Ð»Ð½Ð¾Ñ‚Ð¾ меÑтоположение..."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr ""
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Свързване Ñ Ð¾Ð³Ð»ÐµÐ´Ð°Ð»Ð½Ð¾Ñ‚Ð¾ меÑтоположение..."
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
+msgstr "ЗаÑвката беше неуÑпешна."
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr ""
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "ЗаÑвката Ñе провали. Твърде много пренаÑочваниÑ"
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Грешка при Ñъздаването на път за шаблоните:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "ЗаÑвката беше неуÑпешна."
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "ВнаÑÑне:"
+msgid "Cannot remove temporary file:"
+msgstr "ВременниÑÑ‚ файл не може да бъде премахнат:"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Error getting the list of mirrors."
msgstr "Грешка при получаването на ÑпиÑъка от огледални меÑтоположениÑ."
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3404,135 +3563,174 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "ЗаÑвката беше неуÑпешна."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting..."
+msgstr "Свързване..."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr ""
+msgid "Can't Connect"
+msgstr "Ðе може да Ñе уÑтанови връзка"
+
+#: editor/export_template_manager.cpp
+msgid "Connected"
+msgstr "Свързан"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
+msgid "Requesting..."
+msgstr "Запитване..."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr ""
+msgid "Downloading"
+msgstr "ИзтеглÑне"
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr "ВременниÑÑ‚ файл не може да бъде премахнат:"
+msgid "Connection Error"
+msgstr "Грешка във връзката"
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Грешка при заÑвката за адреÑ:"
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Управление на шаблоните за изнаÑÑне..."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Свързване Ñ Ð¾Ð³Ð»ÐµÐ´Ð°Ð»Ð½Ð¾Ñ‚Ð¾ меÑтоположение..."
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Грешка при Ñъздаването на път за шаблоните:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Importing:"
+msgstr "ВнаÑÑне:"
+
+#: editor/export_template_manager.cpp
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
-msgstr "Свързване..."
+msgid "Uncompressing Android Build Sources"
+msgstr "Разархивиране на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на компилациÑта за Ðндроид"
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
-msgstr "Ðе може да Ñе уÑтанови връзка"
+msgid "Export Template Manager"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
-msgstr "Свързан"
+msgid "Current Version:"
+msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
-msgstr "Запитване..."
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
-msgstr "ИзтеглÑне"
+msgid "Export templates are installed and ready to be used."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
-msgstr "Грешка във връзката"
+#, fuzzy
+msgid "Open Folder"
+msgstr "ОтварÑне на файл"
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
-msgstr "Разархивиране на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на компилациÑта за Ðндроид"
+msgid "Uninstall"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "ИнÑталирани верÑии:"
+#, fuzzy
+msgid "Download from:"
+msgstr "Грешка при ÑвалÑнето"
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Избор на шаблонен файл"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Шаблони за изнаÑÑне на Godot"
+#, fuzzy
+msgid "Install from File"
+msgstr "ИнÑталиране и редактиране"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "ВнаÑÑне на шаблони от архив във формат ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Отказ"
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "СвалÑне на шаблони"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "ИнÑталирани верÑии:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Управление на шаблоните"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Избор на шаблонен файл"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr "Шаблони за изнаÑÑне на Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3658,29 +3856,60 @@ msgstr "Ðов Ñкрипт..."
msgid "New Resource..."
msgstr "Ðов реÑурÑ..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Свиване на вÑичко"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+#, fuzzy
+msgid "Sort files"
+msgstr "ТърÑене на файлове"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "ПремеÑтване в кошчето"
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Предишна папка/файл"
@@ -3760,10 +3989,6 @@ msgstr "ТърÑене..."
msgid "Replace..."
msgstr "ЗамÑна..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Отказ"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "ТърÑене: "
@@ -3984,53 +4209,54 @@ msgid "Failed to load resource."
msgstr "РеÑурÑÑŠÑ‚ не може да бъде зареден."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
+#, fuzzy
+msgid "Copy Properties"
msgstr "Свиване на вÑички ÑвойÑтва"
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Запазване като..."
-
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "СвойÑтва на темата"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr ""
+msgid "Save the currently edited resource."
+msgstr "Запазване на текущо Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ñ€ÐµÑурÑ."
+
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Запазване като..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "ОтварÑне в помощната информациÑ"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Ðе е в Ð¿ÑŠÑ‚Ñ Ð½Ð° реÑурÑите."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "ÐÑма реÑурÑâ€“Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð² буфера за обмен!"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Запазване на текущо Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ñ€ÐµÑурÑ."
+msgid "Make Resource Built-In"
+msgstr ""
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4045,14 +4271,24 @@ msgid "History of recently edited objects."
msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° поÑледно редактираните обекти."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "СвойÑтва на обекта."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "ОтварÑне на документациÑта"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "ОтварÑне на документациÑта"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Филтриране на ÑвойÑтвата"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "СвойÑтва на обекта."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Промените могат да бъдат загубени!"
@@ -4080,6 +4316,15 @@ msgstr "Име на приÑтавката:"
msgid "Subfolder:"
msgstr "Подпапка:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "ВерÑиÑ:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Език:"
@@ -4286,7 +4531,8 @@ msgid "Blend:"
msgstr "СмеÑване:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Параметърът е променен"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4504,6 +4750,11 @@ msgid "Animation"
msgstr "ÐнимациÑ"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Редактиране на преходите..."
@@ -4840,10 +5091,18 @@ msgid "View Files"
msgstr "Преглед на файловете"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Грешка във връзката. МолÑ, опитайте отново."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4852,16 +5111,20 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "ЗаÑвката беше неуÑпешна. Код:"
+msgid "Can't resolve."
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "ЗаÑвката беше неуÑпешна."
+msgid "Request failed, return code:"
+msgstr "ЗаÑвката беше неуÑпешна. Код:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -4888,6 +5151,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4989,7 +5256,11 @@ msgid "All"
msgstr "Ð’Ñички"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5032,6 +5303,10 @@ msgstr "Зареждане…"
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5042,9 +5317,10 @@ msgstr ""
"Запазете Ñцената и опитайте отново."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"ÐÑма полигонни мрежи за изпичане. Уверете Ñе, че те Ñъдържат канал UV2 и че "
"флагът „Изпичане на Ñветлината“ е включен."
@@ -5289,15 +5565,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5351,6 +5628,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5362,19 +5640,31 @@ msgid "Select Mode"
msgstr "Режим на избиране"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Влачене: завъртане"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Премахване на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð²ÑŠÐ·ÐµÐ» или преход."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Влачене: премеÑтване"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Премахване на Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¸Ñ Ð²ÑŠÐ·ÐµÐ» или преход."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
+"Показване на ÑпиÑък Ñ Ð²Ñички обекти на щракнатата позициÑ\n"
+"(Ñъщото като Alt+ДеÑен бутон в режим на избиране)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5608,6 +5898,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "ДобавÑне на възел"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Вмъкване на ключ тук"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5620,6 +5920,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Отдалечаване"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Отдалечаване"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Отдалечаване"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Отдалечаване"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Отдалечаване"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Отдалечаване"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "ДобавÑне на %s"
@@ -5862,6 +6208,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Създаване на единична изпъкнала форма"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Създаване на единична изпъкнала форма"
@@ -5896,7 +6247,7 @@ msgid "No mesh to debug."
msgstr "ÐÑма полигонна мрежа за дебъгване."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5957,13 +6308,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Създаване на папка"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Създаване на папка"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6023,7 +6387,6 @@ msgid "Mesh Library"
msgstr "Библиотека Ñ Ð¿Ð¾Ð»Ð¸Ð³Ð¾Ð½Ð½Ð¸ мрежи"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6300,7 +6663,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6604,6 +6968,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "ПремеÑтване на точки на Безие"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Изтриване на точка"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6807,7 +7189,7 @@ msgstr "ПуÑкане"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "ТърÑене"
@@ -6838,6 +7220,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "ОтварÑне на документациÑта на Godot в Интернет."
@@ -6962,8 +7349,8 @@ msgstr ""
msgid "Cut"
msgstr "ИзрÑзване"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Избиране на вÑичко"
@@ -6996,10 +7383,6 @@ msgid "Unfold All Lines"
msgstr "Разгъване на вÑички редове"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Копиране на Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ€ÐµÐ´"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Знак за авт. довършване"
@@ -7153,6 +7536,28 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "ÐÑма"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Режим на завъртане"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "ТранÑлиране: "
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Мащаб:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7173,39 +7578,48 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr ""
+#, fuzzy
+msgid "Size:"
+msgstr "Изглед Отпред."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Параметърът е променен"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Параметърът е променен"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Точки на повърхноÑтта"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "Вертикала:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7361,6 +7775,11 @@ msgid "Freelook Slow Modifier"
msgstr "Модификатор за забавÑне на ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð¸Ñ Ð¸Ð·Ð³Ð»ÐµÐ´"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Превключване на любимите"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7376,6 +7795,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Преобразуване в Mesh2D"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7389,26 +7813,24 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
-msgstr ""
+#, fuzzy
+msgid "Snap Nodes to Floor"
+msgstr "Следващ под"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7505,6 +7927,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "ÐаÑтройки…"
@@ -7794,11 +8220,6 @@ msgid "Snap Mode:"
msgstr "Режим на прилепване:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "ÐÑма"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Прилепване към пикÑелите"
@@ -7819,165 +8240,588 @@ msgid "Step:"
msgstr "Стъпка:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Разделител:"
+#, fuzzy
+msgid "Separation:"
+msgstr "ВерÑиÑ:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "ТекÑтурна облаÑÑ‚"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+#, fuzzy
+msgid "Colors"
+msgstr "Цват"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Fonts"
+msgstr "Шрифт"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Icons"
+msgstr "Иконка"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Стил"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No colors found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "КонÑтанти"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "КонÑтанта за цвÑÑ‚."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No fonts found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No icons found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No styleboxes found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "ВнаÑÑне на тема"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "ОбновÑване на Ñцената"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Ðнализиране"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Филтри:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select by data type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Избери разделение и го изтрий"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Свиване на вÑичко"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Избор на шаблонен файл"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Избиране на метод"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Избиране на вÑичко"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "ВнаÑÑне на Ñцена"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Премахване на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Преименуван"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Премахване на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Премахване на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Премахване на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Премахване на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
msgstr "ДобавÑне на вÑички елементи"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "ДобавÑне на вÑичко"
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "КонÑтанта"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "ДобавÑне на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "ДобавÑне на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "ДобавÑне на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Премахване на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Преименуване на функциÑта"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Преименуване на функциÑта"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Премахване на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "РеÑурÑÑŠÑ‚ не може да бъде зареден."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Управление на шаблоните"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Редактируем елемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Тип:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Тип:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "ДобавÑне на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "ДобавÑне на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Премахване на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Премахване на вÑички елементи"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove All Items"
msgstr "Премахване на вÑички елементи"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Премахване на вÑичко"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "ДобавÑне на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Име:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "ВнаÑÑне на тема"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Презареждане на темата"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+#, fuzzy
+msgid "Editor Theme"
msgstr "Редактиране на темата"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Меню за редактиране на темата."
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "ВнаÑÑне на тема"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "ÐаÑтройване на прилепването"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "ДобавÑне на възел"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "ДобавÑне на вÑички елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Тип на възела"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "ВнаÑÑне на преводи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Запазване на вÑичко"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Създаване на празен шаблон"
+#, fuzzy
+msgid "Theme:"
+msgstr "Тема"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Управление на шаблоните за изнаÑÑне..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Създаване на празен шаблон за редактора"
+#, fuzzy
+msgid "Add Preview"
+msgstr "Преглед"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Създаване от текущата тема на редактора"
+#, fuzzy
+msgid "Default Preview"
+msgstr "ОбновÑване на Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Изберете източник за полигонна мрежа:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Бутон-превключвател"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Заключен бутон"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Елемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Заключен елемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Елемент за отметка"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Отметнат елемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Именуван разд."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Подменю"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Поделемент 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Поделемент 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Има"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Много"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "Заключено текÑтово поле"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Раздел 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Раздел 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Раздел 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Редактируем елемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Поддърво"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Има,Много,Опции"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Тип на данните:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Иконка"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Стил"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Шрифт"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Цват"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Файл Ñ Ñ‚ÐµÐ¼Ð°"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8146,6 +8990,10 @@ msgid "Priority"
msgstr "Приоритет"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Иконка"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð¿Ð¾ Z"
@@ -8475,11 +9323,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9299,7 +10142,8 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Редактиране на визуалното ÑвойÑтво"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9414,7 +10258,8 @@ msgid "Script"
msgstr "Скрипт"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Режим на изнаÑÑне на Ñкриптове:"
#: editor/project_export.cpp
@@ -9422,7 +10267,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9430,11 +10275,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9507,7 +10352,8 @@ msgid "Imported Project"
msgstr "ВнеÑен проект"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Ðеправилно име на проект."
#: editor/project_manager.cpp
@@ -9541,6 +10387,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Преименуване на проекта"
@@ -9685,15 +10543,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9720,7 +10574,8 @@ msgid "Project Manager"
msgstr "Управление на проектите"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Проекти"
#: editor/project_manager.cpp
@@ -9733,10 +10588,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "ИзнаÑÑне на проекта"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Преименуване на проекта"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Сканиране"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Проекти"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Изберете папка за Ñканиране"
@@ -9745,18 +10615,41 @@ msgid "New Project"
msgstr "Ðов проект"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "ВнеÑен проект"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Преименуване на проекта"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Премахване на липÑващите"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Шаблони"
+msgid "About"
+msgstr "ОтноÑно"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Библиотека Ñ Ñ€ÐµÑурÑи"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Премахване на вÑичко"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Проектът не може да бъде пуÑнат"
@@ -9767,8 +10660,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Филтриране на ÑвойÑтвата"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9778,6 +10676,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9819,6 +10721,10 @@ msgstr "Ð’Ñички уÑтройÑтва"
msgid "Device"
msgstr "УÑтройÑтво"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9958,7 +10864,8 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "ДобавÑне на превод"
#: editor/project_settings_editor.cpp
@@ -9966,11 +10873,11 @@ msgid "Remove Translation"
msgstr "Премахване на превода"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10239,6 +11146,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Стил"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10402,11 +11313,29 @@ msgid "Delete node \"%s\"?"
msgstr "Изтриване на възела „%s“?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10462,6 +11391,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Закачане на Ñкрипт"
@@ -10509,10 +11442,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "ОтварÑне на документациÑта"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10783,6 +11712,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Име на клаÑа:"
@@ -10851,6 +11786,10 @@ msgid "Copy Error"
msgstr "Копиране на грешката"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11138,6 +12077,16 @@ msgstr "Ðеправилен формат в речника на инÑтанцÐ
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "ИзнаÑÑне на библиотека Ñ Ð¿Ð¾Ð»Ð¸Ð³Ð¾Ð½Ð½Ð¸ мрежи"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "ИзнаÑÑне..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Следваща равнина"
@@ -11182,6 +12131,11 @@ msgid "GridMap Paint"
msgstr "ÐаÑтройки"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "ÐаÑтройки"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11428,6 +12382,16 @@ msgid "Add Output Port"
msgstr "ДобавÑне на изходÑщ порт"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "ПромÑна на типа на входÑÑ‰Ð¸Ñ Ð¿Ð¾Ñ€Ñ‚"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "ПромÑна на името на входÑÑ‰Ð¸Ñ Ð¿Ð¾Ñ€Ñ‚"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11536,6 +12500,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "ДобавÑне на възел"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11761,10 +12730,6 @@ msgstr "ТърÑене във VisualScript"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11794,6 +12759,39 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "ИзнаÑÑне на вÑичко"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "ИнÑталирате..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Зареждане…"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Файлът не може да бъде запиÑан:"
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Папката не може да бъде Ñъздадена."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11890,6 +12888,45 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Шаблонът не може да Ñе отвори за изнаÑÑне:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "ДобавÑне на %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "ИзнаÑÑне на вÑичко"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11902,6 +12939,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11916,6 +12957,20 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Файлът не може да бъде запиÑан:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11935,11 +12990,54 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Съдържание на пакета:"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Създаване на полигонна мрежа…"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Шаблонът не може да Ñе отвори за изнаÑÑне:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "ДобавÑне на %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Файлът не може да бъде запиÑан:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11968,10 +13066,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Файлът не може да бъде запиÑан:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Шаблонът не може да Ñе отвори за изнаÑÑне:"
@@ -11980,16 +13074,49 @@ msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Файлът не може да бъде запиÑан:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Файлът не може да бъде запиÑан:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Ðе може да Ñе прочете перÑонализирана HTML-обвивка:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Ðе може да Ñе прочете файл Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ при Ñтартиране:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Папката не може да бъде Ñъздадена."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Използва Ñе Ñтандартното изображение при Ñтартиране."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Грешка при запиÑването:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Името не е правилен идентификатор:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12368,6 +13495,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12443,6 +13577,18 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12451,6 +13597,46 @@ msgstr ""
"СвойÑтвото „Remote Path“ трÑбва да Ñочи към дейÑтвителен възел от тип "
"Spatial или негов наÑледник, за да работи."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Това Ñ‚Ñло ще бъде игнорирано, докато не зададете полигонна мрежа."
@@ -12501,6 +13687,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12648,21 +13838,103 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "КонÑтантите не могат да бъдат променени."
+#~ msgid "Enabled Properties:"
+#~ msgstr "Включени ÑвойÑтва:"
+
+#~ msgid "Class Options"
+#~ msgstr "ÐаÑтройки на клаÑа"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "%s променени реÑурÑа бÑха запазени."
+
+#~ msgid "Redownload"
+#~ msgstr "Повторно ÑвалÑне"
+
+#~ msgid "(Installed)"
+#~ msgstr "(ИнÑталирано)"
+
+#~ msgid "Request Failed."
+#~ msgstr "ЗаÑвката беше неуÑпешна."
+
+#~ msgid "Download Templates"
+#~ msgstr "СвалÑне на шаблони"
+
+#~ msgid "Move to Trash"
+#~ msgstr "ПремеÑтване в кошчето"
+
+#~ msgid "Open in Help"
+#~ msgstr "ОтварÑне в помощната информациÑ"
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Влачене: завъртане"
+
+#~ msgid "Clone Down"
+#~ msgstr "Копиране на Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ€ÐµÐ´"
+
+#~ msgid "Sep.:"
+#~ msgstr "Разделител:"
+
+#~ msgid "Add All"
+#~ msgstr "ДобавÑне на вÑичко"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Меню за редактиране на темата."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Създаване на празен шаблон"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Създаване на празен шаблон за редактора"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Създаване от текущата тема на редактора"
+
+#~ msgid "Data Type:"
+#~ msgstr "Тип на данните:"
+
+#~ msgid "Theme File"
+#~ msgstr "Файл Ñ Ñ‚ÐµÐ¼Ð°"
+
+#~ msgid "Templates"
+#~ msgstr "Шаблони"
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Ðе може да Ñе прочете файл Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ при Ñтартиране:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Използва Ñе Ñтандартното изображение при Ñтартиране."
+
#~ msgid "No"
#~ msgstr "Ðе"
@@ -12687,9 +13959,6 @@ msgstr "КонÑтантите не могат да бъдат промененÐ
#~ "Текущата Ñцена никога не е била запазена. МолÑ, запазете Ñ Ð¿Ñ€ÐµÐ´Ð¸ "
#~ "изпълнение."
-#~ msgid "Not in resource path."
-#~ msgstr "Ðе е в Ð¿ÑŠÑ‚Ñ Ð½Ð° реÑурÑите."
-
#~ msgid "Clear Script"
#~ msgstr "Премахване на Ñкрипта"
@@ -12819,10 +14088,6 @@ msgstr "КонÑтантите не могат да бъдат промененÐ
#~ msgid "Create Exterior Connector"
#~ msgstr "Създаване на нов проект"
-#, fuzzy
-#~ msgid "Font Size:"
-#~ msgstr "Изглед Отпред."
-
#~ msgid "Line:"
#~ msgstr "Ред:"
@@ -12837,10 +14102,6 @@ msgstr "КонÑтантите не могат да бъдат промененÐ
#~ msgid "Connect two points to make a split."
#~ msgstr "Свържи две точки, за да направиш разделение"
-#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Избери разделение и го изтрий"
-
#~ msgid "Zoom out"
#~ msgstr "Отдалечи"
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index 70a66820fb..384ea57f6c 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -15,8 +15,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-06-11 14:49+0000\n"
-"Last-Translator: Mokarrom Hossain <mhb2016.bzs@gmail.com>\n"
+"PO-Revision-Date: 2021-08-03 06:20+0000\n"
+"Last-Translator: Oymate <dhruboadittya96@gmail.com>\n"
"Language-Team: Bengali <https://hosted.weblate.org/projects/godot-engine/"
"godot/bn/>\n"
"Language: bn\n"
@@ -24,7 +24,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Weblate 4.7-dev\n"
+"X-Generator: Weblate 4.8-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -533,7 +533,8 @@ msgstr "সেকেনà§à¦¡"
msgid "FPS"
msgstr "à¦à¦«à¦ªà¦¿à¦à¦¸"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -559,7 +560,8 @@ msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহের আকার পরিব
msgid "Scale From Cursor"
msgstr "কারà§à¦¸à¦° হতে আকার পরিবরà§à¦¤à¦¨ করà§à¦¨"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অনà§à¦²à¦¿à¦ªà¦¿ করà§à¦¨"
@@ -580,6 +582,11 @@ msgid "Go to Previous Step"
msgstr "পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ ধাপে যান"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¨/সংকোচন অপসারণ করà§à¦¨ (রিসেট জà§à¦®à§)"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Animation) উনà§à¦¨à¦¤/নিখà§à¦à¦¤ করà§à¦¨"
@@ -596,6 +603,11 @@ msgid "Use Bezier Curves"
msgstr "বেজিয়ার কারà§à¦­ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "মানসমূহ পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨/পেসà§à¦Ÿ করà§à¦¨"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ পরিমারà§à¦œà¦¨à¦•ারী"
@@ -644,7 +656,7 @@ msgid "Select Tracks to Copy"
msgstr "গà§à¦£à¦¾à¦—à§à¦£/বৈশিষà§à¦Ÿà§à¦¯ copy করà§à¦¨"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -730,12 +742,14 @@ msgid "Toggle Scripts Panel"
msgstr "সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿà¦¸ পà§à¦¯à¦¾à¦¨à§‡à¦² টগল করà§à¦¨"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ ইন)"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -751,7 +765,7 @@ msgstr "সতরà§à¦•তা"
#: editor/code_editor.cpp
msgid "Line and column numbers."
-msgstr ""
+msgstr "রেখা ও সà§à¦¤à¦®à§à¦­ সংখà§à¦¯à¦¾à¥¤"
#: editor/connections_dialog.cpp
#, fuzzy
@@ -799,11 +813,9 @@ msgid "Add"
msgstr "সংযোজন করà§à¦¨"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -856,6 +868,7 @@ msgstr "সংযোজক সংকেত/সিগনà§à¦¯à¦¾à¦²:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -935,7 +948,7 @@ msgstr "সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (Edit)"
#: editor/connections_dialog.cpp
#, fuzzy
-msgid "Go To Method"
+msgid "Go to Method"
msgstr "মেথডের তালিকা:"
#: editor/create_dialog.cpp
@@ -952,6 +965,14 @@ msgstr "পরিবরà§à¦¤à¦¨ করà§à¦¨"
msgid "Create New %s"
msgstr "নতà§à¦¨ তৈরি করà§à¦¨"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -973,8 +994,8 @@ msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨:"
msgid "Matches:"
msgstr "মিলসমূহ:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1054,8 +1075,9 @@ msgstr "সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•ারীসমূহ:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ পà§à¦°à¦•লà§à¦ª হতে অপসারণ করবেন? (অফেরৎযোগà§à¦¯)"
#: editor/dependency_editor.cpp
@@ -1063,8 +1085,9 @@ msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ পà§à¦°à¦•লà§à
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"যেসব ফাইল অপসারিত হচà§à¦›à§‡ তারা অনà§à¦¯à¦¾à¦¨à§à¦¯ রিসোরà§à¦¸ ফাইলের কারà§à¦¯à¦•ররà§à¦ªà§‡ কাজ করার জনà§à¦¯ "
"দরকারি।\n"
@@ -1115,7 +1138,7 @@ msgstr "মালিকবিহীন রিসোরà§à¦¸à§‡à¦° অনà§à¦¸à
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1244,32 +1267,41 @@ msgstr "কমà§à¦ªà¦¨à§‡à¦¨à§à¦Ÿà¦¸"
msgid "Licenses"
msgstr "লাইসেনà§à¦¸"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Error opening package file, not in ZIP format."
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "জিপ ফরমà§à¦¯à¦¾à¦Ÿ খà§à¦à¦œà§‡ পেতে বà§à¦¯à¦¾à¦°à§à¦¥, পà§à¦¯à¦¾à¦•েজ ফাইল ওপেন করা যায়নি।"
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr "সà§à¦¥à¦¾à§Ÿà§€à§Ÿà¦¤à¦¾ টগল করà§à¦¨"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "আনকমà§à¦ªà§à¦°à§‡à¦¸à§à¦¡ অà§à¦¯à¦¾à¦¸à§‡à¦Ÿà¦¸"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "পà§à¦¯à¦¾à¦•েজ হতে নীমà§à¦¨à§‹à¦•à§à¦¤ ফাইলসমূহ à¦à¦•à§à¦¸à¦Ÿà§à¦°à¦¾à¦•à§à¦Ÿ করা অসফল হয়েছে:"
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "And %s more files."
+msgid "(and %s more files)"
msgstr "%d টি অধিক ফাইল(সমূহ)"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Package installed successfully!"
+msgid "Asset \"%s\" installed successfully!"
msgstr "পà§à¦¯à¦¾à¦•েজ ইনà§à¦¸à¦Ÿà¦² সমà§à¦ªà¦¨à§à¦¨ হয়েছে!"
#: editor/editor_asset_installer.cpp
@@ -1277,17 +1309,13 @@ msgstr "পà§à¦¯à¦¾à¦•েজ ইনà§à¦¸à¦Ÿà¦² সমà§à¦ªà¦¨à§à¦¨ হয়ে
msgid "Success!"
msgstr "সমà§à¦ªà¦¨à§à¦¨ হয়েছে!"
-#: editor/editor_asset_installer.cpp
-#, fuzzy
-msgid "Package Contents:"
-msgstr "ধà§à¦°à§à¦¬à¦•সমূহ:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "ইনà§à¦¸à¦Ÿà¦²"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "পà§à¦¯à¦¾à¦•েজ ইনà§à¦¸à¦Ÿà¦²à¦¾à¦°"
#: editor/editor_audio_buses.cpp
@@ -1353,7 +1381,8 @@ msgid "Bypass"
msgstr "বাইপাস"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "বাস অপশন"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1436,7 +1465,7 @@ msgstr "বাস যোগ করà§à¦¨"
msgid "Add a new Audio Bus to this layout."
msgstr "অডিও বাস লেআউট সেভ করà§à¦¨..."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1530,6 +1559,15 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "ফাইলটি বিদà§à¦¯à¦®à¦¾à¦¨ নয়।"
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "AutoLoad সংযà§à¦•à§à¦¤ করà§à¦¨"
@@ -1545,16 +1583,17 @@ msgid "Node Name:"
msgstr "নোডের নাম:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "নাম"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "à¦à¦•ক-বসà§à¦¤à§/সিঙà§à¦—েলটোন"
+#, fuzzy
+msgid "Global Variable"
+msgstr "চলক/ভেরিয়েবল"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "মানসমূহ পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨/পেসà§à¦Ÿ করà§à¦¨"
@@ -1570,7 +1609,7 @@ msgstr "সà§à¦¥à¦¾à¦¨à§€à§Ÿ পরিবরà§à¦¤à¦¨-সমূহ সংরক
msgid "Updating scene..."
msgstr "দৃশà§à¦¯ হাল নাগাদ হচà§à¦›à§‡..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
#, fuzzy
msgid "[empty]"
msgstr "(খালি/শূনà§à¦¯)"
@@ -1724,9 +1763,49 @@ msgid "Import Dock"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
#: editor/editor_feature_profile.cpp
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase profile '%s'? (no undo)"
-msgstr "সমসà§à¦¤à¦—à§à¦²à¦¿ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+msgid "(current)"
+msgstr "বরà§à¦¤à¦®à¦¾à¦¨:"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1763,15 +1842,17 @@ msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸ :"
+#, fuzzy
+msgid "Main Features:"
+msgstr "গঠনবিনà§à¦¯à¦¾à¦¸"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Enabled কà§à¦²à¦¾à¦¸:"
#: editor/editor_feature_profile.cpp
@@ -1790,8 +1871,9 @@ msgid "Error saving profile to path: '%s'."
msgstr "ছবি লোডে সমসà§à¦¯à¦¾ হয়েছে:"
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "পà§à¦°à¦¾à¦¥à¦®à¦¿à¦• sRGB বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1800,17 +1882,26 @@ msgstr "বরà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Make Current"
-msgstr "বরà§à¦¤à¦®à¦¾à¦¨:"
+msgid "Create Profile"
+msgstr "TileMap মà§à¦›à§‡ ফেলà§à¦¨"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "নতà§à¦¨"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "উপসà§à¦¥à¦¿à¦¤ নোডসমূহ:"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Make Current"
+msgstr "বরà§à¦¤à¦®à¦¾à¦¨:"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
@@ -1820,23 +1911,22 @@ msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Available Profiles:"
-msgstr "উপসà§à¦¥à¦¿à¦¤ নোডসমূহ:"
+msgid "Configure Selected Profile:"
+msgstr "বরà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
-msgstr "বরà§à¦£à¦¨à¦¾:"
+msgid "Extra Options:"
+msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤ (অপশন)-সমূহ"
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "New profile name:"
-msgstr "নতà§à¦¨ নাম:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase Profile"
-msgstr "TileMap মà§à¦›à§‡ ফেলà§à¦¨"
+msgid "New profile name:"
+msgstr "নতà§à¦¨ নাম:"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1864,7 +1954,8 @@ msgid "Select Current Folder"
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরি করà§à¦¨"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "à¦à¦•ই নামের ফাইল উপসà§à¦¥à¦¿à¦¤, তা মà§à¦›à§‡ লিখবেন?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1922,9 +2013,10 @@ msgid "Open a File or Directory"
msgstr "ফাইল বা পথ/ডিরেকà§à¦Ÿà¦°à¦¿ খà§à¦²à§à¦¨"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "সংরকà§à¦·à¦¨ করà§à¦¨"
@@ -2013,8 +2105,7 @@ msgid "Directories & Files:"
msgstr "পথ à¦à¦¬à¦‚ ফাইল:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "পà§à¦°à¦¿à¦­à¦¿à¦‰:"
@@ -2094,7 +2185,7 @@ msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
msgid "Enumerations"
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à¦¸à¦®à§‚হ"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
#, fuzzy
msgid "Constants"
msgstr "ধà§à¦°à§à¦¬à¦•সমূহ:"
@@ -2201,7 +2292,7 @@ msgstr "মেথডের তালিকা:"
msgid "Signal"
msgstr "সংকেতসমূহ"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "ধà§à¦°à§à¦¬à¦•/কনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦Ÿ"
@@ -2219,9 +2310,10 @@ msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
msgid "Property:"
msgstr "পà§à¦°à¦ªà¦¾à¦°à§à¦Ÿà¦¿:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "নিযà§à¦•à§à¦¤ করà§à¦¨ (Set)"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2238,7 +2330,7 @@ msgid "Copy Selection"
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অপসারণ করà§à¦¨"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2255,21 +2347,20 @@ msgstr "আউটপà§à¦Ÿ/ফলাফল"
#: editor/editor_network_profiler.cpp editor/editor_node.cpp
#: editor/editor_profiler.cpp
msgid "Stop"
-msgstr "থামান"
+msgstr "থামো"
#: editor/editor_network_profiler.cpp editor/editor_profiler.cpp
#: editor/plugins/animation_state_machine_editor.cpp editor/rename_dialog.cpp
-#, fuzzy
msgid "Start"
-msgstr "আরমà§à¦­!"
+msgstr "শà§à¦°à§"
#: editor/editor_network_profiler.cpp
msgid "%s/s"
-msgstr ""
+msgstr "%s/সে"
#: editor/editor_network_profiler.cpp
msgid "Down"
-msgstr "নীচে"
+msgstr "নিচে"
#: editor/editor_network_profiler.cpp
msgid "Up"
@@ -2277,7 +2368,7 @@ msgstr "উপরে"
#: editor/editor_network_profiler.cpp editor/editor_node.cpp
msgid "Node"
-msgstr "নোড"
+msgstr "শাখা"
#: editor/editor_network_profiler.cpp
msgid "Incoming RPC"
@@ -2305,7 +2396,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "সঠিক"
@@ -2523,20 +2615,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "'%s' বনà§à¦§ করার পূরà§à¦¬à§‡ পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ সংরকà§à¦·à¦£ করবেন?"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Saved %s modified resource(s)."
-msgstr "রিসোরà§à¦¸ লোড বà§à¦¯à¦°à§à¦¥ হয়েছে।"
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "বৃহৎ গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° জনà§à¦¯ শà§à¦§à§à¦®à¦¾à¦¤à§à¦° à¦à¦•টি ফাইল পà§à¦°à§Ÿà§‹à¦œà¦¨à¥¤"
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "দৃশà§à¦¯ à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "দৃশà§à¦¯ ছাড়া à¦à¦Ÿà¦¿ করা সমà§à¦­à¦¬ হবে না।"
@@ -2735,7 +2830,7 @@ msgstr "লেআউট/নকশা অপসারণ করà§à¦¨"
msgid "Default"
msgstr "সাধারণ/ডিফলà§à¦Ÿ"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
#, fuzzy
msgid "Show in FileSystem"
@@ -2934,6 +3029,11 @@ msgid "Orphan Resource Explorer..."
msgstr "মালিকবিহীন রিসোরà§à¦¸à§‡à¦° অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨à¦•ারী"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "নামহীন পà§à¦°à¦•লà§à¦ª"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° তালিকায় পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করà§à¦¨"
@@ -3101,15 +3201,14 @@ msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোà
msgid "Help"
msgstr "হেলà§à¦ª"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
+#: editor/editor_node.cpp
#, fuzzy
-msgid "Online Docs"
-msgstr "ডকà§à¦®à§‡à¦¨à§à¦Ÿà¦¸à¦®à§‚হ বনà§à¦§ করà§à¦¨"
+msgid "Online Documentation"
+msgstr "রেফারেনà§à¦¸à§‡à¦° ডকà§à¦®à§‡à¦¨à§à¦Ÿà§‡à¦¶à¦¨à§‡ খà§à¦à¦œà§à¦¨à¥¤"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Q&A"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3117,6 +3216,11 @@ msgid "Report a Bug"
msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "à¦à¦•টি মান নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -3127,7 +3231,7 @@ msgstr "সমà§à¦ªà§à¦°à¦¦à¦¾à§Ÿ"
#: editor/editor_node.cpp
#, fuzzy
-msgid "About"
+msgid "About Godot"
msgstr "সমà§à¦¬à¦¨à§à¦§à§‡"
#: editor/editor_node.cpp
@@ -3231,6 +3335,16 @@ msgid "Manage Templates"
msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "পà§à¦°à¦•লà§à¦ª ইনà§à¦¸à¦Ÿà¦² করà§à¦¨:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Mesh-à¦à¦° à¦à¦•টি উৎস নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3258,7 +3372,7 @@ msgstr "ZIP ফাইল হতে টেমপà§à¦²à§‡à¦Ÿ-সমূহ ইমà
msgid "Template Package"
msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "লাইবà§à¦°à§‡à¦°à¦¿ à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
@@ -3303,6 +3417,11 @@ msgstr "নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
#: editor/editor_node.cpp
#, fuzzy
+msgid "Select Current"
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরি করà§à¦¨"
+
+#: editor/editor_node.cpp
+#, fuzzy
msgid "Open 2D Editor"
msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨"
@@ -3341,6 +3460,11 @@ msgstr "সতরà§à¦•তা"
msgid "No sub-resources found."
msgstr "কোনো পৃষà§à¦ à¦¤à¦²à§‡à¦° উৎস নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করা নেই।"
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "কোনো পৃষà§à¦ à¦¤à¦²à§‡à¦° উৎস নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করা নেই।"
+
#: editor/editor_plugin.cpp
#, fuzzy
msgid "Creating Mesh Previews"
@@ -3368,34 +3492,35 @@ msgstr "ইনà§à¦¸à¦Ÿà¦²-কৃত পà§à¦²à¦¾à¦—ইন-সমূহ:"
msgid "Update"
msgstr "হালনাগাদ"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "সংসà§à¦•রণ:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "লেখক:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "অবসà§à¦¥à¦¾:"
+#, fuzzy
+msgid "Author"
+msgstr "লেখক"
#: editor/editor_plugin_settings.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
#, fuzzy
-msgid "Edit:"
-msgstr "সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (Edit)"
+msgid "Status"
+msgstr "অবসà§à¦¥à¦¾:"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "মাপ:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "ফà§à¦°à§‡à¦®-à¦à¦° সময় (সেঃ)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "গড় সময় (সেঃ)"
#: editor/editor_profiler.cpp
@@ -3416,6 +3541,16 @@ msgid "Self"
msgstr "সà§à¦¬à§€à¦¯à¦¼"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "ফà§à¦°à§‡à¦® #:"
@@ -3464,12 +3599,6 @@ msgstr "অকারà§à¦¯à¦•র পথ।"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3488,43 +3617,6 @@ msgid "Pick a Viewport"
msgstr "১ টি Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "নতà§à¦¨ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "Make Unique"
-msgstr "বোনà§â€Œ/হাড় তৈরি করà§à¦¨"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨/পেসà§à¦Ÿ করà§à¦¨"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "Convert To %s"
-msgstr "à¦à¦¤à§‡ রূপানà§à¦¤à¦° করà§à¦¨..."
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
#, fuzzy
msgid "Selected node is not a Viewport!"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° জনà§à¦¯ নোড(সমূহ) নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
@@ -3557,6 +3649,49 @@ msgstr "নতà§à¦¨ নাম:"
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Make Unique"
+msgstr "বোনà§â€Œ/হাড় তৈরি করà§à¦¨"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨/পেসà§à¦Ÿ করà§à¦¨"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "à¦à¦¤à§‡ রূপানà§à¦¤à¦° করà§à¦¨..."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "নতà§à¦¨ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Extend Script"
+msgstr "পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
+
#: editor/editor_run_native.cpp
#, fuzzy
msgid ""
@@ -3593,7 +3728,7 @@ msgstr "আপনি কি '_run' মেথডটি দিতে ভà§à¦²à§‡à
#: editor/editor_spin_slider.cpp
#, fuzzy
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"গেটার (Getter) তৈরি করতে/নামাতে কনà§à¦Ÿà§à¦°à§‹à¦² কী (Ctrl) চেপে রাখà§à¦¨à¥¤ জেনেরিক সিগনেচার "
"(generic signature) তৈরি করতে/নামাতে শিফট কী (Shift) চেপে রাখà§à¦¨à¥¤"
@@ -3615,125 +3750,70 @@ msgid "Import From Node:"
msgstr "নোড হতে ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "রিলোড"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Uninstall"
-msgstr "ইনà§à¦¸à¦Ÿà¦²"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "(Installed)"
-msgstr "ইনà§à¦¸à¦Ÿà¦²"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download"
-msgstr "নীচে"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(খà§à¦à¦œà§‡ পাওয়া যায়নি)"
+msgid "There are no mirrors available."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "(Current)"
-msgstr "বরà§à¦¤à¦®à¦¾à¦¨:"
-
-#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Retrieving the mirror list..."
msgstr "মিরর রিটà§à¦°à¦¾à¦‡à¦­ করা হচà§à¦›à§‡, দযা করে অপেকà§à¦·à¦¾ করà§à¦¨..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "টেমপà§à¦²à§‡à¦Ÿ ভারà§à¦¸à¦¨ '%s' রিমà§à¦­ করবেন?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà§‡à¦° zip খোলায় সমসà§à¦¯à¦¾ হয়েছে।"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "টেমপà§à¦²à§‡à¦Ÿ à¦à¦° version.txt ফরমà§à¦¯à¦¾à¦Ÿ গà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ নয়।"
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "টেমপà§à¦²à§‡à¦Ÿà§‡ version.txt খà§à¦à¦œà§‡ পাওয়া যায়নি।"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error creating path for templates:"
+msgid "Error requesting URL:"
msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে:"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Extracting Export Templates"
-msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ হচà§à¦›à§‡:"
+msgid "Connecting to the mirror..."
+msgstr "সংযোগ..."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error getting the list of mirrors."
-msgstr "সà§à¦¬à¦¾à¦•à§à¦·à¦°à¦¿à¦¤ বসà§à¦¤à§ (signature object) তৈরিতে সমসà§à¦¯à¦¾ হয়েছে।"
-
-#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"à¦à¦‡ ভারà§à¦¸à¦¨à§‡à¦° জনà§à¦¯ কোন ডাউনলোড লিঙà§à¦• পাওয়া যায় নি। সরাসরি ডাউনলোড অফিসিয়াল "
-"রিলিজের জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯à¥¤"
+msgid "Can't resolve the requested address."
+msgstr "হোসà§à¦Ÿà¦¨à¦¾à¦® রিসলভ করা যায়নি:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "সমসà§à¦¯à¦¾ সমাধানে বà§à¦¯à¦°à§à¦¥à¥¤"
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "নোডের সাথে সংযà§à¦•à§à¦¤ করà§à¦¨:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Can't connect."
-msgstr "সংযোগ..."
+msgid "No response from the mirror."
+msgstr "হোসà§à¦Ÿ থেকে কোন পà§à¦°à¦¤à¦¿à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾ নেই:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "কোন পà§à¦°à¦¤à¦¿à¦•à§à¦°à¦¿à§Ÿà¦¾ নেই।"
-
-#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Request Failed."
+msgid "Request failed."
msgstr "রিকà§à§Ÿà§‡à¦¸à§à¦Ÿ বà§à¦¯à¦°à§à¦¥ হয়েছে।"
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "লà§à¦ª পà§à¦¨à¦ƒà¦¨à¦¿à¦°à§à¦¦à§‡à¦¶ করà§à¦¨à¥¤"
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "অনà§à¦°à§‹à¦§ বà§à¦¯à¦°à§à¦¥ হয়েছে, অধিক সংখà§à¦¯à¦• রিডাইরেকà§à¦Ÿ à¦à¦° কারণে"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "বà§à¦¯à¦°à§à¦¥:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "রিকà§à§Ÿà§‡à¦¸à§à¦Ÿ বà§à¦¯à¦°à§à¦¥ হয়েছে।"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Download Complete."
-msgstr "নীচে"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3748,13 +3828,24 @@ msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error requesting URL:"
-msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে:"
+msgid "Error getting the list of mirrors."
+msgstr "সà§à¦¬à¦¾à¦•à§à¦·à¦°à¦¿à¦¤ বসà§à¦¤à§ (signature object) তৈরিতে সমসà§à¦¯à¦¾ হয়েছে।"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Connecting to Mirror..."
-msgstr "সংযোগ..."
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"à¦à¦‡ ভারà§à¦¸à¦¨à§‡à¦° জনà§à¦¯ কোন ডাউনলোড লিঙà§à¦• পাওয়া যায় নি। সরাসরি ডাউনলোড অফিসিয়াল "
+"রিলিজের জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯à¥¤"
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3809,52 +3900,142 @@ msgstr "ভà§à¦²/সমসà§à¦¯à¦¾-সমূহ লোড করà§à¦¨"
#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà§‡à¦° zip খোলায় সমসà§à¦¯à¦¾ হয়েছে।"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "টেমপà§à¦²à§‡à¦Ÿ à¦à¦° version.txt ফরমà§à¦¯à¦¾à¦Ÿ গà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ নয়।"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "টেমপà§à¦²à§‡à¦Ÿà§‡ version.txt খà§à¦à¦œà§‡ পাওয়া যায়নি।"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Extracting Export Templates"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ হচà§à¦›à§‡:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "টেমপà§à¦²à§‡à¦Ÿ ভারà§à¦¸à¦¨ '%s' রিমà§à¦­ করবেন?"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Uncompressing Android Build Sources"
msgstr "আনকমà§à¦ªà§à¦°à§‡à¦¸à§à¦¡ অà§à¦¯à¦¾à¦¸à§‡à¦Ÿà¦¸"
#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Export Template Manager"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Current Version:"
msgstr "বরà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯"
#: editor/export_template_manager.cpp
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Installed Versions:"
-msgstr "ইনà§à¦¸à¦Ÿà¦²-কৃত পà§à¦²à¦¾à¦—ইন-সমূহ:"
+msgid "Open Folder"
+msgstr "à¦à¦•টি ফাইল খà§à¦²à§à¦¨"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Install From File"
-msgstr "পà§à¦°à¦•লà§à¦ª ইনà§à¦¸à¦Ÿà¦² করà§à¦¨:"
+msgid "Uninstall"
+msgstr "ইনà§à¦¸à¦Ÿà¦²"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Remove Template"
-msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
+msgid "Download from:"
+msgstr "নীচে"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "টেমপà§à¦²à§‡à¦Ÿ ফাইল নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
-msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
+msgid "Install from File"
+msgstr "পà§à¦°à¦•লà§à¦ª ইনà§à¦¸à¦Ÿà¦² করà§à¦¨:"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Export Template Manager"
-msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
+msgid "Install templates from a local file."
+msgstr "ZIP ফাইল হতে টেমপà§à¦²à§‡à¦Ÿ-সমূহ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "বাতিল"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Download Templates"
-msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
+msgid "Cancel the download of the templates."
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà§‡à¦° zip খোলায় সমসà§à¦¯à¦¾ হয়েছে।"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "লিসà§à¦Ÿ থেকে মিরর নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨: "
+msgid "Other Installed Versions:"
+msgstr "ইনà§à¦¸à¦Ÿà¦²-কৃত পà§à¦²à¦¾à¦—ইন-সমূহ:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "ইনà§à¦¸à¦Ÿà¦²"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "টেমপà§à¦²à§‡à¦Ÿ ফাইল নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Godot Export Templates"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -4005,13 +4186,15 @@ msgstr "নতà§à¦¨ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
msgid "New Resource..."
msgstr "রিসোরà§à¦¸ à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Expand All"
msgstr "ধারক/বাহক পরà§à¦¯à¦¨à§à¦¤ বিসà§à¦¤à§ƒà¦¤ করà§à¦¨"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Collapse All"
@@ -4019,13 +4202,37 @@ msgstr "কলাপà§à¦¸ করà§à¦¨"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Duplicate..."
-msgstr "ডà§à¦ªà§à¦²à¦¿à¦•েট"
+msgid "Sort files"
+msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "Autoload সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করà§à¦¨"
+msgid "Duplicate..."
+msgstr "ডà§à¦ªà§à¦²à¦¿à¦•েট"
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
@@ -4033,6 +4240,10 @@ msgid "Rename..."
msgstr "পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "পূরà§à¦¬à§‡à¦° টà§à¦¯à¦¾à¦¬"
@@ -4077,7 +4288,7 @@ msgstr "পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
#: editor/filesystem_dock.cpp
msgid "Overwrite"
-msgstr ""
+msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨"
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -4123,10 +4334,6 @@ msgstr "খà§à¦à¦œà§à¦¨..."
msgid "Replace..."
msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "বাতিল"
-
#: editor/find_in_files.cpp
#, fuzzy
msgid "Find: "
@@ -4376,26 +4583,44 @@ msgstr "রিসোরà§à¦¸ লোড বà§à¦¯à¦°à§à¦¥ হয়েছে।"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Expand All Properties"
-msgstr "ধারক/বাহক পরà§à¦¯à¦¨à§à¦¤ বিসà§à¦¤à§ƒà¦¤ করà§à¦¨"
+msgid "Copy Properties"
+msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Collapse All Properties"
-msgstr "কলাপà§à¦¸ করà§à¦¨"
+msgid "Paste Properties"
+msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
+
+#: editor/inspector_dock.cpp
+msgid "Make Sub-Resources Unique"
+msgstr "উপ-রিসোরà§à¦¸à¦•ে অননà§à¦¯ হিসেবে তৈরি করà§à¦¨"
+
+#: editor/inspector_dock.cpp
+msgid "Create a new resource in memory and edit it."
+msgstr "মেমোরিতে নতà§à¦¨ à¦à¦•টি রিসোরà§à¦¸ তৈরি করà§à¦¨ à¦à¦¬à¦‚ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨à¥¤"
+
+#: editor/inspector_dock.cpp
+msgid "Load an existing resource from disk and edit it."
+msgstr "ডিসà§à¦• হতে à¦à¦•টি বিদà§à¦¯à¦®à¦¾à¦¨ রিসোরà§à¦¸ লোড করà§à¦¨ à¦à¦¬à¦‚ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨à¥¤"
+
+#: editor/inspector_dock.cpp
+msgid "Save the currently edited resource."
+msgstr "à¦à¦‡-মà§à¦¹à§‚রà§à¦¤à§‡ সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ রিসোরà§à¦¸à¦Ÿà¦¿ সংরকà§à¦·à¦£ করà§à¦¨à¥¤"
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Save As..."
msgstr "à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨..."
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "মানসমূহ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "রিসোরà§à¦¸à§‡à¦° পথে নয়।"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Edit Resource Clipboard"
+msgid "Edit Resource from Clipboard"
msgstr "রিসোরà§à¦¸à§‡à¦° কà§à¦²à§€à¦ªà¦¬à§‹à¦°à§à¦¡ খালি!"
#: editor/inspector_dock.cpp
@@ -4403,30 +4628,11 @@ msgid "Copy Resource"
msgstr "রিসোরà§à¦¸ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨"
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+#, fuzzy
+msgid "Make Resource Built-In"
msgstr "পূরà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¾à¦£ হিসেবে তৈরি করà§à¦¨"
#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "উপ-রিসোরà§à¦¸à¦•ে অননà§à¦¯ হিসেবে তৈরি করà§à¦¨"
-
-#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "সাহাযà§à¦¯à§‡à¦° পাতায় খà§à¦²à§à¦¨"
-
-#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "মেমোরিতে নতà§à¦¨ à¦à¦•টি রিসোরà§à¦¸ তৈরি করà§à¦¨ à¦à¦¬à¦‚ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨à¥¤"
-
-#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "ডিসà§à¦• হতে à¦à¦•টি বিদà§à¦¯à¦®à¦¾à¦¨ রিসোরà§à¦¸ লোড করà§à¦¨ à¦à¦¬à¦‚ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨à¥¤"
-
-#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "à¦à¦‡-মà§à¦¹à§‚রà§à¦¤à§‡ সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ রিসোরà§à¦¸à¦Ÿà¦¿ সংরকà§à¦·à¦£ করà§à¦¨à¥¤"
-
-#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
msgstr "সà§à¦®à§ƒà¦¤à¦¿à¦¤à§‡ অবসà§à¦¥à¦¿à¦¤ পূরà§à¦¬à§‡ সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ বসà§à¦¤à§à¦¤à§‡ যান।"
@@ -4439,8 +4645,14 @@ msgid "History of recently edited objects."
msgstr "সামà§à¦ªà§à¦°à¦¤à¦¿à¦• সময়ে সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ বসà§à¦¤à§à¦° সà§à¦®à§ƒà¦¤à¦¿à¥¤"
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "বসà§à¦¤à§à¦° বৈশিষà§à¦Ÿà§à¦¯à¦¸à¦®à§‚হ।"
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "রেফারেনà§à¦¸à§‡à¦° ডকà§à¦®à§‡à¦¨à§à¦Ÿà§‡à¦¶à¦¨à§‡ খà§à¦à¦œà§à¦¨à¥¤"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "রেফারেনà§à¦¸à§‡à¦° ডকà§à¦®à§‡à¦¨à§à¦Ÿà§‡à¦¶à¦¨à§‡ খà§à¦à¦œà§à¦¨à¥¤"
#: editor/inspector_dock.cpp
#, fuzzy
@@ -4449,6 +4661,11 @@ msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
#: editor/inspector_dock.cpp
#, fuzzy
+msgid "Manage object properties."
+msgstr "বসà§à¦¤à§à¦° বৈশিষà§à¦Ÿà§à¦¯à¦¸à¦®à§‚হ।"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
msgid "Changes may be lost!"
msgstr "ছবির গà§à¦°à§à¦ª পরিবরà§à¦¤à¦¨ করà§à¦¨"
@@ -4480,6 +4697,15 @@ msgstr "পà§à¦²à¦¾à¦—ইন-সমূহ"
msgid "Subfolder:"
msgstr "উপফোলà§à¦¡à¦¾à¦°:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "লেখক:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "সংসà§à¦•রণ:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
#, fuzzy
msgid "Language:"
@@ -4712,7 +4938,7 @@ msgstr "বà§à¦²à§‡à¦¨à§à¦¡/মিশà§à¦°à¦£:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr "পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ হাল-নাগাদ করà§à¦¨"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4947,6 +5173,11 @@ msgid "Animation"
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "নতà§à¦¨"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "অনà§à¦¬à¦¾à¦¦à¦¸à¦®à§‚হ"
@@ -5305,11 +5536,21 @@ msgid "View Files"
msgstr "ফাইল"
#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Download"
+msgstr "নীচে"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "সংযোগ তà§à¦°à§à¦Ÿà¦¿, আবার চেষà§à¦Ÿà¦¾ করà§à¦¨à¥¤"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
+msgid "Can't connect."
+msgstr "সংযোগ..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
msgid "Can't connect to host:"
msgstr "নোডের সাথে সংযà§à¦•à§à¦¤ করà§à¦¨:"
@@ -5318,18 +5559,21 @@ msgid "No response from host:"
msgstr "হোসà§à¦Ÿ থেকে কোন পà§à¦°à¦¤à¦¿à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾ নেই:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "কোন পà§à¦°à¦¤à¦¿à¦•à§à¦°à¦¿à§Ÿà¦¾ নেই।"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "হোসà§à¦Ÿà¦¨à¦¾à¦® রিসলভ করা যায়নি:"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "আবেদনকৃত ফাইল ফরমà§à¦¯à¦¾à¦Ÿ/ধরণ অজানা:"
+msgid "Can't resolve."
+msgstr "সমসà§à¦¯à¦¾ সমাধানে বà§à¦¯à¦°à§à¦¥à¥¤"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Request failed."
-msgstr "রিকà§à§Ÿà§‡à¦¸à§à¦Ÿ বà§à¦¯à¦°à§à¦¥ হয়েছে।"
+msgid "Request failed, return code:"
+msgstr "আবেদনকৃত ফাইল ফরমà§à¦¯à¦¾à¦Ÿ/ধরণ অজানা:"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
@@ -5360,6 +5604,10 @@ msgid "Timeout."
msgstr "সময়:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "বà§à¦¯à¦°à§à¦¥:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "ডাউনলোড হà§à¦¯à¦¾à¦¶ তà§à¦°à§à¦Ÿà¦¿à¦¯à§à¦•à§à¦¤, কাংখিত ফাইলটি কà§à¦·à¦¤à¦¿à¦—à§à¦°à¦¸à§à¦¤ হয়েছে।"
@@ -5471,7 +5719,11 @@ msgid "All"
msgstr "সকল"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5518,6 +5770,10 @@ msgstr "লোড"
msgid "Assets ZIP File"
msgstr "পà§à¦°à¦¯à¦¼à§‡à¦¾à¦œà¦¨à§€à¦¯à¦¼ উপকরণসমূহের ZIP ফাইল"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5526,8 +5782,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5793,15 +6049,16 @@ msgstr "অà§à¦¯à¦¾à¦‚করসমূহ পরিবরà§à¦¤à¦¨ করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5862,6 +6119,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
@@ -5874,20 +6132,32 @@ msgid "Select Mode"
msgstr "মোড (Mode) বাছাই করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "টান: ঘূরà§à¦£à¦¨"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ টà§à¦°à§à¦¯à¦¾à¦•/পথ অপসারণ করà§à¦¨à¥¤"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "অলà§à¦Ÿà¦¾à¦° কী + টান: সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦°"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
-msgstr "কেনà§à¦¦à§à¦° পরিবরà§à¦¤à¦¨ করতে 'v' চাপà§à¦¨, কেনà§à¦¦à§à¦° টানতে 'Shift+v' চাপà§à¦¨ (যখন সরাচà§à¦›à§‡à¦¨)।"
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ টà§à¦°à§à¦¯à¦¾à¦•/পথ অপসারণ করà§à¦¨à¥¤"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "অলà§à¦Ÿà¦¾à¦° কী + মাউসের ডান বোতাম: গভীর তালিকায় নিরà§à¦¬à¦¾à¦šà¦¨"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+"কà§à¦²à¦¿à¦•-কৃত সà§à¦¥à¦¾à¦¨à§‡ সকল বসà§à¦¤à§à¦° à¦à¦•টি তালিকা দেখà§à¦¨\n"
+"(ঠিক যেমন সিলেকà§à¦Ÿ মোডে অলà§à¦Ÿà¦¾à¦° কী (Alt) + মাউসের ডান বোতাম (RMB))।"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -6148,6 +6418,16 @@ msgid "Clear Pose"
msgstr "ভঙà§à¦—ি পরিষà§à¦•ার করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "নোড সংযোজন করà§à¦¨"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "দৃশà§à¦¯(সমূহ) ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করà§à¦¨"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "গà§à¦°à¦¿à¦¡ সà§à¦Ÿà§‡à¦ª দà§à¦¬à¦¿à¦—à§à¦£ সংখà§à¦¯à¦• বৃদà§à¦§à¦¿ করà§à¦¨"
@@ -6161,6 +6441,52 @@ msgid "Pan View"
msgstr "পশà§à¦šà¦¾à§Ž দরà§à¦¶à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "সংকà§à¦šà¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ আউট)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "সংকà§à¦šà¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ আউট)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "সংকà§à¦šà¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ আউট)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "সংকà§à¦šà¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ আউট)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "সংকà§à¦šà¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ আউট)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "সংকà§à¦šà¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ আউট)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "%s সংযà§à¦•à§à¦¤ করà§à¦¨"
@@ -6430,6 +6756,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "কনভেকà§à¦¸ আকার তৈরি করà§à¦¨"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "কনভেকà§à¦¸ আকার তৈরি করà§à¦¨"
@@ -6464,7 +6795,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6525,13 +6856,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "কনভেকà§à¦¸ কলিশ়ন সহোদর তৈরি করà§à¦¨"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "কনভেকà§à¦¸ কলিশ়ন সহোদর তৈরি করà§à¦¨"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6589,7 +6933,6 @@ msgid "Mesh Library"
msgstr "MeshLibrary (মেস-লাইবà§à¦°à§‡à¦°à¦¿)..."
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "বসà§à¦¤à§ যোগ করà§à¦¨"
@@ -6877,7 +7220,8 @@ msgid "Close Curve"
msgstr "বকà§à¦°à¦°à§‡à¦–া বনà§à¦§ করà§à¦¨"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ"
@@ -7211,6 +7555,24 @@ msgstr "রিসোরà§à¦¸ লোড করà§à¦¨"
msgid "ResourcePreloader"
msgstr "রিসোরà§à¦¸-à¦à¦° পথ"
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "উৎপাদিত বিনà§à¦¦à§à¦° সংখà§à¦¯à¦¾:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "উৎপাদিত বিনà§à¦¦à§à¦° সংখà§à¦¯à¦¾:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7435,7 +7797,7 @@ msgstr "চালান"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
@@ -7467,6 +7829,12 @@ msgid "Debug with External Editor"
msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#, fuzzy
+msgid "Online Docs"
+msgstr "ডকà§à¦®à§‡à¦¨à§à¦Ÿà¦¸à¦®à§‚হ বনà§à¦§ করà§à¦¨"
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation."
msgstr "রেফারেনà§à¦¸à§‡à¦° ডকà§à¦®à§‡à¦¨à§à¦Ÿà§‡à¦¶à¦¨à§‡ খà§à¦à¦œà§à¦¨à¥¤"
@@ -7603,8 +7971,8 @@ msgstr ""
msgid "Cut"
msgstr "করà§à¦¤à¦¨/কাট করà§à¦¨"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "সবগà§à¦²à¦¿ বাছাই করà§à¦¨"
@@ -7639,10 +8007,6 @@ msgid "Unfold All Lines"
msgstr "সবগà§à¦²à¦¿ লাইন আনফোলà§à¦¡ করà§à¦¨"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "কà§à¦²à§‹à¦¨ করে নীচে নিন"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "সিমà§à¦¬à¦² সমà§à¦ªà§‚রà§à¦£ করà§à¦¨"
@@ -7814,6 +8178,29 @@ msgid "View Plane Transform."
msgstr "পà§à¦²à§‡à¦¨-à¦à¦° রà§à¦ªà¦¾à¦¨à§à¦¤à¦° দেখà§à¦¨à¥¤"
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
+msgstr "<নান/কিছà§à¦‡ না>"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "পà§à¦°à¦¦à§‡à¦¶/রাজà§à¦¯"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° (Translate):"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "সà§à¦•েল/মাপ:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Scaling: "
msgstr "সà§à¦•েল/মাপ:"
@@ -7836,47 +8223,54 @@ msgid "Animation Key Inserted."
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° চাবি সনà§à¦¨à¦¿à¦¬à§‡à¦¶à¦¿à¦¤ হয়েছে।"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "পিচà§â€Œ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Size"
+msgid "Size:"
msgstr "সেল (Cell)-à¦à¦° আকার:"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "অবজেকà§à¦Ÿ আà¦à¦•া হয়েছে"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr "পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ হাল-নাগাদ করà§à¦¨"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr "পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ হাল-নাগাদ করà§à¦¨"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr "পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ হাল-নাগাদ করà§à¦¨"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "ডà§à¦° কলস"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Vertices"
+msgid "Vertices:"
msgstr "ভারটেকà§à¦¸"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "শীরà§à¦· দরà§à¦¶à¦¨à¥¤"
@@ -8045,6 +8439,11 @@ msgstr "ফà§à¦°à¦¿ লà§à¦• সà§à¦ªà¦¿à¦¡ মডিফায়ার"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Camera à¦à¦° আকার পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "View Rotation Locked"
msgstr "তথà§à¦¯ দেখà§à¦¨"
@@ -8060,6 +8459,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "à¦à¦¤à§‡ রূপানà§à¦¤à¦° করà§à¦¨..."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm à¦à¦° সংলাপ"
@@ -8074,7 +8478,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª মোড:"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8083,14 +8487,6 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr "অলà§à¦Ÿà¦¾à¦° কী + মাউসের ডান বোতাম: গভীর তালিকায় নিরà§à¦¬à¦¾à¦šà¦¨"
-
-#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Use Local Space"
msgstr "মাপের মোড করà§à¦¨ (R)"
@@ -8099,6 +8495,10 @@ msgid "Use Snap"
msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "নিমà§à¦¨ দরà§à¦¶à¦¨"
@@ -8196,6 +8596,11 @@ msgid "View Grid"
msgstr "গà§à¦°à¦¿à¦¡ দেখà§à¦¨"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Viewport সেটিংস"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Settings..."
@@ -8521,12 +8926,6 @@ msgid "Snap Mode:"
msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª মোড:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<নান/কিছà§à¦‡ না>"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "পিকà§à¦¸à§‡à¦² সà§à¦¨à§à¦¯à¦¾à¦ª"
@@ -8547,8 +8946,8 @@ msgid "Step:"
msgstr "পদকà§à¦·à§‡à¦ª:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "বিভকà§à¦¤à¦•ারক:"
+msgid "Separation:"
+msgstr "বিচà§à¦›à§‡à¦¦:"
#: editor/plugins/texture_region_editor_plugin.cpp
#, fuzzy
@@ -8556,172 +8955,606 @@ msgid "TextureRegion"
msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° à¦à¦²à¦¾à¦•া"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "সকল বসà§à¦¤à§ যোগ করà§à¦¨"
+#, fuzzy
+msgid "Colors"
+msgstr "রঙ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "সবগà§à¦²à¦¿ যোগ করà§à¦¨"
+#, fuzzy
+msgid "Fonts"
+msgstr "ফনà§à¦Ÿ"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All Items"
+msgid "Icons"
+msgstr "আইকন"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "সà§à¦Ÿà¦¾à¦‡à¦²"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "কোনো পৃষà§à¦ à¦¤à¦²à§‡à¦° উৎস নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করা নেই।"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "ধà§à¦°à§à¦¬à¦•সমূহ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "ধà§à¦°à§à¦¬à¦•/কনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦Ÿ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "খà§à¦à¦œà§‡ পাওয়া যায়নি!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "খà§à¦à¦œà§‡ পাওয়া যায়নি!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "কোনো পৃষà§à¦ à¦¤à¦²à§‡à¦° উৎস নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করা নেই।"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "থিম ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "à¦à¦¡à¦¿à¦Ÿà¦° হতে পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করবেন?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "বিশà§à¦²à§‡à¦·à¦£ হচà§à¦›à§‡"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "ফিলà§à¦Ÿà¦¾à¦°:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "à¦à¦•টি নোড নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "à¦à¦•টি সেটিং আইটেম পà§à¦°à¦¥à¦® নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "à¦à¦•টি সেটিং আইটেম পà§à¦°à¦¥à¦® নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "à¦à¦•টি সেটিং আইটেম পà§à¦°à¦¥à¦® নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "à¦à¦•টি সেটিং আইটেম পà§à¦°à¦¥à¦® নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "à¦à¦•টি সেটিং আইটেম পà§à¦°à¦¥à¦® নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "à¦à¦•টি সেটিং আইটেম পà§à¦°à¦¥à¦® নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "কলাপà§à¦¸ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "ধারক/বাহক পরà§à¦¯à¦¨à§à¦¤ বিসà§à¦¤à§ƒà¦¤ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "টেমপà§à¦²à§‡à¦Ÿ ফাইল নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "বিনà§à¦¦à§à¦¸à¦®à§‚হ নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "সবগà§à¦²à¦¿ বাছাই করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম অপসারণ করà§à¦¨"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All"
-msgstr "অপসারণ করà§à¦¨"
+msgid "Rename Item"
+msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "থিম à¦à¦¡à¦¿à¦Ÿ করà§à¦¨..."
+msgid "Remove All Constant Items"
+msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম অপসারণ করà§à¦¨"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "থিম à¦à¦¡à¦¿à¦Ÿ করার মেনà§à¥¤"
+#, fuzzy
+msgid "Add Color Item"
+msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম যোগ করà§à¦¨"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম যোগ করà§à¦¨"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "বসà§à¦¤à§ যোগ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "বসà§à¦¤à§ যোগ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "সকল বসà§à¦¤à§ যোগ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "নোড পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "নোড পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ বসà§à¦¤à§à¦Ÿà¦¿ অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "ফাইল অডিও বাস লেআউট হিসেবে বà§à¦¯à¦¾à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ নয়।"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "সমà§à¦ªà¦¾à¦¦à¦¨à¦¯à§‹à¦—à§à¦¯ অংশীদারীসমূহ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "ধরণ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "ধরণ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "বসà§à¦¤à§ যোগ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "সকল বসà§à¦¤à§ যোগ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম অপসারণ করà§à¦¨"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "খালি টেমপà§à¦²à§‡à¦Ÿ তৈরি করà§à¦¨"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° আইটেম অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "GUI থিম à¦à¦° বসà§à¦¤à§à¦¸à¦®à§‚হ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "নোডের নাম:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "থিম ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "সাধারণ/ডিফলà§à¦Ÿ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "থিম à¦à¦¡à¦¿à¦Ÿ করà§à¦¨..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "রিসোরà§à¦¸ অপসারণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "থিম ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) টà§à¦°à§à¦¯à¦¾à¦•/পথ-à¦à¦° নাম পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "ওভাররাইড..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "ধরণ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "বসà§à¦¤à§ যোগ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "নোডের ধরণ সনà§à¦§à¦¾à¦¨ করà§à¦¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "লোড ডিফলà§à¦Ÿ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "ওভাররাইড..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "থিম"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡à¦° খালি টেমপà§à¦²à§‡à¦Ÿ তৈরি করà§à¦¨"
+#, fuzzy
+msgid "Manage Items..."
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Create From Current Editor Theme"
-msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡à¦° খালি টেমপà§à¦²à§‡à¦Ÿ তৈরি করà§à¦¨"
+msgid "Add Preview"
+msgstr "পà§à¦°à¦¿à¦­à¦¿à¦‰"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ পà§à¦°à¦¿à¦­à¦¿à¦‰"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Mesh-à¦à¦° à¦à¦•টি উৎস নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
msgid "Toggle Button"
msgstr "মাউসের বোতাম"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled Button"
msgstr "মধà§à¦¯ বোতাম"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "বসà§à¦¤à§/আইটেম"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled Item"
msgstr "অসমরà§à¦¥"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "আইটেম চিহà§à¦¨à¦¿à¦¤ করà§à¦¨"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "চিহà§à¦¨à¦¿à¦¤ আইটেম"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Radio Item"
msgstr "বসà§à¦¤à§ যোগ করà§à¦¨"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Checked Radio Item"
msgstr "চিহà§à¦¨à¦¿à¦¤ আইটেম"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
-msgstr ""
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
+msgstr "বিচà§à¦›à§‡à¦¦:"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Subitem 1"
msgstr "বসà§à¦¤à§/আইটেম"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Subitem 2"
msgstr "বসà§à¦¤à§/আইটেম"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "আছে"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "অনেক"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled LineEdit"
msgstr "অসমরà§à¦¥"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "টà§à¦¯à¦¾à¦¬ à§§"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "টà§à¦¯à¦¾à¦¬ ২"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "টà§à¦¯à¦¾à¦¬ à§©"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Editable Item"
msgstr "সমà§à¦ªà¦¾à¦¦à¦¨à¦¯à§‹à¦—à§à¦¯ অংশীদারীসমূহ"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Has,Many,Options"
msgstr "আছে,অনেক,à¦à¦•াধিক,সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ!"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "ডাটার ধরণ:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "আইকন"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "সà§à¦Ÿà¦¾à¦‡à¦²"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "ফনà§à¦Ÿ"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "রঙ"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "থিম"
+msgid "Invalid file, not a PackedScene resource."
+msgstr "ফাইল অডিও বাস লেআউট হিসেবে বà§à¦¯à¦¾à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ নয়।"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
@@ -8914,6 +9747,10 @@ msgid "Priority"
msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ মোড:"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "আইকন"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid "Z Index"
msgstr "ইনà§à¦¡à§‡à¦•à§à¦¸:"
@@ -9283,12 +10120,6 @@ msgid "Commit Changes"
msgstr "সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿà§‡à¦° পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ সà§à¦¸à¦‚গত/সমনà§à¦¬à§Ÿ করà§à¦¨"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#, fuzzy
-msgid "Status"
-msgstr "অবসà§à¦¥à¦¾:"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -10156,7 +10987,7 @@ msgstr "শেডার"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "নোড ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -10293,7 +11124,8 @@ msgid "Script"
msgstr "নতà§à¦¨ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ মোড:"
#: editor/project_export.cpp
@@ -10301,19 +11133,20 @@ msgid "Text"
msgstr "টেকà§à¦¸à¦Ÿ"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "কমà§à¦ªà¦¾à¦‡à¦²à§à¦¡"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "à¦à¦¨à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ করà§à¦¨ (নীচে কী/চাবি দিন)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ à¦à¦¨à¦•à§à¦°à¦¿à¦ªà¦¶à¦¨ কী/চাবি (২৫৬-বিটস হেকà§à¦¸):"
#: editor/project_export.cpp
@@ -10397,7 +11230,7 @@ msgstr "পà§à¦°à¦•লà§à¦ª ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা হয়েছে
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° নাম:"
#: editor/project_manager.cpp
@@ -10436,6 +11269,20 @@ msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথে engine.cfg তৈরি করা
#: editor/project_manager.cpp
#, fuzzy
+msgid "Error opening package file, not in ZIP format."
+msgstr "জিপ ফরমà§à¦¯à¦¾à¦Ÿ খà§à¦à¦œà§‡ পেতে বà§à¦¯à¦¾à¦°à§à¦¥, পà§à¦¯à¦¾à¦•েজ ফাইল ওপেন করা যায়নি।"
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "পà§à¦¯à¦¾à¦•েজ হতে নীমà§à¦¨à§‹à¦•à§à¦¤ ফাইলসমূহ à¦à¦•à§à¦¸à¦Ÿà§à¦°à¦¾à¦•à§à¦Ÿ করা অসফল হয়েছে:"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Package installed successfully!"
+msgstr "পà§à¦¯à¦¾à¦•েজ ইনà§à¦¸à¦Ÿà¦² সমà§à¦ªà¦¨à§à¦¨ হয়েছে!"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Rename Project"
msgstr "নামহীন পà§à¦°à¦•লà§à¦ª"
@@ -10594,17 +11441,13 @@ msgstr "à¦à¦•ধিক পà§à¦°à¦•লà§à¦ª চালানোয় আপনি
#: editor/project_manager.cpp
#, fuzzy
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr "তালিকা হতে পà§à¦°à¦•লà§à¦ª অপসারণ করবেন? (ফোলà§à¦¡à¦¾à¦°à§‡à¦° বিষয়াদি পরিবরà§à¦¤à¦¨ হবে না)"
+msgid "Remove %d projects from the list?"
+msgstr "লিসà§à¦Ÿ থেকে ডিভাইস সিলেকà§à¦Ÿ করà§à¦¨"
#: editor/project_manager.cpp
#, fuzzy
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr "তালিকা হতে পà§à¦°à¦•লà§à¦ª অপসারণ করবেন? (ফোলà§à¦¡à¦¾à¦°à§‡à¦° বিষয়াদি পরিবরà§à¦¤à¦¨ হবে না)"
+msgid "Remove this project from the list?"
+msgstr "লিসà§à¦Ÿ থেকে ডিভাইস সিলেকà§à¦Ÿ করà§à¦¨"
#: editor/project_manager.cpp
#, fuzzy
@@ -10638,7 +11481,7 @@ msgstr "পà§à¦°à¦œà§‡à¦•à§à¦Ÿ মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª"
#: editor/project_manager.cpp
@@ -10651,10 +11494,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "পà§à¦°à¦•লà§à¦ª à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "নামহীন পà§à¦°à¦•লà§à¦ª"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "সà§à¦•à§à¦¯à¦¾à¦¨"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "সà§à¦•à§à¦¯à¦¾à¦¨ করার জনà§à¦¯ ফোলà§à¦¡à¦¾à¦° নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨"
@@ -10664,13 +11522,28 @@ msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "পà§à¦°à¦•লà§à¦ª ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা হয়েছে"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "নামহীন পà§à¦°à¦•লà§à¦ª"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "পথের বিনà§à¦¦à§ অপসারণ করà§à¦¨"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Templates"
-msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
+msgid "About"
+msgstr "সমà§à¦¬à¦¨à§à¦§à§‡"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "লাইবà§à¦°à§‡à¦°à¦¿ à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
#: editor/project_manager.cpp
#, fuzzy
@@ -10679,6 +11552,15 @@ msgstr "পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­ (সেঃ):"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Remove All"
+msgstr "অপসারণ করà§à¦¨"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Can't run project"
msgstr "সংযোগ..."
@@ -10689,8 +11571,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10700,6 +11587,10 @@ msgid "Key "
msgstr "কী/চাবি "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "জয়সà§à¦Ÿà¦¿à¦• বোতাম"
@@ -10744,6 +11635,10 @@ msgstr "ডিভাইস/যনà§à¦¤à§à¦°"
msgid "Device"
msgstr "ডিভাইস/যনà§à¦¤à§à¦°"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "যেকোনো কী/চাবি চাপà§à¦¨..."
@@ -10895,7 +11790,8 @@ msgid "Override for Feature"
msgstr "ফিচার ওভাররাইড"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "অনà§à¦¬à¦¾à¦¦ সংযোগ করà§à¦¨"
#: editor/project_settings_editor.cpp
@@ -10903,11 +11799,13 @@ msgid "Remove Translation"
msgstr "অনà§à¦¬à¦¾à¦¦ অপসারণ করà§à¦¨"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "পà§à¦¨à¦ƒ-চিতà§à¦°à¦¾à¦™à§à¦•িত পথ যোগ করà§à¦¨"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "রিসোরà§à¦¸ পà§à¦¨à¦ƒ-চিতà§à¦°à¦¾à¦™à§à¦•িত করে যà§à¦•à§à¦¤ করà§à¦¨"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "রিসোরà§à¦¸ পà§à¦¨à¦ƒ-চিতà§à¦°à¦¾à¦™à§à¦•িত করে যà§à¦•à§à¦¤ করà§à¦¨"
#: editor/project_settings_editor.cpp
@@ -11127,7 +12025,7 @@ msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§
#: editor/rename_dialog.cpp
msgid "Substitute"
-msgstr ""
+msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨"
#: editor/rename_dialog.cpp
#, fuzzy
@@ -11196,6 +12094,10 @@ msgid "Post-Process"
msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾-পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ:"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "সà§à¦Ÿà¦¾à¦‡à¦²"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "রাখà§à¦¨"
@@ -11374,12 +12276,30 @@ msgid "Delete node \"%s\"?"
msgstr "নোড(সমূহ) অপসারণ করà§à¦¨"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "রà§à¦Ÿ নোডের জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯ নয়।"
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করা দৃশà§à¦¯à§‡ à¦à¦Ÿà¦¿ করা সমà§à¦­à¦¬ হবে না।"
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -11440,6 +12360,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "বরà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯ যার হতে উৎপতà§à¦¤à¦¿ হয় তার নোডে à¦à¦Ÿà¦¿ করা সমà§à¦­à¦¬ হবে না!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করা দৃশà§à¦¯à§‡ à¦à¦Ÿà¦¿ করা সমà§à¦­à¦¬ হবে না।"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ সংযà§à¦•à§à¦¤ করà§à¦¨"
@@ -11491,11 +12415,6 @@ msgid "Load As Placeholder"
msgstr "পà§à¦²à§‡à¦¸à¦¹à§‹à¦²à§à¦¡à¦¾à¦° হিসেবে লোড করà§à¦¨"
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "রেফারেনà§à¦¸à§‡à¦° ডকà§à¦®à§‡à¦¨à§à¦Ÿà§‡à¦¶à¦¨à§‡ খà§à¦à¦œà§à¦¨à¥¤"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11820,6 +12739,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "কà§à¦²à¦¾à¦¸ নাম:"
@@ -11901,6 +12826,10 @@ msgid "Copy Error"
msgstr "ভà§à¦²/সমসà§à¦¯à¦¾-সমূহ লোড করà§à¦¨"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Video RAM"
msgstr "ভিডিও মেমোরি"
@@ -12125,7 +13054,7 @@ msgstr ""
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Platform:"
-msgstr ""
+msgstr "পà§à¦²à§à¦¯à¦¾à¦Ÿà¦«à¦°à§à¦®:"
#: modules/gdnative/gdnative_library_editor_plugin.cpp
#, fuzzy
@@ -12205,6 +13134,16 @@ msgstr "ভà§à¦² dictionary ফরমà§à¦¯à¦¾à¦Ÿ (ভà§à¦² subclasses)"
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Mesh Library à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -12254,6 +13193,11 @@ msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª সেটিংস"
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
+msgid "GridMap Selection"
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অপসারণ করà§à¦¨"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Grid Map"
msgstr "গà§à¦°à¦¿à¦¡ সà§à¦¨à§à¦¯à¦¾à¦ª"
@@ -12534,6 +13478,16 @@ msgstr "ইনপà§à¦Ÿ যোগ করà§à¦¨"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "ধরণ পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "ইনপà§à¦Ÿ নাম পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr ""
"অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ নাম। নামটি অবশà§à¦¯à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨ পূরà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ ধরণের নামের সাথে পরমà§à¦ªà¦°à¦¬à¦¿à¦°à§‡à¦¾à¦§à§€ "
@@ -12662,6 +13616,11 @@ msgid "Add Preload Node"
msgstr "পà§à¦°à¦¿à¦²à§‹à¦¡ নোড যà§à¦•à§à¦¤ করà§à¦¨"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "নোড সংযোজন করà§à¦¨"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "শাখা (tree) হতে নোড (সমূহ) যà§à¦•à§à¦¤ করà§à¦¨"
@@ -12910,10 +13869,6 @@ msgstr "Shader Graph Node অপসারণ করà§à¦¨"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12943,6 +13898,40 @@ msgid "Select device from the list"
msgstr "লিসà§à¦Ÿ থেকে ডিভাইস সিলেকà§à¦Ÿ করà§à¦¨"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "%s à¦à¦° জনà§à¦¯ à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ (export) হচà§à¦›à§‡"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "ইনà§à¦¸à¦Ÿà¦²"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "মিরর রিটà§à¦°à¦¾à¦‡à¦­ করা হচà§à¦›à§‡, দযা করে অপেকà§à¦·à¦¾ করà§à¦¨..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "দৃশà§à¦¯ ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করা সমà§à¦­à¦¬ হয়নি!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ চালানো হচà§à¦›à§‡..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -13040,6 +14029,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"ফাইল সà§à¦•à§à¦¯à¦¾à¦¨ করা হচà§à¦›à§‡,\n"
+"অনà§à¦—à§à¦°à¦¹à¦ªà§‚রà§à¦¬à¦• অপেকà§à¦·à¦¾ করà§à¦¨..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "%s সংযà§à¦•à§à¦¤ হচà§à¦›à§‡..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "%s à¦à¦° জনà§à¦¯ à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ (export) হচà§à¦›à§‡"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -13052,6 +14083,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -13066,6 +14101,21 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথে engine.cfg তৈরি করা সমà§à¦­à¦¬ হয়নি।"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -13085,11 +14135,54 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° সরঞà§à¦œà¦¾à¦®à¦¸à¦®à§‚হ"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "ওকটà§à¦°à§€ (octree) গঠনবিনà§à¦¯à¦¾à¦¸ তৈরি করা হচà§à¦›à§‡"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "%s সংযà§à¦•à§à¦¤ হচà§à¦›à§‡..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
msgstr "নামটি কারà§à¦¯à¦•র সনাকà§à¦¤à¦•ারী নয়:"
@@ -13122,11 +14215,6 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
-msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
-
-#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not open template for export:"
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
@@ -13137,19 +14225,50 @@ msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ à
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:"
+msgid "Could not read file:"
msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Using default boot splash image."
+msgid "Could not read HTML shell:"
msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "দৃশà§à¦¯ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে।"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "নামটি কারà§à¦¯à¦•র সনাকà§à¦¤à¦•ারী নয়:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
+
#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
@@ -13542,6 +14661,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -13616,6 +14742,18 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid ""
@@ -13623,6 +14761,46 @@ msgid ""
"derived node to work."
msgstr "Path à¦à¦° দিক অবশà§à¦¯à¦‡ à¦à¦•টি কারà§à¦¯à¦•র Spatial নোডের à¦à¦° দিকে নিরà§à¦¦à§‡à¦¶ করাতে হবে।"
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -13677,6 +14855,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° সরঞà§à¦œà¦¾à¦®à¦¸à¦®à§‚হ"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -13841,21 +15023,211 @@ msgid "Invalid comparison function for that type."
msgstr "অকারà§à¦¯à¦•র উৎস!"
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#, fuzzy
+#~ msgid "Package Contents:"
+#~ msgstr "ধà§à¦°à§à¦¬à¦•সমূহ:"
+
+#~ msgid "Singleton"
+#~ msgstr "à¦à¦•ক-বসà§à¦¤à§/সিঙà§à¦—েলটোন"
+
+#, fuzzy
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "সমসà§à¦¤à¦—à§à¦²à¦¿ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#, fuzzy
+#~ msgid "Enabled Properties:"
+#~ msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸ :"
+
+#, fuzzy
+#~ msgid "Class Options"
+#~ msgstr "বরà§à¦£à¦¨à¦¾:"
+
+#~ msgid "Set"
+#~ msgstr "নিযà§à¦•à§à¦¤ করà§à¦¨ (Set)"
+
+#, fuzzy
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "রিসোরà§à¦¸ লোড বà§à¦¯à¦°à§à¦¥ হয়েছে।"
+
+#~ msgid "Q&A"
+#~ msgstr "Q&A"
+
+#~ msgid "Status:"
+#~ msgstr "অবসà§à¦¥à¦¾:"
+
+#, fuzzy
+#~ msgid "Edit:"
+#~ msgstr "সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (Edit)"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "রিলোড"
+
+#, fuzzy
+#~ msgid "(Installed)"
+#~ msgstr "ইনà§à¦¸à¦Ÿà¦²"
+
+#~ msgid "(Missing)"
+#~ msgstr "(খà§à¦à¦œà§‡ পাওয়া যায়নি)"
+
+#, fuzzy
+#~ msgid "Request Failed."
+#~ msgstr "রিকà§à§Ÿà§‡à¦¸à§à¦Ÿ বà§à¦¯à¦°à§à¦¥ হয়েছে।"
+
+#~ msgid "Redirect Loop."
+#~ msgstr "লà§à¦ª পà§à¦¨à¦ƒà¦¨à¦¿à¦°à§à¦¦à§‡à¦¶ করà§à¦¨à¥¤"
+
+#, fuzzy
+#~ msgid "Download Complete."
+#~ msgstr "নীচে"
+
+#, fuzzy
+#~ msgid "Remove Template"
+#~ msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
+
+#, fuzzy
+#~ msgid "Download Templates"
+#~ msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
+
+#, fuzzy
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "লিসà§à¦Ÿ থেকে মিরর নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨: "
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Autoload সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করà§à¦¨"
+
+#, fuzzy
+#~ msgid "Expand All Properties"
+#~ msgstr "ধারক/বাহক পরà§à¦¯à¦¨à§à¦¤ বিসà§à¦¤à§ƒà¦¤ করà§à¦¨"
+
+#, fuzzy
+#~ msgid "Collapse All Properties"
+#~ msgstr "কলাপà§à¦¸ করà§à¦¨"
+
+#~ msgid "Copy Params"
+#~ msgstr "মানসমূহ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨"
+
+#~ msgid "Open in Help"
+#~ msgstr "সাহাযà§à¦¯à§‡à¦° পাতায় খà§à¦²à§à¦¨"
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "টান: ঘূরà§à¦£à¦¨"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "কেনà§à¦¦à§à¦° পরিবরà§à¦¤à¦¨ করতে 'v' চাপà§à¦¨, কেনà§à¦¦à§à¦° টানতে 'Shift+v' চাপà§à¦¨ (যখন সরাচà§à¦›à§‡à¦¨)।"
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "অলà§à¦Ÿà¦¾à¦° কী + মাউসের ডান বোতাম: গভীর তালিকায় নিরà§à¦¬à¦¾à¦šà¦¨"
+
+#~ msgid "Clone Down"
+#~ msgstr "কà§à¦²à§‹à¦¨ করে নীচে নিন"
+
+#, fuzzy
+#~ msgid "Size"
+#~ msgstr "সেল (Cell)-à¦à¦° আকার:"
+
+#, fuzzy
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr "অলà§à¦Ÿà¦¾à¦° কী + মাউসের ডান বোতাম: গভীর তালিকায় নিরà§à¦¬à¦¾à¦šà¦¨"
+
+#~ msgid "Sep.:"
+#~ msgstr "বিভকà§à¦¤à¦•ারক:"
+
+#~ msgid "Add All"
+#~ msgstr "সবগà§à¦²à¦¿ যোগ করà§à¦¨"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "থিম à¦à¦¡à¦¿à¦Ÿ করার মেনà§à¥¤"
+
+#~ msgid "Create Empty Template"
+#~ msgstr "খালি টেমপà§à¦²à§‡à¦Ÿ তৈরি করà§à¦¨"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡à¦° খালি টেমপà§à¦²à§‡à¦Ÿ তৈরি করà§à¦¨"
+
+#, fuzzy
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡à¦° খালি টেমপà§à¦²à§‡à¦Ÿ তৈরি করà§à¦¨"
+
+#~ msgid "Data Type:"
+#~ msgstr "ডাটার ধরণ:"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "থিম"
+
+#~ msgid "Compiled"
+#~ msgstr "কমà§à¦ªà¦¾à¦‡à¦²à§à¦¡"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr "তালিকা হতে পà§à¦°à¦•লà§à¦ª অপসারণ করবেন? (ফোলà§à¦¡à¦¾à¦°à§‡à¦° বিষয়াদি পরিবরà§à¦¤à¦¨ হবে না)"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr "তালিকা হতে পà§à¦°à¦•লà§à¦ª অপসারণ করবেন? (ফোলà§à¦¡à¦¾à¦°à§‡à¦° বিষয়াদি পরিবরà§à¦¤à¦¨ হবে না)"
+
+#, fuzzy
+#~ msgid "Templates"
+#~ msgstr "বসà§à¦¤à§ অপসারণ করà§à¦¨"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "পà§à¦¨à¦ƒ-চিতà§à¦°à¦¾à¦™à§à¦•িত পথ যোগ করà§à¦¨"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "রà§à¦Ÿ নোডের জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯ নয়।"
+
+#, fuzzy
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
+
+#, fuzzy
+#~ msgid "Using default boot splash image."
+#~ msgstr "টাইলটি খà§à¦à¦œà§‡ পাওয়া যায়নি:"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "à¦à¦•টি অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ পà§à¦²à§‡à¦¯à¦¼à¦¾à¦° নিজেই অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦Ÿ করতে পারে না, কেবল অনà§à¦¯ পà§à¦²à§‡à§Ÿà¦¾à¦°à¥¤"
@@ -13950,9 +15322,6 @@ msgstr ""
#~ "বরà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯à¦Ÿà¦¿ কখনোই সংরকà§à¦·à¦£ করা হয় নি, অনà§à¦—à§à¦°à¦¹ করে চালানোর পূরà§à¦¬à§‡ à¦à¦Ÿà¦¿ সংরকà§à¦·à¦£ "
#~ "করà§à¦¨à¥¤"
-#~ msgid "Not in resource path."
-#~ msgstr "রিসোরà§à¦¸à§‡à¦° পথে নয়।"
-
#~ msgid "Revert"
#~ msgstr "পà§à¦°à¦¤à§à¦¯à¦¾à¦¬à¦°à§à¦¤à¦¨ করà§à¦¨"
@@ -14035,9 +15404,6 @@ msgstr ""
#~ msgid "Input"
#~ msgstr "ইনপà§à¦Ÿ যোগ করà§à¦¨"
-#~ msgid "Properties:"
-#~ msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
-
#, fuzzy
#~ msgid "Methods:"
#~ msgstr "মেথডের তালিকা:"
@@ -14356,10 +15722,6 @@ msgstr ""
#~ msgstr "পথ বিভকà§à¦¤ করà§à¦¨"
#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "à¦à¦•টি সেটিং আইটেম পà§à¦°à¦¥à¦® নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨!"
-
-#, fuzzy
#~ msgid "Add Node.."
#~ msgstr "নোড সংযোজন করà§à¦¨"
@@ -14424,10 +15786,6 @@ msgstr ""
#~ msgid "Public Methods:"
#~ msgstr "সরà§à¦¬à¦œà¦¨à§€à¦¨/পà§à¦°à¦•াশà§à¦¯ মেথডসমূহ:"
-#, fuzzy
-#~ msgid "GUI Theme Items"
-#~ msgstr "GUI থিম à¦à¦° বসà§à¦¤à§à¦¸à¦®à§‚হ:"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "GUI থিম à¦à¦° বসà§à¦¤à§à¦¸à¦®à§‚হ:"
@@ -14451,10 +15809,6 @@ msgstr ""
#~ msgid "Match case"
#~ msgstr "অকà§à¦·à¦°à§‡à¦° মাতà§à¦°à¦¾ (বড়/ছোট-হাতের) মিল করà§à¦¨"
-#, fuzzy
-#~ msgid "Filter: "
-#~ msgstr "ফিলà§à¦Ÿà¦¾à¦°:"
-
#~ msgid "Ok"
#~ msgstr "ঠিক আছে"
@@ -14495,9 +15849,6 @@ msgstr ""
#~ msgid "Rotate 270 degrees"
#~ msgstr "২৭০ ডিগà§à¦°à¦¿ ঘোরানà§â€Œ"
-#~ msgid "Variable"
-#~ msgstr "চলক/ভেরিয়েবল"
-
#~ msgid "Errors:"
#~ msgstr "সমসà§à¦¯à¦¾à¦¸à¦®à§‚হ:"
@@ -14586,9 +15937,6 @@ msgstr ""
#~ msgid "Set Transitions to:"
#~ msgstr "টà§à¦°à§à¦¯à¦¾à¦¨à¦œà¦¿à¦¶à¦¨/সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦°à¦£ সেট/নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) টà§à¦°à§à¦¯à¦¾à¦•/পথ-à¦à¦° নাম পরিবরà§à¦¤à¦¨ করà§à¦¨"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ (Anim) টà§à¦°à§à¦¯à¦¾à¦•/পথ-à¦à¦° পà§à¦°à¦•à§à¦·à§‡à¦ª/নিবেশ পরিবরà§à¦¤à¦¨ করà§à¦¨"
@@ -14738,13 +16086,6 @@ msgstr ""
#~ msgid "StyleBox Preview:"
#~ msgstr "StyleBox পà§à¦°à¦¿à¦­à¦¿à¦‰:"
-#, fuzzy
-#~ msgid "StyleBox"
-#~ msgstr "সà§à¦Ÿà¦¾à¦‡à¦²"
-
-#~ msgid "Separation:"
-#~ msgstr "বিচà§à¦›à§‡à¦¦:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° à¦à¦²à¦¾à¦•া à¦à¦¡à¦¿à¦Ÿà¦°"
@@ -14825,13 +16166,6 @@ msgstr ""
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথে engine.cfg তৈরি করা সমà§à¦­à¦¬ হয়নি।"
-#, fuzzy
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথে engine.cfg তৈরি করা সমà§à¦­à¦¬ হয়নি।"
-
-#~ msgid "Not found!"
-#~ msgstr "খà§à¦à¦œà§‡ পাওয়া যায়নি!"
-
#~ msgid "Replace By"
#~ msgstr "à¦à¦° দà§à¦¬à¦¾à¦°à¦¾ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
@@ -15190,9 +16524,6 @@ msgstr ""
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸ সঙà§à¦•োচনের গà§à¦£à¦®à¦¾à¦¨ (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤ (অপশন)-সমূহ"
-
#~ msgid "Please specify some files!"
#~ msgstr "অনà§à¦—à§à¦°à¦¹ করে কিছৠফাইল নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করে দিন!"
@@ -15355,9 +16686,6 @@ msgstr ""
#~ msgid "Zoom Set..."
#~ msgstr "জà§à¦®à§ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨..."
-#~ msgid "Set a Value"
-#~ msgstr "à¦à¦•টি মান নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨"
-
#~ msgid "Parse BBCode"
#~ msgstr "BBCode বিশà§à¦²à§‡à¦·à¦£ করà§à¦¨"
@@ -15482,9 +16810,6 @@ msgstr ""
#~ msgid "Instance at Cursor"
#~ msgstr "কারà§à¦¸à¦°à§‡à¦° সà§à¦¥à¦¾à¦¨à§‡ ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করà§à¦¨"
-#~ msgid "Could not instance scene!"
-#~ msgstr "দৃশà§à¦¯ ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করা সমà§à¦­à¦¬ হয়নি!"
-
#~ msgid "Use Default Light"
#~ msgstr "পà§à¦°à¦¾à¦¥à¦®à¦¿à¦• লাইট বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
@@ -15559,9 +16884,6 @@ msgstr ""
#~ msgid "City"
#~ msgstr "শহর"
-#~ msgid "State"
-#~ msgstr "পà§à¦°à¦¦à§‡à¦¶/রাজà§à¦¯"
-
#~ msgid "2 letter country code"
#~ msgstr "২ অকà§à¦·à¦°à§‡ দেশের কোড"
diff --git a/editor/translations/br.po b/editor/translations/br.po
index 9d1e52e009..0f61544190 100644
--- a/editor/translations/br.po
+++ b/editor/translations/br.po
@@ -523,7 +523,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -549,7 +550,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -570,6 +572,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -586,6 +592,11 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Pegañ ar Roudennoù"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -634,7 +645,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -720,12 +731,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -780,11 +793,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -834,6 +845,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -903,7 +915,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -918,6 +930,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -939,8 +959,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1013,16 +1033,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1067,7 +1089,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1188,37 +1210,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1226,7 +1252,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1290,7 +1316,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1370,7 +1396,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1457,6 +1483,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1472,16 +1506,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1497,7 +1531,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1636,7 +1670,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1668,15 +1742,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1694,7 +1768,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1702,17 +1776,24 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Krouiñ"
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1721,19 +1802,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1757,7 +1838,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1811,9 +1892,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1894,8 +1976,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1966,7 +2047,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2051,7 +2132,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2067,8 +2148,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2084,7 +2166,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2148,7 +2230,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2342,18 +2425,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2523,7 +2610,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2704,6 +2791,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2836,13 +2927,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2850,6 +2940,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2858,7 +2952,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2955,6 +3049,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2981,7 +3083,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3022,6 +3124,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3053,6 +3159,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3077,21 +3187,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3099,11 +3206,12 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "Amzer (s) : "
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3123,6 +3231,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3164,12 +3282,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3187,22 +3299,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3216,37 +3351,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3281,7 +3399,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3301,64 +3419,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3366,7 +3490,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3376,135 +3504,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3630,22 +3789,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3653,6 +3838,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3732,10 +3921,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3956,52 +4141,49 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
+msgid "Paste Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4017,7 +4199,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4025,6 +4211,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4052,6 +4242,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4251,7 +4450,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4465,6 +4664,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4801,10 +5005,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4813,15 +5025,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4849,6 +5065,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4949,7 +5169,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4992,6 +5216,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5000,8 +5228,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5235,15 +5463,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5297,6 +5526,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5308,19 +5538,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5552,6 +5788,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Enlakaat an Alc'hwezh Amañ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5564,6 +5809,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5804,6 +6089,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5836,7 +6125,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5895,13 +6184,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5955,7 +6256,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6227,7 +6527,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6531,6 +6832,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Fiñval ar Poentoù Bezier"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Fiñval ar Poentoù Bezier"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6734,7 +7053,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6765,6 +7084,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6887,8 +7211,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6921,10 +7245,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7076,6 +7396,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7096,39 +7435,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7284,6 +7627,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7299,6 +7646,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7312,7 +7663,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7320,18 +7671,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7428,6 +7776,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7717,11 +8069,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7742,7 +8089,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7750,156 +8097,520 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Confirm Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8068,6 +8779,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8384,11 +9099,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9208,7 +9918,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9323,7 +10033,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9331,7 +10041,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9339,11 +10049,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9416,7 +10126,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9450,6 +10160,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9594,15 +10316,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9629,7 +10347,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9641,10 +10359,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9653,11 +10383,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9665,6 +10407,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9675,8 +10425,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9686,6 +10440,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9727,6 +10485,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9866,7 +10628,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9874,11 +10636,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10146,6 +10908,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10308,11 +11074,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10368,6 +11152,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10414,10 +11202,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10688,6 +11472,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10756,6 +11546,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11039,6 +11833,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11080,6 +11882,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11322,6 +12128,15 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Cheñch Hent ar Roudenn"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11430,6 +12245,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11653,10 +12472,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11686,6 +12501,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11782,6 +12625,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11794,6 +12673,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11808,6 +12691,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11827,11 +12723,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11860,27 +12794,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12228,6 +13186,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12297,12 +13262,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12351,6 +13368,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12498,15 +13519,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index 1032b7cdeb..ab96816ec0 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -539,7 +539,8 @@ msgstr "Segons"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -565,7 +566,8 @@ msgstr "Escala la Selecció"
msgid "Scale From Cursor"
msgstr "Escala amb el Cursor"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplicar la Selecció"
@@ -586,6 +588,11 @@ msgid "Go to Previous Step"
msgstr "Anar al Pas Anterior"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Resetejar"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimitza l'Animació"
@@ -602,6 +609,11 @@ msgid "Use Bezier Curves"
msgstr "Fés servir Corbes Bézier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Enganxa les Pistes"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Optimitzador d'Animació"
@@ -650,7 +662,7 @@ msgid "Select Tracks to Copy"
msgstr "Seleccioneu les Pistes a Copiar"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -737,12 +749,14 @@ msgid "Toggle Scripts Panel"
msgstr "Panell d'Scripts"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Apropa"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -799,11 +813,9 @@ msgid "Add"
msgstr "Afegeix"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -855,6 +867,7 @@ msgstr "No es pot connectar el senyal"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -925,7 +938,8 @@ msgid "Edit..."
msgstr "Edita..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Vés al Mètode"
#: editor/create_dialog.cpp
@@ -940,6 +954,14 @@ msgstr "Modifica"
msgid "Create New %s"
msgstr "Crea Nou %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "No hi ha cap resultat per a «%s»."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -961,8 +983,8 @@ msgstr "Cerca:"
msgid "Matches:"
msgstr "Coincidències:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1040,8 +1062,9 @@ msgstr "Propietaris de:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "Eliminar els fitxers seleccionats del projecte? (No es pot restaurar)"
#: editor/dependency_editor.cpp
@@ -1049,8 +1072,9 @@ msgstr "Eliminar els fitxers seleccionats del projecte? (No es pot restaurar)"
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Els fitxers seleccionats són utilitzats per altres recursos.\n"
"Voleu Eliminar-los de totes maneres? (No es pot desfer!)"
@@ -1097,7 +1121,7 @@ msgstr "Navegador de Recursos Orfes"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1225,29 +1249,42 @@ msgstr "Components"
msgid "Licenses"
msgstr "Llicències"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
"S'ha produit un error en obrir el fitxer comprimit, no té el format ZIP."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Ja existeix)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Descomprimint Recursos"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Ha fracassat l'extracció del paquet dels següents fitxers:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "I %d fitxer(s) més."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paquet instal·lat amb èxit!"
#: editor/editor_asset_installer.cpp
@@ -1255,16 +1292,13 @@ msgstr "Paquet instal·lat amb èxit!"
msgid "Success!"
msgstr "Èxit!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Contingut del Paquet:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instal·la"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Instal·lador de paquets"
#: editor/editor_audio_buses.cpp
@@ -1328,7 +1362,8 @@ msgid "Bypass"
msgstr "Derivació"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Opcions del Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1408,7 +1443,7 @@ msgstr "Afegeix Bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Afegir un nou Bus d'Àudio a aquesta configuració."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1495,6 +1530,15 @@ msgid "Can't add autoload:"
msgstr "No es pot afegir l'autocàrrega:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "El Fitxer no existeix."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Afegeix AutoCàrrega"
@@ -1510,16 +1554,17 @@ msgid "Node Name:"
msgstr "Nom del node:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nom"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Variable"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Enganxa els Paràmetres"
@@ -1535,7 +1580,7 @@ msgstr "Emmagatzemant canvis locals..."
msgid "Updating scene..."
msgstr "S'està actualitzant l'escena..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[buit]"
@@ -1695,8 +1740,49 @@ msgid "Import Dock"
msgstr "Importació"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Esborra el perfil '%s'? (no es pot desfer)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Actual)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1727,15 +1813,18 @@ msgid "Enable Contextual Editor"
msgstr "Habilitar l'Editor Contextual"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Propietats Habilitades:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Propietats:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Característiques Habilitades:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Característiques"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Classes Habilitades:"
#: editor/editor_feature_profile.cpp
@@ -1755,25 +1844,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Error en guardar el perfil al camí: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Desactivar"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Carrega Valors predeterminats"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Perfil Actual:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Fés l'actual"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Esborrar Perfil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Nou"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Eliminar Rajola"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Perfils Disponibles:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Fés l'actual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importa"
@@ -1782,22 +1880,24 @@ msgid "Export"
msgstr "Exportar"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Perfils Disponibles:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Perfil Actual:"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Opcions de Textura"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Opcions de Classe"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "New profile name:"
msgstr "Nom del nou perfil:"
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Esborrar Perfil"
-
-#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
msgstr "Perfil de les funcionalitats del Godot"
@@ -1818,7 +1918,8 @@ msgid "Select Current Folder"
msgstr "Selecciona el Directori Actual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Fitxer Existent, Voleu sobreescriure'l?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1872,9 +1973,10 @@ msgid "Open a File or Directory"
msgstr "Obre un Fitxer o Directori"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Desa"
@@ -1955,8 +2057,7 @@ msgid "Directories & Files:"
msgstr "Directoris i Fitxers:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Vista prèvia:"
@@ -2029,7 +2130,7 @@ msgstr "Propietats del tema"
msgid "Enumerations"
msgstr "Enumeracions"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Constants"
@@ -2120,7 +2221,7 @@ msgstr "Mètode"
msgid "Signal"
msgstr "Senyal"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Constant"
@@ -2136,9 +2237,10 @@ msgstr "Propietats del tema"
msgid "Property:"
msgstr "Propietat:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Establir"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Definir %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2153,7 +2255,7 @@ msgid "Copy Selection"
msgstr "Copiar Selecció"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2217,7 +2319,8 @@ msgid "Imported resources can't be saved."
msgstr "Els recursos importats no es poden desar."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "D'acord"
@@ -2437,18 +2540,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Desar els canvis a '%s' abans de tancar?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Desat(s) el(s) %s recurs(os) modificat(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Es requereix un node arrel per a guardar l'escena."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Anomena i Desa l'Escena..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Aquesta operació no pot dur-se a terme sense cap escena."
@@ -2653,7 +2761,7 @@ msgstr "Elimina Disseny"
msgid "Default"
msgstr "Predeterminat"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Mostrar en el Sistema de Fitxers"
@@ -2834,6 +2942,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Navegador de Recursos Orfes..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Reanomena el Projecte"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Surt a la Llista de Projectes"
@@ -2994,14 +3107,14 @@ msgstr "Administrar Plantilles d'Exportació..."
msgid "Help"
msgstr "Ajuda"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Documentació en línia"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Obrir documentació"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Preguntes i Respostes"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3009,6 +3122,10 @@ msgid "Report a Bug"
msgstr "ReImportar"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
#, fuzzy
msgid "Send Docs Feedback"
msgstr "Enviar suggeriments sobre la documentació"
@@ -3018,7 +3135,8 @@ msgid "Community"
msgstr "Comunitat"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Quant a"
#: editor/editor_node.cpp
@@ -3119,6 +3237,16 @@ msgid "Manage Templates"
msgstr "Administrar Plantilles"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Instal·lar des d'un Fitxer"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Selecciona una Malla d'Origen:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3157,7 +3285,7 @@ msgstr "Importa Plantilles des d'un Fitxer ZIP"
msgid "Template Package"
msgstr "Gestor de Plantilles d'Exportació"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Exporta Biblioteca"
@@ -3200,6 +3328,11 @@ msgid "Select"
msgstr "Selecciona"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Selecciona el Directori Actual"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Obre l'Editor 2D"
@@ -3233,6 +3366,11 @@ msgstr "Avís"
msgid "No sub-resources found."
msgstr "Manca una superfície d'origen."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Manca una superfície d'origen."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Creant Previsualitzacions de Malles"
@@ -3258,33 +3396,34 @@ msgstr "Connectors Instal·lats:"
msgid "Update"
msgstr "Actualitza"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versió:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Estat:"
+#, fuzzy
+msgid "Author"
+msgstr "Autors"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Edita:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Estat"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Mesura:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Duració del Fotograma (s)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Temps Mitjà (s)"
#: editor/editor_profiler.cpp
@@ -3304,6 +3443,16 @@ msgid "Self"
msgstr "Propi"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Fotograma núm.:"
@@ -3345,14 +3494,6 @@ msgstr "RID no vàlid"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"El recurs seleccionat (%s) no coincideix amb cap tipus esperat per aquesta "
-"propietat (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3376,40 +3517,6 @@ msgid "Pick a Viewport"
msgstr "Selecciona una Vista"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Script Nou"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Estendre l'script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Nou %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Fes-lo Únic"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Enganxa"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Converteix a %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "El Node seleccionat no és una Vista!"
@@ -3438,6 +3545,49 @@ msgstr "Nou Valor:"
msgid "Add Key/Value Pair"
msgstr "Afegeix una Parella de Clau/Valor"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"El recurs seleccionat (%s) no coincideix amb cap tipus esperat per aquesta "
+"propietat (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Fes-lo Únic"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Enganxa"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Converteix a %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Nou %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Script Nou"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Estendre l'script"
+
#: editor/editor_run_native.cpp
#, fuzzy
msgid ""
@@ -3474,7 +3624,7 @@ msgstr "Podria mancar el mètode '_run'?"
#: editor/editor_spin_slider.cpp
#, fuzzy
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Retén Ctrl per dipositar un mètode Accessor (Getter). Retén Maj per "
"dipositar una firma genèrica."
@@ -3496,119 +3646,70 @@ msgid "Import From Node:"
msgstr "Importa des del Node:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "Torna a Baixar"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Desinstal·lar"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Instal·lat)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Baixa"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
-"Les plantilles oficials d'exportació no estan disponibles per a les versions "
-"de desenvolupament."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Mancant)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Actual)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "No hi ha cap fitxer '%s'."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "S'estan buscant rèpliques..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Voleu Eliminar la versió \"%s\" de la plantilla ?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "No s'ha pogut obrir el zip amb les plantilles d'exportació."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "El format de version.txt no és vàlid dins de les plantilles: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "No s'ha trobat cap version.txt dins les plantilles."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Error en crear el camí per a les plantilles:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Extraient Plantilles d'Exportació"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importació:"
+msgid "Error requesting URL:"
+msgstr "Error en sol·licitar l'URL:"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error getting the list of mirrors."
-msgstr "No s'ha pogut l'objecte signatura."
-
-#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"S'ha produït un error en analitzar la llista JSON de rèpliques. Si us plau, "
-"informeu d'aquest problema!"
+msgid "Connecting to the mirror..."
+msgstr "Connexió amb la Rèplica..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"No s'ha trobat cap enllaç de baixada per a aquesta versió. Les baixades "
-"directes només són disponibles per a versions oficials."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "No es pot resoldre l'amfitrió:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "No es pot resoldre."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "No es pot connectar a l'amfitrió:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "No es pot connectar..."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Cap resposta de l'amfitrió:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Cap resposta."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+#, fuzzy
+msgid "Request failed."
msgstr "Ha fallat la sol·licitud."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Bucle de redirecció."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Ha fallat la sol·licitud. Massa redireccionaments"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Ha fallat:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Ha fallat la sol·licitud."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Baixada Completa."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3625,12 +3726,28 @@ msgstr ""
"Les plantilles problemàtics es troben a '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Error en sol·licitar l'URL:"
+#, fuzzy
+msgid "Error getting the list of mirrors."
+msgstr "No s'ha pogut l'objecte signatura."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Connexió amb la Rèplica..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"S'ha produït un error en analitzar la llista JSON de rèpliques. Si us plau, "
+"informeu d'aquest problema!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"No s'ha trobat cap enllaç de baixada per a aquesta versió. Les baixades "
+"directes només són disponibles per a versions oficials."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3675,45 +3792,141 @@ msgid "SSL Handshake Error"
msgstr "Error en la conformitat de la connexió SSL"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "No s'ha pogut obrir el zip amb les plantilles d'exportació."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "El format de version.txt no és vàlid dins de les plantilles: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "No s'ha trobat cap version.txt dins les plantilles."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Error en crear el camí per a les plantilles:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Extraient Plantilles d'Exportació"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importació:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Voleu Eliminar la versió \"%s\" de la plantilla ?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Descomprimint les Fonts de Compilació d'Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Gestor de Plantilles d'Exportació"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versió Actual:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Versions instal·lades:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Obrir Fitxer"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Desinstal·lar"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Valor inicial per al comptador"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Error en la Baixada"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"Les plantilles oficials d'exportació no estan disponibles per a les versions "
+"de desenvolupament."
#: editor/export_template_manager.cpp
-msgid "Install From File"
+#, fuzzy
+msgid "Install from File"
msgstr "Instal·lar des d'un Fitxer"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Elimina la Plantilla"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importa Plantilles des d'un Fitxer ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Cancel·la"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Seleccioneu un Fitxer de Plantilla"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "No s'ha pogut obrir el zip amb les plantilles d'exportació."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
-msgstr "Carregant Plantilles d'Exportació"
+msgid "Other Installed Versions:"
+msgstr "Versions instal·lades:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Gestor de Plantilles d'Exportació"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Desinstal·lar"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Baixa plantilles"
+msgid "Select Template File"
+msgstr "Seleccioneu un Fitxer de Plantilla"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Selecciona un mirror de la llista: (Maj+Clic: Obre en el Navegador)"
+#, fuzzy
+msgid "Godot Export Templates"
+msgstr "Carregant Plantilles d'Exportació"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3847,30 +4060,62 @@ msgstr "Script Nou..."
msgid "New Resource..."
msgstr "Recurs Nou..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Expandir tot"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Col·lapsar tot"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplica..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Cerca Fitxers"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "Mou l'AutoCàrrega"
+msgid "Sort by Last Modified"
+msgstr "Última modificació"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Última modificació"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplica..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Reanomena..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Carpeta/Fitxer Anterior"
@@ -3955,10 +4200,6 @@ msgstr "Cerca..."
msgid "Replace..."
msgstr "Substitueix..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Cancel·la"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Cerca: "
@@ -4193,53 +4434,55 @@ msgid "Failed to load resource."
msgstr "No s'ha pogut carregar el recurs."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Expandir Totes les Propietats"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Propietats"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Col·lapsar Totes les Propietats"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Anomena i Desa..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Propietats"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Copia els Paràmetres"
+msgid "Make Sub-Resources Unique"
+msgstr "Crea SubRecurs Únic"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Edita el Porta-retalls de Recursos"
+msgid "Create a new resource in memory and edit it."
+msgstr "Crea un nou recurs en memòria i edita'l."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Copia el Recurs"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Carrega un recurs des del disc i edita'l."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Crea'l Integrat"
+msgid "Save the currently edited resource."
+msgstr "Desa el recurs editat ara."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Crea SubRecurs Únic"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Anomena i Desa..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Obre dins l'Ajuda"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Fora del camí dels recursos."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Crea un nou recurs en memòria i edita'l."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Edita el Porta-retalls de Recursos"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Carrega un recurs des del disc i edita'l."
+msgid "Copy Resource"
+msgstr "Copia el Recurs"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Desa el recurs editat ara."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Crea'l Integrat"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4254,14 +4497,24 @@ msgid "History of recently edited objects."
msgstr "Historial d'objectes editats recentment."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Propietats de l'objecte."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Obrir documentació"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Obrir documentació"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtra les propietats"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Propietats de l'objecte."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Es podrien perdre els canvis!"
@@ -4290,6 +4543,15 @@ msgstr "Nom del Connector:"
msgid "Subfolder:"
msgstr "Subcarpeta:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versió:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Llengua:"
@@ -4496,7 +4758,8 @@ msgid "Blend:"
msgstr "Mescla:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Paràmetre Canviat"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4721,6 +4984,11 @@ msgid "Animation"
msgstr "Animació"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Nou"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Editar Transicions..."
@@ -5063,10 +5331,18 @@ msgid "View Files"
msgstr "Visualitza Fitxers"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Baixa"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "S'ha produït un error en la connexió. Torneu-ho a provar."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "No es pot connectar..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "No es pot connectar a l'amfitrió:"
@@ -5075,17 +5351,20 @@ msgid "No response from host:"
msgstr "Cap resposta de l'amfitrió:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Cap resposta."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "No es pot resoldre l'amfitrió:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Ha fallat la sol·licitud, codi de devolució:"
+msgid "Can't resolve."
+msgstr "No es pot resoldre."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed."
-msgstr "Ha fallat la sol·licitud."
+msgid "Request failed, return code:"
+msgstr "Ha fallat la sol·licitud, codi de devolució:"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
@@ -5116,6 +5395,10 @@ msgid "Timeout."
msgstr "Temps esgotat."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Ha fallat:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Error en la baixada (hash incorrecte). El fitxer fou manipulat."
@@ -5222,8 +5505,12 @@ msgid "All"
msgstr "Tot"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "No hi ha cap resultat per a «%s»."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5265,6 +5552,10 @@ msgstr "S’està carregant…"
msgid "Assets ZIP File"
msgstr "Arxiu ZIP d'Actius"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
#, fuzzy
msgid ""
@@ -5277,9 +5568,10 @@ msgstr ""
"camí des de les propietats de BakedLightmap."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Cap Malla per precalcular. Comproveu que disposin d'un canal d'UV2 i que "
"l'indicador 'Bake Light' és activat."
@@ -5542,9 +5834,10 @@ msgstr "Modifica Ancoratges"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Substitueix la càmera del joc.\n"
"Substitueix la càmera del joc per la càmera de l'editor."
@@ -5552,11 +5845,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Substitueix la càmera del joc.\n"
-"Cap instància del joc en execució."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5614,6 +5906,7 @@ msgstr ""
"determinada només pel seu pare."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5625,22 +5918,32 @@ msgid "Select Mode"
msgstr "Mode de selecció"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Arrossega: gira"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Eliminar el node o transició seleccionats."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Arrosegar: Mou"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Eliminar el node o transició seleccionats."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Premeu 'v' per canviar el Pivot, 'Maj+v' per arrosegar el Pivot (mentre es "
-"mou)."
+"Mostra la llista de tots els objectes en la posició clicada\n"
+"(Tal com Alt+Clic Dreta en el mode de Selecció)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+Clic Dret: Selecció detallada per llista"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5891,6 +6194,16 @@ msgid "Clear Pose"
msgstr "Reestableix la Postura"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Afegeix un Node"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Instància les Escenes"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Multiplica l'increment de la graella per 2"
@@ -5904,6 +6217,52 @@ msgid "Pan View"
msgstr "Vista Posterior"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Allunya"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Allunya"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Allunya"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Allunya"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Allunya"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Allunya"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Afegeix %s"
@@ -6160,6 +6519,11 @@ msgstr "No s'ha pogut crear una forma de col·lisió convexa."
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Crea una Forma Convexa"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "Crea una Forma Convexa"
@@ -6194,7 +6558,8 @@ msgid "No mesh to debug."
msgstr "Cap malla per depurar."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "El model no té UVs en aquesta capa"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6255,13 +6620,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Crea col·lisions convexes entre nodes germans"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Crea col·lisions convexes entre nodes germans"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6319,7 +6697,6 @@ msgid "Mesh Library"
msgstr "Biblioteca de Models (MeshLibrary)"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Afegeix un Element"
@@ -6597,7 +6974,8 @@ msgid "Close Curve"
msgstr "Tanca la Corba"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Opcions"
@@ -6916,6 +7294,26 @@ msgstr "Carrega un Recurs"
msgid "ResourcePreloader"
msgstr "ResourcePreloader"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Invertir Horitzontalment"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Recompte de punts generats:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Recompte de punts generats:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Invertir Horitzontalment"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "L'AnimationTree no té ruta assignada cap a un AnimationPlayer"
@@ -7127,7 +7525,7 @@ msgstr "Executar"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Cerca"
@@ -7158,6 +7556,11 @@ msgid "Debug with External Editor"
msgstr "Depurar amb un Editor Extern"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Documentació en línia"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Obrir la documentació en línia de Godot."
@@ -7288,8 +7691,8 @@ msgstr "Anar a"
msgid "Cut"
msgstr "Talla"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Selecciona-ho Tot"
@@ -7322,10 +7725,6 @@ msgid "Unfold All Lines"
msgstr "Desplega totes les Línies"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Clona avall"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Completa el Símbol"
@@ -7488,6 +7887,28 @@ msgid "View Plane Transform."
msgstr "Transformació en el Pla de la Vista."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Cap"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Estat:"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Translació:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Escala:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Escala: "
@@ -7509,42 +7930,53 @@ msgstr "S'ha insertit una Clau d'Animació."
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Pitch"
+msgid "Pitch:"
msgstr "commutador"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Guinyada"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Mida:"
+#, fuzzy
+msgid "Size:"
+msgstr "Mida: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Objectes Dibuixats"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Canvis de Material"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Canvis de Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Canvis de superfície"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Crides de Dibuix"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Vèrtexs"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Vista superior."
@@ -7703,6 +8135,11 @@ msgid "Freelook Slow Modifier"
msgstr "Modificador de la Velocitat de la Vista Lliure"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Modifica la Mida de la Càmera"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Rotació de la Vista Bloquejada"
@@ -7721,6 +8158,11 @@ msgstr ""
"No es pot utilitzar com una indicació fiable del rendiment en el joc."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Converteix a %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Diàleg XForm"
@@ -7734,7 +8176,8 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Ajustar Nodes al Terra"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7743,16 +8186,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "No ha pogut trobar un terra sòlid per ajustar la selecció."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Arrossegar: Gira\n"
-"Alt+Arrossegar: Mou\n"
-"Alt+Clic Dret: Selecció de llista de profunditat"
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Use Local Space"
msgstr "Mode Espai Local (%s)"
@@ -7762,6 +8195,10 @@ msgid "Use Snap"
msgstr "Utilitzar Ajustament"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Vista Inferior"
@@ -7856,6 +8293,11 @@ msgid "View Grid"
msgstr "Mostra la Graella"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Configuració de la Vista"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Configuració..."
@@ -8167,11 +8609,6 @@ msgid "Snap Mode:"
msgstr "Mode d'ajustament:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Cap"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
#, fuzzy
msgid "Pixel Snap"
msgstr "Ajustar amb els Píxels"
@@ -8193,9 +8630,8 @@ msgid "Step:"
msgstr "Pas:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
-msgid "Sep.:"
-msgstr "Sep.:"
+msgid "Separation:"
+msgstr "Separació:"
#: editor/plugins/texture_region_editor_plugin.cpp
#, fuzzy
@@ -8203,163 +8639,600 @@ msgid "TextureRegion"
msgstr "Regió de Textura"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Afegeix tots els Elements"
+#, fuzzy
+msgid "Colors"
+msgstr "Color"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Afegeix-ho Tot"
+#, fuzzy
+msgid "Fonts"
+msgstr "Lletra"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Icona"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "StyleBox"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Manca una superfície d'origen."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Constants"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Constant de color."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "No s'ha trobat!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "No s'ha trobat!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Manca una superfície d'origen."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Importa un Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Voleu Sortir de l'editor?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "S'està Analitzant"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtre: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Selecciona un Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Cal seleccionar un Element!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Cal seleccionar un Element!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Cal seleccionar un Element!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Cal seleccionar un Element!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Cal seleccionar un Element!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Cal seleccionar un Element!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Col·lapsar tot"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Expandir tot"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Seleccioneu un Fitxer de Plantilla"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Selecciona Punts"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Selecciona-ho Tot"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importa Escena"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Treu tots els Elements"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Treu-los tots"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Elimina Element"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Editar Tema"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Treu tots els Elements"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Menú d'edició de Temes."
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Treu tots els Elements"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Treu tots els Elements"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Treu tots els Elements"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Afegeix Elements de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Afegeix Elements de Classe"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Afegeix un Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Afegeix un Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Afegeix tots els Elements"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Elimina Elements de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Elimina Elements de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Reanomena el Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Reanomena el Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Elimina l'Element Seleccionat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Fitxer incorrecte. No és un disseny de bus d'àudio."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Administrar Plantilles"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Element Editable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Tipus:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Tipus:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Afegeix un Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Afegeix tots els Elements"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Elimina Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Elimina Elements de Classe"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Crea una Plantilla Buida"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Elimina Elements de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Treu tots els Elements"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Elements del Tema de la GUI"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nom del node:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importa un Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Predeterminat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Editar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Elimina el Recurs"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Importa un Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Reanomena la Pista"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Reanomena"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Sobreescriu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Tipus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Afegeix un Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Tipus de node"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Crea un Plantilla d'Editor Buida"
+#, fuzzy
+msgid "Show Default"
+msgstr "Carrega Valors predeterminats"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Crea a partir del Tema d'Editor actual"
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Sobreescriu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
+msgid "Theme:"
+msgstr "Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Administrar Plantilles d'Exportació..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Previsualització"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Actualitzar Previsualització"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Selecciona una Malla d'Origen:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
msgid "Toggle Button"
msgstr "Botó de commutació"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Botó Desactivat"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Element Desactivat"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Valida l'Element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Element validat"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Element de ràdio"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Element de ràdio validat"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Separador amb nom."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Submenú"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Subitem 1"
msgstr "Element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Subitem 2"
msgstr "Element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Té"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Molts"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled LineEdit"
msgstr "Desactivat"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Pestanya 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Pestanya 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Pestanya 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Element Editable"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Subtree"
msgstr "Subarbre"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Té,Moltes,Opcions"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Tipus de Dades:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Icona"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Estil"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Lletra"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Color"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "Tema"
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Fitxer incorrecte. No és un disseny de bus d'àudio."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8548,6 +9421,10 @@ msgid "Priority"
msgstr "Mode Prioritat"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Icona"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid "Z Index"
msgstr "Ãndex:"
@@ -8917,11 +9794,6 @@ msgid "Commit Changes"
msgstr "Sincronitzar Canvis en Scripts"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Estat"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
"Verifica les diferències entre fitxers abans de publicar-les a la darrera "
@@ -9857,7 +10729,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Editar Propietat Visual"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9981,7 +10854,8 @@ msgid "Script"
msgstr "Script"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Mode d'Exportació de Scripts:"
#: editor/project_export.cpp
@@ -9989,8 +10863,8 @@ msgid "Text"
msgstr "Text"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Compilat"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
#, fuzzy
@@ -9998,11 +10872,13 @@ msgid "Encrypted (Provide Key Below)"
msgstr "Encriptat (Proporcioneu la clau a sota)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Clau de xifratge no vàlida (ha de tenir 64 caràcters de longitud)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Clau de Xifratge de Scripts (256-bits com hexadecimal):"
#: editor/project_export.cpp
@@ -10081,7 +10957,8 @@ msgid "Imported Project"
msgstr "Project importat"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "El nom del Projecte no és vàlid."
#: editor/project_manager.cpp
@@ -10117,6 +10994,19 @@ msgid "Couldn't create project.godot in project path."
msgstr "No es pot crear el fitxer 'project.godot' en el camí del projecte."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+"S'ha produit un error en obrir el fitxer comprimit, no té el format ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Ha fracassat l'extracció del paquet dels següents fitxers:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Paquet instal·lat amb èxit!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Reanomena el Projecte"
@@ -10298,20 +11188,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Esteu segur que voleu executar %d projectes de cop?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Eliminar %d projectes de la llista?\n"
-"El contingut del directori del projecte no es modificarà."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Selecciona un dispositiu de la llista"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Eliminar aquest projecte de la llista?\n"
-"El contingut del directori del projecte no es modificarà."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Selecciona un dispositiu de la llista"
#: editor/project_manager.cpp
#, fuzzy
@@ -10347,7 +11231,7 @@ msgstr "Gestor del Projecte"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Projecte"
#: editor/project_manager.cpp
@@ -10361,10 +11245,25 @@ msgid "Last Modified"
msgstr "Última modificació"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Exporta Projecte"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Reanomena el Projecte"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Explora"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projecte"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Selecciona un Directori per Explorar"
@@ -10374,18 +11273,41 @@ msgstr "Nou Projecte"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Project importat"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Reanomena el Projecte"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Suprimeix els que falten"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Plantilles"
+msgid "About"
+msgstr "Quant a"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Biblioteca d'Actius"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Reinicia"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Treu-los tots"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "No es pot executar el projecte"
@@ -10398,8 +11320,13 @@ msgstr ""
"Us agradaria explorar projectes d'exemple oficials a la biblioteca d'actius?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtra les propietats"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10409,6 +11336,10 @@ msgid "Key "
msgstr "Tecla "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Botó de la Maneta"
@@ -10452,6 +11383,10 @@ msgstr "Tots els Dispositius"
msgid "Device"
msgstr "Dispositiu"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Premeu una Tecla..."
@@ -10598,7 +11533,8 @@ msgid "Override for Feature"
msgstr "Substitutiu per a Característica"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Afegeix una Traducció"
#: editor/project_settings_editor.cpp
@@ -10606,11 +11542,13 @@ msgid "Remove Translation"
msgstr "Elimina la Traducció"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Afegeix un camí remapat"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Afegeix un Remapatge de Recursos"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Afegeix un Remapatge de Recursos"
#: editor/project_settings_editor.cpp
@@ -10888,6 +11826,10 @@ msgid "Post-Process"
msgstr "Post-Processat"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Estil"
+
+#: editor/rename_dialog.cpp
#, fuzzy
msgid "Keep"
msgstr "Mantenir"
@@ -11067,12 +12009,30 @@ msgid "Delete node \"%s\"?"
msgstr "Suprimir el node \"% s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "No es pot executar en el node arrel."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Aquesta operació no es pot dur a terme en escenes instanciadas."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -11134,6 +12094,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "No es pot operar en nodes heretats per l'escena actual!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Aquesta operació no es pot dur a terme en escenes instanciadas."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Adjunta-li un Script"
@@ -11184,10 +12148,6 @@ msgid "Load As Placeholder"
msgstr "Carrega com a Contenidor Temporal"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Obrir documentació"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11486,6 +12446,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Nom de la Classe:"
@@ -11561,6 +12527,10 @@ msgid "Copy Error"
msgstr "Copia l'error"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Video RAM"
msgstr "Memòria de Vídeo"
@@ -11860,6 +12830,16 @@ msgstr "El Diccionari d'instàncies no és vàlid (subclasses no vàlides)"
msgid "Object can't provide a length."
msgstr "L'objecte no pot proporcionar una longitud."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exporta Biblioteca de Models"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exportar..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Pla següent"
@@ -11904,6 +12884,11 @@ msgid "GridMap Paint"
msgstr "Configuració del GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Elimina la Selecció del GridMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Mapa de Graella"
@@ -12164,6 +13149,16 @@ msgstr "Afegir port de sortida"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "Modifica el Tipus"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Modifica el Nom de l'Entrada"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr ""
"El Nom no és vàlid. No pot coincidir amb noms de tipus integrats ja "
@@ -12284,6 +13279,11 @@ msgid "Add Preload Node"
msgstr "Afegeix un Node de Precàrrega"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Afegeix un Node"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Afegeix Nodes des d'Arbre"
@@ -12526,10 +13526,6 @@ msgstr "Elimina el Node de VisualScript"
msgid "Get %s"
msgstr "Obtenir %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Definir %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "El nom del paquet falta."
@@ -12564,6 +13560,40 @@ msgid "Select device from the list"
msgstr "Selecciona un dispositiu de la llista"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Exportant tot"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Desinstal·lar"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "S'estan buscant rèpliques..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "No s'ha pogut començar el subprocés!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Executant Script Personalitzat..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "No s'ha pogut crear el directori."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12672,6 +13702,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Analitzant Fitxers,\n"
+"Si Us Plau Espereu..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "No es pot obrir la plantilla per exportar:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Afegint %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Exportant tot"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12684,6 +13756,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
#, fuzzy
msgid ""
"Trying to build from a custom built template, but no version info for it "
@@ -12707,6 +13783,21 @@ msgstr ""
"'Projecte'."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "No es pot trobat el el fitxer 'project.godot' en el camí del projecte."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "No s'ha pogut escriure el fitxer:"
+
+#: platform/android/export/export.cpp
#, fuzzy
msgid "Building Android Project (gradle)"
msgstr "Construint Projecte Android (gradle)"
@@ -12732,11 +13823,54 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animació no trobada: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Creant els contorns..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "No es pot obrir la plantilla per exportar:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Afegint %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "No s'ha pogut escriure el fitxer:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Falta l'identificador."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "No es permet el caràcter '%s' en l'Identificador."
@@ -12767,10 +13901,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Executa l'HTML exportat en el navegador per defecte."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "No s'ha pogut escriure el fitxer:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "No es pot obrir la plantilla per exportar:"
@@ -12779,16 +13909,49 @@ msgid "Invalid export template:"
msgstr "Plantilla d'exportació no vàlida:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "No s'ha pogut escriure el fitxer:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "No s'ha pogut escriure el fitxer:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "No es pot llegir l'intèrpret personalitzat d’ordres HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "No es pot llegir la imatge de presentació:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "No s'ha pogut crear el directori."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Utilitzant la imatge de presentació per defecte."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Error en desar l'escena."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Identificador no vàlid:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
@@ -13219,6 +14382,13 @@ msgstr ""
"Les GIProbes no estan suportades pel controlador de vídeo GLES2.\n"
"Utilitzeu un BakedLightmap en el seu lloc."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
#, fuzzy
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
@@ -13299,6 +14469,18 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "El Node A i el Node B han de ser PhysicsBodies diferents"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid ""
@@ -13306,6 +14488,46 @@ msgid ""
"derived node to work."
msgstr "Cal que la propietat Camí assenyali cap a un node Spatial vàlid."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
#, fuzzy
msgid "This body will be ignored until you set a mesh."
@@ -13369,6 +14591,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "Animació no trobada: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "En el node '%s', l'animació no és valida: '%s'."
@@ -13543,21 +14769,211 @@ msgid "Invalid comparison function for that type."
msgstr "Font no vàlida pel Shader."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
-msgstr "Assignació a funció."
+msgid "Varying may not be assigned in the '%s' function."
+msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr "Assignació a funció."
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Les constants no es poden modificar."
+#~ msgid "Package Contents:"
+#~ msgstr "Contingut del Paquet:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Esborra el perfil '%s'? (no es pot desfer)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Propietats Habilitades:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Característiques Habilitades:"
+
+#~ msgid "Unset"
+#~ msgstr "Desactivar"
+
+#~ msgid "Class Options"
+#~ msgstr "Opcions de Classe"
+
+#~ msgid "Set"
+#~ msgstr "Establir"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Desat(s) el(s) %s recurs(os) modificat(s)."
+
+#~ msgid "Q&A"
+#~ msgstr "Preguntes i Respostes"
+
+#~ msgid "Status:"
+#~ msgstr "Estat:"
+
+#~ msgid "Edit:"
+#~ msgstr "Edita:"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "Torna a Baixar"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Instal·lat)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Mancant)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Ha fallat la sol·licitud."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Bucle de redirecció."
+
+#~ msgid "Download Complete."
+#~ msgstr "Baixada Completa."
+
+#~ msgid "Remove Template"
+#~ msgstr "Elimina la Plantilla"
+
+#~ msgid "Download Templates"
+#~ msgstr "Baixa plantilles"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Selecciona un mirror de la llista: (Maj+Clic: Obre en el Navegador)"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Mou l'AutoCàrrega"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Expandir Totes les Propietats"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Col·lapsar Totes les Propietats"
+
+#~ msgid "Copy Params"
+#~ msgstr "Copia els Paràmetres"
+
+#~ msgid "Open in Help"
+#~ msgstr "Obre dins l'Ajuda"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Substitueix la càmera del joc.\n"
+#~ "Cap instància del joc en execució."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Arrossega: gira"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Premeu 'v' per canviar el Pivot, 'Maj+v' per arrosegar el Pivot (mentre "
+#~ "es mou)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+Clic Dret: Selecció detallada per llista"
+
+#~ msgid "Clone Down"
+#~ msgstr "Clona avall"
+
+#~ msgid "Yaw"
+#~ msgstr "Guinyada"
+
+#~ msgid "Size"
+#~ msgstr "Mida:"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Arrossegar: Gira\n"
+#~ "Alt+Arrossegar: Mou\n"
+#~ "Alt+Clic Dret: Selecció de llista de profunditat"
+
+#, fuzzy
+#~ msgid "Sep.:"
+#~ msgstr "Sep.:"
+
+#~ msgid "Add All"
+#~ msgstr "Afegeix-ho Tot"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Menú d'edició de Temes."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Crea una Plantilla Buida"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Crea un Plantilla d'Editor Buida"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Crea a partir del Tema d'Editor actual"
+
+#~ msgid "Data Type:"
+#~ msgstr "Tipus de Dades:"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "Tema"
+
+#~ msgid "Compiled"
+#~ msgstr "Compilat"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Eliminar %d projectes de la llista?\n"
+#~ "El contingut del directori del projecte no es modificarà."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Eliminar aquest projecte de la llista?\n"
+#~ "El contingut del directori del projecte no es modificarà."
+
+#~ msgid "Templates"
+#~ msgstr "Plantilles"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Afegeix un camí remapat"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "No es pot executar en el node arrel."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "No es pot llegir la imatge de presentació:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Utilitzant la imatge de presentació per defecte."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Un reproductor d'Animacions no pot animar-se a si mateix, només altres "
@@ -13672,9 +15088,6 @@ msgstr "Les constants no es poden modificar."
#~ msgstr ""
#~ "L'escena actual no s'ha desat encara. Desa l'escena abans d'executar-la."
-#~ msgid "Not in resource path."
-#~ msgstr "Fora del camí dels recursos."
-
#~ msgid "Revert"
#~ msgstr "Reverteix"
@@ -13778,9 +15191,6 @@ msgstr "Les constants no es poden modificar."
#~ msgid "Input"
#~ msgstr "Entrada"
-#~ msgid "Properties:"
-#~ msgstr "Propietats:"
-
#~ msgid "Methods:"
#~ msgstr "Mètodes:"
@@ -14115,10 +15525,6 @@ msgstr "Les constants no es poden modificar."
#~ msgstr "Parteix el Camí"
#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Cal seleccionar un Element!"
-
-#, fuzzy
#~ msgid "Add Node.."
#~ msgstr "Afegeix un Node"
@@ -14190,9 +15596,6 @@ msgstr "Les constants no es poden modificar."
#~ msgid "Public Methods:"
#~ msgstr "Mètodes públics:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Elements del Tema de la GUI"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Elements del Tema de la Interfície :"
@@ -14214,9 +15617,6 @@ msgstr "Les constants no es poden modificar."
#~ msgid "Match case"
#~ msgstr "Distingeix majúscules/minúscules"
-#~ msgid "Filter: "
-#~ msgstr "Filtre: "
-
#~ msgid "Ok"
#~ msgstr "D'acord"
@@ -14255,9 +15655,6 @@ msgstr "Les constants no es poden modificar."
#~ msgid "Rotate 270 degrees"
#~ msgstr "Gira-ho 270 graus"
-#~ msgid "Variable"
-#~ msgstr "Variable"
-
#~ msgid "Errors:"
#~ msgstr "Errors:"
@@ -14345,9 +15742,6 @@ msgstr "Les constants no es poden modificar."
#~ msgid "Set Transitions to:"
#~ msgstr "Estableix les Transicions com :"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Reanomena la Pista"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Modifica l'Interpolació de la Pista"
@@ -14495,12 +15889,6 @@ msgstr "Les constants no es poden modificar."
#~ msgid "StyleBox Preview:"
#~ msgstr "Previsualització del StyleBox:"
-#~ msgid "StyleBox"
-#~ msgstr "StyleBox"
-
-#~ msgid "Separation:"
-#~ msgstr "Separació:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Editor de Regions de Textura"
@@ -14573,13 +15961,6 @@ msgstr "Les constants no es poden modificar."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "No s'ha trobat el fitxer 'project.godot' en el camí del Projecte."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr ""
-#~ "No es pot trobat el el fitxer 'project.godot' en el camí del projecte."
-
-#~ msgid "Not found!"
-#~ msgstr "No s'ha trobat!"
-
#~ msgid "Replace By"
#~ msgstr "Reemplaça per"
@@ -14929,9 +16310,6 @@ msgstr "Les constants no es poden modificar."
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "Qualitat de Compressió de Textura (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "Opcions de Textura"
-
#~ msgid "Please specify some files!"
#~ msgstr "Cal especificar algun fitxer!"
@@ -15026,10 +16404,6 @@ msgstr "Les constants no es poden modificar."
#~ msgstr "Transició"
#, fuzzy
-#~ msgid "State"
-#~ msgstr "Estat:"
-
-#, fuzzy
#~ msgid "Password"
#~ msgstr "Contrasenya:"
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index 3aaf91d758..579289300b 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -30,8 +30,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-06-25 02:57+0000\n"
-"Last-Translator: Vojtěch Šamla <auzkok@seznam.cz>\n"
+"PO-Revision-Date: 2021-07-26 14:18+0000\n"
+"Last-Translator: Zbyněk <zbynek.fiala@gmail.com>\n"
"Language-Team: Czech <https://hosted.weblate.org/projects/godot-engine/godot/"
"cs/>\n"
"Language: cs\n"
@@ -39,7 +39,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-"X-Generator: Weblate 4.7.1-dev\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -550,7 +550,8 @@ msgstr "Sekundy"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -576,7 +577,8 @@ msgstr "Změnit měřítko výběru"
msgid "Scale From Cursor"
msgstr "Změnit měřítko od kurzoru"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplikovat výběr"
@@ -597,6 +599,11 @@ msgid "Go to Previous Step"
msgstr "Přejít k předchozímu kroku"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Resetovat"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimalizovat animaci"
@@ -613,6 +620,11 @@ msgid "Use Bezier Curves"
msgstr "Použít Bézierovy křivky"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Vložit stopy"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Optimalizátor animace"
@@ -661,7 +673,7 @@ msgid "Select Tracks to Copy"
msgstr "Vybrat stopy ke kopírování"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -747,12 +759,14 @@ msgid "Toggle Scripts Panel"
msgstr "Přepnout panel skriptů"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zvětšit"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -809,11 +823,9 @@ msgid "Add"
msgstr "Přidat"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -863,6 +875,7 @@ msgstr "Připojit Signál"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -933,7 +946,8 @@ msgid "Edit..."
msgstr "Upravit..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Přejít na metodu"
#: editor/create_dialog.cpp
@@ -948,6 +962,14 @@ msgstr "Změnit"
msgid "Create New %s"
msgstr "Vytvořit nový %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Žádné výsledky pro \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -969,8 +991,8 @@ msgstr "Hledat:"
msgid "Matches:"
msgstr "Shody:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1046,19 +1068,23 @@ msgid "Owners Of:"
msgstr "Vlastníci:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Odebrat vybrané soubory z projektu? (Nelze vrátit zpět)\n"
"Odebrané soubory budou v systémovém koši a obnovit je."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Soubory ke smazání potÅ™ebují jiné zdroje ke své Äinnosti.\n"
"Přesto je chcete smazat? (nelze vrátit zpět)\n"
@@ -1106,7 +1132,7 @@ msgstr "Průzkumník osiřelých zdrojů"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1231,28 +1257,41 @@ msgstr "Komponenty"
msgid "Licenses"
msgstr "Licence"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "NepodaÅ™ilo se otevřít balíÄek, není ve formátu ZIP."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Chyba pÅ™i otevírání balíÄku (není ve formátu ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (již existuje)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Dekomprese uživatelského obsahu"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Selhala extrakce následujících souborů z balíÄku:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "A %s dalších souborů."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "BalíÄek byl úspěšnÄ› nainstalován!"
#: editor/editor_asset_installer.cpp
@@ -1260,16 +1299,13 @@ msgstr "BalíÄek byl úspěšnÄ› nainstalován!"
msgid "Success!"
msgstr "Úspěch!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Obsah balíÄku:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instalovat"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Instalátor balíÄků"
#: editor/editor_audio_buses.cpp
@@ -1333,7 +1369,8 @@ msgid "Bypass"
msgstr "Obejít"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Možnosti Busu"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1413,7 +1450,7 @@ msgstr "Přidat bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Přidá do tohoto rozložení novou zvukovou sběrnici."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1500,6 +1537,15 @@ msgid "Can't add autoload:"
msgstr "Nelze pÅ™idat auto-naÄítání:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Soubor neexistuje."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Přidat AutoLoad"
@@ -1515,16 +1561,17 @@ msgid "Node Name:"
msgstr "Název uzlu:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Název"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Proměnná"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Vložit parametry"
@@ -1540,7 +1587,7 @@ msgstr "Ukládám lokální změny..."
msgid "Updating scene..."
msgstr "Aktualizuji scénu..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[prázdné]"
@@ -1695,8 +1742,49 @@ msgid "Import Dock"
msgstr "Importovat panel"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Smazat profil '%s'? (bez možnosti vrácení)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Aktuální)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1727,15 +1815,18 @@ msgid "Enable Contextual Editor"
msgstr "Aktivovat kontextový editor"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Aktivní vlastnosti:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Vlastnosti:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Povolené funkce:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Vlastnosti"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Povolené třídy:"
#: editor/editor_feature_profile.cpp
@@ -1753,25 +1844,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Chyba při ukládání profilu do cesty: '%s '."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "OdznaÄit"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Obnovit výchozí"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Aktuální profil:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Zvolit jako aktuální"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Smazat profil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Nový"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Odstranit dlaždici"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Dostupné profily:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Zvolit jako aktuální"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Import"
@@ -1780,20 +1880,22 @@ msgid "Export"
msgstr "Export"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Dostupné profily:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Aktuální profil:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Možnosti třídy"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Možnosti třídy:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Název nového profilu:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Smazat profil"
+msgid "New profile name:"
+msgstr "Název nového profilu:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1816,7 +1918,8 @@ msgid "Select Current Folder"
msgstr "Vybrat stávající složku"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Soubor už existuje. Přepsat?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1870,9 +1973,10 @@ msgid "Open a File or Directory"
msgstr "Otevřít soubor nebo složku"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Uložit"
@@ -1953,8 +2057,7 @@ msgid "Directories & Files:"
msgstr "Složky a soubory:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Náhled:"
@@ -2027,7 +2130,7 @@ msgstr "Vlastnosti motivu"
msgid "Enumerations"
msgstr "VýÄty"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstanty"
@@ -2116,7 +2219,7 @@ msgstr "Metoda"
msgid "Signal"
msgstr "Signál"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstantní"
@@ -2132,9 +2235,10 @@ msgstr "Vlastnost motivu"
msgid "Property:"
msgstr "Vlastnost:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Nastavit"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Nastav %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2149,7 +2253,7 @@ msgid "Copy Selection"
msgstr "Kopírovat výběr"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2213,7 +2317,8 @@ msgid "Imported resources can't be saved."
msgstr "Nelze uložit importované zdroje."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2432,18 +2537,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Uložit změny '%s' před zavřením?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Uloženo %s upravených zdrojů."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Pro uložení scény je vyžadován kořenový uzel."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Uložit scénu jako..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Tato operace nemůže být provedena bez scény."
@@ -2635,7 +2745,7 @@ msgstr "Odstranit rozložení"
msgid "Default"
msgstr "Výchozí"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Zobrazit v souborovém systému"
@@ -2816,6 +2926,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Průzkumník osiřelých zdrojů..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Přejmenovat projekt"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "UkonÄit do seznamu projektů"
@@ -2970,20 +3085,24 @@ msgstr "Spravovat šablony exportu..."
msgid "Help"
msgstr "Nápověda"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Online dokumentace"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Otevřít dokumentaci"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Otázky a odpovědi"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Nahlásit chybu"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Odeslat zpětnou vazbu dokumentace"
@@ -2992,7 +3111,8 @@ msgid "Community"
msgstr "Komunita"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "O aplikaci"
#: editor/editor_node.cpp
@@ -3090,6 +3210,16 @@ msgid "Manage Templates"
msgstr "Spravovat šablony"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Instalovat ze souboru"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Vyberte zdrojovou síť:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3126,7 +3256,7 @@ msgstr "Importovat šablony ze ZIP souboru"
msgid "Template Package"
msgstr "BalíÄek Å¡ablon"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Exportovat knihovnu"
@@ -3169,6 +3299,11 @@ msgid "Select"
msgstr "Vybrat"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Vybrat stávající složku"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Otevřít 2D Editor"
@@ -3200,6 +3335,11 @@ msgstr "Varování!"
msgid "No sub-resources found."
msgstr "Nebyly nalezeny žádné dílÄí zdroje."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Nebyly nalezeny žádné dílÄí zdroje."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Vytváření náhledu modelu"
@@ -3224,33 +3364,34 @@ msgstr "Nainstalované pluginy:"
msgid "Update"
msgstr "Aktualizovat"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Verze:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Stav:"
+#, fuzzy
+msgid "Author"
+msgstr "Autoři"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Upravit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Status"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Měření:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Čas snímku (sek.)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "PrůmÄ›rný Äas (sek.)"
#: editor/editor_profiler.cpp
@@ -3270,6 +3411,16 @@ msgid "Self"
msgstr "Tento objekt"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Snímek Ä.:"
@@ -3311,14 +3462,6 @@ msgstr "Neplatné RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Vybraný zdroj (%s) neodpovídá žádnému oÄekávanému typu pro tuto vlastnost "
-"(%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3342,40 +3485,6 @@ msgid "Pick a Viewport"
msgstr "Vyberte Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Nový skript"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Rozšířit skript"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Nový %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Vytvořit unikátní"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Vložit"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Konvertovat na %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Vybraný uzel není Viewport!"
@@ -3404,6 +3513,49 @@ msgstr "Nová hodnota:"
msgid "Add Key/Value Pair"
msgstr "Vložte pár klíÄ/hodnota"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Vybraný zdroj (%s) neodpovídá žádnému oÄekávanému typu pro tuto vlastnost "
+"(%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Vytvořit unikátní"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Vložit"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Konvertovat na %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Nový %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Nový skript"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Rozšířit skript"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3440,7 +3592,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Nezapoměl jste metodu '_run'?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Podržte Ctrl pro zaokrouhlení na celá Äísla. Podržte Shift pro pÅ™esnÄ›jší "
"úpravy."
@@ -3462,113 +3615,69 @@ msgid "Import From Node:"
msgstr "Import z uzlu:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Stáhnout znovu"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Odinstalovat"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Instalováno)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Stáhnout"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "Oficiální šablony exportu nejsou k dispozici pro vývojová sestavení."
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Nenalezeno)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Aktuální)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Neexistuje '%s' soubor."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Získávání zrcadel, prosím Äekejte..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Odstranit šablonu verze '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Nelze otevřít zip soubor exportních šablon."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Neplatný formát version.txt uvnitř šablon: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Nenalezena version.txt uvnitř šablon."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Chyba při vytváření cesty pro šablony:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Extrakce exportních šablon"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importování:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Chyba při získávání seznamu zrcadel."
+msgid "Error requesting URL:"
+msgstr "Chyba žádosti o URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "Chyba parsování JSON mirror list. Prosím nahlaste tuto chybu!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Připojuji se k zrcadlu..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Nebyly nalezeny odkazy pro stažení této verze. Přímé stažení je dostupné "
-"pouze pro oficiální vydání."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Nelze přeložit název hostitele:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Nelze vyřešit."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Nelze se připojit k hostiteli:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Nelze se připojit."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Žádná odpovÄ›Ä od hostitele:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Žádná odpovÄ›Ä."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "Požadavek se nezdařil."
+msgid "Request failed."
+msgstr "Požadavek selhal."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Zacyklené přesměrování."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Požadavek se nezdařil, příliš mnoho přesměrování"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Selhalo:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Požadavek selhal."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Stahování dokonÄeno."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3583,12 +3692,25 @@ msgstr ""
"Problémové archivy šablon lze nalézt na '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Chyba žádosti o URL:"
+msgid "Error getting the list of mirrors."
+msgstr "Chyba při získávání seznamu zrcadel."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Připojuji se k zrcadlu..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "Chyba parsování JSON mirror list. Prosím nahlaste tuto chybu!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Nebyly nalezeny odkazy pro stažení této verze. Přímé stažení je dostupné "
+"pouze pro oficiální vydání."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3633,44 +3755,138 @@ msgid "SSL Handshake Error"
msgstr "Selhání SSL handshaku"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Nelze otevřít zip soubor exportních šablon."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Neplatný formát version.txt uvnitř šablon: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Nenalezena version.txt uvnitř šablon."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Chyba při vytváření cesty pro šablony:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Extrakce exportních šablon"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importování:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Odstranit šablonu verze '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Dekomprese zdrojů sestavení pro Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Správce exportních šablon"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Aktuální verze:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Instalované verze:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+#, fuzzy
+msgid "Open Folder"
+msgstr "Otevřít soubor"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Odinstalovat"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "PoÄáteÄní hodnota pro poÄítadlo"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Chyba při stahování"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "Oficiální šablony exportu nejsou k dispozici pro vývojová sestavení."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Instalovat ze souboru"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Odstranit šablonu"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importovat šablony ze ZIP souboru"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Zrušit"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Vybrat soubor šablony"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Nelze otevřít zip soubor exportních šablon."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Å ablony exportu Godotu"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Instalované verze:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Správce exportních šablon"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Odinstalovat"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Stáhnout šablony"
+msgid "Select Template File"
+msgstr "Vybrat soubor šablony"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr "Å ablony exportu Godotu"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Zvolte zrcadlo ze seznamu: (Shift + Klik: OtevÅ™it v prohlížeÄi)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3804,29 +4020,62 @@ msgstr "Nový skript..."
msgid "New Resource..."
msgstr "Nový zdroj..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Rozbalit vše"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Sbalit vše"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplikovat..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Hledat soubory"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Přesunout do koše"
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Datum modifikace"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Datum modifikace"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplikovat..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Přejmenovat..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Předchozí složka/soubor"
@@ -3910,10 +4159,6 @@ msgstr "Najít..."
msgid "Replace..."
msgstr "Nahradit..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Zrušit"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Najít: "
@@ -4136,53 +4381,55 @@ msgid "Failed to load resource."
msgstr "Selhalo nahrání zdroje."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Rozbalit všechny vlastnosti"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Vlastnosti"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Sbalit všechny vlastnosti"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Uložit jako..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Vlastnosti"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Kopírovat parametry"
+msgid "Make Sub-Resources Unique"
+msgstr "Udělat Sub-prostředky unikátní"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Editovat schránku zdrojů"
+msgid "Create a new resource in memory and edit it."
+msgstr "Vytvořit nový zdroj v paměti a editovat ho."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Kopírovat zdroj"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Nahrát existující zdroj z disku a editovat ho."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Vytvořit vestavěný"
+msgid "Save the currently edited resource."
+msgstr "Uložit právě editovaný zdroj."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Udělat Sub-prostředky unikátní"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Uložit jako..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Otevřít v nápovědě"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Není v cestě ke zdroji."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Vytvořit nový zdroj v paměti a editovat ho."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Editovat schránku zdrojů"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Nahrát existující zdroj z disku a editovat ho."
+msgid "Copy Resource"
+msgstr "Kopírovat zdroj"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Uložit právě editovaný zdroj."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Vytvořit vestavěný"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4197,14 +4444,24 @@ msgid "History of recently edited objects."
msgstr "Historie naposledy upravených objektů."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Vlastnosti objektu."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Otevřít dokumentaci"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Otevřít dokumentaci"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtrovat vlastnosti"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Vlastnosti objektu."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Změny mohou být ztraceny!"
@@ -4232,6 +4489,15 @@ msgstr "Název pluginu:"
msgid "Subfolder:"
msgstr "Podsložka:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Verze:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Jazyk:"
@@ -4437,7 +4703,8 @@ msgid "Blend:"
msgstr "Prolínání:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parametr změněn"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4653,6 +4920,11 @@ msgid "Animation"
msgstr "Animace"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Nový"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Upravit přechody..."
@@ -4994,10 +5266,18 @@ msgid "View Files"
msgstr "Zobrazit soubory"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Stáhnout"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Chyba připojení, zkuste to prosím znovu."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Nelze se připojit."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Nelze se připojit k hostiteli:"
@@ -5006,16 +5286,20 @@ msgid "No response from host:"
msgstr "Žádná odpovÄ›Ä od hostitele:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Žádná odpovÄ›Ä."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Nelze přeložit název hostitele:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Požadavek se nezdařil, návratový kód:"
+msgid "Can't resolve."
+msgstr "Nelze vyřešit."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Požadavek selhal."
+msgid "Request failed, return code:"
+msgstr "Požadavek se nezdařil, návratový kód:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5042,6 +5326,10 @@ msgid "Timeout."
msgstr "Čas vypršel."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Selhalo:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Špatný hash staženého souboru, soubor byl nejspíše zfalšován."
@@ -5139,11 +5427,15 @@ msgstr "Poslední"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "All"
-msgstr "Všechny"
+msgstr "všichni"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Žádné výsledky pro \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5185,6 +5477,10 @@ msgstr "NaÄítání..."
msgid "Assets ZIP File"
msgstr "ZIP soubor asetů"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5194,9 +5490,10 @@ msgstr ""
"Uložte scénu a zkuste to znovu."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Žádné sítÄ› k zapeÄení. UjistÄ›te se, že obsahují kanál UV2 a že je nastaven "
"příznak \"Zapéct světlo\"."
@@ -5442,9 +5739,10 @@ msgstr "Upravit kotvy"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Přepsat herní kameru\n"
"Herní kamera se nahradí kamerou z pohledu editoru."
@@ -5452,11 +5750,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Přepsat herní kameru\n"
-"Není spuštěna žádná instance hry."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5511,6 +5808,7 @@ msgstr ""
"nadřazený prvek."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5522,22 +5820,32 @@ msgid "Select Mode"
msgstr "Režim výběru"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Táhnutí: OtoÄit"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Odstranit vybraný uzel nebo přechod."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Táhnutí: Přemístit"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Odstranit vybraný uzel nebo přechod."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Stisknutím klávesy \"V\" se upraví pivot, stisknutím kláves \"Shift+V\" se "
-"posune pivot (při pohybu)."
+"Zobrazit seznam objektů v bodě kliknutí\n"
+"(stejné jako Alt+PTM v režimu výběru)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+PTM: Výběr hloubkového seznamu"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5775,6 +6083,16 @@ msgid "Clear Pose"
msgstr "Vymazat pózu"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Přidat uzel"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Scéna/Scény instance"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Vynásobit krok mřížky dvěma"
@@ -5787,6 +6105,52 @@ msgid "Pan View"
msgstr "Přesunout pohled"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Zmenšit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Zmenšit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Zmenšit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Zmenšit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Zmenšit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Zmenšit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Přidat %s"
@@ -6029,6 +6393,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Vytvoření jediného konvexního kolizního tvaru se nezdařilo."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Vytvořit jediný konvexní tvar"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Vytvořit jediný konvexní tvar"
@@ -6061,7 +6430,8 @@ msgid "No mesh to debug."
msgstr "Žádná mesh pro debugování."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Model nemá UV v této vrstvě"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6127,13 +6497,27 @@ msgstr ""
"Toto je nejrychlejší (ale nejméně přesná) možnost detekce kolizí."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Vytvořit jediného konvexního kolizního sourozence"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Vytvořit více konvexních kolizních sourozenců"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Vytvoří polygonový kolizní tvar.\n"
"Toto je kompromis výkonu a přesnosti z dvou možností uvedených výše."
@@ -6195,7 +6579,6 @@ msgid "Mesh Library"
msgstr "Knihovna síťí"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Přidat položku"
@@ -6468,7 +6851,8 @@ msgid "Close Curve"
msgstr "Uzavřít křivku"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Možnosti"
@@ -6776,6 +7160,26 @@ msgstr "NaÄíst zdroj"
msgid "ResourcePreloader"
msgstr "Zdroj"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Převrátit horizontálně"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "PoÄet vygenerovaných bodů:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "PoÄet vygenerovaných bodů:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Převrátit horizontálně"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree nemá nastavenou cestu k AnimstionPlayer"
@@ -6981,7 +7385,7 @@ msgstr "Spustit"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Hledat"
@@ -7012,6 +7416,11 @@ msgid "Debug with External Editor"
msgstr "Debugovat v externím editoru"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Online dokumentace"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Otevřít online dokumentaci Godotu."
@@ -7136,8 +7545,8 @@ msgstr "Přejít na"
msgid "Cut"
msgstr "Vyjmout"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Vybrat vše"
@@ -7170,10 +7579,6 @@ msgid "Unfold All Lines"
msgstr "Rozložit všechny řádky"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Duplikovat dolů"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Doplnit symbol"
@@ -7327,6 +7732,28 @@ msgid "View Plane Transform."
msgstr "Zobrazit transformaci roviny."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Žádné"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Režim otáÄení"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Posunout:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Zvětšení:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Škálování: "
@@ -7347,42 +7774,54 @@ msgid "Animation Key Inserted."
msgstr "AnimaÄní klÃ­Ä vložen."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Stoupání"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Náklon"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Velikost"
+#, fuzzy
+msgid "Size:"
+msgstr "Velikost: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Objekty vykreslené"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Změny materiálu"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Změny shaderu"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Změny povrchu"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Vykreslovací volání"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Vrcholy"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Pohled shora."
@@ -7535,6 +7974,11 @@ msgid "Freelook Slow Modifier"
msgstr "Zpomalení volného pohledu"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Změnit velikost kamery"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Rotace pohledu uzamknuta"
@@ -7552,6 +7996,11 @@ msgstr ""
"Nelze jej použít jako spolehlivý ukazatel výkonu ve hře."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Konvertovat na %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm Dialog"
@@ -7570,7 +8019,8 @@ msgstr ""
"Polootevřené oko: Gizmo je viditelné přes neprůhledné (rentgenové) povrchy."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Přichytit uzly k podlaze"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7578,16 +8028,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Nelze najít pevnou podlahu, na kterou by se přichytil výběr."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Táhnutí: OtoÄit\n"
-"Alt+Táhnutí: Přemístit\n"
-"Alt+Pravé tlaÄíko myÅ¡i: VýbÄ›r seznamu hloubky"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Použít místní prostor"
@@ -7596,6 +8036,10 @@ msgid "Use Snap"
msgstr "Použít přichycení"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Pohled zdola"
@@ -7689,6 +8133,11 @@ msgid "View Grid"
msgstr "Zobrazit mřížku"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Nastavení viewportu"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Nastavení..."
@@ -7978,11 +8427,6 @@ msgid "Snap Mode:"
msgstr "Režim přichycení:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Žádné"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Přichycení na pixely"
@@ -8003,165 +8447,603 @@ msgid "Step:"
msgstr "Krok:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "OddÄ›lovaÄ:"
+msgid "Separation:"
+msgstr "Oddělení:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "Oblast textury"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Přidat všechny položky"
+#, fuzzy
+msgid "Colors"
+msgstr "Barva"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Přidat vše"
+#, fuzzy
+msgid "Fonts"
+msgstr "Font"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Ikona"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Styl"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Nebyly nalezeny žádné dílÄí zdroje."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstanty"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Konstantní barva."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Nenalezeno!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Nenalezeno!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Nebyly nalezeny žádné dílÄí zdroje."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Importovat motiv"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "UkonÄit editor?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analyzuji"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtry:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Vybrat uzel"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Vyberte složku pro skenování"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Nejprve vyberte nastavení ze seznamu!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Nejprve vyberte nastavení ze seznamu!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Nejprve vyberte nastavení ze seznamu!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Nejprve vyberte nastavení ze seznamu!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Nejprve vyberte nastavení ze seznamu!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Sbalit vše"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Rozbalit vše"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Vybrat soubor šablony"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Vybrat body"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Vybrat vše"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importovat scénu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Odstranit všechny položky"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Odebrat vše"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Odstranit položku"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Editovat téma"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Odstranit všechny položky"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Odstranit všechny položky"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Odstranit všechny položky"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Odstranit všechny položky"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Menu editace motivu."
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Přidat položky třídy"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Přidat položky třídy"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Přidat položku"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Přidat položku"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Přidat všechny položky"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Odstranit položky třídy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Odstranit položky třídy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Přejmenovat uzel"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Přejmenovat uzel"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Odstranit vybranou položku"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Neplatný soubor, neni to rozložení Audio Busu."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Spravovat šablony"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Upravitelná položka"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Typ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Typ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Přidat položku"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Přidat všechny položky"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Odstranit položku"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Odstranit položky třídy"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Vytvořit prázdnou šablonu"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Odstranit položky třídy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Odstranit všechny položky"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Přidat položku"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Název uzlu:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importovat motiv"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Výchozí"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Editovat téma"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Smazat zdroj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Importovat motiv"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Animace: přejmenování stopy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Dávkové přejmenování"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Přepisuje"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Typ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Vytvořit prázdný motiv editoru"
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Přidat položku"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "VytvoÅ™it ze souÄasného motivu editoru"
+#, fuzzy
+msgid "Node Types:"
+msgstr "Typ uzlu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "NaÄíst výchozí"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Přepisuje"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Téma"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Spravovat šablony exportu..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Náhled"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Obnovit náhled"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Vyberte zdrojovou síť:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "PÅ™epínatelné tlaÄítko"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Deaktivované tlaÄítko"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Položka"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Deaktivovaná položka"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Zaškrtávátko"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Zaškrtávací položka"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Položka volby"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Přepínatelná položka volby"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Nazvaný oddÄ›lovaÄ"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Podmenu"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Podpoložka 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Podpoložka 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Má"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Mnoho"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "Deaktivovaný LineEdit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Tab 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Tab 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Upravitelná položka"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Podstrom"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Má,mnoho,možností"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Datový typ:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Ikona"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Styl"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Font"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Barva"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Neplatný soubor, neni to rozložení Audio Busu."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Soubor tématu"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8333,6 +9215,10 @@ msgid "Priority"
msgstr "Priority"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Ikona"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z-Index"
@@ -8668,11 +9554,6 @@ msgid "Commit Changes"
msgstr "Commitnout změny"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Status"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "Podívat se na rozdíly, než se commitnou jako nejnovější verze"
@@ -9555,7 +10436,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Upravit vizuální vlastnost"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9681,7 +10563,8 @@ msgid "Script"
msgstr "Skript"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Režim exportu skriptů:"
#: editor/project_export.cpp
@@ -9689,19 +10572,21 @@ msgid "Text"
msgstr "Text"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Zkompilovaný"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Å ifrovaný (PoskytnÄ›te klÃ­Ä níže)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Neplatný Å¡ifrovací klÃ­Ä (musí být dlouhý 64 znaků)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Å ifrovací klÃ­Ä skriptu (256 bitový hexadecimální):"
#: editor/project_export.cpp
@@ -9775,7 +10660,8 @@ msgid "Imported Project"
msgstr "Importovaný projekt"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Neplatný název projektu."
#: editor/project_manager.cpp
@@ -9811,6 +10697,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Nelze vytvořit project.godot v umístění projektu."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "NepodaÅ™ilo se otevřít balíÄek, není ve formátu ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Selhala extrakce následujících souborů z balíÄku:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "BalíÄek byl úspěšnÄ› nainstalován!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Přejmenovat projekt"
@@ -9985,20 +10883,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Jste si jisti, že chcete spustit %d projektů najednou?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Odebrat %d projekty ze seznamu?\n"
-"Obsah složek projektů zůstane nedotÄen."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Vyberte zařízení ze seznamu"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Odstranit projekt ze seznamu?\n"
-"Obsah složky zůstane nedotÄen."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Vyberte zařízení ze seznamu"
#: editor/project_manager.cpp
msgid ""
@@ -10030,7 +10922,8 @@ msgid "Project Manager"
msgstr "Správce projektů"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projekty"
#: editor/project_manager.cpp
@@ -10042,10 +10935,25 @@ msgid "Last Modified"
msgstr "Datum modifikace"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Exportovat projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Přejmenovat projekt"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Skenovat"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projekty"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Vyberte složku pro skenování"
@@ -10054,18 +10962,41 @@ msgid "New Project"
msgstr "Nový projekt"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Importovaný projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Přejmenovat projekt"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Odstranit nenalezené"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Å ablony"
+msgid "About"
+msgstr "O aplikaci"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Knihovna zdrojů (AssetLib)"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Restartovat nyní"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Odebrat vše"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Nelze spustit projekt"
@@ -10078,8 +11009,14 @@ msgstr ""
"Přejete si prozkoumat oficiální ukázkové projekty v knihovně assetů?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtrovat vlastnosti"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10093,6 +11030,10 @@ msgid "Key "
msgstr "Klávesa "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "TlaÄítko gamepadu"
@@ -10136,6 +11077,10 @@ msgstr "Všechna zařízení"
msgid "Device"
msgstr "Zařízení"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Stiskněte klávesu..."
@@ -10277,7 +11222,8 @@ msgid "Override for Feature"
msgstr "Přepsání vlastnosti"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Přidat překlad"
#: editor/project_settings_editor.cpp
@@ -10285,11 +11231,13 @@ msgid "Remove Translation"
msgstr "Odstranit překlad"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Přidat přemapovanou cestu"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Přidat přemapování zdroje"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Přidat přemapování zdroje"
#: editor/project_settings_editor.cpp
@@ -10546,7 +11494,7 @@ msgstr "Hodnota, o kterou se poÄítadlo zvýší za každý uzel"
#: editor/rename_dialog.cpp
msgid "Padding"
-msgstr "Odsazení"
+msgstr "Zarovnávání"
#: editor/rename_dialog.cpp
msgid ""
@@ -10561,6 +11509,10 @@ msgid "Post-Process"
msgstr "Následné zpracování"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Styl"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Zachovat"
@@ -10725,12 +11677,30 @@ msgid "Delete node \"%s\"?"
msgstr "Smazat uzel \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Toto nelze provést s kořenovým uzlem."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Tuto operaci nelze provést na instanci scény."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10790,6 +11760,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Nelze pracovat na uzlech, ze kterých dědí aktuální scéna!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Tuto operaci nelze provést na instanci scény."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Připojit skript"
@@ -10837,10 +11811,6 @@ msgid "Load As Placeholder"
msgstr "NaÄíst jako placeholder"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Otevřít dokumentaci"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11130,6 +12100,12 @@ msgstr ""
"externího editoru."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Jméno třídy:"
@@ -11198,6 +12174,10 @@ msgid "Copy Error"
msgstr "Kopírovat chybu"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Video RAM"
@@ -11481,6 +12461,16 @@ msgstr "Neplatná instance slovníku (neplatné podtřídy)"
msgid "Object can't provide a length."
msgstr "Objekt nemůže poskytnout délku."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exportovat Mesh Library"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exportovat..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Další rovina"
@@ -11522,6 +12512,11 @@ msgid "GridMap Paint"
msgstr "Vykreslit GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "GridMap Vyplnit výběr"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Grid Map"
@@ -11768,6 +12763,16 @@ msgid "Add Output Port"
msgstr "Přidat výstupní port"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Změnit typ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Změnit název vstupního portu"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Nahradit všechny existující vestavěné funkce."
@@ -11878,6 +12883,11 @@ msgid "Add Preload Node"
msgstr "PÅ™idat pÅ™edem naÄtený uzel"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Přidat uzel"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Přidat uzel(y) ze stromu"
@@ -12105,10 +13115,6 @@ msgstr "Hledat VisualScript"
msgid "Get %s"
msgstr "Přijmi %d"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Nastav %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Chybí jméno balíÄku."
@@ -12138,6 +13144,40 @@ msgid "Select device from the list"
msgstr "Vyberte zařízení ze seznamu"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Exportování všeho"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Odinstalovat"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "NaÄítání, prosím Äekejte..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Nelze spustit podproces!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Spouštím skript..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Nelze vytvořit složku."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Nelze najít nástroj 'apksigner'."
@@ -12250,6 +13290,48 @@ msgstr ""
"vlastní sestavu\"."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Skenování souborů,\n"
+"Prosím, Äekejte..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Nelze otevřít šablonu pro export:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Přidávám %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Exportování všeho"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr "Neplatné jméno souboru! Android App Bundle vyžaduje příponu *.aab."
@@ -12262,6 +13344,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Neplatné jméno souboru! Android APK vyžaduje příponu *.apk."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12282,6 +13368,21 @@ msgstr ""
"Přeinstalujte šablonu pro sestavení systému Android z nabídky \"Projekt\"."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Nelze upravit project.godot v umístění projektu."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Nelze zapsat soubor:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Buildování projektu pro Android (gradle)"
@@ -12305,11 +13406,54 @@ msgstr ""
"Nelze kopírovat Äi pÅ™ejmenovat exportovaný soubor, zkontrolujte výstupy v "
"adresáři projektu gradle."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animace nenalezena: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Vytvářím kontury..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Nelze otevřít šablonu pro export:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Přidávám %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Nelze zapsat soubor:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "Zarovnávání APK..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Chybí identifikátor."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Znak '%s' není dovolen v identifikátoru."
@@ -12338,10 +13482,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Spustit vyexportované HTML ve výchozím prohlížeÄi."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Nelze zapsat soubor:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Nelze otevřít šablonu pro export:"
@@ -12350,16 +13490,49 @@ msgid "Invalid export template:"
msgstr "Neplatná šablona pro export:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Nelze zapsat soubor:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Nelze zapsat soubor:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Nebylo možné pÅ™eÄíst HTML shell:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Nebylo možné naÄíst soubor splash obrázku:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Nelze vytvořit složku."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Používám výchozí splash obrázek."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Chyba při ukládání scény."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Neplatný identifikátor:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12773,6 +13946,13 @@ msgstr ""
"Video driver GLES2 nepodporuje GIProby.\n"
"Místo toho použijte BakedLightmap."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "SpotLight s úhlem širším než 90 stupňů nemůže vrhat stíny."
@@ -12857,6 +14037,18 @@ msgstr "Kloub není připojen k PhysicsBody"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Uzel A a uzel B musí být odlišné PhysicsBody"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12865,6 +14057,46 @@ msgstr ""
"Vlastnost \"Remote Path\" musí ukazovat na platný Spatial nebo Spatial-"
"derived uzel."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Toto tělo bude ignorováno dokud nenastavíte síť."
@@ -12925,6 +14157,10 @@ msgstr "Na uzlu BlendTree \"%s\" nebyla nalezena animace: \"%s\""
msgid "Animation not found: '%s'"
msgstr "Animace nenalezena: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "V uzlu '%s', neplatná animace: '%s'."
@@ -13097,6 +14333,27 @@ msgid "Invalid comparison function for that type."
msgstr "Neplatná funkce pro porovnání tohoto typu."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Odlišnosti mohou být přiřazeny pouze ve vertex funkci."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Přiřazeno funkci."
@@ -13105,13 +14362,179 @@ msgid "Assignment to uniform."
msgstr "Přiřazeno uniformu."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Odlišnosti mohou být přiřazeny pouze ve vertex funkci."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Konstanty není možné upravovat."
+#~ msgid "Package Contents:"
+#~ msgstr "Obsah balíÄku:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Smazat profil '%s'? (bez možnosti vrácení)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Aktivní vlastnosti:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Povolené funkce:"
+
+#~ msgid "Unset"
+#~ msgstr "OdznaÄit"
+
+#~ msgid "Class Options"
+#~ msgstr "Možnosti třídy"
+
+#~ msgid "Set"
+#~ msgstr "Nastavit"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Uloženo %s upravených zdrojů."
+
+#~ msgid "Q&A"
+#~ msgstr "Otázky a odpovědi"
+
+#~ msgid "Status:"
+#~ msgstr "Stav:"
+
+#~ msgid "Edit:"
+#~ msgstr "Upravit:"
+
+#~ msgid "Redownload"
+#~ msgstr "Stáhnout znovu"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Instalováno)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Nenalezeno)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Požadavek se nezdařil."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Zacyklené přesměrování."
+
+#~ msgid "Download Complete."
+#~ msgstr "Stahování dokonÄeno."
+
+#~ msgid "Remove Template"
+#~ msgstr "Odstranit šablonu"
+
+#~ msgid "Download Templates"
+#~ msgstr "Stáhnout šablony"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Zvolte zrcadlo ze seznamu: (Shift + Klik: OtevÅ™it v prohlížeÄi)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Přesunout do koše"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Rozbalit všechny vlastnosti"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Sbalit všechny vlastnosti"
+
+#~ msgid "Copy Params"
+#~ msgstr "Kopírovat parametry"
+
+#~ msgid "Open in Help"
+#~ msgstr "Otevřít v nápovědě"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Přepsat herní kameru\n"
+#~ "Není spuštěna žádná instance hry."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Táhnutí: OtoÄit"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Stisknutím klávesy \"V\" se upraví pivot, stisknutím kláves \"Shift+V\" "
+#~ "se posune pivot (při pohybu)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+PTM: Výběr hloubkového seznamu"
+
+#~ msgid "Clone Down"
+#~ msgstr "Duplikovat dolů"
+
+#~ msgid "Yaw"
+#~ msgstr "Náklon"
+
+#~ msgid "Size"
+#~ msgstr "Velikost"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Táhnutí: OtoÄit\n"
+#~ "Alt+Táhnutí: Přemístit\n"
+#~ "Alt+Pravé tlaÄíko myÅ¡i: VýbÄ›r seznamu hloubky"
+
+#~ msgid "Sep.:"
+#~ msgstr "OddÄ›lovaÄ:"
+
+#~ msgid "Add All"
+#~ msgstr "Přidat vše"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Menu editace motivu."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Vytvořit prázdnou šablonu"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Vytvořit prázdný motiv editoru"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "VytvoÅ™it ze souÄasného motivu editoru"
+
+#~ msgid "Data Type:"
+#~ msgstr "Datový typ:"
+
+#~ msgid "Theme File"
+#~ msgstr "Soubor tématu"
+
+#~ msgid "Compiled"
+#~ msgstr "Zkompilovaný"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Odebrat %d projekty ze seznamu?\n"
+#~ "Obsah složek projektů zůstane nedotÄen."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Odstranit projekt ze seznamu?\n"
+#~ "Obsah složky zůstane nedotÄen."
+
+#~ msgid "Templates"
+#~ msgstr "Å ablony"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Přidat přemapovanou cestu"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Toto nelze provést s kořenovým uzlem."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Nebylo možné naÄíst soubor splash obrázku:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Používám výchozí splash obrázek."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "PÅ™ehrávaÄ animace nemůže animovat sám sebe, pouze ostatní pÅ™ehrávaÄe."
@@ -13164,9 +14587,6 @@ msgstr "Konstanty není možné upravovat."
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "Soubor nebo složka se stejným názvem již na tomto místě existuje."
-#~ msgid "Aligning APK..."
-#~ msgstr "Zarovnávání APK..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "Nelze dokonÄit zarovnání APK."
@@ -13224,9 +14644,6 @@ msgstr "Konstanty není možné upravovat."
#~ msgstr ""
#~ "Aktuální scéna nebyla nikdy uložena, prosím uložte jí před spuštěním."
-#~ msgid "Not in resource path."
-#~ msgstr "Není v cestě ke zdroji."
-
#~ msgid "Revert"
#~ msgstr "Vrátit zpět"
@@ -13307,9 +14724,6 @@ msgstr "Konstanty není možné upravovat."
#~ msgid "Input"
#~ msgstr "Vstup"
-#~ msgid "Properties:"
-#~ msgstr "Vlastnosti:"
-
#~ msgid "Methods:"
#~ msgstr "Metody:"
@@ -13560,10 +14974,6 @@ msgstr "Konstanty není možné upravovat."
#~ msgid "Splits"
#~ msgstr "Rozdělit cestu"
-#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Vyberte složku pro skenování"
-
#~ msgid "Add Node.."
#~ msgstr "Přidat uzel.."
@@ -13671,9 +15081,6 @@ msgstr "Konstanty není možné upravovat."
#~ msgid "Rotate 270 degrees"
#~ msgstr "OtoÄit o 270 stupňů"
-#~ msgid "Variable"
-#~ msgstr "Proměnná"
-
#~ msgid "Errors:"
#~ msgstr "Chyby:"
@@ -13710,9 +15117,6 @@ msgstr "Konstanty není možné upravovat."
#~ msgid "Set Transitions to:"
#~ msgstr "Změna přechodů na:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Animace: přejmenování stopy"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Animace: změna interpolace stopy"
@@ -13834,9 +15238,6 @@ msgstr "Konstanty není možné upravovat."
#~ msgid "OK :("
#~ msgstr "OK :("
-#~ msgid "Separation:"
-#~ msgstr "Oddělení:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Editor oblasti textury"
@@ -13883,9 +15284,6 @@ msgstr "Konstanty není možné upravovat."
#~ msgid "Can't write file."
#~ msgstr "Nelze zapsat soubor."
-#~ msgid "Not found!"
-#~ msgstr "Nenalezeno!"
-
#~ msgid "Replace By"
#~ msgstr "Nahradit"
diff --git a/editor/translations/da.po b/editor/translations/da.po
index 9e09250fbc..163eb546a0 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -560,7 +560,8 @@ msgstr "Sekunder"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -586,7 +587,8 @@ msgstr "Skalér Valgte"
msgid "Scale From Cursor"
msgstr "Skaler Fra Cursor"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplikér Valgte"
@@ -608,6 +610,11 @@ msgid "Go to Previous Step"
msgstr "GÃ¥ til Forrige Trin"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Nulstil Zoom"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimer Animation"
@@ -624,6 +631,11 @@ msgid "Use Bezier Curves"
msgstr "Brug Bezier Kurver"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Indsæt Spor"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Anim. optimerer"
@@ -673,7 +685,7 @@ msgid "Select Tracks to Copy"
msgstr "Vælg spor til kopiering"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -763,12 +775,14 @@ msgid "Toggle Scripts Panel"
msgstr "Slå til/fra Scripts Panel"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoom Ind"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -831,11 +845,9 @@ msgid "Add"
msgstr "Tilføj"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -889,6 +901,7 @@ msgstr "Kan ikke forbinde signal"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -962,7 +975,8 @@ msgid "Edit..."
msgstr "Rediger..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "GÃ¥ til Metode"
#: editor/create_dialog.cpp
@@ -977,6 +991,14 @@ msgstr "Skift"
msgid "Create New %s"
msgstr "Opret Ny %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -998,8 +1020,8 @@ msgstr "Søgning:"
msgid "Matches:"
msgstr "Matches:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1077,20 +1099,24 @@ msgid "Owners Of:"
msgstr "Ejere af:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Fjern de valgte filer fra projektet? (ej fortrydes)\n"
"Du kan finde de fjernede filer i systemets skraldespand for at genoprette "
"dem."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"De filer der fjernes er nødvendige for, at andre ressourcer kan fungere.\n"
"Fjern dem alligevel? (ej fortrydes)\n"
@@ -1140,7 +1166,7 @@ msgstr "Forældreløs ressource udforsker"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1266,29 +1292,41 @@ msgstr "Komponenter"
msgid "Licenses"
msgstr "Licenser"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Fejl ved åbning af pakkefil, ikke i ZIP-format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Fejl ved åbning af pakke fil, ikke i zip format."
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr "Autoload '%s' eksisterer allerede!"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Udpakker Aktiver"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "De følgende filer kunne ikke trækkes ud af pakken:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Og %s flere filer."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Pakke installeret med succes!"
#: editor/editor_asset_installer.cpp
@@ -1296,17 +1334,13 @@ msgstr "Pakke installeret med succes!"
msgid "Success!"
msgstr "Succes!"
-#: editor/editor_asset_installer.cpp
-#, fuzzy
-msgid "Package Contents:"
-msgstr "Indhold:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Installér"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Pakkeinstallatør"
#: editor/editor_audio_buses.cpp
@@ -1371,7 +1405,8 @@ msgid "Bypass"
msgstr "Spring Over"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Bus muligheder"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1452,7 +1487,7 @@ msgstr "Tilføj Bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Tilføj en ny Audio Bus til dette layout."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1548,6 +1583,15 @@ msgid "Can't add autoload:"
msgstr "Autoload kan ikke tilføjes:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Fil eksisterer ikke."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Tilføj AutoLoad"
@@ -1563,16 +1607,17 @@ msgid "Node Name:"
msgstr "Node Navn:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Navn"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Omdøbe variablen"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Indsæt Parametre"
@@ -1588,7 +1633,7 @@ msgstr "Gemmer lokale ændringer..."
msgid "Updating scene..."
msgstr "Opdatere scene..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[tom]"
@@ -1748,8 +1793,49 @@ msgid "Import Dock"
msgstr "Importer"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Slet profil '%s'? (kan ikke fortrydes)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Nuværende)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1786,17 +1872,17 @@ msgstr "Åbn næste Editor"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
-msgstr "Tema Egenskaber:"
+msgid "Class Properties:"
+msgstr "Klap alle egenskaber sammen"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr "Funktions Liste:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr "Aktiverede Classes:"
#: editor/editor_feature_profile.cpp
@@ -1815,8 +1901,9 @@ msgid "Error saving profile to path: '%s'."
msgstr "Fejl ved indlæsning af skabelon '%s'"
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Indlæs Default"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1825,17 +1912,26 @@ msgstr "Nuværende version:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Make Current"
-msgstr "(Nuværende)"
+msgid "Create Profile"
+msgstr "Slet points"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Ny"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Fjern Template"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "Tilgængelige Noder:"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Make Current"
+msgstr "(Nuværende)"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importer"
@@ -1845,23 +1941,22 @@ msgstr "Eksport"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Available Profiles:"
-msgstr "Tilgængelige Noder:"
+msgid "Configure Selected Profile:"
+msgstr "Nuværende version:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
-msgstr "Klasse beskrivelse"
+msgid "Extra Options:"
+msgstr "Klasse beskrivelse:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "New profile name:"
-msgstr "Node Navn:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase Profile"
-msgstr "Slet points"
+msgid "New profile name:"
+msgstr "Node Navn:"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1888,7 +1983,8 @@ msgid "Select Current Folder"
msgstr "Vælg nurværende mappe"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Filen Eksisterer, Overskrives?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1942,9 +2038,10 @@ msgid "Open a File or Directory"
msgstr "Ã…ben en Fil eller Mappe"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Gem"
@@ -2033,8 +2130,7 @@ msgid "Directories & Files:"
msgstr "Mapper & Filer:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Forhåndsvisning:"
@@ -2106,7 +2202,7 @@ msgstr "Tema Egenskaber"
msgid "Enumerations"
msgstr "Tællinger"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstanter"
@@ -2199,7 +2295,7 @@ msgstr "Metoder"
msgid "Signal"
msgstr "Signaler"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstant"
@@ -2217,8 +2313,9 @@ msgstr "Tema Egenskaber"
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2235,7 +2332,7 @@ msgid "Copy Selection"
msgstr "Fjern Markering"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2300,7 +2397,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Ok"
@@ -2516,19 +2614,22 @@ msgid "Save changes to '%s' before closing?"
msgstr "Gem ændringer til '%s' før lukning?"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Saved %s modified resource(s)."
-msgstr "Fejler med at indlæse ressource."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Gem Scene Som..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Denne handling kan ikke udføres uden en scene."
@@ -2724,7 +2825,7 @@ msgstr "Slet Layout"
msgid "Default"
msgstr "Standard"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Vis i Filsystem"
@@ -2912,6 +3013,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Forældreløs ressource udforsker"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Omdøb Projekt"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Afslut til Projekt Listen"
@@ -3075,14 +3181,14 @@ msgstr "Organiser Eksport Skabeloner"
msgid "Help"
msgstr "Hjælp"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Online Dokumentation"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Ã…ben Seneste"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Spørgsmål og Svar"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3090,6 +3196,10 @@ msgid "Report a Bug"
msgstr "Genimporter"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -3098,7 +3208,8 @@ msgid "Community"
msgstr "Fællesskab"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Om"
#: editor/editor_node.cpp
@@ -3200,6 +3311,16 @@ msgid "Manage Templates"
msgstr "Organiser Eksport Skabeloner"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Installer fra Fil"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Ikke baseret på en ressource fil"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3227,7 +3348,7 @@ msgstr "Importér Skabeloner Fra ZIP Fil"
msgid "Template Package"
msgstr "Eksporter Skabelon Manager"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Eksporter Bibliotek"
@@ -3269,6 +3390,11 @@ msgid "Select"
msgstr "Vælg"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Vælg nurværende mappe"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Ã…bn 2D Editor"
@@ -3302,6 +3428,11 @@ msgstr "Advarsler"
msgid "No sub-resources found."
msgstr "Sub-Ressourcer:"
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Sub-Ressourcer:"
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Opretter Maske Forhåndsvisninger"
@@ -3327,33 +3458,34 @@ msgstr "Installerede Plugins:"
msgid "Update"
msgstr "Opdater"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Version:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Forfatter:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Status:"
+#, fuzzy
+msgid "Author"
+msgstr "Forfattere"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Rediger:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "MÃ¥ling:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Frame Tid (sek)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Gennemsnitlig Tid (sek)"
#: editor/editor_profiler.cpp
@@ -3373,6 +3505,16 @@ msgid "Self"
msgstr "Selv"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Ramme #:"
@@ -3416,12 +3558,6 @@ msgstr "Ugyldig sti"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3439,41 +3575,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "Ã…ben script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Indsæt"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Konverter Til %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3502,6 +3603,48 @@ msgstr ""
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Indsæt"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Konverter Til %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Extend Script"
+msgstr "Ã…ben script"
+
#: editor/editor_run_native.cpp
#, fuzzy
msgid ""
@@ -3537,7 +3680,7 @@ msgid "Did you forget the '_run' method?"
msgstr "Glemte du '_run' metoden?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3557,114 +3700,69 @@ msgid "Import From Node:"
msgstr "Importer Fra Node:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "Gen-Download"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Afinstaller"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Installeret)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Download"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Mangler)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Nuværende)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Der er ingen '%s' fil."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Henter spejle, vent venligst ..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Fjern skabelonversion '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Kan ikke åbne eksport skabeloner zip."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Ugyldigt version.txt format inde i skabeloner: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Ingen version.txt fundet inde i skabeloner."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Fejl ved oprettelse af sti til skabeloner:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Udpakning af Eksportskabeloner"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importerer:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr ""
+#, fuzzy
+msgid "Error requesting URL:"
+msgstr "Fejl ved anmodning af url: "
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Forbinder til spejl..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
+msgid "Can't resolve the requested address."
msgstr ""
-"Ingen download links fundet til denne version. Direkte download er kun "
-"tilgængelig til officielle udgivelser."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Kan ikke løses."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Kan ikke forbinde til host:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Ingen forbindelse."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Ingen respons fra host:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Ingen reaktion."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+#, fuzzy
+msgid "Request failed."
msgstr "Forespørgsel mislykkedes."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Omdiriger Løkke."
+msgid "Request ended up in a redirect loop."
+msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Fejlet:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Forespørgsel mislykkedes."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Download fuldført."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3678,13 +3776,24 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error requesting URL:"
-msgstr "Fejl ved anmodning af url: "
+msgid "Error getting the list of mirrors."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Forbinder til spejl..."
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Ingen download links fundet til denne version. Direkte download er kun "
+"tilgængelig til officielle udgivelser."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3730,46 +3839,139 @@ msgstr "SSL Handshake Fejl"
#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Kan ikke åbne eksport skabeloner zip."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Ugyldigt version.txt format inde i skabeloner: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Ingen version.txt fundet inde i skabeloner."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Fejl ved oprettelse af sti til skabeloner:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Udpakning af Eksportskabeloner"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importerer:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Fjern skabelonversion '%s'?"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Uncompressing Android Build Sources"
msgstr "Udpakker Aktiver"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Eksporter Skabelon Manager"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Nuværende version:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Installerede Versioner:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Ã…ben en Fil"
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Afinstaller"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Download"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Installer fra Fil"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Fjern Template"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importér Skabeloner Fra ZIP Fil"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Annuller"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "Vælg template fil"
+msgid "Cancel the download of the templates."
+msgstr "Kan ikke åbne eksport skabeloner zip."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
-msgstr "Organiser Eksport Skabeloner"
+msgid "Other Installed Versions:"
+msgstr "Installerede Versioner:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Eksporter Skabelon Manager"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Afinstaller"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Download Skabeloner"
+#, fuzzy
+msgid "Select Template File"
+msgstr "Vælg template fil"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Vælg spejl fra liste: (Shift+Click: Åbn i Browser)"
+#, fuzzy
+msgid "Godot Export Templates"
+msgstr "Organiser Eksport Skabeloner"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3911,13 +4113,15 @@ msgstr "Hurtig Ã…bn Script..."
msgid "New Resource..."
msgstr "Gem Ressource Som..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Expand All"
msgstr "Udvid alle"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Collapse All"
@@ -3925,19 +4129,47 @@ msgstr "Klap alle sammen"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Duplicate..."
-msgstr "Duplikere"
+msgid "Sort files"
+msgstr "Søg Classes"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "Flyt Autoload"
+msgid "Duplicate..."
+msgstr "Duplikere"
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Omdøb..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "Forrige fane"
@@ -4028,10 +4260,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Annuller"
-
#: editor/find_in_files.cpp
#, fuzzy
msgid "Find: "
@@ -4272,26 +4500,44 @@ msgstr "Fejler med at indlæse ressource."
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Expand All Properties"
-msgstr "Udvid alle egenskaber"
+msgid "Copy Properties"
+msgstr "Egenskaber"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Collapse All Properties"
-msgstr "Klap alle egenskaber sammen"
+msgid "Paste Properties"
+msgstr "Egenskaber"
+
+#: editor/inspector_dock.cpp
+msgid "Make Sub-Resources Unique"
+msgstr "Gør Under-Ressourcer Unikke"
+
+#: editor/inspector_dock.cpp
+msgid "Create a new resource in memory and edit it."
+msgstr "Opret en ny ressource i hukommelsen og rediger den."
+
+#: editor/inspector_dock.cpp
+msgid "Load an existing resource from disk and edit it."
+msgstr "Indlæs en eksisterende ressource fra disk og rediger den."
+
+#: editor/inspector_dock.cpp
+msgid "Save the currently edited resource."
+msgstr "Gem den aktuelt redigerede ressource."
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Save As..."
msgstr "Gem Som..."
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Kopier Parametre"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Ikke i stien for ressource."
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Edit Resource Clipboard"
+msgid "Edit Resource from Clipboard"
msgstr "FEJL: Ingen animationsressource i udklipsholder!"
#: editor/inspector_dock.cpp
@@ -4299,30 +4545,11 @@ msgid "Copy Resource"
msgstr "Kopier Ressource"
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+#, fuzzy
+msgid "Make Resource Built-In"
msgstr "Gør Indbygget"
#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Gør Under-Ressourcer Unikke"
-
-#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Åben i Hjælp"
-
-#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Opret en ny ressource i hukommelsen og rediger den."
-
-#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Indlæs en eksisterende ressource fra disk og rediger den."
-
-#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Gem den aktuelt redigerede ressource."
-
-#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
msgstr "GÃ¥ til det forrige redigerede objekt i historikken."
@@ -4335,8 +4562,14 @@ msgid "History of recently edited objects."
msgstr "Historik af nyligt redigerede objekter."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Objekt Egenskaber."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Ã…ben Seneste"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "Ã…ben Seneste"
#: editor/inspector_dock.cpp
#, fuzzy
@@ -4344,6 +4577,11 @@ msgid "Filter properties"
msgstr "Filtrer noder"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Objekt Egenskaber."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Ændringer kan mistes!"
@@ -4374,6 +4612,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Forfatter:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Version:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4596,7 +4843,7 @@ msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr "Skift Shader"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4830,6 +5077,11 @@ msgid "Animation"
msgstr "Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Ny"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Rediger Overgange..."
@@ -5180,11 +5432,19 @@ msgid "View Files"
msgstr "Vis filer"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Download"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
msgid "Connection error, please try again."
msgstr "Forbindelsesfejl, prøv venligst igen."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Ingen forbindelse."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Kan ikke forbinde til host:"
@@ -5193,18 +5453,21 @@ msgid "No response from host:"
msgstr "Ingen respons fra host:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Ingen reaktion."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "Forespørgsel mislykkedes, returkode:"
+msgid "Can't resolve."
+msgstr "Kan ikke løses."
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Request failed."
-msgstr "Forespørgsel mislykkedes."
+msgid "Request failed, return code:"
+msgstr "Forespørgsel mislykkedes, returkode:"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
@@ -5236,6 +5499,10 @@ msgid "Timeout."
msgstr "Tiden udløb."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Fejlet:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5339,7 +5606,11 @@ msgid "All"
msgstr "Alle"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5382,6 +5653,10 @@ msgstr "Indlæser..."
msgid "Assets ZIP File"
msgstr "Assets zipfil"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5390,8 +5665,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5637,15 +5912,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5706,6 +5982,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
@@ -5718,19 +5995,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Fjern valgte node eller overgang."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "Slet markerede filer?"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Fjern valgte node eller overgang."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5974,6 +6260,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Tilføj Node"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Indsæt nøgle her"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5986,6 +6282,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Zoom Ud"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Zoom Ud"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Zoom Ud"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Zoom Ud"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Zoom Ud"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Zoom Ud"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -6237,6 +6579,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Opret Ny %s"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "Opret Ny %s"
@@ -6271,7 +6618,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6332,13 +6679,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Opret Poly"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Opret Poly"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6395,7 +6755,6 @@ msgid "Mesh Library"
msgstr "MaskeBibliotek..."
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6670,7 +7029,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6993,6 +7353,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr "Ressource"
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Flyt Bezier-punkter"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Indsæt Punkt"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7213,7 +7591,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Søg"
@@ -7245,6 +7623,11 @@ msgid "Debug with External Editor"
msgstr "Debug med ekstern editor"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Online Dokumentation"
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation."
msgstr "Ã…ben Seneste"
@@ -7376,8 +7759,8 @@ msgstr ""
msgid "Cut"
msgstr "Cut"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Vælg alle"
@@ -7411,10 +7794,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7583,6 +7962,27 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Oversætter: "
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Skalér:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7603,39 +8003,49 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr ""
+#, fuzzy
+msgid "Size:"
+msgstr "Skrifttype Størrelse:"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Skift Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Skift Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Skift Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Kald"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "Egenskaber"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7793,6 +8203,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Skifter Favorit"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7808,6 +8223,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Konverter Til %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7821,26 +8241,24 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
-msgstr ""
+#, fuzzy
+msgid "Snap Nodes to Floor"
+msgstr "Vælg Noder at Importere"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7937,6 +8355,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Settings..."
@@ -8248,11 +8670,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -8273,172 +8690,593 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Tællinger:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
-msgstr "Fjern Alt"
+msgid "Icons"
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Fjern Alt"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "Medlemmer"
+msgid "No colors found."
+msgstr "Sub-Ressourcer:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstanter"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Konstant"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "Ikke fundet!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "No icons found."
+msgstr "Ikke fundet!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Sub-Ressourcer:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "GUI Temaelementer"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Toggle Button"
-msgstr "Skift Autoplay"
+msgid "Updating the editor"
+msgstr "Forlad editor?"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "Deaktiveret"
+msgid "Finalizing"
+msgstr "Analysere"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Filter:"
+msgstr "Filter:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Disabled Item"
-msgstr "Deaktiveret"
+msgid "Select by data type:"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Deaktiveret"
+msgid "Collapse types."
+msgstr "Klap alle sammen"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+#, fuzzy
+msgid "Expand types."
+msgstr "Udvid alle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Vælg template fil"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Vælg Method"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Vælg alle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importer Scene"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Editable Item"
+msgid "Remove All Color Items"
+msgstr "Fjern Alt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Omdøb"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Fjern Alt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Fjern Alt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Fjern Alt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Fjern Alt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Favoritter:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konstant"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Tilføj punkt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Tilføj Input"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
msgstr "Rediger Variabel"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Fjern Alt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Omdøb Funktion"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Omdøb Funktion"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Fjern Alt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Ugyldig fil, er ikke et audio bus layout."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Organiser Eksport Skabeloner"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Rediger Variabel"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Basis Type:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Basis Type:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Tilføj Input"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Rediger Variabel"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Fjern Alt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Fjern Alt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Fjern Alt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "GUI Temaelementer"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Node Navn:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importer Som:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Standard"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Medlemmer"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Søg Erstatnings Ressource:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Medlemmer"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Anim Omdøb Spor"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Omdøb"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Unpin this StyleBox as a main style."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Find Node Type"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+#, fuzzy
+msgid "Node Types:"
+msgstr "Find Node Type"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Indlæs Default"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "Ã…ben en Fil"
+msgid "Theme:"
+msgstr "Medlemmer"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Organiser Eksport Skabeloner"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Forhåndsvisning:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Forhåndsvisning:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Gendan scene"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Toggle Button"
+msgstr "Skift Autoplay"
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "Deaktiveret"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "Deaktiveret"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Deaktiveret"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Editable Item"
+msgstr "Rediger Variabel"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Ugyldig fil, er ikke et audio bus layout."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8621,6 +9459,10 @@ msgid "Priority"
msgstr "Eksporter Projekt"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8984,11 +9826,6 @@ msgid "Commit Changes"
msgstr "Synkroniser Script Ændringer"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9839,7 +10676,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "Rediger filtre"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9959,7 +10796,7 @@ msgstr "Kør Script"
#: editor/project_export.cpp
#, fuzzy
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr "Eksporter Projekt"
#: editor/project_export.cpp
@@ -9967,7 +10804,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9975,11 +10812,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -10057,7 +10894,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr "Ugyldigt navn."
#: editor/project_manager.cpp
@@ -10092,6 +10929,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Fejl ved åbning af pakkefil, ikke i ZIP-format."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "De følgende filer kunne ikke trækkes ud af pakken:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Pakke installeret med succes!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Omdøb Projekt"
@@ -10245,16 +11094,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Vælg enhed fra listen"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Vælg enhed fra listen"
#: editor/project_manager.cpp
msgid ""
@@ -10281,7 +11128,7 @@ msgstr "Projekt Manager"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Projekt"
#: editor/project_manager.cpp
@@ -10294,10 +11141,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Eksporter Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Omdøb Projekt"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projekt"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -10307,18 +11169,41 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Eksporter Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Omdøb Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Fjern punkt"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Skabeloner"
+msgid "About"
+msgstr "Om"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Ã…ben Bibliotek over Aktiver"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Fjern Alt"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Kan ikke kører projekt"
@@ -10329,8 +11214,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtrer noder"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10340,6 +11230,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10384,6 +11278,10 @@ msgstr "Enhed"
msgid "Device"
msgstr "Enhed"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10529,19 +11427,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Tilføj Overgang"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10820,6 +11719,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10992,11 +11895,29 @@ msgid "Delete node \"%s\"?"
msgstr "Vælg Node"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -11057,6 +11978,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -11106,11 +12031,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "Ã…ben Seneste"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11407,6 +12327,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "Klasse:"
@@ -11488,6 +12414,10 @@ msgid "Copy Error"
msgstr "Indlæs Fejl"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11778,6 +12708,16 @@ msgstr "Ugyldig forekomst ordbog (ugyldige underklasser)"
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Eksporter Maske Bibliotek"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Eksport"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -11824,6 +12764,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "GridMap Slet Markerede"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -12081,6 +13026,16 @@ msgstr "Tilføj punkt"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "Skift %s Type"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Ændre Input Værdi"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr ""
"Ugyldigt navn. Det må ikke være i konflikt med eksisterende built-in type "
@@ -12198,6 +13153,11 @@ msgid "Add Preload Node"
msgstr "Tilføj Preload Node"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Tilføj Node"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Tilføj Node(r) fra Tree"
@@ -12438,10 +13398,6 @@ msgstr "Fjern VisualScript Node"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12471,6 +13427,40 @@ msgid "Select device from the list"
msgstr "Vælg enhed fra listen"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Eksporter"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Afinstaller"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Henter spejle, vent venligst ..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Kunne ikke starte underproces!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Kører Brugerdefineret Script..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Kunne ikke oprette mappe."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12568,6 +13558,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Scanner Filer,\n"
+"Vent Venligst..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Kan ikke åbne skabelon til eksport:\n"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Tester"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Eksporter"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12580,6 +13612,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12594,6 +13630,20 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Kunne ikke skrive til fil:\n"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12613,11 +13663,54 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animations Længde (i sekunder)."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Forbinder..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Kan ikke åbne skabelon til eksport:\n"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Filtrer filer..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Kunne ikke skrive til fil:\n"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
msgstr "Navnet er ikke et gyldigt id:"
@@ -12649,11 +13742,6 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
-msgstr "Kunne ikke skrive til fil:\n"
-
-#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not open template for export:"
msgstr "Kan ikke åbne skabelon til eksport:\n"
@@ -12664,18 +13752,49 @@ msgstr "Ugyldigt eksport skabelon:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Kunne ikke skrive til fil:\n"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Kunne ikke skrive til fil:\n"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Kan ikke læse brugerdefineret HTML shell:\n"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:"
-msgstr "Kan ikke læse boot splash billed fil:\n"
+msgid "Could not create HTTP server directory:"
+msgstr "Kunne ikke oprette mappe."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Using default boot splash image."
-msgstr "Kan ikke læse boot splash billed fil:\n"
+msgid "Error starting HTTP server:"
+msgstr "Error loading skrifttype."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Navnet er ikke et gyldigt id:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
@@ -13071,6 +14190,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -13146,6 +14272,18 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid ""
@@ -13153,6 +14291,46 @@ msgid ""
"derived node to work."
msgstr "Stien skal pege på en gyldig fysisk node for at virke."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -13207,6 +14385,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "Animations Længde (i sekunder)."
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -13369,21 +14551,125 @@ msgid "Invalid comparison function for that type."
msgstr "Ugyldig skriftstørrelse."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Konstanter kan ikke ændres."
+#, fuzzy
+#~ msgid "Package Contents:"
+#~ msgstr "Indhold:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Slet profil '%s'? (kan ikke fortrydes)"
+
+#, fuzzy
+#~ msgid "Enabled Properties:"
+#~ msgstr "Tema Egenskaber:"
+
+#, fuzzy
+#~ msgid "Class Options"
+#~ msgstr "Klasse beskrivelse"
+
+#, fuzzy
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Fejler med at indlæse ressource."
+
+#~ msgid "Q&A"
+#~ msgstr "Spørgsmål og Svar"
+
+#~ msgid "Status:"
+#~ msgstr "Status:"
+
+#~ msgid "Edit:"
+#~ msgstr "Rediger:"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "Gen-Download"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Installeret)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Mangler)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Forespørgsel mislykkedes."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Omdiriger Løkke."
+
+#~ msgid "Download Complete."
+#~ msgstr "Download fuldført."
+
+#~ msgid "Remove Template"
+#~ msgstr "Fjern Template"
+
+#~ msgid "Download Templates"
+#~ msgstr "Download Skabeloner"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Vælg spejl fra liste: (Shift+Click: Åbn i Browser)"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Flyt Autoload"
+
+#, fuzzy
+#~ msgid "Expand All Properties"
+#~ msgstr "Udvid alle egenskaber"
+
+#~ msgid "Copy Params"
+#~ msgstr "Kopier Parametre"
+
+#~ msgid "Open in Help"
+#~ msgstr "Åben i Hjælp"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "Ã…ben en Fil"
+
+#~ msgid "Templates"
+#~ msgstr "Skabeloner"
+
+#, fuzzy
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Kan ikke læse boot splash billed fil:\n"
+
+#, fuzzy
+#~ msgid "Using default boot splash image."
+#~ msgstr "Kan ikke læse boot splash billed fil:\n"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "En animationsafspiller kan ikke animerer sig selv, kun andre afspillere."
@@ -13445,18 +14731,12 @@ msgstr "Konstanter kan ikke ændres."
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "Den nuværende scene er aldrig gemt, venligst gem før du kører den."
-#~ msgid "Not in resource path."
-#~ msgstr "Ikke i stien for ressource."
-
#~ msgid "Revert"
#~ msgstr "Vend tilbage"
#~ msgid "This action cannot be undone. Revert anyway?"
#~ msgstr "Denne handling kan ikke fortrydes. Vend tilbage alligevel?"
-#~ msgid "Revert Scene"
-#~ msgstr "Gendan scene"
-
#~ msgid "Issue Tracker"
#~ msgstr "Problem Tracker"
@@ -13501,9 +14781,6 @@ msgstr "Konstanter kan ikke ændres."
#~ msgid "Add input +"
#~ msgstr "Tilføj punkt"
-#~ msgid "Base Type:"
-#~ msgstr "Basis Type:"
-
#~ msgid "Available Nodes:"
#~ msgstr "Tilgængelige Noder:"
@@ -13513,9 +14790,6 @@ msgstr "Konstanter kan ikke ændres."
#~ msgid "Theme Properties:"
#~ msgstr "Tema Egenskaber:"
-#~ msgid "Enumerations:"
-#~ msgstr "Tællinger:"
-
#~ msgid "Constants:"
#~ msgstr "Konstanter:"
@@ -13650,9 +14924,6 @@ msgstr "Konstanter kan ikke ændres."
#~ msgid "Edit Variable:"
#~ msgstr "Rediger Variabel:"
-#~ msgid "Font Size:"
-#~ msgstr "Skrifttype Størrelse:"
-
#~ msgid "Line:"
#~ msgstr "Linje:"
@@ -13711,9 +14982,6 @@ msgstr "Konstanter kan ikke ændres."
#~ msgid "Public Methods:"
#~ msgstr "Public Methods:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "GUI Temaelementer"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "GUI Temaelementer:"
@@ -13749,9 +15017,6 @@ msgstr "Konstanter kan ikke ændres."
#~ msgid "Set Transitions to:"
#~ msgstr "Sæt Overgange til:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Anim Omdøb Spor"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Anim Skift Spor Interpolation"
@@ -13868,9 +15133,6 @@ msgstr "Konstanter kan ikke ændres."
#~ msgid "Can't write file."
#~ msgstr "Kan ikke skrive til fil."
-#~ msgid "Not found!"
-#~ msgstr "Ikke fundet!"
-
#~ msgid "Replace By"
#~ msgstr "Erstattes Af"
diff --git a/editor/translations/de.po b/editor/translations/de.po
index bbf72f815b..38d565b1cd 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -75,8 +75,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-07-13 06:13+0000\n"
-"Last-Translator: jmih03 <joerni@mail.de>\n"
+"PO-Revision-Date: 2021-07-29 02:33+0000\n"
+"Last-Translator: So Wieso <sowieso@dukun.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
"Language: de\n"
@@ -597,7 +597,8 @@ msgstr "Sekunden"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -623,7 +624,8 @@ msgstr "Auswahl skalieren"
msgid "Scale From Cursor"
msgstr "Vom Cursor skalieren"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Auswahl duplizieren"
@@ -644,6 +646,11 @@ msgid "Go to Previous Step"
msgstr "Zum vorherigen Schritt"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Zurücksetzen"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Animation optimieren"
@@ -660,6 +667,11 @@ msgid "Use Bezier Curves"
msgstr "Bezier-Kurven nutzen"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Spuren einfügen"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Animationsoptimierer"
@@ -708,7 +720,7 @@ msgid "Select Tracks to Copy"
msgstr "Zu kopierende Spuren auswählen"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -794,12 +806,14 @@ msgid "Toggle Scripts Panel"
msgstr "Skript-Panel umschalten"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Vergrößern"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -856,11 +870,9 @@ msgid "Add"
msgstr "Hinzufügen"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -912,6 +924,7 @@ msgstr "Signal kann nicht verbunden werden"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -981,7 +994,8 @@ msgid "Edit..."
msgstr "Bearbeiten..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Zur Methode springen"
#: editor/create_dialog.cpp
@@ -996,6 +1010,14 @@ msgstr "Ändern"
msgid "Create New %s"
msgstr "%s erstellen"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Keine Ergebnisse für \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -1017,8 +1039,8 @@ msgstr "Suche:"
msgid "Matches:"
msgstr "Treffer:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1094,9 +1116,11 @@ msgid "Owners Of:"
msgstr "Besitzer von:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Ausgewählte Dateien aus dem Projekt entfernen? (Kann nicht rückgängig "
"gemacht werden.)\n"
@@ -1104,11 +1128,13 @@ msgstr ""
"wiederhergestellt werden."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Andere Ressourcen benötigen die zu entfernenden Dateien, um richtig zu "
"funktionieren.\n"
@@ -1159,7 +1185,7 @@ msgstr "Unbenutzte Dateien ansehen"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1285,28 +1311,41 @@ msgstr "Komponenten"
msgid "Licenses"
msgstr "Lizenzen"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Fehler beim Öffnen der Paketdatei, kein ZIP-Format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Fehler beim Öffnen der Paketdatei (kein ZIP-Format)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (existiert bereits)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Inhalte werden entpackt"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Die folgenden Dateien ließen sich nicht aus dem Paket extrahieren:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Und %s weitere Dateien."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paket wurde erfolgreich installiert!"
#: editor/editor_asset_installer.cpp
@@ -1314,16 +1353,13 @@ msgstr "Paket wurde erfolgreich installiert!"
msgid "Success!"
msgstr "Geschafft!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Paketinhalte:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Installieren"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Erweiterungenverwaltung"
#: editor/editor_audio_buses.cpp
@@ -1387,7 +1423,8 @@ msgid "Bypass"
msgstr "Überbrückung"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Audiobusoptionen"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1467,7 +1504,7 @@ msgstr "Audiobus hinzufügen"
msgid "Add a new Audio Bus to this layout."
msgstr "Neuen Audio-Bus diesem Layout hinzufügen."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1554,6 +1591,15 @@ msgid "Can't add autoload:"
msgstr "Autoload konnte nicht hinzugefügt werden:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Datei existiert nicht."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Autoload hinzufügen"
@@ -1569,16 +1615,17 @@ msgid "Node Name:"
msgstr "Node-Name:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Name"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Einzelelement"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Variable"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Parameter einfügen"
@@ -1594,7 +1641,7 @@ msgstr "Speichere lokale Änderungen..."
msgid "Updating scene..."
msgstr "Aktualisiere Szene..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[leer]"
@@ -1751,8 +1798,49 @@ msgid "Import Dock"
msgstr "Importleiste"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Profil ‚%s‘ löschen? (unumkehrbar)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Aktuell)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1784,15 +1872,18 @@ msgid "Enable Contextual Editor"
msgstr "Kontextsensitiven Editor aktivieren"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Aktivierte Eigenschaften:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Eigenschaften:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Aktivierte Funktionen:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Eigenschaften und Merkmale"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Aktivierte Klassen:"
#: editor/editor_feature_profile.cpp
@@ -1812,25 +1903,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Fehler beim Speichern des Profils im Pfad: ‚%s‘."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Deaktivieren"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Auf Standardwerte zurücksetzen"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Aktuelles Profil:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Als aktuell auswählen"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Profil löschen"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Neu"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Kachel entfernen"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Verfügbare Profile:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Als aktuell auswählen"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Import"
@@ -1839,20 +1939,22 @@ msgid "Export"
msgstr "Exportieren"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Verfügbare Profile:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Aktuelles Profil:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Klassen-Optionen"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Textureinstellungen"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Neuer Profilname:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Profil löschen"
+msgid "New profile name:"
+msgstr "Neuer Profilname:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1875,7 +1977,8 @@ msgid "Select Current Folder"
msgstr "Gegenwärtigen Ordner auswählen"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Datei existiert bereits. Überschreiben?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1929,9 +2032,10 @@ msgid "Open a File or Directory"
msgstr "Datei oder Verzeichnis öffnen"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Speichern"
@@ -2012,8 +2116,7 @@ msgid "Directories & Files:"
msgstr "Verzeichnisse & Dateien:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Vorschau:"
@@ -2086,7 +2189,7 @@ msgstr "Theme-Eigenschaften"
msgid "Enumerations"
msgstr "Aufzählungen"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstanten"
@@ -2175,7 +2278,7 @@ msgstr "Methode"
msgid "Signal"
msgstr "Ereignis"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstante"
@@ -2191,9 +2294,10 @@ msgstr "Theme-Eigenschaft"
msgid "Property:"
msgstr "Eigenschaft:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "%s setzen"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2208,7 +2312,7 @@ msgid "Copy Selection"
msgstr "Auswahl kopieren"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2272,7 +2376,8 @@ msgid "Imported resources can't be saved."
msgstr "Importierte Ressourcen können nicht abgespeichert werden."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2495,18 +2600,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Änderungen in ‚%s‘ vor dem Schließen speichern?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "%s veränderte Ressource(n) gespeichert."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Ein Wurzel-Node wird benötigt um diese Szene zu speichern."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Szene speichern als..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Diese Aktion kann nicht ohne eine Szene ausgeführt werden."
@@ -2713,7 +2823,7 @@ msgstr "Layout löschen"
msgid "Default"
msgstr "Standard"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Im Dateisystem anzeigen"
@@ -2894,6 +3004,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Verwaltung nicht verwendeter Ressourcen…"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Projekt umbenennen"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Zur Projektverwaltung zurückkehren"
@@ -3051,20 +3166,25 @@ msgstr "Exportvorlagen verwalten…"
msgid "Help"
msgstr "Hilfe"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Internetdokumentation"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Dokumentation öffnen"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Fragen & Antworten"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Fehler berichten"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "Einen Wert setzen"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Dokumentationsvorschläge senden"
@@ -3073,7 +3193,8 @@ msgid "Community"
msgstr "Community"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Über"
#: editor/editor_node.cpp
@@ -3171,6 +3292,16 @@ msgid "Manage Templates"
msgstr "Vorlagen verwalten"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Installiere aus Datei"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Quell-Mesh auswählen:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3208,7 +3339,7 @@ msgstr "Vorlagen aus ZIP-Datei importieren"
msgid "Template Package"
msgstr "Vorlagenpaket"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Bibliothek exportieren"
@@ -3251,6 +3382,11 @@ msgid "Select"
msgstr "Auswählen"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Gegenwärtigen Ordner auswählen"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "2D Editor öffnen"
@@ -3282,6 +3418,11 @@ msgstr "Warnung!"
msgid "No sub-resources found."
msgstr "Keine Unter-Ressourcen gefunden."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Keine Unter-Ressourcen gefunden."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Mesh-Vorschauen erzeugen"
@@ -3306,33 +3447,34 @@ msgstr "Installierte Erweiterungen:"
msgid "Update"
msgstr "Update"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Version:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Status:"
+#, fuzzy
+msgid "Author"
+msgstr "Autoren"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Bearbeiten:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Status"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Messung:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Renderzeit (Sek)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Renderzeit ⌀ (sek)"
#: editor/editor_profiler.cpp
@@ -3352,6 +3494,16 @@ msgid "Self"
msgstr "Selbst"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Bild #:"
@@ -3393,14 +3545,6 @@ msgstr "Ungültige RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Die ausgewählte Ressource (%s) stimmt mit keinem erwarteten Typ dieser "
-"Eigenschaft (%s) überein."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3425,40 +3569,6 @@ msgid "Pick a Viewport"
msgstr "Viewport auswählen"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Neues Skript"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Skript erweitern"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Neues %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Einzigartig machen"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Einfügen"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Umwandeln zu %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Ausgewähltes Node ist kein Viewport!"
@@ -3487,6 +3597,49 @@ msgstr "Neuer Wert:"
msgid "Add Key/Value Pair"
msgstr "Schlüssel-Wert-Paar hinzufügen"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Die ausgewählte Ressource (%s) stimmt mit keinem erwarteten Typ dieser "
+"Eigenschaft (%s) überein."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Einzigartig machen"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Einfügen"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Umwandeln zu %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Neues %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Neues Skript"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Skript erweitern"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3521,7 +3674,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Hast du die '_run' Methode vergessen?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Strg-Taste halten um auf Ganzzahlen zu runden. Umschalt-Taste halten für "
"präzisere Änderungen."
@@ -3543,117 +3697,69 @@ msgid "Import From Node:"
msgstr "Aus Node importieren:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Erneut herunterladen"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Deinstallieren"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Installiert)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Herunterladen"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
-"Für Entwicklungsversionen werden keine offizielle Exportvorlagen bereit "
-"gestellt."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Fehlend)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Aktuell)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Datei ‚%s‘ existiert nicht."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Mirrors werden geladen, bitte warten..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Template-Version ‚%s‘ entfernen?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Exportvorlagen-ZIP-Datei konnte nicht geöffnet werden."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Ungültiges version.txt-Format in Templates: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Keine version.txt in Templates gefunden."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Fehler bei Erzeugen des Pfads für die Vorlagen:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Extrahiere Exportvorlagen"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importiere:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Fehler beim Laden der Spiegelserver."
+msgid "Error requesting URL:"
+msgstr "Fehler beim Abrufen der URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Fehler beim Einlesen des JSON-Formats der Spiegelserverliste. Bitte diesen "
-"Fehler melden!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Verbinde mit Mirror..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Für diese Version wurde kein Downloadlink gefunden. Direkter Download steht "
-"nur für offizielle Veröffentlichungen bereit."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Kann Hostnamen nicht auflösen:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Kann nicht auflösen."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Kann nicht zu Host verbinden:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Kann nicht verbinden."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Keine Antwort von Host:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Keine Antwort."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Anfrage fehlgeschlagen."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Weiterleitungsschleife."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Anfrage fehlgeschlagen, zu viele Weiterleitungen"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Fehlgeschlagen:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Anfrage fehlgeschlagen."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Download abgeschlossen."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3668,12 +3774,27 @@ msgstr ""
"Das problematische Exportvorlagen-Archiv befindet sich hier in ‚%s‘."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Fehler beim Abrufen der URL:"
+msgid "Error getting the list of mirrors."
+msgstr "Fehler beim Laden der Spiegelserver."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Verbinde mit Mirror..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Fehler beim Einlesen des JSON-Formats der Spiegelserverliste. Bitte diesen "
+"Fehler melden!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Für diese Version wurde kein Downloadlink gefunden. Direkter Download steht "
+"nur für offizielle Veröffentlichungen bereit."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3718,44 +3839,140 @@ msgid "SSL Handshake Error"
msgstr "SSL-Handshake-Fehler"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Exportvorlagen-ZIP-Datei konnte nicht geöffnet werden."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Ungültiges version.txt-Format in Templates: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Keine version.txt in Templates gefunden."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Fehler bei Erzeugen des Pfads für die Vorlagen:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Extrahiere Exportvorlagen"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importiere:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Template-Version ‚%s‘ entfernen?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Android-Build-Quellen werden entpackt"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Exportvorlagenverwaltung"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Aktuelle Version:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Installierte Versionen:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Datei öffnen"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Deinstallieren"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Anfangswert für Zähler"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Downloadfehler"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"Für Entwicklungsversionen werden keine offizielle Exportvorlagen bereit "
+"gestellt."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Installiere aus Datei"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Entferne Vorlage"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Vorlagen aus ZIP-Datei importieren"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Abbrechen"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Vorlagendatei auswählen"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Exportvorlagen-ZIP-Datei konnte nicht geöffnet werden."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Godot Exportvorlagen"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Installierte Versionen:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Exportvorlagenverwaltung"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Deinstallieren"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Vorlagendatei auswählen"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Lade Template herunter"
+msgid "Godot Export Templates"
+msgstr "Godot Exportvorlagen"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Mirror aus Liste auswählen: (Umsch-Klick: In Browser öffnen)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3889,29 +4106,62 @@ msgstr "Neues Skript..."
msgid "New Resource..."
msgstr "Neue Ressource..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Alle ausklappen"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Alle einklappen"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplizieren..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Dateien suchen"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "In Papierkorb werfen"
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Zuletzt bearbeitet"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Zuletzt bearbeitet"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplizieren..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Umbenennen..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Vorherige(r) Ordner/Datei"
@@ -3995,10 +4245,6 @@ msgstr "Finde..."
msgid "Replace..."
msgstr "Ersetzen..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Abbrechen"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Suche: "
@@ -4225,53 +4471,55 @@ msgid "Failed to load resource."
msgstr "Laden der Ressource gescheitert."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Alle Eigenschaften ausklappen"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Eigenschaften"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Alle Eigenschaften einklappen"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Speichern als..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Eigenschaften"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Parameter kopieren"
+msgid "Make Sub-Resources Unique"
+msgstr "Unter-Ressource einzigartig machen"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Ressourcen-Zwischenablage bearbeiten"
+msgid "Create a new resource in memory and edit it."
+msgstr "Erstelle eine neue Ressource im Speicher und bearbeite sie."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Ressource kopieren"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Lade eine bestehende Ressource von der Festplatte und bearbeite sie."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Einbetten"
+msgid "Save the currently edited resource."
+msgstr "Speichere die so eben bearbeitete Ressource."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Unter-Ressource einzigartig machen"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Speichern als..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "In Hilfe öffnen"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Nicht im Ressourcen-Pfad."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Erstelle eine neue Ressource im Speicher und bearbeite sie."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Ressourcen-Zwischenablage bearbeiten"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Lade eine bestehende Ressource von der Festplatte und bearbeite sie."
+msgid "Copy Resource"
+msgstr "Ressource kopieren"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Speichere die so eben bearbeitete Ressource."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Einbetten"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4286,14 +4534,24 @@ msgid "History of recently edited objects."
msgstr "Verlauf der zuletzt bearbeiteten Objekte."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Objekteigenschaften."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Dokumentation öffnen"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Dokumentation öffnen"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Eigenschaften filtern"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Objekteigenschaften."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Änderungen können verloren gehen!"
@@ -4322,6 +4580,15 @@ msgstr "Pluginname:"
msgid "Subfolder:"
msgstr "Unterverzeichnis:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Version:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Sprache:"
@@ -4528,7 +4795,8 @@ msgid "Blend:"
msgstr "Blende:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parameter geändert"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4748,6 +5016,11 @@ msgid "Animation"
msgstr "Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Neu"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Übergänge bearbeiten..."
@@ -5089,10 +5362,18 @@ msgid "View Files"
msgstr "Dateien anzeigen"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Herunterladen"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Verbindungsfehler, bitte erneut versuchen."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Kann nicht verbinden."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Kann nicht zu Host verbinden:"
@@ -5101,16 +5382,20 @@ msgid "No response from host:"
msgstr "Keine Antwort von Host:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Keine Antwort."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Kann Hostnamen nicht auflösen:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Anfrage fehlgeschlagen: Rückgabewert:"
+msgid "Can't resolve."
+msgstr "Kann nicht auflösen."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Anfrage fehlgeschlagen."
+msgid "Request failed, return code:"
+msgstr "Anfrage fehlgeschlagen: Rückgabewert:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5137,6 +5422,10 @@ msgid "Timeout."
msgstr "Zeitüberschreitung."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Fehlgeschlagen:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Falsche Download-Prüfsumme, Datei könnte manipuliert worden sein."
@@ -5237,8 +5526,12 @@ msgid "All"
msgstr "Alle"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Keine Ergebnisse für \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5280,6 +5573,10 @@ msgstr "Lade…"
msgid "Assets ZIP File"
msgstr "Nutzerinhalte als ZIP-Datei"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5290,12 +5587,12 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Keine Meshes zum vorrendern vorhanden. Meshes, die vorgerendert werden "
-"sollen, müssen einen UV2-Kanal beinhalten und die ‚Bake Light‘-Option "
-"aktiviert haben."
+"sollen, müssen einen UV2-Kanal beinhalten und die Optionen ‚Use In Baked "
+"Light‘ und ‚Generate Lightmap‘ aktiviert haben."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -5539,9 +5836,10 @@ msgstr "Ankerpunkte ändern"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Spielekamera überschreiben\n"
"Überschreibt die Spielekamera mit der Kamera des Anzeigefensters des Editors."
@@ -5549,11 +5847,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Spielekamera überschreiben\n"
-"Es läuft keine Spielinstanz."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5608,6 +5905,7 @@ msgstr ""
"Eltern bestimmt."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5619,22 +5917,33 @@ msgid "Select Mode"
msgstr "Auswahlmodus"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Ziehen = Rotieren"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Ausgewählten Node oder Übergang entfernen."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Ziehen = Verschieben"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Ausgewählten Node oder Übergang entfernen."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"‚V‘ drücken um Angelpunkt auf Mausposition zu setzen, ‚Umschalt+V‘ drücken "
-"um das Objekt ohne seinen Angelpunkt zu verschieben."
+"Zeige eine Liste aller Objekte, die sich an der angeklickten Position "
+"befinden\n"
+"(equivalent zu Alt+RMT im Auswahlmodus)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+Rechtsklick: Listenauswahl nach Tiefe"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5874,6 +6183,16 @@ msgid "Clear Pose"
msgstr "Pose/Stellung löschen"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Node hinzufügen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Instanz-Szene(n)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Gitterstufe verdoppeln"
@@ -5886,6 +6205,52 @@ msgid "Pan View"
msgstr "Sicht verschieben"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Verkleinern"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Verkleinern"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Verkleinern"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Verkleinern"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Verkleinern"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Verkleinern"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "%s hinzufügen"
@@ -6130,6 +6495,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Ein einzelnes konvexes Kollisionselement konnte nicht erzeugt werden."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Einzelne konvexe Form erstellen"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Einzelne konvexe Form erstellen"
@@ -6165,7 +6535,8 @@ msgid "No mesh to debug."
msgstr "Kein Mesh zu debuggen."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Modell besitzt kein UV in dieser Schicht"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6231,13 +6602,27 @@ msgstr ""
"Dies ist die schnellste (aber ungenauste) Methode für Kollisionsberechnungen."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Ein einzelnes konvexes Kollisionsnachbarelement erzeugen"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Mehrere konvexe Kollisionsunterelemente erzeugen"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Erstellt ein polygon-basiertes Kollisionselement.\n"
"Dies liegt von der Geschwindigkeit in der Mitte der beiden anderen Methoden."
@@ -6299,7 +6684,6 @@ msgid "Mesh Library"
msgstr "Mesh-Bibliothek"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Element hinzufügen"
@@ -6574,7 +6958,8 @@ msgid "Close Curve"
msgstr "Kurve schließen"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Optionen"
@@ -6885,6 +7270,26 @@ msgstr "Ressource laden"
msgid "ResourcePreloader"
msgstr "Ressourcen-Vorlader"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Horizontal umdrehen"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Anzahl generierter Punkte:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Anzahl generierter Punkte:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Horizontal umdrehen"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7091,7 +7496,7 @@ msgstr "Ausführen"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Suchen"
@@ -7122,6 +7527,11 @@ msgid "Debug with External Editor"
msgstr "Mit externem Editor debuggen"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Internetdokumentation"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Godot-Onlinedokumentation öffnen."
@@ -7249,8 +7659,8 @@ msgstr "Springe zu"
msgid "Cut"
msgstr "Ausschneiden"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Alles auswählen"
@@ -7283,10 +7693,6 @@ msgid "Unfold All Lines"
msgstr "Alle Zeilen aufklappen"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Klone herunter"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Symbol vervollständigen"
@@ -7442,6 +7848,28 @@ msgid "View Plane Transform."
msgstr "Zeige Flächentransformation."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Nichts"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Status"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Translation:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Skalierung:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Skalierung: "
@@ -7462,42 +7890,54 @@ msgid "Animation Key Inserted."
msgstr "Animationsschlüsselbild eingefügt."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Neigen"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Gieren"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Größe"
+#, fuzzy
+msgid "Size:"
+msgstr "Größe: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Gezeichnete Objekte"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Materialänderungen"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Shader-Änderungen"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Oberflächen-Änderungen"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Zeichenaufrufe"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Eckpunkte"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Sicht von oben."
@@ -7651,6 +8091,11 @@ msgid "Freelook Slow Modifier"
msgstr "Freisicht Trägheitsregler"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Ändere Kameragröße"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Sichtrotation gesperrt"
@@ -7670,6 +8115,11 @@ msgstr ""
"Sie ist kein zuverlässiger Vergleichswert für die In-Spiel-Leistung."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Umwandeln zu %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Transformationsdialog"
@@ -7689,7 +8139,8 @@ msgstr ""
"(\"Röntgenblick\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Nodes am Boden einrasten"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7699,16 +8150,6 @@ msgstr ""
"könnte."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Ziehen: Rotieren\n"
-"Alt+Ziehen: Verschieben\n"
-"Alt+RMT: Tiefenauswahl"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Lokalkoordinaten verwenden"
@@ -7717,6 +8158,10 @@ msgid "Use Snap"
msgstr "Einrasten aktivieren"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Sicht von unten"
@@ -7810,6 +8255,11 @@ msgid "View Grid"
msgstr "Zeige Gitter"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Einstellungen für Ansichten"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Einstellungen…"
@@ -8101,11 +8551,6 @@ msgid "Snap Mode:"
msgstr "Einrastmodus:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Nichts"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Pixel-Einrasten"
@@ -8126,165 +8571,603 @@ msgid "Step:"
msgstr "Schritt:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Trenner:"
+msgid "Separation:"
+msgstr "Trennung:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "Texturbereich"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Alle Elemente hinzufügen"
+#, fuzzy
+msgid "Colors"
+msgstr "Farbe"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Alle hinzufügen"
+#, fuzzy
+msgid "Fonts"
+msgstr "Schriftart"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Symbol"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Style-Box"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Keine Unter-Ressourcen gefunden."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstanten"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Farbkonstante."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Nicht gefunden!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Nicht gefunden!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Keine Unter-Ressourcen gefunden."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Theme importieren"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Editor verlassen?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analysiere"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filter: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Node auswählen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Teilung zum Löschen auswählen."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Zuerst Einstellungspunkt auswählen!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Zuerst Einstellungspunkt auswählen!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Zuerst Einstellungspunkt auswählen!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Zuerst Einstellungspunkt auswählen!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Zuerst Einstellungspunkt auswählen!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Alle einklappen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Alle ausklappen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Vorlagendatei auswählen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Punkte auswählen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Alles auswählen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Szene importieren"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Alle Elemente entfernen"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Alles entfernen"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Entferne Element"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Thema bearbeiten"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Alle Elemente entfernen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Alle Elemente entfernen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Alle Elemente entfernen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Alle Elemente entfernen"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Thema-Bearbeitungsmenü."
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Füge Klassen-Element hinzu"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Füge Klassen-Element hinzu"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Element hinzufügen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Element hinzufügen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Alle Elemente hinzufügen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Entferne Klassen-Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Entferne Klassen-Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Node umbenennen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Node umbenennen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Ausgewähltes Element entfernen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Ungültige Datei, kein Audiobus-Layout."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Vorlagen verwalten"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Bearbeitbares Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Typ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Typ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Element hinzufügen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Alle Elemente hinzufügen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Entferne Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Entferne Klassen-Element"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Leeres Template erstellen"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Entferne Klassen-Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Alle Elemente entfernen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "GUI-Thema-Elemente"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Node-Name:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Leeres Editor-Template erstellen"
+#, fuzzy
+msgid "Import Items"
+msgstr "Theme importieren"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Standard"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Thema bearbeiten"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Ressource löschen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Theme importieren"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Aus derzeitigem Editor-Thema erstellen"
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Spur umbenennen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Stapelweise Umbenennung"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Überschreibungen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Art"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Element hinzufügen"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Node-Typ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Standard laden"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Überschreibungen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Designvorlagen (Thema)"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Exportvorlagen verwalten…"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Vorschau"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Vorschau aktualisieren"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Quell-Mesh auswählen:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Umschaltknopf"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Deaktivierter Knopf"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Deaktiviertes Objekt"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Überprüfe Element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Überprüftes Element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Element der Auswahl"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Markiertes Element der Auswahl"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Ben. Trenner."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Untermenü"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Unterelement 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Unterelement 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Enthält"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Viele"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "Deaktiviertes LineEdit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Tab 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Tab 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Bearbeitbares Element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Unterbaum"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Hat,Mehrere,Einstellungen"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Datentyp:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Symbol"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Stil"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Schriftart"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Farbe"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Ungültige Datei, kein Audiobus-Layout."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Theme-Datei"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8457,6 +9340,10 @@ msgid "Priority"
msgstr "Priorität"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Symbol"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z-Index"
@@ -8794,11 +9681,6 @@ msgid "Commit Changes"
msgstr "Änderungen als Speicherpunkt sichern"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Status"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
"Dateiänderungen anzeigen bevor sie nach der aktuellsten Version gespeichert "
@@ -9692,7 +10574,8 @@ msgid "VisualShader"
msgstr "VisuellerShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Visuelle Eigenschaft bearbeiten"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9818,7 +10701,8 @@ msgid "Script"
msgstr "Skript"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Skript-Exportmodus:"
#: editor/project_export.cpp
@@ -9826,19 +10710,21 @@ msgid "Text"
msgstr "Text"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Kompiliert"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Verschlüsselt (Schlüssel unten angeben)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Ungültiger Schlüssel für Verschlüsselung (muss 64 Zeichen lang sein)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Skript-Schlüssel (256 Bit hexadezimal):"
#: editor/project_export.cpp
@@ -9911,7 +10797,8 @@ msgid "Imported Project"
msgstr "Importiertes Projekt"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Ungültiger Projektname."
#: editor/project_manager.cpp
@@ -9948,6 +10835,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Konnte project.godot im Projektpfad nicht erzeugen."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Fehler beim Öffnen der Paketdatei, kein ZIP-Format."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Die folgenden Dateien ließen sich nicht aus dem Paket extrahieren:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Paket wurde erfolgreich installiert!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Projekt umbenennen"
@@ -10128,20 +11027,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Sollen wirklich %d Projekte gleichzeitig ausgeführt werden?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"%d Projekte aus der Liste entfernen?\n"
-"Inhalte der Projektordner werden nicht geändert."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Gerät aus Liste auswählen"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Dieses Projekt aus der Liste entfernen?\n"
-"Inhalte des Projektordners werden nicht geändert."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Gerät aus Liste auswählen"
#: editor/project_manager.cpp
msgid ""
@@ -10174,7 +11067,8 @@ msgid "Project Manager"
msgstr "Projektverwaltung"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projekte"
#: editor/project_manager.cpp
@@ -10186,10 +11080,25 @@ msgid "Last Modified"
msgstr "Zuletzt bearbeitet"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Projekt exportieren"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Projekt umbenennen"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Scannen"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projekte"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Wähle zu durchsuchenden Ordner"
@@ -10198,18 +11107,41 @@ msgid "New Project"
msgstr "Neues Projekt"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Importiertes Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Projekt umbenennen"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Fehlende entfernen"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Vorlagen"
+msgid "About"
+msgstr "Über"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Bestandsbibliothek (AssetLib)"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Jetzt Neustarten"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Alles entfernen"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Projekt kann nicht ausgeführt werden"
@@ -10223,8 +11155,14 @@ msgstr ""
"werden?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Eigenschaften filtern"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10238,6 +11176,10 @@ msgid "Key "
msgstr "Taste "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Joysticktaste"
@@ -10281,6 +11223,10 @@ msgstr "Alle Geräte"
msgid "Device"
msgstr "Gerät"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Drücke eine Taste..."
@@ -10422,7 +11368,8 @@ msgid "Override for Feature"
msgstr "Für Funktion überschreiben"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Übersetzung hinzufügen"
#: editor/project_settings_editor.cpp
@@ -10430,11 +11377,13 @@ msgid "Remove Translation"
msgstr "Übersetzung entfernen"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Umgeleiteten Pfad hinzufügen"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Ressourcen-Umleitung hinzufügen"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Ressourcen-Umleitung hinzufügen"
#: editor/project_settings_editor.cpp
@@ -10708,6 +11657,10 @@ msgid "Post-Process"
msgstr "Nachbearbeitung"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Stil"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Behalten"
@@ -10875,12 +11828,30 @@ msgid "Delete node \"%s\"?"
msgstr "Node „%s“ löschen?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Lässt sich nicht an Wurzel-Node ausführen."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Diese Aktion kann nicht auf instantiierten Szenen ausgeführt werden."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10940,6 +11911,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Kann Nodes, von denen die aktuelle Szene erbt, nicht bearbeiten!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Diese Aktion kann nicht auf instantiierten Szenen ausgeführt werden."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Skript hinzufügen"
@@ -10988,10 +11963,6 @@ msgid "Load As Placeholder"
msgstr "Als Platzhalter laden"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Dokumentation öffnen"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11285,6 +12256,12 @@ msgstr ""
"können nicht mit einem externen Editor bearbeitet werden."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Klassenname:"
@@ -11353,6 +12330,10 @@ msgid "Copy Error"
msgstr "Fehlermeldung kopieren"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Video RAM"
@@ -11638,6 +12619,16 @@ msgstr "Ungültiges Instanz-Verzeichnisformat (ungültige Unterklasse)"
msgid "Object can't provide a length."
msgstr "Objekt kann keine Länge vorweisen."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "MeshLibrary exportieren"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exportieren..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Nächste Ebene"
@@ -11679,6 +12670,11 @@ msgid "GridMap Paint"
msgstr "GridMap zeichnen"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "GridMap-Auswahl füllen"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Gitterkarte"
@@ -11929,6 +12925,16 @@ msgid "Add Output Port"
msgstr "Ausgangsschnittstelle hinzufügen"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Typ ändern"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Eingangsschnittstellenname ändern"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Eine existierende eingebaute Funktion überschreiben."
@@ -12041,6 +13047,11 @@ msgid "Add Preload Node"
msgstr "Preload-Node hinzufügen"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Node hinzufügen"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Node(s) aus Szenenbaum hinzufügen"
@@ -12274,10 +13285,6 @@ msgstr "VisualScript suchen"
msgid "Get %s"
msgstr "%s abrufen"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "%s setzen"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Paketname fehlt."
@@ -12308,6 +13315,40 @@ msgid "Select device from the list"
msgstr "Gerät aus Liste auswählen"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Exportiere alles"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Deinstallieren"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Projekte werden geladen, bitte warten..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Konnte Szene nicht instantiieren!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Angepasstes Skript wird ausgeführt..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Ordner konnte nicht erstellt werden."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Das ‚apksigner‘-Hilfswerkzeug konnte nicht gefunden werden."
@@ -12428,6 +13469,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr "„Export AAB“ ist nur gültig wenn „Use Custom Build“ aktiviert ist."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Lese Dateien,\n"
+"Bitte warten..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Konnte Vorlage nicht zum Export öffnen:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "%s hinzufügen…"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Exportiere alles"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
"Ungültiger Dateiname. Android App Bundles benötigen .aab als "
@@ -12443,6 +13526,10 @@ msgstr ""
"Ungültiger Dateiname. Android APKs benötigen .apk als Dateinamenendung."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12464,6 +13551,21 @@ msgstr ""
"Bitte Android-Build-Vorlage im ‚Projekt‘-Menü neu installieren."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "project.godot konnte nicht im Projektpfad gefunden werden."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Konnte Datei nicht schreiben:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Baue Android-Projekt (gradle)"
@@ -12489,11 +13591,54 @@ msgstr ""
"Exportdatei kann nicht kopiert und umbenannt werden. Fehlermeldungen sollten "
"im Gradle Projektverzeichnis erscheinen."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animation nicht gefunden: ‚%s‘"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Konturen erzeugen..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Konnte Vorlage nicht zum Export öffnen:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "%s hinzufügen…"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Konnte Datei nicht schreiben:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "Richte APK aus..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Bezeichner fehlt."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Das Zeichen ‚%s‘ ist in Bezeichnern nicht gestattet."
@@ -12523,10 +13668,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Führe exportiertes HTML im Standard-Browser des Betriebssystems aus."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Konnte Datei nicht schreiben:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Konnte Vorlage nicht zum Export öffnen:"
@@ -12535,16 +13676,49 @@ msgid "Invalid export template:"
msgstr "Ungültige Exportvorlage:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Konnte Datei nicht schreiben:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Konnte Datei nicht schreiben:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Konnte benutzerdefinierte HTML-Shell nicht lesen:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Konnte Bilddatei des Startbildschirms nicht lesen:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Ordner konnte nicht erstellt werden."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Verwende Standard-Startbildschirm-Bilddatei."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Fehler beim Speichern der Szene."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Ungültiger Bezeichner:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12982,6 +14156,13 @@ msgstr ""
"GIProbes werden vom GLES2-Videotreiber nicht unterstützt.\n"
"BakedLightmaps können als Alternative verwendet werden."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -13071,6 +14252,18 @@ msgstr "Gelenk ist nicht mit einem PhysicsBody-Node verbunden"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Node A und Node B müssen unterschiedliche PhysicsBody-Nodes sein"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -13079,6 +14272,46 @@ msgstr ""
"Die „Remote Path“-Eigenschaft muss auf ein gültiges Spatial-Node oder ein "
"von Spatial-Node abgeleitetes Node verweisen."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Diese Körper wird ignoriert werden bis ein Mesh zugewiesen wurde."
@@ -13143,6 +14376,10 @@ msgstr "In BlendTree-Node ‚%s‘, Animation nicht gefunden: ‚%s‘"
msgid "Animation not found: '%s'"
msgstr "Animation nicht gefunden: ‚%s‘"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "In Node ‚%s‘, ungültige Animation: ‚%s‘."
@@ -13325,6 +14562,27 @@ msgid "Invalid comparison function for that type."
msgstr "Ungültige Vergleichsfunktion für diesen Typ."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Zuweisung an Funktion."
@@ -13333,13 +14591,179 @@ msgid "Assignment to uniform."
msgstr "Zuweisung an Uniform."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Varyings können nur in Vertex-Funktion zugewiesen werden."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Konstanten können nicht verändert werden."
+#~ msgid "Package Contents:"
+#~ msgstr "Paketinhalte:"
+
+#~ msgid "Singleton"
+#~ msgstr "Einzelelement"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Profil ‚%s‘ löschen? (unumkehrbar)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Aktivierte Eigenschaften:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Aktivierte Funktionen:"
+
+#~ msgid "Unset"
+#~ msgstr "Deaktivieren"
+
+#~ msgid "Class Options"
+#~ msgstr "Klassen-Optionen"
+
+#~ msgid "Set"
+#~ msgstr "Set"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "%s veränderte Ressource(n) gespeichert."
+
+#~ msgid "Q&A"
+#~ msgstr "Fragen & Antworten"
+
+#~ msgid "Status:"
+#~ msgstr "Status:"
+
+#~ msgid "Edit:"
+#~ msgstr "Bearbeiten:"
+
+#~ msgid "Redownload"
+#~ msgstr "Erneut herunterladen"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Installiert)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Fehlend)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Anfrage fehlgeschlagen."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Weiterleitungsschleife."
+
+#~ msgid "Download Complete."
+#~ msgstr "Download abgeschlossen."
+
+#~ msgid "Remove Template"
+#~ msgstr "Entferne Vorlage"
+
+#~ msgid "Download Templates"
+#~ msgstr "Lade Template herunter"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Mirror aus Liste auswählen: (Umsch-Klick: In Browser öffnen)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "In Papierkorb werfen"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Alle Eigenschaften ausklappen"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Alle Eigenschaften einklappen"
+
+#~ msgid "Copy Params"
+#~ msgstr "Parameter kopieren"
+
+#~ msgid "Open in Help"
+#~ msgstr "In Hilfe öffnen"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Spielekamera überschreiben\n"
+#~ "Es läuft keine Spielinstanz."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Ziehen = Rotieren"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "‚V‘ drücken um Angelpunkt auf Mausposition zu setzen, ‚Umschalt+V‘ "
+#~ "drücken um das Objekt ohne seinen Angelpunkt zu verschieben."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+Rechtsklick: Listenauswahl nach Tiefe"
+
+#~ msgid "Clone Down"
+#~ msgstr "Klone herunter"
+
+#~ msgid "Yaw"
+#~ msgstr "Gieren"
+
+#~ msgid "Size"
+#~ msgstr "Größe"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Ziehen: Rotieren\n"
+#~ "Alt+Ziehen: Verschieben\n"
+#~ "Alt+RMT: Tiefenauswahl"
+
+#~ msgid "Sep.:"
+#~ msgstr "Trenner:"
+
+#~ msgid "Add All"
+#~ msgstr "Alle hinzufügen"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Thema-Bearbeitungsmenü."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Leeres Template erstellen"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Leeres Editor-Template erstellen"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Aus derzeitigem Editor-Thema erstellen"
+
+#~ msgid "Data Type:"
+#~ msgstr "Datentyp:"
+
+#~ msgid "Theme File"
+#~ msgstr "Theme-Datei"
+
+#~ msgid "Compiled"
+#~ msgstr "Kompiliert"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "%d Projekte aus der Liste entfernen?\n"
+#~ "Inhalte der Projektordner werden nicht geändert."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Dieses Projekt aus der Liste entfernen?\n"
+#~ "Inhalte des Projektordners werden nicht geändert."
+
+#~ msgid "Templates"
+#~ msgstr "Vorlagen"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Umgeleiteten Pfad hinzufügen"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Lässt sich nicht an Wurzel-Node ausführen."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Konnte Bilddatei des Startbildschirms nicht lesen:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Verwende Standard-Startbildschirm-Bilddatei."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Ein AnimationPlayer kann sich nicht selbst animieren, nur andere Objekte."
@@ -13409,9 +14833,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ "Es existiert bereits eine Datei oder ein Ordner an diesem Pfad mit dem "
#~ "angegebenen Namen."
-#~ msgid "Aligning APK..."
-#~ msgstr "Richte APK aus..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "APK konnte nicht ausgerichtet werden."
@@ -13475,9 +14896,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ "Die aktuelle Szene wurde noch nicht gespeichert, bitte vor dem Abspielen "
#~ "sichern."
-#~ msgid "Not in resource path."
-#~ msgstr "Nicht im Ressourcen-Pfad."
-
#~ msgid "Revert"
#~ msgstr "Zurücksetzen"
@@ -13583,9 +15001,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "Input"
#~ msgstr "Eingang"
-#~ msgid "Properties:"
-#~ msgstr "Eigenschaften:"
-
#~ msgid "Methods:"
#~ msgstr "Methoden:"
@@ -14068,9 +15483,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "Connect two points to make a split."
#~ msgstr "Zwei Punkte verbinden um Teilung zu erstellen."
-#~ msgid "Select a split to erase it."
-#~ msgstr "Teilung zum Löschen auswählen."
-
#~ msgid "Add Node.."
#~ msgstr "Node hinzufügen.."
@@ -14139,9 +15551,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "Public Methods:"
#~ msgstr "Öffentliche Methoden:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "GUI-Thema-Elemente"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "GUI-Theme-Elemente:"
@@ -14163,9 +15572,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "Match case"
#~ msgstr "Groß-/Kleinschreibung berücksichtigen"
-#~ msgid "Filter: "
-#~ msgstr "Filter: "
-
#~ msgid "Ok"
#~ msgstr "Ok"
@@ -14203,9 +15609,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "Rotate 270 degrees"
#~ msgstr "Drehe auf 270 Grad"
-#~ msgid "Variable"
-#~ msgstr "Variable"
-
#~ msgid "Errors:"
#~ msgstr "Fehler:"
@@ -14296,9 +15699,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "Set Transitions to:"
#~ msgstr "Setze Übergänge auf:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Spur umbenennen"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Interpolation der Spur ändern"
@@ -14449,12 +15849,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "StyleBox Preview:"
#~ msgstr "StyleBox-Vorschau:"
-#~ msgid "StyleBox"
-#~ msgstr "Style-Box"
-
-#~ msgid "Separation:"
-#~ msgstr "Trennung:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Texturbegrenzungseditor"
@@ -14529,12 +15923,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "project.godot konnte nicht im Projektpfad gefunden werden."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "project.godot konnte nicht im Projektpfad gefunden werden."
-
-#~ msgid "Not found!"
-#~ msgstr "Nicht gefunden!"
-
#~ msgid "Replace By"
#~ msgstr "Ersetzen durch"
@@ -14912,9 +16300,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "Texturkompressionsqualität (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "Textureinstellungen"
-
#~ msgid "Please specify some files!"
#~ msgstr "Bitte gib einige Dateien an!"
@@ -15075,9 +16460,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "Zoom Set..."
#~ msgstr "Vergrößerung setzen..."
-#~ msgid "Set a Value"
-#~ msgstr "Einen Wert setzen"
-
#~ msgid "Parse BBCode"
#~ msgstr "BBCode parsen"
@@ -15201,9 +16583,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "Instance at Cursor"
#~ msgstr "Instanz am Mauszeiger"
-#~ msgid "Could not instance scene!"
-#~ msgstr "Konnte Szene nicht instantiieren!"
-
#~ msgid "Use Default Light"
#~ msgstr "Nutze Standardlicht"
@@ -15279,9 +16658,6 @@ msgstr "Konstanten können nicht verändert werden."
#~ msgid "City"
#~ msgstr "Stadt"
-#~ msgid "State"
-#~ msgstr "Status"
-
#~ msgid "2 letter country code"
#~ msgstr "2-Buchstaben-Ländercode"
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index a0f4654639..bbd0bf9a6a 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -503,7 +503,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -529,7 +530,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -550,6 +552,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -566,6 +572,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -614,7 +624,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -700,12 +710,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -760,11 +772,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -814,6 +824,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -883,7 +894,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -898,6 +909,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -919,8 +938,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -993,16 +1012,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1047,7 +1068,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1168,37 +1189,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1206,7 +1231,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1270,7 +1295,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1350,7 +1375,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1437,6 +1462,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1452,16 +1485,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1477,7 +1510,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1616,7 +1649,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1648,15 +1721,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1674,7 +1747,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1682,17 +1755,23 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+msgid "Create Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Remove Profile"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1701,19 +1780,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1737,7 +1816,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1791,9 +1870,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1874,8 +1954,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1946,7 +2025,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2031,7 +2110,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2047,8 +2126,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2064,7 +2144,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2128,7 +2208,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2322,18 +2403,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2503,7 +2588,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2684,6 +2769,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2816,13 +2905,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2830,6 +2918,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2838,7 +2930,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2935,6 +3027,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2961,7 +3061,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3002,6 +3102,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3033,6 +3137,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3057,21 +3165,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3079,11 +3184,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3103,6 +3208,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3144,12 +3259,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3167,22 +3276,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3196,37 +3328,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3261,7 +3376,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3281,64 +3396,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3346,7 +3467,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3356,135 +3481,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Other Installed Versions:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3610,22 +3766,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3633,6 +3815,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3712,10 +3898,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3936,52 +4118,49 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
+msgid "Paste Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -3997,7 +4176,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4005,6 +4188,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4032,6 +4219,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4231,7 +4427,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4445,6 +4641,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4781,10 +4982,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4793,15 +5002,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4829,6 +5042,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4929,7 +5146,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4972,6 +5193,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4980,8 +5205,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5215,15 +5440,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5277,6 +5503,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5288,19 +5515,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5532,6 +5765,14 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5544,6 +5785,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5784,6 +6065,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5816,7 +6101,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5875,13 +6160,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5935,7 +6232,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6207,7 +6503,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6511,6 +6808,22 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6714,7 +7027,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6745,6 +7058,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6867,8 +7185,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6901,10 +7219,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -6979,7 +7293,7 @@ msgstr ""
#: editor/plugins/shader_editor_plugin.cpp
msgid ""
-"This shader has been modified on on disk.\n"
+"This shader has been modified on disk.\n"
"What action should be taken?"
msgstr ""
@@ -7056,6 +7370,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7076,39 +7409,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Vertices:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7264,6 +7601,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7279,6 +7620,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7292,7 +7637,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7300,18 +7645,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7408,6 +7750,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7697,11 +8043,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7722,7 +8063,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7730,156 +8071,520 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8048,6 +8753,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8364,11 +9073,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9188,7 +9892,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9303,7 +10007,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9311,7 +10015,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9319,11 +10023,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9396,7 +10100,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9430,6 +10134,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9574,15 +10290,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9609,7 +10321,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9621,10 +10333,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9633,11 +10357,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9645,6 +10381,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9655,8 +10399,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9666,6 +10414,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9707,6 +10459,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9846,7 +10602,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9854,11 +10610,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10126,6 +10882,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10288,11 +11048,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10348,6 +11126,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10394,10 +11176,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10668,6 +11446,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10736,6 +11520,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11019,6 +11807,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11060,6 +11856,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11302,6 +12102,14 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11410,6 +12218,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11633,10 +12445,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11666,6 +12474,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11762,6 +12598,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11774,6 +12646,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11788,6 +12664,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11807,11 +12696,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11840,27 +12767,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12208,6 +13159,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12277,12 +13235,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12331,6 +13341,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12478,15 +13492,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/el.po b/editor/translations/el.po
index 035a82f99f..b26b28b5d4 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -541,7 +541,8 @@ msgstr "ΔευτεÏόλεπτα"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -567,7 +568,8 @@ msgstr "Μεγέθυνση επιλογής"
msgid "Scale From Cursor"
msgstr "Μεγέθυνση από τον δείκτη"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "ΑναπαÏαγωγή Επιλογής"
@@ -588,6 +590,11 @@ msgid "Go to Previous Step"
msgstr "ΠÏοηγοÏμενο Βήμα"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "ΕπαναφοÏά"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Βελτιστοποίηση animation"
@@ -604,6 +611,11 @@ msgid "Use Bezier Curves"
msgstr "ΧÏήση καμπυλών Bezier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Επικόλληση κομματιών"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Anim. Μηχανή βελτιστοποίησης"
@@ -652,7 +664,7 @@ msgid "Select Tracks to Copy"
msgstr "Επιλογή Κομματιών για ΑντιγÏαφή"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -738,12 +750,14 @@ msgid "Toggle Scripts Panel"
msgstr "Εναλλαγή πλαισίου δεσμών ενεÏγειών"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Μεγέθυνση"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -800,11 +814,9 @@ msgid "Add"
msgstr "ΠÏοσθήκη"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -856,6 +868,7 @@ msgstr "ΑδÏνατη η σÏνδεση σήματος"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -927,7 +940,8 @@ msgid "Edit..."
msgstr "ΕπεξεÏγασία..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Πήγαινε σε συνάÏτηση"
#: editor/create_dialog.cpp
@@ -942,6 +956,14 @@ msgstr "Αλλαγή"
msgid "Create New %s"
msgstr "ΔημιουÏγία νέου %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Κανένα αποτέλεσμα για \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -963,8 +985,8 @@ msgstr "Αναζήτηση:"
msgid "Matches:"
msgstr "Αντιστοιχίες:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1040,20 +1062,24 @@ msgid "Owners Of:"
msgstr "Ιδιοκτήτες του:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"ΑφαίÏεση επιλεγμένων αÏχείων από το έÏγο; (Αδυναμία αναίÏεσης)\n"
"ΜποÏείτε να βÏείτε τα διεγÏαμμένα αÏχεία στον κάδο ανακÏκλωσης για να τα "
"επαναφέÏετε."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Τα αÏχεία που αφαιÏοÏνται απαιτοÏνται για την λειτουÏγία άλλων πόÏων.\n"
"Îα αφαιÏεθοÏν; (ΑδÏνατη η αναίÏεση)\n"
@@ -1101,7 +1127,7 @@ msgstr "ΕξεÏευνητής αχÏησιμοποίητων πόÏων"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1227,28 +1253,41 @@ msgstr "Συστατικά"
msgid "Licenses"
msgstr "Άδειες"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Σφάλμα ανοίγματος αÏχείου πακέτου, δεν είναι σε μοÏφή ZIP."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Σφάλμα ανοίγματος αÏχείου πακέτου (δεν είναι σε μοÏφή ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (ΥπάÏχει ήδη)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Αποσυμπίεση asset"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Η εξαγωγή των ακόλουθων αÏχείων από το πακέτο απέτυχε:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Και %s αÏχεία ακόμα."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Το πακέτο εγκαταστάθηκε επιτυχώς!"
#: editor/editor_asset_installer.cpp
@@ -1256,16 +1295,13 @@ msgstr "Το πακέτο εγκαταστάθηκε επιτυχώς!"
msgid "Success!"
msgstr "Επιτυχία!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "ΠεÏιεχόμενα Πακέτου:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Εγκατάσταση"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "ΠÏόγÏαμμα εγκατάστασης πακέτων"
#: editor/editor_audio_buses.cpp
@@ -1329,7 +1365,8 @@ msgid "Bypass"
msgstr "ΠαÏάκαμψη"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Επιλογές διαÏλου"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1409,7 +1446,7 @@ msgstr "ΠÏοσθήκη διαÏλου"
msgid "Add a new Audio Bus to this layout."
msgstr "ΠÏοσθήκη νέου διαÏλου ήχου στην διάταξη."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1497,6 +1534,15 @@ msgid "Can't add autoload:"
msgstr "Αδυναμία Ï€Ïοσθήκης autoload:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Το αÏχείο δεν υπάÏχει."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "ΠÏοσθήκη AutoLoad"
@@ -1512,16 +1558,17 @@ msgid "Node Name:"
msgstr "Όνομα κόμβου:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Όνομα"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "ΜονοσÏνολο"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Μεταβλητή"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Επικόλληση παÏαμέτÏων"
@@ -1537,7 +1584,7 @@ msgstr "Αποθήκευση τοπικών αλλαγών..."
msgid "Updating scene..."
msgstr "ΕνημέÏωση σκηνής..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[άδειο]"
@@ -1693,8 +1740,49 @@ msgid "Import Dock"
msgstr "ΠλατφόÏμα Εισαγωγής"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "ΔιαγÏαφή Ï€Ïοφίλ «%s»; (χωÏίς ανέÏαιση)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(ΤÏέχων)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1725,15 +1813,18 @@ msgid "Enable Contextual Editor"
msgstr "ΕνεÏγοποίηση ΕπεξεÏγαστή Βάσει ΠεÏιβάλλοντος"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "ΕνεÏγοποιημένες Ιδιότητες:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Ιδιότητες:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "ΕνεÏγοποιημένες Δυνατότητες:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Δυνατότητες"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "ΕνεÏγοποιημένες Κλάσεις:"
#: editor/editor_feature_profile.cpp
@@ -1752,25 +1843,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Σφάλμα αποθήκευσης Ï€Ïοφίλ στο «%s»."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "ΚατάÏγηση"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "ΕπαναφοÏά Ï€Ïοεπιλογών"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "ΤÏέχων ΠÏοφίλ:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Κάνε ΤÏέχων"
+#, fuzzy
+msgid "Create Profile"
+msgstr "ΔιαγÏαφή ΠÏοφίλ"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Îέο"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "ΑφαίÏεση Πλακιδίου"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Διαθέσιμα ΠÏοφίλ:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Κάνε ΤÏέχων"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Εισαγωγή"
@@ -1779,20 +1879,22 @@ msgid "Export"
msgstr "Εξαγωγή"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Διαθέσιμα ΠÏοφίλ:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "ΤÏέχων ΠÏοφίλ:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Επιλογές Κλάσης"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Επιλογές υφής"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Îέο όνομα Ï€Ïοφίλ:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "ΔιαγÏαφή ΠÏοφίλ"
+msgid "New profile name:"
+msgstr "Îέο όνομα Ï€Ïοφίλ:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1815,7 +1917,8 @@ msgid "Select Current Folder"
msgstr "Επιλογή Ï„Ïέχοντα φακέλου"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Το αÏχείο υπάÏχει. Θέλετε να το αντικαταστήσετε;"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1869,9 +1972,10 @@ msgid "Open a File or Directory"
msgstr "Άνοιγμα αÏχείου ή φακέλου"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Αποθήκευση"
@@ -1952,8 +2056,7 @@ msgid "Directories & Files:"
msgstr "Φάκελοι & ΑÏχεία:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "ΠÏοεπισκόπηση:"
@@ -2026,7 +2129,7 @@ msgstr "Ιδιότητες θέματος"
msgid "Enumerations"
msgstr "ΑπαÏιθμήσεις"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "ΣταθεÏές"
@@ -2115,7 +2218,7 @@ msgstr "Μέθοδος"
msgid "Signal"
msgstr "Σήμα"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "ΣταθεÏή"
@@ -2131,9 +2234,10 @@ msgstr "Ιδιότητα Θέματος"
msgid "Property:"
msgstr "Ιδιότητα:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "ΟÏισμός"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Θέσε %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2148,7 +2252,7 @@ msgid "Copy Selection"
msgstr "ΑντιγÏαφή Επιλογής"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2212,7 +2316,8 @@ msgid "Imported resources can't be saved."
msgstr "Οι εισαγμένοι πόÏοι δεν μποÏοÏν να αποθηκευτοÏν."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Εντάξει"
@@ -2438,18 +2543,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Αποθήκευση αλλαγών στο '%s' Ï€Ïιν το κλείσιμο;"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "ΑποθηκεÏτηκαν %s αλλαγμένοι πόÏοι."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Απαιτείται Ïιζικός κόμβος για την αποθήκευση της σκηνής."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Αποθήκευση σκηνή ως..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χωÏίς σκηνή."
@@ -2653,7 +2763,7 @@ msgstr "ΔιαγÏαφή διάταξης"
msgid "Default"
msgstr "ΠÏοεπιλογή"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Εμφάνιση στο ΣÏστημα ΑÏχείων"
@@ -2834,6 +2944,11 @@ msgid "Orphan Resource Explorer..."
msgstr "ΕξεÏευνητής ΑχÏησιμοποίητων ΠόÏων..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Μετονομασία έÏγου"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Έξοδος στη λίστα έÏγων"
@@ -2993,20 +3108,25 @@ msgstr "ΔιαχείÏιση ΠÏοτÏπων Εξαγωγής..."
msgid "Help"
msgstr "Βοήθεια"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "ΗλεκτÏονική τεκμηÏίωση"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Άνοιγμα ΤεκμηÏίωσης"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "ΕÏωτήσεις & Απαντήσεις"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "ΑναφοÏά Σφάλματος"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "ΟÏισμός τιμής"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Αποστολή Σχολίων ΤεκμηÏίωσης"
@@ -3015,7 +3135,8 @@ msgid "Community"
msgstr "Κοινότητα"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Σχετικά"
#: editor/editor_node.cpp
@@ -3115,6 +3236,16 @@ msgid "Manage Templates"
msgstr "ΔιαχείÏιση ΠÏοτÏπων"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Εγκατάσταση από αÏχείο"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Έπιλέξτε ένα πηγαίο πλέγμα:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3153,7 +3284,7 @@ msgstr "Εισαγωγή Ï€ÏοτÏπων από αÏχείο ZIP"
msgid "Template Package"
msgstr "Πακέτο ΠÏοτÏπων"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Εξαγωγή βιβλιοθήκης"
@@ -3196,6 +3327,11 @@ msgid "Select"
msgstr "Επιλογή"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Επιλογή Ï„Ïέχοντα φακέλου"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Άνοιγμα 2D επεξεÏγαστή"
@@ -3227,6 +3363,11 @@ msgstr "ΠÏοειδοποίηση!"
msgid "No sub-resources found."
msgstr "Δεν βÏέθηκαν υπό-πόÏοι."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Δεν βÏέθηκαν υπό-πόÏοι."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "ΔημιουÏγία Ï€Ïοεπισκοπήσεων πλεγμάτων"
@@ -3251,33 +3392,34 @@ msgstr "Εγκατεστημένα Ï€Ïόσθετα:"
msgid "Update"
msgstr "ΕνημέÏωση"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Έκδοση:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "ΣυγγÏαφέας:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Κατάσταση:"
+#, fuzzy
+msgid "Author"
+msgstr "ΣυγγÏαφείς"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "ΕπεξεÏγασία:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Κατάσταση"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "ΜέτÏο:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "ΧÏόνος καÏέ (sec)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Μέσος ΧÏόνος (sec)"
#: editor/editor_profiler.cpp
@@ -3297,6 +3439,16 @@ msgid "Self"
msgstr "Εαυτός"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "ΚαÏέ #:"
@@ -3338,14 +3490,6 @@ msgstr "ΆκυÏο RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Ο επιλεγμένος πόÏος (%s) δεν ταιÏιάζει σε κανέναν αναμενόμενο Ï„Ïπο γι'αυτήν "
-"την ιδιότητα (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3369,40 +3513,6 @@ msgid "Pick a Viewport"
msgstr "Επιλέξτε ένα Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Îέα Δέσμη ΕνεÏγειών"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Επέκταση Δέσμης ΕνεÏγειών"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Îέο %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Κάνε μοναδικό"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Επικόλληση"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "ΜετατÏοπή σε %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Ο επιλεγμένος κόμβος δεν είναι Viewport!"
@@ -3431,6 +3541,49 @@ msgstr "Îέα τιμή:"
msgid "Add Key/Value Pair"
msgstr "ΠÏοσθήκη ζεÏγους κλειδιοÏ/τιμής"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Ο επιλεγμένος πόÏος (%s) δεν ταιÏιάζει σε κανέναν αναμενόμενο Ï„Ïπο γι'αυτήν "
+"την ιδιότητα (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Κάνε μοναδικό"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Επικόλληση"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "ΜετατÏοπή σε %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Îέο %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Îέα Δέσμη ΕνεÏγειών"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Επέκταση Δέσμης ΕνεÏγειών"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3465,7 +3618,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Μήπως ξεχάσατε τη μέθοδο '_run';"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Πατήστε παÏατεταμένα το Ctrl για στÏογγυλοποίηση ακεÏαίων και το Shift για "
"πιο ακÏιβείς αλλαγές."
@@ -3487,116 +3641,69 @@ msgid "Import From Node:"
msgstr "Εισαγωγή σκηνής από κόμβο:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Εκ νέου λήψη"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Απεγκατάσταση"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Εγκατεστημένο)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Λήψη"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
-"Τα επίσημα Ï€Ïότυπα εξαγωγής δεν είναι διαθέσιμα για εκδόσεις ανάπτυξης."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Λείπει)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(ΤÏέχων)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Δεν υπάÏχει αÏχείο «%s»."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Ανάκτηση δεδοένων κατοπτÏισμοÏ, παÏακαλώ πεÏιμένετε..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "ΑφαίÏεση Ï€Ïότυπης εκδοχής '%s';"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "ΑδÏνατο το άνοιγμα του zip των Ï€ÏοτÏπων εξαγωγής."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "ΆκυÏη μοÏφή version.txt μέσα στα Ï€Ïότυπα: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Δεν βÏέθηκε version.txt μέσα στα Ï€Ïότυπα."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Σφάλμα κατά τη δημιουÏγία διαδÏομης για τα Ï€Ïότυπα:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Εξαγωγή Ï€ÏοτÏπων εξαγωγής"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Εισαγωγή:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Σφάλμα απόκτησης λίστας κατοπτÏισμοÏ."
+msgid "Error requesting URL:"
+msgstr "Σφάλμα αίτησης URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Σφάλμα ανάλυσης JSON της λίστας κατοπτÏισμοÏ. ΠαÏακαλοÏμε να αναφέÏετε αυτό "
-"το Ï€Ïόβλημα!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "ΣÏνδεση σε διακομιστή κατοπτÏισμοÏ..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Δεν βÏέθηκαν συνδέσμοι λήψης για την Ï„Ïέχουσα έκδοση. Η απευθείας λήψη είναι "
-"διαθέσιμη μόνο για τις επίσημες διανομές."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Δεν είναι δυνατή η επίλυση του ονόματος του κεντÏÎ¹ÎºÎ¿Ï Ï…Ï€Î¿Î»Î¿Î³Î¹ÏƒÏ„Î®:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Δεν είναι δυνατή η επίλυση."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Δεν ήταν δυνατή η σÏνδεση στον κεντÏικό υπολογιστή:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Δεν ήταν δυνατή η σÏνδεση."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Δεν λήφθηκε απόκÏιση από τον κεντÏικό υπολογιστή:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Δεν λήφθηκε απόκÏιση."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Το αίτημα απέτυχε."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Î’Ïόχος ανακατευθήνσεων."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Το αίτημα απέτυχε, πάÏα πολλές ανακατευθÏνσεις"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Απέτυχε:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Το αίτημα απέτυχε."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Η λήψη ολοκληÏώθηκε."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3611,12 +3718,27 @@ msgstr ""
"Τα Ï€Ïοβληματικά Ï€Ïότυπα μποÏοÏν να βÏεθοÏν στο «%s»."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Σφάλμα αίτησης URL:"
+msgid "Error getting the list of mirrors."
+msgstr "Σφάλμα απόκτησης λίστας κατοπτÏισμοÏ."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "ΣÏνδεση σε διακομιστή κατοπτÏισμοÏ..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Σφάλμα ανάλυσης JSON της λίστας κατοπτÏισμοÏ. ΠαÏακαλοÏμε να αναφέÏετε αυτό "
+"το Ï€Ïόβλημα!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Δεν βÏέθηκαν συνδέσμοι λήψης για την Ï„Ïέχουσα έκδοση. Η απευθείας λήψη είναι "
+"διαθέσιμη μόνο για τις επίσημες διανομές."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3661,46 +3783,139 @@ msgid "SSL Handshake Error"
msgstr "Σφάλμα χαιÏÎµÏ„Î¹ÏƒÎ¼Î¿Ï SSL"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "ΑδÏνατο το άνοιγμα του zip των Ï€ÏοτÏπων εξαγωγής."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "ΆκυÏη μοÏφή version.txt μέσα στα Ï€Ïότυπα: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Δεν βÏέθηκε version.txt μέσα στα Ï€Ïότυπα."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Σφάλμα κατά τη δημιουÏγία διαδÏομης για τα Ï€Ïότυπα:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Εξαγωγή Ï€ÏοτÏπων εξαγωγής"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Εισαγωγή:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "ΑφαίÏεση Ï€Ïότυπης εκδοχής '%s';"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Αποσυμπίεση Πηγών Δόμησης Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "ΔιαχειÏιστής Ï€ÏοτÏπων εξαγωγής"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "ΤÏέχουσα έκδοση:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Εγκατεστημένες εκδόσεις:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Άνοιγμα ΑÏχείου"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Απεγκατάσταση"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "ΑÏχική τιμή μετÏητή"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Σφάλμα λήψης"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"Τα επίσημα Ï€Ïότυπα εξαγωγής δεν είναι διαθέσιμα για εκδόσεις ανάπτυξης."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Εγκατάσταση από αÏχείο"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "ΑφαίÏεση Ï€ÏοτÏπου"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Εισαγωγή Ï€ÏοτÏπων από αÏχείο ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "ΆκυÏο"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Επιλογή ΑÏχείου ΠÏοτÏπων"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "ΑδÏνατο το άνοιγμα του zip των Ï€ÏοτÏπων εξαγωγής."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "ΠÏοτÏπων Εξαγωγής Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Εγκατεστημένες εκδόσεις:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "ΔιαχειÏιστής Ï€ÏοτÏπων εξαγωγής"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Απεγκατάσταση"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Λήψη Ï€ÏοτÏπων"
+msgid "Select Template File"
+msgstr "Επιλογή ΑÏχείου ΠÏοτÏπων"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr "ΠÏοτÏπων Εξαγωγής Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
-"Επιλέξτε έναν διακομιστή κατοπτÏισμοÏ: (Shift+Click για άνοιγμα στο "
-"Ï€ÏόγÏαμμα πεÏιήγησης)"
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3836,30 +4051,62 @@ msgstr "Îέα Δέσμη ΕνεÏγειών..."
msgid "New Resource..."
msgstr "Îέος πόÏος..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Ανάπτυξη Όλων"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "ΣÏμπτυξη Όλων"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "ΑναπαÏαγωγή..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Αναζήτηση αÏχείων"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "Μετακίνηση στα αποÏÏίμματα"
+msgid "Sort by Last Modified"
+msgstr "Τελευταία ΤÏοποποιημένα"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Τελευταία ΤÏοποποιημένα"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "ΑναπαÏαγωγή..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Μετονομασία..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "ΠÏοηγοÏμενος Φάκελος/ΑÏχείο"
@@ -3943,10 +4190,6 @@ msgstr "ΕÏÏεση..."
msgid "Replace..."
msgstr "Αντικατάσταση..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "ΆκυÏο"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "ΕÏÏεση: "
@@ -4171,53 +4414,55 @@ msgid "Failed to load resource."
msgstr "Απέτυχε η φόÏτωση πόÏου."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Ανάπτυξη Όλων των Ιδιοτήτων"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Ιδιότητες"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "ΣÏμπτυξη Όλων των Ιδιοτήτων"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Αποθήκευση ως..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Ιδιότητες"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "ΑντιγÏαφή παÏαμέτÏων"
+msgid "Make Sub-Resources Unique"
+msgstr "Κάνε τους υπό-πόÏους μοναδικοÏÏ‚"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "ΕπεξεÏγασία Ï€ÏοχείÏου πόÏων"
+msgid "Create a new resource in memory and edit it."
+msgstr "ΔημιοÏÏγησε έναν νέο πόÏο στη μνήμη και επεξεÏγάσου τον."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "ΑντιγÏαφή πόÏου"
+msgid "Load an existing resource from disk and edit it."
+msgstr "ΦόÏτωσε υπάÏχων πόÏο στη μνήμη και επεξεÏγάσου τον."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Κάνε ενσωματωμένο"
+msgid "Save the currently edited resource."
+msgstr "Αποθήκευσε το Ï„Ïέχων επεξεÏγαζόμενο πόÏο."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Κάνε τους υπό-πόÏους μοναδικοÏÏ‚"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Αποθήκευση ως..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Άνοιγμα στη βοήθεια"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Δεν υπάÏχει στην διαδÏομή πόÏων."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "ΔημιοÏÏγησε έναν νέο πόÏο στη μνήμη και επεξεÏγάσου τον."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "ΕπεξεÏγασία Ï€ÏοχείÏου πόÏων"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "ΦόÏτωσε υπάÏχων πόÏο στη μνήμη και επεξεÏγάσου τον."
+msgid "Copy Resource"
+msgstr "ΑντιγÏαφή πόÏου"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Αποθήκευσε το Ï„Ïέχων επεξεÏγαζόμενο πόÏο."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Κάνε ενσωματωμένο"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4232,14 +4477,24 @@ msgid "History of recently edited objects."
msgstr "ΙστοÏικό Ï€Ïοσφάτως επεξεÏγασμένων αντικειμένων."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Ιδιότητες αντικειμένου."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Άνοιγμα ΤεκμηÏίωσης"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Άνοιγμα ΤεκμηÏίωσης"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "ΦιλτÏάÏισμα ιδιοτήτων"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Ιδιότητες αντικειμένου."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Οι αλλαγές μποÏεί να χαθοÏν!"
@@ -4269,6 +4524,15 @@ msgstr "Όνομα Ï€Ïοσθέτου:"
msgid "Subfolder:"
msgstr "Υποφάκελος:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "ΣυγγÏαφέας:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Έκδοση:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Γλώσσα:"
@@ -4474,7 +4738,8 @@ msgid "Blend:"
msgstr "Ανάμειξη:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Αλλαγη ΠαÏαμέτÏου"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4696,6 +4961,11 @@ msgid "Animation"
msgstr "Κίνηση"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Îέο"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "ΕπεξεÏγασία μεταβάσεων..."
@@ -5037,10 +5307,18 @@ msgid "View Files"
msgstr "ΠÏοβολή αÏχείων"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Λήψη"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Σφάλμα σÏνδεσης, παÏακαλώ ξαναπÏοσπαθήστε."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Δεν ήταν δυνατή η σÏνδεση."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Δεν ήταν δυνατή η σÏνδεση στον κεντÏικό υπολογιστή:"
@@ -5049,16 +5327,20 @@ msgid "No response from host:"
msgstr "Δεν λήφθηκε απόκÏιση από τον κεντÏικό υπολογιστή:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Δεν λήφθηκε απόκÏιση."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Δεν είναι δυνατή η επίλυση του ονόματος του κεντÏÎ¹ÎºÎ¿Ï Ï…Ï€Î¿Î»Î¿Î³Î¹ÏƒÏ„Î®:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Το αίτημα απέτυχε, κώδικας επιστÏοφής:"
+msgid "Can't resolve."
+msgstr "Δεν είναι δυνατή η επίλυση."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Το αίτημα απέτυχε."
+msgid "Request failed, return code:"
+msgstr "Το αίτημα απέτυχε, κώδικας επιστÏοφής:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5085,6 +5367,10 @@ msgid "Timeout."
msgstr "Λήξη χÏÎ¿Î½Î¹ÎºÎ¿Ï Î¿Ïίου."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Απέτυχε:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
"Εσφαλμένος κωδικός κατακεÏματισμοÏ, θα θεωÏηθεί ότι το αÏχείο έχει αλλοιωθεί."
@@ -5186,8 +5472,12 @@ msgid "All"
msgstr "Όλα"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Κανένα αποτέλεσμα για \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5229,6 +5519,10 @@ msgstr "ΦόÏτωση..."
msgid "Assets ZIP File"
msgstr "ΑÏχείο ZIP των Στοιχείων"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5239,9 +5533,10 @@ msgstr ""
"ΑποθηκεÏστε τη σκηνή σας και δοκιμάστε ξανα."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Δεν υπάÏχουν πλέγματα για Ï€Ïοετοιμασία. ΣιγουÏευτείτε ότι εμπεÏιέχουν κανάλι "
"UV2 και πως η σημαία 'Bake Light' είναι ενεÏγοποιημένη."
@@ -5492,9 +5787,10 @@ msgstr "Αλλαγή ΑγκυÏών"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Αντικατάσταση ΚάμεÏας ΠαιχνιδιοÏ\n"
"Αντικαθιστά την κάμεÏα Ï€Î±Î¹Ï‡Î½Î¹Î´Î¹Î¿Ï Î¼Îµ την κάμεÏα του επεξεÏγαστή οπτικής "
@@ -5503,11 +5799,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Αντικατάσταση ΚάμεÏας ΠαιχνιδιοÏ\n"
-"Δεν Ï„Ïέχει κανένα πεÏιστατικό παιχνιδιοÏ."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5562,6 +5857,7 @@ msgstr ""
"γονέα τους."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5573,22 +5869,32 @@ msgid "Select Mode"
msgstr "Επιλογή ΛειτουÏγίας"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "ΣÏÏσιμο: ΠεÏιστÏοφή"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "ΑφαίÏεση επιλεγμένου κόμβου ή μετάβασης."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt + ΣÏÏσιμο: Μετακίνηση"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "ΑφαίÏεση επιλεγμένου κόμβου ή μετάβασης."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Πατήστε 'v' για να Αλλάξετε το Πηγαίο Σημείο, 'Shift+v' για να ΣÏÏετε το "
-"Πηγαίο Σημείο (καθώς μετακινείτε)."
+"Εμφάνιση λίστας όλων των αντικειμένων στην θέση που κάνατε κλικ\n"
+"(Το ίδιο με Alt+Δεξί Κλικ Î Î¿Î½Ï„Î¹ÎºÎ¹Î¿Ï ÏƒÏ„Î·Î½ λειτουÏγία επιλογής)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+Δεξί Κλικ ΠοντικιοÏ: Επιλογή λίστας βάθους"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5828,6 +6134,16 @@ msgid "Clear Pose"
msgstr "ΕκκαθάÏιση Στάσης"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "ΠÏοσθήκη κόμβου"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "ΔημιουÏγία στιγμιοτÏπυ σκηνών"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Πολλαπλασιασμός βήματος πλέγματος με 2"
@@ -5840,6 +6156,52 @@ msgid "Pan View"
msgstr "Μετατόπιση Οπτικής Γωνίας"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "ΣμίκÏυνση"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "ΣμίκÏυνση"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "ΣμίκÏυνση"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "ΣμίκÏυνση"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "ΣμίκÏυνση"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "ΣμίκÏυνση"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "ΠÏόσθεσε %s"
@@ -6084,6 +6446,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Αδυναμία δημιουÏγίας Î¼Î¿Î½Î±Î´Î¹ÎºÎ¿Ï ÎºÏ…ÏÏ„Î¿Ï ÏƒÏ‡Î®Î¼Î±Ï„Î¿Ï‚ σÏγκÏουσης."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "ΔημιουÏγία ÎœÎ¿Î½Î±Î´Î¹ÎºÎ¿Ï ÎšÏ…ÏÏ„Î¿Ï Î£Ï‡Î®Î¼Î±Ï„Î¿Ï‚"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "ΔημιουÏγία ÎœÎ¿Î½Î±Î´Î¹ÎºÎ¿Ï ÎšÏ…ÏÏ„Î¿Ï Î£Ï‡Î®Î¼Î±Ï„Î¿Ï‚"
@@ -6118,7 +6485,8 @@ msgid "No mesh to debug."
msgstr "Κανένα πλέγμα για αποσφαλμάτωση."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Το μοντέλο δεν έχει UV σε αυτό το στÏώμα"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6184,13 +6552,27 @@ msgstr ""
"Είναι η γÏηγοÏότεÏη (αλλά πιο ανακÏιβής) επιλογή για εντοπισμό σÏγκÏουσης."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "ΔημιουÏγία ÎœÎ¿Î½Î±Î´Î¹ÎºÎ¿Ï ÎšÏ…ÏÏ„Î¿Ï Î‘Î´ÎµÎ»Ï†Î¿Ï Î£ÏγκÏουσης"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "ΔημιουÏγία Πολλαπλών ΚυÏτών Αδελφών ΣÏγκÏουσης"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"ΔημιουÏγεί ένα σχήμα σÏγκÏουσης βασισμένο σε πολÏγωνα.\n"
"Είναι μια επιλογή μέσης απόδοσης σχετικά με τις παÏαπάνω επιλογές."
@@ -6252,7 +6634,6 @@ msgid "Mesh Library"
msgstr "Βιβλιοθήκη Πλεγμάτων"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "ΠÏοσθήκη στοιχείου"
@@ -6529,7 +6910,8 @@ msgid "Close Curve"
msgstr "κλείσιμο καμπÏλης"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Επιλογές"
@@ -6845,6 +7227,26 @@ msgstr "ΦόÏτωση πόÏου"
msgid "ResourcePreloader"
msgstr "ΠÏόφÏαμμα Ï€ÏοφόÏτωσης"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "ΑναστÏοφή ΟÏιζόντια"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "ΑÏιθμός δημιουÏγημένων σημείων:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "ΑÏιθμός δημιουÏγημένων σημείων:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "ΑναστÏοφή ΟÏιζόντια"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "Το AnimationTree δεν έχει διαδÏομή σε AnimationPlayer"
@@ -7054,7 +7456,7 @@ msgstr "Εκτέλεση"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Αναζήτηση"
@@ -7085,6 +7487,11 @@ msgid "Debug with External Editor"
msgstr "Αποσφαλμάτωση με ΕξωτεÏικό ΕπεξεÏγαστή"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "ΗλεκτÏονική τεκμηÏίωση"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Άνοιγμα ηλεκτÏονικής τεκμηÏίωσης της Godot."
@@ -7213,8 +7620,8 @@ msgstr "Πήγαινε Σε"
msgid "Cut"
msgstr "Αποκοπή"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Επιλογή όλων"
@@ -7247,10 +7654,6 @@ msgid "Unfold All Lines"
msgstr "Ξεδίπλωμα όλων των γÏαμμών"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Κλωνοποίηση κάτω"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "ΣυμπλήÏωση συμβόλου"
@@ -7405,6 +7808,28 @@ msgid "View Plane Transform."
msgstr "Μετασχηματισμός στο επίπεδο θέασης."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Τίποτα"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "ΛειτουÏγία ΠεÏιστÏοφής"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Μετατόπιση:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Κλιμάκωση:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Κλιμάκωση: "
@@ -7426,42 +7851,54 @@ msgid "Animation Key Inserted."
msgstr "Το κλειδί κίνησης έχει εισαχθεί."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Τόνος"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "ΠαÏέκκλιση"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Μέγεθος"
+#, fuzzy
+msgid "Size:"
+msgstr "Μέγεθος: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "ΖωγÏαφισμένα αντικείμενα"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Αλλαγές υλικοÏ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Αλλαγές Ï€ÏογÏάμματος σκίασης"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Αλλαγές επιφάνειας"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Κλήσεις σχεδίασης"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "ΚοÏυφές"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Πάνω όψη."
@@ -7615,6 +8052,11 @@ msgid "Freelook Slow Modifier"
msgstr "ΑÏγός ΤÏοποποιητής ΕλεÏθεÏου Κοιτάγματος"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Αλλαγή μεγέθους κάμεÏας"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Κλείδωμα ΠεÏιστÏοφής"
@@ -7633,6 +8075,11 @@ msgstr ""
"παιχνιδιοÏ."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "ΜετατÏοπή σε %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Διάλογος XForm"
@@ -7651,7 +8098,8 @@ msgstr ""
"Ημι-ανοιχτό μάτι: ΜαÏαφέτι οÏατό και μέσα από στεÏεές επιφάνειες (\"x-ray\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "ΚοÏμπωμα Κόμβων στο Δάπεδο"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7660,16 +8108,6 @@ msgstr ""
"Δεν μπόÏεσε να βÏεθεί συμπαγές πάτωμα για να Ï€Ïοσκολληθεί η επιλογή σε αυτό."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Μετακίνηση: ΠεÏιστÏοφή\n"
-"Alt + ΣÏÏσιμο: Μετακίνηση\n"
-"Alt + Δεξί κλικ: Επιλογή λίστας βάθους"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "ΧÏησιμοποιείστε Τοπικό ΧώÏο"
@@ -7678,6 +8116,10 @@ msgid "Use Snap"
msgstr "ΧÏήση κουμπώματος"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Κάτω όψη"
@@ -7771,6 +8213,11 @@ msgid "View Grid"
msgstr "ΠÏοβολή πλέγματος"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Ρυθμίσεις οπτικής γωνίας"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Ρυθμίσεις..."
@@ -8060,11 +8507,6 @@ msgid "Snap Mode:"
msgstr "ΛειτουÏγία κουμπώματος:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Τίποτα"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "ΚοÏμπωμα στα εικονοστοιχεία"
@@ -8085,165 +8527,603 @@ msgid "Step:"
msgstr "Βήμα:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "ΔιαχωÏιστικό:"
+msgid "Separation:"
+msgstr "ΔιαχωÏισμός:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "TextureRegion"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "ΠÏοσθήκη όλων των στοιχείων"
+#, fuzzy
+msgid "Colors"
+msgstr "ΧÏώμα"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Fonts"
+msgstr "ΓÏαμματοσειÏά"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "ΠÏοσθήκη όλων"
+#, fuzzy
+msgid "Icons"
+msgstr "Εικονίδιο"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Κουτί Στυλ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Δεν βÏέθηκαν υπό-πόÏοι."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "ΣταθεÏές"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "ΣταθεÏή χÏώματος."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Δεν βÏέθηκε!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Δεν βÏέθηκε!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Δεν βÏέθηκαν υπό-πόÏοι."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Εισαγωγή θέματος"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "ΤεÏματισμός του Ï€ÏογÏάμματος επεξεÏγασίας;"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Ανάλυση"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "ΦίλτÏο: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Επιλέξτε έναν κόμβο"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Επιλέξτε ένα αντικείμενο ÏÏθμισης Ï€Ïώτα!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Επιλέξτε ένα αντικείμενο ÏÏθμισης Ï€Ïώτα!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Επιλέξτε ένα αντικείμενο ÏÏθμισης Ï€Ïώτα!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Επιλέξτε ένα αντικείμενο ÏÏθμισης Ï€Ïώτα!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Επιλέξτε ένα αντικείμενο ÏÏθμισης Ï€Ïώτα!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Επιλέξτε ένα αντικείμενο ÏÏθμισης Ï€Ïώτα!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "ΣÏμπτυξη Όλων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Ανάπτυξη Όλων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Επιλογή ΑÏχείου ΠÏοτÏπων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Επιλογή σημείων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Επιλογή όλων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Εισαγωγή σκηνής"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "ΑφαίÏεση όλων των στοιχείων"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "ΑφαίÏεση όλων"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "ΑφαίÏεση στοιχείου"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "ΕπεξεÏγασία Θέματος"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "ΑφαίÏεση όλων των στοιχείων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "ΑφαίÏεση όλων των στοιχείων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "ΑφαίÏεση όλων των στοιχείων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "ΑφαίÏεση όλων των στοιχείων"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "ÎœÎµÎ½Î¿Ï ÎµÏ€ÎµÎ¾ÎµÏγασίας θέματος."
+#, fuzzy
+msgid "Add Color Item"
+msgstr "ΠÏοσθήκη στοιχείων κλάσης"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "ΠÏοσθήκη στοιχείων κλάσης"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "ΠÏοσθήκη στοιχείου"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "ΠÏοσθήκη στοιχείου"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "ΠÏοσθήκη όλων των στοιχείων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "ΑφαίÏεση στοιχείων κλάσης"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "ΑφαίÏεση στοιχείων κλάσης"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Μετονομασία κόμβου"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Μετονομασία κόμβου"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "ΑφαίÏεση του επιλεγμένου στοιοχείου"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "ΆκυÏο αÏχείο, δεν είναι διάταξη διαÏλων ήχου."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "ΔιαχείÏιση ΠÏοτÏπων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "ΕπεξεÏγάσιμο Στοιχείο"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "ΤÏπος:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "ΤÏπος:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "ΠÏοσθήκη στοιχείου"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "ΠÏοσθήκη όλων των στοιχείων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "ΑφαίÏεση στοιχείου"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "ΑφαίÏεση στοιχείων κλάσης"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "ΔημιουÏγία άδειου Ï€ÏοτÏπου"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "ΑφαίÏεση στοιχείων κλάσης"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "ΑφαίÏεση όλων των στοιχείων"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Στοιχεία του θέματος GUI"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "ΔημιουÏγία άδειου Ï€ÏοτÏπου επεξεÏγαστή"
+#, fuzzy
+msgid "Old Name:"
+msgstr "Όνομα κόμβου:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Εισαγωγή θέματος"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "ΔημιουÏγία από το Ï„Ïέχων θέμα του επεξεÏγαστή"
+#, fuzzy
+msgid "Default Theme"
+msgstr "ΠÏοεπιλογή"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "ΕπεξεÏγασία Θέματος"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "ΔιαγÏαφή πόÏου"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Εισαγωγή θέματος"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Anim Μετονομασία κομματιοÏ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Ομαδική Μετονομασία"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "ΠαÏακάμπτει"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "ΤÏπος"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "ΠÏοσθήκη στοιχείου"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Είδος Κόμβου"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "ΦόÏτωση Ï€Ïοεπιλογής"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "ΠαÏακάμπτει"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Θέμα"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "ΔιαχείÏιση ΠÏοτÏπων Εξαγωγής..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "ΠÏοεπισκόπηση"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Ανανέωση ΠÏοεπισκόπησης"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Έπιλέξτε ένα πηγαίο πλέγμα:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Εναλλαγή ΚουμπιοÏ"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "ΑπενεÏγοποιημένο Κουμπί"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Στοιχείο"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "ΑπενεÏγοποιημένο Στοιχείο"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Επιλογή στοιχείου"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Επιλεγμένο στοιχείο"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Στοιχείο επιλογής"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Επιλεγμένο στοιχείο επιλογής"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Ονομασμένο ΔιαχωÏιστικό"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Υπό-ΜενοÏ"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Υποαντικείμενο 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Υποαντικείμενο 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Έχει"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Πολλές"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "ΑπενεÏγοποιημένο LineEdit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "ΚαÏτέλα 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "ΚαÏτέλα 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "ΚαÏτέλα 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "ΕπεξεÏγάσιμο Στοιχείο"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "ΥπόδεντÏο"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Έχει,Πολλές,Επιλογές"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "ΤÏπος δεδομένων:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Εικονίδιο"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Στυλ"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "ΓÏαμματοσειÏά"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "ΧÏώμα"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "ΆκυÏο αÏχείο, δεν είναι διάταξη διαÏλων ήχου."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Θέμα ΑÏχείου"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8418,6 +9298,10 @@ msgid "Priority"
msgstr "ΠÏοτεÏαιότητα"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Εικονίδιο"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Δείκτης Z"
@@ -8758,11 +9642,6 @@ msgid "Commit Changes"
msgstr "Αλλαγές Δέσμευσης"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Κατάσταση"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "Δείτε τις διαφοÏές αÏχείων Ï€Ïιν τις δεσμεÏσετε στην τελική έκδοση"
@@ -9653,7 +10532,8 @@ msgid "VisualShader"
msgstr "Οπτικό ΠÏόγÏαμμα Σκίασης"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "ΕπεξεÏγασία Οπτικής Ιδιότητας"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9781,7 +10661,8 @@ msgid "Script"
msgstr "Δέσμες ΕνεÏγειών"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "ΛειτουÏγία Εξαγωγής Δεσμών ΕνεÏγειών:"
#: editor/project_export.cpp
@@ -9789,19 +10670,21 @@ msgid "Text"
msgstr "Κείμενο"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Μεταγλωτισμένες"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "ΚÏυπτογÏαφημένες (Δώστε Κλειδί ΠαÏακάτω)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "ΆκυÏο Κλειδί ΚÏυπτογÏάφησης (Ï€Ïέπει να έχει 64 χαÏακτήÏες)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Κλειδί ΚÏυπτογÏάφησης Δεσμών ΕνεÏγειών (256-bit σε δεκαεξαδικό):"
#: editor/project_export.cpp
@@ -9874,7 +10757,8 @@ msgid "Imported Project"
msgstr "Εισαγμένο έÏγο"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "ΆκυÏο όνομα έÏγου."
#: editor/project_manager.cpp
@@ -9911,6 +10795,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Δεν ήταν δυνατή η δημιουÏγία του project.godot στη διαδÏομή έÏγου."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Σφάλμα ανοίγματος αÏχείου πακέτου, δεν είναι σε μοÏφή ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Η εξαγωγή των ακόλουθων αÏχείων από το πακέτο απέτυχε:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Το πακέτο εγκαταστάθηκε επιτυχώς!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Μετονομασία έÏγου"
@@ -10089,20 +10985,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Είστε σίγουÏοι πως θέλετε να Ï„Ïέξετε %d έÏγα ταυτόχÏονα;"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"ΑφαίÏεση %d έÏγων από την λίστα;\n"
-"Τα πεÏιεχόμενα των καταλόγων των έÏγων δεν θα Ï„ÏοποποιηθοÏν."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Επιλέξτε συσκευή από την λίστα"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"ΑφαίÏεση έÏγου από την λίστα;\n"
-"Τα πεÏιεχόμενα του καταλόγου του έÏγου δεν θα Ï„ÏοποποιηθοÏν."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Επιλέξτε συσκευή από την λίστα"
#: editor/project_manager.cpp
msgid ""
@@ -10135,7 +11025,8 @@ msgid "Project Manager"
msgstr "ΔιαχειÏιστής"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "ΈÏγα"
#: editor/project_manager.cpp
@@ -10148,10 +11039,25 @@ msgid "Last Modified"
msgstr "Τελευταία ΤÏοποποιημένα"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Εξαγωγή έÏγου"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Μετονομασία έÏγου"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "ΣάÏωση"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "ΈÏγα"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Επιλέξτε έναν φάκελο για σάÏωση"
@@ -10160,18 +11066,41 @@ msgid "New Project"
msgstr "Îέο έÏγο"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Εισαγμένο έÏγο"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Μετονομασία έÏγου"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "ΑφαίÏεση Απόντων"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "ΠÏότυπα"
+msgid "About"
+msgstr "Σχετικά"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Βιβλιοθήκη ΠόÏων"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Επανεκκίνηση τώÏα"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "ΑφαίÏεση όλων"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Δεν είναι δυνατή η εκτέλεση του έÏγου"
@@ -10184,8 +11113,14 @@ msgstr ""
"Θέλετε να εξεÏευνήσετε μεÏικά επίσημα παÏαδείγματα στην βιβλιοθήκη πόÏων;"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "ΦιλτÏάÏισμα ιδιοτήτων"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10199,6 +11134,10 @@ msgid "Key "
msgstr "Κλειδί "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Κουμπί Joystick"
@@ -10242,6 +11181,10 @@ msgstr "Όλες οι Συσκευές"
msgid "Device"
msgstr "Συσκευή"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Πατήστε ένα κουμπί..."
@@ -10383,7 +11326,8 @@ msgid "Override for Feature"
msgstr "ΠαÏάκαμψη για δυνατότητα"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "ΠÏοσθήκη μετάφÏασης"
#: editor/project_settings_editor.cpp
@@ -10391,11 +11335,13 @@ msgid "Remove Translation"
msgstr "ΑφαίÏεση μετάφÏασης"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "ΠÏοσθήκη ανακατεÏθυνσης διαδÏομής"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "ΠÏοσθήκη ανακατεÏθυνσης διαδÏομής πόÏου"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "ΠÏοσθήκη ανακατεÏθυνσης διαδÏομής πόÏου"
#: editor/project_settings_editor.cpp
@@ -10668,6 +11614,10 @@ msgid "Post-Process"
msgstr "ΜετεπεξεÏγασία"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Στυλ"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "ΔιατήÏηση"
@@ -10836,14 +11786,30 @@ msgid "Delete node \"%s\"?"
msgstr "ΔιαγÏαφή κόμβου «%s»;"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Δεν είναι δυνατή η εκτέλεση με τον πηγαίο κόμβο."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
-"Αυτή η λειτουÏγία δεν μποÏεί να γίνει σε κλωνοποιημένες σκηνές από τις "
-"οποίες έχουν δημιουÏγηθεί στιγμιότυπα."
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10905,6 +11871,12 @@ msgstr ""
"Ï„Ïέχουσα σκηνή!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+"Αυτή η λειτουÏγία δεν μποÏεί να γίνει σε κλωνοποιημένες σκηνές από τις "
+"οποίες έχουν δημιουÏγηθεί στιγμιότυπα."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "ΣÏνδεση Δέσμης ΕνεÏγειών"
@@ -10954,10 +11926,6 @@ msgid "Load As Placeholder"
msgstr "ΦόÏτωση ως μέσο κÏάτησης"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Άνοιγμα ΤεκμηÏίωσης"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11247,6 +12215,12 @@ msgstr ""
"μποÏοÏν να ανοιχτοÏν σε εξωτεÏικό επεξεÏγαστή."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Όνομα Κλάσης:"
@@ -11315,6 +12289,10 @@ msgid "Copy Error"
msgstr "ΑντιγÏαφή σφάλματος"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Βίντεο RAM"
@@ -11602,6 +12580,16 @@ msgstr "ΆκυÏη μοÏφή Î»ÎµÎ¾Î¹ÎºÎ¿Ï ÏƒÏ„Î¹Î³Î¼Î¹Î¿Ï„Ïπων (άκυÏÎ
msgid "Object can't provide a length."
msgstr "Το αντικείμενο δεν έχει μήκος."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Εξαγωγή βιβλιοθήκης πλεγμάτων"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Εξαγωγή..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Επόμενο επίπεδο"
@@ -11643,6 +12631,11 @@ msgid "GridMap Paint"
msgstr "GridMap ΖωγÏαφική"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "GridMap Γέμισμα Επιλογής"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "ΧάÏτης δικτÏου"
@@ -11898,6 +12891,16 @@ msgid "Add Output Port"
msgstr "ΠÏοσθήκη ΘÏÏας Εξόδου"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Αλλαγή Ï„Ïπου"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Αλλαγή ονόματος θÏÏας εισόδου"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "ΠαÏάκαμψη υπαÏκτής ενσωματωμένης συνάÏτησης."
@@ -12012,6 +13015,11 @@ msgid "Add Preload Node"
msgstr "ΠÏοσθέστε έναν κόμβο preload"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "ΠÏοσθήκη κόμβου"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "ΠÏοσθέστε κόμβο/-ους από δέντÏο"
@@ -12243,10 +13251,6 @@ msgstr "Αναζήτηση VisualScript"
msgid "Get %s"
msgstr "Διάβασε %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Θέσε %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Το όνομα του πακέτου λείπει."
@@ -12280,6 +13284,40 @@ msgid "Select device from the list"
msgstr "Επιλέξτε συσκευή από την λίστα"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Εξαγωγή Όλων"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Απεγκατάσταση"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Ανάκτηση δεδοένων κατοπτÏισμοÏ, παÏακαλώ πεÏιμένετε..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Δεν ήταν δυνατή η δημιουÏγία στιγμιοτÏπου της σκηνής!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Εκτέλεση ΠÏοσαÏμοσμένης Δέσμης ΕνεÏγειών..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "ΑδÏνατη η δημιουÏγία φακέλου."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12399,6 +13437,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"ΣάÏωση αÏχείων,\n"
+"ΠαÏακαλώ πεÏιμένετε..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Σφάλμα κατά το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "ΠÏοσθήκη %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Εξαγωγή Όλων"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12411,6 +13491,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12432,6 +13516,21 @@ msgstr ""
"«ΈÏγο»."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Δεν βÏέθηκε το project.godot στη διαδÏομή του έÏγου."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Δόμηση ΈÏγου Android (gradle)"
@@ -12454,11 +13553,54 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Δεν βÏέθηκε η κίνηση: «%s»"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "ΔημιουÏγία πεÏιγÏαμμάτων..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Σφάλμα κατά το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "ΠÏοσθήκη %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Το αναγνωÏιστικό λείπει."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Ο χαÏακτήÏας «%s» είναι άκυÏος σε αναγνωÏιστικό."
@@ -12489,10 +13631,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Εκτέλεση εξαγόμενης HTMP στον Ï€Ïοεπιλεγμένο πεÏιηγητή του συστήματος."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Σφάλμα κατά το άνοιγμα Ï€ÏοτÏπου για εξαγωγή:"
@@ -12501,16 +13639,49 @@ msgid "Invalid export template:"
msgstr "ΆκυÏο Ï€ÏοτÏπο εξαγωγής:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Απέτυχε η εγγÏαφή σε αÏχείο:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Σφάλμα κατά την ανάγνωση Ï€ÏοσαÏμοσμένου κελÏφους HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Σφάλμα κατά την ανάγνωση εικόνας εκκίνησης:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "ΑδÏνατη η δημιουÏγία φακέλου."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "ΧÏήση Ï€Ïοεπιλεγμένης εικόνας εκκίνησης."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Σφάλμα κατά την αποθήκευση σκηνής."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "ΆκυÏο ΑναγνωÏιστικό:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12941,6 +14112,13 @@ msgstr ""
"Τα GIProbes δεν υποστηÏίζονται από το Ï€ÏόγÏαμμα οδήγησης οθόνης GLES2.\n"
"Εναλλακτικά, χÏησιμοποιήστε ένα BakedLightmap."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -13027,6 +14205,18 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -13035,6 +14225,46 @@ msgstr ""
"Η ιδιότητα «Remote Path» Ï€Ïέπει να δείχνει σε έγκυÏο κόμβο Spatial, ή κόμβο "
"που Ï€ÏοκÏπτει από Spatial."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Το σώμα αυτό δε θα ληφθεί υπόψιν μέχÏι να οÏίσετε ένα πλέγμα (mesh)."
@@ -13096,6 +14326,10 @@ msgstr "Στον κόμβο BlendTree «%s», δεν βÏέθηκε η κίνηÏ
msgid "Animation not found: '%s'"
msgstr "Δεν βÏέθηκε η κίνηση: «%s»"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "Στον κόμβο «%s», άκυÏη κίνηση: «%s»."
@@ -13273,6 +14507,27 @@ msgid "Invalid comparison function for that type."
msgstr "ΆκυÏη συνάÏτηση σÏγκÏισης για αυτόν τον Ï„Ïπο."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Τα «varying» μποÏοÏν να ανατεθοÏν μόνο στην σκίαση κοÏυφής."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Ανάθεση σε συνάÏτηση."
@@ -13281,13 +14536,182 @@ msgid "Assignment to uniform."
msgstr "Ανάθεση σε ενιαία μεταβλητή."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Τα «varying» μποÏοÏν να ανατεθοÏν μόνο στην σκίαση κοÏυφής."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏν."
+#~ msgid "Package Contents:"
+#~ msgstr "ΠεÏιεχόμενα Πακέτου:"
+
+#~ msgid "Singleton"
+#~ msgstr "ΜονοσÏνολο"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "ΔιαγÏαφή Ï€Ïοφίλ «%s»; (χωÏίς ανέÏαιση)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "ΕνεÏγοποιημένες Ιδιότητες:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "ΕνεÏγοποιημένες Δυνατότητες:"
+
+#~ msgid "Unset"
+#~ msgstr "ΚατάÏγηση"
+
+#~ msgid "Class Options"
+#~ msgstr "Επιλογές Κλάσης"
+
+#~ msgid "Set"
+#~ msgstr "ΟÏισμός"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "ΑποθηκεÏτηκαν %s αλλαγμένοι πόÏοι."
+
+#~ msgid "Q&A"
+#~ msgstr "ΕÏωτήσεις & Απαντήσεις"
+
+#~ msgid "Status:"
+#~ msgstr "Κατάσταση:"
+
+#~ msgid "Edit:"
+#~ msgstr "ΕπεξεÏγασία:"
+
+#~ msgid "Redownload"
+#~ msgstr "Εκ νέου λήψη"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Εγκατεστημένο)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Λείπει)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Το αίτημα απέτυχε."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Î’Ïόχος ανακατευθήνσεων."
+
+#~ msgid "Download Complete."
+#~ msgstr "Η λήψη ολοκληÏώθηκε."
+
+#~ msgid "Remove Template"
+#~ msgstr "ΑφαίÏεση Ï€ÏοτÏπου"
+
+#~ msgid "Download Templates"
+#~ msgstr "Λήψη Ï€ÏοτÏπων"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr ""
+#~ "Επιλέξτε έναν διακομιστή κατοπτÏισμοÏ: (Shift+Click για άνοιγμα στο "
+#~ "Ï€ÏόγÏαμμα πεÏιήγησης)"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Μετακίνηση στα αποÏÏίμματα"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Ανάπτυξη Όλων των Ιδιοτήτων"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "ΣÏμπτυξη Όλων των Ιδιοτήτων"
+
+#~ msgid "Copy Params"
+#~ msgstr "ΑντιγÏαφή παÏαμέτÏων"
+
+#~ msgid "Open in Help"
+#~ msgstr "Άνοιγμα στη βοήθεια"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Αντικατάσταση ΚάμεÏας ΠαιχνιδιοÏ\n"
+#~ "Δεν Ï„Ïέχει κανένα πεÏιστατικό παιχνιδιοÏ."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "ΣÏÏσιμο: ΠεÏιστÏοφή"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Πατήστε 'v' για να Αλλάξετε το Πηγαίο Σημείο, 'Shift+v' για να ΣÏÏετε το "
+#~ "Πηγαίο Σημείο (καθώς μετακινείτε)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+Δεξί Κλικ ΠοντικιοÏ: Επιλογή λίστας βάθους"
+
+#~ msgid "Clone Down"
+#~ msgstr "Κλωνοποίηση κάτω"
+
+#~ msgid "Yaw"
+#~ msgstr "ΠαÏέκκλιση"
+
+#~ msgid "Size"
+#~ msgstr "Μέγεθος"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Μετακίνηση: ΠεÏιστÏοφή\n"
+#~ "Alt + ΣÏÏσιμο: Μετακίνηση\n"
+#~ "Alt + Δεξί κλικ: Επιλογή λίστας βάθους"
+
+#~ msgid "Sep.:"
+#~ msgstr "ΔιαχωÏιστικό:"
+
+#~ msgid "Add All"
+#~ msgstr "ΠÏοσθήκη όλων"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "ÎœÎµÎ½Î¿Ï ÎµÏ€ÎµÎ¾ÎµÏγασίας θέματος."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "ΔημιουÏγία άδειου Ï€ÏοτÏπου"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "ΔημιουÏγία άδειου Ï€ÏοτÏπου επεξεÏγαστή"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "ΔημιουÏγία από το Ï„Ïέχων θέμα του επεξεÏγαστή"
+
+#~ msgid "Data Type:"
+#~ msgstr "ΤÏπος δεδομένων:"
+
+#~ msgid "Theme File"
+#~ msgstr "Θέμα ΑÏχείου"
+
+#~ msgid "Compiled"
+#~ msgstr "Μεταγλωτισμένες"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "ΑφαίÏεση %d έÏγων από την λίστα;\n"
+#~ "Τα πεÏιεχόμενα των καταλόγων των έÏγων δεν θα Ï„ÏοποποιηθοÏν."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "ΑφαίÏεση έÏγου από την λίστα;\n"
+#~ "Τα πεÏιεχόμενα του καταλόγου του έÏγου δεν θα Ï„ÏοποποιηθοÏν."
+
+#~ msgid "Templates"
+#~ msgstr "ΠÏότυπα"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "ΠÏοσθήκη ανακατεÏθυνσης διαδÏομής"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Δεν είναι δυνατή η εκτέλεση με τον πηγαίο κόμβο."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Σφάλμα κατά την ανάγνωση εικόνας εκκίνησης:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "ΧÏήση Ï€Ïοεπιλεγμένης εικόνας εκκίνησης."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "Ένα AnimationPlayer δεν μποÏεί να κινήσει τον εαυτό του."
@@ -13399,9 +14823,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ "Η Ï„Ïέχουσα σκηνή δεν έχει αποθηκευτεί, αποθηκεÏστε Ï€Ïιν να Ï„Ïέξετε το "
#~ "Ï€ÏόγÏαμμα."
-#~ msgid "Not in resource path."
-#~ msgstr "Δεν υπάÏχει στην διαδÏομή πόÏων."
-
#~ msgid "Revert"
#~ msgstr "ΕπαναφοÏά"
@@ -13508,9 +14929,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "Input"
#~ msgstr "Είσοδος"
-#~ msgid "Properties:"
-#~ msgstr "Ιδιότητες:"
-
#~ msgid "Methods:"
#~ msgstr "Μεθόδοι:"
@@ -13993,10 +15411,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "Splits"
#~ msgstr "ΔιαχωÏισμός διαδÏομής"
-#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Επιλέξτε ένα αντικείμενο ÏÏθμισης Ï€Ïώτα!"
-
#~ msgid "Add Node.."
#~ msgstr "ΠÏοσθήκη κόμβου.."
@@ -14067,9 +15481,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "Public Methods:"
#~ msgstr "Δημόσιες συναÏτήσεις:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Στοιχεία του θέματος GUI"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Στοιχεία του θέματος GUI:"
@@ -14091,9 +15502,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "Match case"
#~ msgstr "Αντιστοίχηση πεζών-κεφαλαίων"
-#~ msgid "Filter: "
-#~ msgstr "ΦίλτÏο: "
-
#~ msgid "Ok"
#~ msgstr "Εντάξει"
@@ -14132,9 +15540,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "Rotate 270 degrees"
#~ msgstr "ΠεÏιστÏοφή 270 μοίÏες"
-#~ msgid "Variable"
-#~ msgstr "Μεταβλητή"
-
#~ msgid "Errors:"
#~ msgstr "Σφάλματα:"
@@ -14222,9 +15627,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "Set Transitions to:"
#~ msgstr "ΟÏισμός μεταβάσεων σε:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Anim Μετονομασία κομματιοÏ"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Anim Αλλαγή παÏεμβολής κομματιοÏ"
@@ -14375,12 +15777,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "StyleBox Preview:"
#~ msgstr "ΠÏοεπισκόπηση StyleBox:"
-#~ msgid "StyleBox"
-#~ msgstr "Κουτί Στυλ"
-
-#~ msgid "Separation:"
-#~ msgstr "ΔιαχωÏισμός:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "ΕπεξεÏγαστής πεÏιοχής υφής"
@@ -14456,12 +15852,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "Δεν βÏέθηκε το project.godot στη διαδÏομή του έÏγου."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "Δεν βÏέθηκε το project.godot στη διαδÏομή του έÏγου."
-
-#~ msgid "Not found!"
-#~ msgstr "Δεν βÏέθηκε!"
-
#~ msgid "Replace By"
#~ msgstr "Αντικατάσταση με"
@@ -14833,9 +16223,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "Ποιότητα συμπίεσης υφής (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "Επιλογές υφής"
-
#~ msgid "Please specify some files!"
#~ msgstr "ΠαÏακαλώ καθοÏίστε κάποια αÏχεία!"
@@ -14992,9 +16379,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "Zoom Set..."
#~ msgstr "ΟÏισμός μεγέθυνσης..."
-#~ msgid "Set a Value"
-#~ msgstr "ΟÏισμός τιμής"
-
#~ msgid "Parse BBCode"
#~ msgstr "Ανάλυση BBCode"
@@ -15121,9 +16505,6 @@ msgstr "Οι σταθεÏές δεν μποÏοÏν να Ï„ÏοποποιηθοÏ
#~ msgid "Instance at Cursor"
#~ msgstr "Στιγμιότυπο στον δÏομέα"
-#~ msgid "Could not instance scene!"
-#~ msgstr "Δεν ήταν δυνατή η δημιουÏγία στιγμιοτÏπου της σκηνής!"
-
#~ msgid "Use Default Light"
#~ msgstr "ΧÏήση Ï€Ïοεπιλεγμέου φωτός"
diff --git a/editor/translations/eo.po b/editor/translations/eo.po
index 0523742303..51c69266cb 100644
--- a/editor/translations/eo.po
+++ b/editor/translations/eo.po
@@ -17,15 +17,15 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2021-07-13 06:13+0000\n"
-"Last-Translator: Wang Tseryui <2251439097@qq.com>\n"
+"PO-Revision-Date: 2021-07-31 19:44+0000\n"
+"Last-Translator: mourning20s <mourning20s@protonmail.com>\n"
"Language-Team: Esperanto <https://hosted.weblate.org/projects/godot-engine/"
"godot/eo/>\n"
"Language: eo\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.7.2-dev\n"
+"X-Generator: Weblate 4.8-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -461,7 +461,7 @@ msgstr "Animado Movi Åœlosilojn"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Clipboard is empty!"
-msgstr ""
+msgstr "La tondujo estas malplena!"
#: editor/animation_track_editor.cpp
msgid "Paste Tracks"
@@ -533,7 +533,8 @@ msgstr "Sekundoj"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -559,7 +560,8 @@ msgstr "Skali Elektaron"
msgid "Scale From Cursor"
msgstr "Skali El Kursoron"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duobligi Elektaron"
@@ -580,6 +582,10 @@ msgid "Go to Previous Step"
msgstr "Iri al AntaÅ­a PaÅo"
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimigi Animadon"
@@ -596,6 +602,11 @@ msgid "Use Bezier Curves"
msgstr "Uzu Bezier-kurbojn"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Alglui trakojn"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Anim. Optimiganto"
@@ -644,7 +655,7 @@ msgid "Select Tracks to Copy"
msgstr "Elekti trakojn por kopii"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -730,12 +741,14 @@ msgid "Toggle Scripts Panel"
msgstr "Baskuli Skriptoj Panelo"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zomi"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -792,11 +805,9 @@ msgid "Add"
msgstr "Aldoni"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -848,6 +859,7 @@ msgstr "Ne povas konekti signalo"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -917,7 +929,8 @@ msgid "Edit..."
msgstr "Redakti..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Iru al metodo"
#: editor/create_dialog.cpp
@@ -932,6 +945,14 @@ msgstr "ÅœanÄu"
msgid "Create New %s"
msgstr "Kreu novan %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Ne rezultoj por \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -953,8 +974,8 @@ msgstr "Serĉo:"
msgid "Matches:"
msgstr "Matĉoj:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1030,19 +1051,23 @@ msgid "Owners Of:"
msgstr "Proprietuloj de:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Forigi selektajn dosierojn el la projekto? (ne malfaro)\n"
"Vi povas trovi la forigajn dosierojn en la sistema rubujo por restaÅ­ri ilin."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"La forigotaj dosieroj bezonas por ke aliaj risurcoj funkciadi.\n"
"Forigu ilin iel? (ne malfaro)\n"
@@ -1090,7 +1115,7 @@ msgstr "Esploranto de orfaj risurcoj"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1215,28 +1240,41 @@ msgstr "Komponantoj"
msgid "Licenses"
msgstr "Permesiloj"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Eraro dum malfermi la pakaĵan dosieron, ne de ZIP formato."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Eraro dum malfermi pakaĵan dosieron (ne estas en ZIP-formo)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (jam ekzistante)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Maldensigas havaĵojn"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "La jenaj dosieroj malplenumis malkompaktigi el la pakaĵo:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Kaj %s pli dosieroj."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Pakaĵo instalis sukcese!"
#: editor/editor_asset_installer.cpp
@@ -1244,16 +1282,13 @@ msgstr "Pakaĵo instalis sukcese!"
msgid "Success!"
msgstr "Sukcese!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Enhavo de pakaĵo:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instali"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Pakaĵa instalilo"
#: editor/editor_audio_buses.cpp
@@ -1318,7 +1353,8 @@ msgid "Bypass"
msgstr "Preterpase"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Busaj agordoj"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1398,7 +1434,7 @@ msgstr "Aldoni Buson"
msgid "Add a new Audio Bus to this layout."
msgstr "Aldonu novan AÅ­dobuson al ĉi tiu aranÄo."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1485,6 +1521,15 @@ msgid "Can't add autoload:"
msgstr "Ne aldoneblas aÅ­toÅargon:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Dosiero ne ekzistas."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Aldoni aÅ­toÅargon"
@@ -1500,16 +1545,17 @@ msgid "Node Name:"
msgstr "Nomo de nodo:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nomo"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Unuopo"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Renomi variablon"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Alglui parametroj"
@@ -1525,7 +1571,7 @@ msgstr "Memoras lokajn ÅanÄojn..."
msgid "Updating scene..."
msgstr "Aktualigas la scenon..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[malplena]"
@@ -1682,8 +1728,49 @@ msgid "Import Dock"
msgstr "Doko de enporto"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "ViÅi profilon '%s'? (ne malfaro)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Aktuala)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1714,15 +1801,18 @@ msgid "Enable Contextual Editor"
msgstr "Åœalti kuntekstan redaktilon"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Åœaltitaj atributoj:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Maletendi ĉiajn atributojn"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+#, fuzzy
+msgid "Main Features:"
msgstr "Åœaltitaj eblecoj:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Åœaltitaj klasoj:"
#: editor/editor_feature_profile.cpp
@@ -1740,25 +1830,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Eraras konservi profilon al dosierindiko: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Malagordi"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Rekomencigi al defaÅ­ltoj"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Aktuala profilo:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Farigi aktuale"
+#, fuzzy
+msgid "Create Profile"
+msgstr "ViÅi profilon"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Nova"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Forigi punkton"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Disponeblaj profiloj:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Farigi aktuale"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Enporti"
@@ -1767,20 +1866,22 @@ msgid "Export"
msgstr "Eksporti"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Disponeblaj profiloj:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Aktuala profilo:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Agordoj de klaso"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Agordoj de klaso:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Nomo de nova profilo:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "ViÅi profilon"
+msgid "New profile name:"
+msgstr "Nomo de nova profilo:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1803,7 +1904,8 @@ msgid "Select Current Folder"
msgstr "Elekti aktualan dosierujon"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Dosiero ekzistas, superskribi?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1857,9 +1959,10 @@ msgid "Open a File or Directory"
msgstr "Malfermi dosieron aÅ­ dosierujon"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Konservi"
@@ -1940,8 +2043,7 @@ msgid "Directories & Files:"
msgstr "Dosierujoj kaj dosieroj:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "AntaÅ­rigardo:"
@@ -2014,7 +2116,7 @@ msgstr "Etosaj atributoj"
msgid "Enumerations"
msgstr "Enumeracioj"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstantoj"
@@ -2103,7 +2205,7 @@ msgstr "Metodo"
msgid "Signal"
msgstr "Signalo"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstanto"
@@ -2119,9 +2221,10 @@ msgstr "Etosa atributo"
msgid "Property:"
msgstr "Atributo:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Agordi"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2136,7 +2239,7 @@ msgid "Copy Selection"
msgstr "Kopii elektaron"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2200,7 +2303,8 @@ msgid "Imported resources can't be saved."
msgstr "Enportitaj risurcoj ne povas konservi."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Bone"
@@ -2422,18 +2526,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Konservi ÅanÄojn al '%s' antaÅ­ fermo?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Konservis %s modifikita(j)n risurco(j)n."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Radika nodo estas necesita por konservi la scenon."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Konservi sceno kiel..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
#, fuzzy
msgid "This operation can't be done without a scene."
msgstr "Ĉi tiu funkciado ne povas fari sen sceno."
@@ -2582,6 +2691,9 @@ msgid ""
"Error loading scene, it must be inside the project path. Use 'Import' to "
"open the scene, then save it inside the project path."
msgstr ""
+"Eraro dum Åargi la scenon, Äi devas esti interne la dosierindikon de "
+"projekton. Uzu 'Enporti' por malfermi la scenon, kiam konservu Äin interne "
+"al la dosierindiko de projekto."
#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
@@ -2631,7 +2743,7 @@ msgstr "Forigi aranÄon"
msgid "Default"
msgstr "DefaÅ­lto"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Montri en dosiersistemo"
@@ -2816,6 +2928,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Eksplorilo da orfaj risurcoj..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Renomi projekton"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Foriri al projekta listo"
@@ -2971,20 +3088,24 @@ msgstr "Mastrumi eksportaj Åablonoj..."
msgid "Help"
msgstr "Helpo"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Enreta dokumentaro"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Malfermi dokumentaron"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Demandoj kaj respondoj"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Raporti cimon"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Sendi rimarkojn pri la dokumentaro"
@@ -2993,7 +3114,8 @@ msgid "Community"
msgstr "Komunumo"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Pri"
#: editor/editor_node.cpp
@@ -3092,6 +3214,15 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Instali el dosiero"
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3119,7 +3250,7 @@ msgstr "Enporti Åablonojn el ZIP-a dosiero"
msgid "Template Package"
msgstr "Åœablonoj"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Eksporti bibliotekon"
@@ -3162,6 +3293,11 @@ msgid "Select"
msgstr "Elekti"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Elekti aktualan dosierujon"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Malfermi 2D-an redaktilon"
@@ -3193,6 +3329,11 @@ msgstr "Avert!"
msgid "No sub-resources found."
msgstr "Ne sub-risurcojn trovis."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Ne sub-risurcojn trovis."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Kreas antaÅ­vidojn de maÅoj"
@@ -3218,33 +3359,34 @@ msgstr "Instalitaj kromprogramoj:"
msgid "Update"
msgstr "Äœisdatigi"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versio:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "AÅ­toro:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Stato:"
+#, fuzzy
+msgid "Author"
+msgstr "AÅ­toroj"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Redakti:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Mezuro:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Tempo kadre (sekundoj)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Meza tempo (sekundoj)"
#: editor/editor_profiler.cpp
@@ -3264,6 +3406,16 @@ msgid "Self"
msgstr "Memo"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Kadro #:"
@@ -3305,14 +3457,6 @@ msgstr "Malvalida RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"La elektinta risurco (%s) ne kongruas ian atenditan tipon por ĉi tiu "
-"atributo (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3336,40 +3480,6 @@ msgid "Pick a Viewport"
msgstr "Elekti Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Nova skripto"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Etendi skripton"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Nova %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Farigi unikan"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Alglui"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Konverti al %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Elektinta nodo ne estas Viewport!"
@@ -3398,6 +3508,49 @@ msgstr "Nova valoro:"
msgid "Add Key/Value Pair"
msgstr "Aldoni Ålosilo/valoro paro"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"La elektinta risurco (%s) ne kongruas ian atenditan tipon por ĉi tiu "
+"atributo (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Farigi unikan"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Alglui"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Konverti al %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Nova %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Nova skripto"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Etendi skripton"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3433,7 +3586,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Ĉu vi forgesis la '_run' metodo?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Premteni stirklavon por rondigi al entjeroj. Premteni majuskligan klavon por "
"pli precizaj ÅanÄoj."
@@ -3456,77 +3610,98 @@ msgid "Import From Node:"
msgstr "Enporti el nodo:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "ReelÅuti"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Malinstali"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Instalita)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Estas neniu dosiero '%s'."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "ElÅuti"
+#, fuzzy
+msgid "Retrieving the mirror list..."
+msgstr "Ricevas spegulojn, bonvolu atendi..."
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "Oficaj eksportaj Åablonoj estas ne haveblaj por programistaj muntoj."
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Manka)"
+msgid "Error requesting URL:"
+msgstr "Eraro dum demandi la URL:"
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Aktuala)"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Konektas al spegulo..."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
-msgstr "Ricevas spegulojn, bonvolu atendi..."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Ne eblas adrestrovi nomon de retejo:"
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Forigi la version '%s' de Åablono?"
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Ne eblas konekti al retejo:"
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Ne eblas malfermi ZIP de eksportaj Åablonoj."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Ne respondo el retejo:"
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Nevalida formo de version.txt en Åablonoj: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
+msgstr "Peto eraris."
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Ne version.txt troviÄis en Åablonoj."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Peto eraris, tro da alidirektoj"
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Eraro dum kreo de dosierindiko por Åablonoj:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Peto eraris."
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Ekstraktas eksportajn Åablonojn"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Enportas:"
+msgid "Cannot remove temporary file:"
+msgstr "Ne eblas forigi provizoran dosieron:"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
+msgstr ""
+"Instalado de Åablonoj eraris.\n"
+"La arkivoj de problemaj Åablonoj eble troviÄas ĉe '%s'."
#: editor/export_template_manager.cpp
msgid "Error getting the list of mirrors."
msgstr "Eraro dum ricevo de la listo de speguloj."
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
msgstr ""
"Eraro dum analizo de la JSON de la spegula listo. Bonvolu raporti tiun "
"problemon!"
#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
msgid ""
"No download links found for this version. Direct download is only available "
"for official releases."
@@ -3535,58 +3710,6 @@ msgstr ""
"disponebla por oficaj eldonoj."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Ne eblas adrestrovi."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Ne eblas konekti."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Ne respondo."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "Demando eraris."
-
-#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Alidirekta iteracio."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Eraris:"
-
-#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "ElÅuto kompleta."
-
-#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr "Ne eblas forigi provizoran dosieron:"
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
-msgstr ""
-"Instalado de Åablonoj eraris.\n"
-"La arkivoj de problemaj Åablonoj eble troviÄas ĉe '%s'."
-
-#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Eraro dum demandi la URL:"
-
-#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Konektas al spegulo..."
-
-#: editor/export_template_manager.cpp
msgid "Disconnected"
msgstr "Malkonektis"
@@ -3629,45 +3752,137 @@ msgid "SSL Handshake Error"
msgstr "SSL-kvitanca eraro"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Ne eblas malfermi ZIP de eksportaj Åablonoj."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Nevalida formo de version.txt en Åablonoj: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Ne version.txt troviÄis en Åablonoj."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Eraro dum kreo de dosierindiko por Åablonoj:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Ekstraktas eksportajn Åablonojn"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Enportas:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Forigi la version '%s' de Åablono?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Malkompaktigas kompilajn fontkodojn por Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Mastrumilo de eksportaj Åablonoj"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Aktuala versio:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Instalintaj versioj:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Malfermi dosieron"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Malinstali"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "ElÅuta eraro"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Official export templates aren't available for development builds."
+msgstr "Oficaj eksportaj Åablonoj estas ne haveblaj por programistaj muntoj."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Instali el dosiero"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Forigi Åablonon"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Enporti Åablonojn el ZIP-a dosiero"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Rezigni"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Elekti Åablonan dosieron"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Ne eblas malfermi ZIP de eksportaj Åablonoj."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Eksportajn Åablonojn de Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Instalintaj versioj:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Mastrumilo de eksportaj Åablonoj"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Malinstali"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "ElÅutilo de Åablonoj"
+msgid "Select Template File"
+msgstr "Elekti Åablonan dosieron"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Godot Export Templates"
+msgstr "Eksportajn Åablonojn de Godot"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
-"Elekti spegulon el listo: (Majuskliga klavo+Alklako: Malfermi en retumilon)"
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3803,29 +4018,62 @@ msgstr "Nova skripto..."
msgid "New Resource..."
msgstr "Nova risurco..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Etendi tuton"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Maletendi tuton"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duobligi..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Serĉi dosierojn"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Lastaj modifitaj"
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Movi al rubujo"
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Lastaj modifitaj"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duobligi..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Renomi..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "AntaÅ­a dosierujo/dosiero"
@@ -3909,10 +4157,6 @@ msgstr "Trovi..."
msgid "Replace..."
msgstr "AnstataÅ­igi..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Rezigni"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Trovi: "
@@ -4137,53 +4381,54 @@ msgid "Failed to load resource."
msgstr "Ne eblas Åargi risurcon."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Etendi ĉiajn atributojn"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Atributoj"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Maletendi ĉiajn atributojn"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Konservi kiel..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Atributoj"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Kopii parametrojn"
+msgid "Make Sub-Resources Unique"
+msgstr "Subrisurcojn unikigi"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Redakti risurcan tondujon"
+msgid "Create a new resource in memory and edit it."
+msgstr "Krei novan risurcon en memoro kaj redakti Äin."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Kopii risurcon"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Åœargi ekzistantan risurcon el disko kaj redakti Äin."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Enkonstruigi"
+msgid "Save the currently edited resource."
+msgstr "Konservi la aktuale redaktantan risurcon."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Subrisurcojn unikigi"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Konservi kiel..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Malfermi en helpo"
+msgid "Extra resource options."
+msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Krei novan risurcon en memoro kaj redakti Äin."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Redakti risurcan tondujon"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Åœargi ekzistantan risurcon el disko kaj redakti Äin."
+msgid "Copy Resource"
+msgstr "Kopii risurcon"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Konservi la aktuale redaktantan risurcon."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Enkonstruigi"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4198,20 +4443,30 @@ msgid "History of recently edited objects."
msgstr "Historio de lastatempe redaktintaj objektoj."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Atributoj de la objekto."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Malfermi dokumentaron"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Malfermi dokumentaron"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtri atributojn"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Atributoj de la objekto."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "ÅœanÄoj eble perdiÄos!"
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
-msgstr ""
+msgstr "Aro de plur-nodo"
#: editor/node_dock.cpp
msgid "Select a single node to edit its signals and groups."
@@ -4233,6 +4488,15 @@ msgstr "Nomo de kromprogramon:"
msgid "Subfolder:"
msgstr "Subdosierujo:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "AÅ­toro:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versio:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Lingvo:"
@@ -4439,7 +4703,8 @@ msgid "Blend:"
msgstr "Mikso:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parametro ÅanÄiÄis"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4661,6 +4926,11 @@ msgid "Animation"
msgstr "Animacio"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Nova"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Redakti transpasojn..."
@@ -5003,10 +5273,18 @@ msgid "View Files"
msgstr "Vidi dosierojn"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "ElÅuti"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Konekta eraro, bonvolu provi ree."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Ne eblas konekti."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Ne eblas konekti al retejo:"
@@ -5015,16 +5293,20 @@ msgid "No response from host:"
msgstr "Ne respondo el retejo:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Ne respondo."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Ne eblas adrestrovi nomon de retejo:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Peto eraris, revena kodo:"
+msgid "Can't resolve."
+msgstr "Ne eblas adrestrovi."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Peto eraris."
+msgid "Request failed, return code:"
+msgstr "Peto eraris, revena kodo:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5051,6 +5333,10 @@ msgid "Timeout."
msgstr "Tempolimo."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Eraris:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Malbona haketaĵo el elÅutaĵo, supozas dosieron esti tuÅaĉita."
@@ -5151,8 +5437,12 @@ msgid "All"
msgstr "Tuta"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Ne rezultoj por \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5194,6 +5484,10 @@ msgstr "Åœargas..."
msgid "Assets ZIP File"
msgstr "ZIP-dosiero de havaĵoj"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5204,8 +5498,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5345,16 +5639,20 @@ msgid ""
"Children of containers have their anchors and margins values overridden by "
"their parent."
msgstr ""
+"La infanoj de ujoj iÄas la valorojn de iliaj ankroj kaj marÄenoj redefini de "
+"ilia patro."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Presets for the anchors and margins values of a Control node."
-msgstr ""
+msgstr "AntaÅ­agordoj por la valoroj de la ankroj de marÄenoj de Control-nodo."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"When active, moving Control nodes changes their anchors instead of their "
"margins."
msgstr ""
+"Kiam aktive, movado de Control-nodoj ÅanÄas iliajn ankrojn anstataÅ­ iliajn "
+"marÄenojn."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Top Left"
@@ -5439,9 +5737,10 @@ msgstr "ÅœanÄi ankrojn"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Transpaso de la luda fotilo\n"
"Transpasi ludan fotilon kun viduja fotilo de la redaktilo."
@@ -5449,11 +5748,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Transpaso de la luda fotilo\n"
-"Ne luda ekzemplo ruliÄas."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5508,6 +5806,7 @@ msgstr ""
"ilia patro."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5519,22 +5818,32 @@ msgid "Select Mode"
msgstr "Elektada reÄimo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Åœovado: Rotacii"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Forigi elektitan nodon aÅ­ transpason."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt-klavo+Åovado: Movi"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Forigi elektitan nodon aÅ­ transpason."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Premi 'V' por ÅanÄi pivoton, 'Majuskliga klavo+V' por Åovi pivoton (dum "
-"movado)."
+"Vidigi liston de ĉiuj objektoj al la alklakita pozicio.\n"
+"(samo kiel Alt-klavo+dekstra musbutono en elektada reÄimo)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt-klavo+dekstra musbutono: Elektado el profunda listo"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5654,28 +5963,28 @@ msgstr "MalÅlosi la elektitan objekton (movebla)."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Makes sure the object's children are not selectable."
-msgstr ""
+msgstr "Certigu la infanojn de la objekto ne estas elekteblajn."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Restores the object's children's ability to be selected."
-msgstr ""
+msgstr "RestaÅ­ras la elekteblecon de la infanoj de la objekto."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Skeleton Options"
-msgstr ""
+msgstr "Opcioj de ostaro"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Bones"
-msgstr ""
+msgstr "Montri ostojn"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Custom Bone(s) from Node(s)"
-msgstr ""
+msgstr "Krei propra(j)n osto(j)n el nodo(j)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear Custom Bones"
-msgstr ""
+msgstr "Vakigi proprajn ostojn"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5684,7 +5993,7 @@ msgstr "Vido"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Always Show Grid"
-msgstr ""
+msgstr "Ĉiam montri kradon"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Helpers"
@@ -5692,51 +6001,51 @@ msgstr "Montri helpantoj"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Rulers"
-msgstr ""
+msgstr "Montri mezurilojn"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Guides"
-msgstr ""
+msgstr "Montri gvidilojn"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Origin"
-msgstr ""
+msgstr "Montri originon"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Viewport"
-msgstr ""
+msgstr "Montri vidujon"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Show Group And Lock Icons"
-msgstr ""
+msgstr "Montri grupan kaj Ålosilan piktogramojn"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
-msgstr ""
+msgstr "Centrigi elekton"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Frame Selection"
-msgstr ""
+msgstr "Enkadrigi elekton"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Preview Canvas Scale"
-msgstr ""
+msgstr "AntaÅ­vidi la skalon de kanvaso"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
-msgstr ""
+msgstr "Translacia masko por enmeti Ålosilojn."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Rotation mask for inserting keys."
-msgstr ""
+msgstr "Rotacia masko por enmeti Ålosilojn."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Scale mask for inserting keys."
-msgstr ""
+msgstr "Skala masko por enmeti Ålosilojn."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert keys (based on mask)."
-msgstr ""
+msgstr "Enmeti Ålosilojn (surbaze de masko)."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -5745,346 +6054,411 @@ msgid ""
"Keys are only added to existing tracks, no new tracks will be created.\n"
"Keys must be inserted manually for the first time."
msgstr ""
+"AÅ­tomate enmeti Ålosilojn kiam objektoj translaciiÄi, rotaciiÄi aÅ­ skaliÄi "
+"(surbaze de masko).\n"
+"Åœlosiloj nur aldoniÄus en ekzistantaj trakoj, ne novaj trakoj kreiÄos.\n"
+"Åœlosiloj devas enmetiÄi permane por la unua fojo."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Auto Insert Key"
-msgstr ""
+msgstr "AÅ­tomate enmeti Ålosilon"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Animation Key and Pose Options"
-msgstr "Animado loneco (sekundoj)"
+msgstr "Opcioj por Ålosilo kaj pozo de animado"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Key (Existing Tracks)"
-msgstr ""
+msgstr "Enmeti Ålosilon (ekzistantaj trakoj)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Copy Pose"
-msgstr ""
+msgstr "Kopii la pozon"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Clear Pose"
-msgstr ""
+msgstr "Vakigi la pozon"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Aldoni nodon"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Ekzemplodoni infanan scenon"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
-msgstr ""
+msgstr "Obligi kradpaÅon per 2"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Divide grid step by 2"
-msgstr ""
+msgstr "Dividi kradpaÅon per 2"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Pan View"
+msgstr "Panoramada vido"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Add %s"
+msgid "Zoom to 6.25%"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Adding %s..."
+msgid "Zoom to 12.5%"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Cannot instantiate multiple nodes without root."
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Malzomi"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Malzomi"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Malzomi"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Malzomi"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Malzomi"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Malzomi"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add %s"
+msgstr "Aldoni %s"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Adding %s..."
+msgstr "Aldonas %s..."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Cannot instantiate multiple nodes without root."
+msgstr "Ne eblas generi plurajn nodojn sen radiko."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
-msgstr ""
+msgstr "Krei nodon"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
-msgstr ""
+msgstr "Eraro dum generi scenon el %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Change Default Type"
-msgstr ""
+msgstr "ÅœanÄi defaÅ­ltan tipon"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
"Drag & drop + Alt : Change node type"
msgstr ""
+"Åœovi kaj demeti + Majuskliga klavo : Aldoni nodon kiel frato\n"
+"Åœovi kaj demeti + Alt-klavo : ÅœanÄi la tipon de nodo"
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Polygon3D"
-msgstr ""
+msgstr "Krei Polygon3D"
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Edit Poly"
-msgstr ""
+msgstr "Redakti plurlateron"
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Edit Poly (Remove Point)"
-msgstr ""
+msgstr "Redakti plurlateron (forigi punkton)"
#: editor/plugins/collision_shape_2d_editor_plugin.cpp
msgid "Set Handle"
-msgstr ""
+msgstr "Defini stirilon"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
-msgstr ""
+msgstr "Åœargi emisian maskon"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/cpu_particles_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Restart"
-msgstr ""
+msgstr "Rekomencigi"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
-msgstr ""
+msgstr "Vakigi emisian maskon"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Particles"
-msgstr ""
+msgstr "Partikloj"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
-msgstr ""
+msgstr "Nombrado de generintaj punktoj:"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Emission Mask"
-msgstr ""
+msgstr "Emisia masko"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Solid Pixels"
-msgstr ""
+msgstr "Solidaj rastumeroj"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Border Pixels"
-msgstr ""
+msgstr "Rastumeroj de bordero"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Directed Border Pixels"
-msgstr "Dosierujoj kaj dosieroj:"
+msgstr "Rastumeroj de direktinta bordero"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Capture from Pixel"
-msgstr ""
+msgstr "Kapti el rastumero"
#: editor/plugins/cpu_particles_2d_editor_plugin.cpp
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Emission Colors"
-msgstr ""
+msgstr "Emisiaj koloroj"
#: editor/plugins/cpu_particles_editor_plugin.cpp
msgid "CPUParticles"
-msgstr ""
+msgstr "CPU-partikloj"
#: editor/plugins/cpu_particles_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emission Points From Mesh"
-msgstr ""
+msgstr "Krei emisiajn punktojn el la maÅo"
#: editor/plugins/cpu_particles_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Create Emission Points From Node"
-msgstr ""
+msgstr "Krei emisiajn punktojn el la nodo"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat 0"
-msgstr ""
+msgstr "Konstanta 0"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Flat 1"
-msgstr ""
+msgstr "Konstanta 1"
#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
msgid "Ease In"
-msgstr ""
+msgstr "Enfacilige"
#: editor/plugins/curve_editor_plugin.cpp editor/property_editor.cpp
msgid "Ease Out"
-msgstr ""
+msgstr "Elfacilige"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Smoothstep"
-msgstr ""
+msgstr "Glat-paÅe"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
-msgstr ""
+msgstr "ÅœanÄi punkton de kurbo"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Tangent"
-msgstr ""
+msgstr "ÅœanÄi tanÄanton de kurbo"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load Curve Preset"
-msgstr ""
+msgstr "Åœargi antaÅ­agordon de kurbo"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Add Point"
-msgstr ""
+msgstr "Aldoni punkton"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove Point"
-msgstr ""
+msgstr "Forigi punkton"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Left Linear"
-msgstr ""
+msgstr "Lineara maldekstro"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Right Linear"
-msgstr ""
+msgstr "Lineara dekstro"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load Preset"
-msgstr ""
+msgstr "Åœargi antaÅ­agordon"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Remove Curve Point"
-msgstr ""
+msgstr "Forigi punkton el kurbo"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "Baskuli linearan tanÄanton de kurbo"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "Tenu majuskligan klavon por redakti tanÄantojn unuope"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Right click to add point"
-msgstr ""
+msgstr "Maldekstra-alklaku por aldoni punkton"
#: editor/plugins/gi_probe_editor_plugin.cpp
msgid "Bake GI Probe"
-msgstr ""
+msgstr "Baki malloka-iluminada (GI) sondilon"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Gradient Edited"
-msgstr ""
+msgstr "Gradienton redaktis"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item %d"
-msgstr ""
+msgstr "Elemento %d"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Items"
-msgstr ""
+msgstr "Elementoj"
#: editor/plugins/item_list_editor_plugin.cpp
msgid "Item List Editor"
-msgstr ""
+msgstr "Redaktilo de listo de elementoj"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
-msgstr ""
+msgstr "Krei okludan plurlateron"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh is empty!"
-msgstr ""
+msgstr "MaÅo estas malplena!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Couldn't create a Trimesh collision shape."
-msgstr "Ne povis krei dosierujon."
+msgstr "Ne eblis krei triangulo-maÅan kolizifiguron."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Static Trimesh Body"
-msgstr ""
+msgstr "Krei statikan triangulo-maÅan korpon"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "This doesn't work on scene root!"
-msgstr ""
+msgstr "Tio ĉi ne funkcias nur radiko de sceno!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Shape"
-msgstr ""
+msgstr "Krei triangulo-maÅan statikan figuron"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Can't create a single convex collision shape for the scene root."
-msgstr ""
+msgstr "Ne eblas krei unuopan konveksan kolizifiguron por la radiko de sceno."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Couldn't create a single convex collision shape."
-msgstr ""
+msgstr "Ne eblas krei unuopan konveksan kolizifiguron."
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Krei unuopan konveksan figuron"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
-msgstr ""
+msgstr "Krei unuopan konveksan figuron"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Can't create multiple convex collision shapes for the scene root."
msgstr ""
+"Ne eblas krei plurajn konveksajn kolizifigurojn por la radiko de sceno."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#, fuzzy
msgid "Couldn't create any collision shapes."
-msgstr "Ne povis krei dosierujon."
+msgstr "Ne eblis krei iajn kolizifigurojn."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Shapes"
-msgstr ""
+msgstr "Krei plurajn konveksajn figurojn"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Navigation Mesh"
-msgstr ""
+msgstr "Krei navigan maÅon"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Contained Mesh is not of type ArrayMesh."
-msgstr ""
+msgstr "La enhavita maÅo ne estas de tipo ArrayMesh (tabelo-maÅo)."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Unwrap failed, mesh may not be manifold?"
-msgstr ""
+msgstr "UV-malvolvado malsukcesis, maÅo eble ne estas sternaĵa?"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "No mesh to debug."
-msgstr ""
+msgstr "Ne maÅo por sencimigo."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
-msgstr ""
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
+msgstr "Modelo ne havas UV en tia ĉi tavolo"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "MeshInstance lacks a Mesh!"
-msgstr ""
+msgstr "MeshInstance malhavas maÅon!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh has not surface to create outlines from!"
-msgstr ""
+msgstr "MaÅo ne havas surfacon por krei konturojn el!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh primitive type is not PRIMITIVE_TRIANGLES!"
-msgstr ""
+msgstr "Tipo de maÅo-primitivo ne estas PRIMITIVE_TRIANGLES!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Could not create outline!"
-msgstr ""
+msgstr "Ne eblis krei konturon!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline"
-msgstr ""
+msgstr "Krei konturon"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Mesh"
-msgstr ""
+msgstr "MaÅo"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
-msgstr ""
+msgstr "Krei triangulo-maÅan statika-korpon"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
@@ -6092,40 +6466,63 @@ msgid ""
"automatically.\n"
"This is the most accurate (but slowest) option for collision detection."
msgstr ""
+"Kreas StaticBody (statika-korpon) kaj atributi plurlatero-bazitan "
+"kolizifiguron al Äi aÅ­tomate.\n"
+"Tio ĉi estas la plej ekzakta (sed plej malrapida) opcio por kolizia malkovro."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Collision Sibling"
-msgstr ""
+msgstr "Krei fratan triangulo-maÅan kolizifiguron"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
"This is the most accurate (but slowest) option for collision detection."
msgstr ""
+"Kreas plurlatero-bazitan CollisionShape (kolizifiguron).\n"
+"Tio ĉi estas la plej ekzakta (sed plej malrapida) opcio por kolizia malkovro."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Collision Sibling"
-msgstr ""
+msgstr "Krei unuopan fratan konveksan kolizifiguron"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a single convex collision shape.\n"
"This is the fastest (but least accurate) option for collision detection."
msgstr ""
+"Kreas unuopan konveksan CollisionShape (kolizifiguron).\n"
+"Tio ĉi estas la plej rapida (sed malplej ekzakta) opcio por kolizia malkovro."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Create Multiple Convex Collision Siblings"
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Krei unuopan fratan konveksan kolizifiguron"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Multiple Convex Collision Siblings"
+msgstr "Krei plurajn fratajn konveksajn kolizifigurojn"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
+"Kreas plurlatero-bazitan CollisionShape (kolizifiguron).\n"
+"Tio ĉi estas la plej ekzakta (sed plej malrapida) opcio por kolizia malkovro."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh..."
-msgstr ""
+msgstr "Krei konturan maÅon..."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
@@ -6134,34 +6531,38 @@ msgid ""
"This can be used instead of the SpatialMaterial Grow property when using "
"that property isn't possible."
msgstr ""
+"Krei statikan konturan maÅon. La normaloj de la kontura maÅo renversiÄos "
+"aÅ­tomate.\n"
+"Tio ĉi eble uzus anstataÅ­ la atributon Grow (pliiÄo) de SpatialMaterial "
+"(spaca-materialo) kiam uzi tian atributon ne eblus."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "View UV1"
-msgstr ""
+msgstr "Montri UV1"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "View UV2"
-msgstr ""
+msgstr "Montri UV2"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Unwrap UV2 for Lightmap/AO"
-msgstr ""
+msgstr "Malvolvi UV2 por lummapo/ĉirkaŭa okludo"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
-msgstr ""
+msgstr "Krei konturon maÅon"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Outline Size:"
-msgstr ""
+msgstr "Grando de konturo:"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "UV Channel Debug"
-msgstr ""
+msgstr "Sencimigo de UV-kanalo"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid "Remove item %d?"
-msgstr ""
+msgstr "Forigi elementon %d?"
#: editor/plugins/mesh_library_editor_plugin.cpp
msgid ""
@@ -6175,7 +6576,6 @@ msgid "Mesh Library"
msgstr "MaÅo biblioteko..."
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6448,7 +6848,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6753,6 +7154,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Nombrado de generintaj punktoj:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Nombrado de generintaj punktoj:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6956,7 +7375,7 @@ msgstr "Ruli"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Serĉo"
@@ -6987,6 +7406,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Enreta dokumentaro"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Malfermi enretan dokumentaron de Godot."
@@ -7110,8 +7534,8 @@ msgstr "Iri al"
msgid "Cut"
msgstr "Eltondi"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Elekti tutan"
@@ -7144,10 +7568,6 @@ msgid "Unfold All Lines"
msgstr "Malfaldi ĉiujn liniojn"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7300,6 +7720,28 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Rotaciada reÄimo"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Tradukoj"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Skalo:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7320,39 +7762,49 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr ""
+#, fuzzy
+msgid "Size:"
+msgstr "Grando: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Parametro ÅanÄiÄis"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "ÅœanÄu"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "ÅœanÄu"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Alvokoj"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "Partikloj"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7508,6 +7960,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Baskuli favorata"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7523,6 +7980,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Konverti al %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7542,21 +8004,15 @@ msgstr ""
"rada\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
-msgstr ""
+#, fuzzy
+msgid "Snap Nodes to Floor"
+msgstr "Kapti al ankro de nodo"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Uzi lokan spacon"
@@ -7565,6 +8021,10 @@ msgid "Use Snap"
msgstr "Uzi kapton krade"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr ""
@@ -7658,6 +8118,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7947,11 +8411,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7972,164 +8431,585 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Versio:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+#, fuzzy
+msgid "Colors"
+msgstr "Elekti koloron"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Icons"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Styleboxes"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+#, fuzzy
+msgid "No colors found."
+msgstr "Ne sub-risurcojn trovis."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstantoj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Nur konstantoj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+#, fuzzy
+msgid "No fonts found."
+msgstr "Ne sub-risurcojn trovis."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No icons found."
+msgstr "Ne sub-risurcojn trovis."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Ne sub-risurcojn trovis."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "(Re)enportas havaĵoj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Eliri la editilo?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analizas"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtriloj:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Elektu nodon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select all visible icon items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Deselect all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible stylebox items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+#, fuzzy
+msgid "Collapse types."
+msgstr "Maletendi tuton"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Etendi tuton"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Elekti Åablonan dosieron"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Elekti metodon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Elekti tutan"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+#, fuzzy
+msgid "Import Selected"
+msgstr "Enporti scenon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Forigi elementon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Forigi elementon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Forigi elementon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Forigi elementon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Forigi elementon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Forigi elementon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Aldoni al favoritaj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konstanto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Aldoni punkton"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Aldoni punkton"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Renomi nodon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Renomi nodon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Renomi nodon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Malvalida dosiero, ne estas aranÄo de aÅ­dia buso."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Mastrumi eksportaj Åablonoj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Redakti filtrojn"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Tipo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Tipo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Add StyleBox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Forigi elementon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Forigi elementon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Forigi elementon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nomo de nodo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Enporti kiel:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "DefaÅ­lto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Redaktilo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Serĉi anstataŭiga risurco:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Agordi kapton"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Renomi staple"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Redifinoj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Tipo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Nomo de nodo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Åœargi defaÅ­lton"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Redifinoj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Mastrumi eksportaj Åablonoj..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "AntaÅ­rigardo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "DefaÅ­lto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Malfari scenon"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Malvalida dosiero, ne estas aranÄo de aÅ­dia buso."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8299,6 +9179,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8624,11 +9508,6 @@ msgid "Commit Changes"
msgstr "ÅœanÄu"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9448,8 +10327,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "Aldoni mallokan atributon"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9563,7 +10443,7 @@ msgid "Script"
msgstr "Skripto"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9571,7 +10451,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9579,11 +10459,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9657,7 +10537,8 @@ msgid "Imported Project"
msgstr "Enportita projekto"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Nevalida nomo de projekto."
#: editor/project_manager.cpp
@@ -9693,6 +10574,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Ne eblas krei project.godot en projekta dosierindiko."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Eraro dum malfermi la pakaĵan dosieron, ne de ZIP formato."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "La jenaj dosieroj malplenumis malkompaktigi el la pakaĵo:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Pakaĵo instalis sukcese!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Renomi projekton"
@@ -9865,15 +10758,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9900,7 +10789,8 @@ msgid "Project Manager"
msgstr "Mastrumilo de Projektoj"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projektoj"
#: editor/project_manager.cpp
@@ -9912,10 +10802,25 @@ msgid "Last Modified"
msgstr "Lastaj modifitaj"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Projekto"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Renomi projekton"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Esplori"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projektoj"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Elektu dosierujo por esploro"
@@ -9924,18 +10829,41 @@ msgid "New Project"
msgstr "Nova projekto"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Enportita projekto"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Renomi projekton"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Forigi mankan"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Åœablonoj"
+msgid "About"
+msgstr "Pri"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Biblioteko de havaĵoj"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Rekomenci nun"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Ne eblas ruli projekton"
@@ -9949,8 +10877,13 @@ msgstr ""
"havaĵoj?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtri atributojn"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9960,6 +10893,10 @@ msgid "Key "
msgstr "Klavo "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Butono de stirstango"
@@ -10003,6 +10940,10 @@ msgstr "Ĉiuj aparatoj"
msgid "Device"
msgstr "Aparato"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Premi klavon..."
@@ -10142,7 +11083,8 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Aldoni tradukon"
#: editor/project_settings_editor.cpp
@@ -10150,11 +11092,11 @@ msgid "Remove Translation"
msgstr "Forigi tradukon"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Aldoni dosierindikon de remapo"
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10422,6 +11364,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10589,11 +11535,29 @@ msgid "Delete node \"%s\"?"
msgstr "Forigi Åœlosilo(j)n"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10649,6 +11613,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Alligi Skripto"
@@ -10696,10 +11664,6 @@ msgid "Load As Placeholder"
msgstr "Åœargi kiel lokokupilo"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Malfermi dokumentaron"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10990,6 +11954,12 @@ msgstr ""
"ekstera redaktilo."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Klasa nomo:"
@@ -11058,6 +12028,10 @@ msgid "Copy Error"
msgstr "Kopii eraro"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Videomemoro"
@@ -11342,6 +12316,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Eksporti maÅajn bibliotekon"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Eksporti..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11383,6 +12367,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Enkadrigi elekton"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11626,6 +12615,16 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "ÅœanÄi tipon"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "ÅœanÄi nomon de animacio:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11737,6 +12736,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Aldoni nodon"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11967,10 +12971,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12000,6 +13000,40 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Eksporti..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Malinstali"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Åœargas, bonvolu atendi..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Ne eble komencas subprocezon!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Rulas propran skripton..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Ne povis krei dosierujon."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12096,6 +13130,46 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Skanas dosierojn,\n"
+"Bonvolu atendi..."
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Aldonas %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12108,6 +13182,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12122,6 +13200,20 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Ne eblas redakti project.godot en projekta dosierindiko."
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12141,11 +13233,53 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Enhavo de pakaĵo:"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Konektas..."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Aldonas %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Ne eble komencas subprocezon!"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12174,10 +13308,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr ""
@@ -12186,15 +13316,47 @@ msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Ne povis krei dosierujon."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "Ne povis krei dosierujon."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Ne povis krei dosierujon."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Eraras konservi TileSet!"
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12543,6 +13705,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12612,12 +13781,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12666,6 +13887,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12815,21 +14040,132 @@ msgid "Invalid comparison function for that type."
msgstr "Nevalida fonto por ombrigilo."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Konstantoj ne povas esti modifitaj."
+#~ msgid "Singleton"
+#~ msgstr "Unuopo"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "ViÅi profilon '%s'? (ne malfaro)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Åœaltitaj atributoj:"
+
+#~ msgid "Unset"
+#~ msgstr "Malagordi"
+
+#~ msgid "Class Options"
+#~ msgstr "Agordoj de klaso"
+
+#~ msgid "Set"
+#~ msgstr "Agordi"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Konservis %s modifikita(j)n risurco(j)n."
+
+#~ msgid "Q&A"
+#~ msgstr "Demandoj kaj respondoj"
+
+#~ msgid "Status:"
+#~ msgstr "Stato:"
+
+#~ msgid "Edit:"
+#~ msgstr "Redakti:"
+
+#~ msgid "Redownload"
+#~ msgstr "ReelÅuti"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Instalita)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Manka)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Demando eraris."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Alidirekta iteracio."
+
+#~ msgid "Download Complete."
+#~ msgstr "ElÅuto kompleta."
+
+#~ msgid "Remove Template"
+#~ msgstr "Forigi Åablonon"
+
+#~ msgid "Download Templates"
+#~ msgstr "ElÅutilo de Åablonoj"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr ""
+#~ "Elekti spegulon el listo: (Majuskliga klavo+Alklako: Malfermi en "
+#~ "retumilon)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Movi al rubujo"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Etendi ĉiajn atributojn"
+
+#~ msgid "Copy Params"
+#~ msgstr "Kopii parametrojn"
+
+#~ msgid "Open in Help"
+#~ msgstr "Malfermi en helpo"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Transpaso de la luda fotilo\n"
+#~ "Ne luda ekzemplo ruliÄas."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Åœovado: Rotacii"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Premi 'V' por ÅanÄi pivoton, 'Majuskliga klavo+V' por Åovi pivoton (dum "
+#~ "movado)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt-klavo+dekstra musbutono: Elektado el profunda listo"
+
+#~ msgid "Templates"
+#~ msgstr "Åœablonoj"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Aldoni dosierindikon de remapo"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "Animado legilo ne volas animi si mem, nur aliajn ludantojn."
@@ -12870,9 +14206,6 @@ msgstr "Konstantoj ne povas esti modifitaj."
#~ msgid "This action cannot be undone. Revert anyway?"
#~ msgstr "Tiun ĉi agon ne povos malfari. Certe daŭrigi?"
-#~ msgid "Revert Scene"
-#~ msgstr "Malfari scenon"
-
#, fuzzy
#~ msgid "Help improve the Godot documentation by giving feedback."
#~ msgstr "Helpi plibonigi la Godotan dokumentadon per doni reagon."
diff --git a/editor/translations/es.po b/editor/translations/es.po
index 5953536c60..6f0b9cd14f 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -72,8 +72,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-07-05 21:41+0000\n"
-"Last-Translator: Erick Figueroa <querecuto@hotmail.com>\n"
+"PO-Revision-Date: 2021-07-29 02:33+0000\n"
+"Last-Translator: Javier Ocampos <xavier.ocampos@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
"Language: es\n"
@@ -81,7 +81,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.8-dev\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -596,7 +596,8 @@ msgstr "Segundos"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -622,7 +623,8 @@ msgstr "Escalar Selección"
msgid "Scale From Cursor"
msgstr "Escalar Desde Cursor"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplicar Selección"
@@ -643,6 +645,11 @@ msgid "Go to Previous Step"
msgstr "Ir al Paso Anterior"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Resetear"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimizar Animación"
@@ -659,6 +666,11 @@ msgid "Use Bezier Curves"
msgstr "Usar Curvas Bezier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Pegar Pistas"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Optimizar animación"
@@ -707,7 +719,7 @@ msgid "Select Tracks to Copy"
msgstr "Selecciona las Pistas a Copiar"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -793,12 +805,14 @@ msgid "Toggle Scripts Panel"
msgstr "Act./Desact. Panel de Scripts"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Acercar Zoom"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -855,11 +869,9 @@ msgid "Add"
msgstr "Añadir"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -911,6 +923,7 @@ msgstr "No se puede conectar la señal"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -982,7 +995,8 @@ msgid "Edit..."
msgstr "Editar..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Ir Al Método"
#: editor/create_dialog.cpp
@@ -997,6 +1011,14 @@ msgstr "Cambiar"
msgid "Create New %s"
msgstr "Crear Nuevo %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "No hay resultados para \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -1018,8 +1040,8 @@ msgstr "Buscar:"
msgid "Matches:"
msgstr "Coincidencias:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1095,20 +1117,24 @@ msgid "Owners Of:"
msgstr "Propietarios De:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"¿Eliminar los archivos seleccionados del proyecto? (irreversible)\n"
"Puedes encontrar los archivos eliminados en la papelera de reciclaje del "
"sistema para restaurarlos."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Otros recursos necesitan los archivos que estás intentando quitar para "
"funcionar.\n"
@@ -1158,7 +1184,7 @@ msgstr "Explorador de Recursos Huérfanos"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1205,7 +1231,7 @@ msgstr "Desarrollador Principal"
#. you do not have to keep it in your translation.
#: editor/editor_about.cpp
msgid "Project Manager "
-msgstr "Gestor del Proyecto "
+msgstr "Administrador de Proyectos "
#: editor/editor_about.cpp
msgid "Developers"
@@ -1283,28 +1309,41 @@ msgstr "Componentes"
msgid "Licenses"
msgstr "Licencias"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Error al abrir el archivo comprimido, no está en formato ZIP."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Error al abrir el archivo del paquete (no está en formato ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Ya existe)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Descomprimiendo Assets"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Los siguientes archivos no se pudieron extraer del paquete:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Y %d archivos más."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "¡Paquete instalado con éxito!"
#: editor/editor_asset_installer.cpp
@@ -1312,16 +1351,13 @@ msgstr "¡Paquete instalado con éxito!"
msgid "Success!"
msgstr "¡Éxito!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Contenido del Paquete:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instalar"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Instalador de paquetes"
#: editor/editor_audio_buses.cpp
@@ -1385,7 +1421,8 @@ msgid "Bypass"
msgstr "Omitir"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Opciones de Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1465,7 +1502,7 @@ msgstr "Añadir Bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Añade un nuevo Bus de Audio a este layout."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1552,6 +1589,15 @@ msgid "Can't add autoload:"
msgstr "No se puede añadir un autoload:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "El archivo no existe."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Añadir AutoLoad"
@@ -1567,16 +1613,17 @@ msgid "Node Name:"
msgstr "Nombre del Nodo:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nombre"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Variable"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Pegar Parámetros"
@@ -1592,7 +1639,7 @@ msgstr "Guardando cambios locales..."
msgid "Updating scene..."
msgstr "Actualizando escena..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[vacío]"
@@ -1750,8 +1797,49 @@ msgid "Import Dock"
msgstr "Importación"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "¿Borrar perfil '%s'? (no se puede deshacer)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Actual)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1783,15 +1871,18 @@ msgid "Enable Contextual Editor"
msgstr "Activar el Editor Contextual"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Propiedades Activadas:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Propiedades:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Características Activadas:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Características"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Clases Activadas:"
#: editor/editor_feature_profile.cpp
@@ -1812,25 +1903,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Error al guardar el perfil en la ruta: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Desactivar"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Restablecer Valores por Defecto"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Perfil Actual:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Hacer Actual"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Borrar Perfil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Nuevo"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Eliminar Tile"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Perfiles Disponibles:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Hacer Actual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importar"
@@ -1839,20 +1939,22 @@ msgid "Export"
msgstr "Exportar"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Perfiles Disponibles:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Perfil Actual:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Opciones de Clases"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Opciones de textura"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Nuevo nombre de perfil:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Borrar Perfil"
+msgid "New profile name:"
+msgstr "Nuevo nombre de perfil:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1875,7 +1977,8 @@ msgid "Select Current Folder"
msgstr "Seleccionar Carpeta Actual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "El archivo ya existe ¿Quieres sobreescribirlo?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1929,9 +2032,10 @@ msgid "Open a File or Directory"
msgstr "Abrir un archivo o directorio"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Guardar"
@@ -2012,8 +2116,7 @@ msgid "Directories & Files:"
msgstr "Directorios y Archivos:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Vista Previa:"
@@ -2086,7 +2189,7 @@ msgstr "Propiedades de Temas"
msgid "Enumerations"
msgstr "Enumeraciones"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Constantes"
@@ -2175,7 +2278,7 @@ msgstr "Método"
msgid "Signal"
msgstr "Señal"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Constante"
@@ -2191,9 +2294,10 @@ msgstr "Propiedades del Tema"
msgid "Property:"
msgstr "Propiedad:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Establecer"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Establecer %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2208,7 +2312,7 @@ msgid "Copy Selection"
msgstr "Copiar Selección"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2272,7 +2376,8 @@ msgid "Imported resources can't be saved."
msgstr "Los recursos importados no se pueden guardar."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Aceptar"
@@ -2495,18 +2600,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "¿Guardar cambios de '%s' antes de cerrar?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Guardado %s recurso(s) modificado(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Se necesita un nodo raíz para guardar la escena."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Guardar Escena Como..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Esta operación no puede realizarse sin una escena."
@@ -2708,7 +2818,7 @@ msgstr "Eliminar Layout"
msgid "Default"
msgstr "Predeterminado"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Mostrar en Sistema de Archivos"
@@ -2889,6 +2999,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Explorador de Recursos Huérfanos..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Renombrar Proyecto"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Salir al Listado de Proyectos"
@@ -3047,20 +3162,25 @@ msgstr "Administrar Plantillas de Exportación..."
msgid "Help"
msgstr "Ayuda"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Documentación Online"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Abrir Documentación"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Preguntas y respuestas"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Reportar un Bug"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "Establecer valor"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Enviar Feedback de la Documentación"
@@ -3069,7 +3189,8 @@ msgid "Community"
msgstr "Comunidad"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Acerca de"
#: editor/editor_node.cpp
@@ -3078,7 +3199,7 @@ msgstr "Apoyar el desarrollo de Godot"
#: editor/editor_node.cpp
msgid "Play the project."
-msgstr "Reproducir el proyecto."
+msgstr "Ejecutar el proyecto."
#: editor/editor_node.cpp
msgid "Play"
@@ -3168,6 +3289,16 @@ msgid "Manage Templates"
msgstr "Administrar Plantillas"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Instalar Desde Archivo"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Selecciona una Malla de Origen:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3206,7 +3337,7 @@ msgstr "Importar plantillas desde un archivo ZIP"
msgid "Template Package"
msgstr "Paquete de Plantillas"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Exportar Librería"
@@ -3249,6 +3380,11 @@ msgid "Select"
msgstr "Seleccionar"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Seleccionar Carpeta Actual"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Abrir Editor 2D"
@@ -3280,6 +3416,11 @@ msgstr "¡Advertencia!"
msgid "No sub-resources found."
msgstr "No se encontró ningún sub-recurso."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "No se encontró ningún sub-recurso."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Creando Previsualización de Mallas"
@@ -3304,33 +3445,34 @@ msgstr "Plugins Instalados:"
msgid "Update"
msgstr "Actualizar"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versión:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Estado:"
+#, fuzzy
+msgid "Author"
+msgstr "Autores"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Editar:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Estado"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Medida:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Duración de Fotogramas (seg)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Tiempo Promedio (seg)"
#: editor/editor_profiler.cpp
@@ -3350,6 +3492,16 @@ msgid "Self"
msgstr "Propio"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Fotograma #:"
@@ -3391,14 +3543,6 @@ msgstr "RID inválido"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"El recurso seleccionado (%s) no coincide con ningún tipo esperado para esta "
-"propiedad (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3423,40 +3567,6 @@ msgid "Pick a Viewport"
msgstr "Selecciona un Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Nuevo Script"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Extender Script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Nuevo %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Hacer Único"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Pegar"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Convertir a %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "¡El nodo seleccionado no es un Viewport!"
@@ -3485,6 +3595,49 @@ msgstr "Nuevo Valor:"
msgid "Add Key/Value Pair"
msgstr "Agregar Par Clave/Valor"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"El recurso seleccionado (%s) no coincide con ningún tipo esperado para esta "
+"propiedad (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Hacer Único"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Pegar"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Convertir a %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Nuevo %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Nuevo Script"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Extender Script"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3521,7 +3674,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Te olvidaste del método '_run'?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Mantén pulsado Ctrl para redondear a enteros. Mantén pulsado Shift para "
"cambios más precisos."
@@ -3543,79 +3697,98 @@ msgid "Import From Node:"
msgstr "Importar Desde Nodo:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Volver a Descargar"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Desinstalar"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Instalado)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "No hay ningún archivo `%s'."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Descargar"
+#, fuzzy
+msgid "Retrieving the mirror list..."
+msgstr "Obteniendo mirrors, por favor espera..."
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
-"Las plantillas de exportación oficiales no están disponibles para las "
-"versiones de desarrollo."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(No encontrado)"
+msgid "Error requesting URL:"
+msgstr "Error al solicitar la URL:"
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Actual)"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Conectando con Mirror...."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
-msgstr "Obteniendo mirrors, por favor espera..."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "No se ha podido resolver el nombre de dominio:"
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "¿Eliminar plantilla versión '%s'?"
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "No se puede conectar al host:"
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "No se puede abir el zip de plantillas de exportación."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "No hay respuesta desde el host:"
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Formato de version.txt inválido dentro de plantillas: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
+msgstr "Petición fallida."
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "No se ha encontrado el archivo version.txt dentro de las plantillas."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Petición fallida, demasiadas redirecciones"
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Error al crear ruta para las plantillas:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Petición fallida."
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Extrayendo Plantillas de Exportación"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importando:"
+msgid "Cannot remove temporary file:"
+msgstr "No se puede eliminar el archivo temporal:"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
+msgstr ""
+"Falló la instalación de plantillas.\n"
+"Las plantillas problemáticas se pueden encontrar en '%s'."
#: editor/export_template_manager.cpp
msgid "Error getting the list of mirrors."
msgstr "Error al obtener la lista de mirrors."
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
msgstr ""
"Error al analizar el JSON de la lista de mirrors. ¡Por favor, informa de "
"este problema!"
#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
msgid ""
"No download links found for this version. Direct download is only available "
"for official releases."
@@ -3624,58 +3797,6 @@ msgstr ""
"directa solo está disponible para las versiones oficiales."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "No se ha podido resolver."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "No se puede conectar."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "No responde."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "Petición Fallida."
-
-#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Redireccionar Loop."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Fallido:"
-
-#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Descarga Completada."
-
-#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr "No se puede eliminar el archivo temporal:"
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
-msgstr ""
-"Falló la instalación de plantillas.\n"
-"Las plantillas problemáticas se pueden encontrar en '%s'."
-
-#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Error al solicitar la URL:"
-
-#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Conectando con Mirror...."
-
-#: editor/export_template_manager.cpp
msgid "Disconnected"
msgstr "Desconectado"
@@ -3718,45 +3839,140 @@ msgid "SSL Handshake Error"
msgstr "Error de Negociación SSL"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "No se puede abir el zip de plantillas de exportación."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Formato de version.txt inválido dentro de plantillas: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "No se ha encontrado el archivo version.txt dentro de las plantillas."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Error al crear ruta para las plantillas:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Extrayendo Plantillas de Exportación"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importando:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "¿Eliminar plantilla versión '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Descomprimir los Recursos de la Compilación de Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Gestor de Plantillas de Exportación"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versión Actual:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Versiones Instaladas:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Abrir Archivo"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Valor inicial para el contador"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Error de descarga"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"Las plantillas de exportación oficiales no están disponibles para las "
+"versiones de desarrollo."
#: editor/export_template_manager.cpp
-msgid "Install From File"
+#, fuzzy
+msgid "Install from File"
msgstr "Instalar Desde Archivo"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Eliminar Plantilla"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importar plantillas desde un archivo ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Cancelar"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Selecciona un Archivo de Plantilla"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "No se puede abir el zip de plantillas de exportación."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Plantillas de Exportación de Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Versiones Instaladas:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Gestor de Plantillas de Exportación"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Desinstalar"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Descargar Plantillas"
+msgid "Select Template File"
+msgstr "Selecciona un Archivo de Plantilla"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr "Plantillas de Exportación de Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
-"Seleccionar un mirror de la lista: (Shift + Clic: Abrir en el Navegador)"
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3891,29 +4107,62 @@ msgstr "Nuevo Script..."
msgid "New Resource..."
msgstr "Nuevo Recurso..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Expandir Todo"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Colapsar Todo"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplicar..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Buscar archivos"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Mover a la papelera"
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Ultima Modificación"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Ultima Modificación"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplicar..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Renombrar..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Carpeta/Archivo Anterior"
@@ -3997,10 +4246,6 @@ msgstr "Buscar..."
msgid "Replace..."
msgstr "Reemplazar..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Cancelar"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Buscar: "
@@ -4224,53 +4469,55 @@ msgid "Failed to load resource."
msgstr "Error al cargar el recurso."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Expandir Todas las Propiedades"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Propiedades"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Colapsar Todas las Propiedades"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Guardar como..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Propiedades"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Copiar Parámetros"
+msgid "Make Sub-Resources Unique"
+msgstr "Creación de subrecursos únicos"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Editar Portapapeles de Recursos"
+msgid "Create a new resource in memory and edit it."
+msgstr "Crear un nuevo recurso en memoria y editarlo."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Copiar Recurso"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Cargar un recurso existente desde disco y editarlo."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Crear Integrado"
+msgid "Save the currently edited resource."
+msgstr "Guardar el recurso editado actualmente."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Creación de subrecursos únicos"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Guardar como..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Abrir en la ayuda"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "No está en la ruta de recursos."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Crear un nuevo recurso en memoria y editarlo."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Editar Portapapeles de Recursos"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Cargar un recurso existente desde disco y editarlo."
+msgid "Copy Resource"
+msgstr "Copiar Recurso"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Guardar el recurso editado actualmente."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Crear Integrado"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4285,14 +4532,24 @@ msgid "History of recently edited objects."
msgstr "Historial de objetos recientemente editados."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Propiedades del objeto."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Abrir Documentación"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Abrir Documentación"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtrar propiedades"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Propiedades del objeto."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "¡Se perderán los cambios realizados!"
@@ -4320,6 +4577,15 @@ msgstr "Nombre del Plugin:"
msgid "Subfolder:"
msgstr "Subcarpeta:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versión:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Lenguaje:"
@@ -4527,7 +4793,8 @@ msgid "Blend:"
msgstr "Mezcla:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parámetro Modificado"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4751,6 +5018,11 @@ msgid "Animation"
msgstr "Animación"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Nuevo"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Editar Transiciones..."
@@ -5092,10 +5364,18 @@ msgid "View Files"
msgstr "Ver Archivos"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Descargar"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Error de conexión, por favor inténtelo otra vez."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "No se puede conectar."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "No se puede conectar al host:"
@@ -5104,16 +5384,20 @@ msgid "No response from host:"
msgstr "No hay respuesta desde el host:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "No responde."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "No se ha podido resolver el nombre de dominio:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Petición fallida, código:"
+msgid "Can't resolve."
+msgstr "No se ha podido resolver."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Petición fallida."
+msgid "Request failed, return code:"
+msgstr "Petición fallida, código:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5140,6 +5424,10 @@ msgid "Timeout."
msgstr "Tiempo de espera."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Fallido:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Error de descarga, al parecer el archivo ha sido manipulado."
@@ -5240,8 +5528,12 @@ msgid "All"
msgstr "Todos"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "No hay resultados para \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5283,6 +5575,10 @@ msgstr "Cargar..."
msgid "Assets ZIP File"
msgstr "Archivo ZIP de elementos"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5294,11 +5590,11 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
-"No hay mallas para hacer bake. Asegúrate que contengan un canal UV2 y que la "
-"opción de 'Bake Light' está activada."
+"No hay mallas para bakear. Asegúrate que contienen un canal UV2 y que los "
+"flags 'Use In Baked Light' y 'Generate Lightmap' están activados."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -5542,9 +5838,10 @@ msgstr "Cambiar Anclas"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Reemplazar Cámara del Juego\n"
"Reemplaza la cámara del juego por la cámara del viewport del editor."
@@ -5552,11 +5849,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Reemplazar Cámara del Juego\n"
-"No hay ninguna instancia del juego en ejecución."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5611,6 +5907,7 @@ msgstr ""
"determinado solo por su padre."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5622,22 +5919,33 @@ msgid "Select Mode"
msgstr "Modo de Selección"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Arrastrar: Rotar"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Eliminar el nodo o transición seleccionado/a."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Arrastrar: Mover"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Eliminar el nodo o transición seleccionado/a."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Presiona 'v' para Cambiar el Pivote, 'Shift + v' para Arrastrar el Pivote "
-"(al mover)."
+"Mostrar una lista de todos los objetos en la posición en la que se ha hecho "
+"clic\n"
+"(igual que Alt + Clic Derecho en modo selección)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt + Clic Derecho: Selección en listado de solapamientos"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5876,6 +6184,16 @@ msgid "Clear Pose"
msgstr "Limpiar Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Añadir Nodo"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Instanciar Escena(s)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Multiplicar paso de cuadrícula por 2"
@@ -5888,6 +6206,52 @@ msgid "Pan View"
msgstr "Vista Panorámica"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Añadir %s"
@@ -6132,6 +6496,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "No pudo crear una única forma de colisión convexa."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Crear una Única Forma Convexa"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Crear una Única Forma Convexa"
@@ -6166,7 +6535,8 @@ msgid "No mesh to debug."
msgstr "No hay mallas para depurar."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "El modelo no tiene UV en esta capa"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6232,13 +6602,27 @@ msgstr ""
"Es la opción más rápida (pero menos precisa) para la detección de colisiones."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Crear Collider Convexo Único Hermano"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Crear Múltiples Collider Convexos Hermanos"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Crea una forma de colisión basada en polígonos.\n"
"Este es un punto medio de rendimiento entre las dos opciones anteriores."
@@ -6300,7 +6684,6 @@ msgid "Mesh Library"
msgstr "Librería de Mallas"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Añadir Ãtem"
@@ -6578,7 +6961,8 @@ msgid "Close Curve"
msgstr "Cerrar Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Opciones"
@@ -6890,6 +7274,26 @@ msgstr "Cargar Recurso"
msgid "ResourcePreloader"
msgstr "Precargador de Recursos"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Voltear Horizontalmente"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Conteo de Puntos Generados:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Conteo de Puntos Generados:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Voltear Horizontalmente"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "El AnimationTree no tiene una ruta asignada a un AnimationPlayer"
@@ -7095,7 +7499,7 @@ msgstr "Ejecutar"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Buscar"
@@ -7126,6 +7530,11 @@ msgid "Debug with External Editor"
msgstr "Depurar con Editor Externo"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Documentación Online"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Abrir la documentación en línea de Godot."
@@ -7253,8 +7662,8 @@ msgstr "Ir A"
msgid "Cut"
msgstr "Cortar"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Seleccionar Todo"
@@ -7287,10 +7696,6 @@ msgid "Unfold All Lines"
msgstr "Desplegar Todas las Líneas"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Clonar Hacia Abajo"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Completar Símbolo"
@@ -7444,6 +7849,28 @@ msgid "View Plane Transform."
msgstr "Ver Transformación en Plano."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Ninguno"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Estado:"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Trasladar:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Escala:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Escalado: "
@@ -7464,42 +7891,54 @@ msgid "Animation Key Inserted."
msgstr "Clave de animación insertada."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Altura"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Guiñada"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Tamaño"
+#, fuzzy
+msgid "Size:"
+msgstr "Tamaño: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Objetos Dibujados"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Cambios del Material"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Cambios del Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Cambios de Superficie"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Llamadas de Dibujado"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Vértices"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Vista Superior."
@@ -7652,6 +8091,11 @@ msgid "Freelook Slow Modifier"
msgstr "Modificador de Velocidad de Vista Libre"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Cambiar Tamaño de Cámara"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Bloquear Rotación de Vista"
@@ -7671,6 +8115,11 @@ msgstr ""
"No se puede utilizar como un indicador fiable del rendimiento en el juego."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Convertir a %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Diálogo XForm"
@@ -7690,7 +8139,8 @@ msgstr ""
"opacas (\"x-ray\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Ajustar Nodos al Suelo"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7698,16 +8148,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "No se pudo encontrar un suelo sólido para ajustar la selección."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Arrastrar: Rotar\n"
-"Alt + Arrastrar: Mover\n"
-"Alt + Clic Derecho: Selección en la lista de superposición"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Usar Espacio Local"
@@ -7716,6 +8156,10 @@ msgid "Use Snap"
msgstr "Usar Snap"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Vista Inferior"
@@ -7809,6 +8253,11 @@ msgid "View Grid"
msgstr "Ver Cuadrícula"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Configuración de ventanilla"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Configuración..."
@@ -8099,11 +8548,6 @@ msgid "Snap Mode:"
msgstr "Modo de Ajuste:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Ninguno"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Ajuste de Píxeles"
@@ -8124,165 +8568,603 @@ msgid "Step:"
msgstr "Paso:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Sep.:"
+msgid "Separation:"
+msgstr "Separación:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "Región de Textura"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Añadir Todos los Ãtems"
+#, fuzzy
+msgid "Colors"
+msgstr "Color"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Fonts"
+msgstr "Tipografía"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Añadir Todos"
+#, fuzzy
+msgid "Icons"
+msgstr "Icono"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Caja de estilos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "No se encontró ningún sub-recurso."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Constantes"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Constante de color."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "¡No se ha encontrado!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "¡No se ha encontrado!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "No se encontró ningún sub-recurso."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Importar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "¿Salir del editor?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analizando"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtro: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Selecciona un Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Selecciona una división para borrarla."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "¡Selecciona un ítem primero!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "¡Selecciona un ítem primero!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "¡Selecciona un ítem primero!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "¡Selecciona un ítem primero!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "¡Selecciona un ítem primero!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Colapsar Todo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Expandir Todo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Selecciona un Archivo de Plantilla"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Seleccionar Puntos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Seleccionar Todo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importar Escena"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Eliminar Todos los Ãtems"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Eliminar Todos"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Eliminar Ãtem"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Editar Tema"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Eliminar Todos los Ãtems"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Menú de edición de tema."
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Eliminar Todos los Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Eliminar Todos los Ãtems"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Eliminar Todos los Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Añadir Clases de Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Añadir Clases de Ãtems"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Añadir Ãtem"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Añadir Ãtem"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Añadir Todos los Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Eliminar Clases de Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Eliminar Clases de Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Renombrar Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Renombrar Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Eliminar Ãtem Seleccionado"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Archivo inválido. No es un layout de bus de audio."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Administrar Plantillas"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Ãtem Editable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Añadir Ãtem"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Añadir Todos los Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Eliminar Ãtem"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Eliminar Clases de Ãtems"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Crear Plantilla Vacía"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Eliminar Clases de Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Eliminar Todos los Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Elementos del tema de interfaz"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nombre del Nodo:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Crear plantilla de editor vacía"
+#, fuzzy
+msgid "Import Items"
+msgstr "Importar Tema"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Crear desde el tema actual del editor"
+#, fuzzy
+msgid "Default Theme"
+msgstr "Predeterminado"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Editar Tema"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Eliminar Recurso"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Importar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Renombrar pista de animación"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Renombrar por lote"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Anulaciones"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Tipo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Añadir Ãtem"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Tipo de nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Cargar Valores por Defecto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Anulaciones"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Administrar Plantillas de Exportación..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Vista Previa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Actualizar Vista Previa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Selecciona una Malla de Origen:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Botón de Conmutación"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Botón Desactivado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Ãtem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Desactivar Ãtem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Activar Ãtem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Ãtem Activado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Radio Ãtem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Radio Ãtem Activo"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Separador con nombre."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Submenú"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Subítem 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Subítem 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Tiene"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Muchas"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "Desactivar LineEdit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Tab 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Tab 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Ãtem Editable"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Subárbol"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Tienes, muchas, opciones"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Tipo de datos:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Icono"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Estilo"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Tipografía"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Color"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Archivo inválido. No es un layout de bus de audio."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Archivo de Tema"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8454,6 +9336,10 @@ msgid "Priority"
msgstr "Prioridad"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Icono"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Ãndice Z"
@@ -8790,11 +9676,6 @@ msgid "Commit Changes"
msgstr "Confirmar Cambios"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Estado"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
"Ver las diferencias de los archivos antes de confirmar la última versión"
@@ -9688,7 +10569,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Editar Propiedad Visual"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9816,7 +10698,8 @@ msgid "Script"
msgstr "Script"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Modo de exportación de scripts:"
#: editor/project_export.cpp
@@ -9824,19 +10707,21 @@ msgid "Text"
msgstr "Texto"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Compilado"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Encriptado (Proveer la Clave Debajo)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Llave de Encriptación Inválida (debe tener 64 caracteres de largo)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Clave de cifrado de scripts (256-bits en hexadecimal):"
#: editor/project_export.cpp
@@ -9911,7 +10796,8 @@ msgid "Imported Project"
msgstr "Proyecto Importado"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Nombre de Proyecto Inválido."
#: editor/project_manager.cpp
@@ -9947,6 +10833,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "No se pudo crear project.godot en la ruta del proyecto."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Error al abrir el archivo comprimido, no está en formato ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Los siguientes archivos no se pudieron extraer del paquete:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "¡Paquete instalado con éxito!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Renombrar Proyecto"
@@ -10125,20 +11023,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "¿Estás seguro de que vas a ejecutar %d proyectos a la vez?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"¿Eliminar %d proyectos de la lista?\n"
-"El contenido de las carpetas del proyecto no se modificará."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Seleccionar dispositivo de la lista"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"¿Eliminar este proyecto de la lista?\n"
-"El contenido de la carpeta de proyecto no se modificará."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Seleccionar dispositivo de la lista"
#: editor/project_manager.cpp
msgid ""
@@ -10154,8 +11046,8 @@ msgid ""
"The interface will update after restarting the editor or project manager."
msgstr ""
"Idioma cambiado.\n"
-"La interfaz se actualizará después de reiniciar el editor o el gestor de "
-"proyectos."
+"La interfaz se actualizará después de reiniciar el editor o el administrador "
+"de proyectos."
#: editor/project_manager.cpp
msgid ""
@@ -10172,7 +11064,8 @@ msgid "Project Manager"
msgstr "Administrador de Proyectos"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Proyectos"
#: editor/project_manager.cpp
@@ -10184,10 +11077,25 @@ msgid "Last Modified"
msgstr "Ultima Modificación"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Exportar Proyecto"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Renombrar Proyecto"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Escanear"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Proyectos"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Selecciona una carpeta para escanear"
@@ -10196,18 +11104,41 @@ msgid "New Project"
msgstr "Nuevo Proyecto"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Proyecto Importado"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Renombrar Proyecto"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Eliminar Faltantes"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Plantillas"
+msgid "About"
+msgstr "Acerca de"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Biblioteca de Assets"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Reiniciar Ahora"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Eliminar Todos"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "No se puede ejecutar el proyecto"
@@ -10220,8 +11151,14 @@ msgstr ""
"¿Quieres explorar proyectos de ejemplo oficiales en la Biblioteca de Assets?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtrar propiedades"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10235,6 +11172,10 @@ msgid "Key "
msgstr "Tecla "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Botón del Mando"
@@ -10278,6 +11219,10 @@ msgstr "Todos los Dispositivos"
msgid "Device"
msgstr "Dispositivo"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Presiona una tecla..."
@@ -10419,7 +11364,8 @@ msgid "Override for Feature"
msgstr "Anulación de la Característica"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Añadir Traducción"
#: editor/project_settings_editor.cpp
@@ -10427,11 +11373,13 @@ msgid "Remove Translation"
msgstr "Eliminar Traducción"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Añadir Ruta Remapeada"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Añadir Remapeo de Recursos"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Añadir Remapeo de Recursos"
#: editor/project_settings_editor.cpp
@@ -10704,6 +11652,10 @@ msgid "Post-Process"
msgstr "Post-Procesado"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Estilo"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Conservar"
@@ -10870,12 +11822,30 @@ msgid "Delete node \"%s\"?"
msgstr "¿Eliminar nodo \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "No se puede efectuar con el nodo raíz."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Esta operación no puede realizarse en escenas instanciadas."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10935,6 +11905,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "¡No se puede operar sobre los nodos heredados por la escena actual!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Esta operación no puede realizarse en escenas instanciadas."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Añadir Script"
@@ -10983,10 +11957,6 @@ msgid "Load As Placeholder"
msgstr "Cargar Como Placeholder"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Abrir Documentación"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11280,6 +12250,12 @@ msgstr ""
"editados usando un editor externo."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Nombre de Clase:"
@@ -11348,6 +12324,10 @@ msgid "Copy Error"
msgstr "Copiar Error"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Memoria de Vídeo"
@@ -11635,6 +12615,16 @@ msgstr "El diccionario de instancias no es correcto (subclases erróneas)"
msgid "Object can't provide a length."
msgstr "El objeto no puede proporcionar una longitud."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exportar Librería de Mallas"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exportar…"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Siguiente Plano"
@@ -11676,6 +12666,11 @@ msgid "GridMap Paint"
msgstr "Pintar GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Rellenar Selección en GridMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Mapeo de Cuadrícula"
@@ -11737,7 +12732,7 @@ msgstr "Eliminar Rotación del Cursor"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Paste Selects"
-msgstr "Pegar Selecciona"
+msgstr "Pegar Seleccionados"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clear Selection"
@@ -11927,6 +12922,16 @@ msgid "Add Output Port"
msgstr "Añadir Puerto de Salida"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Cambiar Tipo"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Cambiar nombre del puerto de entrada"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Anular una función integrada existente."
@@ -12039,6 +13044,11 @@ msgid "Add Preload Node"
msgstr "Añadir Nodo Preload"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Añadir Nodo"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Añadir nodo(s) desde árbol"
@@ -12270,10 +13280,6 @@ msgstr "Buscar en VisualScript"
msgid "Get %s"
msgstr "Obtener %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Establecer %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Falta el nombre del paquete."
@@ -12306,6 +13312,40 @@ msgid "Select device from the list"
msgstr "Seleccionar dispositivo de la lista"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Exportar Todo"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Desinstalar"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Cargando, espera por favor..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "¡No se pudo instanciar la escena!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Ejecutando Script Personalizado..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "No se pudo crear la carpeta."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "No se pudo encontrar la herramienta 'apksigner'."
@@ -12427,6 +13467,48 @@ msgstr ""
"\"Export AAB\" sólo es válido cuando \"Use Custom Build\" está activado."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Escaneando archivos,\n"
+"Por favor, espere..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "No se pudo abrir la plantilla para exportar:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Añadiendo %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Exportar Todo"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
"¡Nombre de archivo inválido! Android App Bundle requiere la extensión *.aab."
@@ -12440,6 +13522,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "¡Nombre de archivo inválido! Android APK requiere la extensión *.apk."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12462,6 +13548,21 @@ msgstr ""
"'Proyecto'."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "No se encontró project.godot en la ruta del proyecto."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "No se puede escribir en el archivo:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Construir Proyecto Android (gradle)"
@@ -12486,11 +13587,54 @@ msgstr ""
"No se puede copiar y renombrar el archivo de exportación, comprueba el "
"directorio del proyecto de gradle para ver los resultados."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "No se encontró la animación: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Creando contornos..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "No se pudo abrir la plantilla para exportar:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Añadiendo %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "No se puede escribir en el archivo:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "Alineando APK..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Identificador no encontrado."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "El carácter '%s' no esta permitido como identificador."
@@ -12520,10 +13664,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Ejecutar HTML exportado en el navegador predeterminado del sistema."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "No se puede escribir en el archivo:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "No se pudo abrir la plantilla para exportar:"
@@ -12532,16 +13672,49 @@ msgid "Invalid export template:"
msgstr "Plantilla de exportación inválida:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "No se puede escribir en el archivo:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "No se puede escribir en el archivo:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "No se puede leer shell HTML personalizada:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "No se pudo leer la imagen de carga:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "No se pudo crear la carpeta."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Usando la imagen de carga por defecto."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Error al guardar escena."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Identificador inválido:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12983,6 +14156,13 @@ msgstr ""
"Las GIProbes no están soportadas por el controlador de vídeo GLES2.\n"
"Usa un BakedLightmap en su lugar."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -13071,6 +14251,18 @@ msgstr "La unión no está conectada a ningún PhysicsBody"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "El nodo A y el nodo B deben ser diferentes PhysicsBody"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -13079,6 +14271,46 @@ msgstr ""
"La propiedad \"Remote Path\" debe apuntar a un nodo Spatial o derivado de "
"Spatial válido para que funcione."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Este cuerpo será ignorado hasta que se establezca una malla."
@@ -13141,6 +14373,10 @@ msgstr "En el nodo BlendTree '%s', no se encontró la animación: '%s'"
msgid "Animation not found: '%s'"
msgstr "No se encontró la animación: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "En el nodo '%s', animación inválida: '%s'."
@@ -13317,6 +14553,27 @@ msgid "Invalid comparison function for that type."
msgstr "Función de comparación inválida para este tipo."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Solo se pueden asignar variaciones en funciones de vértice."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Asignación a función."
@@ -13325,13 +14582,180 @@ msgid "Assignment to uniform."
msgstr "Asignación a uniform."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Solo se pueden asignar variaciones en funciones de vértice."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Las constantes no pueden modificarse."
+#~ msgid "Package Contents:"
+#~ msgstr "Contenido del Paquete:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "¿Borrar perfil '%s'? (no se puede deshacer)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Propiedades Activadas:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Características Activadas:"
+
+#~ msgid "Unset"
+#~ msgstr "Desactivar"
+
+#~ msgid "Class Options"
+#~ msgstr "Opciones de Clases"
+
+#~ msgid "Set"
+#~ msgstr "Establecer"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Guardado %s recurso(s) modificado(s)."
+
+#~ msgid "Q&A"
+#~ msgstr "Preguntas y respuestas"
+
+#~ msgid "Status:"
+#~ msgstr "Estado:"
+
+#~ msgid "Edit:"
+#~ msgstr "Editar:"
+
+#~ msgid "Redownload"
+#~ msgstr "Volver a Descargar"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Instalado)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(No encontrado)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Petición Fallida."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Redireccionar Loop."
+
+#~ msgid "Download Complete."
+#~ msgstr "Descarga Completada."
+
+#~ msgid "Remove Template"
+#~ msgstr "Eliminar Plantilla"
+
+#~ msgid "Download Templates"
+#~ msgstr "Descargar Plantillas"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr ""
+#~ "Seleccionar un mirror de la lista: (Shift + Clic: Abrir en el Navegador)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Mover a la papelera"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Expandir Todas las Propiedades"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Colapsar Todas las Propiedades"
+
+#~ msgid "Copy Params"
+#~ msgstr "Copiar Parámetros"
+
+#~ msgid "Open in Help"
+#~ msgstr "Abrir en la ayuda"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Reemplazar Cámara del Juego\n"
+#~ "No hay ninguna instancia del juego en ejecución."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Arrastrar: Rotar"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Presiona 'v' para Cambiar el Pivote, 'Shift + v' para Arrastrar el Pivote "
+#~ "(al mover)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt + Clic Derecho: Selección en listado de solapamientos"
+
+#~ msgid "Clone Down"
+#~ msgstr "Clonar Hacia Abajo"
+
+#~ msgid "Yaw"
+#~ msgstr "Guiñada"
+
+#~ msgid "Size"
+#~ msgstr "Tamaño"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Arrastrar: Rotar\n"
+#~ "Alt + Arrastrar: Mover\n"
+#~ "Alt + Clic Derecho: Selección en la lista de superposición"
+
+#~ msgid "Sep.:"
+#~ msgstr "Sep.:"
+
+#~ msgid "Add All"
+#~ msgstr "Añadir Todos"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Menú de edición de tema."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Crear Plantilla Vacía"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Crear plantilla de editor vacía"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Crear desde el tema actual del editor"
+
+#~ msgid "Data Type:"
+#~ msgstr "Tipo de datos:"
+
+#~ msgid "Theme File"
+#~ msgstr "Archivo de Tema"
+
+#~ msgid "Compiled"
+#~ msgstr "Compilado"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "¿Eliminar %d proyectos de la lista?\n"
+#~ "El contenido de las carpetas del proyecto no se modificará."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "¿Eliminar este proyecto de la lista?\n"
+#~ "El contenido de la carpeta de proyecto no se modificará."
+
+#~ msgid "Templates"
+#~ msgstr "Plantillas"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Añadir Ruta Remapeada"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "No se puede efectuar con el nodo raíz."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "No se pudo leer la imagen de carga:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Usando la imagen de carga por defecto."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Un reproductor de animación no puede animarse a sí mismo, solo a otros "
@@ -13387,9 +14811,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "Ya hay un archivo o carpeta con el mismo nombre en esta ubicación."
-#~ msgid "Aligning APK..."
-#~ msgstr "Alineando APK..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "No se pudo completar el alineamiento del APK."
@@ -13449,9 +14870,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgstr ""
#~ "La escena actual nunca se guardó. Por favor, guárdela antes de ejecutar."
-#~ msgid "Not in resource path."
-#~ msgstr "No está en la ruta de recursos."
-
#~ msgid "Revert"
#~ msgstr "Revertir"
@@ -13556,9 +14974,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Input"
#~ msgstr "Entrada"
-#~ msgid "Properties:"
-#~ msgstr "Propiedades:"
-
#~ msgid "Methods:"
#~ msgstr "Métodos:"
@@ -14059,9 +15474,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Connect two points to make a split."
#~ msgstr "Conectar dos puntos para crear una división."
-#~ msgid "Select a split to erase it."
-#~ msgstr "Selecciona una división para borrarla."
-
#~ msgid "Add Node.."
#~ msgstr "Añadir Nodo..."
@@ -14130,9 +15542,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Public Methods:"
#~ msgstr "Métodos públicos:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Elementos del tema de interfaz"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Elementos del tema de interfaz:"
@@ -14154,9 +15563,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Match case"
#~ msgstr "Coincidir Mayúsculas/Minúsculas"
-#~ msgid "Filter: "
-#~ msgstr "Filtro: "
-
#~ msgid "Ok"
#~ msgstr "Aceptar"
@@ -14194,9 +15600,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Rotate 270 degrees"
#~ msgstr "Rotar 270 grados"
-#~ msgid "Variable"
-#~ msgstr "Variable"
-
#~ msgid "Errors:"
#~ msgstr "Errores:"
@@ -14287,9 +15690,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Set Transitions to:"
#~ msgstr "Establecer transiciones en:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Renombrar pista de animación"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Cambiar interpolación de pista de animación"
@@ -14440,12 +15840,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "StyleBox Preview:"
#~ msgstr "Vista previa de StyleBox:"
-#~ msgid "StyleBox"
-#~ msgstr "Caja de estilos"
-
-#~ msgid "Separation:"
-#~ msgstr "Separación:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Editor de regiones de texturas"
@@ -14524,12 +15918,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "No se encontró project.godot en la ruta del proyecto."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "No se encontró project.godot en la ruta del proyecto."
-
-#~ msgid "Not found!"
-#~ msgstr "¡No se ha encontrado!"
-
#~ msgid "Replace By"
#~ msgstr "Reemplazar por"
@@ -14915,9 +16303,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "Calidad de compresión de textura (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "Opciones de textura"
-
#~ msgid "Please specify some files!"
#~ msgstr "¡Selecciona algunos archivos!"
@@ -15081,9 +16466,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Zoom Set..."
#~ msgstr "Ajustar zoom..."
-#~ msgid "Set a Value"
-#~ msgstr "Establecer valor"
-
#~ msgid "Parse BBCode"
#~ msgstr "Leer BBCode"
@@ -15223,9 +16605,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Instance at Cursor"
#~ msgstr "Instanciar en cursor"
-#~ msgid "Could not instance scene!"
-#~ msgstr "¡No se pudo instanciar la escena!"
-
#~ msgid "Use Default Light"
#~ msgstr "Usar iluminación predeterminada"
@@ -15305,10 +16684,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "City"
#~ msgstr "Ciudad"
-#, fuzzy
-#~ msgid "State"
-#~ msgstr "Estado:"
-
#~ msgid "2 letter country code"
#~ msgstr "Código de país de dos letras"
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index d1fe06a565..53041c74fd 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-06-20 13:35+0000\n"
+"PO-Revision-Date: 2021-07-29 02:33+0000\n"
"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n"
"Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects/"
"godot-engine/godot/es_AR/>\n"
@@ -30,7 +30,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.7\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -55,9 +55,7 @@ msgstr "Entrada inválida %i (no se transmitió) en la expresión"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr ""
-"self no puede ser usado ya que la instancia es nula (la referencia no fue "
-"pasada)"
+msgstr "\"self\" no puede ser usado porque la instancia es nula (no se asignó)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -544,7 +542,8 @@ msgstr "Segundos"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -570,7 +569,8 @@ msgstr "Escalar Selección"
msgid "Scale From Cursor"
msgstr "Escalar Desde Cursor"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplicar Selección"
@@ -591,6 +591,11 @@ msgid "Go to Previous Step"
msgstr "Ir a Paso Previo"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Resetear"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimizar Animación"
@@ -607,6 +612,11 @@ msgid "Use Bezier Curves"
msgstr "Usar Curvas Bezier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Pegar Pistas"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Optimizador de animación"
@@ -655,7 +665,7 @@ msgid "Select Tracks to Copy"
msgstr "Elegir Pistas a Copiar"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -741,12 +751,14 @@ msgid "Toggle Scripts Panel"
msgstr "Act/Desact. Panel de Scripts"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoom In"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -803,11 +815,9 @@ msgid "Add"
msgstr "Agregar"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -859,6 +869,7 @@ msgstr "No se puede conectar la señal"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -929,7 +940,8 @@ msgid "Edit..."
msgstr "Editar..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Ir Al Método"
#: editor/create_dialog.cpp
@@ -944,6 +956,14 @@ msgstr "Cambiar"
msgid "Create New %s"
msgstr "Crear Nuevo %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "No hay resultados para \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -965,8 +985,8 @@ msgstr "Buscar:"
msgid "Matches:"
msgstr "Coincidencias:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1042,20 +1062,24 @@ msgid "Owners Of:"
msgstr "Dueños De:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"¿Eliminar los archivos seleccionados del proyecto? (irreversible)\n"
"Podés encontrar los archivos eliminados en la papelera de reciclaje del "
"sistema para restaurarlos."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Los archivos que se están removiendo son requeridos por otros recursos para "
"funcionar.\n"
@@ -1105,7 +1129,7 @@ msgstr "Explorador de Recursos Huérfanos"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1230,28 +1254,41 @@ msgstr "Componentes"
msgid "Licenses"
msgstr "Licencias"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Error al abrir el archivo comprimido, no está en formato ZIP."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Error al abrir el archivo de paquete (no esta en formato ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Ya existe)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Descomprimiendo Assets"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Los siguientes archivos no se pudieron extraer del paquete:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Y %d archivos más."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "El Paquete se instaló exitosamente!"
#: editor/editor_asset_installer.cpp
@@ -1259,16 +1296,13 @@ msgstr "El Paquete se instaló exitosamente!"
msgid "Success!"
msgstr "¡Éxito!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Contenido del Paquete:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instalar"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Instalador de Paquetes"
#: editor/editor_audio_buses.cpp
@@ -1332,7 +1366,8 @@ msgid "Bypass"
msgstr "Bypass"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Opciones de Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1412,7 +1447,7 @@ msgstr "Agregar Bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Agregar un nuevo Bus de Audio a este layout."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1499,6 +1534,15 @@ msgid "Can't add autoload:"
msgstr "No se puede agregar autoload:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "El archivo existe."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Agregar AutoLoad"
@@ -1514,16 +1558,17 @@ msgid "Node Name:"
msgstr "Nombre de Nodo:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nombre"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Variable"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Pegar Parámetros"
@@ -1539,7 +1584,7 @@ msgstr "Guardando cambios locales..."
msgid "Updating scene..."
msgstr "Actualizando escena..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[vacío]"
@@ -1696,8 +1741,49 @@ msgid "Import Dock"
msgstr "Dock de Importación"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "¿Borrar perfil '%s'? (no se puede deshacer)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Actual)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1729,15 +1815,18 @@ msgid "Enable Contextual Editor"
msgstr "Activar el Editor Contextual"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Propiedades Activadas:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Propiedades:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Características Activadas:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Características"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Clases Activadas:"
#: editor/editor_feature_profile.cpp
@@ -1758,25 +1847,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Error al guardar el perfil en la ruta: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Desactivar"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Restablecer Valores Por Defecto"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Perfil Actual:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Hacer Actual"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Borrar Perfil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Nuevo"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Remover Tile"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Perfiles Disponibles:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Hacer Actual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importar"
@@ -1785,20 +1883,22 @@ msgid "Export"
msgstr "Exportar"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Perfiles Disponibles:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Perfil Actual:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Opciones de Clase"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Opciones de Textura"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Nuevo nombre de perfil:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Borrar Perfil"
+msgid "New profile name:"
+msgstr "Nuevo nombre de perfil:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1821,7 +1921,8 @@ msgid "Select Current Folder"
msgstr "Seleccionar Carpeta Actual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "El Archivo Existe, Sobreescribir?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1875,9 +1976,10 @@ msgid "Open a File or Directory"
msgstr "Abrir un Archivo o Directorio"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Guardar"
@@ -1958,8 +2060,7 @@ msgid "Directories & Files:"
msgstr "Directorios y Archivos:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Vista Previa:"
@@ -2032,7 +2133,7 @@ msgstr "Propiedades de Tema"
msgid "Enumerations"
msgstr "Enumeraciones"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Constantes"
@@ -2121,7 +2222,7 @@ msgstr "Método"
msgid "Signal"
msgstr "Señal"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Constante"
@@ -2137,9 +2238,10 @@ msgstr "Propiedades del Tema"
msgid "Property:"
msgstr "Propiedad:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Asignar"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Asignar %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2154,7 +2256,7 @@ msgid "Copy Selection"
msgstr "Copiar Selección"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2218,7 +2320,8 @@ msgid "Imported resources can't be saved."
msgstr "Los recursos importados no se pueden guardar."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2442,18 +2545,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Guardar cambios a '%s' antes de cerrar?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Se guardaron %s recurso(s) modificado(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Se necesita un nodo raíz para guardar la escena."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Guardar Escena Como..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Esta operación no puede hacerse sin una escena."
@@ -2655,7 +2763,7 @@ msgstr "Eliminar Layout"
msgid "Default"
msgstr "Por Defecto"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Mostrar en Sistema de Archivos"
@@ -2836,6 +2944,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Explorador de Recursos Huérfanos..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Renombrar Proyecto"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Salir a Listado de Proyecto"
@@ -2992,20 +3105,25 @@ msgstr "Administrar Plantillas de Exportación..."
msgid "Help"
msgstr "Ayuda"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Documentación Online"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Abrir Documentación"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Q&A"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Reportar un Bug"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "Setear un Valor"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Enviar comentarios sobre la documentación"
@@ -3014,7 +3132,8 @@ msgid "Community"
msgstr "Comunidad"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Acerca de"
#: editor/editor_node.cpp
@@ -3113,6 +3232,16 @@ msgid "Manage Templates"
msgstr "Administrar Plantillas"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Instalar Desde Archivo"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Seleccioná una Mesh de Origen:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3151,7 +3280,7 @@ msgstr "Importar Plantillas Desde Archivo ZIP"
msgid "Template Package"
msgstr "Paquete de Plantillas"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Exportar Libreria"
@@ -3194,6 +3323,11 @@ msgid "Select"
msgstr "Seleccionar"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Seleccionar Carpeta Actual"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Abrir en Editor 2D"
@@ -3225,6 +3359,11 @@ msgstr "Cuidado!"
msgid "No sub-resources found."
msgstr "No se encontró ningún sub-recurso."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "No se encontró ningún sub-recurso."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Creando Vistas Previas de Mesh/es"
@@ -3249,33 +3388,34 @@ msgstr "Plugins Instalados:"
msgid "Update"
msgstr "Actualizar"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Version:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Estado:"
+#, fuzzy
+msgid "Author"
+msgstr "Autores"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Editar:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Estado"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Medida:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Duración de Frame (seg)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Tiempo Promedio (seg)"
#: editor/editor_profiler.cpp
@@ -3295,6 +3435,16 @@ msgid "Self"
msgstr "Propio"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Frame #:"
@@ -3336,14 +3486,6 @@ msgstr "RID Inválido"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"El recurso seleccionado (%s) no concuerda con ningún tipo esperado para esta "
-"propiedad (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3367,40 +3509,6 @@ msgid "Pick a Viewport"
msgstr "Seleccionar un Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Nuevo Script"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Extender Script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Nuevo %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Convertir en Unico"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Pegar"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Convertir A %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "El nodo seleccionado no es un Viewport!"
@@ -3429,6 +3537,49 @@ msgstr "Nuevo Valor:"
msgid "Add Key/Value Pair"
msgstr "Agregar Par Clave/Valor"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"El recurso seleccionado (%s) no concuerda con ningún tipo esperado para esta "
+"propiedad (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Convertir en Unico"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Pegar"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Convertir A %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Nuevo %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Nuevo Script"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Extender Script"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3465,7 +3616,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Te olvidaste del método '_run'?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Mantené pulsado Ctrl para redondear a enteros. Mantené pulsado Shift para "
"cambios más precisos."
@@ -3487,117 +3639,69 @@ msgid "Import From Node:"
msgstr "Importar Desde Nodo:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Volver a Descargar"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Desinstalar"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Instalado)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Descargar"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
-"Las plantillas de exportación oficiales no están disponibles para las "
-"versiones de desarrollo."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Faltante)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Actual)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "No hay ningún archivo '%s'."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Recuperando mirrors, esperá, por favor..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Quitar plantilla version '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "No se puede abir el zip de plantillas de exportación."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Formato de version.txt inválido dentro de plantillas: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "No se encontro ningún version.txt dentro de las plantillas."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Error creando rutas para las plantillas:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Extrayendo Plantillas de Exportación"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importando:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Error al obtener la lista de mirrors."
+msgid "Error requesting URL:"
+msgstr "Error al solicitar la URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Error al parsear el JSON de la lista de mirrors. ¡Por favor reportá este "
-"problema!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Conectando al Mirror..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"No se encontraron links de descarga para esta versión. Las descargas "
-"directas solo están disponibles para releases oficiales."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "No se ha podido resolver el nombre del host:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "No se ha podido resolver."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "No se puede conectar al host:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "No se puede conectar."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "No hay respuesta desde el host:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Sin respuesta."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Solicitud fallida."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Bucle de redireccionamiento."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Solicitud fallida, demasiadas redireccinoes"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Fallido:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Solicitud fallida."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Descarga Completa."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3612,12 +3716,27 @@ msgstr ""
"Las plantillas problemáticas se pueden encontrar en '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Error al solicitar la URL:"
+msgid "Error getting the list of mirrors."
+msgstr "Error al obtener la lista de mirrors."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Conectando al Mirror..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Error al parsear el JSON de la lista de mirrors. ¡Por favor reportá este "
+"problema!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"No se encontraron links de descarga para esta versión. Las descargas "
+"directas solo están disponibles para releases oficiales."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3662,45 +3781,140 @@ msgid "SSL Handshake Error"
msgstr "Error de Handshake SSL"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "No se puede abir el zip de plantillas de exportación."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Formato de version.txt inválido dentro de plantillas: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "No se encontro ningún version.txt dentro de las plantillas."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Error creando rutas para las plantillas:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Extrayendo Plantillas de Exportación"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importando:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Quitar plantilla version '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Descomprimiendo Fuentes de Compilación Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Gestor de Plantillas de Exportación"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Version Actual:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Versiones Instaladas:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Abrir Archivo"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Valor inicial para el contador"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Error de Descarga"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"Las plantillas de exportación oficiales no están disponibles para las "
+"versiones de desarrollo."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Instalar Desde Archivo"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Remover Plantilla"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importar Plantillas Desde Archivo ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Cancelar"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Elegir Archivo de Plantilla"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "No se puede abir el zip de plantillas de exportación."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Plantillas de Exportación de Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Versiones Instaladas:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Gestor de Plantillas de Exportación"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Desinstalar"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Elegir Archivo de Plantilla"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Descargar Plantillas"
+msgid "Godot Export Templates"
+msgstr "Plantillas de Exportación de Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
-"Seleccionar un mirror de la lista: (Shift+Click: Abrir en el Navegador)"
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3835,29 +4049,62 @@ msgstr "Nuevo Script.."
msgid "New Resource..."
msgstr "Nuevo Recurso..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Expandir Todos"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Colapsar Todos"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplicar..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Buscar archivos"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Mover a La Papelera"
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Ultima Modificación"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Ultima Modificación"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplicar..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Renombrar..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Carpeta/Archivo Anterior"
@@ -3941,10 +4188,6 @@ msgstr "Encontrar..."
msgid "Replace..."
msgstr "Reemplazar..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Cancelar"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Encontrar: "
@@ -4169,53 +4412,55 @@ msgid "Failed to load resource."
msgstr "Fallo al cargar recurso."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Expandir Todas las Propiedades"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Propiedades"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Colapsar Todas las Propiedades"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Guardar Como..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Propiedades"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Copiar Parámetros"
+msgid "Make Sub-Resources Unique"
+msgstr "Crear Sub-Recurso Unico"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Editar Portapapeles de Recursos"
+msgid "Create a new resource in memory and edit it."
+msgstr "Crear un nuevo recurso en memoria y editarlo."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Copiar Recurso"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Cargar un recurso existente desde disco y editarlo."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Crear Built-In"
+msgid "Save the currently edited resource."
+msgstr "Guardar el recurso editado actualmente."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Crear Sub-Recurso Unico"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Guardar Como..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Abrir en la Ayuda"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "No está en la ruta de recursos."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Crear un nuevo recurso en memoria y editarlo."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Editar Portapapeles de Recursos"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Cargar un recurso existente desde disco y editarlo."
+msgid "Copy Resource"
+msgstr "Copiar Recurso"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Guardar el recurso editado actualmente."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Crear Built-In"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4230,14 +4475,24 @@ msgid "History of recently edited objects."
msgstr "Historial de objetos recientemente editados."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Propiedades del objeto."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Abrir Documentación"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Abrir Documentación"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtrar propiedades"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Propiedades del objeto."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Podrían perderse los cambios!"
@@ -4265,6 +4520,15 @@ msgstr "Nombre del Plugin:"
msgid "Subfolder:"
msgstr "Subcarpeta:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Version:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Lenguaje:"
@@ -4471,7 +4735,8 @@ msgid "Blend:"
msgstr "Blend:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parámetro Modificado"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4695,6 +4960,11 @@ msgid "Animation"
msgstr "Animación"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Nuevo"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Editar Transiciones..."
@@ -5036,10 +5306,18 @@ msgid "View Files"
msgstr "Ver Archivos"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Descargar"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Error de conexión, por favor intentá de nuevo."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "No se puede conectar."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "No se puede conectar al host:"
@@ -5048,16 +5326,20 @@ msgid "No response from host:"
msgstr "No hay respuesta desde el host:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Sin respuesta."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "No se ha podido resolver el nombre del host:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Solicitud fallida. Código de retorno:"
+msgid "Can't resolve."
+msgstr "No se ha podido resolver."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Solicitud fallida."
+msgid "Request failed, return code:"
+msgstr "Solicitud fallida. Código de retorno:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5084,6 +5366,10 @@ msgid "Timeout."
msgstr "Tiempo de espera."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Fallido:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Hash de descarga incorrecto, asumiendo que el archivo fue manipulado."
@@ -5184,8 +5470,12 @@ msgid "All"
msgstr "Todos"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "No hay resultados para \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5227,6 +5517,10 @@ msgstr "Cargando..."
msgid "Assets ZIP File"
msgstr "Archivo ZIP de Assets"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5238,11 +5532,11 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
-"No hay meshes para hacer bake. Asegúrate que contienen un canal UV2 y que el "
-"flag 'Bake Light' esta activado."
+"No hay meshes para hacer bake. Asegurate que contienen un canal UV2 y que "
+"los flags 'Use In Baked Light' y 'Generate Lightmap' estén seteados."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -5486,9 +5780,10 @@ msgstr "Cambiar Anclas"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Reemplazar Cámara del Juego\n"
"Reemplaza la cámara del juego con la cámara del viewport del editor."
@@ -5496,11 +5791,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Reemplazar Cámara del Juego\n"
-"No hay ninguna instancia de juego ejecutándose."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5555,6 +5849,7 @@ msgstr ""
"determinado solo por su padre."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5566,22 +5861,32 @@ msgid "Select Mode"
msgstr "Modo Seleccionar"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Arrastrar: Rotar"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Quitar el nodo o transición seleccionado/a."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Arrastrae: Mover"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Quitar el nodo o transición seleccionado/a."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Presioná 'v' para Cambiar el Pivote, 'Shift+v' para Arrastrar el Pivote (al "
-"mover)."
+"Mostrar una lista de todos los objetos en la posicion cliqueada\n"
+"(igual que Alt+Click Der. en modo selección)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+Click Der.: Selección en depth list"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5819,6 +6124,16 @@ msgid "Clear Pose"
msgstr "Restablecer Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Agregar Nodo"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Instanciar Escena(s)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Multiplicar step de grilla por 2"
@@ -5831,6 +6146,52 @@ msgid "Pan View"
msgstr "Panear Vista"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Alejar Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Agregar %s"
@@ -6074,6 +6435,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "No se pudo crear una forma de colisión única."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Crear Forma Convexa Única"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Crear Forma Convexa Única"
@@ -6108,7 +6474,8 @@ msgid "No mesh to debug."
msgstr "No hay meshes para depurar."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "El modelo no tiene UV en esta capa"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6174,13 +6541,27 @@ msgstr ""
"Esta es la opción mas rápida (pero menos exacta) para detectar colisiones."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Crear Colisión Convexa Única Hermana"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Crear Múltiples Colisiones Convexas como Nodos Hermanos"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Crea una forma de colisión basada en polígonos.\n"
"Esto está en un punto medio de rendimiento entre las dos opciones de arriba."
@@ -6242,7 +6623,6 @@ msgid "Mesh Library"
msgstr "Biblioteca de Meshes"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Agregar Item"
@@ -6516,7 +6896,8 @@ msgid "Close Curve"
msgstr "Cerrar Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Opciones"
@@ -6828,6 +7209,26 @@ msgstr "Cargar Recurso"
msgid "ResourcePreloader"
msgstr "ResourcePreloader"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Espejar Horizontalmente"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Conteo de Puntos Generados:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Conteo de Puntos Generados:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Espejar Horizontalmente"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "El AnimationTree no tiene una ruta asignada a un AnimationPlayer"
@@ -7033,7 +7434,7 @@ msgstr "Ejecutar"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Buscar"
@@ -7064,6 +7465,11 @@ msgid "Debug with External Editor"
msgstr "Depurar con Editor Externo"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Documentación Online"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Abrir la documentación en línea de Godot."
@@ -7191,8 +7597,8 @@ msgstr "Ir A"
msgid "Cut"
msgstr "Cortar"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Seleccionar Todo"
@@ -7225,10 +7631,6 @@ msgid "Unfold All Lines"
msgstr "Expandir Totas las Líneas"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Clonar hacia Abajo"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Completar Símbolo"
@@ -7382,6 +7784,28 @@ msgid "View Plane Transform."
msgstr "Ver Transformación en Plano."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Ninguno"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Estado"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Trasladar:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Escala:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Escalando: "
@@ -7402,42 +7826,54 @@ msgid "Animation Key Inserted."
msgstr "Clave de Animación Insertada."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Altura"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Yaw"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Tamaño"
+#, fuzzy
+msgid "Size:"
+msgstr "Tamaño: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Objetos Dibujados"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Cambios de Material"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Cambios de Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Cambios de Superficie"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Llamadas de Dibujado"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Vértices"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Vista Superior."
@@ -7590,6 +8026,11 @@ msgid "Freelook Slow Modifier"
msgstr "Modificador de Velocidad de Vista Libre"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Cambiar Tamaño de Cámara"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Rotación de Vista Trabada"
@@ -7609,6 +8050,11 @@ msgstr ""
"No se puede utilizar como un indicador fiable del rendimiento en el juego."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Convertir A %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Dialogo XForm"
@@ -7628,7 +8074,8 @@ msgstr ""
"opacas (\"x-ray\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Ajustar Nodos al Suelo"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7636,16 +8083,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "No se pudo encontrar un suelo sólido al que ajustar la selección."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Arrastrar: Rotar\n"
-"Alt+Arrastrar: Mover\n"
-"Alt+Click Der.: Selección en depth list"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Usar Espacio Local"
@@ -7654,6 +8091,10 @@ msgid "Use Snap"
msgstr "Usar Ajuste"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Vista Inferior"
@@ -7747,6 +8188,11 @@ msgid "View Grid"
msgstr "Ver Grilla"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Ajustes de Viewport"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Configuración..."
@@ -8036,11 +8482,6 @@ msgid "Snap Mode:"
msgstr "Modo de Ajuste:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Ninguno"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Ajustar a Pixeles"
@@ -8061,165 +8502,603 @@ msgid "Step:"
msgstr "Paso:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Sep.:"
+msgid "Separation:"
+msgstr "Separación:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "Región de Textura"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Agregar Todos los Items"
+#, fuzzy
+msgid "Colors"
+msgstr "Color"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Agregar Todos"
+#, fuzzy
+msgid "Fonts"
+msgstr "Tipografía"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Icono"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "StyleBox"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "No se encontró ningún sub-recurso."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Constantes"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Constante de color."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "No se encontró!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "No se encontró!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "No se encontró ningún sub-recurso."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Importar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Salir del editor?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analizando"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtro: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Seleccionar un Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Seleccioná una división para borrarla."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Selecciona un ítem primero!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Selecciona un ítem primero!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Selecciona un ítem primero!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Selecciona un ítem primero!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Selecciona un ítem primero!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Colapsar Todos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Expandir Todos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Elegir Archivo de Plantilla"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Seleccionar Puntos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Seleccionar Todo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importar Escena"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Quitar Todos los Ãtems"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Quitar Todos"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Remover Item"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Editar Tema"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Quitar Todos los Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Quitar Todos los Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Quitar Todos los Ãtems"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Menu de edición de temas."
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Quitar Todos los Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Agregar Items de Clases"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Agregar Items de Clases"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Agregar Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Agregar Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Agregar Todos los Items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Quitar Ãtems de Clases"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Quitar Ãtems de Clases"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Renombrar Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Renombrar Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Remover Item Seleccionado"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Archivo inválido. No es un layout de bus de audio."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Administrar Plantillas"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Ãtem Editable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Agregar Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Agregar Todos los Items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Remover Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Quitar Ãtems de Clases"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Crear Plantilla Vacía"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Quitar Ãtems de Clases"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Quitar Todos los Ãtems"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Items de Tema de la GUI"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Crear Plantilla de Editor Vacía"
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nombre de Nodo:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Crear Desde Tema de Editor Actual"
+#, fuzzy
+msgid "Import Items"
+msgstr "Importar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Por Defecto"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Editar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Eliminar Recurso"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Importar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Renombrar pista de animación"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Renombrar en Masa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Reemplazos(Overrides)"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Tipo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Agregar Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Tipo de nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Cargar Valores por Defecto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Reemplazos(Overrides)"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Administrar Plantillas de Exportación..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Vista Previa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Actualizar Vista Previa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Seleccioná una Mesh de Origen:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Botón de Conmutación"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Botón Desactivado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Ãtem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Desactivar Ãtem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Tildar Item"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Ãtem Tildado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Radio Ãtem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Radio Ãtem Tildado"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Separador con nombre."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Submenú"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Subítem 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Subítem 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Tiene"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Muchas"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "LineEdit Desactivado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Tab 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Tab 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Ãtem Editable"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Subárbol"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Tiene,Muchas,Opciones"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Tipo de Datos:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Icono"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Estilo"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Tipografía"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Color"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Archivo inválido. No es un layout de bus de audio."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Archivo de Tema"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8391,6 +9270,10 @@ msgid "Priority"
msgstr "Prioridad"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Icono"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z Index"
@@ -8725,11 +9608,6 @@ msgid "Commit Changes"
msgstr "Commitear Cambios"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Estado"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "Ver diferencias de archivos antes de commitearlos a la última versión"
@@ -9622,7 +10500,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Editar Propiedad Visual"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9751,7 +10630,8 @@ msgid "Script"
msgstr "Script"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Modo de Exportación de Scipts:"
#: editor/project_export.cpp
@@ -9759,19 +10639,21 @@ msgid "Text"
msgstr "Texto"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Compilado"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Encriptado (Proveer la Clave Debajo)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Clave de Encriptación Inválida (debe tener 64 caracteres de largo)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Clave de Encriptación de Script (256-bits como hex):"
#: editor/project_export.cpp
@@ -9846,7 +10728,8 @@ msgid "Imported Project"
msgstr "Proyecto Importado"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Nombre de Proyecto Inválido."
#: editor/project_manager.cpp
@@ -9882,6 +10765,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "No se pudo crear project.godot en la ruta de proyecto."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Error al abrir el archivo comprimido, no está en formato ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Los siguientes archivos no se pudieron extraer del paquete:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "El Paquete se instaló exitosamente!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Renombrar Proyecto"
@@ -10061,20 +10956,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "¿Estás seguro/a que querés ejecutar %d proyectos a la vez?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"¿Quitar %d proyectos de la lista?\n"
-"El contenido de las carpetas de proyecto no será modificado."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Seleccionar dispositivo de la lista"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"¿Quitar este proyecto de la lista?\n"
-"El contenido de la carpeta de proyecto no será modificado."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Seleccionar dispositivo de la lista"
#: editor/project_manager.cpp
msgid ""
@@ -10108,7 +10997,8 @@ msgid "Project Manager"
msgstr "Gestor de Proyectos"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Proyectos"
#: editor/project_manager.cpp
@@ -10120,10 +11010,25 @@ msgid "Last Modified"
msgstr "Ultima Modificación"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Exportar Proyecto"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Renombrar Proyecto"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Examinar"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Proyectos"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Seleccionar una Carpeta para Examinar"
@@ -10132,18 +11037,41 @@ msgid "New Project"
msgstr "Proyecto Nuevo"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Proyecto Importado"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Renombrar Proyecto"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Eliminar Faltantes"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Plantillas"
+msgid "About"
+msgstr "Acerca de"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Biblioteca de Assets"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Reiniciar Ahora"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Quitar Todos"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "No se puede ejecutar el proyecto"
@@ -10156,8 +11084,14 @@ msgstr ""
"¿Te gustaría explorar los ejemplos oficiales en la Biblioteca de Assets?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtrar propiedades"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10171,6 +11105,10 @@ msgid "Key "
msgstr "Tecla "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Bottón de Joystick"
@@ -10214,6 +11152,10 @@ msgstr "Todos los Dispositivos"
msgid "Device"
msgstr "Dispositivo"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Presionar una Tecla..."
@@ -10355,7 +11297,8 @@ msgid "Override for Feature"
msgstr "Sobreescribir para Característica"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Agregar Traducción"
#: editor/project_settings_editor.cpp
@@ -10363,11 +11306,13 @@ msgid "Remove Translation"
msgstr "Quitar Traducción"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Agregar Path Remapeado"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Remapear Recurso Agregar Remap"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Remapear Recurso Agregar Remap"
#: editor/project_settings_editor.cpp
@@ -10640,6 +11585,10 @@ msgid "Post-Process"
msgstr "Post-Procesado"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Estilo"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Conservar"
@@ -10806,12 +11755,30 @@ msgid "Delete node \"%s\"?"
msgstr "¿Eliminar nodo \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "No se puede realizar sobre el nodo raíz."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Esta operación no puede ser realizada en escenas instanciadas."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10872,6 +11839,10 @@ msgstr ""
"No se puede operar sobre los nodos de los cual hereda la escena actual!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Esta operación no puede ser realizada en escenas instanciadas."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Adjuntar Script"
@@ -10920,10 +11891,6 @@ msgid "Load As Placeholder"
msgstr "Cargar Como Placeholder"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Abrir Documentación"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11217,6 +12184,12 @@ msgstr ""
"editados con un editor externo."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Nombre de Clase:"
@@ -11285,6 +12258,10 @@ msgid "Copy Error"
msgstr "Copiar Error"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Mem. de Video"
@@ -11571,6 +12548,16 @@ msgstr "Diccionario de instancias inválido (subclases inválidas)"
msgid "Object can't provide a length."
msgstr "El objeto no puede proveer un largo."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exportar Librería de Meshes"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exportar..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Plano siguiente"
@@ -11612,6 +12599,11 @@ msgid "GridMap Paint"
msgstr "Pintar GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Llenar Selección en GridMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Mapa de Grilla"
@@ -11861,6 +12853,16 @@ msgid "Add Output Port"
msgstr "Agregar Puerto de Salida"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Cambiar Tipo"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Cambiar nombre del puerto de entrada"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Reemplazar(Override) una función integrada existente."
@@ -11973,6 +12975,11 @@ msgid "Add Preload Node"
msgstr "Agregar Nodo Preload"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Agregar Nodo"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Agregar Nodo(s) Desde Arbol"
@@ -12204,10 +13211,6 @@ msgstr "Buscar en VisualScript"
msgid "Get %s"
msgstr "Obtener %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Asignar %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Nombre de paquete faltante."
@@ -12240,6 +13243,40 @@ msgid "Select device from the list"
msgstr "Seleccionar dispositivo de la lista"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Exportar Todo"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Desinstalar"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Cargando, esperá, por favor..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "No se pudo instanciar la escena!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Ejecutando Script Personalizado..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "No se pudo crear la carpeta."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "No se pudo encontrar la herramienta 'apksigner'."
@@ -12357,6 +13394,48 @@ msgstr ""
"\"Export AAB\" sólo es válido cuando \"Use Custom Build\" está activado."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Examinando Archivos,\n"
+"Aguardá, por favor."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "No se pudo abrir la plantilla para exportar:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Agregando %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Exportar Todo"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
"¡Nombre de archivo inválido! Android App Bundle requiere la extensión *.aab."
@@ -12370,6 +13449,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "¡Nombre de archivo inválido! Android APK requiere la extensión *.apk."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12392,6 +13475,21 @@ msgstr ""
"'Proyecto'."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "No se pudo obtener project.godot en la ruta de proyecto."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "No se pudo escribir el archivo:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Construir Proyecto Android (gradle)"
@@ -12416,11 +13514,54 @@ msgstr ""
"No se puede copiar y renombrar el archivo de exportación, comprobá el "
"directorio del proyecto de gradle para ver los resultados."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "No se encontró la animación: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Creando contornos..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "No se pudo abrir la plantilla para exportar:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Agregando %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "No se pudo escribir el archivo:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Identificador no encontrado."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "El caracter '%s' no esta permitido como identificador."
@@ -12450,10 +13591,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Ejecutar HTML exportado en el navegador por defecto del sistema."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "No se pudo escribir el archivo:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "No se pudo abrir la plantilla para exportar:"
@@ -12462,16 +13599,49 @@ msgid "Invalid export template:"
msgstr "Plantilla de exportación inválida:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "No se pudo escribir el archivo:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "No se pudo escribir el archivo:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "No se pudo leer el shell HTML personalizado:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "No se pudo leer la imagen de boot splash:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "No se pudo crear la carpeta."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Usando imagen boot splash por defecto."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Error al guardar escena."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Identificador inválido:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12910,6 +14080,13 @@ msgstr ""
"Las GIProbes no están soportadas por el controlador de video GLES2.\n"
"Usá un BakedLightmap en su lugar."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12996,6 +14173,18 @@ msgstr "La unión no está conectada a ningún PhysicsBody"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "El nodo A y el nodo B deben ser diferentes PhysicsBody"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -13004,6 +14193,46 @@ msgstr ""
"La propiedad \"Remote Path\" debe apuntar a un nodo Spatial o derivado de "
"Spatial válido para que funcione."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Este cuerpo será ignorado hasta que se establezca un mesh."
@@ -13066,6 +14295,10 @@ msgstr "En el nodo BlendTree '%s', no se encontró la animación: '%s'"
msgid "Animation not found: '%s'"
msgstr "No se encontró la animación: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "En el nodo '%s', animación inválida: '%s'."
@@ -13239,6 +14472,27 @@ msgid "Invalid comparison function for that type."
msgstr "Función de comparación inválida para este tipo."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Solo se pueden asignar variaciones en funciones de vértice."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Asignación a función."
@@ -13247,13 +14501,180 @@ msgid "Assignment to uniform."
msgstr "Asignación a uniform."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Solo se pueden asignar variaciones en funciones de vértice."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Las constantes no pueden modificarse."
+#~ msgid "Package Contents:"
+#~ msgstr "Contenido del Paquete:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "¿Borrar perfil '%s'? (no se puede deshacer)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Propiedades Activadas:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Características Activadas:"
+
+#~ msgid "Unset"
+#~ msgstr "Desactivar"
+
+#~ msgid "Class Options"
+#~ msgstr "Opciones de Clase"
+
+#~ msgid "Set"
+#~ msgstr "Asignar"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Se guardaron %s recurso(s) modificado(s)."
+
+#~ msgid "Q&A"
+#~ msgstr "Q&A"
+
+#~ msgid "Status:"
+#~ msgstr "Estado:"
+
+#~ msgid "Edit:"
+#~ msgstr "Editar:"
+
+#~ msgid "Redownload"
+#~ msgstr "Volver a Descargar"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Instalado)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Faltante)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Solicitud fallida."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Bucle de redireccionamiento."
+
+#~ msgid "Download Complete."
+#~ msgstr "Descarga Completa."
+
+#~ msgid "Remove Template"
+#~ msgstr "Remover Plantilla"
+
+#~ msgid "Download Templates"
+#~ msgstr "Descargar Plantillas"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr ""
+#~ "Seleccionar un mirror de la lista: (Shift+Click: Abrir en el Navegador)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Mover a La Papelera"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Expandir Todas las Propiedades"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Colapsar Todas las Propiedades"
+
+#~ msgid "Copy Params"
+#~ msgstr "Copiar Parámetros"
+
+#~ msgid "Open in Help"
+#~ msgstr "Abrir en la Ayuda"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Reemplazar Cámara del Juego\n"
+#~ "No hay ninguna instancia de juego ejecutándose."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Arrastrar: Rotar"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Presioná 'v' para Cambiar el Pivote, 'Shift+v' para Arrastrar el Pivote "
+#~ "(al mover)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+Click Der.: Selección en depth list"
+
+#~ msgid "Clone Down"
+#~ msgstr "Clonar hacia Abajo"
+
+#~ msgid "Yaw"
+#~ msgstr "Yaw"
+
+#~ msgid "Size"
+#~ msgstr "Tamaño"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Arrastrar: Rotar\n"
+#~ "Alt+Arrastrar: Mover\n"
+#~ "Alt+Click Der.: Selección en depth list"
+
+#~ msgid "Sep.:"
+#~ msgstr "Sep.:"
+
+#~ msgid "Add All"
+#~ msgstr "Agregar Todos"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Menu de edición de temas."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Crear Plantilla Vacía"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Crear Plantilla de Editor Vacía"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Crear Desde Tema de Editor Actual"
+
+#~ msgid "Data Type:"
+#~ msgstr "Tipo de Datos:"
+
+#~ msgid "Theme File"
+#~ msgstr "Archivo de Tema"
+
+#~ msgid "Compiled"
+#~ msgstr "Compilado"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "¿Quitar %d proyectos de la lista?\n"
+#~ "El contenido de las carpetas de proyecto no será modificado."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "¿Quitar este proyecto de la lista?\n"
+#~ "El contenido de la carpeta de proyecto no será modificado."
+
+#~ msgid "Templates"
+#~ msgstr "Plantillas"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Agregar Path Remapeado"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "No se puede realizar sobre el nodo raíz."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "No se pudo leer la imagen de boot splash:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Usando imagen boot splash por defecto."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Un reproductor de animación no puede animarse a sí mismo, solo a otros "
@@ -13363,9 +14784,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgstr ""
#~ "La escena actual nunca se guardó. Favor de guardarla antes de ejecutar."
-#~ msgid "Not in resource path."
-#~ msgstr "No está en la ruta de recursos."
-
#~ msgid "Revert"
#~ msgstr "Revertir"
@@ -13469,9 +14887,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Input"
#~ msgstr "Entrada"
-#~ msgid "Properties:"
-#~ msgstr "Propiedades:"
-
#~ msgid "Methods:"
#~ msgstr "Métodos:"
@@ -13786,9 +15201,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Connect two points to make a split."
#~ msgstr "Conectar dos puntos para crear una división."
-#~ msgid "Select a split to erase it."
-#~ msgstr "Seleccioná una división para borrarla."
-
#~ msgid "Add Node.."
#~ msgstr "Agregar Nodo.."
@@ -13857,9 +15269,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Public Methods:"
#~ msgstr "Métodos Públicos:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Items de Tema de la GUI"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Items de Tema de la GUI:"
@@ -13881,9 +15290,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Match case"
#~ msgstr "Coincidir mayúsculas/minúsculas"
-#~ msgid "Filter: "
-#~ msgstr "Filtro: "
-
#~ msgid "Ok"
#~ msgstr "Ok"
@@ -13921,9 +15327,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Rotate 270 degrees"
#~ msgstr "Rotar 270 grados"
-#~ msgid "Variable"
-#~ msgstr "Variable"
-
#~ msgid "Errors:"
#~ msgstr "Errores:"
@@ -14014,9 +15417,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Set Transitions to:"
#~ msgstr "Establecer Transiciones a:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Renombrar pista de animación"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Cambiar Interpolación de Track de Anim"
@@ -14167,12 +15567,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "StyleBox Preview:"
#~ msgstr "Vista Previa de StyleBox:"
-#~ msgid "StyleBox"
-#~ msgstr "StyleBox"
-
-#~ msgid "Separation:"
-#~ msgstr "Separación:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Editor de Regiones de Texturas"
@@ -14251,12 +15645,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "No se pudo obtener project.godot en la ruta de proyecto."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "No se pudo obtener project.godot en la ruta de proyecto."
-
-#~ msgid "Not found!"
-#~ msgstr "No se encontró!"
-
#~ msgid "Replace By"
#~ msgstr "Reemplazar Por"
@@ -14631,9 +16019,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "Calidad de Compresión de Textura (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "Opciones de Textura"
-
#~ msgid "Please specify some files!"
#~ msgstr "Por favor especificá algunos archivos!"
@@ -14796,9 +16181,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Zoom Set..."
#~ msgstr "Setear Zoom..."
-#~ msgid "Set a Value"
-#~ msgstr "Setear un Valor"
-
#~ msgid "Parse BBCode"
#~ msgstr "Parsear BBCode"
@@ -14928,9 +16310,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "Instance at Cursor"
#~ msgstr "Instancia en Cursor"
-#~ msgid "Could not instance scene!"
-#~ msgstr "No se pudo instanciar la escena!"
-
#~ msgid "Use Default Light"
#~ msgstr "Usar Luz por Defecto"
@@ -15007,9 +16386,6 @@ msgstr "Las constantes no pueden modificarse."
#~ msgid "City"
#~ msgstr "Ciudad"
-#~ msgid "State"
-#~ msgstr "Estado"
-
#~ msgid "2 letter country code"
#~ msgstr "Código de país de dos letras"
diff --git a/editor/translations/et.po b/editor/translations/et.po
index 05a414f5a9..6f8561f8ab 100644
--- a/editor/translations/et.po
+++ b/editor/translations/et.po
@@ -10,7 +10,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2021-05-10 15:32+0000\n"
+"PO-Revision-Date: 2021-07-16 05:47+0000\n"
"Last-Translator: Kritzmensch <streef.gtx@gmail.com>\n"
"Language-Team: Estonian <https://hosted.weblate.org/projects/godot-engine/"
"godot/et/>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.7-dev\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -517,7 +517,8 @@ msgstr "Sekundid"
msgid "FPS"
msgstr "K/S"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -543,7 +544,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -564,6 +566,10 @@ msgid "Go to Previous Step"
msgstr "Mine Eelmisele Sammule"
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimiseeri Animatsiooni"
@@ -580,6 +586,11 @@ msgid "Use Bezier Curves"
msgstr "Kasuta Bezieri Kurve"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Kleebi rajad"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -628,7 +639,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -714,12 +725,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -774,11 +787,9 @@ msgid "Add"
msgstr "Lisa"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -828,6 +839,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -898,8 +910,9 @@ msgid "Edit..."
msgstr "Muuda..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
-msgstr ""
+#, fuzzy
+msgid "Go to Method"
+msgstr "Mine järmisesse kausta."
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -913,6 +926,14 @@ msgstr "Muuda"
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -934,8 +955,8 @@ msgstr "Otsi:"
msgid "Matches:"
msgstr "Vasted:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1008,16 +1029,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1062,7 +1085,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1090,7 +1113,7 @@ msgstr "Suur tänu Godot kogukonnalt!"
#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp
msgid "Click to copy."
-msgstr ""
+msgstr "Klõpsa, et kopeerida."
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
@@ -1187,28 +1210,36 @@ msgstr "Komponendid"
msgid "Licenses"
msgstr "Litsensid"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "%s (already exists)"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "(and %s more files)"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "Asset \"%s\" installed successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
@@ -1216,17 +1247,14 @@ msgstr ""
msgid "Success!"
msgstr "Õnnestus!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr ""
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Paigalda"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
-msgstr ""
+#, fuzzy
+msgid "Asset Installer"
+msgstr "Paigalda"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
@@ -1289,8 +1317,9 @@ msgid "Bypass"
msgstr "Jäta vahele"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "Klassi valikud"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1369,7 +1398,7 @@ msgstr "Lisa siin"
msgid "Add a new Audio Bus to this layout."
msgstr "Lisa uus helisiin sellele paigutusele."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1456,6 +1485,15 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Faili ei ole olemas."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1471,16 +1509,16 @@ msgid "Node Name:"
msgstr "Sõlme nimi:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nimi"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Kleebi parameetrid"
@@ -1496,7 +1534,7 @@ msgstr "Salvestan kohalikud muudatused..."
msgid "Updating scene..."
msgstr "Värskendan stseeni..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[tühi]"
@@ -1653,7 +1691,48 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Praegune)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1686,15 +1765,18 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Lubatud atribuudid:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Atribuudid"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+#, fuzzy
+msgid "Main Features:"
msgstr "Lubatud funktsioonid:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Lubatud klassid:"
#: editor/editor_feature_profile.cpp
@@ -1714,25 +1796,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Viga profiili salvestamisel teele: '% s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Laadi vaikimisi"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Praegune profiil:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr ""
+#, fuzzy
+msgid "Create Profile"
+msgstr "Kustuta profiil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Uus"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Kustuta profiil"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Saadaolevad profiilid:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Impordi"
@@ -1741,20 +1832,22 @@ msgid "Export"
msgstr "Ekspordi"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Saadaolevad profiilid:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Praegune profiil:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Klassi valikud"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Klassi valikud:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Uus profiilinimi:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Kustuta profiil"
+msgid "New profile name:"
+msgstr "Uus profiilinimi:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1777,7 +1870,8 @@ msgid "Select Current Folder"
msgstr "Valige praegune kaust"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Fail on olemas, kirjutate üle?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1831,9 +1925,10 @@ msgid "Open a File or Directory"
msgstr "Ava kaust või kataloog"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Salvesta"
@@ -1914,8 +2009,7 @@ msgid "Directories & Files:"
msgstr "Kataloogid ja failid:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Eelvaade:"
@@ -1988,7 +2082,7 @@ msgstr "Teema atribuudid"
msgid "Enumerations"
msgstr "Loetelu"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstandid"
@@ -2073,7 +2167,7 @@ msgstr "Meetod"
msgid "Signal"
msgstr "Signaal"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstant"
@@ -2089,9 +2183,10 @@ msgstr "Teema atribuut"
msgid "Property:"
msgstr "Atribuut:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Sea"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2106,7 +2201,7 @@ msgid "Copy Selection"
msgstr "Kopeeri valik"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2170,7 +2265,8 @@ msgid "Imported resources can't be saved."
msgstr "Imporditud ressursse ei saa salvestada."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Olgu"
@@ -2369,18 +2465,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Salvesta stseen kui..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2558,7 +2658,7 @@ msgstr ""
msgid "Default"
msgstr "Vaikimisi"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Kuva failikuvajas"
@@ -2739,6 +2839,11 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Praegune profiil:"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Välju ja kuva projektide loetelu"
@@ -2872,20 +2977,24 @@ msgstr ""
msgid "Help"
msgstr "Abi"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Veebidokumentatsioonid"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Ava dokumentatsioon"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Küsimused & vastused"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Teavita veast"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Saada dokumentatsioonide tagasiside"
@@ -2894,7 +3003,8 @@ msgid "Community"
msgstr "Kogukond"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Teave"
#: editor/editor_node.cpp
@@ -2991,6 +3101,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3017,7 +3135,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3058,6 +3176,11 @@ msgid "Select"
msgstr "Vali"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Valige praegune kaust"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3089,6 +3212,10 @@ msgstr "Hoiatus!"
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3113,34 +3240,35 @@ msgstr "Paigaldatud pistikprogrammid:"
msgid "Update"
msgstr "Uuenda"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versioon:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Olek:"
+#, fuzzy
+msgid "Author"
+msgstr "Autorid"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Muuda:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Olek"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Mõõda:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Kaadri aeg (sek)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Average Time (ms)"
+msgstr "Kaadri aeg (sek)"
#: editor/editor_profiler.cpp
msgid "Frame %"
@@ -3159,6 +3287,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Kaader nr:"
@@ -3200,12 +3338,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3223,40 +3355,6 @@ msgid "Pick a Viewport"
msgstr "Vali vaateaken"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Uus skript"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Laienda skripti"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Kleebi"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3285,6 +3383,47 @@ msgstr "Uus väärtus:"
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Kleebi"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Teisenda..."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Uus skript"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Laienda skripti"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3317,7 +3456,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3337,64 +3476,71 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Paigaldatud)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Faili '%s' ei ole eksisteeri."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Puudub)"
+msgid "Error requesting URL:"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Praegune)"
+msgid "Connecting to the mirror..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3402,7 +3548,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3412,135 +3562,168 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
+msgid "Can't Connect"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Connected"
+msgstr "Ühendatud"
+
+#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Current Version:"
+msgstr "Praegune versioon:"
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
-msgstr "Ühendatud"
+msgid "Export templates are installed and ready to be used."
+msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+#, fuzzy
+msgid "Open Folder"
+msgstr "Ava fail"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
-msgstr "Praegune versioon:"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Official export templates aren't available for development builds."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Install from File"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Install templates from a local file."
msgstr ""
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Tühista"
+
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Paigaldatud pistikprogrammid:"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Select Template File"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Godot Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3666,29 +3849,60 @@ msgstr "Uus skript..."
msgid "New Resource..."
msgstr "Uus ressurss..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Laienda kõik"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Ahenda kõik"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplikeeri..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Otsi faile"
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Name (Ascending)"
msgstr ""
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplikeeri..."
+
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Muuda nime..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Eelmine kaust/fail"
@@ -3768,10 +3982,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Tühista"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3995,53 +4205,53 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Atribuudid"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Salvest kui..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Atribuudid"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr ""
+msgid "Save the currently edited resource."
+msgstr "Salvesta käesolevalt muudetud ressurss."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr ""
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Salvest kui..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr ""
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Ei ole ressursiteel."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Salvesta käesolevalt muudetud ressurss."
+msgid "Make Resource Built-In"
+msgstr ""
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4056,14 +4266,24 @@ msgid "History of recently edited objects."
msgstr "Hiljuti muudetud objektide ajalugu."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Objekti atribuudid."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Ava dokumentatsioon"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Ava dokumentatsioon"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtreeri atribuudid"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Objekti atribuudid."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Muudatused võivad kaduma minna!"
@@ -4091,6 +4311,15 @@ msgstr "Pistikprogrammi nimi:"
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versioon:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Keel:"
@@ -4290,8 +4519,9 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
-msgstr ""
+#, fuzzy
+msgid "Parameter Changed:"
+msgstr "Materjali muutused"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -4504,6 +4734,11 @@ msgid "Animation"
msgstr "Animatsioon"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Uus"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4840,10 +5075,18 @@ msgid "View Files"
msgstr "Kuva failid"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4852,15 +5095,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4888,6 +5135,10 @@ msgid "Timeout."
msgstr "Aeg maha."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4988,7 +5239,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5031,6 +5286,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5039,8 +5298,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5274,15 +5533,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5336,6 +5596,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5347,19 +5608,25 @@ msgid "Select Mode"
msgstr "Valimisrežiim"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5591,6 +5858,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Sisesta võti siia"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5603,6 +5879,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5843,6 +6159,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5875,7 +6195,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5934,13 +6254,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5994,7 +6326,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6266,7 +6597,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6570,6 +6902,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Liiguta Bezieri punkte"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Liiguta Bezieri punkte"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6773,7 +7123,7 @@ msgstr "Käivita"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Otsi"
@@ -6804,6 +7154,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Veebidokumentatsioonid"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6926,8 +7281,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Vali Kõik"
@@ -6960,10 +7315,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7115,6 +7466,28 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Pööramisrežiim"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Tõlked"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Skaleerimisrežiim"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7135,42 +7508,54 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Frontaal"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Sagitaal"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr ""
+#, fuzzy
+msgid "Size:"
+msgstr "Suurus: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Objekte kuvatud"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Materjali muutused"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Varjutaja muutused"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Pinna muutused"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Kuvamise kutsungid"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Tipud"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr ""
@@ -7244,7 +7629,7 @@ msgstr "Kuva tavaliselt"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Wireframe"
-msgstr "Kuva traadiraamina"
+msgstr "Kuva traatraamina"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Overdraw"
@@ -7323,6 +7708,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Vaateakna pöördenurk on lukustatud"
@@ -7338,6 +7727,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Teisenda..."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7351,7 +7745,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7359,13 +7753,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Kasuta kohalikku ruumi"
@@ -7374,6 +7761,10 @@ msgid "Use Snap"
msgstr "Kasuta naksamist"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Altvaade"
@@ -7467,6 +7858,11 @@ msgid "View Grid"
msgstr "Kuva ruudustik"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Vaateakna sätted"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Sätted..."
@@ -7756,11 +8152,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7781,164 +8172,563 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Versioon:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstandid"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Ainult konstandid"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "(Taas)impordin varasid"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Välju redaktorist?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analüüsin"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtreeri sõlmed"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible icon items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible stylebox items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Andmetüüp:"
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+#, fuzzy
+msgid "Collapse types."
+msgstr "Ahenda kõik"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Laienda kõik"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Vali Kõik"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Kustuta Valitud Võti (Võtmed)"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Eemalda kõik katkepunktid"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Nimeta ümber"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Eemalda kõik katkepunktid"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Eemalda kõik katkepunktid"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Eemalda kõik katkepunktid"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Eemalda kõik katkepunktid"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Lisa lemmikutesse"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konstant"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Vigane fial, ei ole heliliini paigutus."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Tüüp:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Tüüp:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Eemalda"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Sõlme nimi:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Impordi kui:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Vaikimisi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Redaktor"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Another Theme"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Confirm Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Tüüp"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Sõlme nimi:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Laadi vaikimisi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Salvesta kõik"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Eelvaade"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Kinemaatiline eelvaade"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Salvesta stseen"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Vigane fial, ei ole heliliini paigutus."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8107,6 +8897,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8427,11 +9221,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Olek"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9251,8 +10040,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "Atribuut:"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9366,7 +10156,7 @@ msgid "Script"
msgstr "Skript"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9374,7 +10164,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9382,11 +10172,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9459,8 +10249,9 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
-msgstr ""
+#, fuzzy
+msgid "Invalid project name."
+msgstr "Vigane nimi."
#: editor/project_manager.cpp
msgid "Couldn't create folder."
@@ -9493,6 +10284,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9642,15 +10445,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9677,7 +10476,8 @@ msgid "Project Manager"
msgstr "projektihaldur"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projektid"
#: editor/project_manager.cpp
@@ -9689,10 +10489,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Projekt"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Otsi"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projektid"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9701,18 +10516,41 @@ msgid "New Project"
msgstr "Uus projekt"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Impordi profiil(id)"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Uus projekt"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Eemalda puuduvad"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Mallid"
+msgid "About"
+msgstr "Teave"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Vadade kogum"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Projekti ei saa käivitada"
@@ -9723,8 +10561,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtreeri atribuudid"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9734,6 +10577,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9775,6 +10622,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9914,19 +10765,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Tõlked"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10195,6 +11047,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10359,11 +11215,29 @@ msgid "Delete node \"%s\"?"
msgstr "Kustuta sõlm \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10419,6 +11293,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Manusta skript"
@@ -10466,10 +11344,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Ava dokumentatsioon"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10740,6 +11614,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10808,6 +11688,10 @@ msgid "Copy Error"
msgstr "Kopeeri viga"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Videomälu"
@@ -11092,6 +11976,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Ekspordi võrgu kogum"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Ekspordi..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11133,6 +12027,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Kopeeri valik"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11375,6 +12274,16 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Muuda tüüpi"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Muuda raja teed"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11483,6 +12392,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Kustuta sõlm(ed)"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11706,10 +12620,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11739,6 +12649,36 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Ekspordi..."
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Ei saanud luua kausta."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11835,6 +12775,43 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Sätted..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11847,6 +12824,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11861,6 +12842,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11880,11 +12874,52 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Paigutuse nime ei leitud!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Sätted..."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Ei saanud luua kausta."
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11913,10 +12948,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr ""
@@ -11925,15 +12956,47 @@ msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Ei saanud luua kausta."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "Ei saanud luua kausta."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Ei saanud luua kausta."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Viga TileSeti salvestamisel!"
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12282,6 +13345,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12351,12 +13421,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12405,6 +13527,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12552,21 +13678,67 @@ msgid "Invalid comparison function for that type."
msgstr "Vigane võrdlusfinktsioon selle tüübi jaoks."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
-msgstr "Funktsiooni määramine."
+msgid "Varying may not be assigned in the '%s' function."
+msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr "Funktsiooni määramine."
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Konstante ei saa muuta."
+#~ msgid "Enabled Properties:"
+#~ msgstr "Lubatud atribuudid:"
+
+#~ msgid "Set"
+#~ msgstr "Sea"
+
+#~ msgid "Q&A"
+#~ msgstr "Küsimused & vastused"
+
+#~ msgid "Status:"
+#~ msgstr "Olek:"
+
+#~ msgid "Edit:"
+#~ msgstr "Muuda:"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Paigaldatud)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Puudub)"
+
+#~ msgid "Yaw"
+#~ msgstr "Sagitaal"
+
+#~ msgid "Data Type:"
+#~ msgstr "Andmetüüp:"
+
+#~ msgid "Templates"
+#~ msgstr "Mallid"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "AnimationPlayer ei saa animeerida iseennast, ainult teisi mängijaid."
@@ -12576,6 +13748,3 @@ msgstr "Konstante ei saa muuta."
#~ msgid "Error trying to save layout!"
#~ msgstr "Viga paigutuse salvestamisel!"
-
-#~ msgid "Not in resource path."
-#~ msgstr "Ei ole ressursiteel."
diff --git a/editor/translations/eu.po b/editor/translations/eu.po
index 87c91de10e..018f65b79e 100644
--- a/editor/translations/eu.po
+++ b/editor/translations/eu.po
@@ -5,18 +5,19 @@
# Julen Irazoki <rktzbkr.julen@gmail.com>, 2019.
# Osoitz <oelkoro@gmail.com>, 2019, 2020.
# Erik Zubiria <erik@ezsd.net>, 2021.
+# Sergio Varela <sergitroll9@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2021-06-20 13:35+0000\n"
-"Last-Translator: Erik Zubiria <erik@ezsd.net>\n"
+"PO-Revision-Date: 2021-07-29 02:34+0000\n"
+"Last-Translator: Sergio Varela <sergitroll9@gmail.com>\n"
"Language-Team: Basque <https://hosted.weblate.org/projects/godot-engine/"
"godot/eu/>\n"
"Language: eu\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.7\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -435,11 +436,11 @@ msgstr "Gehitu Pistaren Transformazio Giltza"
#: editor/animation_track_editor.cpp
msgid "Add Track Key"
-msgstr ""
+msgstr "Gehitu pista-gakoa"
#: editor/animation_track_editor.cpp
msgid "Track path is invalid, so can't add a method key."
-msgstr ""
+msgstr "Sarbideak ez du balio, eta, beraz, ezin da metodo-gakorik gehitu."
#: editor/animation_track_editor.cpp
msgid "Add Method Track Key"
@@ -517,7 +518,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -543,7 +545,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -564,6 +567,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -580,6 +587,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -628,7 +639,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -714,12 +725,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -774,11 +787,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -828,6 +839,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -897,8 +909,9 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
-msgstr ""
+#, fuzzy
+msgid "Go to Method"
+msgstr "Joan hurrengo karpetara."
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -912,6 +925,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -933,8 +954,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1008,8 +1029,9 @@ msgstr "Hauen jabeak:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Kendu hautatutako fitxategiak proiektutik? (Ezin izango da berreskuratu)"
@@ -1018,8 +1040,9 @@ msgstr ""
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Kendu beharreko fitxategiak beste baliabide batzuek behar dituzte funtziona "
"dezaten.\n"
@@ -1067,7 +1090,7 @@ msgstr "Baliabide umezurtzen arakatzailea"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1191,28 +1214,40 @@ msgstr "Osagaiak"
msgid "Licenses"
msgstr "Lizentziak"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Errorea pakete fitxategia irekitzean, ez dago ZIP formatuan."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Errorea pakete fitxategia irekitzean (ez dago ZIP formatuan)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (jada existitzen da)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Aktiboak deskonprimatzen"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Eta beste %s fitxategi."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paketea ondo instalatu da!"
#: editor/editor_asset_installer.cpp
@@ -1220,16 +1255,13 @@ msgstr "Paketea ondo instalatu da!"
msgid "Success!"
msgstr "Arrakasta!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Paketearen edukia:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instalatu"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Pakete instalatzailea"
#: editor/editor_audio_buses.cpp
@@ -1293,8 +1325,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "Klaseko aukerak"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1373,7 +1406,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1460,6 +1493,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1475,16 +1516,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1500,7 +1541,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1639,7 +1680,48 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Unekoa)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1671,15 +1753,17 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr ""
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Propietateak"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr ""
+#, fuzzy
+msgid "Main Features:"
+msgstr "Ezaugarriak"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1697,7 +1781,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1705,17 +1789,25 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr ""
+#, fuzzy
+msgid "Create Profile"
+msgstr "Ezabatu profila"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Ezabatu profila"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Eskuragarri dauden profilak:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1724,20 +1816,21 @@ msgid "Export"
msgstr "Esportatu"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Eskuragarri dauden profilak:"
+msgid "Configure Selected Profile:"
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+#, fuzzy
+msgid "Extra Options:"
msgstr "Klaseko aukerak"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Profilaren izen berria:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Ezabatu profila"
+msgid "New profile name:"
+msgstr "Profilaren izen berria:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1760,7 +1853,8 @@ msgid "Select Current Folder"
msgstr "Hautatu uneko karpeta"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Fitxategia badago aurretik, gainidatzi?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1814,9 +1908,10 @@ msgid "Open a File or Directory"
msgstr "Ireki fitxategia edo direktorioa"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Gorde"
@@ -1897,8 +1992,7 @@ msgid "Directories & Files:"
msgstr "Direktorioak eta fitxategiak:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Aurrebista:"
@@ -1969,7 +2063,7 @@ msgstr "Azalaren propietateak"
msgid "Enumerations"
msgstr "Enumerazioak"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstanteak"
@@ -2054,7 +2148,7 @@ msgstr "Metodoa"
msgid "Signal"
msgstr "Seinalea"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstantea"
@@ -2070,8 +2164,9 @@ msgstr "Azalaren propietatea"
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2087,7 +2182,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2151,7 +2246,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2345,18 +2441,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2527,7 +2627,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2708,6 +2808,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Baliabide umezurtzen arakatzailea..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Hautatu uneko karpeta"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Irten proiektuen zerrendara"
@@ -2840,20 +2945,24 @@ msgstr "Kudeatu esportazio txantiloiak..."
msgid "Help"
msgstr "Laguntza"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
msgstr "Lineako dokumentuak"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Galdera-erantzunak"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Eman akats baten berri"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2862,7 +2971,8 @@ msgid "Community"
msgstr "Komunitatea"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Honi buruz"
#: editor/editor_node.cpp
@@ -2959,6 +3069,15 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Instalatu fitxategitik"
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2985,7 +3104,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3026,6 +3145,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Hautatu uneko karpeta"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3057,6 +3181,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3081,21 +3209,20 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr ""
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
+msgstr "Bertsio kontrola"
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr ""
+#, fuzzy
+msgid "Author"
+msgstr "Egileak"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3103,11 +3230,12 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "Denbora (s): "
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3127,6 +3255,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3168,12 +3306,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3191,22 +3323,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3220,37 +3375,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3285,7 +3423,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3305,64 +3443,75 @@ msgid "Import From Node:"
msgstr "Inportatu nodotik:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Berriro jaitsi"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Desinstalatu"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Instalatuta)"
+msgid "There are no mirrors available."
+msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Jaitsi"
+msgid "Retrieving the mirror list..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Falta da)"
+msgid "Error requesting URL:"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Unekoa)"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Konexio-errorea"
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
-msgstr ""
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Ezin duzu ostalariaren izena ebatzi:"
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr ""
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Ezin da ostalariarekin konektatu:"
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr ""
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Ostalariaren erantzunik ez:"
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
+msgstr "Eskaerak huts egin du."
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Eskaerak huts egin du."
+
+#: editor/export_template_manager.cpp
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Cannot remove temporary file:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3370,7 +3519,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3382,135 +3535,172 @@ msgstr ""
"ofizialentzat besterik ez dago."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Jaitsiera osatuta."
+msgid "Downloading"
+msgstr "Jaisten"
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr ""
+msgid "Connection Error"
+msgstr "Konexio-errorea"
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Kudeatu esportazio txantiloiak..."
+
+#: editor/export_template_manager.cpp
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Export Template Manager"
+msgstr "Esportazio-txantiloi kudeatzailea"
+
+#: editor/export_template_manager.cpp
+msgid "Current Version:"
+msgstr "Uneko bertsioa:"
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
-msgstr "Jaisten"
+#, fuzzy
+msgid "Open Folder"
+msgstr "Ireki fitxategi bat"
#: editor/export_template_manager.cpp
-msgid "Connection Error"
-msgstr "Konexio-errorea"
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Uninstall"
+msgstr "Desinstalatu"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+#, fuzzy
+msgid "Download from:"
+msgstr "Jaitsiera errorea"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
-msgstr "Uneko bertsioa:"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Instalatutako bertsioak:"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+#, fuzzy
+msgid "Install from File"
msgstr "Instalatu fitxategitik"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Kendu txantiloia"
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Hautatu txantiloi fitxategia"
+msgid "Cancel the download of the templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Godot esportazio-txantiloiak"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Instalatutako bertsioak:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Esportazio-txantiloi kudeatzailea"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Desinstalatu"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Jaitsi txantiloiak"
+msgid "Select Template File"
+msgstr "Hautatu txantiloi fitxategia"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Godot Export Templates"
+msgstr "Godot esportazio-txantiloiak"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3636,22 +3826,49 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Bilatu fitxategiak"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3659,6 +3876,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3740,10 +3961,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3968,52 +4185,52 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Propietateak"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Propietateak"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Ez dago animazio baliabiderik arbelean!"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4029,7 +4246,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4037,6 +4258,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4064,6 +4289,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4263,7 +4497,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4477,6 +4711,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4813,10 +5052,18 @@ msgid "View Files"
msgstr "Ikusi fitxategiak"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Jaitsi"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Konexio errorea, saiatu berriro."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Ezin da ostalariarekin konektatu:"
@@ -4825,16 +5072,20 @@ msgid "No response from host:"
msgstr "Ostalariaren erantzunik ez:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Ezin duzu ostalariaren izena ebatzi:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Eskaerak huts egin du, itzulera-kodea:"
+msgid "Can't resolve."
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Eskaerak huts egin du."
+msgid "Request failed, return code:"
+msgstr "Eskaerak huts egin du, itzulera-kodea:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -4861,6 +5112,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Jaitsiera hash okerra, fitxategia aldatua izan delakoan."
@@ -4961,7 +5216,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5004,6 +5263,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr "Aktiboen ZIP fitxategia"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5012,8 +5275,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5248,15 +5511,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5310,6 +5574,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5321,19 +5586,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+msgid "V: Set selected node's pivot position."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5565,6 +5836,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Editatu nodo-iragazkiak"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Txertatu gakoa hemen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5577,6 +5858,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5817,6 +6138,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5849,7 +6174,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5908,13 +6233,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5968,7 +6305,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6240,7 +6576,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6544,6 +6881,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Mugitu Bezier puntuak"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Mugitu Bezier puntuak"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6747,7 +7102,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Bilatu"
@@ -6778,6 +7133,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Lineako dokumentuak"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6900,8 +7260,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6934,10 +7294,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7089,6 +7445,26 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Translazio atzikitzea:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7109,39 +7485,44 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "Propietateak"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7297,6 +7678,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Txandakatu gogokoa"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7312,6 +7698,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7325,7 +7715,8 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Atxikitu nodoak lurrera"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7333,13 +7724,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Ez da hautapena atxikitzeko lur trinkorik aurkitu."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr ""
@@ -7348,6 +7732,10 @@ msgid "Use Snap"
msgstr "Erabili atxikitzea"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr ""
@@ -7441,6 +7829,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7730,11 +8122,6 @@ msgid "Snap Mode:"
msgstr "Atxikitze modua:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Pixel atxikitzea"
@@ -7755,165 +8142,564 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Enumerazioak"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
-msgstr "Kendu elementu guztiak"
+msgid "Icons"
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Kendu guztiak"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Editatu azala"
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No colors found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstanteak"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Azalaren edizio menua."
+#, fuzzy
+msgid "No constants found."
+msgstr "Konstanteak bakarrik"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Sortu editorearen uneko azaletik"
+msgid "{num} stylebox(es)"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Inportatu azala"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+#, fuzzy
+msgid "Filter:"
+msgstr "Iragazkiak..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible icon items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Deselect all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Select all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible stylebox items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Deselect all visible stylebox items."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Hautatu txantiloi fitxategia"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Erakutsi guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Inportatu azala"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Azal fitxategia"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konstantea"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Editatu azala"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Kendu elementu guztiak"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Inportatu azala"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Birkargatu azala"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Editatu azala"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Bilatu ordezko baliabidea:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Inportatu azala"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Konfiguratu atxikitzea"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "gainidatzi:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Inportatu profila(k)"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "gainidatzi:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Azala"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Kudeatu esportazio txantiloiak..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Aurrebista:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Aurrebista:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8081,6 +8867,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8399,11 +9189,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9223,7 +10008,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9338,7 +10123,7 @@ msgid "Script"
msgstr "Scripta"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9346,19 +10131,19 @@ msgid "Text"
msgstr "Testua"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Konpilatuta"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9431,8 +10216,9 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
-msgstr ""
+#, fuzzy
+msgid "Invalid project name."
+msgstr "Animazio izen baliogabea!"
#: editor/project_manager.cpp
msgid "Couldn't create folder."
@@ -9465,6 +10251,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Errorea pakete fitxategia irekitzean, ez dago ZIP formatuan."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Paketea ondo instalatu da!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9611,15 +10409,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9646,8 +10440,9 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
-msgstr ""
+#, fuzzy
+msgid "Local Projects"
+msgstr "Proiektua"
#: editor/project_manager.cpp
#, fuzzy
@@ -9661,10 +10456,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Proiektua"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Proiektua"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Proiektua"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9673,18 +10483,41 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Inportatu profila(k)"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Proiektua"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr ""
+msgid "About"
+msgstr "Honi buruz"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Aktiboen liburutegia"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Kendu guztiak"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9697,8 +10530,12 @@ msgstr ""
"Adibide ofizialak arakatu nahi dituzu aktiboen liburutegian?"
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9708,6 +10545,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9749,6 +10590,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9888,7 +10733,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9896,11 +10741,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10169,6 +11014,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10333,11 +11182,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10393,6 +11260,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10439,10 +11310,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10715,6 +11582,12 @@ msgstr ""
"kanpoko editore batekin."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10783,6 +11656,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11066,6 +11943,15 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Esportatu..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11107,6 +11993,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11349,6 +12239,15 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Aldatu animazioaren izena:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11457,6 +12356,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11680,10 +12583,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11713,6 +12612,39 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Esportatu..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Desinstalatu"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr ""
+"Fitxategiak arakatzen,\n"
+"Itxaron mesedez..."
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11809,6 +12741,45 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Fitxategiak arakatzen,\n"
+"Itxaron mesedez..."
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11821,6 +12792,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11835,6 +12810,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11854,11 +12842,50 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Paketearen edukia:"
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11887,27 +12914,52 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Ezin izan da scripta exekutatu:"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12255,6 +13307,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12324,12 +13383,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12378,6 +13489,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12526,21 +13641,70 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Q&A"
+#~ msgstr "Galdera-erantzunak"
+
+#~ msgid "Redownload"
+#~ msgstr "Berriro jaitsi"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Instalatuta)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Falta da)"
+
+#~ msgid "Download Complete."
+#~ msgstr "Jaitsiera osatuta."
+
+#~ msgid "Remove Template"
+#~ msgstr "Kendu txantiloia"
+
+#~ msgid "Download Templates"
+#~ msgstr "Jaitsi txantiloiak"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Azalaren edizio menua."
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Sortu editorearen uneko azaletik"
+
+#~ msgid "Theme File"
+#~ msgstr "Azal fitxategia"
+
+#~ msgid "Compiled"
+#~ msgstr "Konpilatuta"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Animazio irakurgailua ezin da norbera animatu, bakarrik beste batzuk."
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index ddccfeaebe..09cc83a73b 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -542,7 +542,8 @@ msgstr "ثانیه ها"
msgid "FPS"
msgstr "لحظه بر ثانیه"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -568,7 +569,8 @@ msgstr "انتخاب شده را تغییر مقیاس بده"
msgid "Scale From Cursor"
msgstr "از مکان‌نما تغییر مقیاس بده"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "تکثیر برگزیده"
@@ -589,6 +591,11 @@ msgid "Go to Previous Step"
msgstr "برو به گام پیشین"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "بازنشانی بزرگنمایی"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "انیمیشن را بهینه‌سازی کن"
@@ -605,6 +612,11 @@ msgid "Use Bezier Curves"
msgstr "بکارگیری منحنی Ø¨ÙØ²ÛŒÙر"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "جاگذاری مسیر ها"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "بهینه‌ساز انیمیشن"
@@ -653,7 +665,7 @@ msgid "Select Tracks to Copy"
msgstr "انتخاب میسرها جهت تکثیر"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -739,12 +751,14 @@ msgid "Toggle Scripts Panel"
msgstr "تغییر پانل اسکریپت ها"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "بزرگنمایی"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -800,11 +814,9 @@ msgid "Add"
msgstr "Ø§ÙØ²ÙˆØ¯Ù†"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -856,6 +868,7 @@ msgstr "نمی توان سیگنال را متصل کرد"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -926,7 +939,8 @@ msgid "Edit..."
msgstr "ویرایش..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "برو به تابع"
#: editor/create_dialog.cpp
@@ -941,6 +955,14 @@ msgstr "تغییر بده"
msgid "Create New %s"
msgstr "ساختن %s جدید"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -962,8 +984,8 @@ msgstr "جستجو:"
msgid "Matches:"
msgstr "تطبیق‌ها:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1039,17 +1061,21 @@ msgid "Owners Of:"
msgstr "مالکانÙ:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "آیا پرونده‌های انتخاب شده از طرح حذ٠شوند؟ (غیر قابل بازیابی)"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"پرونده‌هایی که می‌خواهید حذ٠شوند برای منابع دیگر مورد نیاز هستند تا کار "
"کنند.\n"
@@ -1098,7 +1124,7 @@ msgstr "پوینده‌ی منبع جدا Ø§ÙØªØ§Ø¯Ù‡"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1222,28 +1248,41 @@ msgstr "اجزا"
msgid "Licenses"
msgstr "گواهینامه"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "خطای گشودن بسته بندی پرونده، به شکل ZIP نیست."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (موجود است)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "ÙØ´Ø±Ø¯Ù‡ نشدن Ø§ÙŽØ³ÙØª ها"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "استخراج پرونده های زیر از بسته بندی انجام نشد:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "و %s بیش تر پرونده ها."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "بسته با موÙقیت نصب شد!"
#: editor/editor_asset_installer.cpp
@@ -1251,16 +1290,13 @@ msgstr "بسته با موÙقیت نصب شد!"
msgid "Success!"
msgstr "موÙقیت!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "درون مایه های بسته بندی:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "نصب کردن"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "نصب کننده پکیج ها"
#: editor/editor_audio_buses.cpp
@@ -1324,7 +1360,8 @@ msgid "Bypass"
msgstr "‌گذرگاه ÙØ±Ø¹ÛŒ"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "گزینه های اتوبوس"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1404,7 +1441,7 @@ msgstr "اتوبوس اضاÙÙ‡ کنید"
msgid "Add a new Audio Bus to this layout."
msgstr "یک Audio Bus جدید به این طرح اضاÙÙ‡ کنید."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1491,6 +1528,15 @@ msgid "Can't add autoload:"
msgstr "اضاÙÙ‡ کردن خودکار امکان پذیر نیست:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "پرونده موجود نیست."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "بارگذاری خودکار (AutoLoad) را اضاÙÙ‡ Ú©Ù†"
@@ -1506,16 +1552,17 @@ msgid "Node Name:"
msgstr "نام گره:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "نام"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "سینگلتون"
+#, fuzzy
+msgid "Global Variable"
+msgstr "تغییر متغیر"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "چسباندن پارام ها"
@@ -1531,7 +1578,7 @@ msgstr "ذخیره تغییرات محلی ..."
msgid "Updating scene..."
msgstr "صحنه به روز می شود ..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[پوچ]"
@@ -1671,8 +1718,48 @@ msgid "Import Dock"
msgstr "وارد کردن لنگرگاه"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "پاک‌کردن نمایه '%s'? (عدم بازگردانی)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1703,15 +1790,18 @@ msgid "Enable Contextual Editor"
msgstr "ÙØ¹Ø§Ù„ کردن ویرایشگر متنی"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "خصوصیات ÙØ¹Ø§Ù„ شده:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "صاÙÛŒ کردن گره‌ها"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "ویژگی های ÙØ¹Ø§Ù„ شده:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "ویژگی‌ها"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "کلاس های ÙØ¹Ø§Ù„ شده:"
#: editor/editor_feature_profile.cpp
@@ -1729,25 +1819,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "خطای ذخیره نمایه در مسیر: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "بارگیری پیش ÙØ±Ø¶"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "نمایه موجود:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "ساختن جریان"
+#, fuzzy
+msgid "Create Profile"
+msgstr "پاک کردن نمایه"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
+#, fuzzy
+msgid "Remove Profile"
+msgstr "حذ٠قالب"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "نمایه‌های موجود:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "ساختن جریان"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "وارد کردن"
@@ -1756,20 +1855,22 @@ msgid "Export"
msgstr "خروجی"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "نمایه‌های موجود:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "نمایه موجود:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "گزینه های کلاس"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "گزینه‌های کلاس:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "نام نمایه جدید:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "پاک کردن نمایه"
+msgid "New profile name:"
+msgstr "نام نمایه جدید:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1792,7 +1893,8 @@ msgid "Select Current Folder"
msgstr "برگزیدن پوشه موجود"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "ÙØ§ÛŒÙ„ وجود دارد، آیا بازنویسی شود؟"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1846,9 +1948,10 @@ msgid "Open a File or Directory"
msgstr "یک پرونده یا پوشه را باز کن"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "ذخیره"
@@ -1929,8 +2032,7 @@ msgid "Directories & Files:"
msgstr "پوشه‌ها و پرونده‌ها:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -2001,7 +2103,7 @@ msgstr "خصوصیات زمینه"
msgid "Enumerations"
msgstr "شمارش ها"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "ثابت ها"
@@ -2086,7 +2188,7 @@ msgstr "روش"
msgid "Signal"
msgstr "سیگنال‌"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "ثابت"
@@ -2102,9 +2204,10 @@ msgstr "ویژگی زمینه"
msgid "Property:"
msgstr "ویژگی:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "تعیین"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "تنظیم %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2119,7 +2222,7 @@ msgid "Copy Selection"
msgstr "کپی برگزیده"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2183,7 +2286,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "قبول"
@@ -2377,18 +2481,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "ذخیره صحنه در ..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "این عملیات بدون یک صحنه انجام نمی شود."
@@ -2559,7 +2667,7 @@ msgstr ""
msgid "Default"
msgstr "Ù¾ÛŒØ´ÙØ±Ø¶"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "نمایش در ÙØ§ÛŒÙ„‌سیستم"
@@ -2740,6 +2848,11 @@ msgid "Orphan Resource Explorer..."
msgstr "پوینده‌ی منبع Ø¬Ø§Ø§ÙØªØ§Ø¯Ù‡"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "تغییر نام پروژه"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "خروج به لیست پروژه‌ها"
@@ -2880,13 +2993,13 @@ msgstr "مدیریت صدور قالب ها"
msgid "Help"
msgstr "راهنما"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr ""
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "شمارش ها"
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2895,6 +3008,10 @@ msgid "Report a Bug"
msgstr "وارد کردن دوباره"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2903,7 +3020,8 @@ msgid "Community"
msgstr "جامعه"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "درباره"
#: editor/editor_node.cpp
@@ -3004,6 +3122,16 @@ msgid "Manage Templates"
msgstr "مدیریت صدور قالب ها"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "نصب پروژه:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "بر اساس یک ÙØ§ÛŒÙ„ منبع نیست"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3031,7 +3159,7 @@ msgstr "واردکردن قالب ها از درون یک ÙØ§ÛŒÙ„ ZIP"
msgid "Template Package"
msgstr "قالب ها"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "صدور کتابخانه"
@@ -3073,6 +3201,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "برگزیدن پوشه موجود"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "باز کردن ویرایشگر دو بعدی"
@@ -3105,6 +3238,11 @@ msgstr ""
msgid "No sub-resources found."
msgstr "زیرمنبع‌ها:"
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "زیرمنبع‌ها:"
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3131,34 +3269,34 @@ msgstr "Ø§ÙØ²ÙˆÙ†Ù‡ های نصب شده:"
msgid "Update"
msgstr "بروز رسانی"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "نسخه:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "خالق:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "وضعیت:"
+#, fuzzy
+msgid "Author"
+msgstr "Ù…Ø¤Ù„ÙØ§Ù†"
#: editor/editor_plugin_settings.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
#, fuzzy
-msgid "Edit:"
-msgstr "ویرایش"
+msgid "Status"
+msgstr "وضعیت:"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "زمان(s): "
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3178,6 +3316,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3223,12 +3371,6 @@ msgstr "مسیر نامعتبر."
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3246,43 +3388,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "New Script"
-msgstr "صحنه جدید"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "باز کردن و اجرای یک اسکریپت"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "چسباندن"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "Convert To %s"
-msgstr "اتصال به گره:"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3311,6 +3416,49 @@ msgstr ""
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "چسباندن"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "اتصال به گره:"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "New Script"
+msgstr "صحنه جدید"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Extend Script"
+msgstr "باز کردن و اجرای یک اسکریپت"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3343,7 +3491,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3363,138 +3511,99 @@ msgid "Import From Node:"
msgstr "وارد کردن از گره:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "در حال بارگیری"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(نصب شده)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr ""
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "پرونده '٪ s' وجود ندارد."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr ""
+#, fuzzy
+msgid "Retrieving the mirror list..."
+msgstr "در حال اتصال..."
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
-msgstr ""
+#, fuzzy
+msgid "Error requesting URL:"
+msgstr "خطای آدرس درخواستی: "
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr ""
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "در حال اتصال..."
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "نام دارایی ایندکس نامعتبر."
+msgid "Can't connect to the mirror."
+msgstr "اتصال به گره:"
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Error creating path for templates:"
-msgstr "خطای بارگذاری قلم."
+msgid "Request failed."
+msgstr "در حال درخواست..."
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr ""
+#, fuzzy
+msgid "Request failed:"
+msgstr "در حال درخواست..."
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
+#, fuzzy
+msgid "Cannot remove temporary file:"
+msgstr "امکان حذ٠وجود ندارد :"
#: editor/export_template_manager.cpp
msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "ناتوان در اتصال."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Request Failed."
-msgstr "در حال درخواست..."
-
-#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "دانلود کامل."
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Cannot remove temporary file:"
-msgstr "امکان حذ٠وجود ندارد :"
-
-#: editor/export_template_manager.cpp
msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+"No download links found for this version. Direct download is only available "
+"for official releases."
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error requesting URL:"
-msgstr "خطای آدرس درخواستی: "
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Connecting to Mirror..."
-msgstr "در حال اتصال..."
-
-#: editor/export_template_manager.cpp
msgid "Disconnected"
msgstr "اتصال قطع شده"
@@ -3539,45 +3648,136 @@ msgstr "خطای اس اس ال Ø§ØªÙØ§Ù‚ Ø§ÙØªØ§Ø¯ است"
#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "مدیریت صدور قالب ها"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "نام دارایی ایندکس نامعتبر."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "نام دارایی ایندکس نامعتبر."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "خطای بارگذاری قلم."
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Remove templates for the version '%s'?"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Uncompressing Android Build Sources"
msgstr "عست های غیر ÙØ´Ø±Ø¯Ù‡"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr ""
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "نسخه اخیر:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "نسخه های نصب شده:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "حذ٠قالب"
+#, fuzzy
+msgid "Open Folder"
+msgstr "یک پرونده را باز کن"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "انتخاب پرونده قالب"
+msgid "Download from:"
+msgstr "خطاهای بارگیری"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
-msgstr "مدیریت صدور قالب ها"
+msgid "Install from File"
+msgstr "نصب پروژه:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "واردکردن قالب ها از درون یک ÙØ§ÛŒÙ„ ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "لغو"
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "بارگیری قالب ها"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "نسخه های نصب شده:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "مدیریت صدور قالب ها"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Select Template File"
+msgstr "انتخاب پرونده قالب"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Godot Export Templates"
+msgstr "مدیریت صدور قالب ها"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3719,12 +3919,14 @@ msgstr "صحنه جدید"
msgid "New Resource..."
msgstr "ذخیره منبع از ..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Collapse All"
@@ -3732,19 +3934,47 @@ msgstr "بستن"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Duplicate..."
-msgstr "انتخاب شده را به دو تا تکثیر کن"
+msgid "Sort files"
+msgstr "جستجوی کلاسها"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "بارگیری خودکار را انجام دهید"
+msgid "Duplicate..."
+msgstr "انتخاب شده را به دو تا تکثیر کن"
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "تغییر نام..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "زبانه قبلی"
@@ -3833,10 +4063,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "لغو"
-
#: editor/find_in_files.cpp
#, fuzzy
msgid "Find: "
@@ -4075,54 +4301,52 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Expand All Properties"
-msgstr "Ø§ÙØ²ÙˆØ¯Ù† ویژگی سراسری"
+msgid "Copy Properties"
+msgstr "خصوصیات"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Collapse All Properties"
-msgstr "صاÙÛŒ کردن گره‌ها"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "ذخیره در..."
+msgid "Paste Properties"
+msgstr "خصوصیات"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-#, fuzzy
-msgid "Edit Resource Clipboard"
-msgstr "منبع"
-
-#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+msgid "Save the currently edited resource."
msgstr ""
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "ذخیره در..."
+
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "باز کردن راهنما"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "در مسیر٠منبع نیست."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "منبع"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4138,8 +4362,14 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr ""
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "شمارش ها"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "شمارش ها"
#: editor/inspector_dock.cpp
#, fuzzy
@@ -4147,6 +4377,11 @@ msgid "Filter properties"
msgstr "صاÙÛŒ کردن گره‌ها"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "خصوصیات انیمیشن."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4175,6 +4410,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "خالق:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "نسخه:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4392,7 +4636,7 @@ msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr "تغییر بده"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4624,6 +4868,11 @@ msgid "Animation"
msgstr "انیمیشن"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "انتقال‌ها"
@@ -4977,10 +5226,18 @@ msgid "View Files"
msgstr "نمایش پرونده ها"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "ناتوان در اتصال."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
msgid "Can't connect to host:"
msgstr "اتصال به گره:"
@@ -4990,17 +5247,20 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed."
-msgstr "در حال درخواست..."
+msgid "Request failed, return code:"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
@@ -5030,6 +5290,10 @@ msgid "Timeout."
msgstr "زمان:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5137,7 +5401,11 @@ msgid "All"
msgstr "همه"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5183,6 +5451,10 @@ msgstr "بارگیری"
msgid "Assets ZIP File"
msgstr "ÙØ§ÛŒÙ„ های ZIP‌ منابع بازی"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5191,8 +5463,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5438,15 +5710,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5507,6 +5780,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
@@ -5519,19 +5793,28 @@ msgid "Select Mode"
msgstr "انتخاب حالت"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "ترک انتخاب شده را حذ٠کن."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "آیا پرونده‌های انتخاب شده حذ٠شود؟"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "ترک انتخاب شده را حذ٠کن."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5775,6 +6058,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† گره"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "ارث‌بری صحنهٔ ÙØ±Ø²Ù†Ø¯"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5787,6 +6080,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "کوچکنمایی"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "کوچکنمایی"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "کوچکنمایی"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "کوچکنمایی"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "کوچکنمایی"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "کوچکنمایی"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -6038,6 +6377,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "ساختن %s جدید"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "ساختن %s جدید"
@@ -6072,7 +6416,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6133,13 +6477,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "انتخاب شده را تغییر مقیاس بده"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "انتخاب شده را تغییر مقیاس بده"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6197,7 +6554,6 @@ msgid "Mesh Library"
msgstr "صادکردن ÙØ§ÛŒÙ„ کتابخانه ای"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
@@ -6472,7 +6828,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6793,6 +7150,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr "منبع"
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "انتقال نقاط Ø¨ÙØ²ÛŒÙر"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "حذ٠کن"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7015,7 +7390,7 @@ msgstr "اجرا"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "جستجو"
@@ -7047,6 +7422,11 @@ msgid "Debug with External Editor"
msgstr "ویرایشگر بستگی"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation."
msgstr "شمارش ها"
@@ -7179,8 +7559,8 @@ msgstr ""
msgid "Cut"
msgstr "برش"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "انتخاب همه"
@@ -7215,10 +7595,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7385,6 +7761,28 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "وضعیت:"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "ترجمه‌ها"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "بومی"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7407,40 +7805,48 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Pitch"
+msgid "Pitch:"
msgstr "سوییچ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "تغییر بده"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr "تغییر بده"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "تغییر بده"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "خصوصیات"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7603,6 +8009,10 @@ msgid "Freelook Slow Modifier"
msgstr "غلطاندن به پایین."
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "View Rotation Locked"
msgstr "بومی‌سازی"
@@ -7619,6 +8029,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "اتصال به گره:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7632,26 +8047,24 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
-msgstr ""
+#, fuzzy
+msgid "Snap Nodes to Floor"
+msgstr "انتخاب گره (ها) برای وارد شدن"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7748,6 +8161,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Settings..."
@@ -8061,11 +8478,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -8086,175 +8498,602 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "شمارش ها:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Icons"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All Items"
-msgstr "برداشتن انتخاب شده"
+msgid "No colors found."
+msgstr "زیرمنبع‌ها:"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All"
-msgstr "برداشتن"
+msgid "{num} constant(s)"
+msgstr "ثابت ها"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "عضوها"
+msgid "No constants found."
+msgstr "مقدار ثابت رنگ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "چیزی ÛŒØ§ÙØª نشد!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "No icons found."
+msgstr "چیزی ÛŒØ§ÙØª نشد!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "ساختن قالب خالی"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "زیرمنبع‌ها:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "ساختن قالب خالی ویرایشگر"
+msgid "{num} currently selected"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Toggle Button"
-msgstr "دکمهٔ میانی."
+msgid "Importing Theme Items"
+msgstr "من میبینم ..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ شده"
+msgid "Updating the editor"
+msgstr "خروج از ویرایشگر؟"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Finalizing"
+msgstr "در حال پردازش"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "صاÙÛŒ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ شده"
+msgid "Select by data type:"
+msgstr "انتخاب یک گره"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "نخست، یک تنظیم را انتخاب کنید!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Radio Item"
-msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
+msgid "Select all visible constant items."
+msgstr "نخست، یک تنظیم را انتخاب کنید!"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "نخست، یک تنظیم را انتخاب کنید!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "نخست، یک تنظیم را انتخاب کنید!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "نخست، یک تنظیم را انتخاب کنید!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "نخست، یک تنظیم را انتخاب کنید!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible stylebox items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ شده"
+msgid "Collapse types."
+msgstr "بستن"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Expand types."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "انتخاب پرونده قالب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "انتخاب حالت"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Deselect All"
+msgstr "انتخاب همه"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Editable Item"
+msgid "Import Selected"
+msgstr "همه‌ی انتخاب ها"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "برداشتن انتخاب شده"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "تغییر نام گره"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "برداشتن انتخاب شده"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "برداشتن انتخاب شده"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "برداشتن انتخاب شده"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "برداشتن انتخاب شده"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "ثابت"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "برداشتن انتخاب شده"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "تغییر نام گره"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "تغییر نام گره"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "حذ٠مورد انتخاب‌شده"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "پرونده نامعتبر است ، نه طرح اتوبوس صوتی."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "مدیریت صدور قالب ها"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
msgstr "ÙØ±Ø²Ù†Ø¯ قابل ویرایش"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Types:"
+msgstr "نوع پایه:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "نوع پایه:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "برداشتن انتخاب شده"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "برداشتن انتخاب شده"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "برداشتن انتخاب شده"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "نام گره:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "من میبینم ..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Ù¾ÛŒØ´ÙØ±Ø¶"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "عضوها"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "منبع جایگزینی را جستجو کن:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "عضوها"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "تغییر نام ترک انیمشین"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "تغییر نام"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Unpin this StyleBox as a main style."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "پیدا کردن نوع گره"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "پیدا کردن نوع گره"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "بارگیری پیش ÙØ±Ø¶"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Override All"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Override all default type items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "یک پرونده را باز کن"
+msgid "Theme:"
+msgstr "عضوها"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "مدیریت صدور قالب ها"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "به‌روزرسانی از صحنه"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "به‌روزرسانی از صحنه"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "انتخاب یک گره"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Toggle Button"
+msgstr "دکمهٔ میانی."
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ شده"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ شده"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Radio Item"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† مورد"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "ØºÛŒØ±ÙØ¹Ø§Ù„ شده"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Editable Item"
+msgstr "ÙØ±Ø²Ù†Ø¯ قابل ویرایش"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "پرونده نامعتبر است ، نه طرح اتوبوس صوتی."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
@@ -8438,6 +9277,10 @@ msgid "Priority"
msgstr "حالت صدور:"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid "Z Index"
msgstr "اندیس:"
@@ -8801,12 +9644,6 @@ msgid "Commit Changes"
msgstr "تغییر بده"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#, fuzzy
-msgid "Status"
-msgstr "وضعیت:"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9656,7 +10493,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "ویرایش صاÙÛŒ ها"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9779,7 +10616,7 @@ msgstr "صحنه جدید"
#: editor/project_export.cpp
#, fuzzy
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr "حالت صدور:"
#: editor/project_export.cpp
@@ -9787,7 +10624,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9795,11 +10632,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9877,7 +10714,7 @@ msgstr "پروژه واردشده"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr "نام پروژه:"
#: editor/project_manager.cpp
@@ -9912,6 +10749,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "خطای گشودن بسته بندی پرونده، به شکل ZIP نیست."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "استخراج پرونده های زیر از بسته بندی انجام نشد:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "بسته با موÙقیت نصب شد!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "تغییر نام پروژه"
@@ -10062,15 +10911,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -10100,7 +10945,8 @@ msgid "Project Manager"
msgstr "مدیر پروژه"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "طرح ها"
#: editor/project_manager.cpp
@@ -10113,10 +10959,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "صدور پروژه"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "تغییر نام پروژه"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "پویش"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "طرح ها"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "انتخاب یک پوشه برای پویش"
@@ -10126,18 +10987,42 @@ msgstr "پروژه جدید"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "پروژه واردشده"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "تغییر نام پروژه"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "برداشتن نقطه"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "قالب ها"
+msgid "About"
+msgstr "درباره"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "کتابخانه دارایی"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "راه اندازی دوباره"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "برداشتن"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "ناتوان در اجرای پروژه"
@@ -10150,8 +11035,14 @@ msgstr ""
"آیا می خواهید طرح های نمونه رسمی را در کتابخانه دارایی کاوش کنید؟"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "صاÙÛŒ کردن گره‌ها"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10164,6 +11055,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10208,6 +11103,10 @@ msgstr "دستگاه"
msgid "Device"
msgstr "دستگاه"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10353,7 +11252,8 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Ø§ÙØ²ÙˆØ¯Ù† ترجمه"
#: editor/project_settings_editor.cpp
@@ -10361,11 +11261,11 @@ msgid "Remove Translation"
msgstr "حذ٠ترجمه"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10647,6 +11547,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10819,11 +11723,29 @@ msgid "Delete node \"%s\"?"
msgstr "حذ٠گره(ها)"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10886,6 +11808,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "پیوست کردن اسکریپت"
@@ -10935,11 +11861,6 @@ msgid "Load As Placeholder"
msgstr "بارگیری به عنوان جانگهدار"
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "شمارش ها"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11236,6 +12157,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "کلاس:"
@@ -11317,6 +12244,10 @@ msgid "Copy Error"
msgstr "خطاهای بارگذاری"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11612,6 +12543,16 @@ msgstr "نمونه ÛŒ دیکشنری نامعتبر است . (زیرکلاس‌Ù
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "صادر کردن کتابخانه شبکه مش"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "صدور…"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -11660,6 +12601,11 @@ msgid "GridMap Paint"
msgstr "ترجیحات"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "انتخاب شده را حذ٠کن"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11925,6 +12871,16 @@ msgstr "Ø§ÙØ²ÙˆØ¯Ù† عمل ورودی"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "تغییر نوع"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "تغییر مقدار ورودی"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr "نام نامعتبر. نباید یا یک نام نوع توکار برخوردی داشته باشد."
@@ -12042,6 +12998,11 @@ msgid "Add Preload Node"
msgstr "Ø§ÙØ²ÙˆØ¯Ù† گره"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Ø§ÙØ²ÙˆØ¯Ù† گره"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "گره(ها) را از درخت اضاÙÙ‡ Ú©Ù†"
@@ -12285,10 +13246,6 @@ msgstr "حذ٠گره اسکریپت٠دیداری"
msgid "Get %s"
msgstr "Ú¯Ø±ÙØªÙ† %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "تنظیم %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12318,6 +13275,39 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "صدور"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "نصب کردن"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "بارگیری"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "ناتوان در ساختن پوشه."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12415,6 +13405,45 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "ترجیحات"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "صدور"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12427,6 +13456,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12441,6 +13474,20 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12460,11 +13507,54 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "طول انیمیشن (به ثانیه)."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "در حال اتصال..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "ÛŒØ§ÙØªÙ†"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
msgstr "نام یک شناسه‌ی معتبر نیست:"
@@ -12496,11 +13586,6 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
-msgstr "نمی‌تواند یک پوشه ایجاد شود."
-
-#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not open template for export:"
msgstr "نمی‌تواند یک پوشه ایجاد شود."
@@ -12511,19 +13596,50 @@ msgstr "نام دارایی ایندکس نامعتبر."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:"
+msgid "Could not read file:"
msgstr "نمی‌تواند یک پوشه ایجاد شود."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Using default boot splash image."
+msgid "Could not read HTML shell:"
msgstr "نمی‌تواند یک پوشه ایجاد شود."
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "ناتوان در ساختن پوشه."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "خطا در بارگذاری:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "نام یک شناسه‌ی معتبر نیست:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
+
#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
@@ -12920,6 +14036,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12994,6 +14117,18 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid ""
@@ -13001,6 +14136,46 @@ msgid ""
"derived node to work."
msgstr "دارایی Path باید به یک گره Particles2D معتبر اشاره کند تا کار کند."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -13057,6 +14232,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "طول انیمیشن (به ثانیه)."
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -13219,21 +14398,117 @@ msgid "Invalid comparison function for that type."
msgstr "اندازهٔ قلم نامعتبر."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "ثوابت قابل تغییر نیستند."
+#~ msgid "Package Contents:"
+#~ msgstr "درون مایه های بسته بندی:"
+
+#~ msgid "Singleton"
+#~ msgstr "سینگلتون"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "پاک‌کردن نمایه '%s'? (عدم بازگردانی)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "خصوصیات ÙØ¹Ø§Ù„ شده:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "ویژگی های ÙØ¹Ø§Ù„ شده:"
+
+#~ msgid "Class Options"
+#~ msgstr "گزینه های کلاس"
+
+#~ msgid "Set"
+#~ msgstr "تعیین"
+
+#~ msgid "Status:"
+#~ msgstr "وضعیت:"
+
+#, fuzzy
+#~ msgid "Edit:"
+#~ msgstr "ویرایش"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "در حال بارگیری"
+
+#~ msgid "(Installed)"
+#~ msgstr "(نصب شده)"
+
+#, fuzzy
+#~ msgid "Request Failed."
+#~ msgstr "در حال درخواست..."
+
+#~ msgid "Download Complete."
+#~ msgstr "دانلود کامل."
+
+#~ msgid "Remove Template"
+#~ msgstr "حذ٠قالب"
+
+#~ msgid "Download Templates"
+#~ msgstr "بارگیری قالب ها"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "بارگیری خودکار را انجام دهید"
+
+#, fuzzy
+#~ msgid "Expand All Properties"
+#~ msgstr "Ø§ÙØ²ÙˆØ¯Ù† ویژگی سراسری"
+
+#~ msgid "Open in Help"
+#~ msgstr "باز کردن راهنما"
+
+#~ msgid "Create Empty Template"
+#~ msgstr "ساختن قالب خالی"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "ساختن قالب خالی ویرایشگر"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "یک پرونده را باز کن"
+
+#~ msgid "Templates"
+#~ msgstr "قالب ها"
+
+#, fuzzy
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
+#, fuzzy
+#~ msgid "Using default boot splash image."
+#~ msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "یک مجری انیمیشن نمی تواند خود را محرک کند، Ùقط سایر مجریان."
@@ -13273,9 +14548,6 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ msgid "FileSystem and Import Docks"
#~ msgstr "ÙØ§ÛŒÙ„‌سیستم Ùˆ وارد‌کردن لنگرگاه"
-#~ msgid "Not in resource path."
-#~ msgstr "در مسیر٠منبع نیست."
-
#, fuzzy
#~ msgid "Clear Script"
#~ msgstr "صحنه جدید"
@@ -13308,9 +14580,6 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ msgid "Inherits"
#~ msgstr "میراث:"
-#~ msgid "Base Type:"
-#~ msgstr "نوع پایه:"
-
#~ msgid "Available Nodes:"
#~ msgstr "گره های موجود:"
@@ -13322,9 +14591,6 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ msgid "Theme Properties:"
#~ msgstr "صاÙÛŒ کردن گره‌ها"
-#~ msgid "Enumerations:"
-#~ msgstr "شمارش ها:"
-
#, fuzzy
#~ msgid "Class Description:"
#~ msgstr "توضیح:"
@@ -13484,10 +14750,6 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ msgstr "برداشتن نقطه"
#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "نخست، یک تنظیم را انتخاب کنید!"
-
-#, fuzzy
#~ msgid "Add Node.."
#~ msgstr "Ø§ÙØ²ÙˆØ¯Ù† گره"
@@ -13545,9 +14807,6 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ msgid "Set Transitions to:"
#~ msgstr "تنظیم گذار‌ها به :"
-#~ msgid "Anim Track Rename"
-#~ msgstr "تغییر نام ترک انیمشین"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "تغییر سبک الحاق ترک انیمیشن"
@@ -13655,9 +14914,6 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ msgid "Can't write file."
#~ msgstr "ناتوان در نوشتن پرونده."
-#~ msgid "Not found!"
-#~ msgstr "چیزی ÛŒØ§ÙØª نشد!"
-
#~ msgid "Replace By"
#~ msgstr "جایگزین کردن با"
@@ -13759,10 +15015,6 @@ msgstr "ثوابت قابل تغییر نیستند."
#~ msgstr "انتقال"
#, fuzzy
-#~ msgid "State"
-#~ msgstr "وضعیت:"
-
-#, fuzzy
#~ msgid "Password"
#~ msgstr "گذرواژه:"
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index 834d1894e3..f0b5ff0457 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -16,7 +16,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-06-20 13:35+0000\n"
+"PO-Revision-Date: 2021-07-29 21:48+0000\n"
"Last-Translator: Tapani Niemi <tapani.niemi@kapsi.fi>\n"
"Language-Team: Finnish <https://hosted.weblate.org/projects/godot-engine/"
"godot/fi/>\n"
@@ -25,7 +25,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.7\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -531,7 +531,8 @@ msgstr "Sekunnit"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -557,7 +558,8 @@ msgstr "Skaalaa valintaa"
msgid "Scale From Cursor"
msgstr "Skaalaa kursorista"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Kahdenna valinta"
@@ -578,6 +580,11 @@ msgid "Go to Previous Step"
msgstr "Mene edelliseen askeleeseen"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Palauta"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimoi animaatio"
@@ -594,6 +601,11 @@ msgid "Use Bezier Curves"
msgstr "Käytä Bezier-käyriä"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Liitä raidat"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Animaation optimoija"
@@ -642,7 +654,7 @@ msgid "Select Tracks to Copy"
msgstr "Valitse kopioitavat raidat"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -728,12 +740,14 @@ msgid "Toggle Scripts Panel"
msgstr "Näytä/piilota skriptipaneeli"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Lähennä"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -790,11 +804,9 @@ msgid "Add"
msgstr "Lisää"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -845,6 +857,7 @@ msgstr "Ei voida yhdistää signaalia"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -914,7 +927,8 @@ msgid "Edit..."
msgstr "Muokkaa..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Mene metodiin"
#: editor/create_dialog.cpp
@@ -929,6 +943,14 @@ msgstr "Muuta"
msgid "Create New %s"
msgstr "Luo uusi %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Ei tuloksia haulle \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -950,8 +972,8 @@ msgstr "Hae:"
msgid "Matches:"
msgstr "Osumat:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1027,20 +1049,24 @@ msgid "Owners Of:"
msgstr "Omistajat kohteelle:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Poista valitut tiedostot projektista? (ei voida kumota)\n"
"Löydät poistetut tiedostot järjestelmän roskakorista, mikäli haluat "
"palauttaa ne."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Poistettavia tiedostoja tarvitaan muiden resurssien toimivuuteen.\n"
"Poistetaanko silti? (ei voida kumota)\n"
@@ -1089,7 +1115,7 @@ msgstr "Irrallisten resurssien hallinta"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1214,28 +1240,41 @@ msgstr "Komponentit"
msgid "Licenses"
msgstr "Lisenssit"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Virhe avattaessa pakettitiedostoa, ei ZIP-muodossa."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Virhe avattaessa pakettitiedostoa (se ei ole ZIP-muodossa)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (on jo olemassa)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Puretaan assetteja"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Seuraavien tiedostojen purku paketista epäonnistui:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Ja vielä %s tiedostoa."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paketti asennettu onnistuneesti!"
#: editor/editor_asset_installer.cpp
@@ -1243,16 +1282,13 @@ msgstr "Paketti asennettu onnistuneesti!"
msgid "Success!"
msgstr "Onnistui!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Paketin sisältö:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Asenna"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Pakettien asentaja"
#: editor/editor_audio_buses.cpp
@@ -1316,7 +1352,8 @@ msgid "Bypass"
msgstr "Ohita"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Väylän asetukset"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1396,7 +1433,7 @@ msgstr "Lisää väylä"
msgid "Add a new Audio Bus to this layout."
msgstr "Lisää tähän asetteluun uusi ääniväylä."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1486,6 +1523,15 @@ msgid "Can't add autoload:"
msgstr "Ei voida lisätä automaattisesti ladattavaa:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Tiedostoa ei ole olemassa."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Lisää automaattisesti ladattava"
@@ -1501,16 +1547,17 @@ msgid "Node Name:"
msgstr "Solmun nimi:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nimi"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Muuttuja"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Liitä parametrit"
@@ -1526,7 +1573,7 @@ msgstr "Varastoidaan paikalliset muutokset..."
msgid "Updating scene..."
msgstr "Päivitetään skeneä..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[tyhjä]"
@@ -1680,8 +1727,49 @@ msgid "Import Dock"
msgstr "Tuontitelakka"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Poista profiili '%s'? (ei voi perua)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Nykyinen)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1714,15 +1802,18 @@ msgid "Enable Contextual Editor"
msgstr "Ota asiayhteydellinen editori käyttöön"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Käytössä olevat ominaisuudet:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Ominaisuudet:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Käytössä olevat ominaisuudet:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Ominaisuudet"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Käytössä olevat luokat:"
#: editor/editor_feature_profile.cpp
@@ -1742,25 +1833,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Virhe tallennettaessa profiilia polkuun: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Poista asetus"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Palauta oletusarvoihin"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Nykyinen profiili:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Aseta nykyiseksi"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Tyhjennä profiili"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Uusi"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Poista laatta"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Saatavilla olevat profiilit:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Aseta nykyiseksi"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Tuo"
@@ -1769,20 +1869,22 @@ msgid "Export"
msgstr "Vie"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Saatavilla olevat profiilit:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Nykyinen profiili:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Luokan valinnat"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Tekstuurin asetukset"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Uusi profiilin nimi:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Tyhjennä profiili"
+msgid "New profile name:"
+msgstr "Uusi profiilin nimi:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1805,7 +1907,8 @@ msgid "Select Current Folder"
msgstr "Valitse nykyinen kansio"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Tiedosto on jo olemassa, korvaa?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1859,9 +1962,10 @@ msgid "Open a File or Directory"
msgstr "Avaa tiedosto tai hakemisto"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Tallenna"
@@ -1942,8 +2046,7 @@ msgid "Directories & Files:"
msgstr "Hakemistot ja tiedostot:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Esikatselu:"
@@ -2015,7 +2118,7 @@ msgstr "Teeman ominaisuudet"
msgid "Enumerations"
msgstr "Luetteloinnit"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Vakiot"
@@ -2104,7 +2207,7 @@ msgstr "Metodi"
msgid "Signal"
msgstr "Signaali"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Muuttumaton"
@@ -2120,9 +2223,10 @@ msgstr "Teeman ominaisuus"
msgid "Property:"
msgstr "Ominaisuus:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Aseta"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Aseta %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2137,7 +2241,7 @@ msgid "Copy Selection"
msgstr "Kopioi valinta"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2201,7 +2305,8 @@ msgid "Imported resources can't be saved."
msgstr "Tuotuja resursseja ei voida tallentaa."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2421,18 +2526,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Tallennetaanko muutokset tiedostoon '%s' ennen sulkemista?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Tallennettiin %s muokattua resurssia."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Skenen tallentaminen edellyttää, että sillä on juurisolmu."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Tallenna skene nimellä..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Tätä toimintoa ei voi tehdä ilman skeneä."
@@ -2623,7 +2733,7 @@ msgstr "Poista asettelu"
msgid "Default"
msgstr "Oletus"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Näytä tiedostojärjestelmässä"
@@ -2804,6 +2914,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Irrallisten resurssien hallinta..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Nimetä projekti"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Poistu projektiluetteloon"
@@ -2960,20 +3075,25 @@ msgstr "Hallinnoi vientimalleja..."
msgid "Help"
msgstr "Ohje"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Dokumentaatio"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Avaa dokumentaatio"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Kysymykset ja vastaukset"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Raportoi bugi"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "Aseta arvo"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Lähetä palautetta ohjeesta"
@@ -2982,7 +3102,8 @@ msgid "Community"
msgstr "Yhteisö"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Tietoja"
#: editor/editor_node.cpp
@@ -3079,6 +3200,16 @@ msgid "Manage Templates"
msgstr "Hallinnoi malleja"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Asenna tiedostosta"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Valitse lähdemesh:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3116,7 +3247,7 @@ msgstr "Tuo mallit ZIP-tiedostosta"
msgid "Template Package"
msgstr "Mallipaketti"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Vie kirjasto"
@@ -3159,6 +3290,11 @@ msgid "Select"
msgstr "Valitse"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Valitse nykyinen kansio"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Avaa 2D-editori"
@@ -3190,6 +3326,11 @@ msgstr "Varoitus!"
msgid "No sub-resources found."
msgstr "Aliresursseja ei löydetty."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Aliresursseja ei löydetty."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Luodaan meshien esikatseluita"
@@ -3214,33 +3355,34 @@ msgstr "Asennetut lisäosat:"
msgid "Update"
msgstr "Päivitä"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versio:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Tekijä:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Tila:"
+#, fuzzy
+msgid "Author"
+msgstr "Tekijät"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Muokkaa:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Tila"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Mittaa:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Kuvaruudun aika (sek)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Keskimääräinen aika (sek)"
#: editor/editor_profiler.cpp
@@ -3260,6 +3402,16 @@ msgid "Self"
msgstr "Itse"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Ruutu #:"
@@ -3301,14 +3453,6 @@ msgstr "Virheellinen RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Valittu resurssi (%s) ei vastaa mitään odotettua tyyppiä tälle "
-"ominaisuudelle (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3333,40 +3477,6 @@ msgid "Pick a Viewport"
msgstr "Valitse näyttöruutu"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Uusi skripti"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Laajenna skriptiä"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Uusi %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Tee yksilölliseksi"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Liitä"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Muunna muotoon %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Valittu solmu ei ole Viewport!"
@@ -3395,6 +3505,49 @@ msgstr "Uusi arvo:"
msgid "Add Key/Value Pair"
msgstr "Lisää avain/arvopari"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Valittu resurssi (%s) ei vastaa mitään odotettua tyyppiä tälle "
+"ominaisuudelle (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Tee yksilölliseksi"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Liitä"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Muunna muotoon %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Uusi %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Uusi skripti"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Laajenna skriptiä"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3430,7 +3583,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Unohditko '_run' metodin?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Pidä Ctrl pohjassa pyöristääksesi kokonaislukuun. Pidä Shift pohjassa "
"tarkempia muutoksia varten."
@@ -3452,115 +3606,69 @@ msgid "Import From Node:"
msgstr "Tuo solmusta:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Lataa uudelleen"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Poista asennus"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Asennettu)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Lataa"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "Viralliset vientimallit eivät ole saatavilla kehityskäännöksille."
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Puuttuva)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Nykyinen)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Tiedostoa '%s' ei ole."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Noudetaan peilipalvelimia, hetkinen..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Poista mallin versio '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Vientimallien zip-tiedostoa ei voitu avata."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Vientimalli sisältää virheellisen version.txt tiedoston: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Vientimalleista ei löytynyt version.txt tiedostoa."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Virhe luotaessa polkua malleille:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Puretaan vientimalleja"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Tuodaan:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Virhe peilipalvelimien listan haussa."
+msgid "Error requesting URL:"
+msgstr "Virhe pyydettäessä osoitetta:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Virhe jäsennettäessä peilipalvelimien JSON-listaa. Raportoi tämä ongelma, "
-"kiitos!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Yhdistetään peilipalvelimeen..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Tälle versiolle ei löytynyt ladattavia linkkejä. Suora lataaminen on "
-"mahdollista vain virallisilla versioilla."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Palvelinta ei löytynyt:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Yhdeydenselvitys epäonnistui."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Isäntään yhdistäminen epäonnistui:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Yhdistäminen epäonnistui."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Ei vastausta isännältä:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Ei vastausta."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Pyyntö epäonnistui."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Loputon uudelleenohjaus."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Pyyntö epäonnistui, liikaa uudelleenohjauksia"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Epäonnistui:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Pyyntö epäonnistui."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Lataus valmis."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3575,12 +3683,27 @@ msgstr ""
"Ongelmallisten vientimallien arkisto löytyy kohteesta '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Virhe pyydettäessä osoitetta:"
+msgid "Error getting the list of mirrors."
+msgstr "Virhe peilipalvelimien listan haussa."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Yhdistetään peilipalvelimeen..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Virhe jäsennettäessä peilipalvelimien JSON-listaa. Raportoi tämä ongelma, "
+"kiitos!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Tälle versiolle ei löytynyt ladattavia linkkejä. Suora lataaminen on "
+"mahdollista vain virallisilla versioilla."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3625,44 +3748,138 @@ msgid "SSL Handshake Error"
msgstr "Virhe SSL kättelyssä"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Vientimallien zip-tiedostoa ei voitu avata."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Vientimalli sisältää virheellisen version.txt tiedoston: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Vientimalleista ei löytynyt version.txt tiedostoa."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Virhe luotaessa polkua malleille:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Puretaan vientimalleja"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Tuodaan:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Poista mallin versio '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Puretaan Android-käännöksen lähdetiedostoja"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Vientimallien hallinta"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Nykyinen versio:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Asennetut versiot:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Avaa tiedosto"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Poista asennus"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Laskurin alkuarvo"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Latausvirhe"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "Viralliset vientimallit eivät ole saatavilla kehityskäännöksille."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Asenna tiedostosta"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Poista malli"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Tuo mallit ZIP-tiedostosta"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Peruuta"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Valitse mallitiedosto"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Vientimallien zip-tiedostoa ei voitu avata."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Godotin vientimallit"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Asennetut versiot:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Vientimallien hallinta"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Poista asennus"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Valitse mallitiedosto"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Lataa mallit"
+msgid "Godot Export Templates"
+msgstr "Godotin vientimallit"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Valitse peilipalvelin listasta: (Shift+napsautus: Avaa selaimessa)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3796,29 +4013,62 @@ msgstr "Uusi skripti..."
msgid "New Resource..."
msgstr "Uusi resurssi..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Laajenna kaikki"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Tiivistä kaikki"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Kahdenna..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Etsi tiedostoista"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Siirrä roskakoriin"
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Viimeksi muutettu"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Viimeksi muutettu"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Kahdenna..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Nimeä uudelleen..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Edellinen kansio/tiedosto"
@@ -3902,10 +4152,6 @@ msgstr "Etsi..."
msgid "Replace..."
msgstr "Korvaa..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Peruuta"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Etsi: "
@@ -4132,53 +4378,55 @@ msgid "Failed to load resource."
msgstr "Resurssin lataaminen epäonnistui."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Laajenna kaikki ominaisuudet"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Ominaisuudet"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Tiivistä kaikki ominaisuudet"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Tallenna nimellä..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Ominaisuudet"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Kopioi parametrit"
+msgid "Make Sub-Resources Unique"
+msgstr "Tee aliresursseista yksilöllisiä"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Muokkaa resurssien leikepöytää"
+msgid "Create a new resource in memory and edit it."
+msgstr "Luo uusi resurssi muistiin ja muokkaa sitä."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Kopioi resurssi"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Lataa olemassaoleva resurssi levyltä ja muokkaa sitä."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Tee sisäänrakennettu"
+msgid "Save the currently edited resource."
+msgstr "Tallenna tällä hetkellä muokattu resurssi."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Tee aliresursseista yksilöllisiä"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Tallenna nimellä..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Avaa ohjeessa"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Ei löytynyt resurssipolusta."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Luo uusi resurssi muistiin ja muokkaa sitä."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Muokkaa resurssien leikepöytää"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Lataa olemassaoleva resurssi levyltä ja muokkaa sitä."
+msgid "Copy Resource"
+msgstr "Kopioi resurssi"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Tallenna tällä hetkellä muokattu resurssi."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Tee sisäänrakennettu"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4193,14 +4441,24 @@ msgid "History of recently edited objects."
msgstr "Viimeisimmin muokatut objektit."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Objektin ominaisuudet."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Avaa dokumentaatio"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Avaa dokumentaatio"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Suodata ominaisuuksia"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Objektin ominaisuudet."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Muutokset saatetaan menettää!"
@@ -4228,6 +4486,15 @@ msgstr "Liitännäisen nimi:"
msgid "Subfolder:"
msgstr "Alikansio:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Tekijä:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versio:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Kieli:"
@@ -4434,7 +4701,8 @@ msgid "Blend:"
msgstr "Sulautus:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parametri muutettu"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4653,6 +4921,11 @@ msgid "Animation"
msgstr "Animaatio"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Uusi"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Muokkaa siirtymiä..."
@@ -4994,10 +5267,18 @@ msgid "View Files"
msgstr "Näytä tiedostot"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Lataa"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Yhteysvirhe, ole hyvä ja yritä uudelleen."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Yhdistäminen epäonnistui."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Isäntään yhdistäminen epäonnistui:"
@@ -5006,16 +5287,20 @@ msgid "No response from host:"
msgstr "Ei vastausta isännältä:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Ei vastausta."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Palvelinta ei löytynyt:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Pyyntö epäonnistui, virhekoodi:"
+msgid "Can't resolve."
+msgstr "Yhdeydenselvitys epäonnistui."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Pyyntö epäonnistui."
+msgid "Request failed, return code:"
+msgstr "Pyyntö epäonnistui, virhekoodi:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5042,6 +5327,10 @@ msgid "Timeout."
msgstr "Aikakatkaisu."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Epäonnistui:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
"Latauksessa väärä hajautuskoodi, oletetaan että tiedostoa on näpelöity."
@@ -5143,8 +5432,12 @@ msgid "All"
msgstr "Kaikki"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Ei tuloksia haulle \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5186,6 +5479,10 @@ msgstr "Ladataan..."
msgid "Assets ZIP File"
msgstr "Assettien zip-tiedosto"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5196,11 +5493,11 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Ei meshejä kehitettävänä. Varmista, että ne sisältävät UV2-kanavan, ja että "
-"'Bake Light' asetus on päällä."
+"'Use In Baked Light' ja 'Generate Lightmap' asetukset ovat päällä."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -5444,9 +5741,10 @@ msgstr "Muuta ankkureita"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Pelikameran ohitus\n"
"Ohittaa pelikameran editorin näyttöruutukameralla."
@@ -5454,11 +5752,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Pelikameran ohitus\n"
-"Peli ei ole käynnissä."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5513,6 +5810,7 @@ msgstr ""
"isäntäsolmun perusteella."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5524,22 +5822,32 @@ msgid "Select Mode"
msgstr "Valintatila"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Vedä: Kierrä"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Poista valittu solmu tai siirtymä."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Vedä: Siirrä"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Poista valittu solmu tai siirtymä."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Paina 'V' vaihtaaksesi kääntökeskiötä. 'Shift+V' vetääksesi keskiötä "
-"(liikkuessa)."
+"Näytä lista kaikista napsautetussa kohdassa olevista objekteista\n"
+"(sama kuin Alt + Hiiren oikea painike valintatilassa)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt + Hiiren oikea painike: Syvyyslistan valinta"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5777,6 +6085,16 @@ msgid "Clear Pose"
msgstr "Tyhjennä asento"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Lisää solmu"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Luo ilmentymä skenestä tai skeneistä"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Kerro ruudukon välistys kahdella"
@@ -5789,6 +6107,52 @@ msgid "Pan View"
msgstr "Panorointinäkymä"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Loitonna"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Loitonna"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Loitonna"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Loitonna"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Loitonna"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Loitonna"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Lisää %s"
@@ -6031,6 +6395,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Ei voitu luoda yksittäistä konveksia törmäysmuotoa."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Luo yksittäinen konveksi muoto"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Luo yksittäinen konveksi muoto"
@@ -6063,7 +6432,8 @@ msgid "No mesh to debug."
msgstr "Ei meshiä debugattavaksi."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Mallilla ei ole UV-kanavaa tällä kerroksella"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6129,13 +6499,27 @@ msgstr ""
"Tämä on nopein (mutta epätarkin) vaihtoehto törmäystunnistukselle."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Luo yksittäisen konveksin törmäyksen sisar"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Luo useita konvekseja törmäysmuotojen sisaria"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Luo polygonipohjaisen törmäysmuodon.\n"
"Tämä on suorituskyvyltään välimaastoa kahdelle yllä olevalle vaihtoehdolle."
@@ -6197,7 +6581,6 @@ msgid "Mesh Library"
msgstr "Mesh-kirjasto"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Lisää kohde"
@@ -6472,7 +6855,8 @@ msgid "Close Curve"
msgstr "Sulje käyrä"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Asetuksia"
@@ -6783,6 +7167,26 @@ msgstr "Lataa resurssi"
msgid "ResourcePreloader"
msgstr "Resurssien esilataaja"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Käännä vaakasuorasti"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Luotujen pisteiden määrä:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Luotujen pisteiden määrä:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Käännä vaakasuorasti"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree solmulle ei ole asetettu polkua AnimationPlayer solmuun"
@@ -6989,7 +7393,7 @@ msgstr "Suorita"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Hae"
@@ -7020,6 +7424,11 @@ msgid "Debug with External Editor"
msgstr "Debuggaa ulkoisella editorilla"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Dokumentaatio"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Avaa Godotin online-dokumentaatio."
@@ -7146,8 +7555,8 @@ msgstr "Mene"
msgid "Cut"
msgstr "Leikkaa"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Valitse kaikki"
@@ -7180,10 +7589,6 @@ msgid "Unfold All Lines"
msgstr "Avaa kaikki rivit"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Kloonaa alas"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Täydennä symboli"
@@ -7337,6 +7742,28 @@ msgid "View Plane Transform."
msgstr "Näkymätason muunnos."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Ei mitään"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Kiertotila"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Siirrä:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Skaalaus:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Skaalataan: "
@@ -7357,42 +7784,54 @@ msgid "Animation Key Inserted."
msgstr "Animaatioavain lisätty."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Nyökkäys (pitch)"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Käännös (yaw)"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Koko"
+#, fuzzy
+msgid "Size:"
+msgstr "Koko: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Objekteja piirretty"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Materiaalimuutokset"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Sävytinmuutokset"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Pintamuutokset"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Piirtokutsuja"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Kärkipisteet"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Pintanäkymä."
@@ -7545,6 +7984,11 @@ msgid "Freelook Slow Modifier"
msgstr "Liikkumisen hitauskerroin"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Muuta kameran kokoa"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Näkymän kierto lukittu"
@@ -7564,6 +8008,11 @@ msgstr ""
"Sitä ei voi käyttää luotettavana pelin sisäisenä tehokkuuden ilmaisimena."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Muunna muotoon %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm-ikkuna"
@@ -7583,7 +8032,8 @@ msgstr ""
"läpi (\"röntgen\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Tarraa solmut lattiaan"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7591,16 +8041,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Ei löydetty kiinteää lattiaa, johon kohdistaa valinta."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Vedä: Kierrä\n"
-"Alt + Vedä: Siirrä\n"
-"Alt + Hiiren oikea painike: Syvyyslistan valinta"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Käytä paikallisavaruutta"
@@ -7609,6 +8049,10 @@ msgid "Use Snap"
msgstr "Käytä tarttumista"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Alanäkymä"
@@ -7702,6 +8146,11 @@ msgid "View Grid"
msgstr "Näytä ruudukko"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Näyttöruudun asetukset"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Asetukset..."
@@ -7991,11 +8440,6 @@ msgid "Snap Mode:"
msgstr "Tarttumisen tila:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Ei mitään"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Tartu pikseleihin"
@@ -8016,165 +8460,603 @@ msgid "Step:"
msgstr "Välistys:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Erotin:"
+msgid "Separation:"
+msgstr "Erotus:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "Tekstuurialue"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Lisää kaikki"
+#, fuzzy
+msgid "Colors"
+msgstr "Väri"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Lisää kaikki"
+#, fuzzy
+msgid "Fonts"
+msgstr "Fontti"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Kuvake"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "StyleBox"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Aliresursseja ei löydetty."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Vakiot"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Värivakio."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Ei löytynyt!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Ei löytynyt!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Aliresursseja ei löydetty."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Tuo teema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Poistu editorista?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analysoidaan"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Suodatin: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Valitse solmu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Valitse jako poistaaksesi sen."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Valitse asetus ensin!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Valitse asetus ensin!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Valitse asetus ensin!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Valitse asetus ensin!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Valitse asetus ensin!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Tiivistä kaikki"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Laajenna kaikki"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Valitse mallitiedosto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Valitse pisteet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Valitse kaikki"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Tuo skene"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Poista kaikki"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Poista"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
msgstr "Poista kaikki"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Muokkaa teemaa"
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Poista kaikki"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Poista kaikki"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Poista kaikki"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Teeman muokkausvalikko."
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Lisää luokka"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Lisää luokka"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Lisää kohde"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Lisää kohde"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Lisää kaikki"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Poista luokka"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Poista luokka"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Nimeä solmu uudelleen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Nimeä solmu uudelleen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Poista valitut kohteet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Virheellinen tiedosto. Tämä ei ole ääniväylän asettelu ensinkään."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Hallinnoi malleja"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Muokattava osanen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Tyyppi:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Tyyppi:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Lisää kohde"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Lisää kaikki"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Poista"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Poista luokka"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Luo tyhjä pohja"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Poista luokka"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Poista kaikki"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Käyttöliittymäteeman osat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Solmun nimi:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Luo tyhjä editorin pohja"
+#, fuzzy
+msgid "Import Items"
+msgstr "Tuo teema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Oletus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Muokkaa teemaa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Poista resurssi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Tuo teema"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Luo nykyisestä editorin teemasta"
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Animaatioraita: nimeä uudelleen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Niputettu uudelleennimeäminen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Ylikirjoittaa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Tyyppi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Lisää kohde"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Solmun tyyppi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Lataa oletus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Ylikirjoittaa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Teema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Hallinnoi vientimalleja..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Esikatselu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Päivitä esikatselu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Valitse lähdemesh:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Vaihtopainike"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Toimintakyvytön painike"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Osanen"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Toimintakyvytön osanen"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Valinta"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Valittu"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Valintapainike"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Valittu valintapainike"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Nimetty erotin"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Alivalikko"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Osanen 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Osanen 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "On"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Useita"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "Toimintakyvytön LineEdit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Välilehti 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Välilehti 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Välilehti 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Muokattava osanen"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Alipuu"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "On,Useita,Asetuksia"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Tietotyyppi:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Kuvake"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Tyyli"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Fontti"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Väri"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Virheellinen tiedosto. Tämä ei ole ääniväylän asettelu ensinkään."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Teema-tiedosto"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8348,6 +9230,10 @@ msgid "Priority"
msgstr "Prioriteetti"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Kuvake"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z-indeksi"
@@ -8682,11 +9568,6 @@ msgid "Commit Changes"
msgstr "Vahvista muutokset"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Tila"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
"Katso tiedostojen eroavaisuudet ennen niiden vahvistamista viimeisimpään "
@@ -9575,7 +10456,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Muokkaa visuaalista ominaisuutta"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9702,7 +10584,8 @@ msgid "Script"
msgstr "Skripti"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Skriptin vientitila:"
#: editor/project_export.cpp
@@ -9710,19 +10593,21 @@ msgid "Text"
msgstr "Teksti"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Käännetty"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Salattu (syötä avain alla)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Virheellinen salausavain (oltava 64 merkkiä pitkä)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Skriptin salausavain (256-bittinen heksana):"
#: editor/project_export.cpp
@@ -9797,7 +10682,8 @@ msgid "Imported Project"
msgstr "Tuotu projekti"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Virheellinen projektin nimi."
#: editor/project_manager.cpp
@@ -9833,6 +10719,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Tiedoston project.godot luonti projektin polkuun epäonnistui."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Virhe avattaessa pakettitiedostoa, ei ZIP-muodossa."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Seuraavien tiedostojen purku paketista epäonnistui:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Paketti asennettu onnistuneesti!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Nimetä projekti"
@@ -10008,20 +10906,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Haluatko varmasti suorittaa %d projektia yhdenaikaisesti?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Poista %d projektia listalta?\n"
-"Projektikansioiden sisältöjä ei muuteta."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Valitse laite listasta"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Poista tämä projekti listalta?\n"
-"Projektikansion sisältöä ei muuteta."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Valitse laite listasta"
#: editor/project_manager.cpp
msgid ""
@@ -10054,7 +10946,8 @@ msgid "Project Manager"
msgstr "Projektinhallinta"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projektit"
#: editor/project_manager.cpp
@@ -10066,10 +10959,25 @@ msgid "Last Modified"
msgstr "Viimeksi muutettu"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Vie projekti"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Nimetä projekti"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Tutki"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projektit"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Valitse tutkittava kansio"
@@ -10078,18 +10986,41 @@ msgid "New Project"
msgstr "Uusi projekti"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Tuotu projekti"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Nimetä projekti"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Poista puuttuva"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Mallit"
+msgid "About"
+msgstr "Tietoja"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Asset-kirjasto"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Käynnistä uudelleen nyt"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Poista kaikki"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Projektia ei voida käynnistää"
@@ -10102,8 +11033,14 @@ msgstr ""
"Haluaisitko selata virallisia esimerkkiprojekteja Asset-kirjastosta?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Suodata ominaisuuksia"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10116,6 +11053,10 @@ msgid "Key "
msgstr "Näppäin "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Ohjaimen painike"
@@ -10159,6 +11100,10 @@ msgstr "Kaikki laitteet"
msgid "Device"
msgstr "Laite"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Paina näppäintä..."
@@ -10300,7 +11245,8 @@ msgid "Override for Feature"
msgstr "Ominaisuuden ohitus"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Lisää käännös"
#: editor/project_settings_editor.cpp
@@ -10308,11 +11254,13 @@ msgid "Remove Translation"
msgstr "Poista käännös"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Lisää korvaavuuspolku"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Lisää resurssin korvaavuus"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Lisää resurssin korvaavuus"
#: editor/project_settings_editor.cpp
@@ -10584,6 +11532,10 @@ msgid "Post-Process"
msgstr "Jälkikäsittely"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Tyyli"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Pidä"
@@ -10752,12 +11704,30 @@ msgid "Delete node \"%s\"?"
msgstr "Poista solmu \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Ei voi tehdä juurisolmulle."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Tätä toimintoa ei voi tehdä skenejen ilmentymille."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10817,6 +11787,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Ei voida suorittaa solmuille, joista nykyinen skene periytyy!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Tätä toimintoa ei voi tehdä skenejen ilmentymille."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Liitä skripti"
@@ -10865,10 +11839,6 @@ msgid "Load As Placeholder"
msgstr "Lataa paikanpitäjäksi"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Avaa dokumentaatio"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11161,6 +12131,12 @@ msgstr ""
"voi muokata ulkoisella editorilla."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Luokan nimi:"
@@ -11229,6 +12205,10 @@ msgid "Copy Error"
msgstr "Kopioi virhe"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Näyttömuisti"
@@ -11516,6 +12496,16 @@ msgstr "Virheellinen ilmentymän sanakirja (virheelliset aliluokat)"
msgid "Object can't provide a length."
msgstr "Objektille ei voida määrittää pituutta."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Vie mesh-kirjasto"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Vie..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Seuraava taso"
@@ -11557,6 +12547,11 @@ msgid "GridMap Paint"
msgstr "Ruudukon maalaus"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Täytä valinta"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Ruudukko"
@@ -11806,6 +12801,16 @@ msgid "Add Output Port"
msgstr "Lisää lähtöportti"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Muuta tyyppiä"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Vaihda tuloportin nimi"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Ylikirjoita olemassa oleva sisäänrakennettu funktio."
@@ -11919,6 +12924,11 @@ msgid "Add Preload Node"
msgstr "Lisää esiladattu solmu"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Lisää solmu"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Lisää solmut puusta"
@@ -12148,10 +13158,6 @@ msgstr "Hae VisualScriptistä"
msgid "Get %s"
msgstr "Hae %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Aseta %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Paketin nimi puuttuu."
@@ -12181,6 +13187,40 @@ msgid "Select device from the list"
msgstr "Valitse laite listasta"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Viedään kaikki"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Poista asennus"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Ladataan, hetkinen..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Aliprosessia ei voitu käynnistää!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Suoritetaan mukautettua skriptiä..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Kansiota ei voitu luoda."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "'apksigner' työkalua ei löydy."
@@ -12297,6 +13337,48 @@ msgstr ""
"päällä."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Selataan tiedostoja,\n"
+"Hetkinen…"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Mallin avaus vientiin epäonnistui:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Lisätään %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Viedään kaikki"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
"Virheellinen tiedostonimi! Android App Bundle tarvitsee *.aab "
@@ -12312,6 +13394,10 @@ msgstr ""
"Virheellinen tiedostonimi! Android APK tarvitsee *.apk tiedostopäätteen."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12332,6 +13418,21 @@ msgstr ""
"Ole hyvä ja uudelleenasenna Androidin käännösmalli 'Projekti'-valikosta."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Ei voitu luoda godot.cfg -tiedostoa projektin polkuun."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Ei voitu kirjoittaa tiedostoa:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Käännetään Android-projektia (gradle)"
@@ -12356,11 +13457,54 @@ msgstr ""
"Vientitiedoston kopiointi ja uudelleennimeäminen ei onnistu, tarkista "
"tulosteet gradle-projektin hakemistosta."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animaatio ei löytynyt: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Luodaan korkeuskäyriä..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Mallin avaus vientiin epäonnistui:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Lisätään %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Ei voitu kirjoittaa tiedostoa:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "Tasataan APK:ta..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Tunniste puuttuu."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Merkki '%s' ei ole sallittu Identifier osiossa."
@@ -12389,10 +13533,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Suorita viety HTML järjestelmän oletusselaimessa."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Ei voitu kirjoittaa tiedostoa:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Mallin avaus vientiin epäonnistui:"
@@ -12401,16 +13541,49 @@ msgid "Invalid export template:"
msgstr "Virheellinen vientimalli:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Ei voitu kirjoittaa tiedostoa:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Ei voitu kirjoittaa tiedostoa:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Ei voitu lukea mukautettua HTML tulkkia:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Ei voitu lukea käynnistyskuvan tiedostoa:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Kansiota ei voitu luoda."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Käytetään oletuskäynnistyskuvaa."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Virhe tallennettaessa skeneä."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Virheellinen Identifier osio:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12837,6 +14010,13 @@ msgstr ""
"GIProbe ei ole tuettu GLES2 näyttöajurissa.\n"
"Käytä sen sijaan BakedLightmap resurssia."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12923,6 +14103,18 @@ msgstr "Liitos ei ole yhdistetty mihinkään PhysicsBody solmuun"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Solmujen A ja B tulee olla eri PhysicsBody solmut"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12931,6 +14123,46 @@ msgstr ""
"\"Remote Path\" etäpolkuominaisuuden täytyy osoittaa kelvolliseen Spatial "
"tai Spatial-perittyyn solmuun toimiakseen."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Tämä kappale sivuutetaan, kunnes asetat meshin."
@@ -12992,6 +14224,10 @@ msgstr "BlendTree solmusta '%' ei löytynyt animaatiota: '%s'"
msgid "Animation not found: '%s'"
msgstr "Animaatio ei löytynyt: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "Virheellinen animaatio solmussa '%s': '%s'."
@@ -13165,6 +14401,27 @@ msgid "Invalid comparison function for that type."
msgstr "Virheellinen vertailufunktio tälle tyypille."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Sijoitus funktiolle."
@@ -13173,13 +14430,179 @@ msgid "Assignment to uniform."
msgstr "Sijoitus uniformille."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Varying tyypin voi sijoittaa vain vertex-funktiossa."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Vakioita ei voi muokata."
+#~ msgid "Package Contents:"
+#~ msgstr "Paketin sisältö:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Poista profiili '%s'? (ei voi perua)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Käytössä olevat ominaisuudet:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Käytössä olevat ominaisuudet:"
+
+#~ msgid "Unset"
+#~ msgstr "Poista asetus"
+
+#~ msgid "Class Options"
+#~ msgstr "Luokan valinnat"
+
+#~ msgid "Set"
+#~ msgstr "Aseta"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Tallennettiin %s muokattua resurssia."
+
+#~ msgid "Q&A"
+#~ msgstr "Kysymykset ja vastaukset"
+
+#~ msgid "Status:"
+#~ msgstr "Tila:"
+
+#~ msgid "Edit:"
+#~ msgstr "Muokkaa:"
+
+#~ msgid "Redownload"
+#~ msgstr "Lataa uudelleen"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Asennettu)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Puuttuva)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Pyyntö epäonnistui."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Loputon uudelleenohjaus."
+
+#~ msgid "Download Complete."
+#~ msgstr "Lataus valmis."
+
+#~ msgid "Remove Template"
+#~ msgstr "Poista malli"
+
+#~ msgid "Download Templates"
+#~ msgstr "Lataa mallit"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Valitse peilipalvelin listasta: (Shift+napsautus: Avaa selaimessa)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Siirrä roskakoriin"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Laajenna kaikki ominaisuudet"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Tiivistä kaikki ominaisuudet"
+
+#~ msgid "Copy Params"
+#~ msgstr "Kopioi parametrit"
+
+#~ msgid "Open in Help"
+#~ msgstr "Avaa ohjeessa"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Pelikameran ohitus\n"
+#~ "Peli ei ole käynnissä."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Vedä: Kierrä"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Paina 'V' vaihtaaksesi kääntökeskiötä. 'Shift+V' vetääksesi keskiötä "
+#~ "(liikkuessa)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt + Hiiren oikea painike: Syvyyslistan valinta"
+
+#~ msgid "Clone Down"
+#~ msgstr "Kloonaa alas"
+
+#~ msgid "Yaw"
+#~ msgstr "Käännös (yaw)"
+
+#~ msgid "Size"
+#~ msgstr "Koko"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Vedä: Kierrä\n"
+#~ "Alt + Vedä: Siirrä\n"
+#~ "Alt + Hiiren oikea painike: Syvyyslistan valinta"
+
+#~ msgid "Sep.:"
+#~ msgstr "Erotin:"
+
+#~ msgid "Add All"
+#~ msgstr "Lisää kaikki"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Teeman muokkausvalikko."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Luo tyhjä pohja"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Luo tyhjä editorin pohja"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Luo nykyisestä editorin teemasta"
+
+#~ msgid "Data Type:"
+#~ msgstr "Tietotyyppi:"
+
+#~ msgid "Theme File"
+#~ msgstr "Teema-tiedosto"
+
+#~ msgid "Compiled"
+#~ msgstr "Käännetty"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Poista %d projektia listalta?\n"
+#~ "Projektikansioiden sisältöjä ei muuteta."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Poista tämä projekti listalta?\n"
+#~ "Projektikansion sisältöä ei muuteta."
+
+#~ msgid "Templates"
+#~ msgstr "Mallit"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Lisää korvaavuuspolku"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Ei voi tehdä juurisolmulle."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Ei voitu lukea käynnistyskuvan tiedostoa:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Käytetään oletuskäynnistyskuvaa."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Animaatiotoistin ei voi animoida itseään, ainoastaan muita toistimia."
@@ -13247,9 +14670,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "Tästä sijainnista löytyy jo samanniminen tiedosto tai kansio."
-#~ msgid "Aligning APK..."
-#~ msgstr "Tasataan APK:ta..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "APK:n tasausta ei saatu suoritettua loppuun."
@@ -13312,9 +14732,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgstr ""
#~ "Nykyistä skeneä ei ole vielä tallennettu. Tallenna se ennen suorittamista."
-#~ msgid "Not in resource path."
-#~ msgstr "Ei löytynyt resurssipolusta."
-
#~ msgid "Revert"
#~ msgstr "Palauta"
@@ -13415,9 +14832,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgid "Input"
#~ msgstr "Syöte"
-#~ msgid "Properties:"
-#~ msgstr "Ominaisuudet:"
-
#~ msgid "Methods:"
#~ msgstr "Metodit:"
@@ -13782,9 +15196,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgid "Connect two points to make a split."
#~ msgstr "Yhdistä kaksi pistettä luodaksesi jaon."
-#~ msgid "Select a split to erase it."
-#~ msgstr "Valitse jako poistaaksesi sen."
-
#~ msgid "Add Node.."
#~ msgstr "Lisää solmu..."
@@ -13853,9 +15264,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgid "Public Methods:"
#~ msgstr "Julkiset metodit:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Käyttöliittymäteeman osat"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Käyttöliittymäteeman osat:"
@@ -13877,9 +15285,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgid "Match case"
#~ msgstr "Huomioi kirjainkoko"
-#~ msgid "Filter: "
-#~ msgstr "Suodatin: "
-
#~ msgid "Ok"
#~ msgstr "Ok"
@@ -13917,9 +15322,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgid "Rotate 270 degrees"
#~ msgstr "Käännä 270 astetta"
-#~ msgid "Variable"
-#~ msgstr "Muuttuja"
-
#~ msgid "Errors:"
#~ msgstr "Virheet:"
@@ -14010,9 +15412,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgid "Set Transitions to:"
#~ msgstr "Aseta siirtymät:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Animaatioraita: nimeä uudelleen"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Animaatioraita: muuta interpolaatiota"
@@ -14160,12 +15559,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgid "StyleBox Preview:"
#~ msgstr "StyleBoxin esikatselu:"
-#~ msgid "StyleBox"
-#~ msgstr "StyleBox"
-
-#~ msgid "Separation:"
-#~ msgstr "Erotus:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Tekstuurialueen editori"
@@ -14242,13 +15635,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "Ei voitu luoda godot.cfg -tiedostoa projektin polkuun."
-#, fuzzy
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "Ei voitu luoda godot.cfg -tiedostoa projektin polkuun."
-
-#~ msgid "Not found!"
-#~ msgstr "Ei löytynyt!"
-
#~ msgid "Replace By"
#~ msgstr "Korvaa"
@@ -14485,9 +15871,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "Tekstuurin pakkauksen latu (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "Tekstuurin asetukset"
-
#~ msgid "At least one file needed for Atlas."
#~ msgstr "Ainakin yksi tiedosto tarvitaan Atlas-kuvaa varten."
@@ -14592,9 +15975,6 @@ msgstr "Vakioita ei voi muokata."
#~ msgid "Zoom Set..."
#~ msgstr "Aseta Zoomaus..."
-#~ msgid "Set a Value"
-#~ msgstr "Aseta arvo"
-
#~ msgid "Parse BBCode"
#~ msgstr "Liitä BBCode"
diff --git a/editor/translations/fil.po b/editor/translations/fil.po
index 892968821b..aacdf9c442 100644
--- a/editor/translations/fil.po
+++ b/editor/translations/fil.po
@@ -517,7 +517,8 @@ msgstr "Segundo"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -543,7 +544,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -564,6 +566,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -580,6 +586,10 @@ msgid "Use Bezier Curves"
msgstr "Gumamit ng Bezier Curves"
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -628,7 +638,7 @@ msgid "Select Tracks to Copy"
msgstr "Piliin ang mga Tracks na Kokopyahin"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -714,12 +724,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -774,11 +786,9 @@ msgid "Add"
msgstr "Maglagay"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -828,6 +838,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -897,8 +908,9 @@ msgid "Edit..."
msgstr "I-edit..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
-msgstr ""
+#, fuzzy
+msgid "Go to Method"
+msgstr "Pumunta sa Linya"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -912,6 +924,14 @@ msgstr "Baguhin"
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -933,8 +953,8 @@ msgstr "Paghahanap:"
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1007,16 +1027,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1061,7 +1083,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1182,37 +1204,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1220,7 +1246,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1284,7 +1310,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1364,7 +1390,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1451,6 +1477,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1466,16 +1500,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1491,7 +1525,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1630,7 +1664,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1662,15 +1736,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1688,7 +1762,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1696,17 +1770,25 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Lumikha"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Ilipat Ang Mga Bezier Points"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1715,19 +1797,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1751,7 +1833,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1805,9 +1887,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1888,8 +1971,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1960,7 +2042,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2046,7 +2128,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2062,8 +2144,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2079,7 +2162,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2143,7 +2226,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2337,18 +2421,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2518,7 +2606,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2699,6 +2787,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2831,13 +2923,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2845,6 +2936,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2853,7 +2948,8 @@ msgid "Community"
msgstr "Komunidad"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Tungkol"
#: editor/editor_node.cpp
@@ -2951,6 +3047,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2977,7 +3081,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3018,6 +3122,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3050,6 +3158,10 @@ msgstr "Mga Babala"
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3074,21 +3186,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3096,11 +3205,12 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "Oras (s): "
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3120,6 +3230,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3161,12 +3281,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3184,22 +3298,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
+msgstr "Pahina: "
+
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3213,37 +3350,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr "Pahina: "
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3278,7 +3398,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3298,64 +3418,71 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Walang sagot."
+
+#: editor/export_template_manager.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Cannot remove temporary file:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3363,7 +3490,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3373,135 +3504,167 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Walang sagot."
+msgid "Connecting..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Kumpleto ang pag-Download."
+msgid "Downloading"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+#, fuzzy
+msgid "Download from:"
+msgstr "Kumpleto ang pag-Download."
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid "Official export templates aren't available for development builds."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Install from File"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Cancel the download of the templates."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3627,22 +3790,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3650,6 +3839,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3729,10 +3922,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3953,52 +4142,50 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Burahin ang (mga) Napiling Key"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4014,7 +4201,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4022,6 +4213,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4049,6 +4244,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4248,7 +4452,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4462,6 +4666,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4798,10 +5007,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4810,15 +5027,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Walang sagot."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4847,6 +5068,10 @@ msgid "Timeout."
msgstr "Oras:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4947,7 +5172,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4990,6 +5219,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4998,8 +5231,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5234,15 +5467,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5296,6 +5530,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5307,19 +5542,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5551,6 +5792,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Mag-insert ng Key dito"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5563,6 +5813,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5805,6 +6095,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5837,7 +6131,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5896,13 +6190,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5956,7 +6262,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6228,7 +6533,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6533,6 +6839,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Maglipat ng (mga) Bezier Point"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Maglipat ng (mga) Bezier Point"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6736,7 +7060,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6767,6 +7091,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6889,8 +7218,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6923,10 +7252,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7078,6 +7403,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7098,39 +7442,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7286,6 +7634,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7301,6 +7653,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7314,7 +7670,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7322,18 +7678,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7430,6 +7783,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7719,11 +8076,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7744,7 +8096,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7752,156 +8104,529 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Palitan ang Lahat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Ilipat Ang Mga Bezier Points"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Ilipat Ang Mga Bezier Points"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Idagdag Ang Bezier Point"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Idagdag Ang Bezier Point"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Ilipat Ang Mga Bezier Points"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Ilipat Ang Mga Bezier Points"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Select Another Theme Resource:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Another Theme"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Idagdag Ang Bezier Point"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8071,6 +8796,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8389,11 +9118,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9214,7 +9938,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9329,7 +10053,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9337,7 +10061,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9345,11 +10069,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9422,7 +10146,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9456,6 +10180,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9600,15 +10336,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9635,7 +10367,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9647,10 +10379,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9659,11 +10403,24 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Ilipat Ang Mga Bezier Points"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr "Tungkol"
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9671,6 +10428,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9681,8 +10446,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9692,6 +10461,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9733,6 +10506,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9872,7 +10649,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9880,11 +10657,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10153,6 +10930,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10316,11 +11097,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10376,6 +11175,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10422,10 +11225,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10696,6 +11495,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10765,6 +11570,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11048,6 +11857,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11089,6 +11906,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11333,6 +12154,16 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Baguhin ang Type ng Nilalaman ng Array"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Baguhin ang Nilalaman ng Array"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11443,6 +12274,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Burahin ang (mga) Napiling Key"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11666,10 +12502,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11699,6 +12531,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11795,6 +12655,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11807,6 +12703,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11821,6 +12721,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11840,11 +12753,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11873,27 +12824,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Could not create HTTP server directory:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12241,6 +13216,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12310,12 +13292,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12364,6 +13398,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12511,15 +13549,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index 6fad70a7c2..9be7d406dd 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -85,8 +85,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-07-01 14:33+0000\n"
-"Last-Translator: Clément Topy <topy72.mine@gmail.com>\n"
+"PO-Revision-Date: 2021-07-16 05:47+0000\n"
+"Last-Translator: Pierre Caye <pierrecaye@laposte.net>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot/fr/>\n"
"Language: fr\n"
@@ -94,7 +94,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
-"X-Generator: Weblate 4.8-dev\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -611,7 +611,8 @@ msgstr "Secondes"
msgid "FPS"
msgstr "IPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -637,7 +638,8 @@ msgstr "Mettre à l'échelle la sélection"
msgid "Scale From Cursor"
msgstr "Agrandir/Rétrécir à partir du curseur"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Dupliquer la sélection"
@@ -658,6 +660,11 @@ msgid "Go to Previous Step"
msgstr "Aller à l'étape précédente"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Réinitialiser"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimiser l'animation"
@@ -674,6 +681,11 @@ msgid "Use Bezier Curves"
msgstr "Utiliser les courbes de Bézier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Coller pistes"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Optimiser l'animation"
@@ -722,7 +734,7 @@ msgid "Select Tracks to Copy"
msgstr "Sélectionner les pistes à copier"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -808,12 +820,14 @@ msgid "Toggle Scripts Panel"
msgstr "Afficher/Cacher le panneau des scripts"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoomer"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -870,11 +884,9 @@ msgid "Add"
msgstr "Ajouter"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -926,6 +938,7 @@ msgstr "Impossible de connecter le signal"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -995,7 +1008,8 @@ msgid "Edit..."
msgstr "Édition..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Aller à la méthode"
#: editor/create_dialog.cpp
@@ -1010,6 +1024,14 @@ msgstr "Changer"
msgid "Create New %s"
msgstr "Créer un nouveau %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Aucun résultats pour \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -1031,8 +1053,8 @@ msgstr "Rechercher :"
msgid "Matches:"
msgstr "Correspondances :"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1108,20 +1130,24 @@ msgid "Owners Of:"
msgstr "Propriétaires de :"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Supprimer les fichiers sélectionnés du projet ? (annulation impossible)\n"
"Vous pouvez retrouver les fichiers supprimés dans la corbeille du système "
"pour les restaurer."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Les fichiers qui vont être supprimés sont utilisés par d'autres ressources "
"pour leur fonctionnement.\n"
@@ -1171,7 +1197,7 @@ msgstr "Explorateur de ressources orphelines"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1296,28 +1322,42 @@ msgstr "Composants"
msgid "Licenses"
msgstr "Licences"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Erreur d'ouverture de paquetage, pas au format ZIP."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr ""
+"Erreur lors de l'ouverture du fichier package (il n'est pas au format ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (existe déjà)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Décompression des assets"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "L'extraction des fichiers suivants depuis le paquetage a échoué :"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Et %s fichiers supplémentaires."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paquetage installé avec succès !"
#: editor/editor_asset_installer.cpp
@@ -1325,16 +1365,13 @@ msgstr "Paquetage installé avec succès !"
msgid "Success!"
msgstr "Ça marche !"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Contenu du paquetage :"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Installer"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Installeur de paquetage"
#: editor/editor_audio_buses.cpp
@@ -1398,7 +1435,8 @@ msgid "Bypass"
msgstr "Contourner"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Options de bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1478,7 +1516,7 @@ msgstr "Ajouter un bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Ajoutez un nouveau bus audio à cette disposition."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1567,6 +1605,15 @@ msgid "Can't add autoload:"
msgstr "Impossible d'ajouter le chargement automatique :"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Le fichier n'existe pas."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Ajouter le chargement automatique"
@@ -1582,16 +1629,17 @@ msgid "Node Name:"
msgstr "Nom de nœud :"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nom"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Renommer la variable"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Coller les paramètres"
@@ -1607,7 +1655,7 @@ msgstr "Stockage des modifications locales…"
msgid "Updating scene..."
msgstr "Mise à jour de la scène…"
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[vide]"
@@ -1762,8 +1810,49 @@ msgid "Import Dock"
msgstr "Dock d'importation"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Effacer le profil '%s' ? (pas d'annulation)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Actuel)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1795,15 +1884,18 @@ msgid "Enable Contextual Editor"
msgstr "Ouvrir l'éditeur contextuel"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Propriétés activées :"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Propriétés :"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Fonctionnalités activées :"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Fonctionnalités"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Classes activées :"
#: editor/editor_feature_profile.cpp
@@ -1823,25 +1915,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Erreur lors de l'enregistrement du profil au chemin : « %s »."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Désassigner"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Réinitialiser"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Profil actuel :"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Rendre actuel"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Effacer le profil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Nouveau"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Supprimer la tuile"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Profils disponibles :"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Rendre actuel"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importation"
@@ -1850,20 +1951,22 @@ msgid "Export"
msgstr "Exporter"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Profils disponibles :"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Profil actuel :"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Options de classe"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Options de classe :"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Nouveau nom de profil :"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Effacer le profil"
+msgid "New profile name:"
+msgstr "Nouveau nom de profil :"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1886,7 +1989,8 @@ msgid "Select Current Folder"
msgstr "Sélectionner le dossier courant"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Le fichier existe, l'écraser ?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1940,9 +2044,10 @@ msgid "Open a File or Directory"
msgstr "Ouvrir un fichier ou un répertoire"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Enregistrer"
@@ -2023,8 +2128,7 @@ msgid "Directories & Files:"
msgstr "Répertoires et fichiers :"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Aperçu :"
@@ -2097,7 +2201,7 @@ msgstr "Propriétés du thème"
msgid "Enumerations"
msgstr "Énumérations"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Constantes"
@@ -2186,7 +2290,7 @@ msgstr "Méthode"
msgid "Signal"
msgstr "Signaux"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Constante"
@@ -2202,9 +2306,10 @@ msgstr "Propriété du thème"
msgid "Property:"
msgstr "Propriété :"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Définir"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Définir %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2219,7 +2324,7 @@ msgid "Copy Selection"
msgstr "Copier la sélection"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2283,7 +2388,8 @@ msgid "Imported resources can't be saved."
msgstr "Les ressources importées ne peuvent pas être sauvegardées."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2510,18 +2616,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Sauvegarder les modifications effectuées à « %s » avant de quitter ?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Sauvegardé %s des ressources modifiées."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Un nœud racine est nécessaire pour sauvegarder la scène."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Enregistrer la scène sous…"
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Cette opération ne peut être réalisée sans une scène."
@@ -2726,7 +2837,7 @@ msgstr "Supprimer la disposition"
msgid "Default"
msgstr "Par défaut"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Montrer dans le système de fichiers"
@@ -2907,6 +3018,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Explorateur de ressources orphelines..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Renommer le projet"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Quitter vers la liste des projets"
@@ -3066,20 +3182,24 @@ msgstr "Gérer les modèles d'exportation..."
msgid "Help"
msgstr "Aide"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Documentation en ligne"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Ouvrir la documentation"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Questions et réponses"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Signaler un bug"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Envoyez vos retours sur la documentation"
@@ -3088,7 +3208,8 @@ msgid "Community"
msgstr "Communauté"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "À propos"
#: editor/editor_node.cpp
@@ -3187,6 +3308,16 @@ msgid "Manage Templates"
msgstr "Gérer les modèles"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Installer depuis fichier"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Sélectionnez un maillage source :"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3224,7 +3355,7 @@ msgstr "Importer des modèles depuis un fichier ZIP"
msgid "Template Package"
msgstr "Paquet de modèle"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Bibliothèque d'exportation"
@@ -3267,6 +3398,11 @@ msgid "Select"
msgstr "Sélectionner"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Sélectionner le dossier courant"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Ouvrir éditeur 2D"
@@ -3298,6 +3434,11 @@ msgstr "Avertissement !"
msgid "No sub-resources found."
msgstr "Aucune sous-ressource n'a été trouvée."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Aucune sous-ressource n'a été trouvée."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Création des prévisualisations des maillages"
@@ -3322,33 +3463,34 @@ msgstr "Extensions installées :"
msgid "Update"
msgstr "Mettre à jour"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Version :"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Auteur :"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "État :"
+#, fuzzy
+msgid "Author"
+msgstr "Auteurs"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Modifier :"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "État"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Mesure :"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Temps par trame (seconde)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Temps moyen (seconde)"
#: editor/editor_profiler.cpp
@@ -3368,6 +3510,16 @@ msgid "Self"
msgstr "Self"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Trame # :"
@@ -3409,14 +3561,6 @@ msgstr "RID invalide"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"La ressource sélectionnée (%s) ne correspond à aucun des types attendus pour "
-"cette propriété (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3441,40 +3585,6 @@ msgid "Pick a Viewport"
msgstr "Choisissez un Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Nouveau script"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Hériter d'un script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Nouveau %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Rendre unique"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Coller"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Convertir en %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Le nœud sélectionné n'est pas un Viewport !"
@@ -3503,6 +3613,49 @@ msgstr "Nouvelle Valeur :"
msgid "Add Key/Value Pair"
msgstr "Ajouter une paire clé/valeur"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"La ressource sélectionnée (%s) ne correspond à aucun des types attendus pour "
+"cette propriété (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Rendre unique"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Coller"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Convertir en %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Nouveau %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Nouveau script"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Hériter d'un script"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3537,7 +3690,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Avez-vous oublié la méthode « _run » ?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Maintenir Ctrl pour arrondir à l'entier. Maintenir Maj pour des changements "
"plus précis."
@@ -3559,118 +3713,69 @@ msgid "Import From Node:"
msgstr "Importer à partir d'un nœud :"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Télécharger à nouveau"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Désinstaller"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Installé)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Télécharger"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
-"Les modèles d'exportation officiels ne sont pas disponibles pour les "
-"versions de développement."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Manquant)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Actuel)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "'%s' n'existe pas."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Récupération des miroirs, veuillez patienter..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Supprimer la version « %s » du modèle ?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "Starting the download..."
msgstr ""
-"Impossible d'ouvrir le fichier ZIP contenant les modèles d'exportation."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Format de version.txt invalide dans les modèles : %s."
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Aucun version.txt n'a été trouvé dans les modèles."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Erreur lors de la création du chemin pour les modèles :"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Extraction des modèles d'exportation"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importation :"
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Erreur lors du téléchargement de la liste des miroirs."
+msgid "Error requesting URL:"
+msgstr "Erreur lors de la demande de l’URL :"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Erreur lors de la lecture de la liste JSON des miroirs. Merci de signaler ce "
-"problème !"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Connexion au Miroir..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Aucun lien de téléchargement trouvé pour cette version. Le téléchargement "
-"direct est uniquement disponible pour les versions officielles."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Impossible de résoudre le nom de l'hôte :"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Impossible à résoudre."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Connexion à l'hôte impossible :"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Connection impossible."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Pas de réponse de l'hôte :"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Pas de réponse."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "Échec de la requête."
+msgid "Request failed."
+msgstr "La requête a échoué."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Boucle de Redirection."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "La requête a échoué, trop de redirections"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Échec :"
+#, fuzzy
+msgid "Request failed:"
+msgstr "La requête a échoué."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Téléchargement terminé."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3685,12 +3790,27 @@ msgstr ""
"Les archives des modèles problématiques se trouvent dans '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Erreur lors de la demande de l’URL :"
+msgid "Error getting the list of mirrors."
+msgstr "Erreur lors du téléchargement de la liste des miroirs."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Connexion au Miroir..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Erreur lors de la lecture de la liste JSON des miroirs. Merci de signaler ce "
+"problème !"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Aucun lien de téléchargement trouvé pour cette version. Le téléchargement "
+"direct est uniquement disponible pour les versions officielles."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3735,46 +3855,142 @@ msgid "SSL Handshake Error"
msgstr "Erreurs de la négociation SSL"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr ""
+"Impossible d'ouvrir le fichier ZIP contenant les modèles d'exportation."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Format de version.txt invalide dans les modèles : %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Aucun version.txt n'a été trouvé dans les modèles."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Erreur lors de la création du chemin pour les modèles :"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Extraction des modèles d'exportation"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importation :"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Supprimer la version « %s » du modèle ?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Décompresser les sources de compilation Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Gestionnaire d'export de modèles"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Version courante :"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Versions installées :"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Ouvrir le fichier"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Désinstaller"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Valeur initiale pour le compteur"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Erreur de téléchargement"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"Les modèles d'exportation officiels ne sont pas disponibles pour les "
+"versions de développement."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Installer depuis fichier"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Supprimer le modèle"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importer des modèles depuis un fichier ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Annuler"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Sélectionner le fichier de modèle"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr ""
+"Impossible d'ouvrir le fichier ZIP contenant les modèles d'exportation."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Modèles d'exportation Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Versions installées :"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Gestionnaire d'export de modèles"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Désinstaller"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Télécharger les modèles"
+msgid "Select Template File"
+msgstr "Sélectionner le fichier de modèle"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr "Modèles d'exportation Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
-"Sélectionner un miroir depuis la liste : (Maj+Click : Ouvrir dans le "
-"navigateur)"
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3909,29 +4125,62 @@ msgstr "Nouveau script…"
msgid "New Resource..."
msgstr "Nouvelle ressource…"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Développer tout"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Réduire tout"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Dupliquer…"
+#, fuzzy
+msgid "Sort files"
+msgstr "Rechercher des fichiers"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Déplacer vers la corbeille"
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Dernière modification"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Dernière modification"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Dupliquer…"
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Renommer..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Dossier/Fichier précédent"
@@ -4015,10 +4264,6 @@ msgstr "Rechercher…"
msgid "Replace..."
msgstr "Remplacer…"
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Annuler"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Rechercher : "
@@ -4243,53 +4488,55 @@ msgid "Failed to load resource."
msgstr "Impossible de charger la ressource."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Développer toutes les propriétés"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Propriétés"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Réduire toutes les propriétés"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Enregistrer sous…"
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Propriétés"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Copier paramètres"
+msgid "Make Sub-Resources Unique"
+msgstr "Rendre les sous-ressources uniques"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Modifier le Presse-papiers de la ressource"
+msgid "Create a new resource in memory and edit it."
+msgstr "Créer une nouvelle ressource dans la mémoire et la modifier."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Copier la ressource"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Charger une ressource existante depuis la disque et la modifier."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Rendre intégré"
+msgid "Save the currently edited resource."
+msgstr "Enregistrer la ressource en cours d'édition."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Rendre les sous-ressources uniques"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Enregistrer sous…"
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Ouvrir dans l'aide"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Pas dans le chemin de la ressource."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Créer une nouvelle ressource dans la mémoire et la modifier."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Modifier le Presse-papiers de la ressource"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Charger une ressource existante depuis la disque et la modifier."
+msgid "Copy Resource"
+msgstr "Copier la ressource"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Enregistrer la ressource en cours d'édition."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Rendre intégré"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4304,14 +4551,24 @@ msgid "History of recently edited objects."
msgstr "Historique des objets récemment édités."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Propriétés de l'objet."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Ouvrir la documentation"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Ouvrir la documentation"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtrer les propriétés"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Propriétés de l'objet."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Les modifications risquent d'être perdues !"
@@ -4339,6 +4596,15 @@ msgstr "Nom du plugin :"
msgid "Subfolder:"
msgstr "Sous-dossier :"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Auteur :"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Version :"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Langage :"
@@ -4548,7 +4814,8 @@ msgid "Blend:"
msgstr "Mélange :"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Paramètre modifié"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4771,6 +5038,11 @@ msgid "Animation"
msgstr "Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Nouveau"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Modification Transitions..."
@@ -5113,10 +5385,18 @@ msgid "View Files"
msgstr "Voir Fichiers"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Télécharger"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Erreur de connection, veuillez essayer à nouveau."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Connection impossible."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Connexion à l'hôte impossible :"
@@ -5125,16 +5405,20 @@ msgid "No response from host:"
msgstr "Pas de réponse de l'hôte :"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Pas de réponse."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Impossible de résoudre le nom de l'hôte :"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "La requête a échoué, code retourné :"
+msgid "Can't resolve."
+msgstr "Impossible à résoudre."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "La requête a échoué."
+msgid "Request failed, return code:"
+msgstr "La requête a échoué, code retourné :"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5161,6 +5445,10 @@ msgid "Timeout."
msgstr "Délai dépassé."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Échec :"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Vérification du téléchargement échouée, le fichier a été altéré."
@@ -5258,11 +5546,15 @@ msgstr "Dernier"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "All"
-msgstr "Tout"
+msgstr "All"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Aucun résultats pour \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5304,6 +5596,10 @@ msgstr "Chargement..."
msgid "Assets ZIP File"
msgstr "Fichier ZIP de données"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5314,11 +5610,12 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
-"Aucun maillage à transférer. Assurez-vous qu'ils contiennent un canal UV2 et "
-"que l'indicateur « Bake Light » est activé."
+"Aucun maillage à précalculer. Assurez-vous qu'ils contiennent un canal UV2 "
+"et que les propriétés « Use In Bake Light » et « Generate Lightmap » soient "
+"activées."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -5562,9 +5859,10 @@ msgstr "Modifier les ancres"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Remplacement de la Caméra du Jeu\n"
"Remplace la caméra du jeu par la caméra de la fenêtre d'affichage de "
@@ -5573,11 +5871,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Remplacement de la Caméra du Jeu\n"
-"Aucune instance de jeu en cours d'exécution."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5632,6 +5929,7 @@ msgstr ""
"sont strictement déterminées par leur parent."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5643,22 +5941,32 @@ msgid "Select Mode"
msgstr "Mode sélection"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Glisser : tourner"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Supprimer le nœud sélectionné ou la transition."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Glisser : déplacer"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Supprimer le nœud sélectionné ou la transition."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Appuyez sur « v » pour changer le pivot, « Maj+V » pour glisser le pivot "
-"(lors du déplacement)."
+"Afficher une liste de tous les objets à la position cliquée\n"
+"(identique à Alt+Bouton droit en mode sélection)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+Bouton droit : Sélection détaillée par liste"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5896,6 +6204,16 @@ msgid "Clear Pose"
msgstr "Vider la pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Ajouter un nœud"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Instancier scène(s)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Multiplier le pas de la grille par 2"
@@ -5908,6 +6226,52 @@ msgid "Pan View"
msgstr "Vue panoramique"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Dézoomer"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Dézoomer"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Dézoomer"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Dézoomer"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Dézoomer"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Dézoomer"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Ajouter %s"
@@ -6152,6 +6516,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Impossible de créer une forme de collision convexe unique."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Créer une forme convexe unique"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Créer une forme convexe unique"
@@ -6188,7 +6557,8 @@ msgid "No mesh to debug."
msgstr "Aucun maillage à déboguer."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Le modèle n'a pas d'UV dans cette couche"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6258,13 +6628,27 @@ msgstr ""
"collisions."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Créer une seule collision convexe sœur"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Créer plusieurs collisions convexes sœurs"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Crée une forme de collision basée sur les polygones.\n"
"Il s'agit d'une performance à mi-chemin entre les deux options ci-dessus."
@@ -6326,7 +6710,6 @@ msgid "Mesh Library"
msgstr "Librairie de maillages"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Ajouter un item"
@@ -6604,7 +6987,8 @@ msgid "Close Curve"
msgstr "Fermer la courbe"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Options"
@@ -6916,6 +7300,26 @@ msgstr "Charger une ressource"
msgid "ResourcePreloader"
msgstr "ResourcePreloader"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Retourner horizontalement"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Compte de Points Générés :"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Compte de Points Générés :"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Retourner horizontalement"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree n'a pas de chemin défini vers un AnimationPlayer"
@@ -7121,7 +7525,7 @@ msgstr "Lancer"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Rechercher"
@@ -7152,6 +7556,11 @@ msgid "Debug with External Editor"
msgstr "Déboguer avec un éditeur externe"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Documentation en ligne"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Ouvrir la documentation de Godot en ligne."
@@ -7280,8 +7689,8 @@ msgstr "Atteindre"
msgid "Cut"
msgstr "Couper"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Tout sélectionner"
@@ -7314,10 +7723,6 @@ msgid "Unfold All Lines"
msgstr "Dérouler toutes les lignes"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Cloner en dessous"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Compléter le symbole"
@@ -7471,6 +7876,28 @@ msgid "View Plane Transform."
msgstr "Transformation du plan de vue."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Aucun"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Mode rotation"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Translater :"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Échelle :"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Échelle : "
@@ -7491,42 +7918,54 @@ msgid "Animation Key Inserted."
msgstr "Clé d'animation insérée."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Tangage (latéral)"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Lacet (hauteur)"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Taille"
+#, fuzzy
+msgid "Size:"
+msgstr "Taille : "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Objets dessinés"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Modifications de materiau"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Modification de shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Modifications de surface"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Appels de graphes"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Vertex"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Vue de dessus."
@@ -7681,6 +8120,11 @@ msgid "Freelook Slow Modifier"
msgstr "Ralentissement de la vue libre"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Changer la taille d'une caméra"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Rotation de la vue verrouillée"
@@ -7701,6 +8145,11 @@ msgstr ""
"performance en jeu."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Convertir en %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Dialogue XForm"
@@ -7720,7 +8169,8 @@ msgstr ""
"(« rayon x »)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Aligner les nœuds avec le sol"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7728,16 +8178,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Pas de sol solide trouvé pour y attacher la sélection."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Glisser : Rotation\n"
-"ALt+Glisser : Déplacer\n"
-"Alt+Bouton droit : Sélection détaillée par liste"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Utiliser les coordonées locales"
@@ -7746,6 +8186,10 @@ msgid "Use Snap"
msgstr "Utiliser l’aimantation"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Vue de dessous"
@@ -7839,6 +8283,11 @@ msgid "View Grid"
msgstr "Afficher la grille"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Paramètres de la vue"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Paramètres..."
@@ -8130,11 +8579,6 @@ msgid "Snap Mode:"
msgstr "Mode d'aimantation :"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Aucun"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Aimanter au pixel"
@@ -8155,165 +8599,604 @@ msgid "Step:"
msgstr "Pas (s) :"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Sep. :"
+#, fuzzy
+msgid "Separation:"
+msgstr "Recensements :"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "RegionDeTexture"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Ajouter tous les items"
+#, fuzzy
+msgid "Colors"
+msgstr "Couleur"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Tout ajouter"
+#, fuzzy
+msgid "Fonts"
+msgstr "Police"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Icône"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Style"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Aucune sous-ressource n'a été trouvée."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Constantes"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Constante de couleur."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Aucune sous-ressource n'a été trouvée."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Aucune sous-ressource n'a été trouvée."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Aucune sous-ressource n'a été trouvée."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Importer un thème"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Quitter l'éditeur ?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analyse"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtres :"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Sélectionner un nœud"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Sélectionnez un fractionnement à effacer."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Sélectionnez d'abord un élément à configurer !"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Sélectionnez d'abord un élément à configurer !"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Sélectionnez d'abord un élément à configurer !"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Sélectionnez d'abord un élément à configurer !"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Sélectionnez d'abord un élément à configurer !"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Réduire tout"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Développer tout"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Sélectionner le fichier de modèle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Sélectionner des points"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Tout sélectionner"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importer une scène"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Supprimer tous"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Supprimer tout"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Supprimer l'item"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Modifier le thème"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Supprimer tous"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Supprimer tous"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Menu d'édition des thèmes."
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Supprimer tous"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Supprimer tous"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Ajouter des items de classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Ajouter des items de classe"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Ajouter un item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Ajouter un item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Ajouter tous les items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Supprimer des items de classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Supprimer des items de classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Renommer le nœud"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Renommer le nœud"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Supprimer l'élément sélectionné"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Fichier invalide, pas une disposition de bus audio."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Gérer les modèles"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Élément modifiable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Type :"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Type :"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Ajouter un item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Ajouter tous les items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Supprimer l'item"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Supprimer des items de classe"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Créer un nouveau modèle"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Supprimer des items de classe"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Créer un nouveau modèle d'éditeur"
+msgid "Remove All Items"
+msgstr "Supprimer tous"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Créer à partir du thème actuel de l'éditeur"
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Ajouter un item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nom de nœud :"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importer un thème"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Par défaut"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Modifier le thème"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Supprimer une ressource"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Importer un thème"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Configurer la grille"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Renommer par lot"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Redéfinition"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Type"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Ajouter un item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Type de nœud"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Charger défaut"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Redéfinition"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Thème"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Gérer les modèles d'exportation..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Aperçu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Aperçu de la mise à jour"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Sélectionnez un maillage source :"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Activer / Désactiver bouton"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Bouton désactivé"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Item"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Élément Désactivé"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Item à cocher"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Item coché"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Item radio"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Item radio coché"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Séparateur nommé."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Sous-menu"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Sous-élément 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Sous-élément 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Possède"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Plusieurs"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "LineEdit désactivé"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Onglet 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Onglet 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Onglet 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Élément modifiable"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Sous-arbre"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Possède,Plusieurs,Options"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Type de données :"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Icône"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Style"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Police"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Couleur"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Fichier invalide, pas une disposition de bus audio."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Fichier de Thème"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8485,6 +9368,10 @@ msgid "Priority"
msgstr "Priorité"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Icône"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z Index"
@@ -8821,11 +9708,6 @@ msgid "Commit Changes"
msgstr "Commiter les changements"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "État"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
"Vérifier les différences de fichier avant de les soumettre à la dernière "
@@ -9723,7 +10605,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Modifier la propriété visuelle"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9850,7 +10733,8 @@ msgid "Script"
msgstr "Script"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Mode d'exportation des scripts :"
#: editor/project_export.cpp
@@ -9858,19 +10742,21 @@ msgid "Text"
msgstr "Texte"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Compilé"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Chiffré (fournir clé ci-dessous)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Clé de chiffrement invalide (doit comporter 64 caractères)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Clé de chiffrement des scripts (256 bits en hexadécimal) :"
#: editor/project_export.cpp
@@ -9946,7 +10832,8 @@ msgid "Imported Project"
msgstr "Projet importé"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Nom du projet invalide."
#: editor/project_manager.cpp
@@ -9983,6 +10870,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Impossible de créer le fichier project.godot dans le chemin du projet."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Erreur d'ouverture de paquetage, pas au format ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "L'extraction des fichiers suivants depuis le paquetage a échoué :"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Paquetage installé avec succès !"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Renommer le projet"
@@ -10162,20 +11061,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Voulez-vous vraiment lancer %d projets à la fois ?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Supprimer %d projets de la liste ?\n"
-"Le contenu des dossiers de projet ne sera pas modifié."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Sélectionner appareil depuis la liste"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Supprimer le projet de la liste ? \n"
-"Le contenu du dossier de projet ne sera pas modifié."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Sélectionner appareil depuis la liste"
#: editor/project_manager.cpp
msgid ""
@@ -10209,7 +11102,8 @@ msgid "Project Manager"
msgstr "Gestionnaire de projets"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projets"
#: editor/project_manager.cpp
@@ -10221,10 +11115,25 @@ msgid "Last Modified"
msgstr "Dernière modification"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Exporter le projet"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Renommer le projet"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Scanner"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projets"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Sélectionnez un dossier à scanner"
@@ -10233,18 +11142,41 @@ msgid "New Project"
msgstr "Nouveau projet"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Projet importé"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Renommer le projet"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Nettoyer la liste"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Modèles"
+msgid "About"
+msgstr "À propos"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Bibliothèque d'assets"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Redémarrer maintenant"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Supprimer tout"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Impossible de lancer le projet"
@@ -10257,8 +11189,14 @@ msgstr ""
"Voulez-vous explorer des exemples de projets officiels dans l'Asset Library ?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtrer les propriétés"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10272,6 +11210,10 @@ msgid "Key "
msgstr "Touche "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Bouton de joystick"
@@ -10315,6 +11257,10 @@ msgstr "Tous les périphérique"
msgid "Device"
msgstr "Périphérique"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Appuyez sur une touche…"
@@ -10456,7 +11402,8 @@ msgid "Override for Feature"
msgstr "Écrasement d'un paramètre, dédié à un tag de fonctionnalité"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Ajouter une traduction"
#: editor/project_settings_editor.cpp
@@ -10464,11 +11411,13 @@ msgid "Remove Translation"
msgstr "Supprimer la traduction"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Ajouter un chemin remappé"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Réaffectation (remap) des ressources ; Ajouter une réaffectation"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Réaffectation (remap) des ressources ; Ajouter une réaffectation"
#: editor/project_settings_editor.cpp
@@ -10740,6 +11689,10 @@ msgid "Post-Process"
msgstr "Post-traitement"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Style"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Conserver"
@@ -10906,12 +11859,30 @@ msgid "Delete node \"%s\"?"
msgstr "Supprimer le noeud \"%s\" ?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Ne peut fonctionner avec le nœud racine."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Cette opération ne peut être réalisée sur des scènes instanciées."
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10970,6 +11941,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Impossible d'opérer sur des nœuds dont la scène actuelle hérite !"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Cette opération ne peut être réalisée sur des scènes instanciées."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Attacher un script"
@@ -11019,10 +11994,6 @@ msgid "Load As Placeholder"
msgstr "Charger en tant qu'instance temporaire"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Ouvrir la documentation"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11316,6 +12287,12 @@ msgstr ""
"être modifiés à l'aide d'un éditeur externe."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Nom de la classe :"
@@ -11384,6 +12361,10 @@ msgid "Copy Error"
msgstr "Copier l'erreur"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Mémoire vidéo"
@@ -11672,6 +12653,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr "L'objet ne peut fournir une longueur."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exporter une bibliothèque de maillages"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exporter..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Plan suivant"
@@ -11713,6 +12704,11 @@ msgid "GridMap Paint"
msgstr "Peinture GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Remplissage de la sélection de GridMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Grille"
@@ -11964,6 +12960,16 @@ msgid "Add Output Port"
msgstr "Ajouter un port de sortie"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Changer le type"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Changer le nom du port d'entrée"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Remplacer une fonction intégrée existante."
@@ -12076,6 +13082,11 @@ msgid "Add Preload Node"
msgstr "Ajouter un nœud préchargé"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Ajouter un nœud"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Ajouter un nœud à partir de l'arbre"
@@ -12308,10 +13319,6 @@ msgstr "Rechercher VisualScript"
msgid "Get %s"
msgstr "Obtenir %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Définir %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Nom du paquet manquant."
@@ -12346,6 +13353,40 @@ msgid "Select device from the list"
msgstr "Sélectionner appareil depuis la liste"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Tout exporter"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Désinstaller"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Chargement en cours, veuillez patienter..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Impossible de démarrer le sous-processus !"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Lancement du script personnalisé…"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Impossible de créer le dossier."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Impossible de trouver l'outil 'apksigner'."
@@ -12468,6 +13509,48 @@ msgstr ""
"est activée."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Analyse des fichiers en cours,\n"
+"Veuillez patienter..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Impossible d'ouvrir le modèle pour exportation :"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Ajout de %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Tout exporter"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
"Nom de fichier invalide ! Le bundle d'application Android nécessite "
@@ -12486,6 +13569,10 @@ msgstr ""
"*.apk."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12507,6 +13594,22 @@ msgstr ""
"Veuillez réinstaller la version d'Android depuis le menu 'Projet'."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+"Impossible de modifier le fichier project.godot dans le chemin du projet."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Impossible d'écrire le fichier :"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Construire le Project Android (gradle)"
@@ -12532,11 +13635,54 @@ msgstr ""
"Impossible de copier et de renommer le fichier d'export, vérifiez le dossier "
"du projet gradle pour les journaux."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animation introuvable : « %s »"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Création des contours..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Impossible d'ouvrir le modèle pour exportation :"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Ajout de %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Impossible d'écrire le fichier :"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "Alignement de l'APK…"
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "L'identifiant est manquant."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Le caractère « %s » n'est pas autorisé dans l'identifiant."
@@ -12565,10 +13711,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Exécutez le HTML exporté dans le navigateur par défaut du système."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Impossible d'écrire le fichier :"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Impossible d'ouvrir le modèle pour exportation :"
@@ -12577,16 +13719,49 @@ msgid "Invalid export template:"
msgstr "Modèle d'exportation non valide :"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Impossible d'écrire le fichier :"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Impossible d'écrire le fichier :"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Impossible de lire le shell HTML personnalisé :"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Impossible de lire l'image de démarrage :"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Impossible de créer le dossier."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Impossible de lire l'image de démarrage."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Erreur d'enregistrement de la scène."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Identifiant invalide :"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -13030,6 +14205,13 @@ msgstr ""
"Les GIProps ne sont pas supporter par le pilote de vidéos GLES2.\n"
"A la place utilisez une BakedLightMap."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -13120,6 +14302,18 @@ msgstr "Le joint n'est connecté à aucun PhysicsBody"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Node A et Node B doivent être des PhysicsBody différents"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -13128,6 +14322,46 @@ msgstr ""
"La propriété \"Remote Path\" doit pointer vers un nœud valide Spatial ou "
"dérivé de Spatial pour fonctionner."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Ce corps sera ignoré jusqu'à ce que vous définissiez un maillage."
@@ -13190,6 +14424,10 @@ msgstr "Sur le nÅ“ud BlendTree « %s », animation introuvable : « %sâ€
msgid "Animation not found: '%s'"
msgstr "Animation introuvable : « %s »"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "Dans le nœud « %s », animation non valide : « %s »."
@@ -13368,6 +14606,27 @@ msgid "Invalid comparison function for that type."
msgstr "Fonction de comparaison invalide pour ce type."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Les variations ne peuvent être affectées que dans la fonction vertex."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Affectation à la fonction."
@@ -13376,13 +14635,181 @@ msgid "Assignment to uniform."
msgstr "Affectation à la variable uniform."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Les variations ne peuvent être affectées que dans la fonction vertex."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Les constantes ne peuvent être modifiées."
+#~ msgid "Package Contents:"
+#~ msgstr "Contenu du paquetage :"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Effacer le profil '%s' ? (pas d'annulation)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Propriétés activées :"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Fonctionnalités activées :"
+
+#~ msgid "Unset"
+#~ msgstr "Désassigner"
+
+#~ msgid "Class Options"
+#~ msgstr "Options de classe"
+
+#~ msgid "Set"
+#~ msgstr "Définir"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Sauvegardé %s des ressources modifiées."
+
+#~ msgid "Q&A"
+#~ msgstr "Questions et réponses"
+
+#~ msgid "Status:"
+#~ msgstr "État :"
+
+#~ msgid "Edit:"
+#~ msgstr "Modifier :"
+
+#~ msgid "Redownload"
+#~ msgstr "Télécharger à nouveau"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Installé)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Manquant)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Échec de la requête."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Boucle de Redirection."
+
+#~ msgid "Download Complete."
+#~ msgstr "Téléchargement terminé."
+
+#~ msgid "Remove Template"
+#~ msgstr "Supprimer le modèle"
+
+#~ msgid "Download Templates"
+#~ msgstr "Télécharger les modèles"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr ""
+#~ "Sélectionner un miroir depuis la liste : (Maj+Click : Ouvrir dans le "
+#~ "navigateur)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Déplacer vers la corbeille"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Développer toutes les propriétés"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Réduire toutes les propriétés"
+
+#~ msgid "Copy Params"
+#~ msgstr "Copier paramètres"
+
+#~ msgid "Open in Help"
+#~ msgstr "Ouvrir dans l'aide"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Remplacement de la Caméra du Jeu\n"
+#~ "Aucune instance de jeu en cours d'exécution."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Glisser : tourner"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Appuyez sur « v » pour changer le pivot, « Maj+V » pour glisser le pivot "
+#~ "(lors du déplacement)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+Bouton droit : Sélection détaillée par liste"
+
+#~ msgid "Clone Down"
+#~ msgstr "Cloner en dessous"
+
+#~ msgid "Yaw"
+#~ msgstr "Lacet (hauteur)"
+
+#~ msgid "Size"
+#~ msgstr "Taille"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Glisser : Rotation\n"
+#~ "ALt+Glisser : Déplacer\n"
+#~ "Alt+Bouton droit : Sélection détaillée par liste"
+
+#~ msgid "Sep.:"
+#~ msgstr "Sep. :"
+
+#~ msgid "Add All"
+#~ msgstr "Tout ajouter"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Menu d'édition des thèmes."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Créer un nouveau modèle"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Créer un nouveau modèle d'éditeur"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Créer à partir du thème actuel de l'éditeur"
+
+#~ msgid "Data Type:"
+#~ msgstr "Type de données :"
+
+#~ msgid "Theme File"
+#~ msgstr "Fichier de Thème"
+
+#~ msgid "Compiled"
+#~ msgstr "Compilé"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Supprimer %d projets de la liste ?\n"
+#~ "Le contenu des dossiers de projet ne sera pas modifié."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Supprimer le projet de la liste ? \n"
+#~ "Le contenu du dossier de projet ne sera pas modifié."
+
+#~ msgid "Templates"
+#~ msgstr "Modèles"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Ajouter un chemin remappé"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Ne peut fonctionner avec le nœud racine."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Impossible de lire l'image de démarrage :"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Impossible de lire l'image de démarrage."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Un lecteur d’animation ne peut s’animer lui-même, seulement les autres "
@@ -13441,9 +14868,6 @@ msgstr "Les constantes ne peuvent être modifiées."
#~ "Il existe déjà un fichier ou un dossier ayant le même nom à cet "
#~ "emplacement."
-#~ msgid "Aligning APK..."
-#~ msgstr "Alignement de l'APK…"
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "Impossible d'effectuer l'alignement de l'APK."
@@ -13508,9 +14932,6 @@ msgstr "Les constantes ne peuvent être modifiées."
#~ "La scène actuelle n'a jamais été sauvegardée, veuillez la sauvegarder "
#~ "avant de la lancer."
-#~ msgid "Not in resource path."
-#~ msgstr "Pas dans le chemin de la ressource."
-
#~ msgid "Revert"
#~ msgstr "Réinitialiser"
@@ -13618,18 +15039,12 @@ msgstr "Les constantes ne peuvent être modifiées."
#~ msgid "Input"
#~ msgstr "Entrée"
-#~ msgid "Properties:"
-#~ msgstr "Propriétés :"
-
#~ msgid "Methods:"
#~ msgstr "Méthodes :"
#~ msgid "Theme Properties:"
#~ msgstr "Propriétés du thème :"
-#~ msgid "Enumerations:"
-#~ msgstr "Recensements :"
-
#~ msgid "Constants:"
#~ msgstr "Constantes :"
@@ -13926,6 +15341,3 @@ msgstr "Les constantes ne peuvent être modifiées."
#~ msgid "Connect two points to make a split."
#~ msgstr "Relier deux points pour faire un fractionnement."
-
-#~ msgid "Select a split to erase it."
-#~ msgstr "Sélectionnez un fractionnement à effacer."
diff --git a/editor/translations/ga.po b/editor/translations/ga.po
index 8168c1a440..98fe774878 100644
--- a/editor/translations/ga.po
+++ b/editor/translations/ga.po
@@ -509,7 +509,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -535,7 +536,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -556,6 +558,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -572,6 +578,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -620,7 +630,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -706,12 +716,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -766,11 +778,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -820,6 +830,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -890,7 +901,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -905,6 +916,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -926,8 +945,8 @@ msgstr "Cuardach:"
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1000,16 +1019,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1054,7 +1075,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1175,28 +1196,36 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "(and %s more files)"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "Asset \"%s\" installed successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
@@ -1204,17 +1233,12 @@ msgstr ""
msgid "Success!"
msgstr ""
-#: editor/editor_asset_installer.cpp
-#, fuzzy
-msgid "Package Contents:"
-msgstr "Ãbhar:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1278,8 +1302,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "Cruthaigh"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1358,7 +1383,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1445,6 +1470,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1460,16 +1493,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1485,7 +1518,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1624,7 +1657,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1656,15 +1729,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1682,7 +1755,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1690,17 +1763,24 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Cruthaigh"
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1709,19 +1789,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1745,7 +1825,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1799,9 +1879,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1882,8 +1963,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1955,7 +2035,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2040,7 +2120,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2056,8 +2136,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2073,7 +2154,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2137,7 +2218,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2331,18 +2413,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2513,7 +2599,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2694,6 +2780,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2826,13 +2916,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2840,6 +2929,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2848,7 +2941,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2945,6 +3038,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2971,7 +3072,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3012,6 +3113,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3043,6 +3148,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3067,21 +3176,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3089,11 +3195,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3113,6 +3219,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3154,12 +3270,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3177,22 +3287,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3206,37 +3339,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3271,7 +3387,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3291,64 +3407,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Cannot remove temporary file:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3356,7 +3478,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3366,135 +3492,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Other Installed Versions:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3620,22 +3777,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3643,6 +3826,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3723,10 +3910,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3949,52 +4132,49 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
+msgid "Paste Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4010,7 +4190,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4018,6 +4202,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4045,6 +4233,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4244,7 +4441,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4459,6 +4656,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4796,10 +4998,18 @@ msgid "View Files"
msgstr "Amharc ar Chomhaid"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4808,15 +5018,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4844,6 +5058,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4944,7 +5162,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4987,6 +5209,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4995,8 +5221,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5231,15 +5457,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5293,6 +5520,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5304,19 +5532,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5548,6 +5782,14 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5560,6 +5802,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5800,6 +6082,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5832,7 +6118,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5891,13 +6177,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5951,7 +6249,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6223,7 +6520,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6527,6 +6825,22 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6730,7 +7044,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6761,6 +7075,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6883,8 +7202,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6917,10 +7236,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7072,6 +7387,26 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Scála:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7092,39 +7427,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7280,6 +7619,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7295,6 +7638,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7308,7 +7655,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7316,18 +7663,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7424,6 +7768,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7713,11 +8061,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7738,167 +8081,536 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Cuntas:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+#, fuzzy
+msgid "Filter:"
+msgstr "Scagairí..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Deselect all visible icon items."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Ainm nua:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
+msgid "Add Icon Item"
+msgstr "Cuir ionchur leis"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Cuir ionchur leis"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
msgstr "Amharc ar Chomhaid"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -8066,6 +8778,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8384,11 +9100,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9209,7 +9920,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9324,7 +10035,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9332,7 +10043,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9340,11 +10051,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9417,7 +10128,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9451,6 +10162,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9595,15 +10318,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9630,7 +10349,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9642,10 +10361,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9654,11 +10385,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9666,6 +10409,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9676,8 +10427,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Scagairí..."
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9687,6 +10443,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9728,6 +10488,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9867,7 +10631,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9875,11 +10639,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10147,6 +10911,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10309,11 +11077,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10369,6 +11155,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10415,10 +11205,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10690,6 +11476,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10759,6 +11551,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11042,6 +11838,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11083,6 +11887,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11327,6 +12135,14 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11436,6 +12252,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11661,10 +12481,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11694,6 +12510,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11790,6 +12634,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11802,6 +12682,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11816,6 +12700,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11835,11 +12732,50 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Ãbhar:"
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Tá aitheantóir ar iarraidh."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11868,27 +12804,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Could not create HTTP server directory:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12236,6 +13196,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12305,12 +13272,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12359,6 +13378,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12506,15 +13529,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/gl.po b/editor/translations/gl.po
index 016a3ab589..9b97e45e8a 100644
--- a/editor/translations/gl.po
+++ b/editor/translations/gl.po
@@ -526,7 +526,8 @@ msgstr "Segundos"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -552,7 +553,8 @@ msgstr "Escalar Selección"
msgid "Scale From Cursor"
msgstr "Escalar desde o Cursor"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplicar Selección"
@@ -573,6 +575,11 @@ msgid "Go to Previous Step"
msgstr "Ir ao Anterior Paso"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Restablecer"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimizar Animación"
@@ -589,6 +596,11 @@ msgid "Use Bezier Curves"
msgstr "Usar Curvas Bezier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Pegar Pistas"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Optimizador de Animación"
@@ -637,7 +649,7 @@ msgid "Select Tracks to Copy"
msgstr "Selecciona as Pistas a Copiar"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -723,12 +735,14 @@ msgid "Toggle Scripts Panel"
msgstr "Act./Desact. Panel de Scripts"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Aumentar Zoom"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -785,11 +799,9 @@ msgid "Add"
msgstr "Engadir"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -841,6 +853,7 @@ msgstr "No se pode conectar a sinal"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -910,7 +923,8 @@ msgid "Edit..."
msgstr "Editar..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Ir ao Método"
#: editor/create_dialog.cpp
@@ -925,6 +939,14 @@ msgstr "Cambiar"
msgid "Create New %s"
msgstr "Crear Novo %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Non houbo resultado para \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -946,8 +968,8 @@ msgstr "Buscar:"
msgid "Matches:"
msgstr "Coincidencias:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1023,20 +1045,24 @@ msgid "Owners Of:"
msgstr "Dono De:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Eliminar do proxecto os arquivos seleccionados? (non se pode reverter)\n"
"Podes encontrar os arquivos eliminados na papeleira de reciclaxe do sistema "
"para restaurarlos."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Os arquivos sendo eliminados están requeridos por outros recursos para poder "
"funcionar.\n"
@@ -1086,7 +1112,7 @@ msgstr "Explorador de Recursos Orfos"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1211,28 +1237,41 @@ msgstr "Compoñentes"
msgid "Licenses"
msgstr "Licenzas"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "Erro ao abrir o arquivo comprimido, non está en formato ZIP."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Xa Existe)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Descomprimindo Assets"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Os seguintes arquivos non se poideron extraer do paquete:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "E %s arquivos máis."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paquete instalado correctamente!"
#: editor/editor_asset_installer.cpp
@@ -1240,16 +1279,13 @@ msgstr "Paquete instalado correctamente!"
msgid "Success!"
msgstr "Éxito!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Contenido do Paquete:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instalar"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Instalador de Paquetes"
#: editor/editor_audio_buses.cpp
@@ -1313,7 +1349,8 @@ msgid "Bypass"
msgstr "Bypass"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Opcións de Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1393,7 +1430,7 @@ msgstr "Engadir Bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Engadir un novo Bus de Son a esta disposición."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1480,6 +1517,15 @@ msgid "Can't add autoload:"
msgstr "Non se puido engadir AutoCargador:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "O arquivo non existe."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Engadir AutoCargador"
@@ -1495,16 +1541,17 @@ msgid "Node Name:"
msgstr "Nome do Nodo:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nome"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Eliminar Variable"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Pegar Parámetros"
@@ -1520,7 +1567,7 @@ msgstr "Gardando cambios locales..."
msgid "Updating scene..."
msgstr "Actualizando escena..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[baleiro]"
@@ -1676,8 +1723,49 @@ msgid "Import Dock"
msgstr "Importación"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Eliminar perfil '%s'? (non se pode deshacer)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Actual)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1708,15 +1796,18 @@ msgid "Enable Contextual Editor"
msgstr "Activar o Editor Contextual"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Propiedades Activadas:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Colapsar Tódalas Propiedades"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Características Activadas:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Características"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Clases Activadas:"
#: editor/editor_feature_profile.cpp
@@ -1735,25 +1826,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Erro ao gardar o perfil na ruta: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Desactivar"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Cargar Valores por Defecto"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Perfil Actual:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Convertelo no Actual"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Eliminar Perfil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Novo"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Eliminar Punto"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Perfís Dispoñibles:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Convertelo no Actual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importar"
@@ -1762,22 +1862,24 @@ msgid "Export"
msgstr "Exportación"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Perfís Dispoñibles:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Perfil Actual:"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Opcións de Clase:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Opcións de Clases"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "New profile name:"
msgstr "Novo nome de perfil:"
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Eliminar Perfil"
-
-#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
msgstr "Perfil de Características de Godot"
@@ -1798,7 +1900,8 @@ msgid "Select Current Folder"
msgstr "Seleccionar Cartafol Actual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "O arquivo xa existe ¿Queres sobreescribilo?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1852,9 +1955,10 @@ msgid "Open a File or Directory"
msgstr "Abrir un Arquivo ou Directorio"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Gardar"
@@ -1935,8 +2039,7 @@ msgid "Directories & Files:"
msgstr "Directorios e Arquivos:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Vista Previa:"
@@ -2007,7 +2110,7 @@ msgstr "Propiedades do Tema"
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Constantes"
@@ -2096,7 +2199,7 @@ msgstr "Método"
msgid "Signal"
msgstr "Sinal"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Constante"
@@ -2112,9 +2215,10 @@ msgstr "Propiedade de Temas"
msgid "Property:"
msgstr "Propiedade:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Establecer"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2129,7 +2233,7 @@ msgid "Copy Selection"
msgstr "Copiar Selección"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2193,7 +2297,8 @@ msgid "Imported resources can't be saved."
msgstr "Os recursos importados non se poden gardar."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Vale"
@@ -2416,18 +2521,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Gardar os cambios de '%s' antes de pechar?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Gardado(s) %s recurso(s) modificado(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Necesítase un nodo raíz para gardar a escena."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Gardar Escena Como..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Esta operación non pode realizarse se unha escena."
@@ -2630,7 +2740,7 @@ msgstr "Eliminar Dispoción"
msgid "Default"
msgstr "Por Defecto"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Amosar no Sistema de Arquivos"
@@ -2811,6 +2921,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Explorador de Recursos Orfos..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Renomear Proxecto"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Saír á Lista de Proxectos"
@@ -2966,20 +3081,24 @@ msgstr ""
msgid "Help"
msgstr "Axuda"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
msgstr "Documentación En Liña"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Preguntas e Respostas"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Reportar un Erro"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Reportar Problema ca Documentación"
@@ -2988,7 +3107,8 @@ msgid "Community"
msgstr "Comunidade"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Acerca De"
#: editor/editor_node.cpp
@@ -3085,6 +3205,15 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Instalar Dende Arquivo"
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3111,7 +3240,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Biblioteca de Exportación"
@@ -3155,6 +3284,11 @@ msgid "Select"
msgstr "Elixir"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Seleccionar Cartafol Actual"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Abrir Editor 2D"
@@ -3186,6 +3320,11 @@ msgstr "Aviso!"
msgid "No sub-resources found."
msgstr "Non se atopou ningún sub-recurso."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Non se atopou ningún sub-recurso."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Creando Previsualización de Mallas"
@@ -3210,33 +3349,34 @@ msgstr "Características Adicionais (Plugins) Instalados:"
msgid "Update"
msgstr "Actualizar"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versión:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Estado:"
+#, fuzzy
+msgid "Author"
+msgstr "Autores"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Editar:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Estado"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Medida:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Duración de Fotograma (seg)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Tempo Medio (seg)"
#: editor/editor_profiler.cpp
@@ -3256,6 +3396,16 @@ msgid "Self"
msgstr "Propio"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Fotograma #:"
@@ -3297,14 +3447,6 @@ msgstr "Identificador de Recurso (RID) inválido"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"O recurso seleccionado (%s) non coincide con ningún tipo esperado para esta "
-"propiedade (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3324,40 +3466,6 @@ msgid "Pick a Viewport"
msgstr "Selecciona unha Mini-Ventá (Viewport)"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Novo Script"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Estender Script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Novo %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Facer Único"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Pegar"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Converter a %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "O nodo seleccionado non é unha Mini-Ventá (Viewport)!"
@@ -3386,6 +3494,49 @@ msgstr "Novo Valor:"
msgid "Add Key/Value Pair"
msgstr "Engadir Parella Chave/Valor"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"O recurso seleccionado (%s) non coincide con ningún tipo esperado para esta "
+"propiedade (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Facer Único"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Pegar"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Converter a %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Novo %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Novo Script"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Estender Script"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3421,7 +3572,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Olvidaches o método '_run'?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Mantén pulsado Ctrl para redondear a enteiros. Mantén pulsado Shift para "
"cambios máis precisos."
@@ -3443,111 +3595,66 @@ msgid "Import From Node:"
msgstr "Importar Desde Nodo:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Volver a Descargar"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Desinstalar"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Instalado)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Descargar"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Non encontrado)"
-
-#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Actual)"
-
-#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr ""
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Non hai ningún arquivo '%s'."
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importando:"
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
+msgid "Error requesting URL:"
+msgstr "Erro ao solicitar a URL:"
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Erro de Conexión"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+#, fuzzy
+msgid "Can't connect to the mirror."
msgstr "Non se pode conectar."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Sen resposta."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Non houbo respota por parte do host:"
#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "A Petición Fracasou."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
+msgstr "A petición fallou."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Fracasado:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "A petición fallou."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Descarga Completa."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3560,11 +3667,21 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Erro ao solicitar a URL:"
+msgid "Error getting the list of mirrors."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3610,44 +3727,130 @@ msgid "SSL Handshake Error"
msgstr "Erro SSL Handshake"
#: editor/export_template_manager.cpp
+msgid "Can't open the export templates file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "No version.txt found inside the export templates file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Error creating path for extracting templates:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importando:"
+
+#: editor/export_template_manager.cpp
+msgid "Remove templates for the version '%s'?"
+msgstr ""
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Descomprimindo Recursos de Compilación de Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr ""
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versión Actual:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Versións Instaladas:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
-msgstr "Instalar Dende Arquivo"
+msgid "Export templates are installed and ready to be used."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+#, fuzzy
+msgid "Open Folder"
+msgstr "Abrir Arquivo"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+#, fuzzy
+msgid "Download from:"
+msgstr "Erro na Descarga"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+#, fuzzy
+msgid "Install from File"
+msgstr "Instalar Dende Arquivo"
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
msgstr ""
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Cancelar"
+
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Seleccione un mirror da lista: (Shift+Clic: Abrir no Navegador)"
+msgid "Cancel the download of the templates."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Versións Instaladas:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Desinstalar"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3780,29 +3983,62 @@ msgstr "Novo Script..."
msgid "New Resource..."
msgstr "Novo Recurso..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Expandir Todo"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Colapsar Todo"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplicar..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Buscar arquivos"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Derradeira Modificación"
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Mover á Papeleira"
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Derradeira Modificación"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplicar..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Renomear..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Anterior Cartafol/Arquivo"
@@ -3886,10 +4122,6 @@ msgstr "Buscar..."
msgid "Replace..."
msgstr "Substituír..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Cancelar"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Buscar: "
@@ -4112,53 +4344,53 @@ msgid "Failed to load resource."
msgstr "Fallou a carga do Recurso."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Expandir Tódalas Propiedades"
-
-#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Colapsar Tódalas Propiedades"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Gardar Como..."
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Propiedades"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Copiar Parámetros"
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Propiedades"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Copiar Recurso"
+msgid "Create a new resource in memory and edit it."
+msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Abrir na Axuda"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Gardar Como..."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr ""
+msgid "Copy Resource"
+msgstr "Copiar Recurso"
+
+#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Pegar Recurso"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4173,14 +4405,23 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Propiedade de Obxectos."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr ""
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtrar propiedades"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Propiedade de Obxectos."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Os cambios poderían perderse!"
@@ -4208,6 +4449,15 @@ msgstr "Nome do Plugin:"
msgid "Subfolder:"
msgstr "Subcartafol:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versión:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Linguaxe:"
@@ -4413,7 +4663,8 @@ msgid "Blend:"
msgstr "Mezcla:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parámetro Cambiado"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4627,6 +4878,11 @@ msgid "Animation"
msgstr "Animación"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Novo"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Editar Transicións..."
@@ -4963,10 +5219,18 @@ msgid "View Files"
msgstr "Ver Arquivos"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Descargar"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Houbo un erro na conexión; por favor, inténtao de novo."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Non se pode conectar."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4975,16 +5239,20 @@ msgid "No response from host:"
msgstr "Non houbo respota por parte do host:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Sen resposta."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "A petición fallou."
+msgid "Request failed, return code:"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5011,6 +5279,10 @@ msgid "Timeout."
msgstr "Timeout."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Fracasado:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5111,8 +5383,12 @@ msgid "All"
msgstr "Todos"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Non houbo resultado para \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5154,6 +5430,10 @@ msgstr "Cargando..."
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5162,8 +5442,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5398,9 +5678,10 @@ msgstr "Cambiar Ãncoras"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Substituír a Cámara do Xogo\n"
"Substitue a cámara do xogo pola cámara da Mini-ventá (Viewport) do editor."
@@ -5408,8 +5689,9 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5465,6 +5747,7 @@ msgstr ""
"posición e tamaño unicamente polo seu padre."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5476,19 +5759,30 @@ msgid "Select Mode"
msgstr "Elixir Modo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Arrastrar: Rotar"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Arrastrar: Mover"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "O nodo seleccionado non é unha Mini-Ventá (Viewport)!"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
+"Amosa unha lista de obxectos na posición na que se fixo clic\n"
+"(O mesmo que usar Alt+Clic Dereito en modo selección)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5726,6 +6020,16 @@ msgid "Clear Pose"
msgstr "Restablecer Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Engadir Nodo"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Introducir Clave Aquí"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Multiplicar Dimensión da Cuadrícula por 2"
@@ -5738,6 +6042,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Diminuír Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Diminuír Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Diminuír Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Diminuír Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Diminuír Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Diminuír Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Engadir %s"
@@ -5980,6 +6330,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -6016,7 +6370,8 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "O modelo non ten UVs nesta capa"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6082,14 +6437,29 @@ msgstr ""
"Esta é a maneira más eficiente (pero menos precisa) de detectar colisións."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
+"Crea unha formá física baseada en polígonos.\n"
+"Esta é a forma máis precisa (pero máis lenta) de detectar colisións."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh..."
@@ -6142,7 +6512,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Engadir Elemento"
@@ -6414,7 +6783,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Opcións"
@@ -6722,6 +7092,24 @@ msgstr "Cargar Recurso"
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Número de Puntos Xerados:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Número de Puntos Xerados:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6925,7 +7313,7 @@ msgstr "Executar"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Buscar"
@@ -6956,6 +7344,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Documentación En Liña"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -7078,8 +7471,8 @@ msgstr "Ir a"
msgid "Cut"
msgstr "Cortar"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Seleccionar Todo"
@@ -7112,10 +7505,6 @@ msgid "Unfold All Lines"
msgstr "Expandir Tódalas Liñas"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Clonar Liña"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Completar Símbolo"
@@ -7269,6 +7658,28 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Ningún"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Modo Rotación"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Trasladar:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Escala:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Escalado: "
@@ -7289,42 +7700,54 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Cabeceo"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Guiñada"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Tamaño"
+#, fuzzy
+msgid "Size:"
+msgstr "Tamaño: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Obxectos Debuxados"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Parámetro Cambiado"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Cambios"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Cambios"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Chamadas"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Vértices"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Vista Superior."
@@ -7477,6 +7900,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Act./Desact. Favorito"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7494,6 +7922,11 @@ msgstr ""
"Non pode usarse como unha forma fiable de medir o rendemento do xogo."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Converter a %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7513,7 +7946,8 @@ msgstr ""
"opacas (\"raios x\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Axustar Nodos ao Chan"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7521,13 +7955,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Non se puido encontrar chan sólido no que poder axustar a selección."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Usar Espazo Local"
@@ -7536,6 +7963,10 @@ msgid "Use Snap"
msgstr "Usar Axuste de Cuadrícula"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Vista Inferior"
@@ -7629,6 +8060,11 @@ msgid "View Grid"
msgstr "Amosar Cuadrícula"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Axustes de Visión"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Axustes..."
@@ -7918,11 +8354,6 @@ msgid "Snap Mode:"
msgstr "Modo de Axuste:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Ningún"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Axustar aos Píxeles"
@@ -7943,164 +8374,597 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Escalar (Razón):"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+#, fuzzy
+msgid "Colors"
+msgstr "Cor"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Fonts"
+msgstr "Fonte"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Icons"
+msgstr "Icona"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Estilo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+#, fuzzy
+msgid "No colors found."
+msgstr "Non se atopou ningún sub-recurso."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Constantes"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Só Constantes"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "Non se atopou ningún sub-recurso."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Non se atopou ningún sub-recurso."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Non se atopou ningún sub-recurso."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Importar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Saír do editor?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analizando"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtros:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Seleccione un Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Primeiro seleccione un elemento!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Primeiro seleccione un elemento!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Primeiro seleccione un elemento!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Primeiro seleccione un elemento!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Primeiro seleccione un elemento!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Select all visible stylebox items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Deselect all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#, fuzzy
+msgid "Collapse types."
+msgstr "Colapsar Todo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Expandir Todo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Primeiro seleccione un elemento!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Seleccionar Puntos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
-msgstr "Submenú"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Seleccionar Todo"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importar Escena"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
-msgstr "Ten"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Eliminar Tódolos Marcapáxinas"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
-msgstr "Moitas"
+#, fuzzy
+msgid "Rename Item"
+msgstr "Eliminar Elemento"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Eliminar Tódolos Puntos de Interrupción (Breakpoints)"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Eliminar Tódolos Puntos de Interrupción (Breakpoints)"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Eliminar Tódolos Puntos de Interrupción (Breakpoints)"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Eliminar Tódolos Marcapáxinas"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Engadir Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Constante"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Engadir Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Engadir Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Engadir Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Renomear Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Renomear Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Renomear Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Arquivo invalido; non é unha disposición dun Bus de son."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Manage Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+#, fuzzy
+msgid "Edit Items"
+msgstr "Editar Flitros"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Engadir Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Engadir Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Eliminar Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
-msgstr "Subárbore"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Eliminar Elemento"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
-msgstr "Ten,Moitas,Opcións"
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Engadir Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nome do Nodo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Por Defecto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Editar Membro"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Eliminar Recurso"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Importar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Configurar Axuste de Cuadrícula"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Icona"
+#, fuzzy
+msgid "Override Item"
+msgstr "Sobreescribir"
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Estilo"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Fonte"
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Cor"
+#, fuzzy
+msgid "Add Type"
+msgstr "Tipo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Engadir Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Tipo de nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Cargar Valores por Defecto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "sobrescribir:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Administrar Características do Editor..."
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Vista Previa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Vista Previa Cinemática"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Seleccione un Nodo"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr "Submenú"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr "Ten"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr "Moitas"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr "Subárbore"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr "Ten,Moitas,Opcións"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Arquivo invalido; non é unha disposición dun Bus de son."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8269,6 +9133,10 @@ msgid "Priority"
msgstr "Prioridade"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Icona"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8586,11 +9454,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Estado"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9448,8 +10311,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "Engadir Propiedade Global"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9570,7 +10434,7 @@ msgid "Script"
msgstr "Script"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9578,19 +10442,19 @@ msgid "Text"
msgstr "Texto"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Compilado"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9665,7 +10529,8 @@ msgid "Imported Project"
msgstr "Proxecto Importado"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Nome de Proxecto Inválido."
#: editor/project_manager.cpp
@@ -9702,6 +10567,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Non se pudo crear o arquivo 'project.godot' na ruta do proxecto."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Erro ao abrir o arquivo comprimido, non está en formato ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Os seguintes arquivos non se poideron extraer do paquete:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Paquete instalado correctamente!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Renomear Proxecto"
@@ -9867,20 +10744,12 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Seguro que queres executar %d proxectos ao mesmo tempo?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
-"Eliminar %d proxectos da lista?\n"
-"Os contidos da carpeta de proxectos non serán modificados."
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
-"Eliminar este proxecto da lista?\n"
-"Os contidos da carpeta de proxectos non serán modificados."
#: editor/project_manager.cpp
msgid ""
@@ -9913,7 +10782,8 @@ msgid "Project Manager"
msgstr "Administrador de Proxectos"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Proxectos"
#: editor/project_manager.cpp
@@ -9925,10 +10795,25 @@ msgid "Last Modified"
msgstr "Derradeira Modificación"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Exportar Proxecto"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Renomear Proxecto"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Escanear"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Proxectos"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Seleccionar un Cartafol para Escanear"
@@ -9937,18 +10822,41 @@ msgid "New Project"
msgstr "Novo Proxecto"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Proxecto Importado"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Renomear Proxecto"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Eliminar Faltantes"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Proxectos Modelo"
+msgid "About"
+msgstr "Acerca De"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Biblioteca de Assets"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Reiniciar Agora"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Non se pode executar proxecto"
@@ -9961,8 +10869,14 @@ msgstr ""
"Gustaríalle buscar proxectos de exemplo oficiais na biblioteca de Assets?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtrar propiedades"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9976,6 +10890,10 @@ msgid "Key "
msgstr "Botón: "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Botón Joystick"
@@ -10019,6 +10937,10 @@ msgstr "Tódolos Dispositivos"
msgid "Device"
msgstr "Dispositivo"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Pulse algún botón..."
@@ -10160,7 +11082,8 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Engadir Tradución"
#: editor/project_settings_editor.cpp
@@ -10168,11 +11091,11 @@ msgid "Remove Translation"
msgstr "Eliminar Tradución"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10441,6 +11364,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Estilo"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Manter"
@@ -10604,11 +11531,29 @@ msgid "Delete node \"%s\"?"
msgstr "Eliminar nodo \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10664,6 +11609,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10711,10 +11660,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10987,6 +11932,12 @@ msgstr ""
"usando editores externos."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Nome da Clase:"
@@ -11055,6 +12006,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11338,6 +12293,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exportar Biblioteca de Mallas"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exportar..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11379,6 +12344,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Encadrar Selección"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11621,6 +12591,16 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Cambiar o Tipo de %s"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Cambiar Valor do Array"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11729,6 +12709,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Engadir Nodo"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11952,10 +12937,6 @@ msgstr "Buscar en VisualScript"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11985,6 +12966,39 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Exportar..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Desinstalar"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Cargando, por favor agarde..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Non se puido iniciar subproceso!"
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Non se puido crear cartafol."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12087,6 +13101,46 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Examinando arquivos,\n"
+"Por favor, espere..."
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Engadindo %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12099,6 +13153,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12113,6 +13171,20 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Non se pudo editar o arquivo 'project.godot' na ruta do proxecto."
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Construir Proxecto Android (gradle)"
@@ -12136,11 +13208,53 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Contenido do Paquete:"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Conectando..."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Engadindo %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Non se puido iniciar subproceso!"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12171,10 +13285,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr ""
@@ -12183,15 +13293,47 @@ msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Non se puido crear cartafol."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "Non se puido crear cartafol."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Non se puido crear cartafol."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Erro ao gardar TileSet!"
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12576,6 +13718,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12653,12 +13802,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Este corpo será ignorado ata que se lle sea asignado unha malla."
@@ -12713,6 +13914,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12873,21 +14078,132 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Eliminar perfil '%s'? (non se pode deshacer)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Propiedades Activadas:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Características Activadas:"
+
+#~ msgid "Unset"
+#~ msgstr "Desactivar"
+
+#~ msgid "Class Options"
+#~ msgstr "Opcións de Clases"
+
+#~ msgid "Set"
+#~ msgstr "Establecer"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Gardado(s) %s recurso(s) modificado(s)."
+
+#~ msgid "Q&A"
+#~ msgstr "Preguntas e Respostas"
+
+#~ msgid "Status:"
+#~ msgstr "Estado:"
+
+#~ msgid "Edit:"
+#~ msgstr "Editar:"
+
+#~ msgid "Redownload"
+#~ msgstr "Volver a Descargar"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Instalado)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Non encontrado)"
+
+#~ msgid "Request Failed."
+#~ msgstr "A Petición Fracasou."
+
+#~ msgid "Download Complete."
+#~ msgstr "Descarga Completa."
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Seleccione un mirror da lista: (Shift+Clic: Abrir no Navegador)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Mover á Papeleira"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Expandir Tódalas Propiedades"
+
+#~ msgid "Copy Params"
+#~ msgstr "Copiar Parámetros"
+
+#~ msgid "Open in Help"
+#~ msgstr "Abrir na Axuda"
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Arrastrar: Rotar"
+
+#~ msgid "Clone Down"
+#~ msgstr "Clonar Liña"
+
+#~ msgid "Yaw"
+#~ msgstr "Guiñada"
+
+#~ msgid "Size"
+#~ msgstr "Tamaño"
+
+#~ msgid "Compiled"
+#~ msgstr "Compilado"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Eliminar %d proxectos da lista?\n"
+#~ "Os contidos da carpeta de proxectos non serán modificados."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Eliminar este proxecto da lista?\n"
+#~ "Os contidos da carpeta de proxectos non serán modificados."
+
+#~ msgid "Templates"
+#~ msgstr "Proxectos Modelo"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Un reproductor de animacións non pode animarse a si mesmo, só a outros "
diff --git a/editor/translations/he.po b/editor/translations/he.po
index 5dc30a6cc2..bbe0ebbe08 100644
--- a/editor/translations/he.po
+++ b/editor/translations/he.po
@@ -544,7 +544,8 @@ msgstr "שניות"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -570,7 +571,8 @@ msgstr "שינוי גודל של הבחירה"
msgid "Scale From Cursor"
msgstr "שינוי גודל מהמצביע"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "שכפול בחירה"
@@ -591,6 +593,11 @@ msgid "Go to Previous Step"
msgstr "מעבר לצעד הקוד×"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "×יפוס התקריב"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "מיטוב ההנפשה"
@@ -607,6 +614,11 @@ msgid "Use Bezier Curves"
msgstr "שימוש בעקומות בזייה"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "הדבקת רצועות"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "ממטב הנפשה"
@@ -655,7 +667,7 @@ msgid "Select Tracks to Copy"
msgstr "בחירת רצועות להעתקה"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -741,12 +753,14 @@ msgid "Toggle Scripts Panel"
msgstr "החלפת תצוגת חלונית סקריפטי×"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "התקרבות"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -801,11 +815,9 @@ msgid "Add"
msgstr "הוספה"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -855,6 +867,7 @@ msgstr "×ין ×פשרות לחבר ×ות"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -927,7 +940,8 @@ msgid "Edit..."
msgstr "עריכה..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "מעבר למתודה"
#: editor/create_dialog.cpp
@@ -942,6 +956,14 @@ msgstr "שינוי"
msgid "Create New %s"
msgstr "יצירת %s חדש"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "×ין תוצ×ות עבור \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -963,8 +985,8 @@ msgstr "חיפוש:"
msgid "Matches:"
msgstr "הת×מות:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1042,16 +1064,18 @@ msgstr "×‘×¢×œ×™× ×©×œ:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "להסיר ×ת ×”×§×‘×¦×™× ×”× ×‘×—×¨×™× ×ž×”×ž×™×–×? (××™ ×פשר לשחזר)"
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1098,7 +1122,7 @@ msgstr "דפדפן מש××‘×™× ×™×ª×•×ž×™×"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1221,30 +1245,43 @@ msgstr "רכיבי×"
msgid "Licenses"
msgstr "רישיונות"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Error opening package file, not in ZIP format."
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "פתיחת קובץ החבילה נכשלה, המבנה ×ינו zip."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (כבר ×§×™×™×)"
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Package installed successfully!"
+msgid "The following files failed extraction from asset \"%s\":"
+msgstr ""
+"×”×§×‘×¦×™× ×”×‘××™× ×”× ×—×“×©×™× ×‘×›×•× ×Ÿ.\n"
+"ב×ילו פעולות לנקוט?:"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "(and %s more files)"
+msgstr "%d ×§×‘×¦×™× × ×•×¡×¤×™×"
+
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "החבילה הותקנה בהצלחה!"
#: editor/editor_asset_installer.cpp
@@ -1252,16 +1289,13 @@ msgstr "החבילה הותקנה בהצלחה!"
msgid "Success!"
msgstr "הצלחה!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "תוכן החבילה:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "התקנה"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "מתקין החבילות"
#: editor/editor_audio_buses.cpp
@@ -1326,7 +1360,8 @@ msgid "Bypass"
msgstr "מעקף"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "×פשרויות ×פיק"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1407,7 +1442,7 @@ msgstr "הוספת ×פיק"
msgid "Add a new Audio Bus to this layout."
msgstr "הוסף ×פיק שמע חדש לפריסה זו."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1497,6 +1532,15 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "הקובץ ×œ× ×§×™×™×."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "הוספת טעינה ×וטומטית"
@@ -1512,16 +1556,17 @@ msgid "Node Name:"
msgstr "×©× ×”×ž×¤×¨×§:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "ש×"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "יחידני"
+#, fuzzy
+msgid "Global Variable"
+msgstr "שינוי ×©× ×ž×©×ª× ×”"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "הדבקת משתני×"
@@ -1537,7 +1582,7 @@ msgstr "×”×©×™× ×•×™×™× ×”×ž×§×•×ž×™×™× ×ž×וחסני×…"
msgid "Updating scene..."
msgstr "הסצנה מתעדכנת…"
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[ריק]"
@@ -1682,9 +1727,49 @@ msgid "Import Dock"
msgstr "ייבו×"
#: editor/editor_feature_profile.cpp
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase profile '%s'? (no undo)"
-msgstr "להחליף הכול"
+msgid "(current)"
+msgstr "(נוכחי)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1721,16 +1806,17 @@ msgstr "פתיחת העורך הב×"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
-msgstr "מ×פייני×"
+msgid "Class Properties:"
+msgstr "×¦×ž×¦×•× ×›×œ המ×פייני×"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr ""
+#, fuzzy
+msgid "Main Features:"
+msgstr "ניהול תכונות העורך..."
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr "חיפוש במחלקות"
#: editor/editor_feature_profile.cpp
@@ -1748,8 +1834,9 @@ msgid "Error saving profile to path: '%s'."
msgstr "שגי××” בשמירת פרופיל לנתיב '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "טעינת בררת המחדל"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1758,17 +1845,26 @@ msgstr "גרסה נוכחית:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Make Current"
-msgstr "(נוכחי)"
+msgid "Create Profile"
+msgstr "מחיקת שטח"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "חדש"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "הסרת תבנית"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "מ×פייני×"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Make Current"
+msgstr "(נוכחי)"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "ייבו×"
@@ -1778,23 +1874,22 @@ msgstr "ייצו×"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Available Profiles:"
-msgstr "מ×פייני×"
+msgid "Configure Selected Profile:"
+msgstr "גרסה נוכחית:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
-msgstr "תי×ור"
+msgid "Extra Options:"
+msgstr "תי×ור:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "New profile name:"
-msgstr "×©× ×”×ž×¤×¨×§:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase Profile"
-msgstr "מחיקת שטח"
+msgid "New profile name:"
+msgstr "×©× ×”×ž×¤×¨×§:"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1820,7 +1915,8 @@ msgid "Select Current Folder"
msgstr "× × ×œ×‘×—×•×¨ ×ת התיקייה הנוכחית"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "הקובץ ×§×™×™×, לשכתב?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1875,9 +1971,10 @@ msgid "Open a File or Directory"
msgstr "פתיחת קובץ ×ו תיקייה"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "שמירה"
@@ -1958,8 +2055,7 @@ msgid "Directories & Files:"
msgstr "תיקיות וקבצי×:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "תצוגה מקדימה:"
@@ -2030,7 +2126,7 @@ msgstr "מ×פייני ערכת עיצוב"
msgid "Enumerations"
msgstr "מוני×"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "קבועי×"
@@ -2119,7 +2215,7 @@ msgstr "מתודה"
msgid "Signal"
msgstr "×ות"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "קבוע"
@@ -2135,9 +2231,10 @@ msgstr "מ×פיין ערכת עיצוב"
msgid "Property:"
msgstr "מ×פיין:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "קבע"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "קביעת %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2152,7 +2249,7 @@ msgid "Copy Selection"
msgstr "העתקת בחירה"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2216,7 +2313,8 @@ msgid "Imported resources can't be saved."
msgstr "מש××‘×™× ×ž×™×•×‘××™× ×œ× × ×©×ž×¨×•."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "×ישור"
@@ -2425,18 +2523,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "לשמור ×ת ×”×©×™× ×•×™×™× ×œÖ¾'%s' לפני הסגירה?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "נשמרו %s מש××‘×™× ×©×”×©×ª× ×•."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "דרוש מפרק שורש כדי לשמור ×ת הסצינה."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "שמירת סצנה בש×…"
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "×œ× × ×™×ª×Ÿ לבצע פעולה זו ×œ×œ× ×¡×¦× ×”."
@@ -2624,7 +2727,7 @@ msgstr "מחיקת פריסה"
msgid "Default"
msgstr "בחירת מחדל"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "הצגה בחלון הקבצי×"
@@ -2805,6 +2908,11 @@ msgid "Orphan Resource Explorer..."
msgstr "סייר מש××‘×™× ×™×ª×•×ž×™× ..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "גרסה נוכחית:"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "יצי××” לרשימת מיזמי×"
@@ -2955,20 +3063,24 @@ msgstr "ניהול תבניות ייצו×..."
msgid "Help"
msgstr "עזרה"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "×ž×¡×ž×›×™× ×ž×§×•×•× ×™×"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "פתיחת התיעוד"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "ש×לות ותשובות נפוצות"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "דיווח על תקלה (ב××’)"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "שליחת משוב על התיעוד"
@@ -2977,7 +3089,8 @@ msgid "Community"
msgstr "קהילה"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "על ×ודות"
#: editor/editor_node.cpp
@@ -3074,6 +3187,16 @@ msgid "Manage Templates"
msgstr "ניהול תבניות"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "התקנה מקובץ"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "×œ× ×ž×‘×•×¡×¡ על קובץ מש×ב"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3107,7 +3230,7 @@ msgstr "×™×™×‘×•× ×ª×‘× ×™×•×ª מקובץ ZIP"
msgid "Template Package"
msgstr "מנהל ×™×™×¦×•× ×ª×‘× ×™×•×ª"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "×™×™×¦×•× ×¡×¤×¨×™×”"
@@ -3150,6 +3273,11 @@ msgid "Select"
msgstr "בחירה"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "× × ×œ×‘×—×•×¨ ×ת התיקייה הנוכחית"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "פתיחת עורך דו־ממד"
@@ -3181,6 +3309,10 @@ msgstr "×זהרה!"
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3207,33 +3339,34 @@ msgstr "×ª×•×¡×¤×™× ×ž×•×ª×§× ×™×:"
msgid "Update"
msgstr "עדכון"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "גרסה:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "יוצר:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "מצב:"
+#, fuzzy
+msgid "Author"
+msgstr "יוצרי×"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "עריכה:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "מדידה:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "זמן שקופית (שניות)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "זמן ממוצע (שניות)"
#: editor/editor_profiler.cpp
@@ -3253,6 +3386,16 @@ msgid "Self"
msgstr "עצמי"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "שקופית מס׳:"
@@ -3296,12 +3439,6 @@ msgstr "×©× ×©×’×•×™."
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3319,41 +3456,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "הרצת סקריפט"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "הדבקה"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3382,6 +3484,48 @@ msgstr ""
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "הדבקה"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "המרה ל×ותיות גדולות"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Extend Script"
+msgstr "הרצת סקריפט"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3414,8 +3558,10 @@ msgid "Did you forget the '_run' method?"
msgstr "שכחת ×ת השיטה ‚‎_run’?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
+"×”×—×–×§ ×ת %s כדי להוסיף Getter. ×”×—×–×§ ×ת מקש Shift כדי להוסיף חתימה גנרית."
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
@@ -3434,113 +3580,67 @@ msgid "Import From Node:"
msgstr "×™×™×‘×•× ×ž×ž×¤×¨×§:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "הורדה מחדש"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "הסרה"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(מותקן)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "הורדה"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(חסר)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(נוכחי)"
+msgid "There are no mirrors available."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "להסיר ×ת גרסת התבנית ‚%s’?"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "×œ× × ×™×ª×Ÿ ×œ×™×™×¦× zip של תבניות."
+msgid "Error requesting URL:"
+msgstr "שגי××” בבקשת כתובת:"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "תבנית ה־version.txt שגויה בתוך התבניות."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "×œ× × ×ž×¦× version.txt בתוך התבניות."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "שגי×ת ביצירת נתיב לתבניות:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "תבניות ×”×™×™×¦×•× ×ž×—×•×œ×¦×•×ª"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "ייבו×:"
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
+msgid "Connecting to the mirror..."
+msgstr "התחברות למפרק:"
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr "×œ× × ×ž×¦×ו קישורי הורדה לגרסה זו. הורדה ישירה זמינה רק במהדורות הרשמיות."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "×œ× × ×ž×¦××” כתובת המ×רח:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "×œ× × ×™×ª×Ÿ לפתור."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "×œ× × ×™×ª×Ÿ להתחבר למ×רח:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "×œ× × ×™×ª×Ÿ להתחבר."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "×ין תגובה מהמ×רח:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "×ין תגובה."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "הבקשה נכשלה."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "לול×ת הפניות."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "הבקשה נכשלה, יותר מדי הפניות מחדש"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "נכשל:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "הבקשה נכשלה."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "ההורדה הושלמה."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3554,14 +3654,24 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "שגי××” בבקשת כתובת:"
+msgid "Error getting the list of mirrors."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr "×œ× × ×ž×¦×ו קישורי הורדה לגרסה זו. הורדה ישירה זמינה רק במהדורות הרשמיות."
+
+#: editor/export_template_manager.cpp
msgid "Disconnected"
msgstr "מנותק"
@@ -3604,46 +3714,139 @@ msgid "SSL Handshake Error"
msgstr "שגי×ת לחיצת יד SSL"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "×œ× × ×™×ª×Ÿ ×œ×™×™×¦× zip של תבניות."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "תבנית ה־version.txt שגויה בתוך התבניות."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "×œ× × ×ž×¦× version.txt בתוך התבניות."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "שגי×ת ביצירת נתיב לתבניות:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "תבניות ×”×™×™×¦×•× ×ž×—×•×œ×¦×•×ª"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "ייבו×:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "להסיר ×ת גרסת התבנית ‚%s’?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "מנהל ×™×™×¦×•× ×ª×‘× ×™×•×ª"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "גרסה נוכחית:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "גרס×ות מותקנות:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "פתיחת קובץ"
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "הסרה"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "שגי×ת הורדה"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "התקנה מקובץ"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "הסרת תבנית"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "×™×™×‘×•× ×ª×‘× ×™×•×ª מקובץ ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "בחירת קובץ תבנית"
+msgid "Cancel the download of the templates."
+msgstr "×œ× × ×™×ª×Ÿ ×œ×™×™×¦× zip של תבניות."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
-msgstr "ניהול תבניות ייצו×"
+msgid "Other Installed Versions:"
+msgstr "גרס×ות מותקנות:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "מנהל ×™×™×¦×•× ×ª×‘× ×™×•×ª"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "הסרה"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "הורדת תבניות"
+#, fuzzy
+msgid "Select Template File"
+msgstr "בחירת קובץ תבנית"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "בחר ×תר חלופי מהרשימה: (Shift+Click: פתיחה בדפדפן)"
+#, fuzzy
+msgid "Godot Export Templates"
+msgstr "ניהול תבניות ייצו×"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -3777,32 +3980,62 @@ msgstr "פתיחת סקריפט מהירה…"
msgid "New Resource..."
msgstr "שמירת המש×ב בתור…"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Expand All"
msgstr "להרחיב הכול"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Collapse All"
msgstr "×œ×¦×ž×¦× ×”×›×•×œ"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "שכפול…"
+#, fuzzy
+msgid "Sort files"
+msgstr "חיפוש במחלקות"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Move to Trash"
-msgstr "הזזת טעינה ×וטומטית"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "שכפול…"
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "שינוי ש×…"
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "המישור הקוד×"
@@ -3891,10 +4124,6 @@ msgstr "×יתור…"
msgid "Replace..."
msgstr "החלפה…"
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "×יתור "
@@ -4132,54 +4361,54 @@ msgstr "טעינת המש×ב נכשלה."
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Expand All Properties"
-msgstr "הרחבת כל המ×פייני×"
+msgid "Copy Properties"
+msgstr "מ×פייני×"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Collapse All Properties"
-msgstr "×¦×ž×¦×•× ×›×œ המ×פייני×"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "שמירה בש×…"
+msgid "Paste Properties"
+msgstr "מ×פייני×"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "העתקת משתני×"
+msgid "Make Sub-Resources Unique"
+msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "ערוך לוח העתקת מש×בי×"
+msgid "Create a new resource in memory and edit it."
+msgstr "יצירת מש×ב חדש בזיכרון ועריכתו."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "העתקת מש×ב"
+msgid "Load an existing resource from disk and edit it."
+msgstr "טעינת מש×ב ×§×™×™× ×ž×”×›×•× ×Ÿ ועריכתו."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr ""
+msgid "Save the currently edited resource."
+msgstr "שמירת המש×ב שנערך כרגע."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr ""
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "שמירה בש×…"
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "פתיחה בעזרה"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "×œ× ×‘× ×ª×™×‘ המש×ב."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "יצירת מש×ב חדש בזיכרון ועריכתו."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "ערוך לוח העתקת מש×בי×"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "טעינת מש×ב ×§×™×™× ×ž×”×›×•× ×Ÿ ועריכתו."
+msgid "Copy Resource"
+msgstr "העתקת מש×ב"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "שמירת המש×ב שנערך כרגע."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "הדבקת מש×ב"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4194,8 +4423,13 @@ msgid "History of recently edited objects."
msgstr "היסטוריה של ×”×¤×¨×™×˜×™× ×©× ×¢×¨×›×• ל×חרונה."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "מ×פייני פריט."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "פתיחת התיעוד"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "פתיחת התיעוד"
#: editor/inspector_dock.cpp
#, fuzzy
@@ -4203,6 +4437,11 @@ msgid "Filter properties"
msgstr "מ×פייני פריט."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "מ×פייני פריט."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "×”×©×™× ×•×™×™× ×¢×©×•×™×™× ×œ×œ×›×ª ל×יבוד!"
@@ -4233,6 +4472,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "יוצר:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "גרסה:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4449,7 +4697,8 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "משתנה השתנה"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4670,6 +4919,11 @@ msgid "Animation"
msgstr "הנפשה"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "חדש"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "עריכת מעברי×..."
@@ -5011,10 +5265,18 @@ msgid "View Files"
msgstr "הצגת קבצי×"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "הורדה"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "שגי×ת חיבור, ×× × × ×¡×” שוב."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "×œ× × ×™×ª×Ÿ להתחבר."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "×œ× × ×™×ª×Ÿ להתחבר למ×רח:"
@@ -5023,16 +5285,20 @@ msgid "No response from host:"
msgstr "×ין תגובה מהמ×רח:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "×ין תגובה."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "×œ× × ×ž×¦××” כתובת המ×רח:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "בקשה נכשלה, הוחזר קוד:"
+msgid "Can't resolve."
+msgstr "×œ× × ×™×ª×Ÿ לפתור."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "הבקשה נכשלה."
+msgid "Request failed, return code:"
+msgstr "בקשה נכשלה, הוחזר קוד:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5059,6 +5325,10 @@ msgid "Timeout."
msgstr "עבר הזמן."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "נכשל:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "×”×”×ש (hash) שירד ×œ× ×˜×•×‘, כנר××” שהקובץ שונה."
@@ -5160,8 +5430,12 @@ msgid "All"
msgstr "הכל"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "×ין תוצ×ות עבור \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5203,6 +5477,10 @@ msgstr "בטעינה…"
msgid "Assets ZIP File"
msgstr "קובץ ZIP של נכסי×"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
#, fuzzy
msgid ""
@@ -5214,9 +5492,10 @@ msgstr ""
"ממ×פייני BakedLightmap."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr "×ין רשתות ל×פייה. וד×/×™ ×©×”× ×ž×›×™×œ×™× ×¢×¨×•×¥ UV2 והדגל 'Bake Light' מ×ופשר."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5468,15 +5747,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5537,6 +5817,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5548,19 +5829,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "הסרת מפרק ×ו מעברון שנבחרו."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "מחיקת המרובע שנבחר."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "הסרת מפרק ×ו מעברון שנבחרו."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5805,6 +6095,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "הוספת מפרק"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "יצירת מופע לסצנה (סצנות)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5818,6 +6118,52 @@ msgid "Pan View"
msgstr "מבט ×חורי"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "התרחקות"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "התרחקות"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "התרחקות"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "התרחקות"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "התרחקות"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "התרחקות"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -6069,6 +6415,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "יצירת %s חדש"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "יצירת %s חדש"
@@ -6103,7 +6454,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6164,13 +6515,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "יצירת מצולע"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "יצירת מצולע"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6225,7 +6589,6 @@ msgid "Mesh Library"
msgstr "×™×™×¦×•× ×¡×¤×¨×™×”"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6499,7 +6862,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6819,6 +7183,24 @@ msgstr "טעינת מש×ב"
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "הזזת נקודות בזייה"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "מחיקת נקודה"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7029,7 +7411,7 @@ msgstr "הרצה"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "חיפוש"
@@ -7061,6 +7443,11 @@ msgid "Debug with External Editor"
msgstr "ניפוי שגי×ות ×¢× ×¢×•×¨×š חיצוני"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "×ž×¡×ž×›×™× ×ž×§×•×•× ×™×"
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation."
msgstr "פתיחת התיעוד המקוון של Godot"
@@ -7192,8 +7579,8 @@ msgstr ""
msgid "Cut"
msgstr "גזירה"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "לבחור הכול"
@@ -7226,10 +7613,6 @@ msgid "Unfold All Lines"
msgstr "הרחבת כל השורות"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "לשכפל למטה"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7400,6 +7783,27 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "הטיית מצולע"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "קנה מידה:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7420,42 +7824,52 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr ""
+#, fuzzy
+msgid "Size:"
+msgstr "מבט קדמי"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "שינויי חומרי×"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "שינויי חומרי×"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "שינויי חומרי×"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "קרי×ות"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "קודקודי×"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "מבט על."
@@ -7613,6 +8027,11 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "שינוי גודל מצלמה"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "View Rotation Locked"
msgstr "הצגת מידע"
@@ -7628,6 +8047,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "החלפת מצב רשיות"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7641,24 +8065,15 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
-msgstr ""
+#, fuzzy
+msgid "Snap Nodes to Floor"
+msgstr "הקומה הב××”"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"גרירה: הטיה\n"
-"Alt+גרירה: הזזה\n"
-"Alt+כפתור ימני: בחירת רשימת עומק"
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Use Local Space"
msgstr "מצב מרחב מקומי (%s)"
@@ -7668,6 +8083,10 @@ msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "מבט תחתי"
@@ -7762,6 +8181,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Settings..."
@@ -8075,11 +8498,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -8100,171 +8518,598 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "מוני×:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+#, fuzzy
+msgid "Colors"
+msgstr "בחירת צבע"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Icons"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Styleboxes"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "חברי×"
+msgid "No colors found."
+msgstr "×œ× × ×ž×¦×!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "קבועי×"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "קבוע"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "×œ× × ×ž×¦×!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "No icons found."
+msgstr "×œ× × ×ž×¦×!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "×œ× × ×ž×¦×!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "×™×™×‘×•× ×¢×¨×›×ª עיצוב"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Toggle Button"
-msgstr "כפתור עכבר"
+msgid "Updating the editor"
+msgstr "לצ×ת מהעורך?"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "כפתור ×מצעי"
+msgid "Finalizing"
+msgstr "מתבצע ניתוח"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Filter:"
+msgstr "מסנני×..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "מושבת"
+msgid "Select by data type:"
+msgstr "בחר מפרק"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "יש לבחור פריט הגדרה ×§×•×“× ×›×œ!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "יש לבחור פריט הגדרה ×§×•×“× ×›×œ!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "יש לבחור פריט הגדרה ×§×•×“× ×›×œ!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "יש לבחור פריט הגדרה ×§×•×“× ×›×œ!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "יש לבחור פריט הגדרה ×§×•×“× ×›×œ!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "יש לבחור פריט הגדרה ×§×•×“× ×›×œ!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select all visible stylebox items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Deselect all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "מושבת"
+msgid "Collapse types."
+msgstr "×œ×¦×ž×¦× ×”×›×•×œ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+#, fuzzy
+msgid "Expand types."
+msgstr "להרחיב הכול"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "בחירת קובץ תבנית"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Deselect All"
+msgstr "לבחור הכול"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+#, fuzzy
+msgid "Import Selected"
+msgstr "×™×™×‘×•× ×¡×¦× ×”"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "הסרת כל נקודות העצירה"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "שינוי ×©× ×ž×¤×¨×§"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "הסרת כל נקודות העצירה"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "הסרת כל נקודות העצירה"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "הסרת כל נקודות העצירה"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "הסרת כל נקודות העצירה"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "מועדפי×:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "קבוע"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "הזזת נקודה"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "הוספת קלט"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "שינוי ×©× ×ž×¤×¨×§"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "שינוי ×©× ×ž×¤×¨×§"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "שינוי ×©× ×ž×¤×¨×§"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "קובץ שגוי, ×œ× ×¤×¨×™×¡×” של ×פיקי שמע."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "ניהול תבניות"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "עריכת מסנני×"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "סוג"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "סוג"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "הוספת קלט"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+#, fuzzy
+msgid "Remove Items:"
+msgstr "פריטי מנשק משתמש של ערכת העיצוב:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "הסרת מצולע ונקודה"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "פתיחת קובץ"
+msgid "Add Theme Item"
+msgstr "פריטי מנשק משתמש של ערכת העיצוב"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "×©× ×”×ž×¤×¨×§:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "×™×™×‘×•× ×¢×¨×›×ª עיצוב"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "בחירת מחדל"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "חברי×"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "מחיקת מש×ב"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "×™×™×‘×•× ×¢×¨×›×ª עיצוב"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "הגדרת הצמדה"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "שינוי ש×"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "דריסה"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "סוג"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "×יתור סוג מפרק"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "טעינת בררת המחדל"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "דריסה"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "שמירת ערכת העיצוב"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "ניהול תבניות ייצו×..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "תצוגה מקדימה"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "תצוגה מקדימה:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "שחזור סצנה"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Toggle Button"
+msgstr "כפתור עכבר"
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "כפתור ×מצעי"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "מושבת"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "מושבת"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "קובץ שגוי, ×œ× ×¤×¨×™×¡×” של ×פיקי שמע."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8448,6 +9293,10 @@ msgid "Priority"
msgstr "×™×™×¦×•× ×ž×™×–×"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8807,11 +9656,6 @@ msgid "Commit Changes"
msgstr "סנכרון ×”×©×™× ×•×™×™× ×‘×¡×§×¨×™×¤×˜"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9659,7 +10503,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "הוספת מ×פיין גלובלי"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9778,7 +10622,7 @@ msgstr "הרצת סקריפט"
#: editor/project_export.cpp
#, fuzzy
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr "×™×™×¦×•× ×ž×™×–×"
#: editor/project_export.cpp
@@ -9786,7 +10630,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9794,11 +10638,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9875,7 +10719,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr "×©× ×©×’×•×™."
#: editor/project_manager.cpp
@@ -9909,6 +10753,20 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Error opening package file, not in ZIP format."
+msgstr "פתיחת קובץ החבילה נכשלה, המבנה ×ינו zip."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Package installed successfully!"
+msgstr "החבילה הותקנה בהצלחה!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -10055,16 +10913,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "× × ×œ×‘×—×•×¨ התקן מהרשימה"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "× × ×œ×‘×—×•×¨ התקן מהרשימה"
#: editor/project_manager.cpp
msgid ""
@@ -10094,7 +10950,7 @@ msgstr "מנהל המיזמי×"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "מיז×"
#: editor/project_manager.cpp
@@ -10109,10 +10965,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "×™×™×¦×•× ×ž×™×–×"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "מיז×"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "מיז×"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "× × ×œ×‘×—×•×¨ תיקייה לסריקה"
@@ -10122,18 +10993,41 @@ msgstr "×ž×™×–× ×—×“×©"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "×™×™×¦×•× ×ž×™×–×"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "הסרת נקודה בנתיב"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "הסרת תבנית"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "תבניות"
+msgid "About"
+msgstr "על ×ודות"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "ספריית מש×בי×"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "להפעיל מחדש כעת"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "×œ× × ×™×ª×Ÿ להריץ מיז×"
@@ -10144,8 +11038,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "מ×פייני פריט."
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10155,6 +11054,10 @@ msgid "Key "
msgstr "מקש "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10198,6 +11101,10 @@ msgstr "התקן"
msgid "Device"
msgstr "התקן"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "× × ×œ×œ×—×•×¥ על מקש…"
@@ -10341,19 +11248,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "הוספת מעברון"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10632,6 +11540,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10805,12 +11717,30 @@ msgid "Delete node \"%s\"?"
msgstr "מחק מפרק \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "×œ× × ×™×ª×Ÿ לביצוע ×¢× ×ž×¤×¨×§ השורש."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "×œ× × ×™×ª×Ÿ לבצע פעולה זו על ×ž×•×¤×¢×™× ×©×œ סצינות."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10868,6 +11798,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "×œ× ×™×›×•×œ לפעול על ×ž×¤×¨×§×™× ×©×”×¡×¦× ×” הנוכחית יורשת מה×!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "×œ× × ×™×ª×Ÿ לבצע פעולה זו על ×ž×•×¤×¢×™× ×©×œ סצינות."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "חיבור סקריפט"
@@ -10915,10 +11849,6 @@ msgid "Load As Placeholder"
msgstr "טען כשומר מקו×"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "פתיחת התיעוד"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11205,6 +12135,12 @@ msgstr ""
"חיצוני."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "×©× ×ž×—×œ×§×”:"
@@ -11273,6 +12209,10 @@ msgid "Copy Error"
msgstr "שגי×ת העתקה"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "זיכרון ויד×ו"
@@ -11556,6 +12496,16 @@ msgstr "יצירת מילון ×œ× ×—×•×§×™×ª (מחלקות משנה ×œ× ×—×•×§
msgid "Object can't provide a length."
msgstr "×”×¢×¦× ×ינו יכול לספק ×ורך."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "×™×™×¦×•× Mesh Library"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "ייצו×..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "המישור הב×"
@@ -11597,6 +12547,11 @@ msgid "GridMap Paint"
msgstr "GridMap צביעה"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "GridMap מילוי הבחירה"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "מפת רשת"
@@ -11846,6 +12801,16 @@ msgid "Add Output Port"
msgstr "הוספת פורט יצי××”"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "שינוי סוג"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "שינוי ×©× ×§×œ×˜"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "דריסה של פונקציה מובנת קיימת."
@@ -11956,6 +12921,11 @@ msgid "Add Preload Node"
msgstr "הוספת מפרק ×§×“× ×˜×¢×™× ×”"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "הוספת מפרק"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "הוספת מפרק/×™× ×ž×”×¢×¥"
@@ -12182,10 +13152,6 @@ msgstr "חיפוש VisualScript"
msgid "Get %s"
msgstr "קבלת %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "קביעת %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "×©× ×”×—×‘×™×œ×” חסר."
@@ -12215,6 +13181,42 @@ msgid "Select device from the list"
msgstr "× × ×œ×‘×—×•×¨ התקן מהרשימה"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "ייצו×"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "הסרה"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr ""
+"×”×§×‘×¦×™× × ×¡×¨×§×™×,\n"
+"× × ×œ×”×ž×ª×™×Ÿâ€¦"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "×œ× × ×™×ª×Ÿ להפעיל תהליך משנה!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "מופעל סקריפט מות×× ×ישית…"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "×œ× × ×™×ª×Ÿ ליצור תיקייה."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12322,6 +13324,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"×”×§×‘×¦×™× × ×¡×¨×§×™×,\n"
+"× × ×œ×”×ž×ª×™×Ÿâ€¦"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "הגדרות"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "ייצו×"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12334,6 +13378,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12355,6 +13403,20 @@ msgstr ""
"× × ×œ×”×ª×§×™×Ÿ מחדש ×ת תבנית בניית ×נדרו×יד מתפריט 'Project'."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "בניית ×ž×™×–× ×נדרו×יד (gradle)"
@@ -12376,11 +13438,54 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "הנפשה ×œ× × ×ž×¦××”: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "יצירת קווי מת×ר..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "×יתור…"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "מזהה חסר."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "התו '%s' ×ינו מותר במזהה."
@@ -12409,10 +13514,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "הפעלת ×”Ö¾HTML ×”×ž×™×•×¦× ×‘×“×¤×“×¤×Ÿ בררת המחדל של המערכת."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "×œ× × ×™×ª×Ÿ לפתוח תבנית לייצו×:"
@@ -12421,16 +13522,49 @@ msgid "Invalid export template:"
msgstr "תבנית ×™×¦×•× ×©×’×•×™×”:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×ž×¢×˜×¤×ª HTML מות×מת:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×§×•×‘×¥ תמונת פתיח:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "×œ× × ×™×ª×Ÿ ליצור תיקייה."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "נעשה שימוש בתמונת הפתיח כבררת מחדל."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "שגי××” בשמירת הסצנה."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "מזהה ×œ× ×—×•×§×™:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12831,6 +13965,13 @@ msgstr ""
"מנהל הוויד×ו GLES2 ×ינו תומך ב- GIProbes.\n"
"השתמש ב-BakedLightmap במקו×."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "SpotLight ×¢× ×–×•×•×™×ª רחבה מ-90 מעלות ×ינו יכול להטיל צללי×."
@@ -12912,6 +14053,18 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12920,6 +14073,46 @@ msgstr ""
"המ×פיין \"Remote Path\" חייב להפנות למפרק חוקי מסוג Spatial ×ו יורש ממנו כדי "
"לעבוד."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "תהיה התעלמות מגוף זה עד שתקבע רשת."
@@ -12978,6 +14171,10 @@ msgstr "במפרק 'BlendTree '%s, הנפשה ×œ× × ×ž×¦××”: '%s'"
msgid "Animation not found: '%s'"
msgstr "הנפשה ×œ× × ×ž×¦××”: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "בצומת '%s', הנפשה ×œ× ×—×•×§×™×ª: '%s'."
@@ -13143,6 +14340,27 @@ msgid "Invalid comparison function for that type."
msgstr "פונקציית השוו××” ×œ× ×—×•×§×™×ª לסוג ×–×”."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "ניתן להקצות ×©×™× ×•×™×™× ×¨×§ בפונקצית vertex."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "השמה לפונקציה."
@@ -13151,13 +14369,112 @@ msgid "Assignment to uniform."
msgstr "השמה ל-uniform."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "ניתן להקצות ×©×™× ×•×™×™× ×¨×§ בפונקצית vertex."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "××™ ×פשר לשנות קבועי×."
+#~ msgid "Package Contents:"
+#~ msgstr "תוכן החבילה:"
+
+#~ msgid "Singleton"
+#~ msgstr "יחידני"
+
+#, fuzzy
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "להחליף הכול"
+
+#, fuzzy
+#~ msgid "Enabled Properties:"
+#~ msgstr "מ×פייני×"
+
+#, fuzzy
+#~ msgid "Class Options"
+#~ msgstr "תי×ור"
+
+#~ msgid "Set"
+#~ msgstr "קבע"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "נשמרו %s מש××‘×™× ×©×”×©×ª× ×•."
+
+#~ msgid "Q&A"
+#~ msgstr "ש×לות ותשובות נפוצות"
+
+#~ msgid "Status:"
+#~ msgstr "מצב:"
+
+#~ msgid "Edit:"
+#~ msgstr "עריכה:"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "הורדה מחדש"
+
+#~ msgid "(Installed)"
+#~ msgstr "(מותקן)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(חסר)"
+
+#~ msgid "Request Failed."
+#~ msgstr "הבקשה נכשלה."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "לול×ת הפניות."
+
+#~ msgid "Download Complete."
+#~ msgstr "ההורדה הושלמה."
+
+#~ msgid "Remove Template"
+#~ msgstr "הסרת תבנית"
+
+#~ msgid "Download Templates"
+#~ msgstr "הורדת תבניות"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "בחר ×תר חלופי מהרשימה: (Shift+Click: פתיחה בדפדפן)"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "הזזת טעינה ×וטומטית"
+
+#, fuzzy
+#~ msgid "Expand All Properties"
+#~ msgstr "הרחבת כל המ×פייני×"
+
+#~ msgid "Copy Params"
+#~ msgstr "העתקת משתני×"
+
+#~ msgid "Open in Help"
+#~ msgstr "פתיחה בעזרה"
+
+#~ msgid "Clone Down"
+#~ msgstr "לשכפל למטה"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "גרירה: הטיה\n"
+#~ "Alt+גרירה: הזזה\n"
+#~ "Alt+כפתור ימני: בחירת רשימת עומק"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "פתיחת קובץ"
+
+#~ msgid "Templates"
+#~ msgstr "תבניות"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "×œ× × ×™×ª×Ÿ לביצוע ×¢× ×ž×¤×¨×§ השורש."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "×œ× × ×™×ª×Ÿ ×œ×§×¨×•× ×§×•×‘×¥ תמונת פתיח:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "נעשה שימוש בתמונת הפתיח כבררת מחדל."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "נגן הנפשה ×ינו יכול להנפיש ×ת עצמו, רק ×©×—×§× ×™× ×חרי×."
@@ -13242,18 +14559,12 @@ msgstr "××™ ×פשר לשנות קבועי×."
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "הסצנה הנוכחית ×ž×¢×•×œ× ×œ× × ×©×ž×¨×”, × × ×œ×©×ž×•×¨ ×ותה ×‘×˜×¨× ×”×”×¨×¦×”."
-#~ msgid "Not in resource path."
-#~ msgstr "×œ× ×‘× ×ª×™×‘ המש×ב."
-
#~ msgid "Revert"
#~ msgstr "שחזור"
#~ msgid "This action cannot be undone. Revert anyway?"
#~ msgstr "×œ× × ×™×ª×Ÿ לבטל פעולה זו. לשחזר בכל ×–×ת?"
-#~ msgid "Revert Scene"
-#~ msgstr "שחזור סצנה"
-
#~ msgid "Issue Tracker"
#~ msgstr "עוקב תקלות"
@@ -13286,9 +14597,6 @@ msgstr "××™ ×פשר לשנות קבועי×."
#~ msgid "Theme Properties:"
#~ msgstr "מ×פייני×"
-#~ msgid "Enumerations:"
-#~ msgstr "מוני×:"
-
#~ msgid "Constants:"
#~ msgstr "קבועי×:"
@@ -13425,10 +14733,6 @@ msgstr "××™ ×פשר לשנות קבועי×."
#~ msgid "Snap (s): "
#~ msgstr "צעד/×™×:"
-#, fuzzy
-#~ msgid "Font Size:"
-#~ msgstr "מבט קדמי"
-
#~ msgid "Line:"
#~ msgstr "שורה:"
@@ -13451,10 +14755,6 @@ msgstr "××™ ×פשר לשנות קבועי×."
#~ msgid "Splits"
#~ msgstr "פיצול נתיב"
-#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "יש לבחור פריט הגדרה ×§×•×“× ×›×œ!"
-
#~ msgid "Create Poly"
#~ msgstr "יצירת מצולע"
@@ -13485,12 +14785,6 @@ msgstr "××™ ×פשר לשנות קבועי×."
#~ msgid "Public Methods:"
#~ msgstr "שיטות ציבוריות:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "פריטי מנשק משתמש של ערכת העיצוב"
-
-#~ msgid "GUI Theme Items:"
-#~ msgstr "פריטי מנשק משתמש של ערכת העיצוב:"
-
#, fuzzy
#~ msgid "Toggle folder status as Favorite."
#~ msgstr "החלפת מצב התיקייה כמועדפת"
@@ -13560,9 +14854,6 @@ msgstr "××™ ×פשר לשנות קבועי×."
#~ msgid "Can't write file."
#~ msgstr "×œ× × ×™×ª×Ÿ לכתוב קובץ."
-#~ msgid "Not found!"
-#~ msgstr "×œ× × ×ž×¦×!"
-
#~ msgid "Replace By"
#~ msgstr "להחליף ב־"
diff --git a/editor/translations/hi.po b/editor/translations/hi.po
index db1dcd67e6..a4e7d4ae72 100644
--- a/editor/translations/hi.po
+++ b/editor/translations/hi.po
@@ -532,7 +532,8 @@ msgstr "सेकंड"
msgid "FPS"
msgstr "à¤à¤«à¤ªà¥€à¤à¤¸"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -558,7 +559,8 @@ msgstr "सà¥à¤•ेल चयन"
msgid "Scale From Cursor"
msgstr "करà¥à¤¸à¤° से सà¥à¤•ेल"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "डà¥à¤ªà¥à¤²à¥€à¤•ेट चयन"
@@ -579,6 +581,11 @@ msgid "Go to Previous Step"
msgstr "पिछले चरण में जाà¤à¤‚"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "रीसेट आकार"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "à¤à¤¨à¤¿à¤®à¥‡à¤¶à¤¨ का अनà¥à¤•ूलन"
@@ -595,6 +602,11 @@ msgid "Use Bezier Curves"
msgstr "बेज़ियर करà¥à¤µà¥à¤¸ का पà¥à¤°à¤¯à¥‹à¤— करें"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "पेसà¥à¤Ÿ टà¥à¤°à¥ˆà¤•"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Anim. अनà¥à¤•ूलक"
@@ -643,7 +655,7 @@ msgid "Select Tracks to Copy"
msgstr "कॉपी करने के लिठटà¥à¤°à¥ˆà¤• का चयन करें"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -729,12 +741,14 @@ msgid "Toggle Scripts Panel"
msgstr "टॉगल सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ पैनल"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "बड़ा करो"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -789,11 +803,9 @@ msgid "Add"
msgstr "जोड़िये"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -845,6 +857,7 @@ msgstr "इशारा कनेकà¥à¤Ÿ नहीं कर सकते"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -914,7 +927,8 @@ msgid "Edit..."
msgstr "संपादित करें..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "मेथड पे जाये"
#: editor/create_dialog.cpp
@@ -929,6 +943,14 @@ msgstr "बदली"
msgid "Create New %s"
msgstr "नया%s बनाà¤à¤‚"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -950,8 +972,8 @@ msgstr "खोज:"
msgid "Matches:"
msgstr "à¤à¤• जैसा:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1027,19 +1049,23 @@ msgid "Owners Of:"
msgstr "के सà¥à¤µà¤¾à¤®à¥€:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"कà¥à¤¯à¤¾ आप पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ से चयनित फ़ाइल को हटाना चाहते हैं? (पूरà¥à¤µà¤µà¤¤ नहीं किया जा सकता है)\n"
"आप सिसà¥à¤Ÿà¤® रीसायकल बिन में हटाई गई फ़ाइलों को पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ कर सकते हैं।"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"हटाई जाने वाली फ़ाइल अनà¥à¤¯ संसाधनों पर निरà¥à¤­à¤° है।\n"
"कà¥à¤¯à¤¾ आप अभी भी हटाना चाहते हैं? (पूरà¥à¤µà¤µà¤¤ नहीं किया जा सकता है)\n"
@@ -1087,7 +1113,7 @@ msgstr "अनाथ संसाधन à¤à¤•à¥à¤¸à¤ªà¥à¤²à¥‹à¤°à¤°"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1211,28 +1237,41 @@ msgstr "अवयव"
msgid "Licenses"
msgstr "लाइसेंस"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "ज़िप फ़ाइल खोलने में तà¥à¤°à¥à¤Ÿà¤¿, पà¥à¤°à¤¾à¤°à¥‚प में नहीं।"
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (पहले से मौजूद है)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "असंपीड़ित संपतà¥à¤¤à¤¿à¤¯à¤¾à¤‚"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "निमà¥à¤¨ फ़ाइलों का निसà¥à¤¸à¤¾à¤°à¤£ नहीं हो पाया:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "और %s फ़ाइलें."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "पैकेज सफलतापूरà¥à¤µà¤• सà¥à¤¥à¤¾à¤ªà¤¿à¤¤!"
#: editor/editor_asset_installer.cpp
@@ -1240,16 +1279,13 @@ msgstr "पैकेज सफलतापूरà¥à¤µà¤• सà¥à¤¥à¤¾à¤ªà¤¿à¤¤!
msgid "Success!"
msgstr "सफलता!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "पैकेज में है:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "इंसà¥à¤Ÿà¥‰à¤²"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "पैकेज इंसà¥à¤Ÿà¥‰à¤²à¤°"
#: editor/editor_audio_buses.cpp
@@ -1313,7 +1349,8 @@ msgid "Bypass"
msgstr "उपमारà¥à¤—"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "बस विकलà¥à¤ª"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1393,7 +1430,7 @@ msgstr "बस à¤à¤¡ कीजिà¤"
msgid "Add a new Audio Bus to this layout."
msgstr "लेआउट में नई ऑडियो बस à¤à¤¡ कीजिà¤."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1480,6 +1517,15 @@ msgid "Can't add autoload:"
msgstr "औटोलोड नहीं डाल सकते:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "फ़ाइल नहीं मौजूद."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "औटोलोड à¤à¤¡ कीजिà¤"
@@ -1495,16 +1541,16 @@ msgid "Node Name:"
msgstr "नोड का नाम:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "नाम"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "सिनà¥à¤—लटन"
+msgid "Global Variable"
+msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "पैरैमिटरà¥à¤¸ पेसà¥à¤Ÿ कीजिये"
@@ -1520,7 +1566,7 @@ msgstr "लोकल बदलीया सà¥à¤Ÿà¥‹à¤° कर रहा है.
msgid "Updating scene..."
msgstr "सीन अपडेट कर रहा है..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[खाली]"
@@ -1673,8 +1719,49 @@ msgid "Import Dock"
msgstr "इंपोरà¥à¤Ÿ डॉक"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² '%s' को मिटाà¤à¤‚? (इसे अंडू नहीं किया जा सकता है)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(वरà¥à¤¤à¤®à¤¾à¤¨)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1705,15 +1792,18 @@ msgid "Enable Contextual Editor"
msgstr "कोनà¥à¤Ÿà¥‡à¤•à¥à¤¸à¤šà¥à¤…ल à¤à¤¡à¥€à¤Ÿà¤° सकà¥à¤°à¤¿à¤¯ करे"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "सकà¥à¤°à¤¿à¤¯ पà¥à¤°à¥‹à¤ªà¤°à¤Ÿà¤¿à¤œ:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "विशेषता"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "सकà¥à¤°à¤¿à¤¯ फ़िचरà¥à¤¸:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "सà¥à¤µà¤¿à¤§à¤¾à¤à¤‚"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "सकà¥à¤°à¤¿à¤¯ कà¥à¤²à¤¾à¤¸:"
#: editor/editor_feature_profile.cpp
@@ -1731,25 +1821,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "पाथ मे पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² सेव करनेमे à¤à¤°à¤°: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "अनà¥à¤¸à¥‡à¤Ÿ"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "पà¥à¤°à¤¾à¤¯à¤¿à¤• लोड कीजिये"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤²:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ बनाय"
+#, fuzzy
+msgid "Create Profile"
+msgstr "पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² मिटाय"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "नई"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "मिटाना"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "उपलबà¥à¤§ पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤²:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ बनाय"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "आयात"
@@ -1758,20 +1857,22 @@ msgid "Export"
msgstr "â€à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "उपलबà¥à¤§ पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤²:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤²:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "कà¥à¤²à¤¾à¤¸ विकलà¥à¤ª"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "कà¥à¤²à¤¾à¤¸ विकलà¥à¤ª:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "नया पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² नाम:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² मिटाय"
+msgid "New profile name:"
+msgstr "नया पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² नाम:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1794,7 +1895,8 @@ msgid "Select Current Folder"
msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ फ़ोलà¥à¤¡à¤° सिलेकà¥à¤Ÿ कीजिये"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "फ़ाइल पहले से मौजूद, मौजूदा के ऊपर लिखे?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1848,9 +1950,10 @@ msgid "Open a File or Directory"
msgstr "फ़ाइल या डायरेकà¥à¤Ÿà¤°à¥€ खोलिये"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "सेव कीजिये"
@@ -1931,8 +2034,7 @@ msgid "Directories & Files:"
msgstr "डायरेकà¥à¤Ÿà¤°à¤¿à¤œ & फ़ाइले:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "पूरà¥à¤µ दरà¥à¤¶à¤¨:"
@@ -2004,7 +2106,7 @@ msgstr "थीम विशेषता"
msgid "Enumerations"
msgstr "गणना"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "कोनà¥à¤¸à¥à¤Ÿà¤¨à¥à¤Ÿ"
@@ -2093,7 +2195,7 @@ msgstr "मेथड"
msgid "Signal"
msgstr "सिगà¥à¤¨à¤²"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "कोनà¥à¤¸à¥à¤Ÿà¤¨à¥à¤Ÿ"
@@ -2109,9 +2211,10 @@ msgstr "थिम पà¥à¤°à¥‹à¤ªà¤°à¥à¤Ÿà¥€"
msgid "Property:"
msgstr "पà¥à¤°à¥‹à¤ªà¤°à¥à¤Ÿà¥€:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "सेट करे"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2126,7 +2229,7 @@ msgid "Copy Selection"
msgstr "खंड कौपी कीजिये"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2190,7 +2293,8 @@ msgid "Imported resources can't be saved."
msgstr "इंपोरà¥à¤Ÿà¥‡à¤¡ रेसोरà¥à¤¸à¥‡à¤¸ सेव नहीं कर सकते."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "ठीक है"
@@ -2404,18 +2508,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "बंद करने से पहले '%' में परिवरà¥à¤¤à¤¨ सहेजें?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "सहेजा गया% संशोधित संसाधन (à¤à¤¸)"
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "दृशà¥à¤¯ को बचाने के लिठà¤à¤• रूट नोड की आवशà¥à¤¯à¤•ता होती है।"
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "दृशà¥à¤¯ के रूप में सहेजें ..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "यह ऑपरेशन बिना किसी दृशà¥à¤¯ के नहीं किया जा सकता है।"
@@ -2602,7 +2711,7 @@ msgstr "लेआउट हटाà¤à¤‚"
msgid "Default"
msgstr "चूक"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "शो में फाइल सिसà¥à¤Ÿà¤®"
@@ -2783,6 +2892,11 @@ msgid "Orphan Resource Explorer..."
msgstr "असहाय रेसोरà¥à¤¸ खोजकरà¥à¤¤à¤¾..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤²:"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "परियोजना सूची में छोड़ो"
@@ -2936,20 +3050,24 @@ msgstr "निरà¥à¤¯à¤¾à¤¤ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ का पà¥à¤°à¤¬
msgid "Help"
msgstr "मदद"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
msgstr "ऑनलाइन डॉकà¥à¤¸"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Q&A"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "पà¥à¤°à¥‹à¤—à¥à¤°à¤¾à¤® में तà¥à¤°à¥à¤Ÿà¤¿ की शिकायत करें"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Docs की पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾ भेजें"
@@ -2958,7 +3076,8 @@ msgid "Community"
msgstr "समà¥à¤¦à¤¾à¤¯"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "के बारे में"
#: editor/editor_node.cpp
@@ -3055,6 +3174,15 @@ msgid "Manage Templates"
msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ का पà¥à¤°à¤¬à¤‚धन करें"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "फ़ाइल से इंसà¥à¤Ÿà¥‰à¤² करें"
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3091,7 +3219,7 @@ msgstr "जिप फाइल से आयात टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤
msgid "Template Package"
msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿ पैकेज"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ लाइबà¥à¤°à¥‡à¤°à¥€"
@@ -3134,6 +3262,11 @@ msgid "Select"
msgstr "चà¥à¤¨à¥‡à¤‚"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ फ़ोलà¥à¤¡à¤° सिलेकà¥à¤Ÿ कीजिये"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "ओपन 2D संपादक"
@@ -3165,6 +3298,11 @@ msgstr "चेतावनी!"
msgid "No sub-resources found."
msgstr "सब-रिसोरà¥à¤¸ नहीं मिला."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "सब-रिसोरà¥à¤¸ नहीं मिला."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "मेष पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•न बनाना"
@@ -3189,33 +3327,34 @@ msgstr "सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ पà¥à¤²à¤—इनà¥à¤¸:"
msgid "Update"
msgstr "अदà¥à¤¯à¤¤à¤¨"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "संसà¥à¤•रण:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "लेखक:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "सà¥à¤¥à¤¿à¤¤à¤¿:"
+#, fuzzy
+msgid "Author"
+msgstr "लेखक"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "संपादित:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "рдорд╛рдк:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "फà¥à¤°à¥‡à¤® समय (सेकंड)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "औसत समय (सेकंड)"
#: editor/editor_profiler.cpp
@@ -3235,6 +3374,16 @@ msgid "Self"
msgstr "सà¥à¤µà¤¯à¤‚"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "फà¥à¤°à¥‡à¤® #:"
@@ -3276,13 +3425,6 @@ msgstr "अमानà¥à¤¯ RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"चयनित संसाधन (%s) इस संपतà¥à¤¤à¤¿ (% à¤à¤¸) के लिठअपेकà¥à¤·à¤¿à¤¤ किसी भी पà¥à¤°à¤•ार से मेल नहीं खाता है।"
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3304,40 +3446,6 @@ msgid "Pick a Viewport"
msgstr "वà¥à¤¯à¥‚पोरà¥à¤Ÿ चà¥à¤¨à¥‡à¤‚"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "नई सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ बढ़ाà¤à¤"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "नया%s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "अदà¥à¤µà¤¿à¤¤à¥€à¤¯ बनाओ"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "चिपकाà¤à¤"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "% à¤à¤¸ में परिवरà¥à¤¤à¤¿à¤¤ करें"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "चयनित नोड वà¥à¤¯à¥‚पोरà¥à¤Ÿ नहीं है!"
@@ -3366,6 +3474,48 @@ msgstr "नया मूलà¥à¤¯:"
msgid "Add Key/Value Pair"
msgstr "कà¥à¤‚जी/मूलà¥à¤¯ जोड़ी जोड़ें"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"चयनित संसाधन (%s) इस संपतà¥à¤¤à¤¿ (% à¤à¤¸) के लिठअपेकà¥à¤·à¤¿à¤¤ किसी भी पà¥à¤°à¤•ार से मेल नहीं खाता है।"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "अदà¥à¤µà¤¿à¤¤à¥€à¤¯ बनाओ"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "चिपकाà¤à¤"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "% à¤à¤¸ में परिवरà¥à¤¤à¤¿à¤¤ करें"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "नया%s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "नई सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ बढ़ाà¤à¤"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3401,7 +3551,8 @@ msgid "Did you forget the '_run' method?"
msgstr "कà¥à¤¯à¤¾ आप '_run' विधि को भूल गà¤?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr "पूरà¥à¤£à¤¾à¤‚क के लिठCtrl दबाठरखें. सटीक अंक के लिये Shift दबाठरखें."
#: editor/editor_sub_scene.cpp
@@ -3421,113 +3572,67 @@ msgid "Import From Node:"
msgstr "नोड से आयात:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "रीडाउनलोड करें"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "अनइंसà¥à¤Ÿà¤¾à¤² करें"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(सà¥à¤¥à¤¾à¤ªà¤¿à¤¤)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "डाउनलोड"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "विकास के निरà¥à¤®à¤¾à¤£ के लिठआधिकारिक निरà¥à¤¯à¤¾à¤¤ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¤‰à¤ªà¤²à¤¬à¥à¤§ नहीं हैं।"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(लापता)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(वरà¥à¤¤à¤®à¤¾à¤¨)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "कोई '%s' फ़ाइल नहीं."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "दरà¥à¤ªà¤£ को पà¥à¤¨à¤ƒ पà¥à¤°à¤¾à¤ªà¥à¤¤ करना, कृपया पà¥à¤°à¤¤à¥€à¤•à¥à¤·à¤¾ करें ..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿ संसà¥à¤•रण '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "निरà¥à¤¯à¤¾à¤¤ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ ज़िप नहीं खोल सकते।"
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ के अंदर अमानà¥à¤¯ संसà¥à¤•रण.txt पà¥à¤°à¤¾à¤°à¥‚प: % à¤à¤¸à¥¤"
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ के अंदर कोई संसà¥à¤•रण.txt नहीं मिला।"
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ के लिठपथ बनाने में तà¥à¤°à¥à¤Ÿà¤¿:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ निकालना"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "आयात:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "तà¥à¤°à¥à¤Ÿà¤¿ दरà¥à¤ªà¤£ की सूची हो रही है।"
+msgid "Error requesting URL:"
+msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "मिरर लिसà¥à¤Ÿ की तà¥à¤°à¥à¤Ÿà¤¿ पारà¥à¤¸à¤¿à¤‚ग जेसन । कृपया इस मà¥à¤¦à¥à¤¦à¥‡ की रिपोरà¥à¤Ÿ करें!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "मिरर से कनेकà¥à¤Ÿ..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
+msgid "Can't resolve the requested address."
msgstr ""
-"इस संसà¥à¤•रण के लिठकोई डाउनलोड लिंक नहीं मिला। पà¥à¤°à¤¤à¥à¤¯à¤•à¥à¤· डाउनलोड केवल आधिकारिक रिलीज के "
-"लिठउपलबà¥à¤§ है।"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "हल नहीं कर सकते।"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+#, fuzzy
+msgid "Can't connect to the mirror."
msgstr "कनेकà¥à¤Ÿ नहीं कर सकते।"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+#, fuzzy
+msgid "No response from the mirror."
msgstr "कोई जवाब नहीं।"
#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "अनà¥à¤°à¥‹à¤§ विफल रहा।"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "लूप को रीडायरेकà¥à¤Ÿ करते हैं।"
+msgid "Request ended up in a redirect loop."
+msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "विफल:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "अनà¥à¤°à¥‹à¤§ विफल रहा।"
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "पूरा डाउनलोड करें।"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3542,12 +3647,25 @@ msgstr ""
"समसà¥à¤¯à¤¾à¤—à¥à¤°à¤¸à¥à¤¤ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ अभिलेखागार '%' पर पाया जा सकता है।"
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "लोड होने मे तà¥à¤°à¥à¤Ÿà¤¿:"
+msgid "Error getting the list of mirrors."
+msgstr "तà¥à¤°à¥à¤Ÿà¤¿ दरà¥à¤ªà¤£ की सूची हो रही है।"
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "मिरर से कनेकà¥à¤Ÿ..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "मिरर लिसà¥à¤Ÿ की तà¥à¤°à¥à¤Ÿà¤¿ पारà¥à¤¸à¤¿à¤‚ग जेसन । कृपया इस मà¥à¤¦à¥à¤¦à¥‡ की रिपोरà¥à¤Ÿ करें!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"इस संसà¥à¤•रण के लिठकोई डाउनलोड लिंक नहीं मिला। पà¥à¤°à¤¤à¥à¤¯à¤•à¥à¤· डाउनलोड केवल आधिकारिक रिलीज के "
+"लिठउपलबà¥à¤§ है।"
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3592,44 +3710,137 @@ msgid "SSL Handshake Error"
msgstr "à¤à¤¸à¤à¤¸à¤à¤² हैंडशेक à¤à¤°à¤°"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "निरà¥à¤¯à¤¾à¤¤ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ ज़िप नहीं खोल सकते।"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ के अंदर अमानà¥à¤¯ संसà¥à¤•रण.txt पà¥à¤°à¤¾à¤°à¥‚प: % à¤à¤¸à¥¤"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ के अंदर कोई संसà¥à¤•रण.txt नहीं मिला।"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ के लिठपथ बनाने में तà¥à¤°à¥à¤Ÿà¤¿:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ निकालना"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "आयात:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿ संसà¥à¤•रण '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "अनकॉमिंग à¤à¤‚डà¥à¤°à¥‰à¤‡à¤¡ बिलà¥à¤¡ सà¥à¤°à¥‹à¤¤"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ टेमà¥à¤ªà¤²à¥‡à¤Ÿ मैनेजर"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ संसà¥à¤•रण:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ संसà¥à¤•रण:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "खोलो इसे"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall"
+msgstr "अनइंसà¥à¤Ÿà¤¾à¤² करें"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "डाउनलोड"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "विकास के निरà¥à¤®à¤¾à¤£ के लिठआधिकारिक निरà¥à¤¯à¤¾à¤¤ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¤‰à¤ªà¤²à¤¬à¥à¤§ नहीं हैं।"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "फ़ाइल से इंसà¥à¤Ÿà¥‰à¤² करें"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿ निकालें"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "जिप फाइल से आयात टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "रदà¥à¤¦ करें"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "निरà¥à¤¯à¤¾à¤¤ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ ज़िप नहीं खोल सकते।"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿ फ़ाइल का चयन करें"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ संसà¥à¤•रण:"
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "गोडॉट à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "अनइंसà¥à¤Ÿà¤¾à¤² करें"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ टेमà¥à¤ªà¤²à¥‡à¤Ÿ मैनेजर"
+msgid "Select Template File"
+msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿ फ़ाइल का चयन करें"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ डाउनलोड करें"
+msgid "Godot Export Templates"
+msgstr "गोडॉट à¤à¤•à¥à¤¸à¤ªà¥‹à¤°à¥à¤Ÿ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "सूची से दरà¥à¤ªà¤£ चà¥à¤¨à¥‡à¤‚: (शिफà¥à¤Ÿ +कà¥à¤²à¤¿à¤•: बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° में खà¥à¤²à¤¾)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3761,29 +3972,60 @@ msgstr "नई सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ..."
msgid "New Resource..."
msgstr "नया संसाधन..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "सभी बढाय"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "सभी ढहाय"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "डà¥à¤ªà¥à¤²à¤¿à¤•ेट..."
+#, fuzzy
+msgid "Sort files"
+msgstr "फाइलें खोजें"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "टà¥à¤°à¥ˆà¤¶ में ले जाà¤à¤‚"
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "डà¥à¤ªà¥à¤²à¤¿à¤•ेट..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "नाम बदली..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "पिछला फ़ोलà¥à¤¡à¤°/फ़ाइल"
@@ -3866,10 +4108,6 @@ msgstr "तलाशिये..."
msgid "Replace..."
msgstr "बदली करे..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "रदà¥à¤¦ करें"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "तलाशिये: "
@@ -4093,52 +4331,53 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "विशेषता"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "विशेषता"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "à¤à¤¡à¤¿à¤Ÿ रिसोरà¥à¤¸ कà¥à¤²à¤¿à¤ªà¤¬à¥‹à¤°à¥à¤¡"
+msgid "Create a new resource in memory and edit it."
+msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr ""
+#, fuzzy
+msgid "Extra resource options."
+msgstr "रेसोरà¥à¤¸ पाथ में नहीं."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "à¤à¤¡à¤¿à¤Ÿ रिसोरà¥à¤¸ कà¥à¤²à¤¿à¤ªà¤¬à¥‹à¤°à¥à¤¡"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4154,7 +4393,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4162,6 +4405,11 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "à¤à¤¨à¤¿à¤®à¥‡à¤¶à¤¨ गà¥à¤£à¥¤"
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4189,6 +4437,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "लेखक:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "संसà¥à¤•रण:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4388,7 +4645,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4602,6 +4859,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "नई"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "à¤à¤¡à¤¿à¤Ÿ टà¥à¤°à¤¾à¤‚जिशन..."
@@ -4938,10 +5200,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "डाउनलोड"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "कनेकà¥à¤Ÿ नहीं कर सकते।"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4950,15 +5220,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "कोई जवाब नहीं।"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
+msgid "Can't resolve."
+msgstr "हल नहीं कर सकते।"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4986,6 +5260,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "विफल:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5086,7 +5364,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5129,6 +5411,10 @@ msgstr "लोड..."
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5137,8 +5423,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5373,15 +5659,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5435,6 +5722,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5446,19 +5734,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "चयनित नोड या संकà¥à¤°à¤®à¤£ निकालें।"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "चयनित फ़ाइलें हटाà¤à¤‚?"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "चयनित नोड या संकà¥à¤°à¤®à¤£ निकालें।"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5690,6 +5987,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "नोड पà¥à¤µà¤¾à¤‡à¤‚ट जोड़ें"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "चाबी यहां डालें"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5702,6 +6009,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "छोटा करो"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "छोटा करो"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "छोटा करो"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "छोटा करो"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "छोटा करो"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "छोटा करो"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5944,6 +6297,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "à¤à¤• नया बनाà¤à¤‚"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "à¤à¤• नया बनाà¤à¤‚"
@@ -5977,7 +6335,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6038,13 +6396,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "सदसà¥à¤¯à¤¤à¤¾ बनाà¤à¤‚"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6098,7 +6469,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6372,7 +6742,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6682,6 +7053,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr "संसाधन"
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "बेज़ियर पॉइंटà¥à¤¸ को सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरित करें"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "अंक बनाà¤à¤‚।"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6891,7 +7280,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "ढूंढें"
@@ -6922,6 +7311,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "ऑनलाइन डॉकà¥à¤¸"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -7048,8 +7442,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -7082,10 +7476,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7239,6 +7629,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7259,40 +7668,46 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Size"
+msgid "Size:"
msgstr "आकार: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "कॉल"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "विशेषता"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7448,6 +7863,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "फ़ेवरेट टॉगल कीजिये"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7463,6 +7883,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "% à¤à¤¸ में परिवरà¥à¤¤à¤¿à¤¤ करें"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7476,26 +7901,24 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
-msgstr ""
+#, fuzzy
+msgid "Snap Nodes to Floor"
+msgstr "आयात करने के लिठनोड (à¤à¤¸) का चयन करें"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7592,6 +8015,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7893,11 +8320,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7918,170 +8340,584 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "संसà¥à¤•रण:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+#, fuzzy
+msgid "No colors found."
+msgstr "सब-रिसोरà¥à¤¸ नहीं मिला."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "कोनà¥à¤¸à¥à¤Ÿà¤¨à¥à¤Ÿ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "सिरà¥à¤« कोनà¥à¤¸à¥à¤Ÿà¤¨à¥à¤Ÿ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+#, fuzzy
+msgid "No fonts found."
+msgstr "सब-रिसोरà¥à¤¸ नहीं मिला."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No icons found."
+msgstr "सब-रिसोरà¥à¤¸ नहीं मिला."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "सब-रिसोरà¥à¤¸ नहीं मिला."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "असà¥à¤¸à¥‡à¤Ÿ (पà¥à¤¨:) इंपोरà¥à¤Ÿ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+#, fuzzy
+msgid "Updating the editor"
+msgstr "संपादक से बाहर निकलें?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "विशà¥à¤²à¥‡à¤·à¤£"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "फिलà¥à¤Ÿà¤°:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "Select by data type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "बंद कर दिया गया है"
+msgid "Collapse types."
+msgstr "सभी ढहाय"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Expand types."
+msgstr "सभी बढाय"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿ फ़ाइल का चयन करें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "बंद कर दिया गया है"
+msgid "Deselect All"
+msgstr "सभी को डिसà¥à¤•नेकà¥à¤Ÿ करें"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+#, fuzzy
+msgid "Import Selected"
+msgstr "सीन इंपोरà¥à¤Ÿ किजिये"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "आइटम निकालें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "आइटम निकालें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "आइटम निकालें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "आइटम निकालें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "आइटम निकालें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "आइटम निकालें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "पसंदीदा में जोड़ें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "कोनà¥à¤¸à¥à¤Ÿà¤¨à¥à¤Ÿ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "पà¥à¤µà¤¾à¤‡à¤‚ट जोड़ें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "पà¥à¤µà¤¾à¤‡à¤‚ट जोड़ें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "आइटम निकालें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "आइटम निकालें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "आइटम निकालें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "अमानà¥à¤¯ फ़ाइल, ऑडियो बस लेआउट."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ का पà¥à¤°à¤¬à¤‚धन करें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "टेकà¥à¤¸à¥à¤Ÿ संपादित करें:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Add Type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Add Item:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Add StyleBox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "बंद कर दिया गया है"
+msgid "Remove Items:"
+msgstr "आइटम निकालें"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
-msgstr ""
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "आइटम निकालें"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Remove All Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "आइटम निकालें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "नोड का नाम:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "सीन इंपोरà¥à¤Ÿ किजिये"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "चूक"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "संपादक"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "खोज रिपà¥à¤²à¥‡à¤¸à¤®à¥‡à¤‚ट संसाधन:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Confirm Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#, fuzzy
+msgid "Override Item"
+msgstr "मौजूदा के ऊपर लिखे"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "तà¥à¤°à¤¿à¤•ोण जोड़ें"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+#, fuzzy
+msgid "Node Types:"
+msgstr "नोड का नाम:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "पà¥à¤°à¤¾à¤¯à¤¿à¤• लोड कीजिये"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+#, fuzzy
+msgid "Override All"
+msgstr "अधिभावी करता है:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
+msgid "Theme:"
msgstr "खोलो इसे"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "निरà¥à¤¯à¤¾à¤¤ टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ का पà¥à¤°à¤¬à¤‚धन करें ..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "पूरà¥à¤µ दरà¥à¤¶à¤¨:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "चूक"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "वापस दृशà¥à¤¯"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "बंद कर दिया गया है"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "बंद कर दिया गया है"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "बंद कर दिया गया है"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "अमानà¥à¤¯ फ़ाइल, ऑडियो बस लेआउट."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -8254,6 +9090,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8597,11 +9437,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9437,8 +10272,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "पà¥à¤°à¥‹à¤ªà¤°à¥à¤Ÿà¥€:"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9552,7 +10388,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9560,7 +10396,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9568,11 +10404,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9647,7 +10483,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
#: editor/project_manager.cpp
@@ -9681,6 +10517,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "ज़िप फ़ाइल खोलने में तà¥à¤°à¥à¤Ÿà¤¿, पà¥à¤°à¤¾à¤°à¥‚प में नहीं।"
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "निमà¥à¤¨ फ़ाइलों का निसà¥à¤¸à¤¾à¤°à¤£ नहीं हो पाया:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "पैकेज सफलतापूरà¥à¤µà¤• सà¥à¤¥à¤¾à¤ªà¤¿à¤¤!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9827,15 +10675,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9863,7 +10707,7 @@ msgstr "पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ मैनेजर"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "परियोजना के संसà¥à¤¥à¤¾à¤ªà¤•"
#: editor/project_manager.cpp
@@ -9876,10 +10720,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "परियोजना"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "परियोजना"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "परियोजना के संसà¥à¤¥à¤¾à¤ªà¤•"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9889,18 +10748,41 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "इंपोरà¥à¤Ÿ डॉक"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "मिटाना"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "मिटाना"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr ""
+msgid "About"
+msgstr "के बारे में"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "असà¥à¤¸à¥‡à¤Ÿ संगà¥à¤°à¤¹"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9911,8 +10793,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "नोड फिलà¥à¤Ÿà¤° किजिये"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9922,6 +10809,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9964,6 +10855,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10103,19 +10998,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "टà¥à¤°à¤¾à¤‚जिशन जोड़ें"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10385,6 +11281,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10553,11 +11453,29 @@ msgid "Delete node \"%s\"?"
msgstr "को हटा दें"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10615,6 +11533,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10663,10 +11585,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10945,6 +11863,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -11019,6 +11943,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11304,6 +12232,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "निरà¥à¤¯à¤¾à¤¤ मेष पà¥à¤¸à¥à¤¤à¤•ालय"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "निरà¥à¤¯à¤¾à¤¤..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11347,6 +12285,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "सभी खंड"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11595,6 +12538,16 @@ msgid "Add Output Port"
msgstr "पसंदीदा:"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "%s का टाइप बदले"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "शबà¥à¤¦ बदलें मूलà¥à¤¯"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11709,6 +12662,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "पसंदीदा:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11938,10 +12896,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11971,6 +12925,40 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "निरà¥à¤¯à¤¾à¤¤..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "अनइंसà¥à¤Ÿà¤¾à¤² करें"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "दरà¥à¤ªà¤£ को पà¥à¤¨à¤ƒ पà¥à¤°à¤¾à¤ªà¥à¤¤ करना, कृपया पà¥à¤°à¤¤à¥€à¤•à¥à¤·à¤¾ करें ..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "कसà¥à¤Ÿà¤® सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ चला रहा है..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12068,6 +13056,45 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"फ़ाइले सà¥à¤•ैन कर रहा है,\n"
+"कृपया रà¥à¤•िये..."
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12080,6 +13107,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12094,6 +13125,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12113,11 +13157,53 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "पैकेज में है:"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "जोड़ने..."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "पसंदीदा:"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "उपपà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ शà¥à¤°à¥‚ नहीं कर सका!"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12147,10 +13233,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr ""
@@ -12159,15 +13241,48 @@ msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "फ़ोलà¥à¤¡à¤° नही बना सकते."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "तà¥à¤°à¥à¤Ÿà¤¿ बचत टाइलसेट!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12522,6 +13637,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12591,12 +13713,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12645,6 +13819,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12797,21 +13975,101 @@ msgid "Invalid comparison function for that type."
msgstr "गलत फॉणà¥à¤Ÿ का आकार |"
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Singleton"
+#~ msgstr "सिनà¥à¤—लटन"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "पà¥à¤°à¥‹à¤«à¤¼à¤¾à¤‡à¤² '%s' को मिटाà¤à¤‚? (इसे अंडू नहीं किया जा सकता है)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "सकà¥à¤°à¤¿à¤¯ पà¥à¤°à¥‹à¤ªà¤°à¤Ÿà¤¿à¤œ:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "सकà¥à¤°à¤¿à¤¯ फ़िचरà¥à¤¸:"
+
+#~ msgid "Unset"
+#~ msgstr "अनà¥à¤¸à¥‡à¤Ÿ"
+
+#~ msgid "Class Options"
+#~ msgstr "कà¥à¤²à¤¾à¤¸ विकलà¥à¤ª"
+
+#~ msgid "Set"
+#~ msgstr "सेट करे"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "सहेजा गया% संशोधित संसाधन (à¤à¤¸)"
+
+#~ msgid "Q&A"
+#~ msgstr "Q&A"
+
+#~ msgid "Status:"
+#~ msgstr "सà¥à¤¥à¤¿à¤¤à¤¿:"
+
+#~ msgid "Edit:"
+#~ msgstr "संपादित:"
+
+#~ msgid "Redownload"
+#~ msgstr "रीडाउनलोड करें"
+
+#~ msgid "(Installed)"
+#~ msgstr "(सà¥à¤¥à¤¾à¤ªà¤¿à¤¤)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(लापता)"
+
+#~ msgid "Redirect Loop."
+#~ msgstr "लूप को रीडायरेकà¥à¤Ÿ करते हैं।"
+
+#~ msgid "Download Complete."
+#~ msgstr "पूरा डाउनलोड करें।"
+
+#~ msgid "Remove Template"
+#~ msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿ निकालें"
+
+#~ msgid "Download Templates"
+#~ msgstr "टेमà¥à¤ªà¤²à¥‡à¤Ÿà¥à¤¸ डाउनलोड करें"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "सूची से दरà¥à¤ªà¤£ चà¥à¤¨à¥‡à¤‚: (शिफà¥à¤Ÿ +कà¥à¤²à¤¿à¤•: बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° में खà¥à¤²à¤¾)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "टà¥à¤°à¥ˆà¤¶ में ले जाà¤à¤‚"
+
+#, fuzzy
+#~ msgid "Size"
+#~ msgstr "आकार: "
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "à¤à¤• à¤à¤¨à¥€à¤®à¥‡à¤¶à¤¨ खिलाड़ी खà¥à¤¦ को चेतन नहीं कर सकता, केवल अनà¥à¤¯ खिलाड़ी।"
@@ -12847,18 +14105,12 @@ msgstr ""
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "वरà¥à¤¤à¤®à¤¾à¤¨ दृशà¥à¤¯ कभी नहीं बचाया गया था, कृपया इसे चलाने से पहले बचाने के लिठ।"
-#~ msgid "Not in resource path."
-#~ msgstr "रेसोरà¥à¤¸ पाथ में नहीं."
-
#~ msgid "Revert"
#~ msgstr "वापस लौटना"
#~ msgid "This action cannot be undone. Revert anyway?"
#~ msgstr "इस कारà¥à¤°à¤µà¤¾à¤ˆ को पूरà¥à¤µà¤µà¤¤ नहीं किया जा सकता । वैसे भी वापस?"
-#~ msgid "Revert Scene"
-#~ msgstr "वापस दृशà¥à¤¯"
-
#~ msgid "Issue Tracker"
#~ msgstr "मà¥à¤¦à¥à¤¦à¤¾ पर नज़र रखने वाला"
diff --git a/editor/translations/hr.po b/editor/translations/hr.po
index d737bb04b7..ea48ef0246 100644
--- a/editor/translations/hr.po
+++ b/editor/translations/hr.po
@@ -9,7 +9,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2021-04-11 22:02+0000\n"
+"PO-Revision-Date: 2021-07-16 05:47+0000\n"
"Last-Translator: LeoClose <leoclose575@gmail.com>\n"
"Language-Team: Croatian <https://hosted.weblate.org/projects/godot-engine/"
"godot/hr/>\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.6-dev\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -41,7 +41,7 @@ msgstr "Neispravan unos %i (nije uspio) u izrazu"
#: core/math/expression.cpp
msgid "self can't be used because instance is null (not passed)"
-msgstr "self nije moguće koristiti jer je jedinka null (nije uspio)"
+msgstr "self se ne može koristiti jer instanca je null (nije prosljeđena)"
#: core/math/expression.cpp
msgid "Invalid operands to operator %s, %s and %s."
@@ -513,7 +513,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -539,7 +540,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -560,6 +562,10 @@ msgid "Go to Previous Step"
msgstr "Idi na prethodni korak"
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimiraj animaciju"
@@ -576,6 +582,11 @@ msgid "Use Bezier Curves"
msgstr "Koristi Bezierove krivulje"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Zalijepi Staze"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Anim. optimizator"
@@ -624,7 +635,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -710,12 +721,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zumiraj"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -772,11 +785,9 @@ msgid "Add"
msgstr "Dodaj"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -826,6 +837,7 @@ msgstr "Ne mogu spojiti signal"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -895,7 +907,8 @@ msgid "Edit..."
msgstr "Uredi..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Idi na metodu"
#: editor/create_dialog.cpp
@@ -910,6 +923,14 @@ msgstr "Promijeni"
msgid "Create New %s"
msgstr "Napravi novi %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -931,8 +952,8 @@ msgstr "Pretraga:"
msgid "Matches:"
msgstr "Podudaranja:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1010,8 +1031,9 @@ msgstr "Vlasnici:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "Ukloni odabrane datoteke iz projekta? (Neće ih biti moguće vratiti)"
#: editor/dependency_editor.cpp
@@ -1019,8 +1041,9 @@ msgstr "Ukloni odabrane datoteke iz projekta? (Neće ih biti moguće vratiti)"
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Datoteke koje se uklanjaju su nužne drugim resursima kako bi ispravno "
"radili.\n"
@@ -1068,7 +1091,7 @@ msgstr "IstraživaÄ napuÅ¡tenih resursa"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1189,28 +1212,39 @@ msgstr "Komponente"
msgid "Licenses"
msgstr "Licence"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "Pogreška prilikom otvaranja datoteke paketa, nije u ZIP formatu."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
+msgstr "Autoload '%s' već postoji!"
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "(and %s more files)"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paket uspješno instaliran!"
#: editor/editor_asset_installer.cpp
@@ -1218,17 +1252,14 @@ msgstr "Paket uspješno instaliran!"
msgid "Success!"
msgstr "Uspjeh!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr ""
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instaliraj"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
-msgstr ""
+#, fuzzy
+msgid "Asset Installer"
+msgstr "Instaliraj"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
@@ -1291,8 +1322,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "Opcije Klase"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1371,7 +1403,7 @@ msgstr "Dodaj Kontroler"
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1458,6 +1490,14 @@ msgid "Can't add autoload:"
msgstr "Nije moguće dodati autoload:"
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Dodaj Autoload"
@@ -1473,16 +1513,16 @@ msgid "Node Name:"
msgstr "Naziv ÄŒvora(node):"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Ime"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Sajngleton"
+msgid "Global Variable"
+msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1498,7 +1538,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1637,7 +1677,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1669,15 +1749,17 @@ msgid "Enable Contextual Editor"
msgstr "Omogući Kontekstni Editor"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+#, fuzzy
+msgid "Class Properties:"
msgstr "Omogućena Svojstva:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+#, fuzzy
+msgid "Main Features:"
msgstr "Omogućene ZnaÄajke:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1696,47 +1778,58 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "UÄitaj Zadano"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Trenutni Profil:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "UÄini Aktualnim"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Brisanje Profila"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Novo"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "ObriÅ¡i Bezier ToÄku"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Dostupni Profili:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "UÄini Aktualnim"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
-msgstr "Uvoz"
+msgstr "Uvezi"
#: editor/editor_feature_profile.cpp editor/project_export.cpp
msgid "Export"
msgstr "Izvoz"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Dostupni Profili:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Trenutni Profil:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+#, fuzzy
+msgid "Extra Options:"
msgstr "Opcije Klase"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Novi naziv profila:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Brisanje Profila"
+msgid "New profile name:"
+msgstr "Novi naziv profila:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1759,7 +1852,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1813,9 +1906,10 @@ msgid "Open a File or Directory"
msgstr "Otvori datoteku ili direktorij"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Spremi"
@@ -1896,8 +1990,7 @@ msgid "Directories & Files:"
msgstr "Direktoriji i datoteke:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Pregled:"
@@ -1968,7 +2061,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2053,7 +2146,7 @@ msgstr "Metoda"
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2069,8 +2162,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2086,7 +2180,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2150,7 +2244,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2344,18 +2439,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2525,7 +2624,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2706,6 +2805,11 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Trenutni Profil:"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2838,13 +2942,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2852,6 +2955,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2860,8 +2967,9 @@ msgid "Community"
msgstr "Zajednica"
#: editor/editor_node.cpp
-msgid "About"
-msgstr ""
+#, fuzzy
+msgid "About Godot"
+msgstr "U vezi s"
#: editor/editor_node.cpp
msgid "Support Godot Development"
@@ -2957,6 +3065,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2983,7 +3099,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3024,6 +3140,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "UÄini Aktualnim"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3055,6 +3176,10 @@ msgstr "Upozorenje!"
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3079,21 +3204,19 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr ""
+#, fuzzy
+msgid "Author"
+msgstr "Autori"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3101,11 +3224,12 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "Vrijeme/vremena: "
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3125,6 +3249,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3166,12 +3300,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3189,22 +3317,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3218,37 +3369,21 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Spoji '%s' na '%s'"
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3283,7 +3418,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3303,64 +3438,71 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Datoteka '%s' ne postoji."
+
+#: editor/export_template_manager.cpp
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Cannot remove temporary file:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3368,7 +3510,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3378,135 +3524,167 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+#, fuzzy
+msgid "Open Folder"
+msgstr "Otvori datoteku"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid "Official export templates aren't available for development builds."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3632,30 +3810,60 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Uvoz Profila"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Move to Trash"
-msgstr "Premjesti Autoload"
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3735,10 +3943,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3965,52 +4169,51 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Omogućena Svojstva:"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Omogućena Svojstva:"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4026,7 +4229,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4034,6 +4241,11 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Omogućena Svojstva:"
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4061,6 +4273,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4260,7 +4481,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4474,6 +4695,11 @@ msgid "Animation"
msgstr "Animacija"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Novo"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Uredi Tranzicije..."
@@ -4810,10 +5036,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4822,15 +5056,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4858,6 +5096,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4958,7 +5200,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5001,6 +5247,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5009,8 +5259,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5244,15 +5494,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5306,6 +5557,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5317,19 +5569,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5561,6 +5819,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Unesite kljuÄ ovdje"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5573,6 +5840,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Odzumiraj"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Odzumiraj"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Odzumiraj"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Odzumiraj"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Odzumiraj"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Odzumiraj"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5813,6 +6126,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5845,7 +6162,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5904,13 +6221,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5964,7 +6293,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6236,7 +6564,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6540,6 +6869,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Pomakni Bezier ToÄke"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Pomakni Bezier ToÄke"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6743,7 +7090,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6774,6 +7121,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6896,8 +7248,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6930,10 +7282,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7085,6 +7433,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7105,39 +7472,45 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Promijeni"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Promijeni"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7293,6 +7666,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Prikaži/sakrij favorite"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7308,6 +7686,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7321,7 +7703,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7329,18 +7711,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7437,6 +7816,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7726,11 +8109,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7751,164 +8129,546 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Opis:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Odspoji sve"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Brisati odabrani kljuÄ/odabrane kljuÄeve"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Preimenuj zvuÄnu sabirnicu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "ObriÅ¡i Bezier ToÄku"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "ObriÅ¡i Bezier ToÄku"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Dodaj Bezier ToÄku"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Dodaj Bezier ToÄku"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Preimenuj Autoload"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "ObriÅ¡i Bezier ToÄku"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Pomakni Bezier ToÄke"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Naziv ÄŒvora(node):"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "UÄitaj Zadano"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Traži zamjenu resursa:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Naziv ÄŒvora(node):"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "UÄitaj Zadano"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Add, remove, organize and import Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+#, fuzzy
+msgid "Add Preview"
+msgstr "Pregled:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Mesh2D Pregled"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8077,6 +8837,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8404,11 +9168,6 @@ msgid "Commit Changes"
msgstr "Promijeni"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9229,8 +9988,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "Omogućena Svojstva:"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9344,7 +10104,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9352,7 +10112,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9360,11 +10120,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9438,8 +10198,9 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
-msgstr ""
+#, fuzzy
+msgid "Invalid project name."
+msgstr "Nevažeće ime."
#: editor/project_manager.cpp
msgid "Couldn't create folder."
@@ -9472,6 +10233,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Pogreška prilikom otvaranja datoteke paketa, nije u ZIP formatu."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Paket uspješno instaliran!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9616,15 +10389,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9651,7 +10420,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9663,10 +10432,23 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Uredi vezu:"
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9675,11 +10457,25 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Uvoz Profila"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "ObriÅ¡i Bezier ToÄku"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr "U vezi s"
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9687,6 +10483,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9697,8 +10501,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9708,6 +10516,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9749,6 +10561,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9888,19 +10704,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Uredi Tranzicije..."
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10169,6 +10986,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10332,11 +11153,29 @@ msgid "Delete node \"%s\"?"
msgstr "ObriÅ¡i Ävor \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10392,6 +11231,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10438,10 +11281,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10712,6 +11551,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10781,6 +11626,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11064,6 +11913,15 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Izvoz"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11105,6 +11963,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Izbriši Odabir"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11350,6 +12213,16 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Promijeni tip %s"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Promijeni Ime Animacije:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11461,6 +12334,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Brisati odabrani kljuÄ/odabrane kljuÄeve"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11686,10 +12564,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11719,6 +12593,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11815,6 +12717,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11827,6 +12765,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11841,6 +12783,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11860,11 +12815,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11893,27 +12886,52 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Trenutni Profil:"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12261,6 +13279,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12330,12 +13355,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12384,6 +13461,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12531,21 +13612,45 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Varijacije se mogu dodijeliti samo u vertex funkciji."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Varijacije se mogu dodijeliti samo u vertex funkciji."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
+msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Konstante se ne mogu mijenjati."
+#~ msgid "Singleton"
+#~ msgstr "Sajngleton"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Premjesti Autoload"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "Animator ne može animirati sebe, samo druge objekte."
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index 85933dc05d..3af983ff18 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -544,7 +544,8 @@ msgstr "Másodperc"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -570,7 +571,8 @@ msgstr "Kijelölés Nyújtása"
msgid "Scale From Cursor"
msgstr "Nyújtás a Kurzortól"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Kijelölés Megkettőzése"
@@ -591,6 +593,11 @@ msgid "Go to Previous Step"
msgstr "Ugrás az Előző Lépésre"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Visszaállítás"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Animáció Optimalizálása"
@@ -607,6 +614,11 @@ msgid "Use Bezier Curves"
msgstr "Bézier görbék használata"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Sávok beillesztése"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Animáció optimalizáló"
@@ -655,7 +667,7 @@ msgid "Select Tracks to Copy"
msgstr "Másolandó nyomvonalak kiválasztása"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -741,12 +753,14 @@ msgid "Toggle Scripts Panel"
msgstr "Szkript panel váltása"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Nagyítás"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -803,11 +817,9 @@ msgid "Add"
msgstr "Hozzáadás"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -857,6 +869,7 @@ msgstr "Nem lehet csatlakoztatni a jelet"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -926,7 +939,8 @@ msgid "Edit..."
msgstr "Szerkesztés..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Ugrás metódusra"
#: editor/create_dialog.cpp
@@ -941,6 +955,14 @@ msgstr "Változtatás"
msgid "Create New %s"
msgstr "Új %s létrehozása"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Nincs találat a következőre: \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -962,8 +984,8 @@ msgstr "Keresés:"
msgid "Matches:"
msgstr "Egyezések:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1039,19 +1061,23 @@ msgid "Owners Of:"
msgstr "Tulajdonosai:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Eltávolítja a kiválasztott fájlokat a projektből? (nem visszavonható)\n"
"Az eltávolított fájlokat a lomtárban találja, ha visszaállítaná őket."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Az eltávolítandó fájlokat szükségelik más források a működésükhöz.\n"
"Eltávolítja őket ennek ellenére? (nem visszavonható)\n"
@@ -1099,7 +1125,7 @@ msgstr "Ãrva Forrás KezelÅ‘"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1224,28 +1250,41 @@ msgstr "Összetevők"
msgid "Licenses"
msgstr "Licencek"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Hiba a csomagfájl megnyitása során, nem ZIP formátumú."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Hiba a csomagfájl megnyitása során (nem ZIP formátumú)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "'%s' (már létezik)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Eszközök Kicsomagolása"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "A következő fájlokat nem sikerült kibontani a csomagból:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "És további %s fájl."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "A csomag telepítése sikeres volt!"
#: editor/editor_asset_installer.cpp
@@ -1253,16 +1292,13 @@ msgstr "A csomag telepítése sikeres volt!"
msgid "Success!"
msgstr "Siker!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Csomag tartalma:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Telepítés"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Csomagtelepítő"
#: editor/editor_audio_buses.cpp
@@ -1326,7 +1362,8 @@ msgid "Bypass"
msgstr "Kitérés"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Busz beállítások"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1406,7 +1443,7 @@ msgstr "Busz Hozzáadása"
msgid "Add a new Audio Bus to this layout."
msgstr "Új hangbusz hozzáadása ehhez az elrendezéshez."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1494,6 +1531,15 @@ msgid "Can't add autoload:"
msgstr "Nem lehet hozzáadni az automatikus betöltést:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "A fájl nem létezik."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "AutoLoad Hozzáadása"
@@ -1509,16 +1555,17 @@ msgid "Node Name:"
msgstr "Node neve:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Név"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Egyke"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Változó átnevezése"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Paraméterek Beillesztése"
@@ -1534,7 +1581,7 @@ msgstr "Helyi módosítások eltárolása..."
msgid "Updating scene..."
msgstr "Scene frissítése..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[üres]"
@@ -1689,8 +1736,49 @@ msgid "Import Dock"
msgstr "Dock importálása"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Törli a(z) '%s' profilt? (nem visszavonható)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Jelenlegi)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1723,15 +1811,18 @@ msgid "Enable Contextual Editor"
msgstr "Környezetfüggő szerkesztő engedélyezése"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Engedélyezett tulajdonságok:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Összes tulajdonság becsukása"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Engedélyezett funkciók:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Funkciók"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Engedélyezett osztályok:"
#: editor/editor_feature_profile.cpp
@@ -1751,25 +1842,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Hiba történt a profil útvonalba mentése során: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Nincs beállítva"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Visszaállítás Alapértelmezettre"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Jelenlegi profil:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Tegye jelenlegivé"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Profil törlése"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Új"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Csempe eltávolítása"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Elérhető profilok:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Tegye jelenlegivé"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importálás"
@@ -1778,20 +1878,22 @@ msgid "Export"
msgstr "Exportálás"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Elérhető profilok:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Jelenlegi profil:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Osztály beállításai"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Osztály beállítások:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Új profilnév:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Profil törlése"
+msgid "New profile name:"
+msgstr "Új profilnév:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1814,7 +1916,8 @@ msgid "Select Current Folder"
msgstr "Aktuális Mappa Kiválasztása"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Fájl Létezik, Felülírja?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1868,9 +1971,10 @@ msgid "Open a File or Directory"
msgstr "Fájl vagy Könyvtár Megnyitása"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Mentés"
@@ -1951,8 +2055,7 @@ msgid "Directories & Files:"
msgstr "Könyvtárak és Fájlok:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Előnézet:"
@@ -2023,7 +2126,7 @@ msgstr "Téma tulajdonságai"
msgid "Enumerations"
msgstr "Felsorolások"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstansok"
@@ -2112,7 +2215,7 @@ msgstr "Metódus"
msgid "Signal"
msgstr "Jelzés"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Ãllandó"
@@ -2128,9 +2231,10 @@ msgstr "Téma tulajdonság"
msgid "Property:"
msgstr "Tulajdonság:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Beállít"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2145,7 +2249,7 @@ msgid "Copy Selection"
msgstr "Kijelölés másolása"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2209,7 +2313,8 @@ msgid "Imported resources can't be saved."
msgstr "Az importált erőforrások nem menthetők."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2437,18 +2542,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Bezárás előtt menti a '%s'-n végzett módosításokat?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "%s módosított erőforrás mentve."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Egy gyökér node szükséges a jelenet mentéséhez."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Scene Mentése Másként..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Ezt a műveletet nem lehet végrehajtani egy Scene nélkül."
@@ -2651,7 +2761,7 @@ msgstr "Elrendezés Törlése"
msgid "Default"
msgstr "Alapértelmezett"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Megjelenítés a fájlrendszerben"
@@ -2832,6 +2942,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Ãrva erÅ‘forrás-kezelÅ‘..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Projekt átnevezése"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Kilépés a projektlistába"
@@ -2982,20 +3097,24 @@ msgstr "Exportálási sablonok kezelése..."
msgid "Help"
msgstr "Súgó"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Online Dokumentáció"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Dokumentáció megnyitása"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Kérdések és válaszok"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Hiba bejelentése"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Visszajelzé Küldése s A Dokumentumokról"
@@ -3004,7 +3123,8 @@ msgid "Community"
msgstr "Közösség"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Névjegy"
#: editor/editor_node.cpp
@@ -3103,6 +3223,16 @@ msgid "Manage Templates"
msgstr "Sablonok kezelése"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Telepítés Fájlból"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Válasszon Ki Egy Forrás Mesh-t:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3133,7 +3263,7 @@ msgstr "Sablonok Importálása ZIP Fájlból"
msgid "Template Package"
msgstr "Sabloncsomag"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Könyvtár Exportálása"
@@ -3176,6 +3306,11 @@ msgid "Select"
msgstr "Kiválasztás"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Aktuális Mappa Kiválasztása"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "2D szerkesztő megnyitása"
@@ -3207,6 +3342,11 @@ msgstr "Figyelmeztetés!"
msgid "No sub-resources found."
msgstr "Nem található alerőforrás."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Nem található alerőforrás."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Háló Előnézetek Létrehozása"
@@ -3231,33 +3371,34 @@ msgstr "Telepített Bővítmények:"
msgid "Update"
msgstr "Frissítés"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Verzió:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Szerző:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Ãllapot:"
+#, fuzzy
+msgid "Author"
+msgstr "Szerzők"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Szerkesztés:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Mérés:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Keretidő (mp)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Ãtlagos IdÅ‘ (mp)"
#: editor/editor_profiler.cpp
@@ -3277,6 +3418,16 @@ msgid "Self"
msgstr "Saját"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Keret #:"
@@ -3318,12 +3469,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3341,40 +3486,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Új szkript"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Szkript kinyitása"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Új %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Egyedivé tétel"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Beillesztés"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Ãtalakítás erre: %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3403,6 +3514,47 @@ msgstr "Új érték:"
msgid "Add Key/Value Pair"
msgstr "Kulcs/érték pár hozzáadása"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Egyedivé tétel"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Beillesztés"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Ãtalakítás erre: %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Új %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Új szkript"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Szkript kinyitása"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3437,7 +3589,7 @@ msgid "Did you forget the '_run' method?"
msgstr "Elfelejtette a '_run' metódust?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3457,114 +3609,69 @@ msgid "Import From Node:"
msgstr "Importálás Node-ból:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Letöltés újra"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Eltávolítás"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Telepítve)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Letöltés"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Hiányzik)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Jelenlegi)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Nincs '%s' fájl."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Tükrök letöltése, kérjük várjon..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Eltávolítja a(z) '%s' verziójú sablont?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Nem nyitható meg az export sablon zip."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Érvénytelen version.txt formátum a sablonokban: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Nem található version.txt a sablonokban."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Hiba történt a sablonok elérési útjának létrehozásakor:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Export Sablonok Kibontása"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importálás:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Hiba történt a tükörlista lekérésekor."
+msgid "Error requesting URL:"
+msgstr "Hiba az URL kérésekor:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Hiba történt a tükörlista JSON elemzésénél. Kérjük, jelentse ezt a problémát!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Csatlakozás Tükörhöz..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Nem található letöltési link ehhez a verzióhoz. Közvetlen letöltés csak a "
-"hivatalos kiadásokhoz elérhető."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "A gazdagép neve nem oldható meg:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Nem megoldható."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Nem lehet csatlakozni a kiszolgálóhoz:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Nem lehet csatlakozni."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Nincs válasz a kiszolgálótól:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Nincs válasz."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "A kérés sikertelen."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Ciklus átiránítása."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Kérés sikertelen, túl sok átirányítás"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Sikertelen:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "A kérés sikertelen."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "A Letöltés Befejeződött."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3579,12 +3686,26 @@ msgstr ""
"A problémás sablonok archívuma megtalálható a következő helyen: '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Hiba az URL kérésekor:"
+msgid "Error getting the list of mirrors."
+msgstr "Hiba történt a tükörlista lekérésekor."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Csatlakozás Tükörhöz..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Hiba történt a tükörlista JSON elemzésénél. Kérjük, jelentse ezt a problémát!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Nem található letöltési link ehhez a verzióhoz. Közvetlen letöltés csak a "
+"hivatalos kiadásokhoz elérhető."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3629,45 +3750,137 @@ msgid "SSL Handshake Error"
msgstr "SSL-Kézfogás Hiba"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Nem nyitható meg az export sablon zip."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Érvénytelen version.txt formátum a sablonokban: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Nem található version.txt a sablonokban."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Hiba történt a sablonok elérési útjának létrehozásakor:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Export Sablonok Kibontása"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importálás:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Eltávolítja a(z) '%s' verziójú sablont?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Export Sablon Kezelő"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Jelenlegi Verzió:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Telepített Verziók:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Fájl megnyitása"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Eltávolítás"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Letöltési Hiba"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Telepítés Fájlból"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Sablon Eltávolítása"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Sablonok Importálása ZIP Fájlból"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Mégse"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Nem nyitható meg az export sablon zip."
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Válasszon sablonfájlt"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Telepített Verziók:"
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Godot export sablonok"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Eltávolítás"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Export Sablon Kezelő"
+msgid "Select Template File"
+msgstr "Válasszon sablonfájlt"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Sablonok Letöltése"
+msgid "Godot Export Templates"
+msgstr "Godot export sablonok"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
-"Tükör kiválasztása a listából: (Shift + kattintás: megnyitás a böngészőben)"
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3794,29 +4007,60 @@ msgstr "Új szkript..."
msgid "New Resource..."
msgstr "Új erőforrás..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Összes kinyitása"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Összes becsukása"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Megkettőzés..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Fájlok keresése"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Lomtárba Helyezés"
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Megkettőzés..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Ãtnevezés..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Előző mappa/fájl"
@@ -3898,10 +4142,6 @@ msgstr "Keresés..."
msgid "Replace..."
msgstr "Csere..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Mégse"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Keres: "
@@ -4126,53 +4366,55 @@ msgid "Failed to load resource."
msgstr "Nem sikerült betölteni az erőforrást."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Összes tulajdonság kinyitása"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Tulajdonságok"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Összes tulajdonság becsukása"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Mentés Másként..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Tulajdonságok"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Paraméterek Másolása"
+msgid "Make Sub-Resources Unique"
+msgstr "Tegye Az Al-Erőforrásokat Egyedivé"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Erőforrás vágólap szerkesztése"
+msgid "Create a new resource in memory and edit it."
+msgstr "Új erőforrás létrehozása a memóriában, majd annak szerkesztése."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Erőforrás Másolása"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Meglévő erőforrás betöltése a lemezről, majd annak szerkesztése."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Integrálás"
+msgid "Save the currently edited resource."
+msgstr "A jelenleg szerkesztett erőforrás elmentése."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Tegye Az Al-Erőforrásokat Egyedivé"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Mentés Másként..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Megnyitás Súgóban"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Nincs az erőforrás elérési útban."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Új erőforrás létrehozása a memóriában, majd annak szerkesztése."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Erőforrás vágólap szerkesztése"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Meglévő erőforrás betöltése a lemezről, majd annak szerkesztése."
+msgid "Copy Resource"
+msgstr "Erőforrás Másolása"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "A jelenleg szerkesztett erőforrás elmentése."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Integrálás"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4187,14 +4429,24 @@ msgid "History of recently edited objects."
msgstr "A nemrég módosított objektumok előzményei."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Objektumtulajdonságok."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Dokumentáció megnyitása"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Dokumentáció megnyitása"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Tulajdonságok szűrése"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Objektumtulajdonságok."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Néhány változtatás elveszhet!"
@@ -4222,6 +4474,15 @@ msgstr "Bővítmény neve:"
msgid "Subfolder:"
msgstr "Almappa:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Szerző:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Verzió:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Nyelv:"
@@ -4424,7 +4685,8 @@ msgid "Blend:"
msgstr "Keverés:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "A paraméter megváltozott"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4639,6 +4901,11 @@ msgid "Animation"
msgstr "Animáció"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Új"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Ãtmenetek szerkesztése..."
@@ -4975,10 +5242,18 @@ msgid "View Files"
msgstr "Fájlok Megtekintése"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Letöltés"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Kapcsolat hiba, kérjük próbálja meg újra."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Nem lehet csatlakozni."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Nem lehet csatlakozni a kiszolgálóhoz:"
@@ -4987,16 +5262,20 @@ msgid "No response from host:"
msgstr "Nincs válasz a kiszolgálótól:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Nincs válasz."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "A gazdagép neve nem oldható meg:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Kérés sikertelen, visszatérési kód:"
+msgid "Can't resolve."
+msgstr "Nem megoldható."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "A kérés sikertelen."
+msgid "Request failed, return code:"
+msgstr "Kérés sikertelen, visszatérési kód:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5023,6 +5302,10 @@ msgid "Timeout."
msgstr "Időtúllépés."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Sikertelen:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
"Rossz letöltési hash, a program feltételezi, hogy a fájlt rosszindulatilag "
@@ -5125,8 +5408,12 @@ msgid "All"
msgstr "Mind"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Nincs találat a következőre: \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5168,6 +5455,10 @@ msgstr "Betöltés..."
msgid "Assets ZIP File"
msgstr "Eszköz ZIP Fájl"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
#, fuzzy
msgid ""
@@ -5180,9 +5471,10 @@ msgstr ""
"tulajdonságaiból."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Nincs mesh, amibe adatokat süthetne. Bizonyosodjon meg arról, hogy "
"tartalmaznak egy UV2 csatornát, és hogy a 'Fény Besütése' opció be van "
@@ -5424,8 +5716,8 @@ msgstr "Horgonyok Módosítása"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Játék Kamera Felülírás.\n"
"Felülírja a játék kamerát szerkesztői nézetablak kamerával."
@@ -5433,8 +5725,9 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5488,6 +5781,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5499,22 +5793,32 @@ msgid "Select Mode"
msgstr "Kiválasztó Mód"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Húzás: Forgatás"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Kiválasztott node vagy átmenet eltávolítása."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt + Húzás: Mozgatás"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Kiválasztott node vagy átmenet eltávolítása."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Nyomja meg a 'v' gombot a Forgatási Pont Megváltoztatásához, Vagy 'Shift + "
-"v'-t a Forgatási Pont Húzásához (mozgás közben)."
+"Lista megjelenítése minden objektumról a kattintás helyénél\n"
+"(ugyanaz, mint Alt + jobb egérgomb kiválasztó módban)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt + Jobb Egérgomb: Mélységi lista választás"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5747,6 +6051,16 @@ msgid "Clear Pose"
msgstr "Póz törlése"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Node hozzáadása"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Jelenet(ek) Példányosítása"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Rács Léptetés Mértékének Kétszerezése"
@@ -5759,6 +6073,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Kicsinyítés"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Kicsinyítés"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Kicsinyítés"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Kicsinyítés"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Kicsinyítés"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Kicsinyítés"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "%s Hozzáadása"
@@ -6001,6 +6361,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Konvex alakzat létrehozása"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Konvex alakzat létrehozása"
@@ -6033,7 +6398,8 @@ msgid "No mesh to debug."
msgstr "Nincs mesh a hibakereséshez."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "A modellnek nincs UV-je ezen a rétegen"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6093,13 +6459,26 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Konvex ütközési testvér létrehozása"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Több konvex ütközési testvér létrehozása"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6155,7 +6534,6 @@ msgid "Mesh Library"
msgstr "MeshLibrary"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Elem Hozzáadása"
@@ -6428,7 +6806,8 @@ msgid "Close Curve"
msgstr "Görbe Lezárása"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6732,6 +7111,24 @@ msgstr "Erőforrás Betöltése"
msgid "ResourcePreloader"
msgstr "ForrásElőtöltö"
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Generált Pontok Száma:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Generált Pontok Száma:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6935,7 +7332,7 @@ msgstr "Futtatás"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Keresés"
@@ -6966,6 +7363,11 @@ msgid "Debug with External Editor"
msgstr "Hibakeresés külső szerkesztővel"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Online Dokumentáció"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Godot online dokumentáció megnyitása."
@@ -7090,8 +7492,8 @@ msgstr ""
msgid "Cut"
msgstr "Kivágás"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Összes Kijelölése"
@@ -7124,10 +7526,6 @@ msgid "Unfold All Lines"
msgstr "Összes Sor Kibontása"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Klónozás Lefelé"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Szimbólum Befejezése"
@@ -7279,6 +7677,28 @@ msgid "View Plane Transform."
msgstr "Megnéz a Síklap transzformációját."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Forgató Mód"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Fordítások"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Skála:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7299,39 +7719,50 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Méret"
+#, fuzzy
+msgid "Size:"
+msgstr "Méret: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Rajzolt objektumok"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "A paraméter megváltozott"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Változások"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Felületi Pontok"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Hívások"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Vertices:"
+msgstr "Részecskék"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7487,6 +7918,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Kedvencek Mutatása/Elrejtése"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7502,6 +7938,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Ãtalakítás erre: %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7515,7 +7956,8 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Node-ok illesztése a padlóhoz"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7523,13 +7965,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr ""
@@ -7538,6 +7973,10 @@ msgid "Use Snap"
msgstr "Illesztés Használata"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr ""
@@ -7631,6 +8070,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Beállítások..."
@@ -7920,11 +8363,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7945,165 +8383,595 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Felsorolások:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+#, fuzzy
+msgid "Colors"
+msgstr "Szín"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Fonts"
+msgstr "Betűtípus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Icons"
+msgstr "Ikon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Stílus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+#, fuzzy
+msgid "No colors found."
+msgstr "Nem található alerőforrás."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstansok"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Színállandó."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "Nincs Találat!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Nincs Találat!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Téma szerkesztése"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Nem található alerőforrás."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Téma Importálása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Kilép a szerkesztőből?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Elemzés"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Szűrők:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select by data type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Összes becsukása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Összes kinyitása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Válasszon sablonfájlt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Pontok Kiválasztása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Összes Kijelölése"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Scene importálás"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Összes könyvjelző eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Elem eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Összes Töréspont Eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Összes Töréspont Eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Összes Töréspont Eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Összes könyvjelző eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Elem Hozzáadása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Ãllandó"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Elem Hozzáadása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Elem Hozzáadása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Elem Hozzáadása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Elem eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Elem eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Elem eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Kijelölt Elem Eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Érvénytelen fájl, nem egy hangbusz elrendezés."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Sablonok kezelése"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Szerkeszthető elem"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Típus:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Típus:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Elem Hozzáadása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Elem Hozzáadása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Elem eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Elem eltávolítása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "GUI Téma Elemek"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Node neve:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Téma Importálása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Alapértelmezett"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Téma szerkesztése"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Erőforrás Törlése"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Téma Importálása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Animáció nyomvonal átnevezés"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Csoportos átnevezés"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Felülírás"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Node típus keresése"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Elem Hozzáadása"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Node típusa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Alapértelmezett Betöltése"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "felülírja:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+#, fuzzy
+msgid "Theme:"
+msgstr "Téma Mentése"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Exportálási sablonok kezelése..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Előnézet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Előnézet frissítése"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Válasszon Ki Egy Forrás Mesh-t:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Váltógomb"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Letiltott gomb"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Letiltott elem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Rádió Elem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Alelem 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Alelem 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "Letiltott szerkesztősor"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Szerkeszthető elem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Ikon"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Stílus"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Betűtípus"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Szín"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Érvénytelen fájl, nem egy hangbusz elrendezés."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Témafájl"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8271,6 +9139,10 @@ msgid "Priority"
msgstr "Prioritás"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Ikon"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z index"
@@ -8587,11 +9459,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9411,8 +10278,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "Csempeprioritás szerkesztése"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9526,7 +10394,8 @@ msgid "Script"
msgstr "Szkript"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Szkript Exportálás Mód:"
#: editor/project_export.cpp
@@ -9534,7 +10403,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9542,11 +10411,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9619,7 +10488,8 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Érvénytelen projektnév."
#: editor/project_manager.cpp
@@ -9653,6 +10523,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Hiba a csomagfájl megnyitása során, nem ZIP formátumú."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "A következő fájlokat nem sikerült kibontani a csomagból:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "A csomag telepítése sikeres volt!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Projekt átnevezése"
@@ -9797,16 +10679,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Válasszon készüléket a listából"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Válasszon készüléket a listából"
#: editor/project_manager.cpp
msgid ""
@@ -9832,7 +10712,8 @@ msgid "Project Manager"
msgstr "Projektkezelő"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projektek"
#: editor/project_manager.cpp
@@ -9844,10 +10725,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Projekt Exportálása"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Projekt átnevezése"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Keresés"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projektek"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Válassza ki a mappát a kereséshez"
@@ -9856,18 +10752,41 @@ msgid "New Project"
msgstr "Új projekt"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Projekt Exportálása"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Projekt átnevezése"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Hiányzó eltávolítása"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Sablonok"
+msgid "About"
+msgstr "Névjegy"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Eszköz könyvtár"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Újraindítás most"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "A projekt futtatása nem sikerült"
@@ -9878,8 +10797,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Tulajdonságok szűrése"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9889,6 +10813,10 @@ msgid "Key "
msgstr "Kulcs "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Joy gomb"
@@ -9930,6 +10858,10 @@ msgstr "Minden eszköz"
msgid "Device"
msgstr "Eszköz"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Nyomjon meg egy billentyűt..."
@@ -10069,7 +11001,8 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Fordítás hozzáadása"
#: editor/project_settings_editor.cpp
@@ -10077,11 +11010,11 @@ msgid "Remove Translation"
msgstr "Fordítás eltávolítása"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10350,6 +11283,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Stílus"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10516,11 +11453,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10576,6 +11531,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10622,10 +11581,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Dokumentáció megnyitása"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10896,6 +11851,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Osztálynév:"
@@ -10964,6 +11925,10 @@ msgid "Copy Error"
msgstr "Hiba Másolása"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11249,6 +12214,16 @@ msgstr "Érvénytelen példány szótár (érvénytelen alosztályok)"
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Mesh könyvtár exportálás"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exportálás..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Következő Síklap"
@@ -11290,6 +12265,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Kijelölés Keretezése"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11538,6 +12518,16 @@ msgid "Add Output Port"
msgstr "Kimeneti port hozzáadása"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "%s típusának megváltoztatása"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "A bemeneti port nevének módosítása"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11646,6 +12636,11 @@ msgid "Add Preload Node"
msgstr "Előre betöltött node hozzáadása"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Node hozzáadása"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Node(ok) hozzáadása a fáról"
@@ -11869,10 +12864,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11902,6 +12893,40 @@ msgid "Select device from the list"
msgstr "Válasszon készüléket a listából"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Összes exportálása"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Eltávolítás"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Betöltés, kérem várjon..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Az alprocesszt nem lehetett elindítani!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Tetszőleges Szkript Futtatása..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Nem sikerült létrehozni a mappát."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11998,6 +13023,47 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Fájlok vizsgálata,\n"
+"kérjük várjon..."
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "%s Hozzáadása..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Összes exportálása"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12010,6 +13076,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12024,6 +13094,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12043,11 +13126,53 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Az animáció nem található: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Kontúrok létrehozása…"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "%s Hozzáadása..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Az alprocesszt nem lehetett elindítani!"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12076,10 +13201,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr ""
@@ -12088,15 +13209,48 @@ msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Nem sikerült létrehozni a mappát."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "Nem sikerült létrehozni a mappát."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Nem sikerült létrehozni a mappát."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Hiba TileSet mentésekor!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Érvénytelen azonosító:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12446,6 +13600,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12515,12 +13676,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12569,6 +13782,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "Az animáció nem található: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12720,21 +13937,137 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Package Contents:"
+#~ msgstr "Csomag tartalma:"
+
+#~ msgid "Singleton"
+#~ msgstr "Egyke"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Törli a(z) '%s' profilt? (nem visszavonható)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Engedélyezett tulajdonságok:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Engedélyezett funkciók:"
+
+#~ msgid "Unset"
+#~ msgstr "Nincs beállítva"
+
+#~ msgid "Class Options"
+#~ msgstr "Osztály beállításai"
+
+#~ msgid "Set"
+#~ msgstr "Beállít"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "%s módosított erőforrás mentve."
+
+#~ msgid "Q&A"
+#~ msgstr "Kérdések és válaszok"
+
+#~ msgid "Status:"
+#~ msgstr "Ãllapot:"
+
+#~ msgid "Edit:"
+#~ msgstr "Szerkesztés:"
+
+#~ msgid "Redownload"
+#~ msgstr "Letöltés újra"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Telepítve)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Hiányzik)"
+
+#~ msgid "Request Failed."
+#~ msgstr "A kérés sikertelen."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Ciklus átiránítása."
+
+#~ msgid "Download Complete."
+#~ msgstr "A Letöltés Befejeződött."
+
+#~ msgid "Remove Template"
+#~ msgstr "Sablon Eltávolítása"
+
+#~ msgid "Download Templates"
+#~ msgstr "Sablonok Letöltése"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr ""
+#~ "Tükör kiválasztása a listából: (Shift + kattintás: megnyitás a "
+#~ "böngészőben)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Lomtárba Helyezés"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Összes tulajdonság kinyitása"
+
+#~ msgid "Copy Params"
+#~ msgstr "Paraméterek Másolása"
+
+#~ msgid "Open in Help"
+#~ msgstr "Megnyitás Súgóban"
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Húzás: Forgatás"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Nyomja meg a 'v' gombot a Forgatási Pont Megváltoztatásához, Vagy 'Shift "
+#~ "+ v'-t a Forgatási Pont Húzásához (mozgás közben)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt + Jobb Egérgomb: Mélységi lista választás"
+
+#~ msgid "Clone Down"
+#~ msgstr "Klónozás Lefelé"
+
+#~ msgid "Size"
+#~ msgstr "Méret"
+
+#~ msgid "Theme File"
+#~ msgstr "Témafájl"
+
+#~ msgid "Templates"
+#~ msgstr "Sablonok"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Egy AnimationPlayer nem tudja önmagát animálni, csak más AnimationPlayer "
@@ -12795,9 +14128,6 @@ msgstr ""
#~ msgstr ""
#~ "A jelenlegi Scene soha nem volt még mentve, mentse el a futtatás előtt."
-#~ msgid "Not in resource path."
-#~ msgstr "Nincs az erőforrás elérési útban."
-
#~ msgid "Revert"
#~ msgstr "Visszaállítás"
@@ -12874,9 +14204,6 @@ msgstr ""
#~ msgid "Theme Properties:"
#~ msgstr "Tulajdonságok"
-#~ msgid "Enumerations:"
-#~ msgstr "Felsorolások:"
-
#~ msgid "Constants:"
#~ msgstr "Konstansok:"
@@ -13085,9 +14412,6 @@ msgstr ""
#~ msgid "Public Methods:"
#~ msgstr "Publikus Metódusok:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "GUI Téma Elemek"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "GUI Téma Elemek:"
@@ -13162,9 +14486,6 @@ msgstr ""
#~ msgid "Move Anim Track Down"
#~ msgstr "Animáció nyomvonal lefelé mozgatás"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Animáció nyomvonal átnevezés"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Animáció nyomvonal interpoláció változtatás"
@@ -13301,9 +14622,6 @@ msgstr ""
#~ msgid "Can't write file."
#~ msgstr "Nem lehet fájlt írni."
-#~ msgid "Not found!"
-#~ msgstr "Nincs Találat!"
-
#, fuzzy
#~ msgid "Replace By"
#~ msgstr "Lecserél"
diff --git a/editor/translations/id.po b/editor/translations/id.po
index e1029fc231..ccc5865b85 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -556,7 +556,8 @@ msgstr "Detik"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -582,7 +583,8 @@ msgstr "Seleksi Skala"
msgid "Scale From Cursor"
msgstr "Skala dari Kursor"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplikat Pilihan"
@@ -603,6 +605,11 @@ msgid "Go to Previous Step"
msgstr "Pergi ke Langkah Sebelumnya"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Reset"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimalkan Animasi"
@@ -619,6 +626,11 @@ msgid "Use Bezier Curves"
msgstr "Gunakan Lengkungan Bezier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Tempel Trek-trek"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Pengoptimal Animasi"
@@ -667,7 +679,7 @@ msgid "Select Tracks to Copy"
msgstr "Pilih Trek untuk Disalin"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -753,12 +765,14 @@ msgid "Toggle Scripts Panel"
msgstr "Jungkitkan Panel Skrip"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Perbesar Pandangan"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -815,11 +829,9 @@ msgid "Add"
msgstr "Tambah"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -870,6 +882,7 @@ msgstr "Tidak dapat menghubungkan sinyal"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -939,7 +952,8 @@ msgid "Edit..."
msgstr "sunting..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Menuju Ke Fungsi"
#: editor/create_dialog.cpp
@@ -954,6 +968,14 @@ msgstr "Ubah"
msgid "Create New %s"
msgstr "Buat %s baru"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Tidak ada hasil untuk \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -975,8 +997,8 @@ msgstr "Cari:"
msgid "Matches:"
msgstr "Kecocokan:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1052,19 +1074,23 @@ msgid "Owners Of:"
msgstr "Pemilik Dari:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Hapus berkas yang dipilih dari proyek? (tidak bisa dibatalkan)\n"
"Anda bisa menemukan berkas yang telah dihapus di tong sampah."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"File-file yang telah dihapus diperlukan oleh resource lain agar mereka dapat "
"bekerja.\n"
@@ -1113,7 +1139,7 @@ msgstr "Penjelajah Resource Orphan"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1238,28 +1264,41 @@ msgstr "Komponen"
msgid "Licenses"
msgstr "Lisensi"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Gagal saat membuka paket, tidak dalam bentuk zip."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Galat saat membuka berkas paket (tidak dalam format ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Sudah Ada)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Membuka Aset Terkompresi"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Berkas berikut gagal diekstrak dari paket:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Dan %s berkas lebih banyak."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paket Sukses Terpasang!"
#: editor/editor_asset_installer.cpp
@@ -1267,16 +1306,13 @@ msgstr "Paket Sukses Terpasang!"
msgid "Success!"
msgstr "Sukses!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Isi Paket:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Pasang"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Paket Instalasi"
#: editor/editor_audio_buses.cpp
@@ -1340,7 +1376,8 @@ msgid "Bypass"
msgstr "Jalan Lingkar"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Opsi Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1420,7 +1457,7 @@ msgstr "Tambahkan Bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Tambah Bus Audio baru ke layout ini."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1507,6 +1544,15 @@ msgid "Can't add autoload:"
msgstr "Tidak dapat menambahkan autoload"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "File tidak ada."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Tambahkan AutoLoad"
@@ -1522,16 +1568,17 @@ msgid "Node Name:"
msgstr "Nama Node:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nama"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Namai kembali Variabel"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Tempel Parameter"
@@ -1547,7 +1594,7 @@ msgstr "Menyimpan perubahan-perubahan lokal..."
msgid "Updating scene..."
msgstr "Memperbarui skena..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[kosong]"
@@ -1702,8 +1749,49 @@ msgid "Import Dock"
msgstr "Dok Impor"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Hapus profil '%s'? (tidak bisa dibatalkan)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Kondisi Saat Ini)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1734,15 +1822,18 @@ msgid "Enable Contextual Editor"
msgstr "Aktifkan Editor Kontekstual"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Properti yang Diaktifkan:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Properti:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Fitur yang Diaktifkan:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Fitur-fitur"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Kelas yang Diaktifkan:"
#: editor/editor_feature_profile.cpp
@@ -1762,25 +1853,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Galat saat menyimpan profil ke: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Tidak diatur"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Kembalikan ke Nilai Baku"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Profil Sekarang:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Jadikan Profil Saat Ini"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Hapus Profil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Baru"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Hapus Tile"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Profil yang Tersedia:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Jadikan Profil Saat Ini"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Impor"
@@ -1789,20 +1889,22 @@ msgid "Export"
msgstr "Ekspor"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Profil yang Tersedia:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Profil Sekarang:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Opsi Kelas"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Opsi Tekstur"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Nama profil baru:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Hapus Profil"
+msgid "New profile name:"
+msgstr "Nama profil baru:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1825,7 +1927,8 @@ msgid "Select Current Folder"
msgstr "Pilih Folder Saat Ini"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "File telah ada, Overwrite?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1879,9 +1982,10 @@ msgid "Open a File or Directory"
msgstr "Buka sebuah File atau Direktori"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Simpan"
@@ -1962,8 +2066,7 @@ msgid "Directories & Files:"
msgstr "Direktori-direktori & File-file:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Pratinjau:"
@@ -2036,7 +2139,7 @@ msgstr "Properti Tema"
msgid "Enumerations"
msgstr "Enumerasi"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstanta"
@@ -2125,7 +2228,7 @@ msgstr "Fungsi"
msgid "Signal"
msgstr "Sinyal"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstan"
@@ -2141,9 +2244,10 @@ msgstr "Properti Tema"
msgid "Property:"
msgstr "Properti:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Terapkan"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Setel %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2158,7 +2262,7 @@ msgid "Copy Selection"
msgstr "Salin Seleksi"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2222,7 +2326,8 @@ msgid "Imported resources can't be saved."
msgstr "Resource yang diimpor tidak dapat disimpan."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Oke"
@@ -2443,18 +2548,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Simpan perubahan '%s' sebelum menutupnya?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Menyimpan resource %s yang diubah."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Node akar diperlukan untuk menyimpan skena."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Simpan Skena Sebagai..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Operasi ini tidak dapat diselesaikan tanpa skena."
@@ -2649,7 +2759,7 @@ msgstr "Hapus Penampilan"
msgid "Default"
msgstr "Bawaan"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Tampilkan dalam FileSystem"
@@ -2830,6 +2940,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Penjelajah Resource Orphan..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Ubah Nama Proyek"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Keluar ke daftar proyek"
@@ -2985,20 +3100,24 @@ msgstr "Kelola Templat Ekspor…"
msgid "Help"
msgstr "Bantuan"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Online Dokumentasi"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Buka Dokumentasi"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Tanya Jawab"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Laporkan Kutu"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Kirim Tanggapan Dokumentasi"
@@ -3007,7 +3126,8 @@ msgid "Community"
msgstr "Komunitas"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Tentang"
#: editor/editor_node.cpp
@@ -3104,6 +3224,16 @@ msgid "Manage Templates"
msgstr "Kelola Templat"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Memasang dari berkas"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Pilih Mesh Sumber:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3141,7 +3271,7 @@ msgstr "Impor Templat dari Berkas ZIP"
msgid "Template Package"
msgstr "Paket Templat"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Ekspor Pustaka"
@@ -3184,6 +3314,11 @@ msgid "Select"
msgstr "Pilih"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Pilih Folder Saat Ini"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Buka Editor 2D"
@@ -3215,6 +3350,11 @@ msgstr "Peringatan!"
msgid "No sub-resources found."
msgstr "Tidak ada sub-resourc yang ditemukan."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Tidak ada sub-resourc yang ditemukan."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Buat Pratinjau Mesh"
@@ -3239,33 +3379,34 @@ msgstr "Plugins Terpasang:"
msgid "Update"
msgstr "Perbarui"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versi:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Pembuat:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Status:"
+#, fuzzy
+msgid "Author"
+msgstr "Pengarang"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Sunting:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Status"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Ukuran:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Waktu Frame (sec)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Waktu Rata-rata (sec)"
#: editor/editor_profiler.cpp
@@ -3285,6 +3426,16 @@ msgid "Self"
msgstr "Sendiri"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Bingkai #:"
@@ -3326,14 +3477,6 @@ msgstr "RID tidak valid"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Resource yang terpilih (%s) tidak sesuai dengan tipe apapun yang diharapkan "
-"untuk properti ini (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3358,40 +3501,6 @@ msgid "Pick a Viewport"
msgstr "Pilih Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Skrip Baru"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Extend Skrip"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "%s baru"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Jadikan Unik"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Tempel"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Konversikan ke %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Node yang terpilih bukanlah Viewport!"
@@ -3420,6 +3529,49 @@ msgstr "Nilai Baru:"
msgid "Add Key/Value Pair"
msgstr "Tambahkan pasangan Key/Value"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Resource yang terpilih (%s) tidak sesuai dengan tipe apapun yang diharapkan "
+"untuk properti ini (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Jadikan Unik"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Tempel"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Konversikan ke %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "%s baru"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Skrip Baru"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Extend Skrip"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3454,7 +3606,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Apakah anda lupa dengan fungsi '_run' ?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Tahan Ctrl untuk membulatkan bilangan. Tahan Shift untuk meletakkan bilangan "
"yang lebih presisi."
@@ -3476,113 +3629,69 @@ msgid "Import From Node:"
msgstr "Impor dari Node:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Unduh Ulang"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Copot Pemasangan"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(terpasang)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Unduh"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "Templat ekspor resmi tidak tersedia untuk build pengembangan."
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(hilang)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Kondisi Saat Ini)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Tidak ada berkas '%s'."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Mendapatkan informasi cermin, silakan tunggu..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Hapus templat versi '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Tidak dapat membuka ekspor template-template zip."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Format version.txt tidak valid dalam berkas templat: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Berkas version.txt tidak ditemukan dalam templat."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Kesalahan saat membuat lokasi untuk templat:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Mengekstrak Berkas Templat Ekspor"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Mengimpor:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Galat dalam mendapatkan daftar mirror."
+msgid "Error requesting URL:"
+msgstr "Galat saat meminta URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "Galat mengurai JSON dari daftar mirror. Silakan laporkan masalah ini!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Menyambungkan..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Tautan unduh tidak ditemukan untuk versi ini. Unduhan langsung hanya "
-"tersedia untuk versi rilis resmi."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Tidak dapat menjelaskan hostname:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Tidak bisa menyelesaikan."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Tidak dapat terhubung ke host:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Tidak dapat terhubung."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Tidak ada respon dari host:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Tidak ada respon."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "Permintaan Gagal."
+msgid "Request failed."
+msgstr "Permintaan gagal."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Mengalihkan Loop."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Permintaan gagal, terlalu banyak pengalihan"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Gagal:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Permintaan gagal."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Unduhan Selesai."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3597,12 +3706,25 @@ msgstr ""
"Arsip templat yang bermasalah dapat ditemukan di '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Galat saat meminta URL:"
+msgid "Error getting the list of mirrors."
+msgstr "Galat dalam mendapatkan daftar mirror."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Menyambungkan..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "Galat mengurai JSON dari daftar mirror. Silakan laporkan masalah ini!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Tautan unduh tidak ditemukan untuk versi ini. Unduhan langsung hanya "
+"tersedia untuk versi rilis resmi."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3647,44 +3769,138 @@ msgid "SSL Handshake Error"
msgstr "Kesalahan jabat tangan SSL"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Tidak dapat membuka ekspor template-template zip."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Format version.txt tidak valid dalam berkas templat: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Berkas version.txt tidak ditemukan dalam templat."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Kesalahan saat membuat lokasi untuk templat:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Mengekstrak Berkas Templat Ekspor"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Mengimpor:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Hapus templat versi '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Mengekstrak Kode Sumber Build Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Manajer Templat Ekspor"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versi sekarang:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Versi Terpasang:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Buka Berkas"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Copot Pemasangan"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Nilai awal untuk penghitung"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Unduhan Gagal"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Official export templates aren't available for development builds."
+msgstr "Templat ekspor resmi tidak tersedia untuk build pengembangan."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Memasang dari berkas"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Hapus Templat"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Impor Templat dari Berkas ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Batal"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Pilih berkas templat"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Tidak dapat membuka ekspor template-template zip."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Templat Ekspor Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Versi Terpasang:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Manajer Templat Ekspor"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Copot Pemasangan"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Unduh Templat"
+msgid "Select Template File"
+msgstr "Pilih berkas templat"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr "Templat Ekspor Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Pilih cermin dari daftar: (Shift+Click: Buka di Peramban)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3818,29 +4034,62 @@ msgstr "Skrip Baru..."
msgid "New Resource..."
msgstr "Resource Baru..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Bentangkan Semua"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Lipat Semua"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Gandakan..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Cari berkas"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Pindahkan ke tong sampah"
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Terakhir Diubah"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Terakhir Diubah"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Gandakan..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Ubah Nama..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Berkas/Direktori sebelumnya"
@@ -3924,10 +4173,6 @@ msgstr "Cari..."
msgid "Replace..."
msgstr "Gantikan..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Batal"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Cari: "
@@ -4151,53 +4396,55 @@ msgid "Failed to load resource."
msgstr "Gagal memuat resource."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Perluas Semua Properti"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Properti"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Tutup Semua Properti"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Simpan Sebagai..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Properti"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Salin Parameter"
+msgid "Make Sub-Resources Unique"
+msgstr "Membuat Unik Sub-Resource"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Sunting Papan Klip Resource"
+msgid "Create a new resource in memory and edit it."
+msgstr "Buat resource baru pada memori dan mengubahnya."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Salin Resource"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Muat resource yang ada dari diska dan mengubahnya."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Buat Menjadi Bawaan"
+msgid "Save the currently edited resource."
+msgstr "Simpan resource yang sedang disunting saat ini."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Membuat Unik Sub-Resource"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Simpan Sebagai..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Buka di Bantuan"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Tidak dalam lokasi resource."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Buat resource baru pada memori dan mengubahnya."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Sunting Papan Klip Resource"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Muat resource yang ada dari diska dan mengubahnya."
+msgid "Copy Resource"
+msgstr "Salin Resource"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Simpan resource yang sedang disunting saat ini."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Buat Menjadi Bawaan"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4212,14 +4459,24 @@ msgid "History of recently edited objects."
msgstr "Histori dari objek terdireksi baru-baru saja."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Properti Objek."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Buka Dokumentasi"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Buka Dokumentasi"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filter properti"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Properti Objek."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Perubahan mungkin hilang!"
@@ -4247,6 +4504,15 @@ msgstr "Nama Plugin:"
msgid "Subfolder:"
msgstr "Subdirektori:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Pembuat:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versi:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Bahasa:"
@@ -4452,7 +4718,8 @@ msgid "Blend:"
msgstr "Campur:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parameter Berubah"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4671,6 +4938,11 @@ msgid "Animation"
msgstr "Animasi"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Baru"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Sunting Transisi..."
@@ -5010,10 +5282,18 @@ msgid "View Files"
msgstr "Tampilkan Berkas"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Unduh"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Gangguan koneksi, silakan coba lagi."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Tidak dapat terhubung."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Tidak dapat terhubung ke host:"
@@ -5022,16 +5302,20 @@ msgid "No response from host:"
msgstr "Tidak ada respon dari host:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Tidak ada respon."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Tidak dapat menjelaskan hostname:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Permintaan gagal, return code:"
+msgid "Can't resolve."
+msgstr "Tidak bisa menyelesaikan."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Permintaan gagal."
+msgid "Request failed, return code:"
+msgstr "Permintaan gagal, return code:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5058,6 +5342,10 @@ msgid "Timeout."
msgstr "Tenggat waktu habis."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Gagal:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Hash unduhan buruk, berkas mungkin telah diubah."
@@ -5158,8 +5446,12 @@ msgid "All"
msgstr "Semua"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Tidak ada hasil untuk \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5201,6 +5493,10 @@ msgstr "Sedang memuat…"
msgid "Assets ZIP File"
msgstr "Berkas Aset ZIP"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5210,9 +5506,10 @@ msgstr ""
"Simpan skena Anda dan coba lagi."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Tidak ada mesh-mesh untuk di bake. Pastikan mereka punya kanal UV2 dan 'Bake "
"Cahaya' menyala."
@@ -5457,9 +5754,10 @@ msgstr "Ubah Jangkar-jangkar"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Timpa Kamera Gim\n"
"Menimpa kamera gim dengan kamera viewport editor."
@@ -5467,11 +5765,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Timpa Kamera Gim\n"
-"Tidak ada instance gim yang berjalan."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5526,6 +5823,7 @@ msgstr ""
"tua nya."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5537,21 +5835,32 @@ msgid "Select Mode"
msgstr "Mode Seleksi"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Geser: Putar"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Hapus node atau transisi terpilih."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Geser: Pindah"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Hapus node atau transisi terpilih."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Tekan 'v' untuk Ganti Pivot, 'Shift+v' untuk Geser Pivot (ketika bergerak)."
+"Tampilkan semua objek dalam posisi klik ke sebuah daftar\n"
+"(sama seperti Alt+Klik kanan dalam mode seleksi)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+Klik kanan: Daftar seleksi kedalaman"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5789,6 +6098,16 @@ msgid "Clear Pose"
msgstr "Hapus Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Tambahkan Node"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Instansi Skena"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Gandakan langkah kisi demi 2"
@@ -5801,6 +6120,52 @@ msgid "Pan View"
msgstr "Geser Tampilan"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Perkecil Pandangan"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Perkecil Pandangan"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Perkecil Pandangan"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Perkecil Pandangan"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Perkecil Pandangan"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Perkecil Pandangan"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Tambah %s"
@@ -6043,6 +6408,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Tidak dapat membuat convex collision shape tunggal."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Buat Bentuk Cembung"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Buat Bentuk Cembung"
@@ -6075,7 +6445,8 @@ msgid "No mesh to debug."
msgstr "Tidak ada mesh untuk diawakutu."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Model tidak memiliki UV dalam lapisan ini"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6144,13 +6515,27 @@ msgstr ""
"deteksi collision."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Buat Saudara Tunggal Convex Collision"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Buat Beberapa Saudara Convex Collision"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Buat collision shape berbasis poligon.\n"
"Opsi ini kinerjanya berada di antara dua opsi di atas."
@@ -6212,7 +6597,6 @@ msgid "Mesh Library"
msgstr "Pustaka Mesh"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Tambah Item"
@@ -6487,7 +6871,8 @@ msgid "Close Curve"
msgstr "Tutup Kurva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Opsi"
@@ -6797,6 +7182,26 @@ msgstr "Muat Resource"
msgid "ResourcePreloader"
msgstr "ResourcePreloader"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Balik secara Horizontal"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Jumlah Titik yang Dihasilkan:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Jumlah Titik yang Dihasilkan:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Balik secara Horizontal"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree tidak memiliki jalur yang diatur ke AnimationPlayer"
@@ -7002,7 +7407,7 @@ msgstr "Jalankan"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Cari"
@@ -7033,6 +7438,11 @@ msgid "Debug with External Editor"
msgstr "Awakutu menggunakan Editor Eksternal"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Online Dokumentasi"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Buka dokumentasi daring Godot."
@@ -7161,8 +7571,8 @@ msgstr "Pergi Ke"
msgid "Cut"
msgstr "Potong"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Pilih Semua"
@@ -7195,10 +7605,6 @@ msgid "Unfold All Lines"
msgstr "Bentangkan Semua Baris"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Duplikat ke Bawah"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Simbol Lengkap"
@@ -7353,6 +7759,28 @@ msgid "View Plane Transform."
msgstr "Tampilkan Transformasi Planar."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Tidak ada"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Mode Putar"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Translasi:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Skala:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Penskalaan: "
@@ -7373,42 +7801,54 @@ msgid "Animation Key Inserted."
msgstr "Kunci Animasi Dimasukkan."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Dongak"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Oleng"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Ukuran"
+#, fuzzy
+msgid "Size:"
+msgstr "Ukuran: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Objek Digambar"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Perubahan Material"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Perubahan Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Perubahan Permukaan"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Gambarkan Panggilan"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Titik"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Tampilan Atas."
@@ -7561,6 +8001,11 @@ msgid "Freelook Slow Modifier"
msgstr "Pengubah Lambat Tampilan Bebas"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Ubah Ukuran Kamera"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Rotasi Tampilan Terkunci"
@@ -7581,6 +8026,11 @@ msgstr ""
"Tidak bisa digunakan sebagai indikasi kinerja gim yang dapat dihandalkan."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Konversikan ke %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Dialog XForm"
@@ -7600,7 +8050,8 @@ msgstr ""
"pandang (\"sinar-x\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Kancingkan Node ke Lantai"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7609,16 +8060,6 @@ msgstr ""
"Tidak dapat menemukan floor yang solid untuk mengancingkan seleksi ke sana."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Seret: Rotasi\n"
-"Alt+Seret: Geser\n"
-"Alt+Klik Kanan: Daftar seleksi mendalam"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Gunakan Ruang Lokal"
@@ -7627,6 +8068,10 @@ msgid "Use Snap"
msgstr "Gunakan Snap"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Tampilan Bawah"
@@ -7720,6 +8165,11 @@ msgid "View Grid"
msgstr "Tampilkan Kisi"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Pengaturan Viewport"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Pengaturan…"
@@ -8009,11 +8459,6 @@ msgid "Snap Mode:"
msgstr "Mode Pengancingan:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Tidak ada"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Pengancingan Piksel"
@@ -8034,165 +8479,604 @@ msgid "Step:"
msgstr "Langkah:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Pemisah:"
+#, fuzzy
+msgid "Separation:"
+msgstr "Enumerasi:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "TeksturRegion"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Tambahkan Semua Item"
+#, fuzzy
+msgid "Colors"
+msgstr "Warna"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Tambahkan Semua"
+#, fuzzy
+msgid "Fonts"
+msgstr "Fonta"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Ikon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Gaya"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Tidak ada sub-resourc yang ditemukan."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstanta"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Konstanta warna."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Tidak ditemukan!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Tidak ditemukan!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Tidak ada sub-resourc yang ditemukan."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Impor Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Keluar editor?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Menganalisis"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filter:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Pilih Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Pilih Berkas untuk Dipindai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Pilih item pengaturan terlebih dahulu!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Pilih item pengaturan terlebih dahulu!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Pilih item pengaturan terlebih dahulu!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Pilih item pengaturan terlebih dahulu!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Pilih item pengaturan terlebih dahulu!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Lipat Semua"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Bentangkan Semua"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Pilih berkas templat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Pilih Titik"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Pilih Semua"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Impor Skena"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Hapus Semua Item"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Hapus semua"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Hapus item"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Sunting Tema"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Hapus Semua Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Hapus Semua Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Hapus Semua Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Hapus Semua Item"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Menu untuk menyunting tema."
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Tambah Item Kelas"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Tambah Item Kelas"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Tambah Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Tambah Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Tambahkan Semua Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Hapus Item Kelas"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Hapus Item Kelas"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Ubah Nama Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Ubah Nama Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Hapus Item yang Dipilih"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Berkas salah, tidak layout suara bus."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Kelola Templat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Item dapat diedit"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Jenis:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Jenis:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Tambah Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Tambahkan Semua Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Hapus item"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Hapus Item Kelas"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Buat Templat Kosong"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Hapus Item Kelas"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Hapus Semua Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Item Tema GUI"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nama Node:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Impor Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Bawaan"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Sunting Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Hapus Resource"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Impor Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Namai Kembali Trek Anim"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Ubah Nama Massal"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Menimpa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Tipe"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Buat Templat Editor Kosong"
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Tambah Item"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Buat dari Editor Tema Saat Ini"
+#, fuzzy
+msgid "Node Types:"
+msgstr "Jenis node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Muat Default"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Menimpa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Kelola Templat Ekspor…"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Pratinjau"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Perbarui Pratinjau"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Pilih Mesh Sumber:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Tombol Jungkit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Tombol Dinonaktifkan"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Item"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Item yang Dinonaktifkan"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Item Check"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Item yang Dicentang"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Item Radio"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Item Radio yang Dicentang"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Pemisah yang diberi nama."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Submenu"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Sub menu 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Sub menu 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Memiliki"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Banyak"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "LineEdit Dinonaktifkan"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Tab 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Tab 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Item dapat diedit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Subpohon"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Memiliki,Banyak,Opsi"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Jenis data:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Ikon"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Gaya"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Fonta"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Warna"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Berkas salah, tidak layout suara bus."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Berkas Tema"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8364,6 +9248,10 @@ msgid "Priority"
msgstr "Prioritas"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Ikon"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Indeks Z"
@@ -8701,11 +9589,6 @@ msgid "Commit Changes"
msgstr "Komit Perubahan"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Status"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "Tampilkan perbedaan berkas sebelum mengkomitnya ke versi terbaru"
@@ -9601,7 +10484,8 @@ msgid "VisualShader"
msgstr "ShaderVisual"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Sunting Properti Visual"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9728,7 +10612,8 @@ msgid "Script"
msgstr "Skrip"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Mode Ekspor Skrip:"
#: editor/project_export.cpp
@@ -9736,19 +10621,21 @@ msgid "Text"
msgstr "Teks"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Dikompilasi"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Dienkripsi (Sertakan Kunci Berikut)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Kunci Enkripsi Tidak Valid (panjangnya harus 64 karakter)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Kunci Enkripsi Skrip (256-bit berbentuk heksa):"
#: editor/project_export.cpp
@@ -9823,7 +10710,8 @@ msgid "Imported Project"
msgstr "Proyek yang Diimpor"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Nama Proyek Tidak Valid."
#: editor/project_manager.cpp
@@ -9859,6 +10747,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Tidak dapat membuat project.godot dalam lokasi proyek."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Gagal saat membuka paket, tidak dalam bentuk zip."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Berkas berikut gagal diekstrak dari paket:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Paket Sukses Terpasang!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Ubah Nama Proyek"
@@ -10035,20 +10935,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Apakah Anda yakin menjalankan %d proyek sekaligus?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Hapus %d proyek dalam daftar?\n"
-"Konten di folder proyek tidak akan dimodifikasi."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Pilih perangkat pada daftar"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Hapus proyek ini dalam daftar?\n"
-"Konten di folder proyek tidak akan dimodifikasi."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Pilih perangkat pada daftar"
#: editor/project_manager.cpp
msgid ""
@@ -10081,7 +10975,8 @@ msgid "Project Manager"
msgstr "Manajer Proyek"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Proyek"
#: editor/project_manager.cpp
@@ -10093,10 +10988,25 @@ msgid "Last Modified"
msgstr "Terakhir Diubah"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Ekspor Projek"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Ubah Nama Proyek"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Pindai"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Proyek"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Pilih Berkas untuk Dipindai"
@@ -10105,18 +11015,41 @@ msgid "New Project"
msgstr "Projek Baru"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Proyek yang Diimpor"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Ubah Nama Proyek"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Hapus yang Tidak Ada"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Templat"
+msgid "About"
+msgstr "Tentang"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Pustaka Aset"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Mulai ulang Sekarang"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Hapus semua"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Tidak dapat menjalankan proyek"
@@ -10129,8 +11062,14 @@ msgstr ""
"Apakah Anda ingin menjelajahi contoh proyek resmi di Pustaka Aset?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filter properti"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10144,6 +11083,10 @@ msgid "Key "
msgstr "Kunci "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Tombol Joystick"
@@ -10187,6 +11130,10 @@ msgstr "Semua Perangkat"
msgid "Device"
msgstr "Perangkat"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Tekan Tombol..."
@@ -10328,7 +11275,8 @@ msgid "Override for Feature"
msgstr "Timpa untuk Fitur"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Tambah Terjemahan"
#: editor/project_settings_editor.cpp
@@ -10336,11 +11284,13 @@ msgid "Remove Translation"
msgstr "Hapus Terjemahan"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Tambah Lokasi yang Dipetakan Ulang"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Resource Remap Tambah Remap"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Resource Remap Tambah Remap"
#: editor/project_settings_editor.cpp
@@ -10613,6 +11563,10 @@ msgid "Post-Process"
msgstr "Pasca Proses"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Gaya"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Pertahankan"
@@ -10779,12 +11733,30 @@ msgid "Delete node \"%s\"?"
msgstr "Hapus node \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Tidak dapat melakukan dengan node root."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Operasi ini tidak dapat dilakukan pada skena yang diinstansi."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10846,6 +11818,10 @@ msgstr ""
"mewarisi skena lain!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Operasi ini tidak dapat dilakukan pada skena yang diinstansi."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Lampirkan Skrip"
@@ -10894,10 +11870,6 @@ msgid "Load As Placeholder"
msgstr "Muat sebagai Placeholder"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Buka Dokumentasi"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11187,6 +12159,12 @@ msgstr ""
"menggunakan editor eksternal."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Nama Kelas:"
@@ -11255,6 +12233,10 @@ msgid "Copy Error"
msgstr "Salin Galat"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "RAM Video"
@@ -11538,6 +12520,16 @@ msgstr "Kamus acuan tidak sah (sub kelas tidak sah)"
msgid "Object can't provide a length."
msgstr "Objek tidak dapat memberikan panjang."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Ekspor Pustaka Mesh"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Ekspor…"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Plane Selanjutnya"
@@ -11579,6 +12571,11 @@ msgid "GridMap Paint"
msgstr "Cat GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Isi Seleksi GridMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Grid Map"
@@ -11830,6 +12827,16 @@ msgid "Add Output Port"
msgstr "Tambah Port Keluaran"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Ubah Tipe"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Ubah nama port masukan"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Menimpa fungsi built-in yang ada."
@@ -11942,6 +12949,11 @@ msgid "Add Preload Node"
msgstr "Tambah Node Preload"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Tambahkan Node"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Tambahkan Node (Node-node) dari Tree"
@@ -12171,10 +13183,6 @@ msgstr "Cari VisualScript"
msgid "Get %s"
msgstr "Dapatkan %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Setel %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Nama paket tidak ada."
@@ -12204,6 +13212,40 @@ msgid "Select device from the list"
msgstr "Pilih perangkat pada daftar"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Mengekspor Semua"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Copot Pemasangan"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Memuat, tunggu sejenak..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Tidak dapat memulai subproses!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Menjalankan Script Khusus..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Tidak dapat membuat folder."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Tak dapat menemukan perkakas 'apksigner'."
@@ -12314,6 +13356,48 @@ msgstr ""
"\"Expor AAB\" hanya bisa valid ketika \"Gunakan Build Custom\" diaktifkan."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Memindai Berkas,\n"
+"Silakan Tunggu..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Tidak dapat membuka templat untuk ekspor:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Menambahkan %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Mengekspor Semua"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr "Nama berkas tak valid! Android App Bundle memerlukan ekstensi *.aab ."
@@ -12326,6 +13410,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nama berkas tidak valid! APK Android memerlukan ekstensi *.apk ."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12346,6 +13434,21 @@ msgstr ""
"Silakan pasang ulang templat build Android dari menu 'Project'."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Tidak dapat menyunting project.godot dalam lokasi proyek."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Tidak dapat menulis berkas:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Membangun Proyek Android (gradle)"
@@ -12369,11 +13472,54 @@ msgstr ""
"Tidak dapat menyalin dan mengubah nama berkas ekspor, cek direktori proyek "
"gradle untuk hasilnya."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animasi tidak ditemukan: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Membuat kontur..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Tidak dapat membuka templat untuk ekspor:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Menambahkan %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Tidak dapat menulis berkas:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Kurang identifier."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Karakter '%s' tidak diizinkan dalam Identifier."
@@ -12403,10 +13549,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Jalankan HTML yang diekspor dalam peramban baku sistem."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Tidak dapat menulis berkas:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Tidak dapat membuka templat untuk ekspor:"
@@ -12415,16 +13557,49 @@ msgid "Invalid export template:"
msgstr "Templat ekspor tidak valid:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Tidak dapat menulis berkas:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Tidak dapat menulis berkas:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Tidak dapat membaca shell HTML kustom:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Tidak dapat membaca berkas citra boot splash:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Tidak dapat membuat folder."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Menggunakan citra boot splash baku."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Galat menyimpan skena."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Identifier tidak valid:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12856,6 +14031,13 @@ msgstr ""
"GIProbes tidak didukung oleh driver video GLES2.\n"
"Gunakan BakedLightmap sebagai gantinya."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12944,6 +14126,18 @@ msgstr "Persendian tidak terkoneksi dengan PhysicsBody"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Node A dan Node B harus PhysicsBody yang berbeda"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12952,6 +14146,46 @@ msgstr ""
"Properti \"Remote Path\" harus menunjuk ke Spatial atau turunannya yang "
"valid agar bekerja."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Body ini akan diabaikan hingga Anda mengatur mesh-nya."
@@ -13012,6 +14246,10 @@ msgstr "Di Node BlendTree '%s', animasi tidak ditemukan: '%s'"
msgid "Animation not found: '%s'"
msgstr "Animasi tidak ditemukan: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "Di node '%s', animasi tidak valid: '%s'."
@@ -13190,6 +14428,27 @@ msgid "Invalid comparison function for that type."
msgstr "Fungsi perbandingan tidak valid untuk jenis tersebut."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Variasi hanya bisa ditetapkan dalam fungsi vertex."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Penugasan ke fungsi."
@@ -13198,13 +14457,179 @@ msgid "Assignment to uniform."
msgstr "Pemberian nilai untuk uniform."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Variasi hanya bisa ditetapkan dalam fungsi vertex."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Konstanta tidak dapat dimodifikasi."
+#~ msgid "Package Contents:"
+#~ msgstr "Isi Paket:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Hapus profil '%s'? (tidak bisa dibatalkan)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Properti yang Diaktifkan:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Fitur yang Diaktifkan:"
+
+#~ msgid "Unset"
+#~ msgstr "Tidak diatur"
+
+#~ msgid "Class Options"
+#~ msgstr "Opsi Kelas"
+
+#~ msgid "Set"
+#~ msgstr "Terapkan"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Menyimpan resource %s yang diubah."
+
+#~ msgid "Q&A"
+#~ msgstr "Tanya Jawab"
+
+#~ msgid "Status:"
+#~ msgstr "Status:"
+
+#~ msgid "Edit:"
+#~ msgstr "Sunting:"
+
+#~ msgid "Redownload"
+#~ msgstr "Unduh Ulang"
+
+#~ msgid "(Installed)"
+#~ msgstr "(terpasang)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(hilang)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Permintaan Gagal."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Mengalihkan Loop."
+
+#~ msgid "Download Complete."
+#~ msgstr "Unduhan Selesai."
+
+#~ msgid "Remove Template"
+#~ msgstr "Hapus Templat"
+
+#~ msgid "Download Templates"
+#~ msgstr "Unduh Templat"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Pilih cermin dari daftar: (Shift+Click: Buka di Peramban)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Pindahkan ke tong sampah"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Perluas Semua Properti"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Tutup Semua Properti"
+
+#~ msgid "Copy Params"
+#~ msgstr "Salin Parameter"
+
+#~ msgid "Open in Help"
+#~ msgstr "Buka di Bantuan"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Timpa Kamera Gim\n"
+#~ "Tidak ada instance gim yang berjalan."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Geser: Putar"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Tekan 'v' untuk Ganti Pivot, 'Shift+v' untuk Geser Pivot (ketika "
+#~ "bergerak)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+Klik kanan: Daftar seleksi kedalaman"
+
+#~ msgid "Clone Down"
+#~ msgstr "Duplikat ke Bawah"
+
+#~ msgid "Yaw"
+#~ msgstr "Oleng"
+
+#~ msgid "Size"
+#~ msgstr "Ukuran"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Seret: Rotasi\n"
+#~ "Alt+Seret: Geser\n"
+#~ "Alt+Klik Kanan: Daftar seleksi mendalam"
+
+#~ msgid "Sep.:"
+#~ msgstr "Pemisah:"
+
+#~ msgid "Add All"
+#~ msgstr "Tambahkan Semua"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Menu untuk menyunting tema."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Buat Templat Kosong"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Buat Templat Editor Kosong"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Buat dari Editor Tema Saat Ini"
+
+#~ msgid "Data Type:"
+#~ msgstr "Jenis data:"
+
+#~ msgid "Theme File"
+#~ msgstr "Berkas Tema"
+
+#~ msgid "Compiled"
+#~ msgstr "Dikompilasi"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Hapus %d proyek dalam daftar?\n"
+#~ "Konten di folder proyek tidak akan dimodifikasi."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Hapus proyek ini dalam daftar?\n"
+#~ "Konten di folder proyek tidak akan dimodifikasi."
+
+#~ msgid "Templates"
+#~ msgstr "Templat"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Tambah Lokasi yang Dipetakan Ulang"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Tidak dapat melakukan dengan node root."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Tidak dapat membaca berkas citra boot splash:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Menggunakan citra boot splash baku."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Pemutar animasi tidak bisa menganimasikan diri sendiri, hanya pemutar "
@@ -13313,9 +14738,6 @@ msgstr "Konstanta tidak dapat dimodifikasi."
#~ "Skena saat ini belum pernah disimpan, harap simpan terlebih dahulu "
#~ "sebelum menjalankannya."
-#~ msgid "Not in resource path."
-#~ msgstr "Tidak dalam lokasi resource."
-
#~ msgid "Revert"
#~ msgstr "Pulihkan"
@@ -13400,18 +14822,12 @@ msgstr "Konstanta tidak dapat dimodifikasi."
#~ msgid "Input"
#~ msgstr "Masukan"
-#~ msgid "Properties:"
-#~ msgstr "Properti:"
-
#~ msgid "Methods:"
#~ msgstr "Metode-metode:"
#~ msgid "Theme Properties:"
#~ msgstr "Properti-properti Tema:"
-#~ msgid "Enumerations:"
-#~ msgstr "Enumerasi:"
-
#~ msgid "Constants:"
#~ msgstr "Konstanta:"
@@ -13666,10 +15082,6 @@ msgstr "Konstanta tidak dapat dimodifikasi."
#~ msgstr "Sunting Bidang"
#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Pilih Berkas untuk Dipindai"
-
-#, fuzzy
#~ msgid "Add Node.."
#~ msgstr "Tambahkan Node"
@@ -13709,9 +15121,6 @@ msgstr "Konstanta tidak dapat dimodifikasi."
#~ msgid "Public Methods:"
#~ msgstr "Metode Publik:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Item Tema GUI"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Item-item Tema GUI:"
@@ -13761,9 +15170,6 @@ msgstr "Konstanta tidak dapat dimodifikasi."
#~ msgid "Set Transitions to:"
#~ msgstr "Atur transisi ke:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Namai Kembali Trek Anim"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Ubah Interpolasi Trek Anim"
@@ -13923,9 +15329,6 @@ msgstr "Konstanta tidak dapat dimodifikasi."
#~ msgid "Can't write file."
#~ msgstr "Tidak dapat membuat folder."
-#~ msgid "Not found!"
-#~ msgstr "Tidak ditemukan!"
-
#~ msgid "Replace By"
#~ msgstr "Ganti dengan"
@@ -14006,10 +15409,6 @@ msgstr "Konstanta tidak dapat dimodifikasi."
#~ msgid "Pick New Name and Location For:"
#~ msgstr "Tentukan Nama dan Lokasi Baru untuk:"
-#, fuzzy
-#~ msgid "Texture Options"
-#~ msgstr "Opsi Tekstur"
-
#~ msgid "Max Texture Size:"
#~ msgstr "Ukuran Tekstur Maksimum:"
diff --git a/editor/translations/is.po b/editor/translations/is.po
index fc1423d841..916be97fb4 100644
--- a/editor/translations/is.po
+++ b/editor/translations/is.po
@@ -537,7 +537,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -564,7 +565,8 @@ msgstr "Val á kvarða"
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Duplicate Selection"
msgstr "Afrita val"
@@ -588,6 +590,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -604,6 +610,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -652,7 +662,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -740,12 +750,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -800,11 +812,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -854,6 +864,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -924,7 +935,7 @@ msgid "Edit..."
msgstr "Breyta..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -939,6 +950,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -960,8 +979,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1034,16 +1053,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1089,7 +1110,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1210,37 +1231,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1248,7 +1273,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1312,8 +1337,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "Val á kvarða"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1392,7 +1418,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1479,6 +1505,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1494,16 +1528,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1519,7 +1553,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1659,7 +1693,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1692,15 +1766,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1718,7 +1792,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1726,17 +1800,25 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Afrita val"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Fjarlægja val"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1745,19 +1827,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1781,7 +1863,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1836,9 +1918,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1919,8 +2002,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1991,7 +2073,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2076,7 +2158,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2092,8 +2174,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2110,7 +2193,7 @@ msgid "Copy Selection"
msgstr "Fjarlægja val"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2174,7 +2257,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2368,18 +2452,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2550,7 +2638,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2733,6 +2821,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2866,13 +2958,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2880,6 +2971,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2888,7 +2983,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2986,6 +3081,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3012,7 +3115,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3053,6 +3156,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Breyta hnútnum Ferill"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3084,6 +3192,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3108,33 +3220,30 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Breyta:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3154,6 +3263,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3196,12 +3315,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3219,22 +3332,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3248,37 +3384,21 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Hreyfa Viðbótar Lykil"
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3313,7 +3433,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3333,64 +3453,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3398,7 +3524,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3408,135 +3538,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Other Installed Versions:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3662,31 +3823,60 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Duplicate..."
-msgstr "Hreyfimynd Tvöfalda Lykla"
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "Hreyfa Viðbótar Lykil"
+msgid "Duplicate..."
+msgstr "Hreyfimynd Tvöfalda Lykla"
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3766,10 +3956,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3993,52 +4179,50 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Tvíteknir lyklar"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4054,7 +4238,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4062,6 +4250,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4089,6 +4281,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4291,7 +4492,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4509,6 +4710,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "Stillið breyting á:"
@@ -4852,10 +5058,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4864,15 +5078,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4900,6 +5118,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5000,7 +5222,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5043,6 +5269,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5051,8 +5281,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5289,15 +5519,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5355,6 +5586,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5366,19 +5598,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Fjarlægja val"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "Afrita val"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Fjarlægja val"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5610,6 +5851,14 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5622,6 +5871,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5864,6 +6153,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5896,7 +6189,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5957,13 +6250,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Breyta Viðbót"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Breyta Viðbót"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6017,7 +6323,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6290,7 +6595,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6598,6 +6904,22 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6801,7 +7123,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6832,6 +7154,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6954,8 +7281,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6988,10 +7315,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7144,6 +7467,26 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Val á kvarða"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7164,39 +7507,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7352,6 +7699,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7367,6 +7718,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7380,7 +7735,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7388,18 +7743,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7496,6 +7848,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7792,11 +8148,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7817,167 +8168,546 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Stillið breyting á:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No styleboxes found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Updating the editor"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Finalizing"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Filter:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select by data type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "Óvirkt"
+msgid "Deselect All"
+msgstr "Afrita val"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "Óvirkt"
+msgid "Import Selected"
+msgstr "Fjarlægja val"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Remove All Color Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+#, fuzzy
+msgid "Rename Item"
+msgstr "Endurnefning Anim track"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Fjarlægja val"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Fjarlægja val"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Add Color Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Add Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Stillið breyting á:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Stillið breyting á:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Rename Color Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Óvirkt"
+msgid "Edit Items"
+msgstr "Breyta:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Types:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Add Type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Add Item:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Add StyleBox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Fjarlægja val"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Fjarlægja val"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Add Theme Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Old Name:"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Breyta:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Endurnefning Anim track"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Unpin this StyleBox as a main style."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+#, fuzzy
+msgid "Add Type"
+msgstr "Anim bæta við lag"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Anim bæta við lag"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "Óvirkt"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "Óvirkt"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Óvirkt"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8152,6 +8882,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8484,11 +9218,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9316,7 +10045,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9431,7 +10160,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9439,7 +10168,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9447,11 +10176,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9524,7 +10253,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9558,6 +10287,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9702,15 +10443,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9741,7 +10478,7 @@ msgstr "Verkefna Stjóri"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Verkefna Stjóri"
#: editor/project_manager.cpp
@@ -9753,10 +10490,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Verkefna Stjóri"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Verkefna Stjóri"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Verkefna Stjóri"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9766,11 +10518,25 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Verkefna Stjóri"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Fjarlægja val"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Fjarlægja val"
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9778,6 +10544,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9788,8 +10562,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Verkefna Stjóri"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9799,6 +10578,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9840,6 +10623,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9979,19 +10766,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Stillið breyting á:"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10261,6 +11049,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10427,11 +11219,29 @@ msgid "Delete node \"%s\"?"
msgstr "Anim DELETE-lyklar"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10488,6 +11298,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10535,10 +11349,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10810,6 +11620,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10878,6 +11694,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11161,6 +11981,15 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Breyta..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11204,6 +12033,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Allt úrvalið"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11450,6 +12284,16 @@ msgid "Add Output Port"
msgstr "Fjarlægja val"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Anim breyting umskipti"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Anim breyting umskipti"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11562,6 +12406,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Tvíteknir lyklar"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11789,10 +12638,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11822,6 +12667,35 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Breyta..."
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11918,6 +12792,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11930,6 +12840,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11944,6 +12858,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11963,11 +12890,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11996,27 +12961,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Could not create HTTP server directory:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12364,6 +13353,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12433,12 +13429,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12487,6 +13535,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12634,21 +13686,40 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Edit:"
+#~ msgstr "Breyta:"
+
#, fuzzy
#~ msgid "Move Anim Track Up"
#~ msgstr "Færa Anim track upp"
diff --git a/editor/translations/it.po b/editor/translations/it.po
index 60c362c63a..cec4cf1beb 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -59,12 +59,13 @@
# Alessandro Mandelli <mandelli.alessandro@ngi.it>, 2021.
# Jusef Azzolina <rosarioazzolina33@gmail.com>, 2021.
# Daniele Basso <tiziodcaio@gmail.com>, 2021.
+# Riteo Siuga <riteo@posteo.net>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-06-15 19:34+0000\n"
-"Last-Translator: Riteo Siuga <lorenzocerqua@tutanota.com>\n"
+"PO-Revision-Date: 2021-07-26 14:18+0000\n"
+"Last-Translator: Riteo Siuga <riteo@posteo.net>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot/it/>\n"
"Language: it\n"
@@ -72,7 +73,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.7-dev\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -586,7 +587,8 @@ msgstr "Secondi"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -612,7 +614,8 @@ msgstr "Scala la selezione"
msgid "Scale From Cursor"
msgstr "Scala a partire dal cursore"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplica la selezione"
@@ -633,6 +636,11 @@ msgid "Go to Previous Step"
msgstr "Vai al passo precedente"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Reset"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Ottimizza l'animazione"
@@ -649,6 +657,11 @@ msgid "Use Bezier Curves"
msgstr "Usa le curve di Bézier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Incolla delle tracce"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Ottimizzatore anim."
@@ -697,7 +710,7 @@ msgid "Select Tracks to Copy"
msgstr "Seleziona le tracce da copiare"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -783,12 +796,14 @@ msgid "Toggle Scripts Panel"
msgstr "Commuta il pannello degli script"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Ingrandisci"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -845,11 +860,9 @@ msgid "Add"
msgstr "Aggiungi"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -876,6 +889,7 @@ msgid "Deferred"
msgstr "Differita"
#: editor/connections_dialog.cpp
+#, fuzzy
msgid ""
"Defers the signal, storing it in a queue and only firing it at idle time."
msgstr ""
@@ -901,6 +915,7 @@ msgstr "Impossibile connettere il segnale"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -970,7 +985,8 @@ msgid "Edit..."
msgstr "Modifica..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Vai al metodo"
#: editor/create_dialog.cpp
@@ -985,6 +1001,14 @@ msgstr "Cambia"
msgid "Create New %s"
msgstr "Crea un nuovo %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Nessun risultato per \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -1006,8 +1030,8 @@ msgstr "Cerca:"
msgid "Matches:"
msgstr "Corrispondenze:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1083,19 +1107,23 @@ msgid "Owners Of:"
msgstr "Proprietari di:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Rimuovere i file selezionati dal progetto? (non annullabile)\n"
"Sarà possibile ripristinarli accedendo al cestino di sistema."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"I file che stanno per essere rimossi sono richiesti per il funzionamento di "
"altre risorse.\n"
@@ -1144,7 +1172,7 @@ msgstr "Esplora risorse orfane"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1172,7 +1200,7 @@ msgstr "Grazie dalla comunità di Godot!"
#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp
msgid "Click to copy."
-msgstr ""
+msgstr "Clicca per copiare."
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
@@ -1269,28 +1297,41 @@ msgstr "Componenti"
msgid "Licenses"
msgstr "Licenze"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Errore nell'apertura del file del pacchetto, non è in formato ZIP."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Errore nell'apertura del file package (non è in formato ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (già esistente)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Estrazione asset"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Impossibile estrarre i seguenti file dal pacchetto:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "E %s altri file."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Pacchetto installato con successo!"
#: editor/editor_asset_installer.cpp
@@ -1298,16 +1339,13 @@ msgstr "Pacchetto installato con successo!"
msgid "Success!"
msgstr "Successo!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Contenuti del pacchetto:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Installa"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Installatore di pacchetti"
#: editor/editor_audio_buses.cpp
@@ -1373,7 +1411,8 @@ msgid "Bypass"
msgstr "Bypassa"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Opzioni del bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1453,7 +1492,7 @@ msgstr "Aggiungi bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Aggiungi un nuovo bus audio a questa disposizione."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1546,6 +1585,15 @@ msgid "Can't add autoload:"
msgstr "Non è possibile aggiungere l'autoload:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "File inesistente."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Aggiungi un Autoload"
@@ -1561,16 +1609,17 @@ msgid "Node Name:"
msgstr "Nome del nodo:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nome"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Valiabile"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Incolla dei parametri"
@@ -1586,7 +1635,7 @@ msgstr "Memorizzazione dei cambiamenti locali…"
msgid "Updating scene..."
msgstr "Aggiornamento della scena..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[vuoto]"
@@ -1745,8 +1794,49 @@ msgid "Import Dock"
msgstr "Pannello d'importazione"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Eliminare il profilo \"%s\"? (non annullabile)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Corrente)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1779,15 +1869,18 @@ msgid "Enable Contextual Editor"
msgstr "Abilita l'editor contestuale"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Proprietà abilitate:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Proprietà:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Funzionalità abilitate:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Funzionalità"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Classi abilitate:"
#: editor/editor_feature_profile.cpp
@@ -1807,25 +1900,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Errore di salvataggio del profilo nel percorso: \"%s\"."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Disattiva"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Ripristinare le impostazioni predefinite"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Profilo attuale:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Rendi attuale"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Cancella il profilo"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Nuovo"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Rimuovi Tile"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Profili disponibili:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Rendi attuale"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importazione"
@@ -1834,22 +1936,24 @@ msgid "Export"
msgstr "Esporta"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Profili disponibili:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Profilo attuale:"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Opzioni Texture"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Opzioni della classe"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "New profile name:"
msgstr "Nome del nuovo profilo:"
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Cancella il profilo"
-
-#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
msgstr "Profilo di funzionalità di Godot"
@@ -1870,7 +1974,8 @@ msgid "Select Current Folder"
msgstr "Seleziona la cartella attuale"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "File esistente, sovrascriverlo?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1924,9 +2029,10 @@ msgid "Open a File or Directory"
msgstr "Apri un file o una cartella"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Salva"
@@ -2007,8 +2113,7 @@ msgid "Directories & Files:"
msgstr "File e cartelle:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Anteprima:"
@@ -2083,7 +2188,7 @@ msgstr "Proprietà del tema"
msgid "Enumerations"
msgstr "Enumerazioni"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Costanti"
@@ -2172,7 +2277,7 @@ msgstr "Metodo"
msgid "Signal"
msgstr "Segnale"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Costante"
@@ -2188,9 +2293,10 @@ msgstr "Proprietà del tema"
msgid "Property:"
msgstr "Proprietà:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Imposta"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Imposta %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2205,7 +2311,7 @@ msgid "Copy Selection"
msgstr "Copia selezione"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2270,7 +2376,8 @@ msgid "Imported resources can't be saved."
msgstr "Le risorse importate non possono essere salvate."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2348,7 +2455,7 @@ msgid ""
msgstr ""
"Questa scena non può essere salvata perché contiene un'istanziazione "
"ciclica.\n"
-"Riprovare ad eseguire il salvataggio dopo aver risolto il problema."
+"Riprovare a eseguire il salvataggio dopo aver risolto il problema."
#: editor/editor_node.cpp
msgid ""
@@ -2495,18 +2602,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Salvare le modifiche a \"%s\" prima di chiudere?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Salvate %s risorse modificate."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "È necessario un nodo radice per salvare la scena."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Salva la scena come…"
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Questa operazione non può essere eseguita senza una scena."
@@ -2708,7 +2820,7 @@ msgstr "Elimina disposizione"
msgid "Default"
msgstr "Predefinito"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Mostra nel filesystem"
@@ -2889,6 +3001,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Explorer di risorse orfane…"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Rinomina progetto"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Esci e torna alla lista dei progetti"
@@ -2962,7 +3079,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Synchronize Scene Changes"
-msgstr "Sincronizza i cambi della scena"
+msgstr "Sincronizza i cambiamenti delle scene"
#: editor/editor_node.cpp
msgid ""
@@ -2978,9 +3095,10 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Synchronize Script Changes"
-msgstr "Sincronizza Modifiche Script"
+msgstr "Sincronizza le modifiche degli script"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
"When this option is enabled, any script that is saved will be reloaded in "
"the running project.\n"
@@ -2989,7 +3107,7 @@ msgid ""
msgstr ""
"Quando questa opzione è abilitata, qualsiasi script salvato verrà ricaricato "
"nel progetto in esecuzione.\n"
-"Quando usato in remoto su un dispositivo, essa risulta più efficate "
+"Quando usato in remoto su un dispositivo, essa risulta più efficace "
"abilitando l'opzione \"network filesystem\"."
#: editor/editor_node.cpp editor/script_create_dialog.cpp
@@ -3047,21 +3165,26 @@ msgstr "Gestisci i modelli d'esportazione…"
msgid "Help"
msgstr "Aiuto"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
+#: editor/editor_node.cpp
#, fuzzy
-msgid "Online Docs"
-msgstr "Documentazione online"
+msgid "Online Documentation"
+msgstr "Apri la documentazione"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Domande e risposte"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Segnala un problema"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "Imposta un Valore"
+
+#: editor/editor_node.cpp
+#, fuzzy
msgid "Send Docs Feedback"
msgstr "Valuta la documentazione"
@@ -3070,7 +3193,8 @@ msgid "Community"
msgstr "Comunità"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Informazioni su Godot"
#: editor/editor_node.cpp
@@ -3078,6 +3202,7 @@ msgid "Support Godot Development"
msgstr "Supporta lo sviluppo di Godot"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Play the project."
msgstr "Esegui il progetto."
@@ -3091,7 +3216,7 @@ msgstr "Metti in pausa l'esecuzione della scena per eseguire il debug."
#: editor/editor_node.cpp
msgid "Pause Scene"
-msgstr "Pausa scena"
+msgstr "Pausa la scena"
#: editor/editor_node.cpp
msgid "Stop the scene."
@@ -3115,7 +3240,7 @@ msgstr "Avvia una scena personalizzata"
#: editor/editor_node.cpp
msgid "Changing the video driver requires restarting the editor."
-msgstr "Il cambiamento dei driver video necessita il riavvio dell'editor."
+msgstr "Il cambiamento dei driver video necessita di un riavvio dell'editor."
#: editor/editor_node.cpp editor/project_settings_editor.cpp
#: editor/settings_config_dialog.cpp
@@ -3131,6 +3256,7 @@ msgid "Update Continuously"
msgstr "Aggiorna continuamente"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Update When Changed"
msgstr "Aggiorna quando modificata"
@@ -3170,6 +3296,16 @@ msgid "Manage Templates"
msgstr "Gestisci i modelli d'esportazione"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Installa Da File"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Seleziona una Mesh Sorgente:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3208,17 +3344,18 @@ msgstr "Importa i modelli da un file ZIP"
msgid "Template Package"
msgstr "Pacchetto di modelli"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
msgid "Export Library"
msgstr "Esporta Libreria"
#: editor/editor_node.cpp
msgid "Merge With Existing"
-msgstr "Unisci Con Esistente"
+msgstr "Unisci con una esistente"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
-msgstr "Apri ed Esegui uno Script"
+msgstr "Apri ed esegui uno script"
#: editor/editor_node.cpp
msgid ""
@@ -3244,35 +3381,41 @@ msgstr "Nuova ereditata"
#: editor/editor_node.cpp
msgid "Load Errors"
-msgstr "Carica errori"
+msgstr "Errori di caricamento"
#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
msgid "Select"
msgstr "Seleziona"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Seleziona la cartella attuale"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
-msgstr "Apri Editor 2D"
+msgstr "Apri l'editor 2D"
#: editor/editor_node.cpp
msgid "Open 3D Editor"
-msgstr "Apri Editor 3D"
+msgstr "Apri l'editor 3D"
#: editor/editor_node.cpp
msgid "Open Script Editor"
-msgstr "Apri Editor degli script"
+msgstr "Apri l'editor degli script"
#: editor/editor_node.cpp editor/project_manager.cpp
+#, fuzzy
msgid "Open Asset Library"
-msgstr "Apri Libreria degli Asset"
+msgstr "Apri la libreria degli Asset"
#: editor/editor_node.cpp
msgid "Open the next Editor"
-msgstr "Apri l'Editor successivo"
+msgstr "Apri l'editor successivo"
#: editor/editor_node.cpp
msgid "Open the previous Editor"
-msgstr "Apri l'Editor precedente"
+msgstr "Apri l'editor precedente"
#: editor/editor_node.h
msgid "Warning!"
@@ -3282,9 +3425,14 @@ msgstr "Attenzione!"
msgid "No sub-resources found."
msgstr "Nessuna sottorisorsa trovata."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Nessuna sottorisorsa trovata."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
-msgstr "Creazione Anteprime Mesh"
+msgstr "Creando le anteprime delle mesh"
#: editor/editor_plugin.cpp
msgid "Thumbnail..."
@@ -3292,11 +3440,11 @@ msgstr "Miniatura..."
#: editor/editor_plugin_settings.cpp
msgid "Main Script:"
-msgstr "Script Principale:"
+msgstr "Script principale:"
#: editor/editor_plugin_settings.cpp
msgid "Edit Plugin"
-msgstr "Modifica estensione"
+msgstr "Modifica l'estensione"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
@@ -3306,54 +3454,68 @@ msgstr "Estensioni installate:"
msgid "Update"
msgstr "Aggiorna"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versione:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autore:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Stato:"
+#, fuzzy
+msgid "Author"
+msgstr "Autori"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Modifica:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Stato"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Misura:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr "Tempo Frame (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "Tempo fotogramma (sec)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
-msgstr "Tempo Medio (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
+msgstr "Tempo medio (sec)"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Frame %"
-msgstr "Frame %"
+msgstr "% fotogramma"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Physics Frame %"
-msgstr "Fotogramma della Fisica %"
+msgstr "% fotogramma fisico"
#: editor/editor_profiler.cpp
msgid "Inclusive"
msgstr "Inclusivo"
#: editor/editor_profiler.cpp
+#, fuzzy
msgid "Self"
msgstr "Se stesso"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
-msgstr "Frame #:"
+msgstr "Fotogramma #:"
#: editor/editor_profiler.cpp
msgid "Time"
@@ -3365,7 +3527,7 @@ msgstr "Chiamate"
#: editor/editor_properties.cpp
msgid "Edit Text:"
-msgstr "Modifica Testo:"
+msgstr "Modifica il testo:"
#: editor/editor_properties.cpp editor/script_create_dialog.cpp
msgid "On"
@@ -3389,77 +3551,37 @@ msgstr "Assegna..."
#: editor/editor_properties.cpp
msgid "Invalid RID"
-msgstr "RID Invalido"
-
-#: editor/editor_properties.cpp
-msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"La risorsa selezionata (%s) non corrisponde ad alcun tipo atteso per questa "
-"proprietà (%s)."
+msgstr "RID non valido"
#: editor/editor_properties.cpp
msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
-"Impossibile creare ViewportTexture da risorse salvate come file.\n"
-"La risorsa deve appartenere ad una scena."
+"Impossibile creare un ViewportTexture su delle risorse salvate come file.\n"
+"Esse devono appartenere a una scena."
#: editor/editor_properties.cpp
+#, fuzzy
msgid ""
"Can't create a ViewportTexture on this resource because it's not set as "
"local to scene.\n"
"Please switch on the 'local to scene' property on it (and all resources "
"containing it up to a node)."
msgstr ""
-"Impossibile creare ViewportTexture da questa risorsa perché non è definita "
-"localmente in una scena.\n"
-"Per favore attivare la proprietà \"local to scene\" sulla risorsa (e su "
-"tutte le risorse che la contengono, fino al nodo che le utilizza)."
+"Impossibile creare un VieportTexture su questa risorsa perché non è stata "
+"impostata come locale alla scena.\n"
+"Per favore attivare la properietà \"local to scene\" su di essa (e su tutte "
+"quelle che la contengono fino ad arrivare a un nodo)."
#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Pick a Viewport"
-msgstr "Scegli una Vista"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Nuovo Script"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Estendi Script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Nuovo %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Rendi Unico"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Incolla"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Converti In %s"
+msgstr "Selezionare una vista"
#: editor/editor_properties.cpp editor/property_editor.cpp
+#, fuzzy
msgid "Selected node is not a Viewport!"
-msgstr "Il nodo selezionato non è una Viewport!"
+msgstr "Il nodo selezionato non è un Viewport!"
#: editor/editor_properties_array_dict.cpp
msgid "Size: "
@@ -3472,19 +3594,63 @@ msgstr "Pagina: "
#: editor/editor_properties_array_dict.cpp
#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Item"
-msgstr "Rimuovi Elemento"
+msgstr "Rimuovi l'elemento"
#: editor/editor_properties_array_dict.cpp
msgid "New Key:"
-msgstr "Nuova Chiave:"
+msgstr "Nuova chiave:"
#: editor/editor_properties_array_dict.cpp
msgid "New Value:"
-msgstr "Nuovo Valore:"
+msgstr "Nuovo valore:"
#: editor/editor_properties_array_dict.cpp
msgid "Add Key/Value Pair"
-msgstr "Aggiungi Coppia Chiave/Valore"
+msgstr "Aggiungi una coppia chiave/valore"
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"La risorsa selezionata (%s) non corrisponde ad alcun tipo previsto per "
+"questa proprietà (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Make Unique"
+msgstr "Rendi unico"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Incolla"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Converti in %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Nuovo %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Nuovo script"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Estendi script"
#: editor/editor_run_native.cpp
msgid ""
@@ -3492,13 +3658,15 @@ msgid ""
"Please add a runnable preset in the Export menu or define an existing preset "
"as runnable."
msgstr ""
-"Nessuna esportazione eseguibile trovata per questa piattaforma.\n"
-"Per favore, aggiungi un preset eseguibile nel menù Export oppure definisci "
-"un preset già esistente come \"eseguibile\"."
+"Nessuna preimpostazione di esportazione eseguibile trovata per questa "
+"piattaforma.\n"
+"Per favore, aggiungerne una nel menù di esportazione o impostarne una già "
+"esistente come eseguibile."
#: editor/editor_run_script.cpp
+#, fuzzy
msgid "Write your logic in the _run() method."
-msgstr "Scrivi la logica nel metodo _run()."
+msgstr "Inserire la logica dello script nel metodo _run()."
#: editor/editor_run_script.cpp
msgid "There is an edited scene already."
@@ -3521,7 +3689,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Hai dimenticato il metodo \"_run\"?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Tenere premuto il tasto Ctrl per arrotondare ai numeri interi. Tenere "
"premuto Shift per modifiche più precise."
@@ -3543,117 +3712,69 @@ msgid "Import From Node:"
msgstr "Importa Da Nodo:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Ri-Scarica"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Disinstalla"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Installato)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Scarica"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
-"I template ufficiali per l'esportazione non sono disponibili per le build di "
-"sviluppo."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Mancante)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Corrente)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "File \"%s\" assente."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Recupero dei mirror, attendi..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Rimuovere versione \"%s\" del template?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Impossibile aprire zip dei template d'esportazionie."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Formato di version.txt non valido nei templates: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Non é stato trovato version.txt all'interno di templates."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Errore di creazione del percorso per i template:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Estrazione Templates d'Esportazione"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importo:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Errore nella ricezione della lista dei mirror."
+msgid "Error requesting URL:"
+msgstr "Errore nella richiesta URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Errore elaborazione JSON della lista dei mirror. Si prega di segnalare "
-"questo problema!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Connessione al mirror in corso..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Nessun collegamento di download trovato per questa versione. I download "
-"diretti sono disponibili solo per i rilasci ufficiali."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Impossibile risolvere l'hostname:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Impossibile risolvere."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Impossibile connetersi all'host:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Impossibile connettersi."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Nessuna risposta dall'host:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Nessuna risposta."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Richiesta fallita."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Ridirigi Loop."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Richiesta fallita, troppi ridirezionamenti"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Fallito:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Richiesta fallita."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Download Completato."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3668,12 +3789,27 @@ msgstr ""
"Gli archivi dei template problematici possono essere trovati qui: \"%s\"."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Errore nella richiesta URL:"
+msgid "Error getting the list of mirrors."
+msgstr "Errore nella ricezione della lista dei mirror."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Connessione al mirror in corso..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Errore elaborazione JSON della lista dei mirror. Si prega di segnalare "
+"questo problema!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Nessun collegamento di download trovato per questa versione. I download "
+"diretti sono disponibili solo per i rilasci ufficiali."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3718,44 +3854,140 @@ msgid "SSL Handshake Error"
msgstr "Errore Handshake SSL"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Impossibile aprire zip dei template d'esportazionie."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Formato di version.txt non valido nei templates: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Non é stato trovato version.txt all'interno di templates."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Errore di creazione del percorso per i template:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Estrazione Templates d'Esportazione"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importo:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Rimuovere versione \"%s\" del template?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Decomprimendo Android Build Sources"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Gestore Template Esportazione"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versione Corrente:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Versioni Installate:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Apri file"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Disinstalla"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Valore iniziale per il contatore"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Errore durante il download"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"I template ufficiali per l'esportazione non sono disponibili per le build di "
+"sviluppo."
#: editor/export_template_manager.cpp
-msgid "Install From File"
+#, fuzzy
+msgid "Install from File"
msgstr "Installa Da File"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Rimuovi Template"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importa i modelli da un file ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Annulla"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Seleziona file template"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Impossibile aprire zip dei template d'esportazionie."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Modello di Esportazione Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Versioni Installate:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Gestore Template Esportazione"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Disinstalla"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Seleziona file template"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Scarica Modelli"
+msgid "Godot Export Templates"
+msgstr "Modello di Esportazione Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Seleziona mirror dalla lista: (Shift+Click: Apri in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3890,29 +4122,62 @@ msgstr "Nuovo Script..."
msgid "New Resource..."
msgstr "Nuova Risorsa..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Espandi Tutto"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Comprimi Tutto"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplica..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Cerca file"
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Sposta nel cestino"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Ultima Modifica"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Ultima Modifica"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplica..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Rinomina..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Cartella/File precedente"
@@ -3996,10 +4261,6 @@ msgstr "Trova..."
msgid "Replace..."
msgstr "Sostituisci..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Annulla"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Trova: "
@@ -4223,53 +4484,55 @@ msgid "Failed to load resource."
msgstr "Caricamento della risorsa fallito."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Espandi Tutte le Proprietà"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Proprietà"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Comprimi Tutte le Proprietà"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Salva Come..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Proprietà"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Copia parametri"
+msgid "Make Sub-Resources Unique"
+msgstr "Rendi Sotto-risorse Uniche"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Modifica gli appunti delle risorse"
+msgid "Create a new resource in memory and edit it."
+msgstr "Crea una nuova risorsa in memoria e modificala."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Copia Risorsa"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Carica una risorsa esistente dal disco e modificala."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Rendi Built-In"
+msgid "Save the currently edited resource."
+msgstr "Salva la risorsa in modifica."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Rendi Sotto-risorse Uniche"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Salva Come..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Apri in Aiuto"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Non è nel percorso risorse."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Crea una nuova risorsa in memoria e modificala."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Modifica gli appunti delle risorse"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Carica una risorsa esistente dal disco e modificala."
+msgid "Copy Resource"
+msgstr "Copia Risorsa"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Salva la risorsa in modifica."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Rendi Built-In"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4284,14 +4547,24 @@ msgid "History of recently edited objects."
msgstr "Cronologia di oggetti recentemente modificati."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Proprietà oggetto."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Apri la documentazione"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Apri la documentazione"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtra proprietà"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Proprietà oggetto."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "I cambiamenti potrebbero essere persi!"
@@ -4319,6 +4592,15 @@ msgstr "Nome dell'estensione:"
msgid "Subfolder:"
msgstr "Sottocartella:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autore:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versione:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Lingua:"
@@ -4499,7 +4781,7 @@ msgstr "Rimuovi Triangolo BlendSpace2D"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "BlendSpace2D does not belong to an AnimationTree node."
-msgstr "BlendSpace2D non appartiene ad un nodo AnimationTree."
+msgstr "BlendSpace2D non appartiene a un nodo AnimationTree."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "No triangles exist, so no blending can take place."
@@ -4527,7 +4809,8 @@ msgid "Blend:"
msgstr "Blend:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parametro Modificato"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4750,6 +5033,11 @@ msgid "Animation"
msgstr "Animazione"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Nuovo"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Modifica Transizioni..."
@@ -5091,10 +5379,18 @@ msgid "View Files"
msgstr "Vedi Files"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Scarica"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Errore di connessione, si prega di riprovare."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Impossibile connettersi."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Impossibile connetersi all'host:"
@@ -5103,16 +5399,20 @@ msgid "No response from host:"
msgstr "Nessuna risposta dall'host:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Nessuna risposta."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Impossibile risolvere l'hostname:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Richiesta fallita, codice di return:"
+msgid "Can't resolve."
+msgstr "Impossibile risolvere."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Richiesta fallita."
+msgid "Request failed, return code:"
+msgstr "Richiesta fallita, codice di return:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5139,6 +5439,10 @@ msgid "Timeout."
msgstr "Timeout."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Fallito:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Hash di download non buono, si presume il file sia stato manipolato."
@@ -5239,8 +5543,12 @@ msgid "All"
msgstr "Tutti"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Nessun risultato per \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5282,6 +5590,10 @@ msgstr "Caricamento…"
msgid "Assets ZIP File"
msgstr "ZIP File degli Asset"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5292,9 +5604,10 @@ msgstr ""
"Salva la scena e riprova."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Nessuna mesh da preprocessare. Assicurarsi che contengano un canale UV2 e "
"che la spunta \"Bake Light\" sia abilitata."
@@ -5544,9 +5857,10 @@ msgstr "Cambia Ancore"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Sovrascrivi Camera Gioco\n"
"Sovrascrive la camera del gioco con la camera del viewport dell'editor."
@@ -5554,11 +5868,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Sovrascrivi Camera Gioco\n"
-"Nessuna istanza gioco in funzione."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5613,6 +5926,7 @@ msgstr ""
"determinati solo dal loro genitore."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5624,22 +5938,32 @@ msgid "Select Mode"
msgstr "Modalità di selezione"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Trascina: Ruota"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Rimuovi il nodo o la transizione selezionati."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Drag: Muovi"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Rimuovi il nodo o la transizione selezionati."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Premi \"v\" per Cambiare Perno, \"Shift+v\" per Trascinare il Pernno "
-"(durante lo spostamento)."
+"Mostra una lista di tutti gli oggetti alla posizione cliccata\n"
+"(identico a Alt+RMB in modalità selezione)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+RMB: Selezione Lista Profondità"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5894,6 +6218,16 @@ msgid "Clear Pose"
msgstr "Azzera posa"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Aggiungi Nodo"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Istanzia Scena(e)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Moltiplica per 2 il passo della griglia"
@@ -5906,6 +6240,52 @@ msgid "Pan View"
msgstr "Trasla Visuale"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Rimpicciolisci"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Rimpicciolisci"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Rimpicciolisci"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Rimpicciolisci"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Rimpicciolisci"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Rimpicciolisci"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Aggiungi %s"
@@ -6151,6 +6531,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Impossibile creare una singola forma di collisione convessa."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Crea Singola Forma di Collisione Convessa"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Crea Singola Forma di Collisione Convessa"
@@ -6186,7 +6571,8 @@ msgid "No mesh to debug."
msgstr "Nessuna mesh da debuggare."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Il modello non ha UV su questo layer"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6255,13 +6641,27 @@ msgstr ""
"collisioni."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Crea Singolo Fratello di Collisione Convessa"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Crea Multipli Fratelli di Collsione Convessa"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Crea una forma di collisione basata sui poligoni.\n"
"Questa opzione é, in termini di perfomance, un compromesso tra le due "
@@ -6324,7 +6724,6 @@ msgid "Mesh Library"
msgstr "Libreria Mesh"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Aggiungi Elemento"
@@ -6600,7 +6999,8 @@ msgid "Close Curve"
msgstr "Chiudi curva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Opzioni"
@@ -6658,7 +7058,7 @@ msgstr "Spostare il giunto"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid ""
"The skeleton property of the Polygon2D does not point to a Skeleton2D node"
-msgstr "La proprietà scheletro del Polygon2D non punta ad un nodo Skeleton2D"
+msgstr "La proprietà scheletro del Polygon2D non punta a un nodo Skeleton2D"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Sync Bones"
@@ -6912,9 +7312,29 @@ msgstr "Carica risorsa"
msgid "ResourcePreloader"
msgstr "Preloader Risorsa"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Ribalta orizzontalmente"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Conteggio Punti Generati:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Conteggio Punti Generati:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Ribalta orizzontalmente"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
-msgstr "AnimationTree non ha nessun percorso impostato ad un AnimationPlayer"
+msgstr "AnimationTree non ha nessun percorso impostato a un AnimationPlayer"
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "Path to AnimationPlayer is invalid"
@@ -6982,10 +7402,11 @@ msgid "Script is not in tool mode, will not be able to run."
msgstr "Lo script non è in modalità tool, non sarà possibile eseguirlo."
#: editor/plugins/script_editor_plugin.cpp
+#, fuzzy
msgid ""
"To run this script, it must inherit EditorScript and be set to tool mode."
msgstr ""
-"Per eseguire questo script, esso deve ereditare EditorScript ed essere "
+"Per eseguire questo script, esso deve ereditare da EditorScript ed essere "
"impostato in modalità tool."
#: editor/plugins/script_editor_plugin.cpp
@@ -7118,7 +7539,7 @@ msgstr "Esegui"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Cerca"
@@ -7149,6 +7570,12 @@ msgid "Debug with External Editor"
msgstr "Debug con un editor esterno"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#, fuzzy
+msgid "Online Docs"
+msgstr "Documentazione online"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Apri la documentazione online di Godot."
@@ -7277,8 +7704,8 @@ msgstr "Vai a"
msgid "Cut"
msgstr "Taglia"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Seleziona tutto"
@@ -7311,10 +7738,6 @@ msgid "Unfold All Lines"
msgstr "Espandi tutte le linee"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Clona sotto"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Completa il simbolo"
@@ -7468,6 +7891,28 @@ msgid "View Plane Transform."
msgstr "Visualizza la trasformazione del piano."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Nessuno"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Stato"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Trasla:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Scala:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Scalatura: "
@@ -7488,42 +7933,54 @@ msgid "Animation Key Inserted."
msgstr "Chiave d'animazione inserita."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Inclinazione"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Imbardata"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Dimensione"
+#, fuzzy
+msgid "Size:"
+msgstr "Dimensione: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Oggetti disegnati"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Cambiamenti dei materiali"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Cambiamenti degli shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Cambiamenti delle superfici"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Draw Calls"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Vertici"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Vista dall'alto."
@@ -7676,6 +8133,11 @@ msgid "Freelook Slow Modifier"
msgstr "Modificatore Vista Libera Velocità Lenta"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Cambia dimensione Telecamera"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Rotazione Vista Bloccata"
@@ -7696,6 +8158,11 @@ msgstr ""
"gioco."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Converti in %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Finestra di XForm"
@@ -7716,7 +8183,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr "Scatta i nodi sul pavimento"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7726,16 +8193,6 @@ msgstr ""
"Impossibile trovare un pavimento solido sul quale scattare la selezione."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Trascina: Ruota\n"
-"Alt+Trascina: Sposta\n"
-"Alt+RMB: Selezione Lista Profondità"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Usa Spazio Locale"
@@ -7745,6 +8202,10 @@ msgid "Use Snap"
msgstr "Scatta"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Vista dal basso"
@@ -7840,6 +8301,11 @@ msgid "View Grid"
msgstr "Visualizza Griglia"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Impostazioni Viewport"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Impostazioni…"
@@ -8135,11 +8601,6 @@ msgid "Snap Mode:"
msgstr "Modalità dello scatto:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Nessuno"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
#, fuzzy
msgid "Pixel Snap"
msgstr "Scatto sui pixel"
@@ -8162,166 +8623,604 @@ msgid "Step:"
msgstr "Passo:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Sep.:"
+msgid "Separation:"
+msgstr "Separazione:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "TextureRegion"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Aggiungi Tutti gli Elementi"
+#, fuzzy
+msgid "Colors"
+msgstr "Colore"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Aggiungi Tutti"
+#, fuzzy
+msgid "Fonts"
+msgstr "Font"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Icona"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Stile Box"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Nessuna sottorisorsa trovata."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Costanti"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Costante di colore."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Non trovato!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Non trovato!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Nessuna sottorisorsa trovata."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Importa tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Uscire dall'editor?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analizzando"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtro:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Scegli un Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Prima seleziona un oggetto di impostazione!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Prima seleziona un oggetto di impostazione!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Prima seleziona un oggetto di impostazione!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Prima seleziona un oggetto di impostazione!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Prima seleziona un oggetto di impostazione!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Prima seleziona un oggetto di impostazione!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Comprimi Tutto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Espandi Tutto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Seleziona file template"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Selezione Punti"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Seleziona tutto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importa Scena"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Rimuovi tutti gli elementi"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Rimuovi Tutto"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Rimuovi l'elemento"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Modifica Tema"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Rimuovi tutti gli elementi"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Menu di modifica dei temi."
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Rimuovi tutti gli elementi"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Rimuovi tutti gli elementi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Rimuovi tutti gli elementi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
msgstr "Aggiungi Elementi di Classe"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Aggiungi Elementi di Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Aggiungi Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Aggiungi Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Aggiungi Tutti gli Elementi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Rimuovi Elementi di Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Rimuovi Elementi di Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Rinomina Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Rinomina Nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Rimuovi Elementi Selezionati"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "File non valido, non è una disposizione di un bus audio."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Gestisci i modelli d'esportazione"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Elemento Modificabile"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Aggiungi Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Aggiungi Tutti gli Elementi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Rimuovi l'elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Rimuovi Elementi di Classe"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Crea Template Vuota"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Rimuovi Elementi di Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Rimuovi tutti gli elementi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Elementi Tema GUI"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nome del nodo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importa tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Predefinito"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Modifica Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Elimina risorsa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Importa tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Traccia Anim Rinomina"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Rinomina in blocco"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Sovrascrizioni"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Tipo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Aggiungi Elemento"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Tipo di nodo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Carica i predefiniti"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Sovrascrizioni"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Crea Template Editor Vuota"
+msgid "Override all default type items."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Crea da Tema Editor corrente"
+#, fuzzy
+msgid "Theme:"
+msgstr "Tema"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
+msgid "Manage Items..."
+msgstr "Gestisci i modelli d'esportazione…"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Anteprima"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Aggiorna Anteprima"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Seleziona una Mesh Sorgente:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
msgid "Toggle Button"
msgstr "Interruttore"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Pulsante disabilitato"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Elemento"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Oggetto disabilitato"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Check Item"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Checked Item"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Radio Elemento"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Elemento Radio Controllato"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Chiamato Sep."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Sottomenù"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Sotto-Elemento 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Sotto-Elemento 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Ha"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Molte"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "Editor di Linea disabilitato"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Tab 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Tab 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Elemento Modificabile"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Sottoalbero"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Ha,Molte,Opzioni"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Tipo Dato:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Icona"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Stile"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Font"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Colore"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "File non valido, non è una disposizione di un bus audio."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "File Tema"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8494,6 +9393,10 @@ msgid "Priority"
msgstr "Priorità"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Icona"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Indice Z"
@@ -8831,11 +9734,6 @@ msgid "Commit Changes"
msgstr "Commit Cambiamenti"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Stato"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
"Visualizza i file diffs prima di eseguire il commit nella versione più "
@@ -9322,8 +10220,9 @@ msgid "Finds the nearest even integer to the parameter."
msgstr "Trova il numero intero pari più vicino al parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid "Clamps the value between 0.0 and 1.0."
-msgstr "Blocca il valore tra 0.0 ed 1.0."
+msgstr "Blocca il valore tra 0.0 e 1.0."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Extracts the sign of the parameter."
@@ -9342,6 +10241,7 @@ msgid "Returns the square root of the parameter."
msgstr "Restituisce la radice quadrata del parametro."
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid ""
"SmoothStep function( scalar(edge0), scalar(edge1), scalar(x) ).\n"
"\n"
@@ -9353,7 +10253,7 @@ msgstr ""
"\n"
"Restituisce 0.0 se \"x\" è più piccolo di \"edge0\", o 1.0 se \"x\" è più "
"grande di \"edge1\". Altrimenti, il valore di ritorno è interpolato tra 0.0 "
-"ed 1.0 usando i polinomi di Hermite."
+"e 1.0 usando i polinomi di Hermite."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
@@ -9430,6 +10330,7 @@ msgid "Transform function."
msgstr "Funzione di trasformazione."
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid ""
"Calculate the outer product of a pair of vectors.\n"
"\n"
@@ -9513,6 +10414,7 @@ msgid "Calculates the dot product of two vectors."
msgstr "Calcola il prodotto scalare di due vettori."
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid ""
"Returns the vector that points in the same direction as a reference vector. "
"The function has three vector parameters : N, the vector to orient, I, the "
@@ -9562,6 +10464,7 @@ msgid "Returns the vector that points in the direction of refraction."
msgstr "Restituisce un vettore che punta nella direzione della refrazione."
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid ""
"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n"
"\n"
@@ -9571,11 +10474,12 @@ msgid ""
msgstr ""
"SmoothStep function( vector(edge0), vector(edge1), vector(x) ).\n"
"\n"
-"Restituisce 0.0 se \"x\" è minore di \"edge0\", ed 1.0 se \"x\" è più grande "
-"di \"edge1\". Altrimenti, il valore di ritorno è interpolato tra 0.0 ed 1.0 "
+"Restituisce 0.0 se \"x\" è minore di \"edge0\", e 1.0 se \"x\" è più grande "
+"di \"edge1\". Altrimenti, il valore di ritorno è interpolato tra 0.0 e 1.0 "
"usando i polinomiali di Hermite."
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid ""
"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n"
"\n"
@@ -9585,8 +10489,8 @@ msgid ""
msgstr ""
"SmoothStep function( scalar(edge0), scalar(edge1), vector(x) ).\n"
"\n"
-"Restituisce 0.0 se \"x\" è minore di \"edge0\", ed 1.0 se \"x\" è più grande "
-"di \"edge1\". Altrimenti, il valore di ritorno è interpolato tra 0.0 ed 1.0 "
+"Restituisce 0.0 se \"x\" è minore di \"edge0\", e 1.0 se \"x\" è più grande "
+"di \"edge1\". Altrimenti, il valore di ritorno è interpolato tra 0.0 e 1.0 "
"usando i polinomiali di Hermite."
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9638,13 +10542,14 @@ msgid "Vector uniform."
msgstr "Uniforme vettore."
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid ""
"Custom Godot Shader Language expression, with custom amount of input and "
"output ports. This is a direct injection of code into the vertex/fragment/"
"light function, do not use it to write the function declarations inside."
msgstr ""
"Una espressione del Custom Godot Shader Language, con quantità "
-"personalizzabile di porte input ed output. Questa è una iniezione diretta di "
+"personalizzabile di porte input e output. Questa è una iniezione diretta di "
"codice nella funzione vertex/fragment/light. Non usarla per scrivere le "
"dichiarazione della funzione all'interno."
@@ -9654,7 +10559,7 @@ msgid ""
"direction of camera (pass associated inputs to it)."
msgstr ""
"Restituisce il decadimento in base al prodotto scalare della normale della "
-"superfice e direzione della telecamera (passa gli input associati ad essa)."
+"superfice e direzione della telecamera (passa gli input associati a essa)."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid ""
@@ -9669,8 +10574,9 @@ msgstr ""
"dichiarare varianti, uniformi e costanti."
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid "A reference to an existing uniform."
-msgstr "Un riferimento ad una uniform esistente."
+msgstr "Un riferimento a una uniform esistente."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "(Fragment/Light mode only) Scalar derivative function."
@@ -9713,27 +10619,30 @@ msgstr ""
"differenziazione locale."
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid ""
"(Fragment/Light mode only) (Vector) Sum of absolute derivative in 'x' and "
"'y'."
msgstr ""
"(Soltanto modalità Fragment/Light) (Vettore) Somma delle derivate assolute "
-"in \"x\" ed \"y\"."
+"in \"x\" e \"y\"."
#: editor/plugins/visual_shader_editor_plugin.cpp
+#, fuzzy
msgid ""
"(Fragment/Light mode only) (Scalar) Sum of absolute derivative in 'x' and "
"'y'."
msgstr ""
"(Soltanto modalità Fragment/Light) (Scalare) Somma delle derivate assolute "
-"in \"x\" ed \"y\"."
+"in \"x\" e \"y\"."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Modifica Proprietà Visive"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9757,13 +10666,14 @@ msgstr ""
"I template di esportazione sembrano essere mancanti o non validi."
#: editor/project_export.cpp
+#, fuzzy
msgid ""
"Failed to export the project for platform '%s'.\n"
"This might be due to a configuration issue in the export preset or your "
"export settings."
msgstr ""
"Impossibile esportare il progetto per la piattaforma \"%s\".\n"
-"Questo potrebbe essere dovuto ad un problema di configurazione nel preset di "
+"Questo potrebbe essere dovuto a un problema di configurazione nel preset di "
"esportazione o nelle impostazioni di esportazione."
#: editor/project_export.cpp
@@ -9861,7 +10771,8 @@ msgid "Script"
msgstr "Script"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Modalità Esportazione Script:"
#: editor/project_export.cpp
@@ -9869,19 +10780,21 @@ msgid "Text"
msgstr "Testo"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Compilato"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Criptato (Fornisci la Chiave Sotto)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Chiave Crittografica non Valida (deve essere lunga 64 caratteri)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Chiave di Crittografia Script (256-bits come esadecimali):"
#: editor/project_export.cpp
@@ -9956,7 +10869,8 @@ msgid "Imported Project"
msgstr "Progetto Importato"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Nome Progetto non Valido."
#: editor/project_manager.cpp
@@ -9992,6 +10906,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Impossibile creare project.godot nel percorso di progetto."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Errore nell'apertura del file del pacchetto, non è in formato ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Impossibile estrarre i seguenti file dal pacchetto:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Pacchetto installato con successo!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Rinomina progetto"
@@ -10170,20 +11096,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Sei sicuro di voler eseguire %d progetti contemporaneamente?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Rimuovere %d progetti dalla lista?\n"
-"I contenuti delle cartelle di progetto non saranno modificati."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Seleziona il dispositivo dall'elenco"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Rimuovere questo progetto dalla lista?\n"
-"I contenuti della cartella di progetto non saranno modificati."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Seleziona il dispositivo dall'elenco"
#: editor/project_manager.cpp
msgid ""
@@ -10217,7 +11137,8 @@ msgid "Project Manager"
msgstr "Gestore dei progetti"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Progetti"
#: editor/project_manager.cpp
@@ -10229,10 +11150,25 @@ msgid "Last Modified"
msgstr "Ultima Modifica"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Esporta progetto"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Rinomina progetto"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Esamina"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Progetti"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Scegli una Cartella da Scansionare"
@@ -10241,18 +11177,41 @@ msgid "New Project"
msgstr "Nuovo Progetto"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Progetto Importato"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Rinomina progetto"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Rimuovi mancante"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Templates"
+msgid "About"
+msgstr "Informazioni su Godot"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Libreria degli asset"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Riavvia Ora"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Rimuovi Tutto"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Impossibile eseguire il progetto"
@@ -10265,8 +11224,14 @@ msgstr ""
"Ti piacerebbe esplorare gli esempi ufficiali nella libreria degli Asset?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtra proprietà"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10280,6 +11245,10 @@ msgid "Key "
msgstr "Tasto "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Pulsante Joy"
@@ -10323,6 +11292,10 @@ msgstr "Tutti i Dispositivi"
msgid "Device"
msgstr "Dispositivo"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Premi un tasto..."
@@ -10464,7 +11437,8 @@ msgid "Override for Feature"
msgstr "Sovrascrivi per Caratteristica"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Aggiungi Traduzione"
#: editor/project_settings_editor.cpp
@@ -10472,11 +11446,13 @@ msgid "Remove Translation"
msgstr "Rimuovi Traduzione"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Aggiungi percorso rimappato"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Remap Risorse Aggiungi Remap"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Remap Risorse Aggiungi Remap"
#: editor/project_settings_editor.cpp
@@ -10749,6 +11725,10 @@ msgid "Post-Process"
msgstr "Post-Processo"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Stile"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Mantieni"
@@ -10915,12 +11895,30 @@ msgid "Delete node \"%s\"?"
msgstr "Elimina il nodo \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Impossibile effettuare con il nodo di root."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Questa operazione no può essere eseguita su scene istanziate."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10979,6 +11977,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Impossibile operare su nodi da cui la scena corrente eredita!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Questa operazione no può essere eseguita su scene istanziate."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Allega Script"
@@ -11027,10 +12029,6 @@ msgid "Load As Placeholder"
msgstr "Carica come placeholder"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Apri la documentazione"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11323,6 +12321,12 @@ msgstr ""
"essere modificati utilizzando un editor esterno."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Nome Classe:"
@@ -11391,6 +12395,10 @@ msgid "Copy Error"
msgstr "Copia Errore"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "RAM Video"
@@ -11675,6 +12683,16 @@ msgstr "Istanza invalida formato dizionario (sottoclassi invalide)"
msgid "Object can't provide a length."
msgstr "L'oggetto non può fornire una lunghezza."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Esporta una libreria di Mesh"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Esporta..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Piano Successivo"
@@ -11716,6 +12734,11 @@ msgid "GridMap Paint"
msgstr "GridMap Riempi"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "GridMap Riempi Selezione"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Mappa di Griglia"
@@ -11966,6 +12989,16 @@ msgid "Add Output Port"
msgstr "Aggiungi Porta Output"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Cambia Tipo"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Cambia Nome porta Input"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Sovrascrivi una funzione built-in esistente."
@@ -12078,6 +13111,11 @@ msgid "Add Preload Node"
msgstr "Aggiungi Nodo Preload"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Aggiungi Nodo"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Aggiungi Nodo(i) Da Albero"
@@ -12264,7 +13302,7 @@ msgstr "L'oggetto base non è un Nodo!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Path does not lead Node!"
-msgstr "Il percorso non conduce ad un Nodo!"
+msgstr "Il percorso non conduce a un Nodo!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name '%s' in node %s."
@@ -12308,10 +13346,6 @@ msgstr "Ricerca VisualScript"
msgid "Get %s"
msgstr "Ottieni %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Imposta %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Il nome del pacchetto è mancante."
@@ -12346,6 +13380,40 @@ msgid "Select device from the list"
msgstr "Seleziona il dispositivo dall'elenco"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Esportando Tutto"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Disinstalla"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Caricamento, per favore attendere..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Impossibile istanziare la scena!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Eseguendo Script Personalizzato..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Impossibile creare la cartella."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Impossibile trovare lo strumento \"apksigner\"."
@@ -12462,6 +13530,48 @@ msgstr ""
"\"Export AAB\" è valido soltanto quanto \"Use Custom Build\" è abilitato."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Scansione File,\n"
+"Si prega di attendere..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Impossibile aprire il template per l'esportazione:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Aggiungendo %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Esportando Tutto"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr "Nome file invalido! Il Bundle Android App richiede l'estensione *.aab."
@@ -12474,6 +13584,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nome file invalido! L'APK Android richiede l'estensione *.apk."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12495,6 +13609,21 @@ msgstr ""
"Perfavore, reinstalla il build template di Android dal menu \"Progetto\"."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Impossibile creare project.godot nel percorso di progetto."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Impossibile scrivere il file:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Compilazione di un progetto Android (gradle)"
@@ -12520,11 +13649,54 @@ msgstr ""
"Impossibile copiare e rinominare il file di esportazione, controlla la "
"directory del progetto gradle per gli output."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animazione non trovata: \"%s\""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Creazione contorni..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Impossibile aprire il template per l'esportazione:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Aggiungendo %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Impossibile scrivere il file:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "L'identificatore è mancante."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Il carattere \"%s\" non è consentito nell'Identificatore."
@@ -12554,10 +13726,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Esegui il codice HTML esportato nel browser di sistema predefinito."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Impossibile scrivere il file:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Impossibile aprire il template per l'esportazione:"
@@ -12566,16 +13734,49 @@ msgid "Invalid export template:"
msgstr "Template di esportazione non valido:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Impossibile scrivere il file:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Impossibile scrivere il file:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Impossibile leggere la shell HTML personalizzata:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Impossibile leggere il file immagine di avvio splash:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Impossibile creare la cartella."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Utilizzando l'immagine splash predefinita."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Errore salvando la scena."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Identificatore non valido:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12676,7 +13877,7 @@ msgid ""
"CollisionObject2D derived node. Please only use it as a child of Area2D, "
"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
msgstr ""
-"CollisionPolygon2D serve a fornire una forma di collisione ad un nodo "
+"CollisionPolygon2D serve a fornire una forma di collisione a un nodo "
"derivato di CollisionObject2D. Si prega di utilizzarlo solamente come figlio "
"di Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. in modo da "
"dargli una forma."
@@ -12698,13 +13899,14 @@ msgstr ""
"costruzione \"Segmenti\"."
#: scene/2d/collision_shape_2d.cpp
+#, fuzzy
msgid ""
"CollisionShape2D only serves to provide a collision shape to a "
"CollisionObject2D derived node. Please only use it as a child of Area2D, "
"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
msgstr ""
-"CollisionShape2D serve a fornire una forma di collisione ad un nodo derivato "
-"di CollisionObject2D. Si prega di utilizzarlo solamente come figlio di "
+"CollisionShape2D serve a fornire una forma di collisione a un nodo derivato "
+"da CollisionObject2D. Si prega di utilizzarlo solamente come figlio di "
"Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. in modo da dargli "
"una forma."
@@ -12840,9 +14042,9 @@ msgstr ""
"Modifica invece la dimensione nelle forme di collisione figlie."
#: scene/2d/remote_transform_2d.cpp
+#, fuzzy
msgid "Path property must point to a valid Node2D node to work."
-msgstr ""
-"La proprietà path deve puntare ad un nodo Node2D valido per funzionare."
+msgstr "La proprietà path deve puntare a un nodo Node2D valido per funzionare."
#: scene/2d/skeleton_2d.cpp
msgid "This Bone2D chain should end at a Skeleton2D node."
@@ -12888,11 +14090,12 @@ msgid "ARVRController must have an ARVROrigin node as its parent."
msgstr "ARVRController deve avere un nodo ARVROrigin come genitore."
#: scene/3d/arvr_nodes.cpp
+#, fuzzy
msgid ""
"The controller ID must not be 0 or this controller won't be bound to an "
"actual controller."
msgstr ""
-"L'id del controller non deve essere 0 o non verrà associato ad un controller "
+"L'id del controller non deve essere 0 o non verrà associato a un controller "
"attuale."
#: scene/3d/arvr_nodes.cpp
@@ -12900,11 +14103,12 @@ msgid "ARVRAnchor must have an ARVROrigin node as its parent."
msgstr "ARVRAnchor deve avere un nodo ARVROrigin come genitore."
#: scene/3d/arvr_nodes.cpp
+#, fuzzy
msgid ""
"The anchor ID must not be 0 or this anchor won't be bound to an actual "
"anchor."
msgstr ""
-"L'ID dell'ancora non deve essere 0 oppure non verrà associato ad un'ancora "
+"L'ID dell'ancora non deve essere 0 oppure non verrà associato a un'ancora "
"attuale."
#: scene/3d/arvr_nodes.cpp
@@ -12947,28 +14151,29 @@ msgstr ""
"definire la sua forma."
#: scene/3d/collision_polygon.cpp
+#, fuzzy
msgid ""
"CollisionPolygon only serves to provide a collision shape to a "
"CollisionObject derived node. Please only use it as a child of Area, "
"StaticBody, RigidBody, KinematicBody, etc. to give them a shape."
msgstr ""
-"CollisionPolygon serve solamente a fornire una forma di collisione ad un "
-"nodo derivato di CollisionObject. Si prega di usarlo solamente come figlio "
-"di Area, StaticBody, RigidBody, KinematicBody, etc. in modo da dargli una "
-"forma."
+"CollisionPolygon serve solamente a fornire una forma di collisione a un nodo "
+"derivato da CollisionObject. Si prega di usarlo solamente come figlio di "
+"Area, StaticBody, RigidBody, KinematicBody, etc. in modo da dargli una forma."
#: scene/3d/collision_polygon.cpp
msgid "An empty CollisionPolygon has no effect on collision."
msgstr "Un CollisionPolygon vuoto non ha effetti in collisione."
#: scene/3d/collision_shape.cpp
+#, fuzzy
msgid ""
"CollisionShape only serves to provide a collision shape to a CollisionObject "
"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
"KinematicBody, etc. to give them a shape."
msgstr ""
-"CollisionShape serve a fornire una forma di collisione ad un nodo derivato "
-"di CollisionObject. Si prega di utilizzarlo solamente come figlio di Area, "
+"CollisionShape serve a fornire una forma di collisione a un nodo derivato da "
+"CollisionObject. Si prega di utilizzarlo solamente come figlio di Area, "
"StaticBody, RigidBody, KinematicBody, etc. in modo da dargli una forma."
#: scene/3d/collision_shape.cpp
@@ -13021,6 +14226,13 @@ msgstr ""
"Le GIProbes non sono supportate dal driver video GLES2.\n"
"In alternativa, usa una BakedLightmap."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -13105,6 +14317,18 @@ msgstr "Il giunto non è collegato a dei PhysicsBodies"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Il Nodo A e il Nodo B devono essere PhysicsBodies diversi"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -13113,6 +14337,46 @@ msgstr ""
"La proprietà \"Remove Path\" deve essere puntata su un Spatial o Spatial-"
"derived valido per funzionare."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Questo corpo verrà ignorato fino a quando non imposterai una mesh."
@@ -13174,6 +14438,10 @@ msgstr "Sul nodo BlendTree \"%s\", animazione non trovata: \"%s\""
msgid "Animation not found: '%s'"
msgstr "Animazione non trovata: \"%s\""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "Nel nodo \"%s\", animazione non valida: \"%s\"."
@@ -13288,13 +14556,14 @@ msgid "If \"Exp Edit\" is enabled, \"Min Value\" must be greater than 0."
msgstr "Se \"Exp Edit\" è abilitato, \"Min Value\" deve essere maggiore di 0."
#: scene/gui/scroll_container.cpp
+#, fuzzy
msgid ""
"ScrollContainer is intended to work with a single child control.\n"
"Use a container as child (VBox, HBox, etc.), or a Control and set the custom "
"minimum size manually."
msgstr ""
"ScrollContainer è inteso per funzionare con un singolo figlio di controllo.\n"
-"Usa un container come figlio (VBox, HBox, ect.), oppure un nodo Control ed "
+"Usa un container come figlio (VBox, HBox, ect.), oppure un nodo Control e "
"imposta la dimensione minima personalizzata manualmente."
#: scene/gui/tree.cpp
@@ -13348,6 +14617,28 @@ msgid "Invalid comparison function for that type."
msgstr "Funzione di confronto non valida per quel tipo."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr ""
+"Le variabili possono essere assegnate soltanto in funzione del vertice."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Assegnazione alla funzione."
@@ -13356,14 +14647,179 @@ msgid "Assignment to uniform."
msgstr "Assegnazione all'uniforme."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr ""
-"Le variabili possono essere assegnate soltanto in funzione del vertice."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Le constanti non possono essere modificate."
+#~ msgid "Package Contents:"
+#~ msgstr "Contenuti del pacchetto:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Eliminare il profilo \"%s\"? (non annullabile)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Proprietà abilitate:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Funzionalità abilitate:"
+
+#~ msgid "Unset"
+#~ msgstr "Disattiva"
+
+#~ msgid "Class Options"
+#~ msgstr "Opzioni della classe"
+
+#~ msgid "Set"
+#~ msgstr "Imposta"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Salvate %s risorse modificate."
+
+#~ msgid "Q&A"
+#~ msgstr "Domande e risposte"
+
+#~ msgid "Status:"
+#~ msgstr "Stato:"
+
+#~ msgid "Edit:"
+#~ msgstr "Modifica:"
+
+#~ msgid "Redownload"
+#~ msgstr "Ri-Scarica"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Installato)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Mancante)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Richiesta fallita."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Ridirigi Loop."
+
+#~ msgid "Download Complete."
+#~ msgstr "Download Completato."
+
+#~ msgid "Remove Template"
+#~ msgstr "Rimuovi Template"
+
+#~ msgid "Download Templates"
+#~ msgstr "Scarica Modelli"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Seleziona mirror dalla lista: (Shift+Click: Apri in Browser)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Sposta nel cestino"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Espandi Tutte le Proprietà"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Comprimi Tutte le Proprietà"
+
+#~ msgid "Copy Params"
+#~ msgstr "Copia parametri"
+
+#~ msgid "Open in Help"
+#~ msgstr "Apri in Aiuto"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Sovrascrivi Camera Gioco\n"
+#~ "Nessuna istanza gioco in funzione."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Trascina: Ruota"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Premi \"v\" per Cambiare Perno, \"Shift+v\" per Trascinare il Pernno "
+#~ "(durante lo spostamento)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+RMB: Selezione Lista Profondità"
+
+#~ msgid "Clone Down"
+#~ msgstr "Clona sotto"
+
+#~ msgid "Yaw"
+#~ msgstr "Imbardata"
+
+#~ msgid "Size"
+#~ msgstr "Dimensione"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Trascina: Ruota\n"
+#~ "Alt+Trascina: Sposta\n"
+#~ "Alt+RMB: Selezione Lista Profondità"
+
+#~ msgid "Sep.:"
+#~ msgstr "Sep.:"
+
+#~ msgid "Add All"
+#~ msgstr "Aggiungi Tutti"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Menu di modifica dei temi."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Crea Template Vuota"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Crea Template Editor Vuota"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Crea da Tema Editor corrente"
+
+#~ msgid "Data Type:"
+#~ msgstr "Tipo Dato:"
+
+#~ msgid "Theme File"
+#~ msgstr "File Tema"
+
+#~ msgid "Compiled"
+#~ msgstr "Compilato"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Rimuovere %d progetti dalla lista?\n"
+#~ "I contenuti delle cartelle di progetto non saranno modificati."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Rimuovere questo progetto dalla lista?\n"
+#~ "I contenuti della cartella di progetto non saranno modificati."
+
+#~ msgid "Templates"
+#~ msgstr "Templates"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Aggiungi percorso rimappato"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Impossibile effettuare con il nodo di root."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Impossibile leggere il file immagine di avvio splash:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Utilizzando l'immagine splash predefinita."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Un AnimationPlayer non può animare se stesso, solo altri riproduttori."
@@ -13476,9 +14932,6 @@ msgstr "Le constanti non possono essere modificate."
#~ "La scena attuale non è mai stata salvata, si prega di salvarla prima di "
#~ "eseguirla."
-#~ msgid "Not in resource path."
-#~ msgstr "Non è nel percorso risorse."
-
#~ msgid "Revert"
#~ msgstr "Ripristina"
@@ -13584,9 +15037,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "Input"
#~ msgstr "Ingresso"
-#~ msgid "Properties:"
-#~ msgstr "Proprietà:"
-
#~ msgid "Methods:"
#~ msgstr "Metodi:"
@@ -13894,10 +15344,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgstr "Dividi Percorso"
#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Prima seleziona un oggetto di impostazione!"
-
-#, fuzzy
#~ msgid "Add Node.."
#~ msgstr "Aggiungi Nodo"
@@ -13961,9 +15407,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "Public Methods:"
#~ msgstr "Metodi Pubblici:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Elementi Tema GUI"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Elementi Tema GUI:"
@@ -13987,10 +15430,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "Match case"
#~ msgstr "Controlla Maiuscole"
-#, fuzzy
-#~ msgid "Filter: "
-#~ msgstr "Filtro:"
-
#~ msgid "Ok"
#~ msgstr "Ok"
@@ -14030,9 +15469,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "Rotate 270 degrees"
#~ msgstr "Ruota a 270 gradi"
-#~ msgid "Variable"
-#~ msgstr "Valiabile"
-
#~ msgid "Errors:"
#~ msgstr "Errori:"
@@ -14124,9 +15560,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "Set Transitions to:"
#~ msgstr "Imposta Transizione a:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Traccia Anim Rinomina"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Traccia Anim Cambia Interpolazione"
@@ -14277,12 +15710,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "StyleBox Preview:"
#~ msgstr "Anteprima StyleBox:"
-#~ msgid "StyleBox"
-#~ msgstr "Stile Box"
-
-#~ msgid "Separation:"
-#~ msgstr "Separazione:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Editor Regioni Texture"
@@ -14364,13 +15791,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "Impossibile creare project.godot nel percorso di progetto."
-#, fuzzy
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "Impossibile creare project.godot nel percorso di progetto."
-
-#~ msgid "Not found!"
-#~ msgstr "Non trovato!"
-
#~ msgid "Replace By"
#~ msgstr "Rimpiazza con"
@@ -14744,9 +16164,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "Qualità Compressione Texture (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "Opzioni Texture"
-
#~ msgid "Please specify some files!"
#~ msgstr "Si prega di specificare qualche file!"
@@ -14907,9 +16324,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "Zoom Set..."
#~ msgstr "Imposta Zoom..."
-#~ msgid "Set a Value"
-#~ msgstr "Imposta un Valore"
-
#~ msgid "Parse BBCode"
#~ msgstr "Decodifica BBCode"
@@ -15033,9 +16447,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "Instance at Cursor"
#~ msgstr "Istanzia a Cursore"
-#~ msgid "Could not instance scene!"
-#~ msgstr "Impossibile istanziare la scena!"
-
#~ msgid "Use Default Light"
#~ msgstr "Usa Luce Default"
@@ -15112,9 +16523,6 @@ msgstr "Le constanti non possono essere modificate."
#~ msgid "City"
#~ msgstr "Città"
-#~ msgid "State"
-#~ msgstr "Stato"
-
#~ msgid "2 letter country code"
#~ msgstr "Codice nazione di 2 lettere"
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index 1fd770fe13..83e544e5b5 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -37,8 +37,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-05-29 13:49+0000\n"
-"Last-Translator: 都築 æœ¬æˆ <motonari728@gmail.com>\n"
+"PO-Revision-Date: 2021-07-29 02:33+0000\n"
+"Last-Translator: nitenook <admin@alterbaum.net>\n"
"Language-Team: Japanese <https://hosted.weblate.org/projects/godot-engine/"
"godot/ja/>\n"
"Language: ja\n"
@@ -46,7 +46,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.7-dev\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -557,7 +557,8 @@ msgstr "ç§’"
msgid "FPS"
msgstr "フレームレート(FPS)"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -583,7 +584,8 @@ msgstr "スケールã®é¸æŠž"
msgid "Scale From Cursor"
msgstr "カーソル基準ã§ã‚¹ã‚±ãƒ¼ãƒ«"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "é¸æŠžç¯„å›²ã‚’è¤‡è£½"
@@ -604,6 +606,11 @@ msgid "Go to Previous Step"
msgstr "å‰ã®ã‚¹ãƒ†ãƒƒãƒ—ã¸"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "リセット"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "アニメーションを最é©åŒ–"
@@ -620,6 +627,11 @@ msgid "Use Bezier Curves"
msgstr "ベジェ曲線を使用"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "トラックを貼り付ã‘"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "アニメーションã®ã‚ªãƒ—ティマイザー"
@@ -668,7 +680,7 @@ msgid "Select Tracks to Copy"
msgstr "コピーã™ã‚‹ãƒˆãƒ©ãƒƒã‚¯ã‚’é¸æŠž"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -754,12 +766,14 @@ msgid "Toggle Scripts Panel"
msgstr "スクリプトパãƒãƒ«ã‚’切り替ãˆ"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "ズームイン"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -816,11 +830,9 @@ msgid "Add"
msgstr "追加"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -870,6 +882,7 @@ msgstr "ã‚·ã‚°ãƒŠãƒ«ã«æŽ¥ç¶šã§ãã¾ã›ã‚“"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -939,7 +952,8 @@ msgid "Edit..."
msgstr "編集..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "メソッドã¸è¡Œã"
#: editor/create_dialog.cpp
@@ -954,6 +968,14 @@ msgstr "変更"
msgid "Create New %s"
msgstr "%s ã‚’æ–°è¦ä½œæˆ"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "\"%s\" ã®çµæžœã¯ã‚りã¾ã›ã‚“。"
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -975,8 +997,8 @@ msgstr "検索:"
msgid "Matches:"
msgstr "一致:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1052,19 +1074,23 @@ msgid "Owners Of:"
msgstr "次ã®ã‚ªãƒ¼ãƒŠãƒ¼:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"é¸æŠžã—ãŸãƒ•ァイルをプロジェクトã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ(å–り消ã—ã¯ã§ãã¾ã›ã‚“)\n"
"削除ã•れãŸãƒ•ァイルã¯ã€ã‚·ã‚¹ãƒ†ãƒ ã®ã‚´ãƒŸç®±ã«ã‚ã‚‹ã®ã§å¾©å…ƒã§ãã¾ã™ã€‚"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"除去ã—よã†ã¨ã—ã¦ã„るファイルã¯ä»–ã®ãƒªã‚½ãƒ¼ã‚¹ã®å‹•作ã«å¿…è¦ã§ã™ã€‚\n"
"無視ã—ã¦é™¤åŽ»ã—ã¾ã™ã‹ï¼Ÿ(å–り消ã—ã¯ã§ãã¾ã›ã‚“)\n"
@@ -1112,7 +1138,7 @@ msgstr "孤立リソース エクスプローラー"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1237,28 +1263,42 @@ msgstr "コンãƒãƒ¼ãƒãƒ³ãƒˆ"
msgid "Licenses"
msgstr "ライセンス文書"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "パッケージファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸã€zip å½¢å¼ã§ã¯ã‚りã¾ã›ã‚“。"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr ""
+"パッケージ ファイルを開ãã¨ãã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠(ZIPå½¢å¼ã§ã¯ã‚りã¾ã›ã‚“)。"
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (ã™ã§ã«å­˜åœ¨ã—ã¾ã™)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "アセットを展開"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "次ã®ãƒ•ァイルをパッケージã‹ã‚‰æŠ½å‡ºã§ãã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "ãŠã‚ˆã³ %s 個ã®ãƒ•ァイル。"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«æˆåŠŸã—ã¾ã—ãŸ!"
#: editor/editor_asset_installer.cpp
@@ -1266,16 +1306,13 @@ msgstr "パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«æˆåŠŸã—ã¾ã—ãŸ!"
msgid "Success!"
msgstr "æˆåŠŸï¼"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "パッケージã®å†…容:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "インストール"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "パッケージインストーラ"
#: editor/editor_audio_buses.cpp
@@ -1339,7 +1376,8 @@ msgid "Bypass"
msgstr "ãƒã‚¤ãƒ‘ス"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "ãƒã‚¹ オプション"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1419,7 +1457,7 @@ msgstr "ãƒã‚¹ã‚’追加"
msgid "Add a new Audio Bus to this layout."
msgstr "æ–°è¦ã‚ªãƒ¼ãƒ‡ã‚£ã‚ªãƒã‚¹ã‚’ã“ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã«è¿½åŠ ã™ã‚‹ã€‚"
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1506,6 +1544,15 @@ msgid "Can't add autoload:"
msgstr "自動読ã¿è¾¼ã¿ã‚’追加出æ¥ã¾ã›ã‚“:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "ファイルãŒå­˜åœ¨ã—ã¾ã›ã‚“。"
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "自動読込ã¿ã‚’追加"
@@ -1521,16 +1568,17 @@ msgid "Node Name:"
msgstr "ノードå:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "åå‰"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "シングルトン"
+#, fuzzy
+msgid "Global Variable"
+msgstr "変数"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "パラメーターを貼り付ã‘"
@@ -1546,7 +1594,7 @@ msgstr "ローカルã®å¤‰æ›´ã‚’ä¿å­˜..."
msgid "Updating scene..."
msgstr "シーンを更新..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[空]"
@@ -1703,8 +1751,49 @@ msgid "Import Dock"
msgstr "インãƒãƒ¼ãƒˆãƒ‰ãƒƒã‚¯"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "プロファイル '%s' を消去ã—ã¾ã™ã‹ï¼Ÿ(å…ƒã«æˆ»ã›ã¾ã›ã‚“)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(ç¾åœ¨)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1736,15 +1825,18 @@ msgid "Enable Contextual Editor"
msgstr "コンテキストエディタを有効ã«ã™ã‚‹"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "プロパティを有効ã«ã™ã‚‹:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "プロパティ:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "機能を有効ã«ã™ã‚‹:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "機能"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "クラスを有効ã«ã™ã‚‹:"
#: editor/editor_feature_profile.cpp
@@ -1764,25 +1856,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "指定ã•れãŸãƒ‘スã¸ã®ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "未設定"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "デフォルトã«ãƒªã‚»ãƒƒãƒˆã™ã‚‹"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "ç¾åœ¨ã®ãƒ—ロファイル:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "最新ã«ã™ã‚‹"
+#, fuzzy
+msgid "Create Profile"
+msgstr "プロファイルを消去"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "æ–°è¦"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "タイルを除去"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "利用å¯èƒ½ãªãƒ—ロファイル:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "最新ã«ã™ã‚‹"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "インãƒãƒ¼ãƒˆ"
@@ -1791,20 +1892,22 @@ msgid "Export"
msgstr "エクスãƒãƒ¼ãƒˆ"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "利用å¯èƒ½ãªãƒ—ロファイル:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "ç¾åœ¨ã®ãƒ—ロファイル:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "クラスオプション"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "テクスãƒãƒ£ã€€ã‚ªãƒ—ション"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "æ–°ã—ã„プロファイルã®åå‰:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "プロファイルを消去"
+msgid "New profile name:"
+msgstr "æ–°ã—ã„プロファイルã®åå‰:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1827,7 +1930,8 @@ msgid "Select Current Folder"
msgstr "ç¾åœ¨ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠž"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚上書ãã—ã¾ã™ã‹ï¼Ÿ"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1881,9 +1985,10 @@ msgid "Open a File or Directory"
msgstr "ファイルã¾ãŸã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’é–‹ã"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "ä¿å­˜"
@@ -1964,8 +2069,7 @@ msgid "Directories & Files:"
msgstr "ディレクトリã¨ãƒ•ァイル:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "プレビュー:"
@@ -2038,7 +2142,7 @@ msgstr "テーマ プロパティ"
msgid "Enumerations"
msgstr "列挙型"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "定数"
@@ -2127,7 +2231,7 @@ msgstr "メソッド"
msgid "Signal"
msgstr "シグナル"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "コンスタント"
@@ -2143,9 +2247,10 @@ msgstr "テーマプロパティ"
msgid "Property:"
msgstr "プロパティ:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "%s を設定"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2160,7 +2265,7 @@ msgid "Copy Selection"
msgstr "é¸æŠžç¯„å›²ã‚’ã‚³ãƒ”ãƒ¼"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2224,7 +2329,8 @@ msgid "Imported resources can't be saved."
msgstr "インãƒãƒ¼ãƒˆã—ãŸãƒªã‚½ãƒ¼ã‚¹ã¯ä¿å­˜ã§ãã¾ã›ã‚“。"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2445,18 +2551,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "é–‰ã˜ã‚‹å‰ã«ã€'%s' ã¸ã®å¤‰æ›´ã‚’ä¿å­˜ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "%s個ã®å¤‰æ›´ã•れãŸãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã—ã¾ã—ãŸã€‚"
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "シーンをä¿å­˜ã™ã‚‹ã«ã¯ãƒ«ãƒ¼ãƒˆãƒŽãƒ¼ãƒ‰ãŒå¿…è¦ã§ã™ã€‚"
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "åå‰ã‚’付ã‘ã¦ã‚·ãƒ¼ãƒ³ã‚’ä¿å­˜..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "ã“ã®æ“作ã«ã¯ã‚·ãƒ¼ãƒ³ãŒå¿…è¦ã§ã™ã€‚"
@@ -2562,6 +2673,7 @@ msgid "Unable to load addon script from path: '%s'."
msgstr "パス '%s' ã‹ã‚‰ã‚¢ãƒ‰ã‚ªãƒ³ã‚¹ã‚¯ãƒªãƒ—トを読込ã‚ã¾ã›ã‚“。"
#: editor/editor_node.cpp
+#, fuzzy
msgid ""
"Unable to load addon script from path: '%s'. This might be due to a code "
"error in that script.\n"
@@ -2650,7 +2762,7 @@ msgstr "レイアウトã®å‰Šé™¤"
msgid "Default"
msgstr "デフォルト"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "ファイルシステム上ã§è¡¨ç¤º"
@@ -2831,6 +2943,11 @@ msgid "Orphan Resource Explorer..."
msgstr "孤立リソースエクスプローラー..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "プロジェクトåã®å¤‰æ›´"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "終了ã—ã¦ãƒ—ロジェクト一覧を開ã"
@@ -2987,20 +3104,25 @@ msgstr "エクスãƒãƒ¼ãƒˆãƒ†ãƒ³ãƒ—レートã®ç®¡ç†..."
msgid "Help"
msgstr "ヘルプ"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "オンラインドキュメント"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "ドキュメントを開ã"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Q&A"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "ãƒã‚°ã‚’報告"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "値を設定ã™ã‚‹"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "ドキュメントã®ãƒ•ィードãƒãƒƒã‚¯ã‚’é€ã‚‹"
@@ -3009,7 +3131,8 @@ msgid "Community"
msgstr "コミュニティ"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "概è¦"
#: editor/editor_node.cpp
@@ -3108,6 +3231,16 @@ msgid "Manage Templates"
msgstr "テンプレートã®ç®¡ç†"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "ファイルã‹ã‚‰ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "ã‚½ãƒ¼ã‚¹ãƒ¡ãƒƒã‚·ãƒ¥ã‚’é¸æŠž:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3144,7 +3277,7 @@ msgstr "ZIPファイルã‹ã‚‰ãƒ†ãƒ³ãƒ—レートをインãƒãƒ¼ãƒˆ"
msgid "Template Package"
msgstr "テンプレートパッケージ"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "ライブラリã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
@@ -3187,6 +3320,11 @@ msgid "Select"
msgstr "é¸æŠž"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "ç¾åœ¨ã®ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠž"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "2Dエディタを開ã"
@@ -3218,6 +3356,11 @@ msgstr "警告ï¼"
msgid "No sub-resources found."
msgstr "サブリソースãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚"
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "サブリソースãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚"
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "メッシュプレビューを作æˆ"
@@ -3242,33 +3385,34 @@ msgstr "インストール済プラグイン:"
msgid "Update"
msgstr "アップデート"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "作者:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "ステータス:"
+#, fuzzy
+msgid "Author"
+msgstr "作者"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "編集:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "ステータス"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "測定:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "フレーム時間(秒)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "平凿™‚é–“(ç§’)"
#: editor/editor_profiler.cpp
@@ -3288,6 +3432,16 @@ msgid "Self"
msgstr "セルフ(Self)"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "フレーム #:"
@@ -3329,14 +3483,6 @@ msgstr "無効㪠RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"é¸æŠžã•れãŸãƒªã‚½ãƒ¼ã‚¹ (%s) ã¯ã€ã“ã®ãƒ—ロパティ (%s) ãŒæ±‚ã‚ã‚‹åž‹ã«ä¸€è‡´ã—ã¦ã„ã¾ã›"
-"ん。"
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3360,40 +3506,6 @@ msgid "Pick a Viewport"
msgstr "ビューãƒãƒ¼ãƒˆã‚’é¸ã¶"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "æ–°è¦ã‚¹ã‚¯ãƒªãƒ—ト"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "スクリプトを拡張"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "æ–°è¦ %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "ユニーク化"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "貼り付ã‘"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "%s ã«å¤‰æ›"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "é¸æŠžã—ãŸãƒŽãƒ¼ãƒ‰ã¯ãƒ“ューãƒãƒ¼ãƒˆã§ã¯ã‚りã¾ã›ã‚“ï¼"
@@ -3422,6 +3534,49 @@ msgstr "æ–°è¦ã®å€¤:"
msgid "Add Key/Value Pair"
msgstr "キー/値ã®ãƒšã‚¢ã‚’追加"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"é¸æŠžã•れãŸãƒªã‚½ãƒ¼ã‚¹ (%s) ã¯ã€ã“ã®ãƒ—ロパティ (%s) ãŒæ±‚ã‚ã‚‹åž‹ã«ä¸€è‡´ã—ã¦ã„ã¾ã›"
+"ん。"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "ユニーク化"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "貼り付ã‘"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "%s ã«å¤‰æ›"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "æ–°è¦ %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "æ–°è¦ã‚¹ã‚¯ãƒªãƒ—ト"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "スクリプトを拡張"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3457,7 +3612,8 @@ msgid "Did you forget the '_run' method?"
msgstr "'_run' メソッドを忘れã¦ã„ã¾ã›ã‚“ã‹ï¼Ÿ"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr "Ctrlを押ã—ãŸã¾ã¾ã§æ•´æ•°å€¤ã«ä¸¸ã‚る。Shiftを押ã—ãŸã¾ã¾ã§ç²¾å¯†èª¿æ•´ã€‚"
#: editor/editor_sub_scene.cpp
@@ -3477,113 +3633,69 @@ msgid "Import From Node:"
msgstr "ノードã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆ:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "å†ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "アンインストール"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(インストール済)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "ダウンロード"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "å…¬å¼ã®æ›¸ã出ã—テンプレートã¯é–‹ç™ºç”¨ãƒ“ルドã®å ´åˆã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(見ã¤ã‹ã‚Šã¾ã›ã‚“)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(ç¾åœ¨)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "'%s' ファイルãŒã‚りã¾ã›ã‚“。"
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "ミラーをå–å¾—ã—ã¦ã„ã¾ã™ã€‚ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "テンプレート ãƒãƒ¼ã‚¸ãƒ§ãƒ³ '%s' を除去ã—ã¾ã™ã‹ï¼Ÿ"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "エクスãƒãƒ¼ãƒˆ テンプレート ZIP ファイルを開ã‘ã¾ã›ã‚“。"
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "テンプレート内㮠version.txt フォーマットãŒä¸æ­£ã§ã™: %s。"
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "テンプレート内㫠version.txt ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "テンプレートã®ãƒ‘ス生æˆã‚¨ãƒ©ãƒ¼:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "エクスãƒãƒ¼ãƒˆ テンプレートã®å±•開中"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "インãƒãƒ¼ãƒˆä¸­:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "ミラーリストã®å–得エラー。"
+msgid "Error requesting URL:"
+msgstr "URL リクエストã®ã‚¨ãƒ©ãƒ¼:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "ミラーリストã®JSONを読ã¿è¾¼ã¿å¤±æ•—。ã“ã®å•題ã®å ±å‘Šã‚’ãŠé¡˜ã„ã—ã¾ã™ï¼"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "ãƒŸãƒ©ãƒ¼ã«æŽ¥ç¶šä¸­..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒªãƒ³ã‚¯ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。直接ダウンロードã¯å…¬å¼ãƒª"
-"リースã®ã¿å¯èƒ½ã§ã™ã€‚"
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "ホストåを解決ã§ãã¾ã›ã‚“:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "解決ã§ãã¾ã›ã‚“。"
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "ãƒ›ã‚¹ãƒˆã«æŽ¥ç¶šã§ãã¾ã›ã‚“:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "接続ã§ãã¾ã›ã‚“。"
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "ホストã‹ã‚‰å¿œç­”ãŒã‚りã¾ã›ã‚“:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "応答ãŒã‚りã¾ã›ã‚“。"
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "リクエストã¯å¤±æ•—ã—ã¾ã—ãŸã€‚"
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "リダイレクトã®ãƒ«ãƒ¼ãƒ—。"
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "リクエスト失敗。リダイレクトéŽå¤š"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "失敗:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "リクエストã¯å¤±æ•—ã—ã¾ã—ãŸã€‚"
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "ダウンロードãŒå®Œäº†ã—ã¾ã—ãŸã€‚"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3598,12 +3710,25 @@ msgstr ""
"å•題ã®ãƒ†ãƒ³ãƒ—レートã®ã‚¢ãƒ¼ã‚«ã‚¤ãƒ–㯠'%s' ã«ã‚りã¾ã™ã€‚"
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "URL リクエストã®ã‚¨ãƒ©ãƒ¼:"
+msgid "Error getting the list of mirrors."
+msgstr "ミラーリストã®å–得エラー。"
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "ãƒŸãƒ©ãƒ¼ã«æŽ¥ç¶šä¸­..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "ミラーリストã®JSONを読ã¿è¾¼ã¿å¤±æ•—。ã“ã®å•題ã®å ±å‘Šã‚’ãŠé¡˜ã„ã—ã¾ã™ï¼"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ãƒªãƒ³ã‚¯ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。直接ダウンロードã¯å…¬å¼ãƒª"
+"リースã®ã¿å¯èƒ½ã§ã™ã€‚"
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3648,44 +3773,138 @@ msgid "SSL Handshake Error"
msgstr "SSL ãƒãƒ³ãƒ‰ã‚·ã‚§ã‚¤ã‚¯ã‚¨ãƒ©ãƒ¼"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "エクスãƒãƒ¼ãƒˆ テンプレート ZIP ファイルを開ã‘ã¾ã›ã‚“。"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "テンプレート内㮠version.txt フォーマットãŒä¸æ­£ã§ã™: %s。"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "テンプレート内㫠version.txt ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "テンプレートã®ãƒ‘ス生æˆã‚¨ãƒ©ãƒ¼:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "エクスãƒãƒ¼ãƒˆ テンプレートã®å±•開中"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "インãƒãƒ¼ãƒˆä¸­:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "テンプレート ãƒãƒ¼ã‚¸ãƒ§ãƒ³ '%s' を除去ã—ã¾ã™ã‹ï¼Ÿ"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Androidビルドソースã®è§£å‡"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "テンプレートã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ マãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "インストールã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "ファイルを開ã"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "アンインストール"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "カウンタã®åˆæœŸå€¤"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "ダウンロードエラー"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Official export templates aren't available for development builds."
+msgstr "å…¬å¼ã®æ›¸ã出ã—テンプレートã¯é–‹ç™ºç”¨ãƒ“ルドã®å ´åˆã¯ä½¿ç”¨ã§ãã¾ã›ã‚“。"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "ファイルã‹ã‚‰ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "テンプレートを除去"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "ZIPファイルã‹ã‚‰ãƒ†ãƒ³ãƒ—レートをインãƒãƒ¼ãƒˆ"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "キャンセル"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "ãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "エクスãƒãƒ¼ãƒˆ テンプレート ZIP ファイルを開ã‘ã¾ã›ã‚“。"
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Godot エクスãƒãƒ¼ãƒˆ テンプレート"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "インストールã•れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "テンプレートã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ マãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "アンインストール"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "テンプレートをダウンロード"
+msgid "Select Template File"
+msgstr "ãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "リストã‹ã‚‰ãƒŸãƒ©ãƒ¼ã‚’é¸æŠž: (Shift+クリック: ブラウザã§é–‹ã)"
+msgid "Godot Export Templates"
+msgstr "Godot エクスãƒãƒ¼ãƒˆ テンプレート"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3820,29 +4039,62 @@ msgstr "æ–°è¦ã‚¹ã‚¯ãƒªãƒ—ト..."
msgid "New Resource..."
msgstr "æ–°è¦ãƒªã‚½ãƒ¼ã‚¹..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "ã™ã¹ã¦å±•é–‹"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "ã™ã¹ã¦æŠ˜ã‚ŠãŸãŸã‚€"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "複製..."
+#, fuzzy
+msgid "Sort files"
+msgstr "ファイル検索"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "ã”ã¿ç®±ã¸ç§»å‹•"
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "最終更新"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "最終更新"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "複製..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "åå‰ã‚’変更..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "å‰ã®ãƒ•ォルダ/ファイル"
@@ -3925,10 +4177,6 @@ msgstr "検索..."
msgid "Replace..."
msgstr "ç½®æ›..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "キャンセル"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "検索: "
@@ -4154,53 +4402,55 @@ msgid "Failed to load resource."
msgstr "リソースã®èª­è¾¼ã¿ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "ã™ã¹ã¦ã®ãƒ—ロパティを展開"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "プロパティ"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "ã™ã¹ã¦ã®ãƒ—ロパティを折りãŸãŸã‚€"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "åå‰ã‚’付ã‘ã¦ä¿å­˜..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "プロパティ"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "パラメーターをコピー"
+msgid "Make Sub-Resources Unique"
+msgstr "サブリソースをユニーク化ã™ã‚‹"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "リソースã®ã‚¯ãƒªãƒƒãƒ—ボードを編集"
+msgid "Create a new resource in memory and edit it."
+msgstr "æ–°è¦ãƒªã‚½ãƒ¼ã‚¹ã‚’メモリ上ã«ä½œæˆã—ã¦ç·¨é›†ã™ã‚‹ã€‚"
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "リソースをコピー"
+msgid "Load an existing resource from disk and edit it."
+msgstr "既存ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ディスクã‹ã‚‰èª­è¾¼ã¿ç·¨é›†ã™ã‚‹ã€‚"
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "組ã¿è¾¼ã¿ã«ã™ã‚‹"
+msgid "Save the currently edited resource."
+msgstr "ç¾åœ¨ç·¨é›†ä¸­ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹ã€‚"
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "サブリソースをユニーク化ã™ã‚‹"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "åå‰ã‚’付ã‘ã¦ä¿å­˜..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "ヘルプã§é–‹ã"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "リソースパスã«ã‚りã¾ã›ã‚“。"
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "æ–°è¦ãƒªã‚½ãƒ¼ã‚¹ã‚’メモリ上ã«ä½œæˆã—ã¦ç·¨é›†ã™ã‚‹ã€‚"
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "リソースã®ã‚¯ãƒªãƒƒãƒ—ボードを編集"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "既存ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ディスクã‹ã‚‰èª­è¾¼ã¿ç·¨é›†ã™ã‚‹ã€‚"
+msgid "Copy Resource"
+msgstr "リソースをコピー"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "ç¾åœ¨ç·¨é›†ä¸­ã®ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹ã€‚"
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "組ã¿è¾¼ã¿ã«ã™ã‚‹"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4215,14 +4465,24 @@ msgid "History of recently edited objects."
msgstr "最近編集ã—ãŸã‚ªãƒ–ジェクトã®å±¥æ­´ã€‚"
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "オブジェクトã®ãƒ—ロパティ。"
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "ドキュメントを開ã"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "ドキュメントを開ã"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "フィルタプロパティ"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "オブジェクトã®ãƒ—ロパティ。"
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "変更ãŒå¤±ã‚れるã‹ã‚‚ã—れã¾ã›ã‚“ï¼"
@@ -4250,6 +4510,15 @@ msgstr "プラグインå:"
msgid "Subfolder:"
msgstr "サブフォルダ:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "作者:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "言語:"
@@ -4455,7 +4724,8 @@ msgid "Blend:"
msgstr "ブレンド:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "パラメータãŒå¤‰æ›´ã•れã¾ã—ãŸ"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4672,6 +4942,11 @@ msgid "Animation"
msgstr "アニメーション"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "æ–°è¦"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "トランジションã®ç·¨é›†..."
@@ -5013,10 +5288,18 @@ msgid "View Files"
msgstr "ファイルを表示"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "ダウンロード"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "接続エラー。å†è©¦è¡Œã—ã¦ãã ã•ã„。"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "接続ã§ãã¾ã›ã‚“。"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "ãƒ›ã‚¹ãƒˆã«æŽ¥ç¶šã§ãã¾ã›ã‚“:"
@@ -5025,16 +5308,20 @@ msgid "No response from host:"
msgstr "ホストã‹ã‚‰å¿œç­”ãŒã‚りã¾ã›ã‚“:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "応答ãŒã‚りã¾ã›ã‚“。"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "ホストåを解決ã§ãã¾ã›ã‚“:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "リクエスト失敗。リターンコード:"
+msgid "Can't resolve."
+msgstr "解決ã§ãã¾ã›ã‚“。"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "リクエストã¯å¤±æ•—ã—ã¾ã—ãŸã€‚"
+msgid "Request failed, return code:"
+msgstr "リクエスト失敗。リターンコード:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5061,6 +5348,10 @@ msgid "Timeout."
msgstr "時間切れ。"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "失敗:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
"ダウンロードãƒãƒƒã‚·ãƒ¥ãŒä¸æ­£ã§ã™ã€‚ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ”¹ã–ã‚“ ã•れã¦ã„ã‚‹ã‹ã‚‚ã—れã¾ã›ã‚“。"
@@ -5162,8 +5453,12 @@ msgid "All"
msgstr "ã™ã¹ã¦"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "\"%s\" ã®çµæžœã¯ã‚りã¾ã›ã‚“。"
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5205,6 +5500,10 @@ msgstr "読ã¿è¾¼ã¿ä¸­..."
msgid "Assets ZIP File"
msgstr "アセットã®zipファイル"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5214,9 +5513,10 @@ msgstr ""
"シーンをä¿å­˜ã—ã¦ã‹ã‚‰å†åº¦è¡Œã£ã¦ãã ã•ã„。"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"ベイクã™ã‚‹ãƒ¡ãƒƒã‚·ãƒ¥ãŒã‚りã¾ã›ã‚“。メッシュ㫠UV2ãƒãƒ£ãƒ³ãƒãƒ«ãŒå«ã¾ã‚Œã¦ãŠ"
"りã€'Bake Light' フラグãŒã‚ªãƒ³ã«ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。"
@@ -5242,12 +5542,11 @@ msgstr ""
"ã“ã¨ã‚’確èªã—ã¦ãã ã•ã„。"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
-#, fuzzy
msgid ""
"Godot editor was built without ray tracing support, lightmaps can't be baked."
msgstr ""
-"GodotエディタãŒãƒ¬ã‚¤ãƒˆãƒ¬ãƒ¼ã‚·ãƒ³ã‚°ã«å¯¾å¿œã›ãšã«ãƒ“ルドã•れã¦ãŠã‚Šã€ãƒ©ã‚¤ãƒˆãƒžãƒƒãƒ—ã®ãƒ™"
-"イクãŒã§ãã¾ã›ã‚“。"
+"GodotエディタãŒãƒ¬ã‚¤ãƒˆãƒ¬ãƒ¼ã‚·ãƒ³ã‚°ã®ã‚µãƒãƒ¼ãƒˆãªã—ã§ãƒ“ルドã•れã¦ã„ã‚‹ãŸã‚ã€ãƒ©ã‚¤ãƒˆ"
+"マップã®ãƒ™ã‚¤ã‚¯ãŒã§ãã¾ã›ã‚“。"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Bake Lightmaps"
@@ -5463,9 +5762,10 @@ msgstr "アンカーを変更"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"ゲームカメラã®ç½®ãæ›ãˆ\n"
"エディタã®ãƒ“ューãƒãƒ¼ãƒˆã‚«ãƒ¡ãƒ©ã§ã‚²ãƒ¼ãƒ ã‚«ãƒ¡ãƒ©ã‚’ç½®ãæ›ãˆã‚‹ã€‚"
@@ -5473,11 +5773,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"ゲームカメラã®ç½®ãæ›ãˆ\n"
-"実行中ã®ã‚²ãƒ¼ãƒ ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ç„¡ã—。"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5530,6 +5829,7 @@ msgid ""
msgstr "注æ„:コンテナã®å­ã®ä½ç½®ã¨ã‚µã‚¤ã‚ºã¯ã€è¦ªã«ã‚ˆã£ã¦ã®ã¿æ±ºå®šã•れã¾ã™ã€‚"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5541,22 +5841,32 @@ msgid "Select Mode"
msgstr "é¸æŠžãƒ¢ãƒ¼ãƒ‰"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "ドラッグ: 回転"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "é¸æŠžã—ãŸãƒŽãƒ¼ãƒ‰ã¾ãŸã¯ãƒˆãƒ©ãƒ³ã‚¸ã‚·ãƒ§ãƒ³ã‚’除去。"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+ドラッグ: 移動"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "é¸æŠžã—ãŸãƒŽãƒ¼ãƒ‰ã¾ãŸã¯ãƒˆãƒ©ãƒ³ã‚¸ã‚·ãƒ§ãƒ³ã‚’除去。"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"ピボットを変更ã™ã‚‹ã«ã¯ 'v' ã€ãƒ”ボットをドラッグã™ã‚‹ã«ã¯ 'Shift+v' を押ã—ã¾ã™"
-"(移動中)。"
+"クリックã—ãŸä½ç½®ã«ã‚るオブジェクトã®ãƒªã‚¹ãƒˆã‚’表示\n"
+"(é¸æŠžãƒ¢ãƒ¼ãƒ‰ã§ã®Alt+å³ã‚¯ãƒªãƒƒã‚¯ã¨åŒã˜)。"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+å³ã‚¯ãƒªãƒƒã‚¯: 奥行ãé¸æŠžãƒªã‚¹ãƒˆ"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5793,6 +6103,16 @@ msgid "Clear Pose"
msgstr "ãƒãƒ¼ã‚ºã‚’クリアã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "ノードを追加"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "シーンã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "グリッドステップを2å€ã«ã™ã‚‹"
@@ -5805,6 +6125,52 @@ msgid "Pan View"
msgstr "ビューをパン"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "ズームアウト"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "ズームアウト"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "ズームアウト"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "ズームアウト"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "ズームアウト"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "ズームアウト"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "%s を追加"
@@ -6048,6 +6414,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "å˜ä¸€ã®å‡¸åž‹ã‚³ãƒªã‚¸ãƒ§ãƒ³ã‚·ã‚§ã‚¤ãƒ—を作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "å˜ä¸€ã®å‡¸åž‹ã‚·ã‚§ã‚¤ãƒ—を作æˆã™ã‚‹"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "å˜ä¸€ã®å‡¸åž‹ã‚·ã‚§ã‚¤ãƒ—を作æˆã™ã‚‹"
@@ -6081,7 +6452,8 @@ msgid "No mesh to debug."
msgstr "デãƒãƒƒã‚°ã™ã‚‹ãƒ¡ãƒƒã‚·ãƒ¥ãŒã‚りã¾ã›ã‚“。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "モデルã«ã¯ã“ã®ãƒ¬ã‚¤ãƒ¤ãƒ¼ã«UVãŒã‚りã¾ã›ã‚“"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6147,13 +6519,27 @@ msgstr ""
"ã“れã¯ã€è¡çªæ¤œå‡ºã®æœ€é€Ÿã®(ãŸã ã—ç²¾åº¦ãŒæœ€ã‚‚低ã„)オプションã§ã™ã€‚"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "å˜ä¸€ã®å‡¸åž‹ã‚³ãƒªã‚¸ãƒ§ãƒ³ã®å…„弟を作æˆ"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "複数ã®å‡¸åž‹ã‚³ãƒªã‚¸ãƒ§ãƒ³ã®å…„弟を作æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"ãƒãƒªã‚´ãƒ³ãƒ™ãƒ¼ã‚¹ã®ã‚³ãƒªã‚¸ãƒ§ãƒ³ã‚·ã‚§ã‚¤ãƒ—を作æˆã—ã¾ã™ã€‚\n"
"ã“れã¯ã€ä¸Šè¨˜ã®2ã¤ã®ã‚ªãƒ—ションã®ä¸­é–“çš„ãªãƒ‘フォーマンスã§ã™ã€‚"
@@ -6215,7 +6601,6 @@ msgid "Mesh Library"
msgstr "メッシュライブラリ"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "アイテムを追加"
@@ -6490,7 +6875,8 @@ msgid "Close Curve"
msgstr "曲線を閉ã˜ã‚‹"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "オプション"
@@ -6798,6 +7184,26 @@ msgstr "リソースを読ã¿è¾¼ã‚€"
msgid "ResourcePreloader"
msgstr "ResourcePreloader"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "å·¦å³å転"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "生æˆã—ãŸãƒã‚¤ãƒ³ãƒˆã®æ•°:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "生æˆã—ãŸãƒã‚¤ãƒ³ãƒˆã®æ•°:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "å·¦å³å転"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTreeã«ã¯AnimationPlayerã¸ã®ãƒ‘スãŒè¨­å®šã•れã¦ã„ã¾ã›ã‚“"
@@ -7004,7 +7410,7 @@ msgstr "実行"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "検索"
@@ -7035,6 +7441,11 @@ msgid "Debug with External Editor"
msgstr "外部エディタã§ãƒ‡ãƒãƒƒã‚°"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "オンラインドキュメント"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Godotã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’é–‹ã。"
@@ -7163,8 +7574,8 @@ msgstr "å‚ç…§"
msgid "Cut"
msgstr "切りå–り"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "ã™ã¹ã¦é¸æŠž"
@@ -7197,10 +7608,6 @@ msgid "Unfold All Lines"
msgstr "ã™ã¹ã¦ã®è¡Œã‚’展開"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "下ã«è¤‡å†™"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "シンボルを補完"
@@ -7354,6 +7761,28 @@ msgid "View Plane Transform."
msgstr "ビュー平é¢ãƒˆãƒ©ãƒ³ã‚¹ãƒ•ォーム."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "None"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "回転モード"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "移動:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "スケール:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "縮尺: "
@@ -7374,42 +7803,54 @@ msgid "Animation Key Inserted."
msgstr "ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚­ãƒ¼ãŒæŒ¿å…¥ã•れã¾ã—ãŸã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "ピッãƒ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "ヨー"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "サイズ"
+#, fuzzy
+msgid "Size:"
+msgstr "サイズ: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "æç”»ã•れãŸã‚ªãƒ–ジェクト"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "マテリアルã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "シェーダーã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "サーフェスã®å¤‰æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "ドローコール"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "頂点"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "上é¢å›³ã€‚"
@@ -7562,6 +8003,11 @@ msgid "Freelook Slow Modifier"
msgstr "ãƒ•ãƒªãƒ¼ãƒ«ãƒƒã‚¯ã®æ¸›é€Ÿèª¿æ•´"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "カメラサイズを変更"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "ビューã®å›žè»¢ã‚’固定中"
@@ -7579,6 +8025,11 @@ msgstr ""
"ゲーム内ã®ãƒ‘フォーマンスを確実ã«ç¤ºã™ã‚‚ã®ã¨ã—ã¦ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "%s ã«å¤‰æ›"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XFormダイアログ"
@@ -7597,7 +8048,8 @@ msgstr ""
"åŠé–‹ãã®ç›®: ギズモã¯éžé€æ˜Žãªé¢ã‚’通ã—ã¦ã‚‚å¯è¦– (「Xç·šã€)。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "ノードをフロアã«ã‚¹ãƒŠãƒƒãƒ—"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7605,16 +8057,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "é¸æŠžå¯¾è±¡ã‚’ã‚¹ãƒŠãƒƒãƒ—ã•ã›ã‚‹å‰›ä½“ã®åºŠã‚’見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"ドラッグ: 回転\n"
-"Alt+ドラッグ: 移動\n"
-"Alt+å³ã‚¯ãƒªãƒƒã‚¯: 奥行ãé¸æŠžãƒªã‚¹ãƒˆ"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "ローカル空間を使用"
@@ -7623,6 +8065,10 @@ msgid "Use Snap"
msgstr "スナップを使ã†"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "下é¢å›³"
@@ -7716,6 +8162,11 @@ msgid "View Grid"
msgstr "ビューã®ã‚°ãƒªãƒƒãƒ‰"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "ビューãƒãƒ¼ãƒˆã®è¨­å®š"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "設定..."
@@ -8005,11 +8456,6 @@ msgid "Snap Mode:"
msgstr "Snapモード:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "None"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "ピクセルスナップ"
@@ -8030,165 +8476,603 @@ msgid "Step:"
msgstr "ステップ:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "分類:"
+msgid "Separation:"
+msgstr "分離:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "テクスãƒãƒ£é ˜åŸŸ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’追加"
+#, fuzzy
+msgid "Colors"
+msgstr "Color"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Fonts"
+msgstr "フォント"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "ã™ã¹ã¦ã‚’追加"
+#, fuzzy
+msgid "Icons"
+msgstr "アイコン"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Styleboxes"
+msgstr "スタイル"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "サブリソースãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "定数"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Color定数。"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "サブリソースãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "テーマã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "エディタを終了ã—ã¾ã™ã‹ï¼Ÿ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "分æžä¸­"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "フィルタ: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "ãƒŽãƒ¼ãƒ‰ã‚’é¸æŠž"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "設定項目を設定ã—ã¦ãã ã•ã„!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "è¨­å®šé …ç›®ã‚’é¸æŠžã—ã¦ãã ã•ã„!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "è¨­å®šé …ç›®ã‚’é¸æŠžã—ã¦ãã ã•ã„!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "è¨­å®šé …ç›®ã‚’é¸æŠžã—ã¦ãã ã•ã„!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "è¨­å®šé …ç›®ã‚’é¸æŠžã—ã¦ãã ã•ã„!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "è¨­å®šé …ç›®ã‚’é¸æŠžã—ã¦ãã ã•ã„!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "ã™ã¹ã¦æŠ˜ã‚ŠãŸãŸã‚€"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "ã™ã¹ã¦å±•é–‹"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "ãƒ†ãƒ³ãƒ—ãƒ¬ãƒ¼ãƒˆãƒ•ã‚¡ã‚¤ãƒ«ã‚’é¸æŠž"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "ç‚¹ã‚’é¸æŠž"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "ã™ã¹ã¦é¸æŠž"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "シーンをインãƒãƒ¼ãƒˆ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’除去"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "ã™ã¹ã¦é™¤åŽ»"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "アイテムを除去"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "テーマを編集"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’除去"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "テーマ編集メニュー。"
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’除去"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’除去"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’除去"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "クラスアイテム追加"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
msgstr "クラスアイテム追加"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "アイテムを追加"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "アイテムを追加"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’追加"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "クラスアイテム削除"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "クラスアイテム削除"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "ノードã®åå‰ã‚’変更"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "ノードã®åå‰ã‚’変更"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "é¸æŠžã—ãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’å–り除ã"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "無効ãªãƒ•ァイルã§ã™ã€‚オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã§ã¯ã‚りã¾ã›ã‚“。"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "テンプレートã®ç®¡ç†"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "編集å¯èƒ½ãªã‚¢ã‚¤ãƒ†ãƒ "
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "åž‹:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "åž‹:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "アイテムを追加"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’追加"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "アイテムを除去"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "クラスアイテム削除"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "空ã®ãƒ†ãƒ³ãƒ—レートを生æˆ"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "クラスアイテム削除"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã‚’除去"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "GUIテーマã®ã‚¢ã‚¤ãƒ†ãƒ "
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "ノードå:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "空ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ†ãƒ³ãƒ—レートを生æˆ"
+#, fuzzy
+msgid "Import Items"
+msgstr "テーマã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "ç¾åœ¨ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ†ãƒ¼ãƒžã‹ã‚‰ä½œæˆ"
+#, fuzzy
+msgid "Default Theme"
+msgstr "デフォルト"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "テーマを編集"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "リソースを削除"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "テーマã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Anim トラックåã®å¤‰æ›´"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "åå‰ã®ä¸€æ‹¬å¤‰æ›´"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "上書ã"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "タイプ(型)"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "アイテムを追加"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "ノードタイプ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "デフォルトを読込む"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "上書ã"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "テーマ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "エクスãƒãƒ¼ãƒˆãƒ†ãƒ³ãƒ—レートã®ç®¡ç†..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "プレビュー"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "プレビューを更新"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "ã‚½ãƒ¼ã‚¹ãƒ¡ãƒƒã‚·ãƒ¥ã‚’é¸æŠž:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "切り替ãˆãƒœã‚¿ãƒ³"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "ボタンを無効ã«ã™ã‚‹"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "アイテム"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "アイテムを無効ã«ã™ã‚‹"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "アイテムをãƒã‚§ãƒƒã‚¯"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "ãƒã‚§ãƒƒã‚¯æ¸ˆã¿ã‚¢ã‚¤ãƒ†ãƒ "
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "ラジオ アイテム"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "ãƒã‚§ãƒƒã‚¯æ¸ˆã¿ãƒ©ã‚¸ã‚ª アイテム"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "åå‰ä»˜ã分類。"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "サブメニュー"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "サブアイテム 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "サブアイテム 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "å«ã‚“ã§ã„ã‚‹"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "多ãã®"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "ライン編集を無効ã«ã™ã‚‹"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "タブ1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "タブ2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "タブ3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "編集å¯èƒ½ãªã‚¢ã‚¤ãƒ†ãƒ "
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "サブツリー"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Has,Many,Options"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "データã®åž‹:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "アイコン"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "スタイル"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "フォント"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Color"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "無効ãªãƒ•ァイルã§ã™ã€‚オーディオãƒã‚¹ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã§ã¯ã‚りã¾ã›ã‚“。"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "テーマ ファイル"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8362,6 +9246,10 @@ msgid "Priority"
msgstr "優先順ä½"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "アイコン"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Zインデックス"
@@ -8698,11 +9586,6 @@ msgid "Commit Changes"
msgstr "変更をコミットã™ã‚‹"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "ステータス"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "最新ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚³ãƒŸãƒƒãƒˆã™ã‚‹å‰ã«ãƒ•ァイルã®å·®åˆ†ã‚’見る"
@@ -9581,7 +10464,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "ビジュアルプロパティを編集"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9711,7 +10595,8 @@ msgid "Script"
msgstr "スクリプト"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "スクリプトã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆãƒ¢ãƒ¼ãƒ‰:"
#: editor/project_export.cpp
@@ -9719,19 +10604,21 @@ msgid "Text"
msgstr "テキスト"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "コンパイル済ã¿"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "æš—å·åŒ–(下ã«ã‚­ãƒ¼ã‚’入力)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "ç„¡åŠ¹ãªæš—å·åŒ–キー(64文字ã§ã‚ã‚‹å¿…è¦ãŒã‚りã¾ã™)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "スクリプト暗å·åŒ–キー(16進数ã§256ビット):"
#: editor/project_export.cpp
@@ -9807,7 +10694,8 @@ msgid "Imported Project"
msgstr "インãƒãƒ¼ãƒˆã•れãŸãƒ—ロジェクト"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "無効ãªãƒ—ロジェクトåã§ã™ã€‚"
#: editor/project_manager.cpp
@@ -9843,6 +10731,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "project.godot をプロジェクトパスã«ç”Ÿæˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "パッケージファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸã€zip å½¢å¼ã§ã¯ã‚りã¾ã›ã‚“。"
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "次ã®ãƒ•ァイルをパッケージã‹ã‚‰æŠ½å‡ºã§ãã¾ã›ã‚“ã§ã—ãŸ:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "パッケージã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«æˆåŠŸã—ã¾ã—ãŸ!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "プロジェクトåã®å¤‰æ›´"
@@ -10017,20 +10917,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "%d個ã®ãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã‚’åŒæ™‚ã«å®Ÿè¡Œã—ã¦ã‚‚よã‚ã—ã„ã§ã™ã‹?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"%d プロジェクトを一覧ã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ\n"
-"プロジェクトフォルダã®å†…容ã¯å¤‰æ›´ã•れã¾ã›ã‚“。"
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "一覧ã‹ã‚‰ãƒ‡ãƒã‚¤ã‚¹ã‚’é¸æŠž"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"ã“ã®ãƒ—ロジェクトを一覧ã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ\n"
-"プロジェクトフォルダã®å†…容ã¯å¤‰æ›´ã•れã¾ã›ã‚“。"
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "一覧ã‹ã‚‰ãƒ‡ãƒã‚¤ã‚¹ã‚’é¸æŠž"
#: editor/project_manager.cpp
msgid ""
@@ -10063,7 +10957,8 @@ msgid "Project Manager"
msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "プロジェクト"
#: editor/project_manager.cpp
@@ -10075,10 +10970,25 @@ msgid "Last Modified"
msgstr "最終更新"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "プロジェクトã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "プロジェクトåã®å¤‰æ›´"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "スキャン"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "プロジェクト"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "スキャンã™ã‚‹ãƒ•ã‚©ãƒ«ãƒ€ã‚’é¸æŠž"
@@ -10087,18 +10997,41 @@ msgid "New Project"
msgstr "æ–°è¦ãƒ—ロジェクト"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "インãƒãƒ¼ãƒˆã•れãŸãƒ—ロジェクト"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "プロジェクトåã®å¤‰æ›´"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "存在ã—ãªã„ã‚‚ã®ã‚’除去"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "テンプレート"
+msgid "About"
+msgstr "概è¦"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "アセットライブラリ"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "今ã™ãå†èµ·å‹•"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "ã™ã¹ã¦é™¤åŽ»"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "プロジェクトを実行ã§ãã¾ã›ã‚“"
@@ -10111,8 +11044,14 @@ msgstr ""
"アセットライブラリã§å…¬å¼ã®ã‚µãƒ³ãƒ—ルプロジェクトをãƒã‚§ãƒƒã‚¯ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "フィルタプロパティ"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10126,6 +11065,10 @@ msgid "Key "
msgstr "キー "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "ゲームパッドã®ãƒœã‚¿ãƒ³"
@@ -10169,6 +11112,10 @@ msgstr "ã™ã¹ã¦ã®ãƒ‡ãƒã‚¤ã‚¹"
msgid "Device"
msgstr "デãƒã‚¤ã‚¹"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "キーを押ã—ã¦ãã ã•ã„..."
@@ -10310,7 +11257,8 @@ msgid "Override for Feature"
msgstr "機能ã®ã‚ªãƒ¼ãƒãƒ¼ãƒ©ã‚¤ãƒ‰"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "翻訳を追加"
#: editor/project_settings_editor.cpp
@@ -10318,11 +11266,13 @@ msgid "Remove Translation"
msgstr "翻訳を除去"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "å†ãƒžãƒƒãƒ—ã•れãŸãƒ‘スを追加"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "リソースå†ãƒžãƒƒãƒ—ãŒå†ãƒžãƒƒãƒ—を追加"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "リソースå†ãƒžãƒƒãƒ—ãŒå†ãƒžãƒƒãƒ—を追加"
#: editor/project_settings_editor.cpp
@@ -10595,6 +11545,10 @@ msgid "Post-Process"
msgstr "ãƒã‚¹ãƒˆãƒ—ロセス"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "スタイル"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "ä¿æŒ"
@@ -10760,12 +11714,30 @@ msgid "Delete node \"%s\"?"
msgstr "\"%s\" ノードを削除ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "ルートノードã§ã¯å®Ÿè¡Œã§ãã¾ã›ã‚“。"
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "ã“ã®å‡¦ç†ã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã•れãŸã‚·ãƒ¼ãƒ³ã§ã¯å®Ÿè¡Œã§ãã¾ã›ã‚“。"
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10824,6 +11796,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ãŒç¶™æ‰¿ã—ã¦ã„るノードをæ“作ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "ã“ã®å‡¦ç†ã¯ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–ã•れãŸã‚·ãƒ¼ãƒ³ã§ã¯å®Ÿè¡Œã§ãã¾ã›ã‚“。"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "スクリプトをアタッãƒ"
@@ -10872,10 +11848,6 @@ msgid "Load As Placeholder"
msgstr "プレースホルダã¨ã—ã¦ãƒ­ãƒ¼ãƒ‰"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "ドキュメントを開ã"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11165,6 +12137,12 @@ msgstr ""
"ã¾ã›ã‚“。"
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "クラスå:"
@@ -11233,6 +12211,10 @@ msgid "Copy Error"
msgstr "エラーをコピー"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "ビデオRAM"
@@ -11516,6 +12498,16 @@ msgstr "無効ãªã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹è¾žæ›¸ã§ã™(無効ãªã‚µãƒ–クラス)"
msgid "Object can't provide a length."
msgstr "オブジェクトã«é•·ã•ãŒã‚りã¾ã›ã‚“."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "メッシュライブラリã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "エクスãƒãƒ¼ãƒˆ..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "次ã®å¹³é¢"
@@ -11557,6 +12549,11 @@ msgid "GridMap Paint"
msgstr "GridMap ペイント"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "GridMap é¸æŠžç¯„å›²ã‚’åŸ‹ã‚ã‚‹"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "グリッドマップ"
@@ -11809,6 +12806,16 @@ msgid "Add Output Port"
msgstr "出力ãƒãƒ¼ãƒˆã‚’追加"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "型を変更"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "入力ãƒãƒ¼ãƒˆåã®å¤‰æ›´"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "既存ã®çµ„è¾¼ã¿é–¢æ•°ã‚’オーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã€‚"
@@ -11924,6 +12931,11 @@ msgid "Add Preload Node"
msgstr "プリロードノードを追加"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "ノードを追加"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "ツリーã‹ã‚‰ãƒŽãƒ¼ãƒ‰ã‚’追加"
@@ -12152,10 +13164,6 @@ msgstr "VisualScriptを検索"
msgid "Get %s"
msgstr "%s ã‚’å–å¾—"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "%s を設定"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "パッケージåãŒã‚りã¾ã›ã‚“。"
@@ -12185,6 +13193,40 @@ msgid "Select device from the list"
msgstr "一覧ã‹ã‚‰ãƒ‡ãƒã‚¤ã‚¹ã‚’é¸æŠž"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "ã™ã¹ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "アンインストール"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "読ã¿è¾¼ã¿ä¸­ã€ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "サブプロセスを開始ã§ãã¾ã›ã‚“ã§ã—ãŸ!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "カスタムスクリプトã®å®Ÿè¡Œä¸­..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "'apksigner' ツールãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。"
@@ -12294,6 +13336,48 @@ msgstr ""
"\"Export AAB\" 㯠\"Use Custom Build\" ãŒæœ‰åйã§ã‚ã‚‹å ´åˆã«ã®ã¿æœ‰åйã«ãªã‚Šã¾ã™ã€‚"
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"ファイルã®ã‚¹ã‚­ãƒ£ãƒ³ä¸­\n"
+"ã—ã°ã‚‰ããŠå¾…ã¡ä¸‹ã•ã„..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "エクスãƒãƒ¼ãƒˆç”¨ã®ãƒ†ãƒ³ãƒ—レートを開ã‘ã¾ã›ã‚“ã§ã—ãŸ:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "%s を追加中..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "ã™ã¹ã¦ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
"無効ãªãƒ•ァイルåã§ã™ï¼ Android App Bundle ã«ã¯æ‹¡å¼µå­ *.aab ãŒå¿…è¦ã§ã™ã€‚"
@@ -12307,6 +13391,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "無効ãªãƒ•ァイルåã§ã™ï¼ Android APKã«ã¯æ‹¡å¼µå­ *.apk ãŒå¿…è¦ã§ã™ã€‚"
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12328,6 +13416,21 @@ msgstr ""
"ã ã•ã„。"
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "project.godotをプロジェクトパスã«ç”Ÿæˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "ファイルを書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Androidãƒ—ãƒ­ã‚¸ã‚§ã‚¯ãƒˆã®æ§‹ç¯‰(gradle)"
@@ -12352,11 +13455,54 @@ msgstr ""
"エクスãƒãƒ¼ãƒˆãƒ•ァイルã®ã‚³ãƒ”ーã¨åå‰ã®å¤‰æ›´ãŒã§ãã¾ã›ã‚“ã€‚å‡ºåŠ›çµæžœã‚’ã¿ã‚‹ã«ã¯"
"gradleã®ãƒ—ロジェクトディレクトリを確èªã—ã¦ãã ã•ã„。"
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "見ã¤ã‹ã‚‰ãªã„アニメーション: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "輪郭を作æˆã—ã¦ã„ã¾ã™..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "エクスãƒãƒ¼ãƒˆç”¨ã®ãƒ†ãƒ³ãƒ—レートを開ã‘ã¾ã›ã‚“ã§ã—ãŸ:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "%s を追加中..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "ファイルを書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "APKを最é©åŒ–..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "識別å­ãŒã‚りã¾ã›ã‚“。"
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "文字 '%s' ã¯è­˜åˆ¥å­ã«ä½¿ç”¨ã§ãã¾ã›ã‚“。"
@@ -12385,10 +13531,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "エクスãƒãƒ¼ãƒˆã—ãŸHTMLをシステム既定ã®ãƒ–ラウザã§å®Ÿè¡Œã™ã‚‹ã€‚"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "ファイルを書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "エクスãƒãƒ¼ãƒˆç”¨ã®ãƒ†ãƒ³ãƒ—レートを開ã‘ã¾ã›ã‚“ã§ã—ãŸ:"
@@ -12397,16 +13539,49 @@ msgid "Invalid export template:"
msgstr "無効ãªã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ テンプレート:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "ファイルを書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "ファイルを書ãè¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "カスタムHTMLシェルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "ブートスプラッシュ画åƒãƒ•ァイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "デフォルトã®ãƒ–ートスプラッシュ画åƒã‚’使用ã—ã¾ã™ã€‚"
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "シーンをä¿å­˜ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "無効ãªè­˜åˆ¥å­:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12835,6 +14010,13 @@ msgstr ""
"GIProbesã¯GLES2ビデオドライãƒã§ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。\n"
"代ã‚りã«BakedLightmapを使用ã—ã¦ãã ã•ã„。"
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "90度を超ãˆã‚‹è§’度ã®ã‚¹ãƒãƒƒãƒˆãƒ©ã‚¤ãƒˆã¯ã€ã‚·ãƒ£ãƒ‰ã‚¦ã‚’投影ã§ãã¾ã›ã‚“。"
@@ -12918,6 +14100,18 @@ msgstr "Joint ã¨æŽ¥ç¶šã—ã¦ã„ã‚‹ PhysicsBody ãŒã‚りã¾ã›ã‚“"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Node A 㨠Node B ã¯ç•°ãªã‚‹ PhysicsBody ã§ãªã‘れã°ãªã‚Šã¾ã›ã‚“"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12926,6 +14120,46 @@ msgstr ""
"\"Remote Path\"プロパティã¯ã€æœ‰åйãªSpatialã¾ãŸã¯Spatialã‹ã‚‰æ´¾ç”Ÿã—ãŸãƒŽãƒ¼ãƒ‰ã‚’指"
"ã™å¿…è¦ãŒã‚りã¾ã™ã€‚"
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "ã“ã®ãƒœãƒ‡ã‚£ã¯ã€ãƒ¡ãƒƒã‚·ãƒ¥ã‚’設定ã™ã‚‹ã¾ã§ç„¡è¦–ã•れã¾ã™ã€‚"
@@ -12987,6 +14221,10 @@ msgstr "BlendTreeノード '%s' ã§ã¯ã€ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ãŒè¦‹ã¤ã‹ã‚Šã¾
msgid "Animation not found: '%s'"
msgstr "見ã¤ã‹ã‚‰ãªã„アニメーション: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "ノード '%s', 無効ãªã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³: '%s'。"
@@ -13158,6 +14396,27 @@ msgid "Invalid comparison function for that type."
msgstr "ãã®ã‚¿ã‚¤ãƒ—ã®æ¯”較関数ã¯ç„¡åйã§ã™ã€‚"
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Varying変数ã¯é ‚点関数ã«ã®ã¿å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "関数ã¸ã®å‰²ã‚Šå½“ã¦ã€‚"
@@ -13166,13 +14425,179 @@ msgid "Assignment to uniform."
msgstr "uniform ã¸ã®å‰²ã‚Šå½“ã¦ã€‚"
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Varying変数ã¯é ‚点関数ã«ã®ã¿å‰²ã‚Šå½“ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
+#~ msgid "Package Contents:"
+#~ msgstr "パッケージã®å†…容:"
+
+#~ msgid "Singleton"
+#~ msgstr "シングルトン"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "プロファイル '%s' を消去ã—ã¾ã™ã‹ï¼Ÿ(å…ƒã«æˆ»ã›ã¾ã›ã‚“)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "プロパティを有効ã«ã™ã‚‹:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "機能を有効ã«ã™ã‚‹:"
+
+#~ msgid "Unset"
+#~ msgstr "未設定"
+
+#~ msgid "Class Options"
+#~ msgstr "クラスオプション"
+
+#~ msgid "Set"
+#~ msgstr "Set"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "%s個ã®å¤‰æ›´ã•れãŸãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã—ã¾ã—ãŸã€‚"
+
+#~ msgid "Q&A"
+#~ msgstr "Q&A"
+
+#~ msgid "Status:"
+#~ msgstr "ステータス:"
+
+#~ msgid "Edit:"
+#~ msgstr "編集:"
+
+#~ msgid "Redownload"
+#~ msgstr "å†ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰"
+
+#~ msgid "(Installed)"
+#~ msgstr "(インストール済)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(見ã¤ã‹ã‚Šã¾ã›ã‚“)"
+
+#~ msgid "Request Failed."
+#~ msgstr "リクエストã¯å¤±æ•—ã—ã¾ã—ãŸã€‚"
+
+#~ msgid "Redirect Loop."
+#~ msgstr "リダイレクトã®ãƒ«ãƒ¼ãƒ—。"
+
+#~ msgid "Download Complete."
+#~ msgstr "ダウンロードãŒå®Œäº†ã—ã¾ã—ãŸã€‚"
+
+#~ msgid "Remove Template"
+#~ msgstr "テンプレートを除去"
+
+#~ msgid "Download Templates"
+#~ msgstr "テンプレートをダウンロード"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "リストã‹ã‚‰ãƒŸãƒ©ãƒ¼ã‚’é¸æŠž: (Shift+クリック: ブラウザã§é–‹ã)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "ã”ã¿ç®±ã¸ç§»å‹•"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "ã™ã¹ã¦ã®ãƒ—ロパティを展開"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "ã™ã¹ã¦ã®ãƒ—ロパティを折りãŸãŸã‚€"
+
+#~ msgid "Copy Params"
+#~ msgstr "パラメーターをコピー"
+
+#~ msgid "Open in Help"
+#~ msgstr "ヘルプã§é–‹ã"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "ゲームカメラã®ç½®ãæ›ãˆ\n"
+#~ "実行中ã®ã‚²ãƒ¼ãƒ ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ç„¡ã—。"
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "ドラッグ: 回転"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "ピボットを変更ã™ã‚‹ã«ã¯ 'v' ã€ãƒ”ボットをドラッグã™ã‚‹ã«ã¯ 'Shift+v' を押ã—ã¾"
+#~ "ã™(移動中)。"
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+å³ã‚¯ãƒªãƒƒã‚¯: 奥行ãé¸æŠžãƒªã‚¹ãƒˆ"
+
+#~ msgid "Clone Down"
+#~ msgstr "下ã«è¤‡å†™"
+
+#~ msgid "Yaw"
+#~ msgstr "ヨー"
+
+#~ msgid "Size"
+#~ msgstr "サイズ"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "ドラッグ: 回転\n"
+#~ "Alt+ドラッグ: 移動\n"
+#~ "Alt+å³ã‚¯ãƒªãƒƒã‚¯: 奥行ãé¸æŠžãƒªã‚¹ãƒˆ"
+
+#~ msgid "Sep.:"
+#~ msgstr "分類:"
+
+#~ msgid "Add All"
+#~ msgstr "ã™ã¹ã¦ã‚’追加"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "テーマ編集メニュー。"
+
+#~ msgid "Create Empty Template"
+#~ msgstr "空ã®ãƒ†ãƒ³ãƒ—レートを生æˆ"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "空ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ†ãƒ³ãƒ—レートを生æˆ"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "ç¾åœ¨ã®ã‚¨ãƒ‡ã‚£ã‚¿ãƒ†ãƒ¼ãƒžã‹ã‚‰ä½œæˆ"
+
+#~ msgid "Data Type:"
+#~ msgstr "データã®åž‹:"
+
+#~ msgid "Theme File"
+#~ msgstr "テーマ ファイル"
+
+#~ msgid "Compiled"
+#~ msgstr "コンパイル済ã¿"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "%d プロジェクトを一覧ã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ\n"
+#~ "プロジェクトフォルダã®å†…容ã¯å¤‰æ›´ã•れã¾ã›ã‚“。"
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "ã“ã®ãƒ—ロジェクトを一覧ã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ\n"
+#~ "プロジェクトフォルダã®å†…容ã¯å¤‰æ›´ã•れã¾ã›ã‚“。"
+
+#~ msgid "Templates"
+#~ msgstr "テンプレート"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "å†ãƒžãƒƒãƒ—ã•れãŸãƒ‘スを追加"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "ルートノードã§ã¯å®Ÿè¡Œã§ãã¾ã›ã‚“。"
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "ブートスプラッシュ画åƒãƒ•ァイルを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "デフォルトã®ãƒ–ートスプラッシュ画åƒã‚’使用ã—ã¾ã™ã€‚"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "アニメーションプレーヤーã¯ä»–ã®ãƒ—レーヤーã ã‘ã«ã‚¢ãƒ‹ãƒ¡ãƒ¼ã‚·ãƒ§ãƒ³ã‚’é©ç”¨ã™ã‚‹ã“ã¨"
@@ -13224,9 +14649,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "ã“ã®ãƒ‘スã«ã¯ã€æ—¢ã«åŒåã®ãƒ•ァイルã‹ãƒ•ォルダãŒã‚りã¾ã™ã€‚"
-#~ msgid "Aligning APK..."
-#~ msgstr "APKを最é©åŒ–..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "APKã®æœ€é©åŒ–を完了ã§ãã¾ã›ã‚“。"
@@ -13288,9 +14710,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ã¯ä¿å­˜ã•れã¾ã›ã‚“ã§ã—ãŸã€‚実行ã™ã‚‹å‰ã«ä¿å­˜ã—ã¦ãã ã•ã„。"
-#~ msgid "Not in resource path."
-#~ msgstr "リソースパスã«ã‚りã¾ã›ã‚“。"
-
#~ msgid "Revert"
#~ msgstr "å…ƒã«æˆ»ã™"
@@ -13392,9 +14811,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "Input"
#~ msgstr "入力"
-#~ msgid "Properties:"
-#~ msgstr "プロパティ:"
-
#~ msgid "Methods:"
#~ msgstr "メソッド:"
@@ -13713,10 +15129,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "Splits"
#~ msgstr "パスを分割"
-#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "設定項目を設定ã—ã¦ãã ã•ã„!"
-
#~ msgid "Add Node.."
#~ msgstr "ノードを追加.."
@@ -13783,9 +15195,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "Public Methods:"
#~ msgstr "パブリックメソッド:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "GUIテーマã®ã‚¢ã‚¤ãƒ†ãƒ "
-
#~ msgid "GUI Theme Items:"
#~ msgstr "GUIテーマã®ã‚¢ã‚¤ãƒ†ãƒ :"
@@ -13807,9 +15216,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "Match case"
#~ msgstr "å¤§æ–‡å­—å°æ–‡å­—を区別"
-#~ msgid "Filter: "
-#~ msgstr "フィルタ: "
-
#~ msgid "Ok"
#~ msgstr "OK"
@@ -13850,9 +15256,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "Rotate 270 degrees"
#~ msgstr "270度回転"
-#~ msgid "Variable"
-#~ msgstr "変数"
-
#~ msgid "Errors:"
#~ msgstr "エラー:"
@@ -13955,9 +15358,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "Set Transitions to:"
#~ msgstr "トランジションを設定:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Anim トラックåã®å¤‰æ›´"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Anim トラック補間ã®å¤‰æ›´"
@@ -14120,13 +15520,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "StyleBox Preview:"
#~ msgstr "スタイルボックス プレビュー:"
-#, fuzzy
-#~ msgid "StyleBox"
-#~ msgstr "スタイル"
-
-#~ msgid "Separation:"
-#~ msgstr "分離:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "テクスãƒãƒ£ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã€€ã‚¨ãƒ‡ã‚£ã‚¿"
@@ -14211,13 +15604,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "project.godotをプロジェクトパスã«ç”Ÿæˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
-#, fuzzy
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "project.godotをプロジェクトパスã«ç”Ÿæˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
-
-#~ msgid "Not found!"
-#~ msgstr "見ã¤ã‹ã‚Šã¾ã›ã‚“!"
-
#~ msgid "Replace By"
#~ msgstr "ã§ç½®æ›ã™ã‚‹"
@@ -14641,10 +16027,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgstr "テクスãƒãƒ£åœ§ç¸®å“質 (WebP):"
#, fuzzy
-#~ msgid "Texture Options"
-#~ msgstr "テクスãƒãƒ£ã€€ã‚ªãƒ—ション"
-
-#, fuzzy
#~ msgid "Please specify some files!"
#~ msgstr "ãªã«ã‹ãƒ•ァイルを指定ã—ã¦ãã ã•ã„!"
@@ -14839,9 +16221,6 @@ msgstr "定数ã¯å¤‰æ›´ã§ãã¾ã›ã‚“。"
#~ msgid "Zoom Set..."
#~ msgstr "ズームをセットã™ã‚‹..."
-#~ msgid "Set a Value"
-#~ msgstr "値を設定ã™ã‚‹"
-
#, fuzzy
#~ msgid "Parse BBCode"
#~ msgstr "BBコードをパースã™ã‚‹"
diff --git a/editor/translations/ka.po b/editor/translations/ka.po
index 587624651a..144ef77158 100644
--- a/editor/translations/ka.po
+++ b/editor/translations/ka.po
@@ -552,7 +552,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -578,7 +579,8 @@ msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის ცვლილá
msgid "Scale From Cursor"
msgstr "შკáƒáƒšáƒ˜áƒ áƒ”ბრმáƒáƒ©áƒ•ენებლიდáƒáƒœ"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის áƒáƒ¡áƒšáƒ˜áƒ¡ შექმნáƒ"
@@ -602,6 +604,11 @@ msgid "Go to Previous Step"
msgstr "წინáƒáƒ›áƒ“ებáƒáƒ áƒ” ნáƒáƒ‘იჯზე გáƒáƒ“áƒáƒ¡áƒ•ლáƒ"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "ზუმის სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ–ე დáƒáƒ§áƒ”ნებáƒ"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ áƒáƒžáƒ¢áƒ˜áƒ›áƒ˜áƒ–áƒáƒªáƒ˜áƒ"
@@ -618,6 +625,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡. áƒáƒžáƒ¢áƒ˜áƒ›áƒ˜áƒ–áƒáƒ¢áƒáƒ áƒ˜"
@@ -667,7 +678,7 @@ msgid "Select Tracks to Copy"
msgstr "დáƒáƒ§áƒ”ნდეს გáƒáƒ“áƒáƒ¡áƒ•ლები შემდეგზე:"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -757,12 +768,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "ზუმის გáƒáƒ–რდáƒ"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -825,11 +838,9 @@ msgid "Add"
msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -881,6 +892,7 @@ msgstr "დáƒáƒ›áƒáƒ™áƒáƒ•შირებელი სიგნáƒáƒšáƒ˜:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -956,8 +968,9 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
-msgstr ""
+#, fuzzy
+msgid "Go to Method"
+msgstr "მáƒáƒ›áƒ“ევნრნáƒáƒ‘იჯზე გáƒáƒ“áƒáƒ¡áƒ•ლáƒ"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -971,6 +984,14 @@ msgstr "ცვლილებáƒ"
msgid "Create New %s"
msgstr "áƒáƒ®áƒáƒšáƒ˜ %s შექმნáƒ"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -992,8 +1013,8 @@ msgstr "ძებნáƒ:"
msgid "Matches:"
msgstr "დáƒáƒ›áƒ—ხვევები:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1073,8 +1094,9 @@ msgstr "მფლáƒáƒ‘ელები:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "მáƒáƒ•áƒáƒ¨áƒáƒ áƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი პრáƒáƒ”ქტიდáƒáƒœ? (უკáƒáƒœ დáƒáƒ‘რუნებრშეუძლებელიáƒ)"
#: editor/dependency_editor.cpp
@@ -1082,8 +1104,9 @@ msgstr "მáƒáƒ•áƒáƒ¨áƒáƒ áƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”á
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"ფáƒáƒ˜áƒšáƒ”ბი რáƒáƒ›áƒšáƒ”ბსáƒáƒª შლით სáƒáƒ­áƒ˜áƒ áƒáƒ სხვრრესურსებისთვის რáƒáƒ› იმუშáƒáƒáƒœ.\n"
"წáƒáƒ•შáƒáƒšáƒáƒ— áƒáƒ›áƒ˜áƒ¡ მიუხედáƒáƒ•áƒáƒ“? (შეუძლებელირუკáƒáƒœ დáƒáƒ‘რუნებáƒ)"
@@ -1132,7 +1155,7 @@ msgstr "áƒáƒ‘áƒáƒšáƒ˜ რესურსების მáƒáƒ«áƒ˜áƒ”ბელá
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1261,30 +1284,38 @@ msgstr "კáƒáƒ›áƒžáƒáƒœáƒ”ნტები"
msgid "Licenses"
msgstr "ლიცენზიები"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Error opening package file, not in ZIP format."
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "შეცდáƒáƒ›áƒ პáƒáƒ™áƒ”ტის გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡áƒáƒ¡, უნდრიყáƒáƒ¡ zip ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "áƒáƒ¥áƒ¢áƒ˜áƒ•ების áƒáƒ áƒáƒ™áƒáƒ›áƒžáƒ áƒ”სირებáƒ"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "(and %s more files)"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Package installed successfully!"
+msgid "Asset \"%s\" installed successfully!"
msgstr "პáƒáƒ™áƒ”ტი დáƒáƒ§áƒ”ნდრწáƒáƒ áƒ›áƒáƒ¢áƒ”ბით!"
#: editor/editor_asset_installer.cpp
@@ -1292,17 +1323,13 @@ msgstr "პáƒáƒ™áƒ”ტი დáƒáƒ§áƒ”ნდრწáƒáƒ áƒ›áƒáƒ¢áƒ”ბით!
msgid "Success!"
msgstr "წáƒáƒ áƒ›áƒáƒ¢áƒ”ბáƒ!"
-#: editor/editor_asset_installer.cpp
-#, fuzzy
-msgid "Package Contents:"
-msgstr "პáƒáƒ™áƒ”ტების დáƒáƒ›áƒ§áƒ”ნებელი"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "დáƒáƒ§áƒ”ნებáƒ"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "პáƒáƒ™áƒ”ტების დáƒáƒ›áƒ§áƒ”ნებელი"
#: editor/editor_audio_buses.cpp
@@ -1367,8 +1394,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1448,7 +1476,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1535,6 +1563,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1550,16 +1586,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1575,7 +1611,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1716,9 +1752,48 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "Erase profile '%s'? (no undo)"
-msgstr "ყველáƒáƒ¡ ჩáƒáƒœáƒáƒªáƒ•ლებáƒ"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1752,15 +1827,15 @@ msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1779,7 +1854,7 @@ msgid "Error saving profile to path: '%s'."
msgstr "ჩáƒáƒ¢áƒ•ირთვის შეცდáƒáƒ›áƒ”ბი!"
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1788,17 +1863,26 @@ msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Make Current"
-msgstr "ფუნქციის შექმნáƒ"
+msgid "Create Profile"
+msgstr "შექმნáƒ"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
+#, fuzzy
+msgid "Remove Profile"
+msgstr "მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Make Current"
+msgstr "ფუნქციის შექმნáƒ"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1807,21 +1891,20 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "Available Profiles:"
-msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
+msgid "Configure Selected Profile:"
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
+msgid "Extra Options:"
msgstr "áƒáƒ¦áƒ¬áƒ”რáƒ:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1845,7 +1928,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1900,9 +1983,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1986,8 +2070,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -2059,7 +2142,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2152,7 +2235,7 @@ msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ მხáƒáƒšáƒáƒ“"
msgid "Signal"
msgstr "სიგნáƒáƒšáƒ”ბი"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "მუდმივი"
@@ -2169,8 +2252,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2187,7 +2271,7 @@ msgid "Copy Selection"
msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2251,7 +2335,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2446,18 +2531,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2629,7 +2718,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2816,6 +2905,10 @@ msgid "Orphan Resource Explorer..."
msgstr "áƒáƒ‘áƒáƒšáƒ˜ რესურსების მáƒáƒ«áƒ˜áƒ”ბელი"
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2949,13 +3042,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2963,6 +3055,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2971,7 +3067,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -3069,6 +3165,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3095,7 +3199,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3136,6 +3240,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "ფუნქციის შექმნáƒ"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3167,6 +3276,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3192,21 +3305,19 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr ""
+#, fuzzy
+msgid "Author"
+msgstr "áƒáƒ•ტáƒáƒ áƒ”ბი"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3214,11 +3325,12 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "დრრ(წáƒáƒ›áƒ˜): "
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3238,6 +3350,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3281,12 +3403,6 @@ msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3304,22 +3420,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3333,37 +3472,21 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "შექმნáƒ"
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3398,7 +3521,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3418,64 +3541,73 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr ""
+#, fuzzy
+msgid "Error requesting URL:"
+msgstr "ჩáƒáƒ¢áƒ•ირთვის შეცდáƒáƒ›áƒ:"
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr ""
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "კვáƒáƒœáƒ«áƒ—áƒáƒœ დáƒáƒ™áƒáƒ•შირებáƒ:"
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+#, fuzzy
+msgid "Cannot remove temporary file:"
+msgstr "ვერ წáƒáƒ•შლით:"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3483,7 +3615,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3493,139 +3629,169 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Cannot remove temporary file:"
-msgstr "ვერ წáƒáƒ•შლით:"
+msgid "Connection Error"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error requesting URL:"
-msgstr "ჩáƒáƒ¢áƒ•ირთვის შეცდáƒáƒ›áƒ:"
+msgid "Can't open the export templates file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
-msgstr ""
+#, fuzzy
+msgid "Uncompressing Android Build Sources"
+msgstr "áƒáƒ¥áƒ¢áƒ˜áƒ•ების áƒáƒ áƒáƒ™áƒáƒ›áƒžáƒ áƒ”სირებáƒ"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Uncompressing Android Build Sources"
-msgstr "áƒáƒ¥áƒ¢áƒ˜áƒ•ების áƒáƒ áƒáƒ™áƒáƒ›áƒžáƒ áƒ”სირებáƒ"
+msgid "Open Folder"
+msgstr "გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜"
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Select Template File"
-msgstr "წáƒáƒ•შáƒáƒšáƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი?"
+msgid "Download and Install"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Other Installed Versions:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Uninstall Template"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#, fuzzy
+msgid "Select Template File"
+msgstr "წáƒáƒ•შáƒáƒšáƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი?"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3757,23 +3923,50 @@ msgstr ""
msgid "New Resource..."
msgstr "რესურსი"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Collapse All"
msgstr "ყველáƒáƒ¡ ჩáƒáƒœáƒáƒªáƒ•ლებáƒ"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+#, fuzzy
+msgid "Sort files"
+msgstr "ძებნáƒ:"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3781,6 +3974,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3862,10 +4059,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -4098,52 +4291,51 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4159,7 +4351,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4167,6 +4363,11 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4194,6 +4395,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4401,7 +4611,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4626,6 +4836,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "გáƒáƒ“áƒáƒ¡áƒ•ლები"
@@ -4972,10 +5187,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4984,15 +5207,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5021,6 +5248,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5124,7 +5355,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5168,6 +5403,10 @@ msgstr "ძებნáƒ:"
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5176,8 +5415,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5420,15 +5659,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5486,6 +5726,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
@@ -5498,19 +5739,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ თრექის წáƒáƒ¨áƒšáƒ."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "წáƒáƒ•შáƒáƒšáƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი?"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ თრექის წáƒáƒ¨áƒšáƒ."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5748,6 +5998,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "სáƒáƒ§áƒ•áƒáƒ áƒšáƒ”ბი:"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "áƒáƒ¥ ჩáƒáƒ¡áƒ•ით გáƒáƒ¡áƒáƒ¦áƒ”ბი"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5760,6 +6020,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "ზუმის დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•ებáƒ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "ზუმის დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•ებáƒ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "ზუმის დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•ებáƒ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "ზუმის დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•ებáƒ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "ზუმის დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•ებáƒ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "ზუმის დáƒáƒžáƒáƒ¢áƒáƒ áƒáƒ•ებáƒ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -6007,6 +6313,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "áƒáƒ®áƒáƒšáƒ˜ %s შექმნáƒ"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "áƒáƒ®áƒáƒšáƒ˜ %s შექმნáƒ"
@@ -6040,7 +6351,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6101,13 +6412,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "შექმნáƒ"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "შექმნáƒ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6161,7 +6485,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6435,7 +6758,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6744,6 +7068,23 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "შექმნáƒ"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6955,7 +7296,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6986,6 +7327,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -7115,8 +7461,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -7149,10 +7495,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7311,6 +7653,26 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "მáƒáƒ¡áƒ¨áƒ¢áƒáƒ‘ის თáƒáƒœáƒáƒ¤áƒáƒ áƒ“áƒáƒ‘áƒ:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7331,39 +7693,45 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "ცვლილებáƒ"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "ცვლილებáƒ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7520,6 +7888,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7535,6 +7907,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "შექმნáƒ"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7548,7 +7925,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7556,18 +7933,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7664,6 +8038,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7966,11 +8344,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7991,170 +8364,561 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "ფუნქციის შექმნáƒ"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "შექმნáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "მუდმივი"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No styleboxes found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "გáƒáƒ›áƒáƒ áƒ—ული"
+msgid "Importing Theme Items"
+msgstr "შეცდáƒáƒ›áƒ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ჩáƒáƒ¢áƒ•ირთვისáƒáƒ¡."
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Updating the editor"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "გáƒáƒ›áƒáƒ áƒ—ული"
+msgid "Filter:"
+msgstr "áƒáƒœáƒ˜áƒ› სიგრძის შეცვლáƒ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "გáƒáƒ›áƒáƒ áƒ—ული"
+msgid "Collapse types."
+msgstr "ყველáƒáƒ¡ ჩáƒáƒœáƒáƒªáƒ•ლებáƒ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Expand types."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "წáƒáƒ•შáƒáƒšáƒáƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+#, fuzzy
+msgid "Deselect All"
+msgstr "კáƒáƒ•შირის გáƒáƒ¬áƒ§áƒ•ეტáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Import Selected"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "სáƒáƒ§áƒ•áƒáƒ áƒšáƒ”ბი:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "áƒáƒ£áƒ“ირგáƒáƒ“áƒáƒ›áƒ¢áƒáƒœáƒ˜áƒ¡ სáƒáƒ®áƒ”ლის ცვლილებáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "სáƒáƒ§áƒ•áƒáƒ áƒšáƒ”ბი:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+#, fuzzy
+msgid "Add Color Item"
+msgstr "სáƒáƒ§áƒ•áƒáƒ áƒšáƒ”ბი:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "მუდმივი"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "სáƒáƒ§áƒ•áƒáƒ áƒšáƒ”ბი:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "სáƒáƒ§áƒ•áƒáƒ áƒšáƒ”ბი:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მრუდის ცვლილებáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Add Type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
+msgid "Remove Items:"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "შექმნáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "%s ტიპის ცვლილებáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მრუდის ცვლილებáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "ჩáƒáƒ›áƒœáƒáƒªáƒ•ლებელი რესურსის ძიებáƒ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "სáƒáƒ¥áƒ›áƒ˜áƒ¡ დáƒáƒ›áƒ—ხვევáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
msgstr "გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის დáƒáƒ›áƒáƒ¢áƒ”ბáƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "გáƒáƒ›áƒáƒ áƒ—ული"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "გáƒáƒ›áƒáƒ áƒ—ული"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "გáƒáƒ›áƒáƒ áƒ—ული"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -8328,6 +9092,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8676,11 +9444,6 @@ msgid "Commit Changes"
msgstr "ცვლილებáƒ"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9522,8 +10285,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ . პáƒáƒ áƒáƒ›áƒ”ტრები."
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9637,7 +10401,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9645,7 +10409,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9653,11 +10417,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9731,8 +10495,9 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
-msgstr ""
+#, fuzzy
+msgid "Invalid project name."
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
#: editor/project_manager.cpp
msgid "Couldn't create folder."
@@ -9765,6 +10530,20 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Error opening package file, not in ZIP format."
+msgstr "შეცდáƒáƒ›áƒ პáƒáƒ™áƒ”ტის გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡áƒáƒ¡, უნდრიყáƒáƒ¡ zip ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Package installed successfully!"
+msgstr "პáƒáƒ™áƒ”ტი დáƒáƒ§áƒ”ნდრწáƒáƒ áƒ›áƒáƒ¢áƒ”ბით!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9909,15 +10688,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9945,7 +10720,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
#: editor/project_manager.cpp
@@ -9958,10 +10733,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9971,11 +10761,25 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "მáƒáƒœáƒ˜áƒ¨áƒ•ნის მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "მáƒáƒ¨áƒáƒ áƒ”ბáƒ"
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9983,6 +10787,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9993,8 +10805,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "პრáƒáƒ”ქტის დáƒáƒ›áƒ¤áƒ£áƒ«áƒœáƒ”ბლები"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10004,6 +10821,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10046,6 +10867,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10185,19 +11010,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "გáƒáƒ áƒ“áƒáƒ¡áƒ•ლáƒ"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10470,6 +11296,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10638,11 +11468,29 @@ msgid "Delete node \"%s\"?"
msgstr "წáƒáƒ¨áƒšáƒ"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10700,6 +11548,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10747,10 +11599,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11033,6 +11881,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -11107,6 +11961,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11391,6 +12249,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11434,6 +12300,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "ყველრმáƒáƒœáƒ˜áƒ¨áƒœáƒ•áƒ"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11680,6 +12551,16 @@ msgid "Add Output Port"
msgstr "სáƒáƒ§áƒ•áƒáƒ áƒšáƒ”ბი:"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "%s ტიპის ცვლილებáƒ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "ლექსიკáƒáƒœáƒ˜áƒ¡ მნიშვნელáƒáƒ‘ის შეცვლáƒ"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11794,6 +12675,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "სáƒáƒ§áƒ•áƒáƒ áƒšáƒ”ბი:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -12026,10 +12912,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12059,6 +12941,36 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "დáƒáƒ§áƒ”ნებáƒ"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "ძებნáƒ:"
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12156,6 +13068,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12168,6 +13116,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12182,6 +13134,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12201,11 +13166,51 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ხáƒáƒœáƒ’რძლივáƒáƒ‘რ(წáƒáƒ›áƒ”ბში)."
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "სáƒáƒ§áƒ•áƒáƒ áƒšáƒ”ბი:"
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12235,27 +13240,52 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Could not create HTTP server directory:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12608,6 +13638,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12677,12 +13714,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12732,6 +13821,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ხáƒáƒœáƒ’რძლივáƒáƒ‘რ(წáƒáƒ›áƒ”ბში)."
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12885,15 +13978,31 @@ msgid "Invalid comparison function for that type."
msgstr "áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ფáƒáƒœáƒ¢áƒ˜áƒ¡ ზáƒáƒ›áƒ."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
@@ -12901,6 +14010,14 @@ msgid "Constants cannot be modified."
msgstr ""
#, fuzzy
+#~ msgid "Package Contents:"
+#~ msgstr "პáƒáƒ™áƒ”ტების დáƒáƒ›áƒ§áƒ”ნებელი"
+
+#, fuzzy
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "ყველáƒáƒ¡ ჩáƒáƒœáƒáƒªáƒ•ლებáƒ"
+
+#, fuzzy
#~ msgid "Clipboard is empty"
#~ msgstr "ბუფერი ცáƒáƒ áƒ˜áƒ”ლიáƒ"
@@ -12972,9 +14089,6 @@ msgstr ""
#~ msgid "Move Anim Track Down"
#~ msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის ქვემáƒáƒ— გáƒáƒ“áƒáƒáƒ“გილებáƒ"
-#~ msgid "Anim Track Rename"
-#~ msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒ"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "áƒáƒœáƒ˜áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ თრექის ინტერპáƒáƒšáƒáƒªáƒ˜áƒ˜áƒ¡ ცვლილებáƒ"
diff --git a/editor/translations/km.po b/editor/translations/km.po
index fe396cf590..e18a778132 100644
--- a/editor/translations/km.po
+++ b/editor/translations/km.po
@@ -509,7 +509,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -535,7 +536,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -556,6 +558,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -572,6 +578,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -620,7 +630,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -706,12 +716,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -766,11 +778,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -820,6 +830,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -889,7 +900,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -904,6 +915,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -925,8 +944,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -999,16 +1018,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1053,7 +1074,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1174,37 +1195,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1212,7 +1237,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1276,7 +1301,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1356,7 +1381,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1443,6 +1468,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1458,16 +1491,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1483,7 +1516,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1622,7 +1655,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1654,15 +1727,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1680,7 +1753,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1688,17 +1761,23 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+msgid "Create Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Remove Profile"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1707,19 +1786,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1743,7 +1822,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1797,9 +1876,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1880,8 +1960,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1952,7 +2031,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2037,7 +2116,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2053,8 +2132,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2070,7 +2150,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2134,7 +2214,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2328,18 +2409,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2509,7 +2594,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2690,6 +2775,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2822,13 +2911,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2836,6 +2924,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2844,7 +2936,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2941,6 +3033,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2967,7 +3067,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3008,6 +3108,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3039,6 +3143,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3063,21 +3171,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3085,11 +3190,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3109,6 +3214,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3150,12 +3265,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3173,22 +3282,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3202,37 +3334,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3267,7 +3382,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3287,64 +3402,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3352,7 +3473,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3362,135 +3487,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3616,22 +3772,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3639,6 +3821,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3718,10 +3904,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3942,52 +4124,49 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
+msgid "Paste Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4003,7 +4182,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4011,6 +4194,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4038,6 +4225,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4237,7 +4433,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4451,6 +4647,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4787,10 +4988,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4799,15 +5008,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4835,6 +5048,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4935,7 +5152,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4978,6 +5199,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4986,8 +5211,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5221,15 +5446,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5283,6 +5509,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5294,19 +5521,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5538,6 +5771,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "បញ្ចូល Key នៅទីនáŸáŸ‡"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5550,6 +5792,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5790,6 +6072,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5822,7 +6108,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5881,13 +6167,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5941,7 +6239,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6213,7 +6510,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6517,6 +6815,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "ផ្លាស់ទី Bezier Points"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "ផ្លាស់ទី Bezier Points"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6720,7 +7036,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6751,6 +7067,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6873,8 +7194,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6907,10 +7228,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7062,6 +7379,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7082,39 +7418,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7270,6 +7610,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7285,6 +7629,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7298,7 +7646,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7306,18 +7654,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7414,6 +7759,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7703,11 +8052,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7728,7 +8072,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7736,156 +8080,520 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Confirm Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8054,6 +8762,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8370,11 +9082,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9194,7 +9901,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9309,7 +10016,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9317,7 +10024,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9325,11 +10032,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9402,7 +10109,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9436,6 +10143,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9580,15 +10299,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9615,7 +10330,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9627,10 +10342,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9639,11 +10366,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9651,6 +10390,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9661,8 +10408,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9672,6 +10423,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9713,6 +10468,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9852,7 +10611,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9860,11 +10619,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10132,6 +10891,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10294,11 +11057,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10354,6 +11135,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10400,10 +11185,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10674,6 +11455,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10742,6 +11529,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11025,6 +11816,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11066,6 +11865,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11308,6 +12111,14 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11416,6 +12227,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11639,10 +12454,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11672,6 +12483,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11768,6 +12607,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11780,6 +12655,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11794,6 +12673,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11813,11 +12705,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11846,27 +12776,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12214,6 +13168,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12283,12 +13244,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12337,6 +13350,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12484,15 +13501,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index ec9fed24ca..eda096e4ce 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -27,7 +27,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-06-20 13:35+0000\n"
+"PO-Revision-Date: 2021-07-16 05:47+0000\n"
"Last-Translator: Myeongjin Lee <aranet100@gmail.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/"
"godot/ko/>\n"
@@ -36,7 +36,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.7\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -544,7 +544,8 @@ msgstr "ì´ˆ"
msgid "FPS"
msgstr "초당 프레임"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -570,7 +571,8 @@ msgstr "ì„ íƒ í•­ëª© 배율 ì¡°ì ˆ"
msgid "Scale From Cursor"
msgstr "커서 위치ì—서 배율 ì¡°ì ˆ"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "ì„ íƒ í•­ëª© 복제"
@@ -591,6 +593,11 @@ msgid "Go to Previous Step"
msgstr "ì´ì „ 단계로 ì´ë™"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "ë˜ëŒë¦¬ê¸°"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "애니메ì´ì…˜ 최ì í™”"
@@ -607,6 +614,11 @@ msgid "Use Bezier Curves"
msgstr "베지어 곡선 사용"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "트랙 붙여 넣기"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "애니메ì´ì…˜ 최ì í™”"
@@ -655,7 +667,7 @@ msgid "Select Tracks to Copy"
msgstr "복사할 트랙 ì„ íƒ"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -741,12 +753,14 @@ msgid "Toggle Scripts Panel"
msgstr "스í¬ë¦½íЏ íŒ¨ë„ í† ê¸€"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "줌 ì¸"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -803,11 +817,9 @@ msgid "Add"
msgstr "추가"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -859,6 +871,7 @@ msgstr "시그ë„ì„ ì—°ê²°í•  수 ì—†ìŒ"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -928,7 +941,8 @@ msgid "Edit..."
msgstr "편집..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "메서드로 ì´ë™"
#: editor/create_dialog.cpp
@@ -943,6 +957,14 @@ msgstr "바꾸기"
msgid "Create New %s"
msgstr "새 %s 만들기"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "\"%s\"ì— ëŒ€í•œ 결과가 없습니다."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -964,8 +986,8 @@ msgstr "검색:"
msgid "Matches:"
msgstr "ì¼ì¹˜í•¨:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1041,19 +1063,23 @@ msgid "Owners Of:"
msgstr "소유ìž:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"프로ì íЏì—서 ì„ íƒëœ 파ì¼ì„ 제거하시겠습니다? (ë˜ëŒë¦´ 수 ì—†ìŒ)\n"
"시스템 휴지통ì—서 ì œê±°ëœ íŒŒì¼ì„ 찾고 ë³µì›í•  수 있습니다."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"제거하려는 파ì¼ì€ 다른 리소스가 ë™ìž‘하기 위해 필요합니다.\n"
"무시하고 제거하시겠습니까? (ë˜ëŒë¦´ 수 ì—†ìŒ)\n"
@@ -1101,7 +1127,7 @@ msgstr "미사용 리소스 íƒìƒ‰ê¸°"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1225,28 +1251,41 @@ msgstr "구성 요소"
msgid "Licenses"
msgstr "ë¼ì´ì„ ìФ"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "패키지 파ì¼ì„ 여는 중 오류. ZIP 형ì‹ì´ 아닙니다."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "패키지 파ì¼ì„ 여는 중 오류 (ZIP 형ì‹ì´ 아닙니다)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (ì´ë¯¸ 존재함)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "애셋 압축 풀기"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "ë‹¤ìŒ íŒŒì¼ì„ 패키지ì—서 ì¶”ì¶œí•˜ëŠ”ë° ì‹¤íŒ¨í•¨:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "외 %d ê°œì˜ íŒŒì¼."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "패키지를 성공ì ìœ¼ë¡œ 설치했습니다!"
#: editor/editor_asset_installer.cpp
@@ -1254,16 +1293,13 @@ msgstr "패키지를 성공ì ìœ¼ë¡œ 설치했습니다!"
msgid "Success!"
msgstr "성공!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "패키지 내용:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "설치"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "패키지 설치 마법사"
#: editor/editor_audio_buses.cpp
@@ -1327,7 +1363,8 @@ msgid "Bypass"
msgstr "ë°”ì´íŒ¨ìФ"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "버스 설정"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1407,7 +1444,7 @@ msgstr "버스 추가"
msgid "Add a new Audio Bus to this layout."
msgstr "ì´ ë ˆì´ì•„ì›ƒì— ìƒˆ 오디오 버스를 추가합니다."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1494,6 +1531,15 @@ msgid "Can't add autoload:"
msgstr "오토로드를 추가할 수 ì—†ìŒ:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "파ì¼ì´ 존재하지 않습니다."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "오토로드 추가"
@@ -1509,16 +1555,17 @@ msgid "Node Name:"
msgstr "노드 ì´ë¦„:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "ì´ë¦„"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "싱글톤"
+#, fuzzy
+msgid "Global Variable"
+msgstr "변수"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "매개변수 붙여넣기"
@@ -1534,7 +1581,7 @@ msgstr "지역 변경 ì‚¬í•­ì„ ì €ìž¥ 중..."
msgid "Updating scene..."
msgstr "씬 ì—…ë°ì´íЏ 중..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[비었ìŒ]"
@@ -1689,8 +1736,49 @@ msgid "Import Dock"
msgstr "ë… ê°€ì ¸ì˜¤ê¸°"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "프로필 '%s'ì„(를) 지울까요? (ë˜ëŒë¦´ 수 없습니다)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(현재)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1721,15 +1809,18 @@ msgid "Enable Contextual Editor"
msgstr "ìƒí™©ë³„ 편집기 켜기"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "켜진 ì†ì„±:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "ì†ì„±:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "켜진 기능:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "기능"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "켜진 í´ëž˜ìФ:"
#: editor/editor_feature_profile.cpp
@@ -1749,25 +1840,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "í”„ë¡œí•„ì„ ê²½ë¡œì— ì €ìž¥í•˜ëŠ” 중 오류: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "설정하지 않기"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "기본값으로 재설정"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "현재 프로필:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "현재 프로필로 설정"
+#, fuzzy
+msgid "Create Profile"
+msgstr "프로필 지우기"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "새로 만들기"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "íƒ€ì¼ ì‚­ì œ"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "사용 가능한 프로필:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "현재 프로필로 설정"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "가져오기"
@@ -1776,20 +1876,22 @@ msgid "Export"
msgstr "내보내기"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "사용 가능한 프로필:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "현재 프로필:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "í´ëž˜ìФ 옵션"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "í…ìŠ¤ì³ ì˜µì…˜"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "새 프로필 ì´ë¦„:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "프로필 지우기"
+msgid "New profile name:"
+msgstr "새 프로필 ì´ë¦„:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1812,7 +1914,8 @@ msgid "Select Current Folder"
msgstr "현재 í´ë” ì„ íƒ"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "파ì¼ì´ ì´ë¯¸ 있습니다. ë®ì–´ì“¸ê¹Œìš”?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1866,9 +1969,10 @@ msgid "Open a File or Directory"
msgstr "디렉토리 ë˜ëŠ” íŒŒì¼ ì—´ê¸°"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "저장"
@@ -1949,8 +2053,7 @@ msgid "Directories & Files:"
msgstr "디렉토리 & 파ì¼:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "미리 보기:"
@@ -2021,7 +2124,7 @@ msgstr "테마 ì†ì„±ë“¤"
msgid "Enumerations"
msgstr "열거형"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "ìƒìˆ˜"
@@ -2110,7 +2213,7 @@ msgstr "메서드"
msgid "Signal"
msgstr "시그ë„"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "ìƒìˆ˜"
@@ -2126,9 +2229,10 @@ msgstr "테마 ì†ì„±"
msgid "Property:"
msgstr "ì†ì„±:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "설정"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Set %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2143,7 +2247,7 @@ msgid "Copy Selection"
msgstr "ì„ íƒ í•­ëª© 복사"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2207,7 +2311,8 @@ msgid "Imported resources can't be saved."
msgstr "가져온 리소스를 저장할 수 없습니다."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "확ì¸"
@@ -2425,18 +2530,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "닫기 ì „ì— '%s'ì— ë³€ê²½ ì‚¬í•­ì„ ì €ìž¥í• ê¹Œìš”?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "ìˆ˜ì •ëœ ë¦¬ì†ŒìŠ¤ %sì„(를) 저장하였습니다."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "ì”¬ì„ ì €ìž¥í•˜ë ¤ë©´ 루트 노드가 필요합니다."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "ì”¬ì„ ë‹¤ë¥¸ ì´ë¦„으로 저장..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "ì´ ìž‘ì—…ì—는 ì”¬ì´ í•„ìš”í•©ë‹ˆë‹¤."
@@ -2630,7 +2740,7 @@ msgstr "ë ˆì´ì•„웃 ì‚­ì œ"
msgid "Default"
msgstr "기본"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "íŒŒì¼ ì‹œìŠ¤í…œì—서 보기"
@@ -2811,6 +2921,11 @@ msgid "Orphan Resource Explorer..."
msgstr "미사용 리소스 íƒìƒ‰ê¸°..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "프로ì íЏ ì´ë¦„ 바꾸기"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "종료 후 프로ì íЏ ëª©ë¡ ì—´ê¸°"
@@ -2965,20 +3080,25 @@ msgstr "내보내기 템플릿 관리..."
msgid "Help"
msgstr "ë„움ë§"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "온ë¼ì¸ 문서"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "문서 열기"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Q&A"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "버그 보고"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "값 설정"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "문서 피드백 보내기"
@@ -2987,7 +3107,8 @@ msgid "Community"
msgstr "커뮤니티"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "ì •ë³´"
#: editor/editor_node.cpp
@@ -3084,6 +3205,16 @@ msgid "Manage Templates"
msgstr "템플릿 관리"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "파ì¼ì—서 설치"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "소스 메시를 ì„ íƒí•˜ì„¸ìš”:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3118,7 +3249,7 @@ msgstr "ZIP 파ì¼ì—서 템플릿 가져오기"
msgid "Template Package"
msgstr "템플릿 패키지"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬ 내보내기"
@@ -3161,6 +3292,11 @@ msgid "Select"
msgstr "ì„ íƒ"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "현재 í´ë” ì„ íƒ"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "2D 편집기 열기"
@@ -3192,6 +3328,11 @@ msgstr "경고!"
msgid "No sub-resources found."
msgstr "하위 리소스를 ì°¾ì„ ìˆ˜ 없습니다."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "하위 리소스를 ì°¾ì„ ìˆ˜ 없습니다."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "메시 미리 보기 만드는 중"
@@ -3216,33 +3357,34 @@ msgstr "ì„¤ì¹˜ëœ í”ŒëŸ¬ê·¸ì¸:"
msgid "Update"
msgstr "ì—…ë°ì´íЏ"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "버전:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "ì €ìž:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "ìƒíƒœ:"
+#, fuzzy
+msgid "Author"
+msgstr "ì €ìž"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "편집:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "ìƒíƒœ"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "측정:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "프레임 시간 (초)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "í‰ê·  시간 (ì´ˆ)"
#: editor/editor_profiler.cpp
@@ -3262,6 +3404,16 @@ msgid "Self"
msgstr "셀프"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "프레임 #:"
@@ -3303,12 +3455,6 @@ msgstr "ìž˜ëª»ëœ RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr "ì„ íƒí•œ 리소스 (%s)ê°€ ì´ ì†ì„± (%s)ì— ì í•©í•œ 모든 ìœ í˜•ì— ë§žì§€ 않습니다."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3332,40 +3478,6 @@ msgid "Pick a Viewport"
msgstr "ë·°í¬íŠ¸ë¥¼ ì„ íƒí•˜ì„¸ìš”"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "새 스í¬ë¦½íЏ"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "스í¬ë¦½íЏ ìƒì†"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "새 %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "유ì¼í•˜ê²Œ 만들기"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "붙여넣기"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "%s(으)로 변환"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "ì„ íƒëœ 노드는 ë·°í¬íŠ¸ê°€ 아닙니다!"
@@ -3394,6 +3506,47 @@ msgstr "새 값:"
msgid "Add Key/Value Pair"
msgstr "키/ê°’ ìŒ ì¶”ê°€"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr "ì„ íƒí•œ 리소스 (%s)ê°€ ì´ ì†ì„± (%s)ì— ì í•©í•œ 모든 ìœ í˜•ì— ë§žì§€ 않습니다."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "유ì¼í•˜ê²Œ 만들기"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "붙여넣기"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "%s(으)로 변환"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "새 %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "새 스í¬ë¦½íЏ"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "스í¬ë¦½íЏ ìƒì†"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3429,7 +3582,8 @@ msgid "Did you forget the '_run' method?"
msgstr "'_run' 메서드를 잊었나요?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Ctrlì„ ëˆŒëŸ¬ 정수로 반올림합니다. Shift를 눌러 좀 ë” ì •ë°€í•˜ê²Œ 조작합니다."
@@ -3450,113 +3604,69 @@ msgid "Import From Node:"
msgstr "노드ì—서 가져오기:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "다시 다운로드"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "삭제"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(설치ë¨)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "다운로드"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "ê³µì‹ ë‚´ë³´ë‚´ê¸° í…œí”Œë¦¿ì€ ê°œë°œ 빌드ì—서는 ì´ìš©í•  수 없습니다."
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(누ë½)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(현재)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "'%s' 파ì¼ì´ 없습니다."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "미러를 검색 중입니다. 기다려주세요..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "템플릿 버전 '%s'ì„(를) 삭제할까요?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "내보내기 템플릿 zip 파ì¼ì„ ì—´ 수 없습니다."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "템플릿 ì†ì˜ version.txtê°€ ìž˜ëª»ëœ í˜•ì‹ìž„: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "í…œí”Œë¦¿ì— version.txt를 ì°¾ì„ ìˆ˜ 없습니다."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "í…œí”Œë¦¿ì˜ ê²½ë¡œë¥¼ 만드는 중 오류:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "내보내기 템플릿 압축 푸는 중"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "가져오는 중:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "미러 목ë¡ì„ 가져오는 중 오류."
+msgid "Error requesting URL:"
+msgstr "URL 요청 중 오류:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "미러 목ë¡ì˜ JSON 구문 ë¶„ì„ ì¤‘ 오류. ì´ ë¬¸ì œë¥¼ 신고해주세요!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "ë¯¸ëŸ¬ì— ì—°ê²° 중..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"ì´ ë²„ì „ì˜ ë‹¤ìš´ë¡œë“œ ë§í¬ë¥¼ ì°¾ì„ ìˆ˜ 없습니다. ê³µì‹ ì¶œì‹œ 버전만 바로 다운로드할 "
-"수 있습니다."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "호스트 ì´ë¦„ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "해결할 수 없습니다."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "í˜¸ìŠ¤íŠ¸ì— ì—°ê²°í•  수 ì—†ìŒ:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "연결할 수 없습니다."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "í˜¸ìŠ¤íŠ¸ì˜ ì‘답 ì—†ìŒ:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "ì‘답 ì—†ìŒ."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "요청 실패."
+msgid "Request failed."
+msgstr "요청 실패함."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "리다ì´ë ‰íЏ 루프."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "요청 실패. 너무 ë§Žì€ ë¦¬ë‹¤ì´ë ‰íЏ"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "실패함:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "요청 실패함."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "다운로드 완료."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3571,12 +3681,25 @@ msgstr ""
"문제가 있는 템플릿 기ë¡ì€ '%s'ì—서 찾아 ë³¼ 수 있습니다."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "URL 요청 중 오류:"
+msgid "Error getting the list of mirrors."
+msgstr "미러 목ë¡ì„ 가져오는 중 오류."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "ë¯¸ëŸ¬ì— ì—°ê²° 중..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "미러 목ë¡ì˜ JSON 구문 ë¶„ì„ ì¤‘ 오류. ì´ ë¬¸ì œë¥¼ 신고해주세요!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"ì´ ë²„ì „ì˜ ë‹¤ìš´ë¡œë“œ ë§í¬ë¥¼ ì°¾ì„ ìˆ˜ 없습니다. ê³µì‹ ì¶œì‹œ 버전만 바로 다운로드할 "
+"수 있습니다."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3621,44 +3744,138 @@ msgid "SSL Handshake Error"
msgstr "SSL 핸드셰ì´í¬ 오류"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "내보내기 템플릿 zip 파ì¼ì„ ì—´ 수 없습니다."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "템플릿 ì†ì˜ version.txtê°€ ìž˜ëª»ëœ í˜•ì‹ìž„: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "í…œí”Œë¦¿ì— version.txt를 ì°¾ì„ ìˆ˜ 없습니다."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "í…œí”Œë¦¿ì˜ ê²½ë¡œë¥¼ 만드는 중 오류:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "내보내기 템플릿 압축 푸는 중"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "가져오는 중:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "템플릿 버전 '%s'ì„(를) 삭제할까요?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Android 빌드 소스 압축 푸는 중"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "내보내기 템플릿 매니저"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "현재 버전:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "ì„¤ì¹˜ëœ ë²„ì „:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "íŒŒì¼ ì—´ê¸°"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "삭제"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "ì¹´ìš´í„°ì˜ ì´ˆê¸° ê°’"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "다운로드 오류"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "ê³µì‹ ë‚´ë³´ë‚´ê¸° í…œí”Œë¦¿ì€ ê°œë°œ 빌드ì—서는 ì´ìš©í•  수 없습니다."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "파ì¼ì—서 설치"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "템플릿 삭제"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "ZIP 파ì¼ì—서 템플릿 가져오기"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "취소"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "템플릿 íŒŒì¼ ì„ íƒ"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "내보내기 템플릿 zip 파ì¼ì„ ì—´ 수 없습니다."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Godot 내보내기 템플릿"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "ì„¤ì¹˜ëœ ë²„ì „:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "내보내기 템플릿 매니저"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "삭제"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "템플릿 íŒŒì¼ ì„ íƒ"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "템플릿 다운로드"
+msgid "Godot Export Templates"
+msgstr "Godot 내보내기 템플릿"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "목ë¡ì—서 미러를 ì„ íƒí•˜ì„¸ìš”: (Shift+í´ë¦­: 브ë¼ìš°ì €ì—서 열기)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3791,29 +4008,62 @@ msgstr "새 스í¬ë¦½íЏ..."
msgid "New Resource..."
msgstr "새 리소스..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "ëª¨ë‘ íŽ¼ì¹˜ê¸°"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "ëª¨ë‘ ì ‘ê¸°"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "복제..."
+#, fuzzy
+msgid "Sort files"
+msgstr "íŒŒì¼ ê²€ìƒ‰"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "마지막으로 수정ë¨"
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "휴지통으로 ì´ë™"
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "마지막으로 수정ë¨"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "복제..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "ì´ë¦„ 바꾸기..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "ì´ì „ í´ë”/파ì¼"
@@ -3897,10 +4147,6 @@ msgstr "찾기..."
msgid "Replace..."
msgstr "바꾸기..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "취소"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "찾기: "
@@ -4123,53 +4369,55 @@ msgid "Failed to load resource."
msgstr "리소스 ë¶ˆëŸ¬ì˜¤ê¸°ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "모든 ì†ì„± 펼치기"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "ì†ì„±"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "모든 ì†ì„± 접기"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "다른 ì´ë¦„으로 저장..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "ì†ì„±"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "매개변수 복사"
+msgid "Make Sub-Resources Unique"
+msgstr "하위 리소스를 유ì¼í•˜ê²Œ 만들기"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "리소스 í´ë¦½ë³´ë“œ 편집"
+msgid "Create a new resource in memory and edit it."
+msgstr "새 리소스를 메모리ì—서 만들고 편집합니다."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "리소스 복사"
+msgid "Load an existing resource from disk and edit it."
+msgstr "디스í¬ì—서 기존 리소스를 불러오고 편집합니다."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "내장으로 만들기"
+msgid "Save the currently edited resource."
+msgstr "현재 편집하는 리소스를 저장합니다."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "하위 리소스를 유ì¼í•˜ê²Œ 만들기"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "다른 ì´ë¦„으로 저장..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "ë„움ë§ì—서 열기"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "리소스 ê²½ë¡œì— ì—†ìŠµë‹ˆë‹¤."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "새 리소스를 메모리ì—서 만들고 편집합니다."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "리소스 í´ë¦½ë³´ë“œ 편집"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "디스í¬ì—서 기존 리소스를 불러오고 편집합니다."
+msgid "Copy Resource"
+msgstr "리소스 복사"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "현재 편집하는 리소스를 저장합니다."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "내장으로 만들기"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4184,14 +4432,24 @@ msgid "History of recently edited objects."
msgstr "ìµœê·¼ì— íŽ¸ì§‘í•œ ê°ì²´ 기ë¡ìž…니다."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "ê°ì²´ ì†ì„±."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "문서 열기"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "문서 열기"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "í•„í„° ì†ì„±"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "ê°ì²´ ì†ì„±."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "변경 ì‚¬í•­ì„ ìžƒì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤!"
@@ -4219,6 +4477,15 @@ msgstr "í”ŒëŸ¬ê·¸ì¸ ì´ë¦„:"
msgid "Subfolder:"
msgstr "하위 í´ë”:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "ì €ìž:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "버전:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "언어:"
@@ -4423,7 +4690,8 @@ msgid "Blend:"
msgstr "혼합:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "매개변수 변경ë¨"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4642,6 +4910,11 @@ msgid "Animation"
msgstr "애니메ì´ì…˜"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "새로 만들기"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "전환 편집..."
@@ -4982,10 +5255,18 @@ msgid "View Files"
msgstr "íŒŒì¼ ë³´ê¸°"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "다운로드"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "ì—°ê²° 오류. 다시 시ë„해주세요."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "연결할 수 없습니다."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "í˜¸ìŠ¤íŠ¸ì— ì—°ê²°í•  수 ì—†ìŒ:"
@@ -4994,16 +5275,20 @@ msgid "No response from host:"
msgstr "í˜¸ìŠ¤íŠ¸ì˜ ì‘답 ì—†ìŒ:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "ì‘답 ì—†ìŒ."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "호스트 ì´ë¦„ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "요청 실패. 반환 코드:"
+msgid "Can't resolve."
+msgstr "해결할 수 없습니다."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "요청 실패함."
+msgid "Request failed, return code:"
+msgstr "요청 실패. 반환 코드:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5030,6 +5315,10 @@ msgid "Timeout."
msgstr "시간 초과."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "실패함:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "ìž˜ëª»ëœ ë‹¤ìš´ë¡œë“œ 해시. 파ì¼ì´ ë³€ì¡°ëœ ê²ƒ 같아요."
@@ -5130,8 +5419,12 @@ msgid "All"
msgstr "모ë‘"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "\"%s\"ì— ëŒ€í•œ 결과가 없습니다."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5173,6 +5466,10 @@ msgstr "불러오는 중..."
msgid "Assets ZIP File"
msgstr "ì• ì…‹ ZIP 파ì¼"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5182,9 +5479,10 @@ msgstr ""
"ë‹¹ì‹ ì˜ ì”¬ì„ ì €ìž¥í•˜ê³  다시 시ë„하세요."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"ë¼ì´íŠ¸ë§µì„ êµ¬ìš¸ 메시가 없습니다. 메시가 UV2 채ë„ì„ ê°–ê³  있고 'Bake Light' 플"
"래그가 켜져 있는지 확ì¸í•´ì£¼ì„¸ìš”."
@@ -5424,9 +5722,10 @@ msgstr "앵커 바꾸기"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"게임 ì¹´ë©”ë¼ ë‹¤ì‹œ ì •ì˜\n"
"편집기 ë·°í¬íЏ ì¹´ë©”ë¼ë¡œ 게임 ì¹´ë©”ë¼ë¥¼ 다시 ì •ì˜í•©ë‹ˆë‹¤."
@@ -5434,11 +5733,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"게임 ì¹´ë©”ë¼ ë‹¤ì‹œ ì •ì˜\n"
-"실행하고 있는 게임 ì¸ìŠ¤í„´ìŠ¤ê°€ 없습니다."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5491,6 +5789,7 @@ msgid ""
msgstr "경고: 컨테ì´ë„ˆì˜ ìžì‹ 규모와 위치는 ë¶€ëª¨ì— ì˜í•´ ê²°ì •ë©ë‹ˆë‹¤."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5502,20 +5801,32 @@ msgid "Select Mode"
msgstr "모드 ì„ íƒ"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "드래그: 회전"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "ì„ íƒí•œ 노드나 ì „í™˜ì„ ì‚­ì œí•©ë‹ˆë‹¤."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+드래그: ì´ë™"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
-msgstr "'v'키로 피벗 바꾸기. 'Shift+v'키로 피벗 드래그 (ì´ë™í•˜ëŠ” ë™ì•ˆ)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "ì„ íƒí•œ 노드나 ì „í™˜ì„ ì‚­ì œí•©ë‹ˆë‹¤."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+"í´ë¦­í•œ ìœ„ì¹˜ì— ìžˆëŠ” 모든 ê°ì²´ 목ë¡ì„ 보여줘요\n"
+"(ì„ íƒ ëª¨ë“œì—서 Alt+ìš°í´ë¦­ê³¼ ê°™ìŒ)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+ìš°í´ë¦­: 겹친 ëª©ë¡ ì„ íƒ"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5752,6 +6063,16 @@ msgid "Clear Pose"
msgstr "í¬ì¦ˆ 지우기"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "노드 추가"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "씬 ì¸ìŠ¤í„´ìŠ¤í™”"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "ê²©ìž ë‹¨ê³„ë¥¼ 2ë°° ì¦ê°€"
@@ -5764,6 +6085,52 @@ msgid "Pan View"
msgstr "팬 보기"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "줌 아웃"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "줌 아웃"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "줌 아웃"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "줌 아웃"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "줌 아웃"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "줌 아웃"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "%s 추가"
@@ -6006,6 +6373,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "ë‹¨ì¼ convex ì¶©ëŒ ëª¨ì–‘ì„ ë§Œë“¤ 수 없습니다."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "개별 Convex 모양 만들기"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "개별 Convex 모양 만들기"
@@ -6038,7 +6410,8 @@ msgid "No mesh to debug."
msgstr "디버그할 메시가 없습니다."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "ì´ ë ˆì´ì–´ì—서 모ë¸ì€ UVê°€ 없습니다"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6104,13 +6477,27 @@ msgstr ""
"ì´ ë°©ë²•ì€ ê°€ìž¥ 빠른 (하지만 ëœ ì •í™•í•œ) ì¶©ëŒ íƒì§€ 방법입니다."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "ë‹¨ì¼ Convex ì¶©ëŒ í˜•ì œ 만들기"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "다중 Convex ì¶©ëŒ í˜•ì œ 만들기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"í´ë¦¬ê³¤ 기반 ì¶©ëŒ ëª¨ì–‘ì„ í•˜ë‚˜ 만듭니다.\n"
"ì´ ë°©ë²•ì€ ìœ„ ë‘ ê°€ì§€ ì˜µì…˜ì˜ ì¤‘ê°„ ì •ë„ ì„±ëŠ¥ìž…ë‹ˆë‹¤."
@@ -6170,7 +6557,6 @@ msgid "Mesh Library"
msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "항목 추가"
@@ -6444,7 +6830,8 @@ msgid "Close Curve"
msgstr "곡선 닫기"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "설정"
@@ -6753,6 +7140,26 @@ msgstr "리소스 불러오기"
msgid "ResourcePreloader"
msgstr "리소스 프리로ë”"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "수í‰ìœ¼ë¡œ 뒤집기"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "ìƒì„±í•œ ì  ê°œìˆ˜:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "ìƒì„±í•œ ì  ê°œìˆ˜:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "수í‰ìœ¼ë¡œ 뒤집기"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTreeì— AnimationPlayer를 향하는 경로가 없습니다"
@@ -6958,7 +7365,7 @@ msgstr "실행"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "검색"
@@ -6989,6 +7396,11 @@ msgid "Debug with External Editor"
msgstr "외부 편집기로 디버깅"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "온ë¼ì¸ 문서"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Godot 온ë¼ì¸ 문서를 엽니다."
@@ -7116,8 +7528,8 @@ msgstr "ì´ë™"
msgid "Cut"
msgstr "잘ë¼ë‚´ê¸°"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "ëª¨ë‘ ì„ íƒ"
@@ -7150,10 +7562,6 @@ msgid "Unfold All Lines"
msgstr "모든 행 펼치기"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "아래로 복제"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "ìƒì§• ìžë™ 완성"
@@ -7307,6 +7715,28 @@ msgid "View Plane Transform."
msgstr "ë·° í‰ë©´ 변형."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "ì—†ìŒ"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "주(State)"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "ì´ë™:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "í¬ê¸°:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "í¬ê¸° ì¡°ì ˆ 중: "
@@ -7327,42 +7757,54 @@ msgid "Animation Key Inserted."
msgstr "애니메ì´ì…˜ 키를 삽입했습니다."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "피치"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "ìš”"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "í¬ê¸°"
+#, fuzzy
+msgid "Size:"
+msgstr "í¬ê¸°: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "그려진 ê°ì²´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "머티리얼 바꾸기"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "ì…°ì´ë” 바꾸기"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "표면 바꾸기"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "드로우 콜"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "ì "
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "윗면 보기."
@@ -7515,6 +7957,11 @@ msgid "Freelook Slow Modifier"
msgstr "ìžìœ  ì‹œì  ëŠë¦° 수정ìž"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "ì¹´ë©”ë¼ í¬ê¸° 바꾸기"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "뷰 회전 잠김"
@@ -7532,6 +7979,11 @@ msgstr ""
"ì´ê²ƒì´ 게임 ë‚´ ì„±ëŠ¥ì„ ë³´ìž¥í•  수 없습니다."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "%s(으)로 변환"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm 대화 ìƒìž"
@@ -7550,7 +8002,8 @@ msgstr ""
"ë°˜ 열린 눈: 불투명한 표면ì—ë„ ê¸°ì¦ˆëª¨ê°€ 보입니다 (\"엑스레ì´\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "노드를 ë°”ë‹¥ì— ìŠ¤ëƒ…"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7558,16 +8011,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "ì„ íƒ í•­ëª©ì„ ìŠ¤ëƒ…í•  ë°”ë‹¥ì„ ì°¾ì„ ìˆ˜ 없습니다."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"드래그: 회전\n"
-"Alt+드래그: ì´ë™\n"
-"Alt+ìš°í´ë¦­: 겹친 ëª©ë¡ ì„ íƒ"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "로컬 공간 사용"
@@ -7576,6 +8019,10 @@ msgid "Use Snap"
msgstr "스냅 사용"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "하단 뷰"
@@ -7669,6 +8116,11 @@ msgid "View Grid"
msgstr "ê²©ìž ë³´ê¸°"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "ë·°í¬íЏ 설정"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "설정..."
@@ -7958,11 +8410,6 @@ msgid "Snap Mode:"
msgstr "스냅 모드:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "ì—†ìŒ"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "픽셀 스냅"
@@ -7983,165 +8430,603 @@ msgid "Step:"
msgstr "단계:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "분리.:"
+msgid "Separation:"
+msgstr "간격:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "í…스처 ì˜ì—­"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "모든 항목 추가"
+#, fuzzy
+msgid "Colors"
+msgstr "색깔"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Fonts"
+msgstr "글꼴"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "ëª¨ë‘ ì¶”ê°€"
+#, fuzzy
+msgid "Icons"
+msgstr "ì•„ì´ì½˜"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Styleboxes"
+msgstr "ìŠ¤íƒ€ì¼ ë°•ìŠ¤"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "하위 리소스를 ì°¾ì„ ìˆ˜ 없습니다."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "ìƒìˆ˜"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "ìƒ‰ìƒ ìƒìˆ˜."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "ì°¾ì„ ìˆ˜ ì—†ìŒ!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "ì°¾ì„ ìˆ˜ ì—†ìŒ!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "하위 리소스를 ì°¾ì„ ìˆ˜ 없습니다."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "테마 가져오기"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "편집기를 ëŒê¹Œìš”?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "ë¶„ì„ ì¤‘"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "í•„í„°: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "노드를 ì„ íƒí•˜ì„¸ìš”"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "지우기 위한 ë¶„í•  위치를 ì„ íƒí•˜ê¸°."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "먼저 설정 í•­ëª©ì„ ì„ íƒí•˜ì„¸ìš”!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "먼저 설정 í•­ëª©ì„ ì„ íƒí•˜ì„¸ìš”!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "먼저 설정 í•­ëª©ì„ ì„ íƒí•˜ì„¸ìš”!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "먼저 설정 í•­ëª©ì„ ì„ íƒí•˜ì„¸ìš”!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "먼저 설정 í•­ëª©ì„ ì„ íƒí•˜ì„¸ìš”!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "ëª¨ë‘ ì ‘ê¸°"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "ëª¨ë‘ íŽ¼ì¹˜ê¸°"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "템플릿 íŒŒì¼ ì„ íƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "ì  ì„ íƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "ëª¨ë‘ ì„ íƒ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "씬 가져오기"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "모든 항목 삭제"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "ëª¨ë‘ ì‚­ì œ"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "항목 삭제"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "테마 편집"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "모든 항목 삭제"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "모든 항목 삭제"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "모든 항목 삭제"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "모든 항목 삭제"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "테마 편집 메뉴."
+#, fuzzy
+msgid "Add Color Item"
+msgstr "í´ëž˜ìФ 항목 추가"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "í´ëž˜ìФ 항목 추가"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "항목 추가"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "항목 추가"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "모든 항목 추가"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "í´ëž˜ìФ 항목 ì‚­ì œ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "í´ëž˜ìФ 항목 ì‚­ì œ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "노드 ì´ë¦„ 바꾸기"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "노드 ì´ë¦„ 바꾸기"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "ì„ íƒí•œ 항목 ì‚­ì œ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "ìž˜ëª»ëœ íŒŒì¼. 오디오 버스 ë ˆì´ì•„ì›ƒì´ ì•„ë‹™ë‹ˆë‹¤."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "템플릿 관리"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "편집할 수 있는 항목"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "유형:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "유형:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "항목 추가"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "모든 항목 추가"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "항목 삭제"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "í´ëž˜ìФ 항목 ì‚­ì œ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "빈 템플릿 만들기"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "í´ëž˜ìФ 항목 ì‚­ì œ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "모든 항목 삭제"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "GUI 테마 항목"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "노드 ì´ë¦„:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "테마 가져오기"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "기본"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "테마 편집"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "리소스 삭제"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "테마 가져오기"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "애니메ì´ì…˜ 트랙 ì´ë¦„ 변경"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "ì¼ê´„ ì´ë¦„ 바꾸기"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "재정ì˜"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "유형"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "항목 추가"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "빈 편집기 템플릿 만들기"
+#, fuzzy
+msgid "Node Types:"
+msgstr "노드 유형"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "현재 편집기 테마ì—서 만들기"
+#, fuzzy
+msgid "Show Default"
+msgstr "기본값 불러오기"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "재정ì˜"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "테마"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "내보내기 템플릿 관리..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "미리 보기"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "ì—…ë°ì´íЏ 미리 보기"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "소스 메시를 ì„ íƒí•˜ì„¸ìš”:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "토글 버튼"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "꺼진 버튼"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "항목"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "꺼진 항목"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "ì²´í¬ í•­ëª©"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "ì²´í¬ëœ 항목"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "ë¼ë””오 항목"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "ì²´í¬ëœ ë¼ë””오 항목"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "ì´ë¦„있는 구분ìž."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "하위 메뉴"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "하위 항목 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "하위 항목 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "갖춤"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "ë§Žì€"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "꺼진 LineEdit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "탭 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "탭 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "탭 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "편집할 수 있는 항목"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "하위 트리"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "ë§Žì€,옵션,갖춤"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "ë°ì´í„° 유형:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "ì•„ì´ì½˜"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "스타ì¼"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "글꼴"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "색깔"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "ìž˜ëª»ëœ íŒŒì¼. 오디오 버스 ë ˆì´ì•„ì›ƒì´ ì•„ë‹™ë‹ˆë‹¤."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "테마 파ì¼"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8313,6 +9198,10 @@ msgid "Priority"
msgstr "우선 순위"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "ì•„ì´ì½˜"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z ì¸ë±ìФ"
@@ -8646,11 +9535,6 @@ msgid "Commit Changes"
msgstr "커밋 변경 사항"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "ìƒíƒœ"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "최신 버전으로 커밋하기 ì „ì— íŒŒì¼ diff 보기"
@@ -9515,7 +10399,8 @@ msgid "VisualShader"
msgstr "비주얼 ì…°ì´ë”"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "비주얼 ì†ì„± 편집"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9640,7 +10525,8 @@ msgid "Script"
msgstr "스í¬ë¦½íЏ"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "스í¬ë¦½íЏ 내보내기 모드:"
#: editor/project_export.cpp
@@ -9648,19 +10534,21 @@ msgid "Text"
msgstr "í…스트"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "컴파ì¼ë¨"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "암호화 (ì•„ëž˜ì— í‚¤ê°€ 필요합니다)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "ìž˜ëª»ëœ ì•”í˜¸í™” 키 (길ì´ê°€ 64ìžì´ì–´ì•¼ 합니다)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "스í¬ë¦½íЏ 암호화 키 (256-비트를 hex 형ì‹ìœ¼ë¡œ):"
#: editor/project_export.cpp
@@ -9735,7 +10623,8 @@ msgid "Imported Project"
msgstr "가져온 프로ì íЏ"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "ìž˜ëª»ëœ í”„ë¡œì íЏ ì´ë¦„."
#: editor/project_manager.cpp
@@ -9771,6 +10660,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "프로ì íЏ 경로ì—서 project.godot 파ì¼ì„ 만들 수 없습니다."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "패키지 파ì¼ì„ 여는 중 오류. ZIP 형ì‹ì´ 아닙니다."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "ë‹¤ìŒ íŒŒì¼ì„ 패키지ì—서 ì¶”ì¶œí•˜ëŠ”ë° ì‹¤íŒ¨í•¨:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "패키지를 성공ì ìœ¼ë¡œ 설치했습니다!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "프로ì íЏ ì´ë¦„ 바꾸기"
@@ -9943,20 +10844,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "한 ë²ˆì— %dê°œì˜ í”„ë¡œì íŠ¸ë¥¼ 실행할 건가요?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"%dê°œì˜ í”„ë¡œì íŠ¸ë¥¼ 삭제할까요?\n"
-"프로ì íЏ í´ë”ì˜ ë‚´ìš©ì€ ìˆ˜ì •ë˜ì§€ 않습니다."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "목ë¡ì—서 기기 ì„ íƒ"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"ì´ í”„ë¡œì íŠ¸ë¥¼ 목ë¡ì—서 삭제할까요?\n"
-"프로ì íЏ í´ë”ì˜ ë‚´ìš©ì€ ìˆ˜ì •ë˜ì§€ 않습니다."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "목ë¡ì—서 기기 ì„ íƒ"
#: editor/project_manager.cpp
msgid ""
@@ -9988,7 +10883,8 @@ msgid "Project Manager"
msgstr "프로ì íЏ 매니저"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "프로ì íЏ"
#: editor/project_manager.cpp
@@ -10000,10 +10896,25 @@ msgid "Last Modified"
msgstr "마지막으로 수정ë¨"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "프로ì íЏ 내보내기"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "프로ì íЏ ì´ë¦„ 바꾸기"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "스캔"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "프로ì íЏ"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "스캔할 í´ë”를 ì„ íƒí•˜ì„¸ìš”"
@@ -10012,18 +10923,41 @@ msgid "New Project"
msgstr "새 프로ì íЏ"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "가져온 프로ì íЏ"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "프로ì íЏ ì´ë¦„ 바꾸기"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "누ë½ëœ 부분 ì‚­ì œ"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "템플릿"
+msgid "About"
+msgstr "ì •ë³´"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "ì• ì…‹ ë¼ì´ë¸ŒëŸ¬ë¦¬"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "지금 다시 시작"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "ëª¨ë‘ ì‚­ì œ"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "프로ì íŠ¸ë¥¼ 실행할 수 없습니다"
@@ -10036,8 +10970,14 @@ msgstr ""
"ì• ì…‹ ë¼ì´ë¸ŒëŸ¬ë¦¬ì—서 ê³µì‹ ì˜ˆì œ 프로ì íŠ¸ë¥¼ 찾아볼까요?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "í•„í„° ì†ì„±"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10050,6 +10990,10 @@ msgid "Key "
msgstr "키 "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "ì¡°ì´ìŠ¤í‹± 버튼"
@@ -10093,6 +11037,10 @@ msgstr "모든 기기"
msgid "Device"
msgstr "기기"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "키를 눌러주세요..."
@@ -10234,7 +11182,8 @@ msgid "Override for Feature"
msgstr "기능 재정ì˜"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "번역 추가"
#: editor/project_settings_editor.cpp
@@ -10242,11 +11191,13 @@ msgid "Remove Translation"
msgstr "번역 삭제"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "리맵핑 경로 추가"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "리소스 리맵핑 추가"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "리소스 리맵핑 추가"
#: editor/project_settings_editor.cpp
@@ -10518,6 +11469,10 @@ msgid "Post-Process"
msgstr "후처리"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "스타ì¼"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "유지"
@@ -10682,12 +11637,30 @@ msgid "Delete node \"%s\"?"
msgstr "노드 \"%s\"ì„(를) 삭제할까요?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "루트 노드로는 수행할 수 없습니다."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "ì´ ìž‘ì—…ì€ ì¸ìŠ¤í„´ìŠ¤ëœ ì”¬ì—서 í•  수 없습니다."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10745,6 +11718,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "ìƒì† 씬 ë‚´ì—서 수행할 수 없는 작업입니다!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "ì´ ìž‘ì—…ì€ ì¸ìŠ¤í„´ìŠ¤ëœ ì”¬ì—서 í•  수 없습니다."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "스í¬ë¦½íЏ ë¶™ì´ê¸°"
@@ -10792,10 +11769,6 @@ msgid "Load As Placeholder"
msgstr "ìžë¦¬ 표시ìžë¡œ 불러오기"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "문서 열기"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11086,6 +12059,12 @@ msgstr ""
"할 수 없습니다."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "í´ëž˜ìФ ì´ë¦„:"
@@ -11154,6 +12133,10 @@ msgid "Copy Error"
msgstr "복사 오류"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "비디오 RAM"
@@ -11437,6 +12420,16 @@ msgstr "ìž˜ëª»ëœ ì¸ìŠ¤í„´ìŠ¤ Dictionary (하위 í´ëž˜ìŠ¤ê°€ 올바르지 않ì
msgid "Object can't provide a length."
msgstr "ê°ì²´ëŠ” 길ì´ë¥¼ 제공할 수 없습니다."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "메시 ë¼ì´ë¸ŒëŸ¬ë¦¬ 내보내기"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "내보내기..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "ë‹¤ìŒ í‰ë©´"
@@ -11478,6 +12471,11 @@ msgid "GridMap Paint"
msgstr "그리드맵 칠하기"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "그리드맵 ì„ íƒ í•­ëª© 채우기"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "그리드맵"
@@ -11726,6 +12724,16 @@ msgid "Add Output Port"
msgstr "출력 í¬íЏ 추가하기"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "유형 바꾸기"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "ìž…ë ¥ í¬íЏ ì´ë¦„ 바꾸기"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "존재하는 내장 함수를 재정ì˜í•©ë‹ˆë‹¤."
@@ -11838,6 +12846,11 @@ msgid "Add Preload Node"
msgstr "Preload 노드 추가"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "노드 추가"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "트리ì—서 노드 추가"
@@ -12066,10 +13079,6 @@ msgstr "비주얼 스í¬ë¦½íЏ 검색"
msgid "Get %s"
msgstr "Get %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Set %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "패키지 ì´ë¦„ì´ ì—†ìŠµë‹ˆë‹¤."
@@ -12099,6 +13108,40 @@ msgid "Select device from the list"
msgstr "목ë¡ì—서 기기 ì„ íƒ"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "ëª¨ë‘ ë‚´ë³´ë‚´ê¸°"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "삭제"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "로드 중, 기다려 주세요..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "ì”¬ì„ ì¸ìŠ¤í„´ìŠ¤ í•  수 없습니다!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "맞춤 스í¬ë¦½íЏ 실행 중..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "í´ë”를 만들 수 없습니다."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "'apksigner' ë„구를 ì°¾ì„ ìˆ˜ 없습니다."
@@ -12208,6 +13251,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr "\"Export AAB\"는 \"Use Custom Build\"ê°€ 활성화 ëœ ê²½ìš°ì—ë§Œ 유효합니다."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"íŒŒì¼ ìŠ¤ìº”ì¤‘.\n"
+"기다려주십시오..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "내보내기 í…œí”Œë¦¿ì„ ì—´ 수 ì—†ìŒ:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "%s 추가하는 중..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "ëª¨ë‘ ë‚´ë³´ë‚´ê¸°"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr "ìž˜ëª»ëœ íŒŒì¼ëª…! Android App Bundleì—는 * .aab 확장ìžê°€ 필요합니다."
@@ -12220,6 +13305,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "ìž˜ëª»ëœ íŒŒì¼ëª…! Android APK는 *.apk 확장ìžê°€ 필요합니다."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12240,6 +13329,21 @@ msgstr ""
"'프로ì íЏ' 메뉴ì—서 Android 빌드 í…œí”Œë¦¿ì„ ë‹¤ì‹œ 설치해주세요."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "프로ì íЏ ê²½ë¡œì— project.godot 파ì¼ì„ ì°¾ì„ ìˆ˜ 없습니다."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "파ì¼ì— 쓸 수 ì—†ìŒ:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Android 프로ì íЏ 빌드 중 (gradle)"
@@ -12263,11 +13367,54 @@ msgstr ""
"내보내기 파ì¼ì„ 복사하고 ì´ë¦„ì„ ë°”ê¿€ 수 없습니다, ì¶œë ¥ì— ëŒ€í•œ gradle 프로ì "
"트 디렉터리를 확ì¸í•˜ì„¸ìš”."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "애니메ì´ì…˜ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "윤곽선 만드는 중..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "내보내기 í…œí”Œë¦¿ì„ ì—´ 수 ì—†ìŒ:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "%s 추가하는 중..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "파ì¼ì— 쓸 수 ì—†ìŒ:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "ì‹ë³„ìžê°€ 없습니다."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "ë¬¸ìž '%s'ì€(는) ì‹ë³„ìžì— 쓸 수 없습니다."
@@ -12296,10 +13443,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "내보낸 HTMLì„ ì‹œìŠ¤í…œì˜ ê¸°ë³¸ 브ë¼ìš°ì €ë¥¼ 사용하여 실행합니다."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "파ì¼ì— 쓸 수 ì—†ìŒ:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "내보내기 í…œí”Œë¦¿ì„ ì—´ 수 ì—†ìŒ:"
@@ -12308,16 +13451,49 @@ msgid "Invalid export template:"
msgstr "ìž˜ëª»ëœ ë‚´ë³´ë‚´ê¸° 템플릿:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "파ì¼ì— 쓸 수 ì—†ìŒ:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "파ì¼ì— 쓸 수 ì—†ìŒ:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "맞춤 HTML shellì„ ì½ì„ 수 ì—†ìŒ:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "부트 스플래시 ì´ë¯¸ì§€ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "í´ë”를 만들 수 없습니다."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "기본 부트 스플래시 ì´ë¯¸ì§€ 사용."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "씬 저장 중 오류."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "ìž˜ëª»ëœ ì‹ë³„ìž:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12727,6 +13903,13 @@ msgstr ""
"GIProbe는 GLES2 비디오 드ë¼ì´ë²„ì—서 ì§€ì›í•˜ì§€ 않습니다.\n"
"대신 BakedLightmapì„ ì‚¬ìš©í•˜ì„¸ìš”."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "SpotLightì˜ ê°ë„를 90ë„ ì´ìƒìœ¼ë¡œ 잡게ë˜ë©´ 그림ìžë¥¼ 투ì˜í•  수 없습니다."
@@ -12809,6 +13992,18 @@ msgstr "ê´€ì ˆì´ ì–´ë– í•œ PhysicsBodyì—ë„ ì—°ê²°ë˜ì–´ 있지 않습니다"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "노드 A와 노드 B는 서로 다른 PhysicsBody여야 합니다"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12817,6 +14012,46 @@ msgstr ""
"\"Remote Path\" ì†ì„±ì€ 올바른 Spatial 노드, ë˜ëŠ” Spatialì—서 파ìƒëœ 노드를 ê°€"
"리켜야 합니다."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "ì´ ë°”ë””ëŠ” 메시를 설정할 때까지 무시ë©ë‹ˆë‹¤."
@@ -12876,6 +14111,10 @@ msgstr "BlendTree 노드 '%s'ì—서, 애니메ì´ì…˜ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ: '%s'"
msgid "Animation not found: '%s'"
msgstr "애니메ì´ì…˜ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "노드 '%s'ì—서, ìž˜ëª»ëœ ì• ë‹ˆë©”ì´ì…˜: '%s'."
@@ -13047,6 +14286,27 @@ msgid "Invalid comparison function for that type."
msgstr "해당 ìœ í˜•ì— ìž˜ëª»ëœ ë¹„êµ í•¨ìˆ˜."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Varyingì€ ê¼­ì§“ì  í•¨ìˆ˜ì—ë§Œ 지정할 수 있습니다."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "í•¨ìˆ˜ì— ëŒ€ìž…."
@@ -13055,13 +14315,177 @@ msgid "Assignment to uniform."
msgstr "Uniformì— ëŒ€ìž…."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Varyingì€ ê¼­ì§“ì  í•¨ìˆ˜ì—ë§Œ 지정할 수 있습니다."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
+#~ msgid "Package Contents:"
+#~ msgstr "패키지 내용:"
+
+#~ msgid "Singleton"
+#~ msgstr "싱글톤"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "프로필 '%s'ì„(를) 지울까요? (ë˜ëŒë¦´ 수 없습니다)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "켜진 ì†ì„±:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "켜진 기능:"
+
+#~ msgid "Unset"
+#~ msgstr "설정하지 않기"
+
+#~ msgid "Class Options"
+#~ msgstr "í´ëž˜ìФ 옵션"
+
+#~ msgid "Set"
+#~ msgstr "설정"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "ìˆ˜ì •ëœ ë¦¬ì†ŒìŠ¤ %sì„(를) 저장하였습니다."
+
+#~ msgid "Q&A"
+#~ msgstr "Q&A"
+
+#~ msgid "Status:"
+#~ msgstr "ìƒíƒœ:"
+
+#~ msgid "Edit:"
+#~ msgstr "편집:"
+
+#~ msgid "Redownload"
+#~ msgstr "다시 다운로드"
+
+#~ msgid "(Installed)"
+#~ msgstr "(설치ë¨)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(누ë½)"
+
+#~ msgid "Request Failed."
+#~ msgstr "요청 실패."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "리다ì´ë ‰íЏ 루프."
+
+#~ msgid "Download Complete."
+#~ msgstr "다운로드 완료."
+
+#~ msgid "Remove Template"
+#~ msgstr "템플릿 삭제"
+
+#~ msgid "Download Templates"
+#~ msgstr "템플릿 다운로드"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "목ë¡ì—서 미러를 ì„ íƒí•˜ì„¸ìš”: (Shift+í´ë¦­: 브ë¼ìš°ì €ì—서 열기)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "휴지통으로 ì´ë™"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "모든 ì†ì„± 펼치기"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "모든 ì†ì„± 접기"
+
+#~ msgid "Copy Params"
+#~ msgstr "매개변수 복사"
+
+#~ msgid "Open in Help"
+#~ msgstr "ë„움ë§ì—서 열기"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "게임 ì¹´ë©”ë¼ ë‹¤ì‹œ ì •ì˜\n"
+#~ "실행하고 있는 게임 ì¸ìŠ¤í„´ìŠ¤ê°€ 없습니다."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "드래그: 회전"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr "'v'키로 피벗 바꾸기. 'Shift+v'키로 피벗 드래그 (ì´ë™í•˜ëŠ” ë™ì•ˆ)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+ìš°í´ë¦­: 겹친 ëª©ë¡ ì„ íƒ"
+
+#~ msgid "Clone Down"
+#~ msgstr "아래로 복제"
+
+#~ msgid "Yaw"
+#~ msgstr "ìš”"
+
+#~ msgid "Size"
+#~ msgstr "í¬ê¸°"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "드래그: 회전\n"
+#~ "Alt+드래그: ì´ë™\n"
+#~ "Alt+ìš°í´ë¦­: 겹친 ëª©ë¡ ì„ íƒ"
+
+#~ msgid "Sep.:"
+#~ msgstr "분리.:"
+
+#~ msgid "Add All"
+#~ msgstr "ëª¨ë‘ ì¶”ê°€"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "테마 편집 메뉴."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "빈 템플릿 만들기"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "빈 편집기 템플릿 만들기"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "현재 편집기 테마ì—서 만들기"
+
+#~ msgid "Data Type:"
+#~ msgstr "ë°ì´í„° 유형:"
+
+#~ msgid "Theme File"
+#~ msgstr "테마 파ì¼"
+
+#~ msgid "Compiled"
+#~ msgstr "컴파ì¼ë¨"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "%dê°œì˜ í”„ë¡œì íŠ¸ë¥¼ 삭제할까요?\n"
+#~ "프로ì íЏ í´ë”ì˜ ë‚´ìš©ì€ ìˆ˜ì •ë˜ì§€ 않습니다."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "ì´ í”„ë¡œì íŠ¸ë¥¼ 목ë¡ì—서 삭제할까요?\n"
+#~ "프로ì íЏ í´ë”ì˜ ë‚´ìš©ì€ ìˆ˜ì •ë˜ì§€ 않습니다."
+
+#~ msgid "Templates"
+#~ msgstr "템플릿"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "리맵핑 경로 추가"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "루트 노드로는 수행할 수 없습니다."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "부트 스플래시 ì´ë¯¸ì§€ 파ì¼ì„ ì½ì„ 수 ì—†ìŒ:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "기본 부트 스플래시 ì´ë¯¸ì§€ 사용."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "애니메ì´ì…˜ 플레ì´ì–´ëŠ” ìžì‹ ì´ 아닌 다른 플레ì´ì–´ì—ë§Œ 애니메ì´ì…˜ì„ 부여할 "
@@ -13183,9 +14607,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "현재 ì”¬ì´ ì•„ì§ ì €ìž¥ë˜ì§€ 않았습니다. 실행하기 ì „ì— ì €ìž¥í•´ì£¼ì„¸ìš”."
-#~ msgid "Not in resource path."
-#~ msgstr "리소스 ê²½ë¡œì— ì—†ìŠµë‹ˆë‹¤."
-
#~ msgid "Revert"
#~ msgstr "ë˜ëŒë¦¬ê¸°"
@@ -13286,9 +14707,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Input"
#~ msgstr "ìž…ë ¥"
-#~ msgid "Properties:"
-#~ msgstr "ì†ì„±:"
-
#~ msgid "Methods:"
#~ msgstr "메서드:"
@@ -13761,9 +15179,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Connect two points to make a split."
#~ msgstr "ë‘ í¬ì¸íŠ¸ë¥¼ 연결하여 나누기."
-#~ msgid "Select a split to erase it."
-#~ msgstr "지우기 위한 ë¶„í•  위치를 ì„ íƒí•˜ê¸°."
-
#~ msgid "Add Node.."
#~ msgstr "노드 추가.."
@@ -13832,9 +15247,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Public Methods:"
#~ msgstr "공개 메서드:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "GUI 테마 항목"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "GUI 테마 항목:"
@@ -13856,9 +15268,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Match case"
#~ msgstr "ëŒ€ì†Œë¬¸ìž êµ¬ë¶„"
-#~ msgid "Filter: "
-#~ msgstr "í•„í„°: "
-
#~ msgid "Ok"
#~ msgstr "확ì¸"
@@ -13894,9 +15303,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Rotate 270 degrees"
#~ msgstr "270ë„ íšŒì „"
-#~ msgid "Variable"
-#~ msgstr "변수"
-
#~ msgid "Errors:"
#~ msgstr "ì—러:"
@@ -13987,9 +15393,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Set Transitions to:"
#~ msgstr "전환 설정:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "애니메ì´ì…˜ 트랙 ì´ë¦„ 변경"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "애니메ì´ì…˜ 트랙 ë³´ê°„ 변경"
@@ -14140,12 +15543,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "StyleBox Preview:"
#~ msgstr "StyleBox 미리보기:"
-#~ msgid "StyleBox"
-#~ msgstr "ìŠ¤íƒ€ì¼ ë°•ìŠ¤"
-
-#~ msgid "Separation:"
-#~ msgstr "간격:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "í…ìŠ¤ì³ ì˜ì—­ ì—디터"
@@ -14222,12 +15619,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "프로ì íЏ ê²½ë¡œì— project.godot 파ì¼ì„ ì°¾ì„ ìˆ˜ 없습니다."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "프로ì íЏ ê²½ë¡œì— project.godot 파ì¼ì„ ì°¾ì„ ìˆ˜ 없습니다."
-
-#~ msgid "Not found!"
-#~ msgstr "ì°¾ì„ ìˆ˜ ì—†ìŒ!"
-
#~ msgid "Replace By"
#~ msgstr "으로 바꿈"
@@ -14580,9 +15971,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "í…ìŠ¤ì³ ì••ì¶• 품질 (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "í…ìŠ¤ì³ ì˜µì…˜"
-
#~ msgid "Please specify some files!"
#~ msgstr "파ì¼ì„ 지정하세요!"
@@ -14743,9 +16131,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Zoom Set..."
#~ msgstr "확대 설정..."
-#~ msgid "Set a Value"
-#~ msgstr "값 설정"
-
#~ msgid "Parse BBCode"
#~ msgstr "BBCode ì½ê¸°"
@@ -14868,9 +16253,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Instance at Cursor"
#~ msgstr "ì»¤ì„œì— ì¸ìŠ¤í„´ìŠ¤ 만들기"
-#~ msgid "Could not instance scene!"
-#~ msgstr "ì”¬ì„ ì¸ìŠ¤í„´ìŠ¤ í•  수 없습니다!"
-
#~ msgid "Use Default Light"
#~ msgstr "기본 Light 사용"
@@ -14939,9 +16321,6 @@ msgstr "ìƒìˆ˜ëŠ” 수정할 수 없습니다."
#~ msgid "Organization"
#~ msgstr "ì¡°ì§"
-#~ msgid "State"
-#~ msgstr "주(State)"
-
#~ msgid "Password"
#~ msgstr "암호"
diff --git a/editor/translations/lt.po b/editor/translations/lt.po
index 6df1f44cfb..ab98c9b156 100644
--- a/editor/translations/lt.po
+++ b/editor/translations/lt.po
@@ -530,7 +530,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -557,7 +558,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -579,6 +581,11 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Atstatyti PriartinimÄ…"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -595,6 +602,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -643,7 +654,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -731,12 +742,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Priartinti"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -799,11 +812,9 @@ msgid "Add"
msgstr "PridÄ—ti"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -854,6 +865,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -929,8 +941,9 @@ msgid "Edit..."
msgstr "Redaguoti"
#: editor/connections_dialog.cpp
-msgid "Go To Method"
-msgstr ""
+#, fuzzy
+msgid "Go to Method"
+msgstr "Pasirinkite Nodus, kuriuos norite importuoti"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -945,6 +958,14 @@ msgstr ""
msgid "Create New %s"
msgstr "Sukurti NaujÄ…"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -966,8 +987,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1040,16 +1061,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1094,7 +1117,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1215,37 +1238,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1253,8 +1280,9 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
-msgstr ""
+#, fuzzy
+msgid "Asset Installer"
+msgstr "(Įdiegta)"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
@@ -1317,8 +1345,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "Aprašymas:"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1398,7 +1427,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1485,6 +1514,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1500,16 +1537,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1525,7 +1562,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1668,7 +1705,48 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Esama)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1703,15 +1781,15 @@ msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr "Animacija"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1730,7 +1808,7 @@ msgid "Error saving profile to path: '%s'."
msgstr "Įvyko klaida kraunant šriftą."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1740,17 +1818,26 @@ msgstr "PradÄ—ti ProfiliavimÄ…"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Make Current"
-msgstr "(Esama)"
+msgid "Create Profile"
+msgstr "PradÄ—ti ProfiliavimÄ…"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Panaikinti"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "Animacija"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Make Current"
+msgstr "(Esama)"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1760,24 +1847,24 @@ msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Available Profiles:"
-msgstr "Animacija"
+msgid "Configure Selected Profile:"
+msgstr "PradÄ—ti ProfiliavimÄ…"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
+msgid "Extra Options:"
msgstr "Aprašymas:"
#: editor/editor_feature_profile.cpp
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
#, fuzzy
msgid "New profile name:"
msgstr "Naujas pavadinimas:"
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr ""
-
-#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
msgstr ""
@@ -1799,7 +1886,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1855,9 +1942,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1940,8 +2028,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -2013,7 +2100,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2104,7 +2191,7 @@ msgstr ""
msgid "Signal"
msgstr "Signalai"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstanta"
@@ -2120,8 +2207,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2138,7 +2226,7 @@ msgid "Copy Selection"
msgstr "Panaikinti pasirinkimÄ…"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2204,7 +2292,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2399,18 +2488,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2582,7 +2675,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2769,6 +2862,11 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "PradÄ—ti ProfiliavimÄ…"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2902,13 +3000,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2916,6 +3013,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2924,7 +3025,8 @@ msgid "Community"
msgstr "BendruomenÄ—"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Apie"
#: editor/editor_node.cpp
@@ -3021,6 +3123,15 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "(Įdiegta)"
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3047,7 +3158,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3088,6 +3199,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "(Esama)"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Atverti 2D editorių"
@@ -3119,6 +3235,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3145,34 +3265,34 @@ msgstr "Įdiegti Priedai:"
msgid "Update"
msgstr "Atnaujinti"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versija:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autorius:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Statusas:"
+#, fuzzy
+msgid "Author"
+msgstr "Autorius:"
#: editor/editor_plugin_settings.cpp
-#, fuzzy
-msgid "Edit:"
-msgstr "Redaguoti"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Kadro TrukmÄ— (sekundÄ—mis)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Vidutiniška Trukmė (sekunėmis)"
#: editor/editor_profiler.cpp
@@ -3192,6 +3312,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3236,12 +3366,6 @@ msgstr "Netinkamas šrifto dydis."
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3259,41 +3383,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "Atidaryti Skriptų Editorių"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3324,6 +3413,48 @@ msgstr "Naujas pavadinimas:"
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Keisti Poligono SkalÄ™"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Extend Script"
+msgstr "Atidaryti Skriptų Editorių"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3356,7 +3487,7 @@ msgid "Did you forget the '_run' method?"
msgstr "Galbūt jūs pamiršote '_run' metodą?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3376,67 +3507,72 @@ msgid "Import From Node:"
msgstr "Importuoti iš Nodo:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "Atsiųsti iš naujo"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Išinstaliuoti"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Įdiegta)"
+msgid "There are no mirrors available."
+msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Atsiųsti"
+msgid "Retrieving the mirror list..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Nerasta)"
+#, fuzzy
+msgid "Error requesting URL:"
+msgstr "Duplikuoti"
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Esama)"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Prijunkite prie Nodo:"
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Panaikinti šablono versiją '%s'?"
+msgid "Can't connect to the mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Å ablonuose nerasta version.txt failo."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Å ablonuose nerasta version.txt failo."
+msgid "Request ended up in a redirect loop."
+msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error creating path for templates:"
-msgstr "Klaida kuriant kelią šablonams:\n"
+msgid "Request failed:"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3444,7 +3580,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3454,137 +3594,176 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error requesting URL:"
-msgstr "Duplikuoti"
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Å ablonuose nerasta version.txt failo."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr ""
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Å ablonuose nerasta version.txt failo."
#: editor/export_template_manager.cpp
-msgid "Disconnected"
-msgstr ""
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Klaida kuriant kelią šablonams:\n"
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
-msgstr ""
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Panaikinti šablono versiją '%s'?"
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
-msgstr ""
+#, fuzzy
+msgid "Open Folder"
+msgstr "Atidaryti"
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Uninstall"
+msgstr "Išinstaliuoti"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+#, fuzzy
+msgid "Download from:"
+msgstr "Atsisiuntimo Klaida"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Official export templates aren't available for development builds."
msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "Pasirinkite Nodus, kuriuos norite importuoti"
+msgid "Install from File"
+msgstr "(Įdiegta)"
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid "Install templates from a local file."
msgstr ""
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Atšaukti"
+
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Įdiegti Priedai:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Išinstaliuoti"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Select Template File"
+msgstr "Pasirinkite Nodus, kuriuos norite importuoti"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3719,31 +3898,61 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Duplicate..."
-msgstr "Duplikuoti"
+msgid "Sort files"
+msgstr "Importuoti iš Nodo:"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "Mix Nodas"
+msgid "Duplicate..."
+msgstr "Duplikuoti"
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "Pasirinkite Nodus, kuriuos norite importuoti"
@@ -3828,10 +4037,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Atšaukti"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -4059,52 +4264,51 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Animacija"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Animacija"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4120,7 +4324,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4128,6 +4336,11 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Animacija"
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4158,6 +4371,15 @@ msgstr "Priedai"
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autorius:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versija:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4365,7 +4587,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4588,6 +4810,11 @@ msgid "Animation"
msgstr "Animacija"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "Importuoti Animacijas..."
@@ -4939,10 +5166,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Atsiųsti"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4951,15 +5186,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4988,6 +5227,10 @@ msgid "Timeout."
msgstr "TrukmÄ—:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5091,7 +5334,11 @@ msgid "All"
msgstr "Visi"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5137,6 +5384,10 @@ msgstr "Atsiųsti"
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5145,8 +5396,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5386,15 +5637,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5452,6 +5704,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
@@ -5464,19 +5717,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Panaikinti pasirinkimÄ…"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Panaikinti pasirinkimÄ…"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5711,6 +5973,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "MÄ—gstamiausi:"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Ä®raÅ¡yti raktažodį Äia"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5723,6 +5995,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Ištolinti"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Ištolinti"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Ištolinti"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Ištolinti"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Ištolinti"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Ištolinti"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5968,6 +6286,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Sukurti NaujÄ…"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "Sukurti NaujÄ…"
@@ -6001,7 +6324,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6062,13 +6385,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Keisti Poligono SkalÄ™"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Keisti Poligono SkalÄ™"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6123,7 +6459,6 @@ msgid "Mesh Library"
msgstr "Atidaryti Resursų Biblioteką"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6396,7 +6731,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6711,6 +7047,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Judinti Bezjė taškus"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Sukurti"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6926,7 +7280,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6957,6 +7311,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -7083,8 +7442,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -7117,10 +7476,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7274,6 +7629,26 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "SkalÄ—:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7294,39 +7669,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7483,6 +7862,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7498,6 +7881,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Keisti Poligono SkalÄ™"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7511,26 +7899,24 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
-msgstr ""
+#, fuzzy
+msgid "Snap Nodes to Floor"
+msgstr "Pasirinkite Nodus, kuriuos norite importuoti"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7627,6 +8013,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7931,11 +8321,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7956,171 +8341,566 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Versija:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "Redaguoti Filtrus"
+msgid "{num} constant(s)"
+msgstr "Keisti Poligono SkalÄ™"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+#, fuzzy
+msgid "No constants found."
+msgstr "Konstanta"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "Išjungta"
+msgid "Importing Theme Items"
+msgstr "Importuoti Animacijas..."
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "Išjungta"
+msgid "Updating the editor"
+msgstr "Atidaryti praeitą Editorių"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtrai..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Išjungta"
+msgid "Select all Theme items."
+msgstr "Pasirinkite Nodus, kuriuos norite importuoti"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Atsijungti"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Editable Item"
+msgid "Import Selected"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "MÄ—gstamiausi:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Naujas pavadinimas:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "MÄ—gstamiausi:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "MÄ—gstamiausi:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konstanta"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "MÄ—gstamiausi:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "MÄ—gstamiausi:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
msgstr "Redaguoti Filtrus"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Rename Color Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Rename Font Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Rename Icon Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Manage Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "Atidaryti"
+msgid "Edit Items"
+msgstr "Redaguoti Filtrus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Redaguoti Filtrus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Keisti Poligono SkalÄ™"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Priedai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importuoti Animacijas..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Redaguoti Filtrus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Redaguoti Filtrus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Redaguoti Filtrus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Animacija: Pervadinti Takelį"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Animacija: Pridėti Takelį"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Naujas pavadinimas:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Redaguoti Filtrus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Atnaujinti"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Atnaujinti"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "Išjungta"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "Išjungta"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Išjungta"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Editable Item"
+msgstr "Redaguoti Filtrus"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8298,6 +9078,10 @@ msgid "Priority"
msgstr "Importuoti iš Nodo:"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8647,11 +9431,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9490,7 +10269,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "Redaguoti Filtrus"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9608,7 +10387,7 @@ msgstr "Atidaryti Skriptų Editorių"
#: editor/project_export.cpp
#, fuzzy
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr "Importuoti iš Nodo:"
#: editor/project_export.cpp
@@ -9616,7 +10395,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9624,11 +10403,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9703,7 +10482,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr "Netinkamas šrifto dydis."
#: editor/project_manager.cpp
@@ -9737,6 +10516,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9884,15 +10675,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9919,7 +10706,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9932,10 +10719,23 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Redaguoti Filtrus"
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9945,18 +10745,41 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Importuoti iš Nodo:"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Panaikinti"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr ""
+msgid "About"
+msgstr "Apie"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Atidaryti Resursų Biblioteką"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9967,8 +10790,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtrai..."
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9978,6 +10806,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10019,6 +10851,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10158,19 +10994,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Transition Nodas"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10442,6 +11279,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10608,11 +11449,29 @@ msgid "Delete node \"%s\"?"
msgstr "Ištrinti nodą \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10670,6 +11529,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10717,10 +11580,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11002,6 +11861,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "Priedai"
@@ -11074,6 +11939,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11360,6 +12229,15 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Redaguoti"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11403,6 +12281,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Visas Pasirinkimas"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11651,6 +12534,16 @@ msgid "Add Output Port"
msgstr "MÄ—gstamiausi:"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Animacijos Nodas"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Animacijos Nodas"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11765,6 +12658,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "MÄ—gstamiausi:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11996,10 +12894,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12029,6 +12923,37 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Redaguoti"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Išinstaliuoti"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Atsiųsti"
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12126,6 +13051,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12138,6 +13099,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12152,6 +13117,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12171,11 +13149,51 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animacijos Nodas"
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Filtrai..."
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12205,27 +13223,53 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+#, fuzzy
+msgid "Could not read file:"
+msgstr "PradÄ—ti ProfiliavimÄ…"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Netinkamas šrifto dydis."
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12578,6 +13622,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12649,12 +13700,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12704,6 +13807,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "Animacijos Nodas"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12858,21 +13965,59 @@ msgid "Invalid comparison function for that type."
msgstr "Netinkamas šrifto dydis."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Status:"
+#~ msgstr "Statusas:"
+
+#, fuzzy
+#~ msgid "Edit:"
+#~ msgstr "Redaguoti"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "Atsiųsti iš naujo"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Nerasta)"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Mix Nodas"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "Atidaryti"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "Animacijos grotuvas negali animuoti savęs, tik kitus grotuvus."
diff --git a/editor/translations/lv.po b/editor/translations/lv.po
index 8c8a0011c7..3c6ab5cb19 100644
--- a/editor/translations/lv.po
+++ b/editor/translations/lv.po
@@ -531,7 +531,8 @@ msgstr "Sekundes"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -557,7 +558,8 @@ msgstr "Mēroga Izvēle"
msgid "Scale From Cursor"
msgstr "Skala No Kursora"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Izveidot DublikÄtu IzvÄ“lÄ“tajam"
@@ -578,6 +580,11 @@ msgid "Go to Previous Step"
msgstr "Doties uz Iepriekšējo Soli"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "AtiestatÄ«t tÄlummaiņu"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "OptimizÄ“t animÄciju"
@@ -594,6 +601,11 @@ msgid "Use Bezier Curves"
msgstr "Izmanto Bezjē Līknes"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Ielīmēt celiņus"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Anim. OptimizÄ“tÄjs"
@@ -642,7 +654,7 @@ msgid "Select Tracks to Copy"
msgstr "Izvēlēties Celiņus ko Kopēt"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -728,12 +740,14 @@ msgid "Toggle Scripts Panel"
msgstr "PÄrslÄ“gt Skriptu Paneli"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "PalielinÄt"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -791,11 +805,9 @@ msgid "Add"
msgstr "Pievienot"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -845,6 +857,7 @@ msgstr "Nevar savienot signÄlu"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -917,7 +930,8 @@ msgid "Edit..."
msgstr "Rediģēt..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Doties Uz Metodi"
#: editor/create_dialog.cpp
@@ -932,6 +946,14 @@ msgstr "Nomainīt"
msgid "Create New %s"
msgstr "Izveidot Jaunu %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -953,8 +975,8 @@ msgstr "Meklēt:"
msgid "Matches:"
msgstr "Sakritības:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1032,8 +1054,9 @@ msgstr "Īpašnieki:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "Vai noņemt izvēlētos failus no projekta? (Netiks atjaunoti)"
#: editor/dependency_editor.cpp
@@ -1041,8 +1064,9 @@ msgstr "Vai noņemt izvēlētos failus no projekta? (Netiks atjaunoti)"
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Faili, kurus Jūs vēlaties noņemt ir nepieciešami citiem resursiem lai tie "
"varÄ“tu strÄdÄt.\n"
@@ -1090,7 +1114,7 @@ msgstr "BÄreņu Resursu PÄrlÅ«ks"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1217,28 +1241,41 @@ msgstr "Komponentes"
msgid "Licenses"
msgstr "Licences"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Kļūda atverot failu arhÄ«vu, nav ZIP formÄtÄ."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Kļūme atverot arhÄ«vu failu, nav ZIP formÄtÄ."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Jau Eksistē)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Nekompresēti Līdzekļi"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Sekojošie faili netika izvilkti no paketes:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Un %s vēl faili."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Pakete instalēta sekmīgi!"
#: editor/editor_asset_installer.cpp
@@ -1246,16 +1283,13 @@ msgstr "Pakete instalēta sekmīgi!"
msgid "Success!"
msgstr "Mērķis sasniegts!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Paketes Saturs:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Ieinstalēt"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Paketes InstalÄ“tÄjs"
#: editor/editor_audio_buses.cpp
@@ -1319,7 +1353,8 @@ msgid "Bypass"
msgstr "Å unts"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Kopnes iestatījumi"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1399,7 +1434,7 @@ msgstr "Pievienot Kopni"
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1488,6 +1523,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1503,16 +1546,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nosaukums"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1528,7 +1571,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[tukšs]"
@@ -1667,7 +1710,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1699,15 +1782,16 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+#, fuzzy
+msgid "Class Properties:"
msgstr "Ieslēgtie Mainīgie:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1725,25 +1809,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Kļūda saglabÄjot profilu uz ceļu: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "IelÄdÄ“t NoklusÄ“jumu"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Aktualizēt"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Izveidot"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Noņemt"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Pieejamie Profili:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Aktualizēt"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1752,19 +1845,20 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Pieejamie Profili:"
+msgid "Configure Selected Profile:"
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Klases Iespējas"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Klases Iespējas:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1788,7 +1882,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1842,9 +1936,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1925,8 +2020,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1997,7 +2091,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstantes"
@@ -2082,7 +2176,7 @@ msgstr ""
msgid "Signal"
msgstr "SignÄls"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2098,8 +2192,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2115,7 +2210,7 @@ msgid "Copy Selection"
msgstr "Kopēt Izvēlēto"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2179,7 +2274,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2373,18 +2469,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2555,7 +2655,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2736,6 +2836,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2868,13 +2972,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2882,6 +2985,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2890,7 +2997,8 @@ msgid "Community"
msgstr "Sabiedrība"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Par"
#: editor/editor_node.cpp
@@ -2987,6 +3095,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3013,7 +3129,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3055,6 +3171,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Aktualizēt"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3086,6 +3207,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3110,21 +3235,19 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr ""
+#, fuzzy
+msgid "Author"
+msgstr "Autori"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3132,11 +3255,12 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "Laiks (s): "
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3156,6 +3280,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3197,12 +3331,6 @@ msgstr "Nederīgs RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3220,22 +3348,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3249,37 +3400,21 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Izveidot"
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3314,7 +3449,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3334,64 +3469,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr ""
+msgid "Error requesting URL:"
+msgstr "Kļūda pieprasot URL:"
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr "Nevar noņemt pagaidu failu:"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3399,7 +3540,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3409,135 +3554,167 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr "Nevar noņemt pagaidu failu:"
+msgid "Connection Error"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Kļūda pieprasot URL:"
+msgid "Can't open the export templates file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+#, fuzzy
+msgid "Open Folder"
+msgstr "Atvērt"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Izvēlēties Šablona Failu"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid "Official export templates aren't available for development builds."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Izvēlēties Šablona Failu"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3663,22 +3840,49 @@ msgstr ""
msgid "New Resource..."
msgstr "Jauns Resurss..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Meklēt failus"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3686,6 +3890,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "IepriekšējÄ Mape/Fails"
@@ -3765,10 +3973,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3994,52 +4198,51 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Ieslēgtie Mainīgie:"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Ieslēgtie Mainīgie:"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4055,7 +4258,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4063,6 +4270,11 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "AnimÄcijas Ä«pašības."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4090,6 +4302,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4289,7 +4510,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4503,6 +4724,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4839,10 +5065,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4851,15 +5085,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4887,6 +5125,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4987,7 +5229,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5030,6 +5276,10 @@ msgstr "IelÄdÄ“t..."
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5038,8 +5288,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5274,15 +5524,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5336,6 +5587,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5347,19 +5599,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Noņemt izvÄ“lÄ“to mezglu vai pÄreju."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "Izdzēst izvēlēto Taisnstūri."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Noņemt izvÄ“lÄ“to mezglu vai pÄreju."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5591,6 +5852,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Pievienot Mezgla Punktu"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Ievadiet Atslēgu Šeit"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5603,6 +5874,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "AttÄlinÄt"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "AttÄlinÄt"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "AttÄlinÄt"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "AttÄlinÄt"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "AttÄlinÄt"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "AttÄlinÄt"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5843,6 +6160,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Izveidot Vienu Izliektu Formu"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Izveidot Vienu Izliektu Formu"
@@ -5875,7 +6197,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5934,13 +6256,26 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Izveidot Vienu Izliektu Sadursmes Uzmavu"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Izveidot VairÄkas Izliektas Sadursmes Uzmavas"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5994,7 +6329,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6267,7 +6601,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6576,6 +6911,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "PÄrvietot BezjÄ“ Punktus"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Izveidot punktus."
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6782,7 +7135,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6813,6 +7166,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6939,8 +7297,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6973,10 +7331,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7133,6 +7487,26 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Mēroga Režīms"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7153,39 +7527,45 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Nomainīt"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Nomainīt"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7342,6 +7722,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7357,6 +7741,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Izveidot"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7370,7 +7759,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7378,18 +7767,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7486,6 +7872,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7787,11 +8177,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7812,170 +8197,562 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Sēpija funkcija."
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstantes"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "Atspējots"
+msgid "Importing Theme Items"
+msgstr "Kļūda lÄdÄ“jot fontu."
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "Atspējots"
+msgid "Updating the editor"
+msgstr "Atjaunina Ainu"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+#, fuzzy
+msgid "Filter:"
+msgstr "Nomainīt Filtru"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Atspējots"
+msgid "Select all Theme items."
+msgstr "Izvēlēties Šablona Failu"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Atvienot Visu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+#, fuzzy
+msgid "Import Selected"
+msgstr "Grupa Izvēlēta"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Noņemt no Favorītiem"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "PÄrsaukt Audio Kopni"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Noņemt no Favorītiem"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "SaglabÄt Visas Ainas"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Pievienot Favorītiem"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konstantes"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Pievienot Punktu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Pievienot Punktu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Rename Color Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Rename Constant Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Rename Icon Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
+msgid "Edit Items"
+msgstr "Rediģēt Tekstu:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Noņemt Izvēlēto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Izveidot"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nosaukums"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "IelÄdÄ“t NoklusÄ“jumu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Nomainīt Noklusējuma Tipu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Rediģēt Tekstu:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "MeklÄ“t AizstÄjÄ“ja Resursu:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Pievienot Trijstūri"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "IelÄdÄ“t NoklusÄ“jumu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
msgstr "Atvērt"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Pievienot Trijstūri"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "IestatÄ«t KÄ Galveno Ainu"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "Atspējots"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "Atspējots"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Atspējots"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -8147,6 +8924,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8490,11 +9271,6 @@ msgid "Commit Changes"
msgstr "Nomainīt"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9321,8 +10097,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "Ieslēgtie Mainīgie:"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9436,7 +10213,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9444,7 +10221,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9452,11 +10229,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9530,8 +10307,9 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
-msgstr ""
+#, fuzzy
+msgid "Invalid project name."
+msgstr "Nederīgs grupas nosaukums."
#: editor/project_manager.cpp
msgid "Couldn't create folder."
@@ -9564,6 +10342,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Kļūda atverot failu arhÄ«vu, nav ZIP formÄtÄ."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Sekojošie faili netika izvilkti no paketes:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Pakete instalēta sekmīgi!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9708,15 +10498,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9744,7 +10530,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Projekta DibinÄtÄji"
#: editor/project_manager.cpp
@@ -9757,10 +10543,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Projekta DibinÄtÄji"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Projekta DibinÄtÄji"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projekta DibinÄtÄji"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9770,11 +10571,25 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Projekta DibinÄtÄji"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Noņemt Punktu"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Noņemt"
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr "Par"
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9782,6 +10597,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9792,8 +10615,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Projekta DibinÄtÄji"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9803,6 +10631,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9844,6 +10676,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9983,19 +10819,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Pievienot PÄreju"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10266,6 +11103,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10432,11 +11273,29 @@ msgid "Delete node \"%s\"?"
msgstr "Izdzēst mezglu \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10493,6 +11352,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10540,10 +11403,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10819,6 +11678,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10890,6 +11755,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11174,6 +12043,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11217,6 +12094,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Visa Izvēle"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11462,6 +12344,16 @@ msgstr "Pievienot Izejas Pieslēgvietu"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "Nomainīt %s Tipu"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Izmainīt masīva vērtību"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr ""
"Nederīgs nosaukums. Nedrīkst sadurties ar eksistējošu iebūvēto tipa "
@@ -11575,6 +12467,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Pievienot Mezglus..."
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11800,10 +12697,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11833,6 +12726,36 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Instalēt..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "IelÄdÄ“t..."
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11929,6 +12852,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11941,6 +12900,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11955,6 +12918,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11974,11 +12950,51 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "AnimÄcija netika atrasta: '%s'"
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Pievienot Mezglus..."
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12007,27 +13023,52 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Nederīgs Identifikators:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12381,6 +13422,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12450,12 +13498,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12504,6 +13604,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "AnimÄcija netika atrasta: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12655,21 +13759,43 @@ msgid "Invalid comparison function for that type."
msgstr "Nederīgs fonta izmērs."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Package Contents:"
+#~ msgstr "Paketes Saturs:"
+
+#~ msgid "Class Options"
+#~ msgstr "Klases Iespējas"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "AnimÄcijas atskaņotÄjs nevar animÄ“t pats sevi, tikai citi spÄ“lÄ“tÄji."
diff --git a/editor/translations/mi.po b/editor/translations/mi.po
index 36a93be0ee..021c55f38b 100644
--- a/editor/translations/mi.po
+++ b/editor/translations/mi.po
@@ -501,7 +501,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -527,7 +528,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -548,6 +550,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -564,6 +570,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -612,7 +622,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -698,12 +708,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -758,11 +770,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -812,6 +822,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -881,7 +892,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -896,6 +907,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -917,8 +936,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -991,16 +1010,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1045,7 +1066,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1166,37 +1187,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1204,7 +1229,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1268,7 +1293,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1348,7 +1373,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1435,6 +1460,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1450,16 +1483,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1475,7 +1508,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1614,7 +1647,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1646,15 +1719,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1672,7 +1745,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1680,17 +1753,23 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+msgid "Create Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Remove Profile"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1699,19 +1778,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1735,7 +1814,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1789,9 +1868,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1872,8 +1952,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1944,7 +2023,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2029,7 +2108,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2045,8 +2124,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2062,7 +2142,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2126,7 +2206,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2320,18 +2401,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2501,7 +2586,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2682,6 +2767,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2814,13 +2903,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2828,6 +2916,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2836,7 +2928,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2933,6 +3025,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2959,7 +3059,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3000,6 +3100,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3031,6 +3135,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3055,21 +3163,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3077,11 +3182,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3101,6 +3206,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3142,12 +3257,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3165,22 +3274,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3194,37 +3326,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3259,7 +3374,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3279,64 +3394,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3344,7 +3465,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3354,135 +3479,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Other Installed Versions:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3608,22 +3764,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3631,6 +3813,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3710,10 +3896,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3934,52 +4116,49 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
+msgid "Paste Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -3995,7 +4174,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4003,6 +4186,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4030,6 +4217,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4229,7 +4425,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4443,6 +4639,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4779,10 +4980,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4791,15 +5000,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4827,6 +5040,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4927,7 +5144,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4970,6 +5191,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4978,8 +5203,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5213,15 +5438,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5275,6 +5501,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5286,19 +5513,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5530,6 +5763,14 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5542,6 +5783,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5782,6 +6063,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5814,7 +6099,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5873,13 +6158,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5933,7 +6230,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6205,7 +6501,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6509,6 +6806,22 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6712,7 +7025,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6743,6 +7056,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6865,8 +7183,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6899,10 +7217,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7054,6 +7368,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7074,39 +7407,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Vertices:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7262,6 +7599,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7277,6 +7618,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7290,7 +7635,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7298,18 +7643,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7406,6 +7748,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7695,11 +8041,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7720,7 +8061,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7728,156 +8069,520 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8046,6 +8751,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8362,11 +9071,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9186,7 +9890,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9301,7 +10005,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9309,7 +10013,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9317,11 +10021,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9394,7 +10098,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9428,6 +10132,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9572,15 +10288,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9607,7 +10319,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9619,10 +10331,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9631,11 +10355,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9643,6 +10379,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9653,8 +10397,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9664,6 +10412,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9705,6 +10457,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9844,7 +10600,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9852,11 +10608,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10124,6 +10880,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10286,11 +11046,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10346,6 +11124,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10392,10 +11174,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10666,6 +11444,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10734,6 +11518,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11017,6 +11805,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11058,6 +11854,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11300,6 +12100,14 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11408,6 +12216,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11631,10 +12443,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11664,6 +12472,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11760,6 +12596,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11772,6 +12644,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11786,6 +12662,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11805,11 +12694,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11838,27 +12765,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12206,6 +13157,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12275,12 +13233,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12329,6 +13339,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12476,15 +13490,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/mk.po b/editor/translations/mk.po
index 7e5aa06f3c..a437ddf1c7 100644
--- a/editor/translations/mk.po
+++ b/editor/translations/mk.po
@@ -508,7 +508,8 @@ msgstr "Секунди"
msgid "FPS"
msgstr "ФПС"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -534,7 +535,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -555,6 +557,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -571,6 +577,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -619,7 +629,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -705,12 +715,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -765,11 +777,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -819,6 +829,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -888,7 +899,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -903,6 +914,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -924,8 +943,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -998,16 +1017,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1052,7 +1073,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1173,37 +1194,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1211,7 +1236,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1275,7 +1300,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1355,7 +1380,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1442,6 +1467,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1457,16 +1490,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1482,7 +1515,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1621,7 +1654,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1653,15 +1726,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1679,7 +1752,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1687,17 +1760,24 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+msgid "Create Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Избриши невалидни клучеви"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1706,19 +1786,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1742,7 +1822,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1796,9 +1876,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1879,8 +1960,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1951,7 +2031,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2036,7 +2116,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2052,8 +2132,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2069,7 +2150,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2133,7 +2214,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2327,18 +2409,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2508,7 +2594,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2689,6 +2775,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2821,13 +2911,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2835,6 +2924,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2843,7 +2936,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2940,6 +3033,15 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Ðе е оÑновано на реÑÑƒÑ€Ñ Ñ„Ð°Ñ˜Ð»"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2966,7 +3068,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3007,6 +3109,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3038,6 +3144,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3062,21 +3172,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3084,11 +3191,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3108,6 +3215,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3149,12 +3266,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3172,22 +3283,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3201,37 +3335,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3266,7 +3383,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3286,64 +3403,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3351,7 +3474,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3361,135 +3488,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3615,22 +3773,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3638,6 +3822,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3717,10 +3905,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3941,52 +4125,51 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "СвојÑтва на анимацијата."
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "СвојÑтва на анимацијата."
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4002,7 +4185,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4010,6 +4197,11 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "СвојÑтва на анимацијата."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4037,6 +4229,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4236,7 +4437,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4450,6 +4651,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4786,10 +4992,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4798,15 +5012,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4834,6 +5052,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4934,7 +5156,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4977,6 +5203,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4985,8 +5215,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5220,15 +5450,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5282,6 +5513,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5293,19 +5525,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5537,6 +5775,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "ВнеÑи клуч тука"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5549,6 +5796,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5789,6 +6076,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5821,7 +6112,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5880,13 +6171,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5940,7 +6243,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6212,7 +6514,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6516,6 +6819,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "ПромеÑти Безиер Точка"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "ПромеÑти Безиер Точка"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6719,7 +7040,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6750,6 +7071,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6872,8 +7198,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6906,10 +7232,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7061,6 +7383,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7081,39 +7422,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7269,6 +7614,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7284,6 +7633,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7297,7 +7650,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7305,18 +7658,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7413,6 +7763,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7702,11 +8056,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7727,7 +8076,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7735,156 +8084,520 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Edit Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Types:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8053,6 +8766,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8369,11 +9086,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9193,7 +9905,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9308,7 +10020,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9316,7 +10028,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9324,11 +10036,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9401,7 +10113,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9435,6 +10147,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9579,15 +10303,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9614,7 +10334,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9626,10 +10346,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9638,11 +10370,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9650,6 +10394,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9660,8 +10412,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9671,6 +10427,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9712,6 +10472,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9851,7 +10615,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9859,11 +10623,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10131,6 +10895,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10293,11 +11061,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10353,6 +11139,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10399,10 +11189,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10673,6 +11459,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10741,6 +11533,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11024,6 +11820,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11065,6 +11869,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11307,6 +12115,14 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11415,6 +12231,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11638,10 +12458,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11671,6 +12487,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11767,6 +12611,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11779,6 +12659,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11793,6 +12677,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11812,11 +12709,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11845,27 +12780,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12213,6 +13172,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12282,12 +13248,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12336,6 +13354,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12483,15 +13505,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/ml.po b/editor/translations/ml.po
index 3919011ade..8213c2251c 100644
--- a/editor/translations/ml.po
+++ b/editor/translations/ml.po
@@ -511,7 +511,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -537,7 +538,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -558,6 +560,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -574,6 +580,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -622,7 +632,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -708,12 +718,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -768,11 +780,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -822,6 +832,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -891,7 +902,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -906,6 +917,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -927,8 +946,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1001,16 +1020,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1055,7 +1076,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1176,37 +1197,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1214,7 +1239,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1278,8 +1303,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•ൾ:"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1358,7 +1384,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1445,6 +1471,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1460,16 +1494,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1485,7 +1519,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1624,7 +1658,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1656,15 +1730,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1682,7 +1756,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1690,17 +1764,23 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+msgid "Create Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Remove Profile"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1709,19 +1789,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1745,7 +1825,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1799,9 +1879,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1882,8 +1963,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1954,7 +2034,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2040,7 +2120,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2057,8 +2137,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2074,7 +2155,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2138,7 +2219,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2332,18 +2414,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2513,7 +2599,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2694,6 +2780,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2826,13 +2916,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2840,6 +2929,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2848,7 +2941,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2945,6 +3038,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2971,7 +3072,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3012,6 +3113,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3043,6 +3148,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3067,21 +3176,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3089,11 +3195,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3113,6 +3219,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3154,12 +3270,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3177,22 +3287,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3206,37 +3339,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3271,7 +3387,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3291,64 +3407,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Cannot remove temporary file:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3356,7 +3478,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3366,135 +3492,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3620,22 +3777,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3643,6 +3826,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3722,10 +3909,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3946,52 +4129,50 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "à´—àµà´£à´‚ നോകàµà´•àµà´•"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
+msgid "Paste Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4007,7 +4188,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4015,6 +4200,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4042,6 +4231,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4241,7 +4439,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4458,6 +4656,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4794,10 +4997,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4806,15 +5017,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4842,6 +5057,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4942,7 +5161,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4985,6 +5208,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4993,8 +5220,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5228,15 +5455,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5290,6 +5518,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5301,19 +5530,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5546,6 +5781,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "സൂചിക ഇവിടെയിടàµà´•"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5558,6 +5802,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5798,6 +6082,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5830,7 +6118,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5889,13 +6177,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5949,7 +6249,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6221,7 +6520,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6525,6 +6825,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "ബെസിയർ ബിനàµà´¦àµ നീകàµà´•àµà´•"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "ബെസിയർ ബിനàµà´¦àµ നീകàµà´•àµà´•"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6728,7 +7046,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6759,6 +7077,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6881,8 +7204,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6915,10 +7238,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7070,6 +7389,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7090,39 +7428,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Vertices:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7278,6 +7620,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7293,6 +7639,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7306,7 +7656,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7314,18 +7664,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7422,6 +7769,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7711,11 +8062,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7736,7 +8082,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7744,156 +8090,520 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8062,6 +8772,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8379,11 +9093,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9203,7 +9912,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9318,7 +10027,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9326,7 +10035,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9334,11 +10043,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9411,7 +10120,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9445,6 +10154,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9589,15 +10310,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9624,7 +10341,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9636,10 +10353,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9648,11 +10377,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9660,6 +10401,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9670,8 +10419,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9681,6 +10434,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9722,6 +10479,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9861,7 +10622,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9869,11 +10630,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10141,6 +10902,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10303,11 +11068,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10363,6 +11146,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10409,10 +11196,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10683,6 +11466,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10751,6 +11540,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11034,6 +11827,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11075,6 +11876,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11317,6 +12122,15 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "നോകàµà´•ലിൻറെ വഴി മാറàµà´±àµà´•"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11425,6 +12239,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11649,10 +12467,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11682,6 +12496,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11778,6 +12620,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11790,6 +12668,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11804,6 +12686,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11823,11 +12718,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11856,27 +12789,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Could not create HTTP server directory:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12224,6 +13181,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12293,12 +13257,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12347,6 +13363,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12494,15 +13514,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/mr.po b/editor/translations/mr.po
index 4d81595cb1..b459ca23f3 100644
--- a/editor/translations/mr.po
+++ b/editor/translations/mr.po
@@ -508,7 +508,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -534,7 +535,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -555,6 +557,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -571,6 +577,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -619,7 +629,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -705,12 +715,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -765,11 +777,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -819,6 +829,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -888,7 +899,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -903,6 +914,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -924,8 +943,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -998,16 +1017,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1052,7 +1073,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1173,37 +1194,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Asset \"%s\" installed successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1211,7 +1236,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1275,7 +1300,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1355,7 +1380,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1442,6 +1467,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1457,16 +1490,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1482,7 +1515,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1621,7 +1654,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1653,15 +1726,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1679,7 +1752,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1687,17 +1760,23 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+msgid "Create Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Remove Profile"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1706,19 +1785,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1742,7 +1821,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1796,9 +1875,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1879,8 +1959,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1951,7 +2030,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2036,7 +2115,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2052,8 +2131,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2069,7 +2149,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2133,7 +2213,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2327,18 +2408,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2508,7 +2593,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2689,6 +2774,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2821,13 +2910,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2835,6 +2923,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2843,7 +2935,8 @@ msgid "Community"
msgstr "समà¥à¤¦à¤¾à¤¯"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "आमचà¥à¤¯à¤¾ बदà¥à¤¦à¤²"
#: editor/editor_node.cpp
@@ -2940,6 +3033,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2966,7 +3067,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3007,6 +3108,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3038,6 +3143,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3062,21 +3171,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3084,11 +3190,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3108,6 +3214,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3149,12 +3265,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3172,22 +3282,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3201,37 +3334,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3266,7 +3382,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3286,64 +3402,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3351,7 +3473,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3361,135 +3487,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Other Installed Versions:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3615,22 +3772,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3638,6 +3821,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3717,10 +3904,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3941,52 +4124,49 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
+msgid "Paste Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4002,7 +4182,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4010,6 +4194,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4037,6 +4225,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4236,7 +4433,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4450,6 +4647,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4786,10 +4988,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4798,15 +5008,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4834,6 +5048,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4934,7 +5152,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4977,6 +5199,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4985,8 +5211,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5220,15 +5446,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5282,6 +5509,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5293,19 +5521,27 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "निवडलेले नोड किंवा संकà¥à¤°à¤®à¤£ काढा."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "निवडलेले नोड किंवा संकà¥à¤°à¤®à¤£ काढा."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5537,6 +5773,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "नोड जोडा"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5549,6 +5794,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5789,6 +6074,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5821,7 +6110,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5880,13 +6169,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5940,7 +6241,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6212,7 +6512,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6516,6 +6817,22 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6719,7 +7036,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6750,6 +7067,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6872,8 +7194,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6906,10 +7228,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7061,6 +7379,26 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "सà¥à¤•ेल:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7081,39 +7419,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Vertices:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7269,6 +7611,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7284,6 +7630,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7297,7 +7647,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7305,18 +7655,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7413,6 +7760,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7702,11 +8053,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7727,164 +8073,530 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "संकà¥à¤°à¤®à¤£: "
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Add Font Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Add Icon Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "नोड जोडा"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8053,6 +8765,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8369,11 +9085,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9194,7 +9905,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9309,7 +10020,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9317,7 +10028,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9325,11 +10036,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9402,7 +10113,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9436,6 +10147,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9580,15 +10303,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9615,7 +10334,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9627,10 +10346,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9639,11 +10370,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr "आमचà¥à¤¯à¤¾ बदà¥à¤¦à¤²"
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9651,6 +10394,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9661,8 +10412,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9672,6 +10427,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9713,6 +10472,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9852,19 +10615,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "संकà¥à¤°à¤®à¤£ जोडा"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10132,6 +10896,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10294,11 +11062,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10354,6 +11140,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10400,10 +11190,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10674,6 +11460,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10742,6 +11534,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11025,6 +11821,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11066,6 +11870,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11308,6 +12116,14 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11416,6 +12232,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "नोड जोडा"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11639,10 +12460,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11672,6 +12489,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11768,6 +12613,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11780,6 +12661,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11794,6 +12679,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11813,11 +12711,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11846,27 +12782,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Could not create HTTP server directory:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12214,6 +13174,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12283,12 +13250,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12337,6 +13356,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12484,15 +13507,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/ms.po b/editor/translations/ms.po
index 6226d644a3..51a09d2e24 100644
--- a/editor/translations/ms.po
+++ b/editor/translations/ms.po
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-05-29 13:49+0000\n"
+"PO-Revision-Date: 2021-08-02 02:00+0000\n"
"Last-Translator: Keviindran Ramachandran <keviinx@yahoo.com>\n"
"Language-Team: Malay <https://hosted.weblate.org/projects/godot-engine/godot/"
"ms/>\n"
@@ -23,7 +23,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.7-dev\n"
+"X-Generator: Weblate 4.8-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -459,7 +459,7 @@ msgstr "Kunci Gerak Anim"
#: editor/animation_track_editor.cpp
#: modules/visual_script/visual_script_editor.cpp
msgid "Clipboard is empty!"
-msgstr ""
+msgstr "Papan klip kosong!"
#: editor/animation_track_editor.cpp
msgid "Paste Tracks"
@@ -531,7 +531,8 @@ msgstr "Saat"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -557,7 +558,8 @@ msgstr "Pemilihan Skala"
msgid "Scale From Cursor"
msgstr "Skala Dari Kursor"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Menduakan Pilihan"
@@ -578,6 +580,10 @@ msgid "Go to Previous Step"
msgstr "Pergi ke Langkah Sebelumnya"
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimumkan Animasi"
@@ -594,6 +600,11 @@ msgid "Use Bezier Curves"
msgstr "Guna Lengkung Bezier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Tampal Trek"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Pengoptimum Anim."
@@ -642,7 +653,7 @@ msgid "Select Tracks to Copy"
msgstr "Pilih Trek untuk Disalin"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -728,12 +739,14 @@ msgid "Toggle Scripts Panel"
msgstr "Togol Panel Skrip"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zum Masuk"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -790,11 +803,9 @@ msgid "Add"
msgstr "Tambah"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -846,6 +857,7 @@ msgstr "Tidak dapat menyambungkan isyarat"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -918,7 +930,8 @@ msgid "Edit..."
msgstr "Edit..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Pergi ke Kaedah"
#: editor/create_dialog.cpp
@@ -933,6 +946,14 @@ msgstr "Ubah"
msgid "Create New %s"
msgstr "Cipta %s Baru"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -954,8 +975,8 @@ msgstr "Cari:"
msgid "Matches:"
msgstr "Padanan:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1031,20 +1052,24 @@ msgid "Owners Of:"
msgstr "Pemilik:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Alih keluar fail terpilih dari projek? (Tidak boleh buat asal)\n"
"Anda boleh mencari fail yang dikeluarkan dalam tong sampah untuk "
"memulihkannya."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Fail yang akan dikeluarkan diperlukan oleh sumber lain agar dapat "
"berfungsi.\n"
@@ -1094,7 +1119,7 @@ msgstr "Penjelajah Sumber Yatim"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1122,7 +1147,7 @@ msgstr "Terima kasih dari komuniti Godot!"
#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp
msgid "Click to copy."
-msgstr ""
+msgstr "Klik untuk salin."
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
@@ -1219,28 +1244,41 @@ msgstr "Komponen"
msgid "Licenses"
msgstr "Lesen"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "Ralat semasa membuka fail pakej, bukan dalam format ZIP."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Sudah Wujud)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Nyahmampatkan Aset"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Fail berikut gagal diekstrak dari pakej:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Dan sebanyak %s fail."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Pakej berjaya dipasang!"
#: editor/editor_asset_installer.cpp
@@ -1248,16 +1286,13 @@ msgstr "Pakej berjaya dipasang!"
msgid "Success!"
msgstr "Berjaya!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Kandungan Pakej:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Pasang"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Pemasang Pakej"
#: editor/editor_audio_buses.cpp
@@ -1321,7 +1356,8 @@ msgid "Bypass"
msgstr "Pintas"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Pilihan bas"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1401,7 +1437,7 @@ msgstr "Tambah Bas"
msgid "Add a new Audio Bus to this layout."
msgstr "Tambah Bas Audio baru ke susun atur ini."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1489,6 +1525,14 @@ msgid "Can't add autoload:"
msgstr "Tidak boleh menambahkan autoload:"
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Tambah AutoLoad"
@@ -1504,16 +1548,16 @@ msgid "Node Name:"
msgstr "Nama Nod:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nama"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+msgid "Global Variable"
+msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Tampal Param"
@@ -1529,7 +1573,7 @@ msgstr "Menyimpan perubahan tempatan..."
msgid "Updating scene..."
msgstr "Mengemaskini adegan..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[kosong]"
@@ -1624,16 +1668,15 @@ msgstr ""
"GLES3. Aktifkan 'Import Etc 2' atau 'Import Pvrtc' dalam Tetapan Projek."
#: editor/editor_export.cpp
-#, fuzzy
msgid ""
"Target platform requires 'PVRTC' texture compression for the driver fallback "
"to GLES2.\n"
"Enable 'Import Pvrtc' in Project Settings, or disable 'Driver Fallback "
"Enabled'."
msgstr ""
-"Platform sasaran memerlukan pemampatan tekstur 'ETC' untuk sandaran pemandu "
+"Platform sasaran memerlukan pemampatan tekstur 'PVRTC' untuk sandaran driver "
"ke GLES2.\n"
-"Aktifkan 'Import Etc' dalam Tetapan Projek, atau nyahaktifkan 'Driver "
+"Aktifkan 'Import Pvrtc' dalam Tetapan Projek, atau nyahaktifkan 'Driver "
"Fallback Enabled'."
#: editor/editor_export.cpp platform/android/export/export.cpp
@@ -1686,8 +1729,49 @@ msgid "Import Dock"
msgstr "Import Dok"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Padamkan profil '%s'? (tidak boleh buat asal)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Semasa)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1718,15 +1802,18 @@ msgid "Enable Contextual Editor"
msgstr "Aktifkan Editor Kontekstual"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Ciri-ciri Diaktifkan:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Tutup Semua Sifat-sifat"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+#, fuzzy
+msgid "Main Features:"
msgstr "Ciri Diaktifkan:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Kelas Diaktifkan:"
#: editor/editor_feature_profile.cpp
@@ -1746,25 +1833,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Ralat menyimpan profil ke laluan: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Nyahtetap"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Set Semula ke Lalai"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Profil Semasa:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Buat Semasa"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Padam Profil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Baru"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Buang Trek Anim"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Profil yang ada:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Buat Semasa"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "import"
@@ -1773,20 +1869,22 @@ msgid "Export"
msgstr "Eksport"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Profil yang ada:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Profil Semasa:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Pilihan Kelas"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Pilihan Kelas:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Nama profil baru:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Padam Profil"
+msgid "New profile name:"
+msgstr "Nama profil baru:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1809,7 +1907,8 @@ msgid "Select Current Folder"
msgstr "Pilih Folder Semasa"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Fail Wujud, Tulis Ganti?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1863,9 +1962,10 @@ msgid "Open a File or Directory"
msgstr "Buka Fail atau Direktori"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Simpan"
@@ -1946,8 +2046,7 @@ msgid "Directories & Files:"
msgstr "Direktori & Fail:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Pratonton:"
@@ -2020,7 +2119,7 @@ msgstr "Sifat Tema"
msgid "Enumerations"
msgstr "Penghitungan"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Pemalar"
@@ -2109,7 +2208,7 @@ msgstr "Kaedah"
msgid "Signal"
msgstr "Isyarat"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Pemalar"
@@ -2125,9 +2224,10 @@ msgstr "Sifat Tema"
msgid "Property:"
msgstr "Sifat:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Tetapkan"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2142,7 +2242,7 @@ msgid "Copy Selection"
msgstr "Salin Pilihan"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2206,7 +2306,8 @@ msgid "Imported resources can't be saved."
msgstr "Sumber yang diimport tidak dapat disimpan."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2335,9 +2436,8 @@ msgid "Layout name not found!"
msgstr "Nama susun atur tidak dijumpai!"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Restored the Default layout to its base settings."
-msgstr "Tata letak lalai telah dipulihkan ke tetapan asas."
+msgstr "Susun atur lalai telah dipulihkan ke tetapan asas."
#: editor/editor_node.cpp
msgid ""
@@ -2429,18 +2529,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Simpan perubahan pada '%s' sebelum menutup?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Sumber %s yang diubahsuai telah disimpan."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Nod akar diperlukan untuk menyimpan adegan."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Simpan Adegan Sebagai..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Operasi ini tidak boleh dilakukan tanpa adegan."
@@ -2540,24 +2645,22 @@ msgstr ""
"gagal."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Unable to find script field for addon plugin at: '%s'."
-msgstr ""
-"Tidak dapat mencari medan skrip untuk pemalam addon di: 'res://addons/%s'."
+msgstr "Tidak dapat mencari medan skrip untuk plugin addon di: '%s'."
#: editor/editor_node.cpp
msgid "Unable to load addon script from path: '%s'."
msgstr "Tidak dapat memuatkan skrip addon dari laluan: '%s'."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"Unable to load addon script from path: '%s'. This might be due to a code "
"error in that script.\n"
"Disabling the addon at '%s' to prevent further errors."
msgstr ""
-"Tidak dapat memuat skrip addon dari laluan: '%s' Nampaknya terdapat ralat "
-"dalam kod, sila periksa sintaksnya."
+"Tidak dapat memuat skrip addon dari laluan: '%s'. Ini mungkin disebabkan "
+"oleh kod ralat dalam skrip tersebut.\n"
+"Menyahdayakan addon pada '%s' untuk mengelakkan ralat selanjutnya."
#: editor/editor_node.cpp
msgid ""
@@ -2639,7 +2742,7 @@ msgstr "Padam Susun Atur"
msgid "Default"
msgstr "Lalai"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Tunjukkan dalam FileSystem"
@@ -2709,9 +2812,8 @@ msgid "Go to previously opened scene."
msgstr "Pergi ke adegan yang dibuka sebelum ini."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Copy Text"
-msgstr "Semua Pilihan"
+msgstr "Salin Teks"
#: editor/editor_node.cpp
msgid "Next tab"
@@ -2742,22 +2844,18 @@ msgid "Open Scene..."
msgstr "Buka Adegan..."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Recent"
msgstr "Buka Terkini"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save Scene"
msgstr "Simpan Adegan"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save All Scenes"
-msgstr "Simpan Semua Adegan"
+msgstr "Simpan Semua Adegan-adegan"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Convert To..."
msgstr "Tukar Kepada..."
@@ -2776,7 +2874,6 @@ msgstr "Buat Asal"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
msgid "Redo"
msgstr "Buat Semula"
@@ -2786,7 +2883,6 @@ msgstr "Pelbagai projek atau alatan seluruh adegan."
#: editor/editor_node.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Project"
msgstr "Projek"
@@ -2795,22 +2891,18 @@ msgid "Project Settings..."
msgstr "Tetapan Projek..."
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Version Control"
msgstr "Kawalan Versi"
#: editor/editor_node.cpp editor/plugins/version_control_editor_plugin.cpp
-#, fuzzy
msgid "Set Up Version Control"
msgstr "Sediakan Kawalan Versi"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Shut Down Version Control"
msgstr "Tutup Kawalan Versi"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Export..."
msgstr "Eksport..."
@@ -2819,7 +2911,6 @@ msgid "Install Android Build Template..."
msgstr "Pasang Templat Binaan Android..."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Data Folder"
msgstr "Buka Folder Data Projek"
@@ -2833,19 +2924,21 @@ msgstr "Penjelajah Sumber Yatim..."
#: editor/editor_node.cpp
#, fuzzy
+msgid "Reload Current Project"
+msgstr "Profil Semasa:"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Keluar ke Senarai Projek"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/project_export.cpp
-#, fuzzy
msgid "Debug"
msgstr "Nyahpepijat"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Deploy with Remote Debug"
-msgstr "Gunakan Nyahpepijat Jauh"
+msgstr "Gunakan Nyahpepijat Jarak Jauh"
#: editor/editor_node.cpp
msgid ""
@@ -2869,7 +2962,6 @@ msgid "Small Deploy with Network Filesystem"
msgstr "Penggunaan Kecil dengan Sistem Fail Rangkaian"
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"When this option is enabled, using one-click deploy for Android will only "
"export an executable without the project data.\n"
@@ -2878,15 +2970,14 @@ msgid ""
"On Android, deploying will use the USB cable for faster performance. This "
"option speeds up testing for projects with large assets."
msgstr ""
-"Apabila pilihan ini diaktifkan, menggunakan satu klik untuk Android hanya "
-"akan mengeksport yang dapat dilaksanakan tanpa data projek.\n"
+"Apabila pilihan ini diaktifkan, menggunakan deploy satu klik untuk Android "
+"hanya akan mengeksport executable tanpa data projek.\n"
"Sistem fail akan disediakan dari projek oleh editor melalui rangkaian.\n"
-"Pada Android, penggunaan akan menggunakan kabel USB untuk prestasi yang "
-"lebih pantas. Pilihan ini mempercepat pengujian untuk projek dengan aset "
-"besar."
+"Pada Android, proses deploy akan menggunakan kabel USB untuk prestasi yang "
+"lebih pantas. Pilihan ini mempercepatkan pengujian untuk projek-projek "
+"dengan aset besar."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Visible Collision Shapes"
msgstr "Bentuk Perlanggaran Yang Boleh Dilihat"
@@ -2899,18 +2990,16 @@ msgstr ""
"2D dan 3D) akan dapat dilihat dalam projek yang sedang berjalan."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Visible Navigation"
msgstr "Navigasi Yang Boleh Dilihat"
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"When this option is enabled, navigation meshes and polygons will be visible "
"in the running project."
msgstr ""
-"Apabila pilihan ini diaktifkan, jejaring navigasi dan poligon akan kelihatan "
-"dalam projek yang sedang berjalan."
+"Apabila pilihan ini diaktifkan, jejaring navigasi dan poligon-poligon akan "
+"dapat dilihat dalam projek yang sedang berjalan."
#: editor/editor_node.cpp
msgid "Synchronize Scene Changes"
@@ -2929,7 +3018,6 @@ msgstr ""
"sistem fail rangkaian diaktifkan."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Synchronize Script Changes"
msgstr "Segerakkan Perubahan Skrip"
@@ -2946,7 +3034,6 @@ msgstr ""
"sistem fail rangkaian diaktifkan."
#: editor/editor_node.cpp editor/script_create_dialog.cpp
-#, fuzzy
msgid "Editor"
msgstr "Editor"
@@ -2959,7 +3046,6 @@ msgid "Editor Layout"
msgstr "Editor Susun Atur"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Take Screenshot"
msgstr "Ambil Tangkapan Skrin"
@@ -2968,7 +3054,6 @@ msgid "Screenshots are stored in the Editor Data/Settings Folder."
msgstr "Tangkapan skrin disimpan dalam Folder Data/Tetapan Editor."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle Fullscreen"
msgstr "Togol Skrin Penuh"
@@ -2985,7 +3070,6 @@ msgid "Open Editor Data Folder"
msgstr "Buka Folder Data Editor"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Editor Settings Folder"
msgstr "Buka Folder Tetapan Editor"
@@ -3001,24 +3085,24 @@ msgstr "Urus Templat-templat Eksport..."
msgid "Help"
msgstr "Bantuan"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
+#: editor/editor_node.cpp
#, fuzzy
-msgid "Online Docs"
+msgid "Online Documentation"
msgstr "Dokumen Dalam Talian"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Q&A"
-msgstr "Soal Jawab"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
-#, fuzzy
msgid "Report a Bug"
msgstr "Laporkan Pepijat"
#: editor/editor_node.cpp
-#, fuzzy
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Hantar Maklum Balas Dokumen"
@@ -3027,7 +3111,8 @@ msgid "Community"
msgstr "Komuniti"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Tentang"
#: editor/editor_node.cpp
@@ -3035,12 +3120,10 @@ msgid "Support Godot Development"
msgstr "Sokong Pembangunan Godot"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Play the project."
msgstr "Main projek."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Play"
msgstr "Main"
@@ -3049,9 +3132,8 @@ msgid "Pause the scene execution for debugging."
msgstr "Jeda pelaksanaan adegan untuk nyahpepijat."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Pause Scene"
-msgstr "Jeda Adegan"
+msgstr "Hentikan Sementara Adegan"
#: editor/editor_node.cpp
msgid "Stop the scene."
@@ -3066,14 +3148,12 @@ msgid "Play Scene"
msgstr "Main Adegan"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Play custom scene"
-msgstr "Main adegan tersuai"
+msgstr "Mainkan adegan tersuai"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Play Custom Scene"
-msgstr "Main Adegan Tersuai"
+msgstr "Mainkan Adegan Tersuai"
#: editor/editor_node.cpp
msgid "Changing the video driver requires restarting the editor."
@@ -3097,21 +3177,18 @@ msgid "Update When Changed"
msgstr "Kemas Kini Apabila Diubah"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Hide Update Spinner"
-msgstr "Sembunyi Spinner Kemas Kini"
+msgstr "Sembunyikan Spinner Kemas Kini"
#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "SistemFail"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Inspector"
msgstr "Pemeriksa"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Expand Bottom Panel"
msgstr "Kembangkan Panel Bawah"
@@ -3120,7 +3197,6 @@ msgid "Output"
msgstr "Keluaran"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Don't Save"
msgstr "Jangan Simpan"
@@ -3133,6 +3209,15 @@ msgid "Manage Templates"
msgstr "Urus Templat-templat"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Pasang Dari Fail"
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3164,17 +3249,14 @@ msgstr ""
"operasi ini semula."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Import Templates From ZIP File"
msgstr "Import Templat Dari Fail ZIP"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Template Package"
msgstr "Pakej Templat"
-#: editor/editor_node.cpp
-#, fuzzy
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Eksport Perpustakaan"
@@ -3183,7 +3265,6 @@ msgid "Merge With Existing"
msgstr "Gabung Dengan Sedia Ada"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open & Run a Script"
msgstr "Buka & Jalankan Skrip"
@@ -3197,18 +3278,15 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
-#, fuzzy
msgid "Reload"
msgstr "Muatkan Semula"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
#: editor/plugins/shader_editor_plugin.cpp
-#, fuzzy
msgid "Resave"
-msgstr "Simpan semula"
+msgstr "Simpan Semula"
#: editor/editor_node.cpp
-#, fuzzy
msgid "New Inherited"
msgstr "Baru Diwarisi"
@@ -3217,42 +3295,39 @@ msgid "Load Errors"
msgstr "Muatkan Ralat-ralat"
#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Select"
msgstr "Pilih"
#: editor/editor_node.cpp
#, fuzzy
+msgid "Select Current"
+msgstr "Pilih Folder Semasa"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Buka Editor 2D"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
msgstr "Buka Editor 3D"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
msgstr "Buka Editor Skrip"
#: editor/editor_node.cpp editor/project_manager.cpp
-#, fuzzy
msgid "Open Asset Library"
msgstr "Buka Perpustakaan Aset"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
msgstr "Buka Editor seterusnya"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the previous Editor"
-msgstr "Buka Editor terdahulu"
+msgstr "Buka Editor sebelumnya"
#: editor/editor_node.h
-#, fuzzy
msgid "Warning!"
msgstr "Amaran!"
@@ -3260,17 +3335,20 @@ msgstr "Amaran!"
msgid "No sub-resources found."
msgstr "Tiada sub-sumber dijumpai."
-#: editor/editor_plugin.cpp
+#: editor/editor_path.cpp
#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Tiada sub-sumber dijumpai."
+
+#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
-msgstr "Mencipta Pratonton Mesh"
+msgstr "Membuat Pratonton Mesh"
#: editor/editor_plugin.cpp
msgid "Thumbnail..."
msgstr "Gambar kecil..."
#: editor/editor_plugin_settings.cpp
-#, fuzzy
msgid "Main Script:"
msgstr "Skrip Utama:"
@@ -3283,29 +3361,24 @@ msgid "Installed Plugins:"
msgstr "Plugin yang Dipasang:"
#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#, fuzzy
msgid "Update"
msgstr "Kemas kini"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/editor_plugin_settings.cpp
#, fuzzy
-msgid "Version:"
+msgid "Version"
msgstr "Versi:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#, fuzzy
-msgid "Author:"
-msgstr "Pengarang:"
-
#: editor/editor_plugin_settings.cpp
#, fuzzy
-msgid "Status:"
-msgstr "Status:"
+msgid "Author"
+msgstr "Pengarang"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Sunting:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
@@ -3313,46 +3386,49 @@ msgstr "Ukur:"
#: editor/editor_profiler.cpp
#, fuzzy
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr "Masa Bingkai (saat)"
#: editor/editor_profiler.cpp
#, fuzzy
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr "Masa Purata (saat)"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Frame %"
msgstr "Bingkai %"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Physics Frame %"
msgstr "Bingkai Fizik %"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Inclusive"
msgstr "Inklusif"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Self"
msgstr "Diri"
#: editor/editor_profiler.cpp
-#, fuzzy
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Bingkai #:"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Time"
msgstr "Masa"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Calls"
msgstr "Panggilan"
@@ -3365,47 +3441,33 @@ msgid "On"
msgstr "Hidupkan"
#: editor/editor_properties.cpp
-#, fuzzy
msgid "Layer"
msgstr "Lapisan"
#: editor/editor_properties.cpp
-#, fuzzy
msgid "Bit %d, value %d"
msgstr "Bit %d, nilai %d"
#: editor/editor_properties.cpp
-#, fuzzy
msgid "[Empty]"
msgstr "[Kosong]"
#: editor/editor_properties.cpp editor/plugins/root_motion_editor_plugin.cpp
-#, fuzzy
msgid "Assign..."
msgstr "Menguntukkan..."
#: editor/editor_properties.cpp
-#, fuzzy
msgid "Invalid RID"
msgstr "RID tidak sah"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Sumber yang dipilih (%s) tidak sesuai dengan jenis yang diharapkan untuk "
-"sifat ini (%s)."
-
-#: editor/editor_properties.cpp
-#, fuzzy
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
-"Tidak dapat mencipta ViewportTexture pada sumber yang disimpan sebagai "
-"fail.\n"
-"Sumber perlu tergolong dalam adegan."
+"Tidak dapat mencipta ViewportTexture pada sumber-sumber yang disimpan "
+"sebagai fail.\n"
+"Sumber perlu tergolong dalam satu adegan."
#: editor/editor_properties.cpp
msgid ""
@@ -3424,57 +3486,14 @@ msgid "Pick a Viewport"
msgstr "Pilih Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "New Script"
-msgstr "Skrip Baru"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "Lanjutkan Skrip"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "New %s"
-msgstr "%s baru"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "Make Unique"
-msgstr "Buat Unik"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-#, fuzzy
-msgid "Paste"
-msgstr "Tampal"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "Convert To %s"
-msgstr "Tukar Kepada %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Selected node is not a Viewport!"
msgstr "Node yang dipilih bukan Viewport!"
#: editor/editor_properties_array_dict.cpp
-#, fuzzy
msgid "Size: "
msgstr "Saiz: "
#: editor/editor_properties_array_dict.cpp
-#, fuzzy
msgid "Page: "
msgstr "Halaman: "
@@ -3484,12 +3503,10 @@ msgid "Remove Item"
msgstr "Keluarkan Item"
#: editor/editor_properties_array_dict.cpp
-#, fuzzy
msgid "New Key:"
msgstr "Kunci Baru:"
#: editor/editor_properties_array_dict.cpp
-#, fuzzy
msgid "New Value:"
msgstr "Nilai Baru:"
@@ -3497,6 +3514,49 @@ msgstr "Nilai Baru:"
msgid "Add Key/Value Pair"
msgstr "Tambah Pasangan Kunci/Nilai"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Sumber yang dipilih (%s) tidak sesuai dengan jenis yang diharapkan untuk "
+"sifat ini (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Buat Unik"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Tampal"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Tukar Kepada %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "%s baru"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Skrip Baru"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Lanjutkan Skrip"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3508,7 +3568,6 @@ msgstr ""
"pratetap yang ada sebagai yang dapat dijalankan."
#: editor/editor_run_script.cpp
-#, fuzzy
msgid "Write your logic in the _run() method."
msgstr "Tulis logik anda dalam kaedah _run()."
@@ -3525,17 +3584,16 @@ msgid "Did you forget the 'tool' keyword?"
msgstr "Adakah anda lupa kata kunci 'tool'?"
#: editor/editor_run_script.cpp
-#, fuzzy
msgid "Couldn't run script:"
msgstr "Tidak dapat menjalankan skrip:"
#: editor/editor_run_script.cpp
-#, fuzzy
msgid "Did you forget the '_run' method?"
msgstr "Adakah anda lupa kaedah '_run'?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Tahan Ctrl untuk bundarkan ke integer. Tahan Shift untuk perubahan yang "
"lebih tepat."
@@ -3545,147 +3603,79 @@ msgid "Select Node(s) to Import"
msgstr "Pilih Nod(Nod-nod) untuk Diimport"
#: editor/editor_sub_scene.cpp editor/project_manager.cpp
-#, fuzzy
msgid "Browse"
msgstr "Layari"
#: editor/editor_sub_scene.cpp
-#, fuzzy
msgid "Scene Path:"
msgstr "Laluan Adegan:"
#: editor/editor_sub_scene.cpp
-#, fuzzy
msgid "Import From Node:"
msgstr "Import Dari Nod:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "Muat turun semula"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Uninstall"
-msgstr "Nyahpasang"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "(Installed)"
-msgstr "(Dipasang)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download"
-msgstr "Muat turun"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "Templat eksport rasmi tidak tersedia untuk binaan pembangunan."
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "(Missing)"
-msgstr "(Hilang)"
+msgid "There are no mirrors available."
+msgstr "Tiada fail '%s'."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "(Current)"
-msgstr "(Semasa)"
-
-#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Retrieving the mirror list..."
msgstr "Mengambil maklumat cermin, sila tunggu..."
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Remove template version '%s'?"
-msgstr "Alih keluar versi templat '%s'?"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Can't open export templates zip."
-msgstr "Tidak dapat membuka zip templat eksport."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Format version.txt tidak sah di dalam templat: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Tiada version.txt dijumpai di dalam templat."
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error creating path for templates:"
-msgstr "Ralat mencipta laluan untuk templat:"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Extracting Export Templates"
-msgstr "Mengekstrak Templat Eksport"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Importing:"
-msgstr "Mengimport:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error getting the list of mirrors."
-msgstr "Ralat mendapatkan senarai cermin."
+msgid "Error requesting URL:"
+msgstr "Ralat semasa meminta URL:"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "Ralat menghuraikan JSON senarai cermin. Sila laporkan isu ini!"
+msgid "Connecting to the mirror..."
+msgstr "Menyambung ke Cermin..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
+msgid "Can't resolve the requested address."
msgstr ""
-"Tiada pautan muat turun ditemui untuk versi ini. Muat turun langsung hanya "
-"tersedia untuk siaran rasmi."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't resolve."
-msgstr "Tidak dapat menyelesaikan."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Can't connect."
+msgid "Can't connect to the mirror."
msgstr "Tidak dapat menyambung."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "No response."
+msgid "No response from the mirror."
msgstr "Tiada jawapan."
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Request Failed."
-msgstr "Permintaan Gagal."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Ubah Hala Gelung."
+msgid "Request ended up in a redirect loop."
+msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Failed:"
-msgstr "Gagal:"
+msgid "Request failed:"
+msgstr "Permintaan Gagal."
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Download Complete."
-msgstr "Muat turun Selesai."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3700,20 +3690,31 @@ msgstr ""
"Arkib templat yang bermasalah boleh didapati di '%s'."
#: editor/export_template_manager.cpp
+msgid "Error getting the list of mirrors."
+msgstr "Ralat mendapatkan senarai cermin-cermin."
+
+#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error requesting URL:"
-msgstr "Ralat semasa meminta URL:"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "Ralat menghuraikan JSON senarai cermin. Sila laporkan isu ini!"
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Menyambung ke Cermin..."
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Tiada pautan muat turun ditemui untuk versi ini. Muat turun langsung hanya "
+"tersedia untuk siaran rasmi."
#: editor/export_template_manager.cpp
msgid "Disconnected"
msgstr "Sambungan terputus"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Resolving"
msgstr "Menyelesaikan"
@@ -3736,7 +3737,6 @@ msgstr "Disambungkan"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
msgid "Requesting..."
msgstr "Meminta..."
@@ -3753,49 +3753,139 @@ msgid "SSL Handshake Error"
msgstr "Ralat Jabat Tangan SSL"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Tidak dapat membuka zip templat eksport."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Format version.txt tidak sah di dalam templat: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Tiada version.txt dijumpai di dalam templat."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Ralat mencipta laluan untuk templat-templat:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Mengekstrak Templat-templat Eksport"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Mengimport:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Alih keluar versi templat '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Nyahmemampatkan Sumber Binaan Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Pengurus Templat Eksport"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versi Terkini:"
#: editor/export_template_manager.cpp
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Installed Versions:"
-msgstr "Versi Yang Dipasang:"
+msgid "Open Folder"
+msgstr "Buka Fail"
#: editor/export_template_manager.cpp
-msgid "Install From File"
-msgstr "Pasang Dari Fail"
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Alih Keluar Templat"
+msgid "Uninstall"
+msgstr "Nyahpasang"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Pilih Fail Templat"
+msgid "Uninstall templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Templat Eksport Godot"
+#, fuzzy
+msgid "Download from:"
+msgstr "Muat turun"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Pengurus Templat Eksport"
+msgid "Download and Install"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Muat Turun Templat-templat"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "Templat eksport rasmi tidak tersedia untuk binaan pembangunan."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Pilih cermin daripada senarai: (Shift+Click: Buka dalam Pelayar)"
+msgid "Install from File"
+msgstr "Pasang Dari Fail"
-#: editor/filesystem_dock.cpp
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Import Templat Dari Fail ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Batal"
+
+#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Tidak dapat membuka zip templat eksport."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Versi-versi Yang Dipasang:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Nyahpasang"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Pilih Fail Templat"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr "Templat Eksport Godot"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Favorites"
msgstr "Kegemaran"
@@ -3806,12 +3896,11 @@ msgstr ""
"manual."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"Importing has been disabled for this file, so it can't be opened for editing."
msgstr ""
-"Pengimportan telah dilumpuhkan untuk fail ini, jadi tidak dapat dibuka untuk "
-"diedit."
+"Pengimportan telah dinyahdayakan untuk fail ini, jadi tidak dapat dibuka "
+"untuk disunting."
#: editor/filesystem_dock.cpp
msgid "Cannot move/rename resources root."
@@ -3929,33 +4018,62 @@ msgstr "Skrip Baru..."
msgid "New Resource..."
msgstr "Sumber Baru..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Kembangkan Semua"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Runtuhkan Semua"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Penduakan..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Cari fail"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Move to Trash"
-msgstr "Pindah Autoload"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Penduakan..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Namakan semula..."
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
-msgstr "Folder/Fail Terdahulu"
+msgstr "Folder/Fail Sebelumnya"
#: editor/filesystem_dock.cpp
msgid "Next Folder/File"
@@ -3989,17 +4107,14 @@ msgstr "Pindah"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/project_manager.cpp editor/rename_dialog.cpp
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Rename"
-msgstr "Namakan semula"
+msgstr "Namakan Semula"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Overwrite"
-msgstr "Tulis ganti"
+msgstr "Tulis Ganti"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Create Scene"
msgstr "Cipta Adegan"
@@ -4040,10 +4155,6 @@ msgstr "Cari..."
msgid "Replace..."
msgstr "Ganti..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Batal"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Cari: "
@@ -4057,24 +4168,20 @@ msgid "Replace all (no undo)"
msgstr "Ganti semua (tiada buat asal)"
#: editor/find_in_files.cpp
-#, fuzzy
msgid "Searching..."
msgstr "Mencari..."
#: editor/find_in_files.cpp
-#, fuzzy
msgid "%d match in %d file."
-msgstr "%d padan."
+msgstr "%d padan dalam fail %d."
#: editor/find_in_files.cpp
-#, fuzzy
msgid "%d matches in %d file."
-msgstr "%d padan."
+msgstr "%d padan dalam fail %d."
#: editor/find_in_files.cpp
-#, fuzzy
msgid "%d matches in %d files."
-msgstr "%d padan."
+msgstr "%d padan dalam fail-fail %d."
#: editor/groups_editor.cpp
msgid "Add to Group"
@@ -4097,9 +4204,8 @@ msgid "Rename Group"
msgstr "Namakan semula Kumpulan"
#: editor/groups_editor.cpp
-#, fuzzy
msgid "Delete Group"
-msgstr "Semua Pilihan"
+msgstr "Padam Kumpulan"
#: editor/groups_editor.cpp editor/node_dock.cpp
msgid "Groups"
@@ -4119,9 +4225,8 @@ msgid "Nodes in Group"
msgstr "Nod-nod dalam Kumpulan"
#: editor/groups_editor.cpp
-#, fuzzy
msgid "Empty groups will be automatically removed."
-msgstr "Kumpulan kosong akan dikeluarkan secara automatik."
+msgstr "Kumpulan-kumpulan kosong akan dikeluarkan secara automatik."
#: editor/groups_editor.cpp
msgid "Group Editor"
@@ -4164,9 +4269,8 @@ msgid "Import with Separate Objects+Materials+Animations"
msgstr "Import dengan Objek+Bahan+Animasi Berasingan"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Multiple Scenes"
-msgstr "Import sebagai Pelbagai Adegan"
+msgstr "Import sebagai Pelbagai Adegan-adegan"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
@@ -4216,18 +4320,16 @@ msgid "Saving..."
msgstr "Menyimpan..."
#: editor/import_defaults_editor.cpp
-#, fuzzy
msgid "Select Importer"
-msgstr "Pilih Nod(Nod-nod) untuk Diimport"
+msgstr "Pilih Pengimport"
#: editor/import_defaults_editor.cpp
msgid "Importer:"
msgstr "Pengimport:"
#: editor/import_defaults_editor.cpp
-#, fuzzy
msgid "Reset to Defaults"
-msgstr "Muatkan Lalai"
+msgstr "Set Semula ke Lalai"
#: editor/import_dock.cpp
msgid "Keep File (No Import)"
@@ -4277,53 +4379,54 @@ msgid "Failed to load resource."
msgstr "Gagal untuk memuatkan sumber."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Kembangkan Semua Sifat-sifat"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Sifat-sifat"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Tutup Semua Sifat-sifat"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Simpan Sebagai..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Sifat-sifat"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Salin Parameter-parameter"
+msgid "Make Sub-Resources Unique"
+msgstr "Buat Sub-Sumber Unik"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Sunting Papan Klip Sumber"
+msgid "Create a new resource in memory and edit it."
+msgstr "Cipta sumber baru dalam ingatan dan suntingnya."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Salin Sumber"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Muatkan sumber sedia ada dari cakera dan suntingnya."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Buat Terbina Dalaman"
+msgid "Save the currently edited resource."
+msgstr "Simpan sumber yang sedang disunting."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Buat Sub-Sumber Unik"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Simpan Sebagai..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Buka dalam Bantuan"
+msgid "Extra resource options."
+msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Cipta sumber baru dalam ingatan dan suntingnya."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Sunting Papan Klip Sumber"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Muatkan sumber sedia ada dari cakera dan suntingnya."
+msgid "Copy Resource"
+msgstr "Salin Sumber"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Simpan sumber yang sedang disunting."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Buat Terbina Dalaman"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4338,14 +4441,23 @@ msgid "History of recently edited objects."
msgstr "Sejarah objek-objek yang baru disunting."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Sifat-sifat objek."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr ""
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Tapis sifat-sifat"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Sifat-sifat objek."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Perubahan mungkin akan hilang!"
@@ -4366,7 +4478,6 @@ msgid "Create a Plugin"
msgstr "Cipta satu Plugin"
#: editor/plugin_config_dialog.cpp
-#, fuzzy
msgid "Plugin Name:"
msgstr "Nama Plugin:"
@@ -4374,6 +4485,15 @@ msgstr "Nama Plugin:"
msgid "Subfolder:"
msgstr "Subfolder:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Pengarang:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versi:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Bahasa:"
@@ -4494,100 +4614,101 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Set the blending position within the space"
msgstr "Tetapkan kedudukan pengadunan dalam ruang"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Select and move points, create points with RMB."
-msgstr ""
+msgstr "Pilih dan pindahkan titik-titik, cipta titik-titik dengan RMB."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp
msgid "Enable snap and show grid."
-msgstr ""
+msgstr "Aktifkan snap dan tunjukkan grid."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Point"
-msgstr ""
+msgstr "Titik"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Open Editor"
-msgstr ""
+msgstr "Buka Editor"
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_state_machine_editor.cpp
msgid "Open Animation Node"
-msgstr ""
+msgstr "Buka Nod Animasi"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Triangle already exists."
-msgstr ""
+msgstr "Segi tiga sudah wujud."
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Add Triangle"
-msgstr "Anim Tambah Trek"
+msgstr "Tambah Segi Tiga"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Change BlendSpace2D Limits"
-msgstr ""
+msgstr "Tukar Had-had BlendSpace2D"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Change BlendSpace2D Labels"
-msgstr ""
+msgstr "Tukar Label-label BlendSpace2D"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Remove BlendSpace2D Point"
-msgstr ""
+msgstr "Keluarkan Titik BlendSpace2D"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Remove BlendSpace2D Triangle"
-msgstr ""
+msgstr "Keluarkan Segi tiga BlendSpace2D"
#: editor/plugins/animation_blend_space_2d_editor.cpp
+#, fuzzy
msgid "BlendSpace2D does not belong to an AnimationTree node."
-msgstr ""
+msgstr "BlendSpace2D bukan milik nod AnimationTree."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "No triangles exist, so no blending can take place."
-msgstr ""
+msgstr "Tiada segi tiga-segi tiga wujud, jadi tiada pengadunan boleh berlaku."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Toggle Auto Triangles"
-msgstr ""
+msgstr "Togol Segi Tiga Auto"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Create triangles by connecting points."
-msgstr ""
+msgstr "Cipta segi tiga dengan menhubungkan titik-titik."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Erase points and triangles."
-msgstr ""
+msgstr "Padamkan titik-titik dan segi tiga-segi tiga."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Generate blend triangles automatically (instead of manually)"
msgstr ""
+"Jana segi tiga-segi tiga campuran secara automatik (bukan secara manual)"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Blend:"
-msgstr ""
+msgstr "Adun:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
-msgstr ""
+#, fuzzy
+msgid "Parameter Changed:"
+msgstr "Parameter Berubah"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Edit Filters"
-msgstr ""
+msgstr "Sunting Filters"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Output node can't be added to the blend tree."
@@ -4797,6 +4918,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Baru"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Sunting Peralihan..."
@@ -5133,10 +5259,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Muat turun"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Tidak dapat menyambung."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -5145,15 +5279,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Tiada jawapan."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
+msgid "Can't resolve."
+msgstr "Tidak dapat menyelesaikan."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5181,6 +5319,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Gagal:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5283,7 +5425,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5326,6 +5472,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5334,8 +5484,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5570,15 +5720,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5636,6 +5787,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5647,19 +5799,27 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "Padam Rect yang dipilih."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Node yang dipilih bukan Viewport!"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5891,6 +6051,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Tambah Titik Nod"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Masukkan Kunci di Sini"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5903,6 +6073,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Zum Keluar"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Zum Keluar"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Zum Keluar"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Zum Keluar"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Zum Keluar"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Zum Keluar"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -6144,6 +6360,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -6176,7 +6396,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6235,13 +6455,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6295,7 +6527,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6567,7 +6798,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6871,6 +7103,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Pindah Titik-titik Bezier"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Masukkan Titik"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7074,7 +7324,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#, fuzzy
msgid "Search"
@@ -7106,6 +7356,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Dokumen Dalam Talian"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -7228,8 +7483,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -7262,10 +7517,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7417,6 +7668,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7437,39 +7707,49 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Saiz"
+#, fuzzy
+msgid "Size:"
+msgstr "Saiz: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Parameter Berubah"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Parameter Berubah"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Parameter Berubah"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Panggilan"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Vertices:"
+msgstr "Sifat-sifat"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7625,6 +7905,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Togol Kegemaran"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7640,6 +7925,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Tukar Kepada %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7653,26 +7943,24 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
-msgstr ""
+#, fuzzy
+msgid "Snap Nodes to Floor"
+msgstr "Pilih Nod(Nod-nod) untuk Diimport"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7769,6 +8057,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -8060,11 +8352,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -8085,167 +8372,582 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Versi:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Tiada sub-sumber dijumpai."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Pemalar"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Pemalar Sahaja"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+#, fuzzy
+msgid "No fonts found."
+msgstr "Tiada sub-sumber dijumpai."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+#, fuzzy
+msgid "No icons found."
+msgstr "Tiada sub-sumber dijumpai."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Tiada sub-sumber dijumpai."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Mengimport (Semula) Aset"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Keluar dari editor?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Menganalisis"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Penapis:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "Tidak Aktif"
+msgid "Collapse types."
+msgstr "Runtuhkan Semua"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Expand types."
+msgstr "Kembangkan Semua"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Pilih Fail Templat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "Tidak Aktif"
+msgid "Deselect All"
+msgstr "Putuskan Semua"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+#, fuzzy
+msgid "Import Selected"
+msgstr "Import Adegan"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Keluarkan Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Keluarkan Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Keluarkan Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Keluarkan Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Keluarkan Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Keluarkan Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Tambah ke Kegemaran"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Pemalar"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Tambah Titik"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Tambah Titik"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Keluarkan Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Keluarkan Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Keluarkan Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Fail tidak sah, bukan susun atur bas audio."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Urus Templat-templat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Sunting Filters"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Add Type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Add Item:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Add StyleBox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Tidak Aktif"
+msgid "Remove Items:"
+msgstr "Keluarkan Item"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
-msgstr "Tab 1"
+msgid "Remove Class Items"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
-msgstr "Tab 2"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Keluarkan Item"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
-msgstr "Tab 3"
+msgid "Remove All Items"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Keluarkan Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nama Nod:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Import Sebagai:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Lalai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Editor"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Cari Penggantian Sumber:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Confirm Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Namakan Semula Kumpulan"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Tulis Ganti"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+#, fuzzy
+msgid "Add Type"
+msgstr "Tambah Segi Tiga"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Nama Nod:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Muatkan Lalai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "ganti:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Theme:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Urus Templat-templat Eksport..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+#, fuzzy
+msgid "Add Preview"
+msgstr "Pratonton:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Lalai"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Simpan Adegan"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "Tidak Aktif"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "Tidak Aktif"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Tidak Aktif"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr "Tab 1"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr "Tab 2"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr "Tab 3"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Fail tidak sah, bukan susun atur bas audio."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8414,6 +9116,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8736,11 +9442,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9563,8 +10264,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "Sifat:"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9678,7 +10380,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9686,7 +10388,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9694,11 +10396,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9771,8 +10473,9 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
-msgstr ""
+#, fuzzy
+msgid "Invalid project name."
+msgstr "Nama kumpulan tidak sah."
#: editor/project_manager.cpp
msgid "Couldn't create folder."
@@ -9805,6 +10508,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Ralat semasa membuka fail pakej, bukan dalam format ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Fail berikut gagal diekstrak dari pakej:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Pakej berjaya dipasang!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9949,15 +10664,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9984,8 +10695,9 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
-msgstr ""
+#, fuzzy
+msgid "Local Projects"
+msgstr "Projek"
#: editor/project_manager.cpp
#, fuzzy
@@ -9997,10 +10709,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Projek"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Projek"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projek"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -10009,18 +10736,41 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Import Dok"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Buang Trek Anim"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr ""
+msgid "About"
+msgstr "Tentang"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Perpustakaan Aset"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -10031,8 +10781,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Tapis sifat-sifat"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10042,6 +10797,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10083,6 +10842,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10222,19 +10985,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Tambah Peralihan"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10503,6 +11267,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10666,11 +11434,29 @@ msgid "Delete node \"%s\"?"
msgstr "Padam nod \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10727,6 +11513,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10774,10 +11564,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11048,6 +11834,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -11116,6 +11908,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11399,6 +12195,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Eksport Perpustakaan Mesh"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Eksport..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11442,6 +12248,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Semua Pilihan"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11686,6 +12497,16 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Ubah Jenis %s"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Tukar Nilai Array"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11797,6 +12618,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Anim Menduakan Kunci"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -12021,10 +12847,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12054,6 +12876,40 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Eksport..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Nyahpasang"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Mengambil maklumat cermin, sila tunggu..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Tidak dapat memulakan subproses!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Menjalankan Skrip Tersuai..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Tidak dapat mencipta folder."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12150,6 +13006,45 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Mengimbas Fail,\n"
+"Sila Tunggu..."
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12162,6 +13057,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12176,6 +13075,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12195,11 +13107,53 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Kandungan Pakej:"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Menyambung..."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Tapis Fail-fail..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Tidak dapat memulakan subproses!"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12228,10 +13182,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr ""
@@ -12240,15 +13190,47 @@ msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Tidak dapat mencipta folder."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "Tidak dapat mencipta folder."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Tidak dapat mencipta folder."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Ralat semasa menyimpan TileSet!"
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12596,6 +13578,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12665,12 +13654,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12719,6 +13760,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12866,21 +13911,106 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Padamkan profil '%s'? (tidak boleh buat asal)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Ciri-ciri Diaktifkan:"
+
+#~ msgid "Unset"
+#~ msgstr "Nyahtetap"
+
+#~ msgid "Class Options"
+#~ msgstr "Pilihan Kelas"
+
+#~ msgid "Set"
+#~ msgstr "Tetapkan"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Sumber %s yang diubahsuai telah disimpan."
+
+#~ msgid "Q&A"
+#~ msgstr "Soal Jawab"
+
+#~ msgid "Status:"
+#~ msgstr "Status:"
+
+#~ msgid "Edit:"
+#~ msgstr "Sunting:"
+
+#~ msgid "Redownload"
+#~ msgstr "Muat turun semula"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Dipasang)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Hilang)"
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Ubah Hala Gelung."
+
+#~ msgid "Download Complete."
+#~ msgstr "Muat Turun Selesai."
+
+#~ msgid "Remove Template"
+#~ msgstr "Alih Keluar Templat"
+
+#~ msgid "Download Templates"
+#~ msgstr "Muat Turun Templat-templat"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Pilih cermin daripada senarai: (Shift+Click: Buka dalam Pelayar)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Pindah ke Tong Sampah"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Kembangkan Semua Sifat-sifat"
+
+#~ msgid "Copy Params"
+#~ msgstr "Salin Parameter-parameter"
+
+#~ msgid "Open in Help"
+#~ msgstr "Buka dalam Bantuan"
+
+#~ msgid "Size"
+#~ msgstr "Saiz"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Pemain animasi tidak boleh animasikan dirinya sendiri, hanya pemain lain."
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index 042ee8d26f..efbca6253d 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -542,7 +542,8 @@ msgstr "Sekunder"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -569,7 +570,8 @@ msgstr "Skaler Utvalg"
msgid "Scale From Cursor"
msgstr "Skaler Fra Peker"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Dupliser utvalg"
@@ -590,6 +592,11 @@ msgid "Go to Previous Step"
msgstr "GÃ¥ til forrige steg"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Nullstill Zoom"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimaliser Animasjon"
@@ -606,6 +613,11 @@ msgid "Use Bezier Curves"
msgstr "Bruk Bezier-kurver"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Sett in spor"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Anim. Optimaliserer"
@@ -654,7 +666,7 @@ msgid "Select Tracks to Copy"
msgstr "Velg spor å kopiere"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -741,12 +753,14 @@ msgid "Toggle Scripts Panel"
msgstr "Veksle skriptpanel"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zoom Inn"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -807,11 +821,9 @@ msgid "Add"
msgstr "Legg Til"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -862,6 +874,7 @@ msgstr "Kobler Til Signal:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -939,7 +952,7 @@ msgstr "Rediger..."
#: editor/connections_dialog.cpp
#, fuzzy
-msgid "Go To Method"
+msgid "Go to Method"
msgstr "Metoder"
#: editor/create_dialog.cpp
@@ -954,6 +967,14 @@ msgstr "Forandre"
msgid "Create New %s"
msgstr "Lag ny %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -975,8 +996,8 @@ msgstr "Søk:"
msgid "Matches:"
msgstr "Treff:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1054,20 +1075,24 @@ msgid "Owners Of:"
msgstr "Eiere Av:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Fjerne valgte filer fra prosjektet? (kan ikke angres)\n"
"Du kan finne de fjernede filene i systemets papirkurv, og gjenopprette dem "
"derfra."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Filene som fjernes kreves for at andre ressurser skal virke.\n"
"Fjerne dem likevel? (kan ikke angres)\n"
@@ -1118,7 +1143,7 @@ msgstr "Foreldreløs ressursutforsker"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1247,32 +1272,41 @@ msgstr "Komponenter"
msgid "Licenses"
msgstr "Lisenser"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Error opening package file, not in ZIP format."
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "Feil ved åpning av pakkefil, ikke i zip format."
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr "Eksisterer allerede"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Dekomprimerer Ressurser"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "De følgende filene feilet ekstrahering fra pakke:"
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "And %s more files."
+msgid "(and %s more files)"
msgstr "%d flere filer"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Package installed successfully!"
+msgid "Asset \"%s\" installed successfully!"
msgstr "Vellykket Installering av Pakke!"
#: editor/editor_asset_installer.cpp
@@ -1280,17 +1314,13 @@ msgstr "Vellykket Installering av Pakke!"
msgid "Success!"
msgstr "Vellykket!"
-#: editor/editor_asset_installer.cpp
-#, fuzzy
-msgid "Package Contents:"
-msgstr "Innhold:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Installer"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Pakkeinstallasjon"
#: editor/editor_audio_buses.cpp
@@ -1355,7 +1385,8 @@ msgid "Bypass"
msgstr "Omgå"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Bus valg"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1436,7 +1467,7 @@ msgstr "Legg til Bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Lagre Audio Bus Oppsett som..."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1529,6 +1560,15 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Fil eksisterer ikke."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Legg til AutoLoad"
@@ -1544,16 +1584,17 @@ msgid "Node Name:"
msgstr "Nodenavn:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Navn"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Endre navn på variabelen"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Lim inn Parametre"
@@ -1569,7 +1610,7 @@ msgstr "Lagrer lokale endringer..."
msgid "Updating scene..."
msgstr "Oppdaterer scene..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[blank]"
@@ -1731,9 +1772,49 @@ msgid "Import Dock"
msgstr "Importer"
#: editor/editor_feature_profile.cpp
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Erstatt Alle"
+msgid "(current)"
+msgstr "(Gjeldende)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1769,16 +1850,17 @@ msgstr "Aktiver kontekstavhengig redigeringsverktøy"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr "Egenskaper:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "PÃ¥skrudde funksjoner:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Egenskaper"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr "Søk i klasser"
#: editor/editor_feature_profile.cpp
@@ -1796,8 +1878,9 @@ msgid "Error saving profile to path: '%s'."
msgstr "Feil ved lagring av profilen til stien: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Last Standard"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1806,17 +1889,26 @@ msgstr "Gjeldende Versjon:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Make Current"
-msgstr "Gjeldende:"
+msgid "Create Profile"
+msgstr "Høyreklikk: Slett Punkt."
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Ny"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Fjern Mal"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "Tilgjengelige Noder:"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Make Current"
+msgstr "Gjeldende:"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importer"
@@ -1826,23 +1918,22 @@ msgstr "Eksporter"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Available Profiles:"
-msgstr "Tilgjengelige Noder:"
+msgid "Configure Selected Profile:"
+msgstr "Gjeldende Versjon:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
-msgstr "Beskrivelse"
+msgid "Extra Options:"
+msgstr "Beskrivelse:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "New profile name:"
-msgstr "Nytt navn:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase Profile"
-msgstr "Høyreklikk: Slett Punkt."
+msgid "New profile name:"
+msgstr "Nytt navn:"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1869,7 +1960,8 @@ msgid "Select Current Folder"
msgstr "Velg Gjeldende Mappe"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Filen finnes, overskriv?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1926,9 +2018,10 @@ msgid "Open a File or Directory"
msgstr "Ã…pne ei fil eller mappe"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Lagre"
@@ -2015,8 +2108,7 @@ msgid "Directories & Files:"
msgstr "Mapper og Filer:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Forhåndsvisning:"
@@ -2091,7 +2183,7 @@ msgstr "Egenskaper"
msgid "Enumerations"
msgstr "Nummereringer"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstanter"
@@ -2194,7 +2286,7 @@ msgstr "Metoder"
msgid "Signal"
msgstr "Signaler"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstant"
@@ -2212,9 +2304,10 @@ msgstr "Egenskaper"
msgid "Property:"
msgstr "Egenskap:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Sett"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2230,7 +2323,7 @@ msgid "Copy Selection"
msgstr "Fjern Utvalg"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2295,7 +2388,8 @@ msgid "Imported resources can't be saved."
msgstr "Importerte ressurser kan ikke lagres."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2516,19 +2610,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Lagre endringer til '%s' før lukking?"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Saved %s modified resource(s)."
-msgstr "Kunne ikke laste ressurs."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "En rotnode kreves for å lagre scenen."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Lagre Scene Som..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Denne operasjonen kan ikke gjøres uten en scene."
@@ -2723,7 +2821,7 @@ msgstr "Slett Layout"
msgid "Default"
msgstr "Standard"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
#, fuzzy
msgid "Show in FileSystem"
@@ -2915,6 +3013,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Foreldreløs ressursutforsker"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Endre Navn på Prosjekt"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Avslutt til Prosjektliste"
@@ -3074,14 +3177,14 @@ msgstr "HÃ¥ndter Eksportmaler"
msgid "Help"
msgstr "Hjelp"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Online Dokumentasjon"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Ã…pne Godots nettbaserte dokumentasjon"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Spørsmål og Svar"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3089,6 +3192,10 @@ msgid "Report a Bug"
msgstr "Reimporter"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -3097,7 +3204,8 @@ msgid "Community"
msgstr "Fellesskap"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Om"
#: editor/editor_node.cpp
@@ -3200,6 +3308,16 @@ msgid "Manage Templates"
msgstr "HÃ¥ndter Eksportmaler"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Installer Fra Fil"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Ikke basert på en ressursfil"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3227,7 +3345,7 @@ msgstr "Importer Mal Fra ZIP-Fil"
msgid "Template Package"
msgstr "Eksporter Mal-Manager"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Eksporter Bibliotek"
@@ -3271,6 +3389,11 @@ msgid "Select"
msgstr "Velg"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Velg Gjeldende Mappe"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Åpne 2D-redigeringsverktøy"
@@ -3303,6 +3426,11 @@ msgstr "Advarsel!"
msgid "No sub-resources found."
msgstr "Ressurs"
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Ressurs"
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Lager Forhåndsvisning av Mesh"
@@ -3329,34 +3457,34 @@ msgstr "Installerte Plugins:"
msgid "Update"
msgstr "Oppdater"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versjon:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Forfatter:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Status:"
+#, fuzzy
+msgid "Author"
+msgstr "Forfattere"
#: editor/editor_plugin_settings.cpp
-#, fuzzy
-msgid "Edit:"
-msgstr "Rediger"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "MÃ¥l:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Frame Tid (sek)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Gjennomsnittstid (sek)"
#: editor/editor_profiler.cpp
@@ -3376,6 +3504,16 @@ msgid "Self"
msgstr "Selv"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Bilde #:"
@@ -3421,15 +3559,6 @@ msgstr "Ugyldig RID"
#: editor/editor_properties.cpp
#, fuzzy
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Den valgte ressursen (%s) svarer ikke til noen forventede verdier for denne "
-"egenskapen (%s)."
-
-#: editor/editor_properties.cpp
-#, fuzzy
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3449,41 +3578,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Nytt Skript"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "Kjør Skript"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Ny %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Gjør Unik"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Lim inn"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Konverter Til %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3514,6 +3608,51 @@ msgstr "Nytt navn:"
msgid "Add Key/Value Pair"
msgstr "Legg Til Nøkkel/Verdi Par"
+#: editor/editor_resource_picker.cpp
+#, fuzzy
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Den valgte ressursen (%s) svarer ikke til noen forventede verdier for denne "
+"egenskapen (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Gjør Unik"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Lim inn"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Konverter Til %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Ny %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Nytt Skript"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Extend Script"
+msgstr "Kjør Skript"
+
#: editor/editor_run_native.cpp
#, fuzzy
msgid ""
@@ -3549,8 +3688,11 @@ msgid "Did you forget the '_run' method?"
msgstr "Glemte du '_run'-metoden?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
+"Hold Meta for å slippe en Getter. Hold Skift for å slippe en generisk "
+"signatur."
#: editor/editor_sub_scene.cpp
msgid "Select Node(s) to Import"
@@ -3570,118 +3712,70 @@ msgid "Import From Node:"
msgstr "Importer Fra Node:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "Last Ned PÃ¥ Nytt"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Avinstaller"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Installert)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Last ned"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Mangler)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Gjeldende)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Det finnes ingen «%s»-fil"
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Henter fillager, vennligst vent..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Fjern malversjon '%s'?"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Kan ikke åpne eksportmalzip."
+msgid "Error requesting URL:"
+msgstr "Feil ved nettadresse-forespørsel:"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Ugyldig version.txt format i mal."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Ingen version.txt funnet i mal."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Feil ved laging av sti for maler:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Ekstraherer Eksport Mal"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importerer:"
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr ""
-
-#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
+msgid "Connecting to the mirror..."
+msgstr "Kobler til Fillager..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Ingen nedlastningslink funnet for denne versjonen. Direkte nedlastning er "
-"kun mulig for offisielle utvigelser."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Kan ikke løse tjenernavn:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Can't resolve."
-msgstr "Kan ikke løse."
+msgid "Can't connect to the mirror."
+msgstr "Kan ikke koble til tjener:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Kan ikke koble til."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Ingen respons fra tjener:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Ingen respons."
-
-#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Forespørsel Feilet."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Redirect Loop."
-msgstr "Omdirigerings-Loop."
+msgid "Request ended up in a redirect loop."
+msgstr "Forespørsel feilet, for mange omdirigeringer"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Feilet:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Forespørsel Feilet."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Nedlastning fullført."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3695,12 +3789,24 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Feil ved nettadresse-forespørsel:"
+msgid "Error getting the list of mirrors."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Kobler til Fillager..."
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Ingen nedlastningslink funnet for denne versjonen. Direkte nedlastning er "
+"kun mulig for offisielle utvigelser."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3749,47 +3855,140 @@ msgstr "SSL Handshake Error"
#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Kan ikke åpne eksportmalzip."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Ugyldig version.txt format i mal."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Ingen version.txt funnet i mal."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Feil ved laging av sti for maler:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Ekstraherer Eksport Mal"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importerer:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Fjern malversjon '%s'?"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Uncompressing Android Build Sources"
msgstr "Dekomprimerer Ressurser"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Export Template Manager"
+msgstr "Eksporter Mal-Manager"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Gjeldende Versjon:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Installerte Versjoner:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Ã…pne en fil"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Avinstaller"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Nedlastningsfeil"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Installer Fra Fil"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Fjern Mal"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importer Mal Fra ZIP-Fil"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Avbryt"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "Velg malfil"
+msgid "Cancel the download of the templates."
+msgstr "Kan ikke åpne eksportmalzip."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
-msgstr "HÃ¥ndter Eksportmaler"
+msgid "Other Installed Versions:"
+msgstr "Installerte Versjoner:"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Export Template Manager"
-msgstr "Eksporter Mal-Manager"
+msgid "Uninstall Template"
+msgstr "Avinstaller"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Last ned Mal"
+#, fuzzy
+msgid "Select Template File"
+msgstr "Velg malfil"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Velg speil fra liste: (Shift+Klikk: Ã…pne i nettleser)"
+#, fuzzy
+msgid "Godot Export Templates"
+msgstr "HÃ¥ndter Eksportmaler"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -3929,13 +4128,15 @@ msgstr "Hurtigåpne Skript..."
msgid "New Resource..."
msgstr "Lagre Ressurs Som..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Expand All"
msgstr "Utvid alle"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Collapse All"
@@ -3943,19 +4144,47 @@ msgstr "Kollaps alle"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Duplicate..."
-msgstr "Duplisér"
+msgid "Sort files"
+msgstr "Søk i klasser"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "Flytt Autoload"
+msgid "Duplicate..."
+msgstr "Duplisér"
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Endre Navn..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "Forrige fane"
@@ -4045,10 +4274,6 @@ msgstr "Finn..."
msgid "Replace..."
msgstr "Erstatt..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Avbryt"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Finn: "
@@ -4291,54 +4516,54 @@ msgstr "Kunne ikke laste ressurs."
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Expand All Properties"
-msgstr "Utvid alle egenskaper"
+msgid "Copy Properties"
+msgstr "Egenskaper"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Collapse All Properties"
-msgstr "Kollaps alle egenskaper"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Lagre Som..."
+msgid "Paste Properties"
+msgstr "Egenskaper"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Kopier Parametre"
+msgid "Make Sub-Resources Unique"
+msgstr "Lag underressurser unike"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Rediger ressurs-utklippstavlen"
+msgid "Create a new resource in memory and edit it."
+msgstr "Lag en ny ressurs i minnet og endre den."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Kopier Ressurs"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Last inn en eksisterende ressurs fra disk og rediger den."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Lag innebygget"
+msgid "Save the currently edited resource."
+msgstr "Lagre den nylige redigerte ressursen."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Lag underressurser unike"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Lagre Som..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Ã…pne i Hjelp"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Ikke i resource path."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Lag en ny ressurs i minnet og endre den."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Rediger ressurs-utklippstavlen"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Last inn en eksisterende ressurs fra disk og rediger den."
+msgid "Copy Resource"
+msgstr "Kopier Ressurs"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Lagre den nylige redigerte ressursen."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Lag innebygget"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4353,8 +4578,14 @@ msgid "History of recently edited objects."
msgstr "Historikk av nylige redigerte objekter."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Objektegenskaper."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Ã…pne Godots nettbaserte dokumentasjon"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "Ã…pne Godots nettbaserte dokumentasjon"
#: editor/inspector_dock.cpp
#, fuzzy
@@ -4362,6 +4593,11 @@ msgid "Filter properties"
msgstr "Lim inn Noder"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Objektegenskaper."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Endringer kan bli tapt!"
@@ -4394,6 +4630,15 @@ msgstr "Plugins"
msgid "Subfolder:"
msgstr "Undermappe:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Forfatter:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versjon:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Språk:"
@@ -4620,7 +4865,7 @@ msgstr "Blend:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr "Forandre"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4849,6 +5094,11 @@ msgid "Animation"
msgstr "Animasjon"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Ny"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "Overganger"
@@ -5207,10 +5457,18 @@ msgid "View Files"
msgstr "Vis Filer"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Last ned"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Tilkoblingsfeil, vennligst prøv igjen."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Kan ikke koble til."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Kan ikke koble til tjener:"
@@ -5219,17 +5477,21 @@ msgid "No response from host:"
msgstr "Ingen respons fra tjener:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Ingen respons."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Kan ikke løse tjenernavn:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Forespørsel feilet, returneringskode:"
+#, fuzzy
+msgid "Can't resolve."
+msgstr "Kan ikke løse."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed."
-msgstr "Forespørsel Feilet."
+msgid "Request failed, return code:"
+msgstr "Forespørsel feilet, returneringskode:"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
@@ -5260,6 +5522,10 @@ msgid "Timeout."
msgstr "Tid:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Feilet:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
msgid "Bad download hash, assuming file has been tampered with."
msgstr "DÃ¥rlig nedlastningshash, antar at filen har blitt tuklet med."
@@ -5372,7 +5638,11 @@ msgid "All"
msgstr "Alle"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5419,6 +5689,10 @@ msgstr "Last"
msgid "Assets ZIP File"
msgstr "Assets ZIP-Fil"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5427,8 +5701,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5692,15 +5966,16 @@ msgstr "Endre Anker"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5761,6 +6036,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5772,21 +6048,32 @@ msgid "Select Mode"
msgstr "Velg Modus"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Dra: Roter"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Fjern valgt spor."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Dra: Flytt"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Fjern valgt spor."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Trykk 'v' for å Endre Pivot, 'Shift+v' for å Dra Privot (under flytting)."
+"Vis en liste av elementer på posisjonen du klikker\n"
+"(samme som Alt+Høyreklikk i velg-modus)"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+Høyreklikk: Dybdelisteutvalg"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -6039,6 +6326,16 @@ msgid "Clear Pose"
msgstr "Fjern Posering"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Legg til node"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Sett inn nøkkel her"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Multipliser rutenett-steg med 2"
@@ -6051,6 +6348,52 @@ msgid "Pan View"
msgstr "Panoreringsvisning"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Zoom Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Zoom Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Zoom Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Zoom Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Zoom Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Zoom Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Legg til %s"
@@ -6309,6 +6652,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Lag ny %s"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "Lag ny %s"
@@ -6343,7 +6691,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6404,13 +6752,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Lag Poly"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Lag Poly"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6469,7 +6830,6 @@ msgid "Mesh Library"
msgstr "MeshBibliotek..."
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Legg til Element"
@@ -6745,7 +7105,8 @@ msgid "Close Curve"
msgstr "Lukk Kurve"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Innstillinger"
@@ -7076,6 +7437,24 @@ msgstr "Last Ressurs"
msgid "ResourcePreloader"
msgstr "Ressurs"
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Flytt Bezier-punkt"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Fjern Punkt"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7289,7 +7668,7 @@ msgstr "Kjør"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Søk"
@@ -7321,6 +7700,11 @@ msgid "Debug with External Editor"
msgstr "Feilrett med ekstern behandler"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Online Dokumentasjon"
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation."
msgstr "Ã…pne Godots nettbaserte dokumentasjon"
@@ -7451,8 +7835,8 @@ msgstr ""
msgid "Cut"
msgstr "Klipp ut"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Velg Alle"
@@ -7485,10 +7869,6 @@ msgid "Unfold All Lines"
msgstr "Brett ut alle linjer"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Klon Nedover"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7649,6 +8029,28 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Roter Modus"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Oversettelser"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Skala:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Skalerer: "
@@ -7670,40 +8072,49 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Pitch"
+msgid "Pitch:"
msgstr "Bryter"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Størrelse"
+#, fuzzy
+msgid "Size:"
+msgstr "Størrelse: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Forandre"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr "Forandre"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Overflateendringer"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Ring"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Vertices:"
+msgstr "Egenskaper:"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7865,6 +8276,11 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Veksle Favorittmarkering"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "View Rotation Locked"
msgstr "Vis Informasjon"
@@ -7880,6 +8296,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Konverter Til %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7894,7 +8315,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr "Snap til rutenett"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7902,13 +8323,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr ""
@@ -7917,6 +8331,10 @@ msgid "Use Snap"
msgstr "Bruk Snap"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Bunnvisning"
@@ -8010,6 +8428,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Innstillinger …"
@@ -8322,11 +8744,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -8347,177 +8764,604 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Nummereringer:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+#, fuzzy
+msgid "Colors"
+msgstr "Farge"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Fonts"
+msgstr "Font"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Icons"
+msgstr "Ikon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+#, fuzzy
+msgid "No colors found."
+msgstr "Ressurs"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstanter"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Konstant"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "Ikke funnet!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All"
+msgid "No icons found."
+msgstr "Ikke funnet!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Ressurs"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Importer Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Avslutt redigeringsverktøyet?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analyserer"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Lim inn Noder"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select by data type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Velg en Mappe å Skanne"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Kollaps alle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Utvid alle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Velg malfil"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Velg Punkter"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Velg Alle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importer Scene"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Fjern Funksjon"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "Medlemmer"
+msgid "Rename Item"
+msgstr "Fjern Gjenstand"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Fjern Funksjon"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Fjern Gjenstand"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Fjern Gjenstand"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Fjern Funksjon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Legg til Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konstant"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Legg til Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Legg til Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Legg til Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Fjern Gjenstand"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Fjern Gjenstand"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Fjern Gjenstand"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Fjern Valgte Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Ugyldig fil, ikke et audio bus oppsett."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "HÃ¥ndter Eksportmaler"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Rediger Variabel:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Type:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Type:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Legg til Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Legg til Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Fjern Gjenstand"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Fjern Gjenstand"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "GUI Tema Elementer"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nodenavn:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importer Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Standard"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Medlemmer"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Fjern Ressurs"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Importer Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Anim-Spor Endre Navn"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Endre Navn på Parti"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Overskriv"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+#, fuzzy
+msgid "Add Type"
+msgstr "Finn Node Type"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Legg til Element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Finn Node Type"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Last Standard"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+#, fuzzy
+msgid "Override All"
+msgstr "Overskriv"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
+msgid "Theme:"
+msgstr "Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "HÃ¥ndter Eksportmaler"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Forhåndsvis"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Forhåndsvis"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Tilbakestille Scene"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
msgid "Toggle Button"
msgstr "Museknapp"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled Button"
msgstr "Deaktivert"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled Item"
msgstr "Deaktivert"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Radio Item"
msgstr "Legg til Element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Subitem 1"
msgstr "Element %d"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Subitem 2"
msgstr "Element %d"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled LineEdit"
msgstr "Deaktivert"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Fane 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Fane 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Fane 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Editable Item"
msgstr "Rediger Variabel:"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Has,Many,Options"
msgstr "Innstillinger"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Ikon"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Font"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Farge"
-
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "Tema"
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Ugyldig fil, ikke et audio bus oppsett."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8697,6 +9541,10 @@ msgid "Priority"
msgstr "Eksporter Prosjekt"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Ikon"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid "Z Index"
msgstr "Panorerings-Modus"
@@ -9060,11 +9908,6 @@ msgid "Commit Changes"
msgstr "Synkroniser Skriptforandringer"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9917,7 +10760,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "Rediger Filtre"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -10037,7 +10880,7 @@ msgstr "Kjør Skript"
#: editor/project_export.cpp
#, fuzzy
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr "Eksporter Prosjekt"
#: editor/project_export.cpp
@@ -10045,7 +10888,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -10053,11 +10896,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -10135,7 +10978,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr "Prosjektnavn:"
#: editor/project_manager.cpp
@@ -10172,6 +11015,20 @@ msgid "Couldn't create project.godot in project path."
msgstr "Kunne ikke lage project.godot i prosjektstien."
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Error opening package file, not in ZIP format."
+msgstr "Feil ved åpning av pakkefil, ikke i zip format."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "De følgende filene feilet ekstrahering fra pakke:"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Package installed successfully!"
+msgstr "Vellykket Installering av Pakke!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Endre Navn på Prosjekt"
@@ -10332,20 +11189,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Er du sikker på at du vil kjøre mer enn ett prosjekt?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Fjern %s prosjekter fra listen?\n"
-"Innhold i prosjektmappene vil ikke påvirkes."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Velg enhet fra listen"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Fjern dette prosjektet fra listen?\n"
-"Innhold i prosjektmappen vil ikke påvirkes."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Velg enhet fra listen"
#: editor/project_manager.cpp
msgid ""
@@ -10376,7 +11227,8 @@ msgid "Project Manager"
msgstr "Prosjektstyring"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Prosjekter"
#: editor/project_manager.cpp
@@ -10389,10 +11241,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Eksporter Prosjekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Endre Navn på Prosjekt"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Gjennomsøk"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Prosjekter"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Velg en mappe å søke gjennom"
@@ -10402,18 +11269,42 @@ msgstr "Nytt Prosjekt"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Eksporter Prosjekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Endre Navn på Prosjekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Fjern punkt"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Maler"
+msgid "About"
+msgstr "Om"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Ressursbibliotek"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Omstart NÃ¥"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Fjern Funksjon"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Kan ikke kjøre prosjekt"
@@ -10424,8 +11315,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Lim inn Noder"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10435,6 +11331,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10477,6 +11377,10 @@ msgstr "Alle enheter"
msgid "Device"
msgstr "Enhet"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Trykk en tast..."
@@ -10621,7 +11525,8 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Legg til oversettelse"
#: editor/project_settings_editor.cpp
@@ -10629,11 +11534,11 @@ msgid "Remove Translation"
msgstr "Fjern oversettelse"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10912,6 +11817,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -11082,11 +11991,29 @@ msgid "Delete node \"%s\"?"
msgstr "Slett noden \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -11146,6 +12073,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -11195,11 +12126,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "Ã…pne Godots nettbaserte dokumentasjon"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11496,6 +12422,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "Klasse:"
@@ -11573,6 +12505,10 @@ msgid "Copy Error"
msgstr "Kopier feil"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11865,6 +12801,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Eksporter MeshBibliotek"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Eksporter"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -11911,6 +12857,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Slett Valgte"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -12169,6 +13120,16 @@ msgstr "Legg til Input"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "Endre %s type"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Anim Forandre Verdi"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr ""
"Ugyldig navn. Kan ikke kollidere med et eksisterende innebygd type navn."
@@ -12291,6 +13252,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Legg til node"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Legg til node(r) fra tre"
@@ -12530,10 +13496,6 @@ msgstr "Lim inn Noder"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12563,6 +13525,40 @@ msgid "Select device from the list"
msgstr "Velg enhet fra listen"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Eksporter"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Avinstaller"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Henter fillager, vennligst vent..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Kunne ikke starta subprosess!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Kjører Tilpasser Skript..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Kunne ikke opprette mappe."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12660,6 +13656,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Gjennomgår filer,\n"
+"Vent…"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Kunne ikke opprette mappe."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Legger til %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Eksporter"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12672,6 +13710,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12686,6 +13728,21 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Kunne ikke endre project.godot i projsektstien."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Kunne ikke opprette mappe."
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12705,11 +13762,54 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animasjonsverktøy"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Lager konturer..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Kunne ikke opprette mappe."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Legger til %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Kunne ikke opprette mappe."
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
msgstr "Navn er ikke en gyldig identifikator:"
@@ -12741,30 +13841,58 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
+msgstr "HÃ¥ndter Eksportmaler"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not write file:"
msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Invalid export template:"
-msgstr "HÃ¥ndter Eksportmaler"
+msgid "Could not read file:"
+msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
-msgstr ""
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr "Kunne ikke opprette mappe."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Feil ved lagring av TextFile:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Navn er ikke en gyldig identifikator:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -13120,6 +14248,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -13189,12 +14324,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -13244,6 +14431,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "Animasjonsverktøy"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -13397,21 +14588,161 @@ msgid "Invalid comparison function for that type."
msgstr "Ugyldig sammenligningsfunksjon for den typen."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Konstanter kan ikke endres."
+#, fuzzy
+#~ msgid "Package Contents:"
+#~ msgstr "Innhold:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#, fuzzy
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Erstatt Alle"
+
+#, fuzzy
+#~ msgid "Enabled Properties:"
+#~ msgstr "Egenskaper:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "PÃ¥skrudde funksjoner:"
+
+#, fuzzy
+#~ msgid "Class Options"
+#~ msgstr "Beskrivelse"
+
+#~ msgid "Set"
+#~ msgstr "Sett"
+
+#, fuzzy
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Kunne ikke laste ressurs."
+
+#~ msgid "Q&A"
+#~ msgstr "Spørsmål og Svar"
+
+#~ msgid "Status:"
+#~ msgstr "Status:"
+
+#, fuzzy
+#~ msgid "Edit:"
+#~ msgstr "Rediger"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "Last Ned PÃ¥ Nytt"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Installert)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Mangler)"
+
+#, fuzzy
+#~ msgid "Request Failed."
+#~ msgstr "Forespørsel Feilet."
+
+#, fuzzy
+#~ msgid "Redirect Loop."
+#~ msgstr "Omdirigerings-Loop."
+
+#~ msgid "Download Complete."
+#~ msgstr "Nedlastning fullført."
+
+#~ msgid "Remove Template"
+#~ msgstr "Fjern Mal"
+
+#~ msgid "Download Templates"
+#~ msgstr "Last ned Mal"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Velg speil fra liste: (Shift+Klikk: Ã…pne i nettleser)"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Flytt Autoload"
+
+#, fuzzy
+#~ msgid "Expand All Properties"
+#~ msgstr "Utvid alle egenskaper"
+
+#, fuzzy
+#~ msgid "Collapse All Properties"
+#~ msgstr "Kollaps alle egenskaper"
+
+#~ msgid "Copy Params"
+#~ msgstr "Kopier Parametre"
+
+#~ msgid "Open in Help"
+#~ msgstr "Ã…pne i Hjelp"
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Dra: Roter"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Trykk 'v' for å Endre Pivot, 'Shift+v' for å Dra Privot (under flytting)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+Høyreklikk: Dybdelisteutvalg"
+
+#~ msgid "Clone Down"
+#~ msgstr "Klon Nedover"
+
+#~ msgid "Size"
+#~ msgstr "Størrelse"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "Tema"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Fjern %s prosjekter fra listen?\n"
+#~ "Innhold i prosjektmappene vil ikke påvirkes."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Fjern dette prosjektet fra listen?\n"
+#~ "Innhold i prosjektmappen vil ikke påvirkes."
+
+#~ msgid "Templates"
+#~ msgstr "Maler"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "En animansjonsavspiller kan ikke animere seg selv, kun andre avspillere."
@@ -13477,18 +14808,12 @@ msgstr "Konstanter kan ikke endres."
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "Gjeldende scene ble aldri lagret, vennligst lagre før kjøring."
-#~ msgid "Not in resource path."
-#~ msgstr "Ikke i resource path."
-
#~ msgid "Revert"
#~ msgstr "GÃ¥ tilbake"
#~ msgid "This action cannot be undone. Revert anyway?"
#~ msgstr "Denne handlingen kan ikke angres. GÃ¥ tilbake likevel?"
-#~ msgid "Revert Scene"
-#~ msgstr "Tilbakestille Scene"
-
#~ msgid "Issue Tracker"
#~ msgstr "Problemtracker"
@@ -13539,9 +14864,6 @@ msgstr "Konstanter kan ikke endres."
#~ msgid "Input"
#~ msgstr "Legg til Input"
-#~ msgid "Properties:"
-#~ msgstr "Egenskaper:"
-
#, fuzzy
#~ msgid "Methods:"
#~ msgstr "Metoder"
@@ -13550,9 +14872,6 @@ msgstr "Konstanter kan ikke endres."
#~ msgid "Theme Properties:"
#~ msgstr "Egenskaper"
-#~ msgid "Enumerations:"
-#~ msgstr "Nummereringer:"
-
#~ msgid "Constants:"
#~ msgstr "Konstanter:"
@@ -13756,10 +15075,6 @@ msgstr "Konstanter kan ikke endres."
#~ msgid "Splits"
#~ msgstr "Splitt Sti"
-#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Velg en Mappe å Skanne"
-
#~ msgid "Create Poly"
#~ msgstr "Lag Poly"
@@ -13802,9 +15117,6 @@ msgstr "Konstanter kan ikke endres."
#~ msgid "Public Methods:"
#~ msgstr "Offentlige metoder:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "GUI Tema Elementer"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "GUI Tema Elementer:"
@@ -13875,9 +15187,6 @@ msgstr "Konstanter kan ikke endres."
#~ msgid "Set Transitions to:"
#~ msgstr "Sett Overganger til:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Anim-Spor Endre Navn"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Anim Track Endre Interpolasjon"
@@ -14039,9 +15348,6 @@ msgstr "Konstanter kan ikke endres."
#~ msgid "Can't write file."
#~ msgstr "Kan ikke skrive fil."
-#~ msgid "Not found!"
-#~ msgstr "Ikke funnet!"
-
#~ msgid "Replace By"
#~ msgstr "Erstatt Med"
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index 2410cd5ad0..2f16b90840 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -46,12 +46,14 @@
# T-rex08 <ipadtriceratops@gmail.com>, 2021.
# Dwarffish <hoogvlietjohan@gmail.com>, 2021.
# Arthur de Roos <arthur.de.roos@gmail.com>, 2021.
+# Vancha March <tjipkevdh@gmail.com>, 2021.
+# Hugo van de Kuilen <hugo.vandekuilen1234567890@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-06-05 08:32+0000\n"
-"Last-Translator: Stijn Hinlopen <f.a.hinlopen@gmail.com>\n"
+"PO-Revision-Date: 2021-08-02 02:00+0000\n"
+"Last-Translator: Hugo van de Kuilen <hugo.vandekuilen1234567890@gmail.com>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/godot-engine/godot/"
"nl/>\n"
"Language: nl\n"
@@ -59,7 +61,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Weblate 4.7-dev\n"
+"X-Generator: Weblate 4.8-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -571,7 +573,8 @@ msgstr "Seconden"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -597,7 +600,8 @@ msgstr "Schaal selectie"
msgid "Scale From Cursor"
msgstr "Schaal Vanaf Cursor"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Selectie dupliceren"
@@ -618,6 +622,11 @@ msgid "Go to Previous Step"
msgstr "Ga naar Vorige Stap"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Resetten"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimaliseer Animatie"
@@ -634,6 +643,11 @@ msgid "Use Bezier Curves"
msgstr "Gebruik Bezier Curves"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Plak sporen"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Anim. Optimalisator"
@@ -682,7 +696,7 @@ msgid "Select Tracks to Copy"
msgstr "Selecteer sporen om te kopieren"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -768,12 +782,14 @@ msgid "Toggle Scripts Panel"
msgstr "Schakel Scripten Paneel"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Inzoomen"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -830,11 +846,9 @@ msgid "Add"
msgstr "Toevoegen"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -886,6 +900,7 @@ msgstr "Kan signaal niet verbinden"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -957,7 +972,8 @@ msgid "Edit..."
msgstr "Bewerken..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Naar methode springen"
#: editor/create_dialog.cpp
@@ -972,6 +988,14 @@ msgstr "Wijzig"
msgid "Create New %s"
msgstr "%s opstellen"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Geen resultaten voor \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -993,8 +1017,8 @@ msgstr "Zoeken:"
msgid "Matches:"
msgstr "Overeenkomsten:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1070,9 +1094,11 @@ msgid "Owners Of:"
msgstr "Eigenaren van:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Geselecteerde bestanden uit het project verwijderen? (Kan niet ongedaan "
"gemaakt worden)\n"
@@ -1080,11 +1106,13 @@ msgstr ""
"worden."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"De bestanden die verwijderd worden zijn nodig om andere bronnen te laten "
"werken.\n"
@@ -1134,7 +1162,7 @@ msgstr "Weesbronnen bekijken"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1162,7 +1190,7 @@ msgstr "Bedankt van de Godot gemeenschap!"
#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp
msgid "Click to copy."
-msgstr ""
+msgstr "Klik om te kopiëren."
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
@@ -1259,28 +1287,41 @@ msgstr "Componenten"
msgid "Licenses"
msgstr "Licenties"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "Fout bij het openen van het pakketbestand, geen zip-formaat."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (bestaat al)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Bronnen aan het uitpakken"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "De volgende bestanden konden niet worden uitgepakt:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "En nog %s bestand(en)."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Pakket succesvol geïnstalleerd!"
#: editor/editor_asset_installer.cpp
@@ -1288,16 +1329,13 @@ msgstr "Pakket succesvol geïnstalleerd!"
msgid "Success!"
msgstr "Gelukt!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Pakketinhoud:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Installeer"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Pakketinstalleerder"
#: editor/editor_audio_buses.cpp
@@ -1361,7 +1399,8 @@ msgid "Bypass"
msgstr "Omleiden"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Audiobusopties"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1441,7 +1480,7 @@ msgstr "Bus Toevoegen"
msgid "Add a new Audio Bus to this layout."
msgstr "Nieuwe audiobus toevoegen aan deze indeling."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1528,6 +1567,15 @@ msgid "Can't add autoload:"
msgstr "Autoload kan niet toevoegd worden:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Bestand bestaat niet."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "AutoLoad toevoegen"
@@ -1543,16 +1591,17 @@ msgid "Node Name:"
msgstr "Knoopnaam:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Naam"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Hernoem Variabele"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Plak Parameters"
@@ -1568,7 +1617,7 @@ msgstr "Lokale wijziging aan het opslaan..."
msgid "Updating scene..."
msgstr "Scène aan het bijwerken..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[leeg]"
@@ -1723,8 +1772,49 @@ msgid "Import Dock"
msgstr "Importtabblad"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Profiel '%s' verwijderen? (Onomkeerbaar)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Huidig)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1755,15 +1845,18 @@ msgid "Enable Contextual Editor"
msgstr "Open de Contextbewuste Editor"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Ingeschakelde Eigenschappen:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Eigenschappen:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Ingeschakelde Functionaliteit:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Functionaliteiten"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Ingeschakelde Klassen:"
#: editor/editor_feature_profile.cpp
@@ -1783,25 +1876,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Error bij het opslaan van profiel naar pad: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Ongezet"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Reset naar standaard waarden"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Huidig Profiel:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Aktualiseren"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Wis Profiel"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Nieuw"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Verwijder Tile"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Beschikbare Profielen:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Aktualiseren"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importeren"
@@ -1810,20 +1912,22 @@ msgid "Export"
msgstr "Exporteren"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Beschikbare Profielen:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Huidig Profiel:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Klasse-opties"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Klasse opties:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Nieuwe profielnaam:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Wis Profiel"
+msgid "New profile name:"
+msgstr "Nieuwe profielnaam:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1846,7 +1950,8 @@ msgid "Select Current Folder"
msgstr "Huidige map selecteren"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Bestand Bestaat, Overschrijven?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1900,9 +2005,10 @@ msgid "Open a File or Directory"
msgstr "Bestand of map openen"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Opslaan"
@@ -1983,8 +2089,7 @@ msgid "Directories & Files:"
msgstr "Mappen & Bestanden:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Voorbeeld:"
@@ -2057,7 +2162,7 @@ msgstr "Thema-eigenschappen"
msgid "Enumerations"
msgstr "Enumeratie"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Constanten"
@@ -2146,7 +2251,7 @@ msgstr "Methode"
msgid "Signal"
msgstr "Signaal"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Constante"
@@ -2162,9 +2267,10 @@ msgstr "Thema-eigenschap"
msgid "Property:"
msgstr "Eigenschap:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Zet"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Zet %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2179,7 +2285,7 @@ msgid "Copy Selection"
msgstr "Selectie kopiëren"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2243,7 +2349,8 @@ msgid "Imported resources can't be saved."
msgstr "Geïmporteerde bronnen kunnen niet opgeslagen worden."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Oké"
@@ -2466,18 +2573,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Sla wijzigen aan '%s' op voor het afsluiten?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "%s gewijzigde bron(nen) opgeslagen."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Een wortelknoop is nodig om de scène op te slaan."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Scène opslaan als..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Deze operatie kan niet uitgevoerd worden zonder scène."
@@ -2672,7 +2784,7 @@ msgstr "Indeling verwijderen"
msgid "Default"
msgstr "Standaard"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Weergeven in Bestandssysteem"
@@ -2853,6 +2965,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Beheer ongebruikte bronnen..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Project hernoemen"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Sluit af naar Projectlijst"
@@ -3008,20 +3125,24 @@ msgstr "Exportsjablonen beheren..."
msgid "Help"
msgstr "Help"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Online Documentatie"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Open Godot online documentatie"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Vragen en antwoorden"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Meld een probleem"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Suggesties voor documentatie verzenden"
@@ -3030,7 +3151,8 @@ msgid "Community"
msgstr "Gemeenschap"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Over"
#: editor/editor_node.cpp
@@ -3129,6 +3251,16 @@ msgid "Manage Templates"
msgstr "Sjablonen beheren"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Installeer Vanuit Bestand"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Selecteer een Bron Mesh:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3166,7 +3298,7 @@ msgstr "Sjablonen importeren Vanuit ZIP-Bestand"
msgid "Template Package"
msgstr "Export Sjabloon Manager"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Bibliotheek Exporteren"
@@ -3209,6 +3341,11 @@ msgid "Select"
msgstr "Selecteer"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Huidige map selecteren"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Open 2D Bewerker"
@@ -3240,6 +3377,11 @@ msgstr "Waarschuwing!"
msgid "No sub-resources found."
msgstr "Geen deel-hulpbronnen gevonden."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Geen deel-hulpbronnen gevonden."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Creëren van Mesh Previews"
@@ -3264,33 +3406,34 @@ msgstr "Geïnstalleerde Plug-ins:"
msgid "Update"
msgstr "Update"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versie:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Auteur:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Staat:"
+#, fuzzy
+msgid "Author"
+msgstr "Auteurs"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Bewerken:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Status"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Meting:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Frame Tijd (sec)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Gemiddelde Tijd (sec)"
#: editor/editor_profiler.cpp
@@ -3310,6 +3453,16 @@ msgid "Self"
msgstr "Zelf"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Frame #:"
@@ -3351,14 +3504,6 @@ msgstr "Ongeldige RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"De geselecteerde hulpbron (%s) komt niet overeen met het verwachte type van "
-"deze eigenschap (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3383,40 +3528,6 @@ msgid "Pick a Viewport"
msgstr "Beeldvenster kiezen"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Nieuw Script"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Script uitbreiden"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Nieuw %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Maak Uniek"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Plakken"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Omzetten naar %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Geselecteerde knoop is geen Viewport!"
@@ -3445,6 +3556,49 @@ msgstr "Nieuwe Waarde:"
msgid "Add Key/Value Pair"
msgstr "Sleutel/waarde-paar toevoegen"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"De geselecteerde hulpbron (%s) komt niet overeen met het verwachte type van "
+"deze eigenschap (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Maak Uniek"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Plakken"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Omzetten naar %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Nieuw %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Nieuw Script"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Script uitbreiden"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3479,7 +3633,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Ben je de '_run' methode vergeten?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Houdt Ctrl ingedrukt om op gehele getallen af te ronden. Houdt Shift "
"ingedrukt voor preciezere veranderingen."
@@ -3501,116 +3656,69 @@ msgid "Import From Node:"
msgstr "Vanuit knoop importeren:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Opnieuw downloaden"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Verwijderen"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Geïnstalleerd)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Download"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
-"Officiële export sjablonen zijn niet beschikbaar voor ontwikkel builds."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Missend)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Huidig)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Het '%s' bestand bestaat niet."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Mirrors ophalen, even wachten a.u.b..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Verwijder sjabloon versie '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Kan exportsjablonen niet openen."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Ongeldig version.txt formaat in sjablonen: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Geen version.txt gevonden in sjablonen."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Fout bij het maken van een pad voor sjablonen:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Export Sjablonen Uitpakken"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Bezit met importeren:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Fout bij het laden van spiegelservers."
+msgid "Error requesting URL:"
+msgstr "Fout bij het opvragen van de URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Fout bij het inlezen van spiegelserverlijst (JSON). Meld deze fout "
-"alstublieft!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Verbinden met Mirror..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Geen downloadlinks gevonden voor deze versie. Directe download is alleen "
-"beschikbaar voor officiële uitgaven."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Kan hostname niet herleiden:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Kan niet oplossen."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Kan niet verbinden met host:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Kan niet verbinden."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Geen antwoord van host:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Geen antwoord."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Aanvraag Mislukt."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Blijft omleiden."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Aanvraag mislukt, te veel redirects"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Mislukt:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Aanvraag Mislukt."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Download voltooid."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3625,12 +3733,27 @@ msgstr ""
"De problematische sjabloon-archieven kunnen gevonden worden op '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Fout bij het opvragen van de URL:"
+msgid "Error getting the list of mirrors."
+msgstr "Fout bij het laden van spiegelservers."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Verbinden met Mirror..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Fout bij het inlezen van spiegelserverlijst (JSON). Meld deze fout "
+"alstublieft!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Geen downloadlinks gevonden voor deze versie. Directe download is alleen "
+"beschikbaar voor officiële uitgaven."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3675,44 +3798,139 @@ msgid "SSL Handshake Error"
msgstr "SSL Handshake Foutmelding"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Kan exportsjablonen niet openen."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Ongeldig version.txt formaat in sjablonen: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Geen version.txt gevonden in sjablonen."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Fout bij het maken van een pad voor sjablonen:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Export Sjablonen Uitpakken"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Bezit met importeren:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Verwijder sjabloon versie '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Android build-sjablonen aan het uitpakken"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Export Sjabloon Manager"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Huidige Versie:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Geïnstalleerde Versies:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Open een Bestand"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Verwijderen"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Initiële waarde van teller"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Downloadfout"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"Officiële export sjablonen zijn niet beschikbaar voor ontwikkel builds."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Installeer Vanuit Bestand"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Verwijder Sjabloon"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Sjablonen importeren Vanuit ZIP-Bestand"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Annuleer"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Selecteer sjabloonbestand"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Kan exportsjablonen niet openen."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Godot Export Templates"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Geïnstalleerde Versies:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Export Sjabloon Manager"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Verwijderen"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Selecteer sjabloonbestand"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Download Sjablonen"
+msgid "Godot Export Templates"
+msgstr "Godot Export Templates"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Selecteer mirror uit lijst: (Shift-klik: In Browser openen)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3847,29 +4065,62 @@ msgstr "Nieuw Script..."
msgid "New Resource..."
msgstr "Nieuwe bron..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Alles uitklappen"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Alles inklappen"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Dupliceren..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Zoek bestanden"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Naar prullenbak verplaatsen"
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Laatst bewerkt"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Laatst bewerkt"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Dupliceren..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Hernoemen..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Vorig(e) map/bestand"
@@ -3953,10 +4204,6 @@ msgstr "Vind..."
msgid "Replace..."
msgstr "Vervang..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Annuleer"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Zoeken: "
@@ -4182,53 +4429,55 @@ msgid "Failed to load resource."
msgstr "Bron laden mislukt."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Klap alle eigenschappen uit"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Eigenschappen"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Klap alle eigenschappen in"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Opslaan Als..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Eigenschappen"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Kopieer Parameters"
+msgid "Make Sub-Resources Unique"
+msgstr "Onderliggende bronnen zelfstandig maken"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Bron in klembord bewerken"
+msgid "Create a new resource in memory and edit it."
+msgstr "Maak een nieuwe bron in het geheugen en bewerk het."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Bron kopiëren"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Laad een bestaande bron van de schijf en bewerk het."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Integreer"
+msgid "Save the currently edited resource."
+msgstr "De zojuist bewerkte bron opslaan."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Onderliggende bronnen zelfstandig maken"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Opslaan Als..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Open in Help"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Niet in bronpad."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Maak een nieuwe bron in het geheugen en bewerk het."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Bron in klembord bewerken"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Laad een bestaande bron van de schijf en bewerk het."
+msgid "Copy Resource"
+msgstr "Bron kopiëren"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "De zojuist bewerkte bron opslaan."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Integreer"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4243,14 +4492,24 @@ msgid "History of recently edited objects."
msgstr "Geschiedenis van recent bewerkte objecten."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Objecteigenschappen."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Open Godot online documentatie"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Open Godot online documentatie"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filter eigenschappen"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Objecteigenschappen."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Wijzigingen kunnen verloren gaan!"
@@ -4278,6 +4537,15 @@ msgstr "Pluginnaam:"
msgid "Subfolder:"
msgstr "Submap:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Auteur:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versie:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Taal:"
@@ -4484,7 +4752,8 @@ msgid "Blend:"
msgstr "Mengen:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parameter veranderd"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4702,6 +4971,11 @@ msgid "Animation"
msgstr "Animatie"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Nieuw"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Bewerk overgangen..."
@@ -5043,10 +5317,18 @@ msgid "View Files"
msgstr "Bekijk Bestanden"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Download"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Verbindingsfout, probeer het nog eens."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Kan niet verbinden."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Kan niet verbinden met host:"
@@ -5055,16 +5337,20 @@ msgid "No response from host:"
msgstr "Geen antwoord van host:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Geen antwoord."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Kan hostname niet herleiden:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Aanvraag mislukt, statuscode:"
+msgid "Can't resolve."
+msgstr "Kan niet oplossen."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Aanvraag Mislukt."
+msgid "Request failed, return code:"
+msgstr "Aanvraag mislukt, statuscode:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5091,6 +5377,10 @@ msgid "Timeout."
msgstr "Tijdslimiet."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Mislukt:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Slechte downloadhash, bestand kan gemanipuleerd zijn."
@@ -5191,8 +5481,12 @@ msgid "All"
msgstr "Alle"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Geen resultaten voor \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5234,6 +5528,10 @@ msgstr "Laden..."
msgid "Assets ZIP File"
msgstr "Assets ZIP Bestand"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5243,9 +5541,10 @@ msgstr ""
"Sla uw scène op en probeer opnieuw."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Geen meshes om te bakken. Zorg ervoor dat ze een UV2 kanaal bevatten en dat "
"'Bake Light' vlag aan staat."
@@ -5489,9 +5788,10 @@ msgstr "Wijzig Ankers"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Spelcamera overschrijven\n"
"Overschrijft de spelcamera met beeldvenstercamera van de editor."
@@ -5499,11 +5799,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Game Camera Overschrijven\n"
-"Geen spelinstantie actief."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5558,6 +5857,7 @@ msgstr ""
"alleen door hun ouder bepaald."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5569,22 +5869,32 @@ msgid "Select Mode"
msgstr "Selecteermodus"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Sleep: Roteer"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "De uitgekozen knoop of overgang verwijderen."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt + Slepen : Verplaatsen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "De uitgekozen knoop of overgang verwijderen."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Druk 'v' om het draaipunt aan te passen, 'Shift+v' om het draaipunt te "
-"slepen (tijdens het bewegen)."
+"Toon alle knopen op de aangeklikte positie\n"
+"(zelfde als Alt+RMK in de selecteermodus)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt + RMB: Diepte lijst selectie"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5827,6 +6137,16 @@ msgid "Clear Pose"
msgstr "Houding wissen"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Knoop toevoegen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Scène(s) instantiëren"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Vermenigvuldig rasterstap met 2"
@@ -5839,6 +6159,52 @@ msgid "Pan View"
msgstr "Panweergave"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Uitzoomen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Uitzoomen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Uitzoomen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Uitzoomen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Uitzoomen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Uitzoomen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Voeg %s Toe"
@@ -6082,6 +6448,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Kon geen enkelvoudige convexe botsingsvorm maken."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Enkele convexe vorm maken"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Enkele convexe vorm maken"
@@ -6116,7 +6487,8 @@ msgid "No mesh to debug."
msgstr "Geen mesh om te debuggen."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Model heeft geen UV in deze laag"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6182,13 +6554,27 @@ msgstr ""
"Dit is de snelste (maar minst precieze) optie voor botsingsberekeningen."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Maak een enkel convex botsingselement als subelement"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Meerdere convexe botsingsonderelementen aanmaken"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Maakt een polygoon-gebaseerde botsingsvorm.\n"
"Deze optie ligt qua prestaties tussen de twee opties hierboven."
@@ -6250,7 +6636,6 @@ msgid "Mesh Library"
msgstr "Mesh Bibilotheek"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Element toevoegen"
@@ -6522,7 +6907,8 @@ msgid "Close Curve"
msgstr "Sluit Curve"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Opties"
@@ -6836,6 +7222,26 @@ msgstr "Bron laden"
msgid "ResourcePreloader"
msgstr "Bronnen-voorlader"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Horizontaal omdraaien"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Telling Gegenereerde Punten:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Telling Gegenereerde Punten:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Horizontaal omdraaien"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree heeft geen ingesteld pad naar een AnimationPlayer"
@@ -7041,7 +7447,7 @@ msgstr "Uitvoeren"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Zoeken"
@@ -7072,6 +7478,11 @@ msgid "Debug with External Editor"
msgstr "Debug met Externe Editor"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Online Documentatie"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Open Godot online documentatie."
@@ -7197,8 +7608,8 @@ msgstr "Ga Naar"
msgid "Cut"
msgstr "Knippen"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Alles selecteren"
@@ -7231,10 +7642,6 @@ msgid "Unfold All Lines"
msgstr "Ontvouw Alle Regels"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Kloon Omlaag"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Voltooi Symbool"
@@ -7388,6 +7795,28 @@ msgid "View Plane Transform."
msgstr "Bekijk Vlak Transformatie."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Geen"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Rotatiemodus"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Verplaats:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Schaal:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Schaling: "
@@ -7408,42 +7837,54 @@ msgid "Animation Key Inserted."
msgstr "Animatiesleutel Ingevoegd."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Pitch"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Yaw"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Grootte"
+#, fuzzy
+msgid "Size:"
+msgstr "Grootte: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Objecten Getekend"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Materiaal Wijzigingen"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Shader Wijzigingen"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Oppervlakte Wijzigingen"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Teken Aanroepingen"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Hoekpunten"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Bovenaanzicht."
@@ -7596,6 +8037,11 @@ msgid "Freelook Slow Modifier"
msgstr "Vrijekijk Snelheid Modificator"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Verander Camera grootte"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Beeldrotatie vergrendeld"
@@ -7614,6 +8060,11 @@ msgstr ""
"Het is geen betrouwbare indicatie voor werkelijke spelprestaties."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Omzetten naar %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm Dialoog"
@@ -7632,7 +8083,8 @@ msgstr ""
"Half open oog: Gizmo is ook zichtbaar door ondoorzichtige oppervlaktes."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Knopen aan vloer kleven"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7640,16 +8092,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Geen solide vloer gevonden om selectie aan te kleven."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Slepen: Roteren\n"
-"Atl+Slepen: Verplaatsen\n"
-"Alt+RMB: Diepte selectie"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Gebruik Lokale Ruimtemodus"
@@ -7658,6 +8100,10 @@ msgid "Use Snap"
msgstr "Kleven gebruiken"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Onderaanzicht"
@@ -7751,6 +8197,11 @@ msgid "View Grid"
msgstr "Bekijk Raster"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Beeldvensterinstellingen"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Instellingen..."
@@ -8042,11 +8493,6 @@ msgid "Snap Mode:"
msgstr "Kleefmodus:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Geen"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Aan pixels kleven"
@@ -8067,165 +8513,603 @@ msgid "Step:"
msgstr "Stap:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Scheiding:"
+msgid "Separation:"
+msgstr "Afzondering:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "TextureRegion"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Alle Items Toevoegen"
+#, fuzzy
+msgid "Colors"
+msgstr "Kleur"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Allen Toevoegen"
+#, fuzzy
+msgid "Fonts"
+msgstr "Lettertype"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Icoon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Stijl"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Geen deel-hulpbronnen gevonden."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Constanten"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Kleur Constante."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Niet gevonden!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Niet gevonden!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Geen deel-hulpbronnen gevonden."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Thema importeren"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Editor afsluiten?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Aan Het Analyseren"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filters:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Knoop uitkiezen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Selecteer een map om te scannen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Selecteer eerst een instellingsitem!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Selecteer eerst een instellingsitem!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Selecteer eerst een instellingsitem!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Selecteer eerst een instellingsitem!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Selecteer eerst een instellingsitem!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Alles inklappen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Alles uitklappen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Selecteer sjabloonbestand"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Selecteer Punten"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Alles selecteren"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Scène importeren"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Verwijder Alle Items"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Verwijder Alles"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Verwijder Item"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Bewerk Thema"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Verwijder Alle Items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Verwijder Alle Items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Verwijder Alle Items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Verwijder Alle Items"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Thema Bewerkingsmenu."
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Class Items Toevoegen"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Class Items Toevoegen"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Element toevoegen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Element toevoegen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Alle Items Toevoegen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Class Items Verwijderen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Class Items Verwijderen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Knoop hernoemen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Knoop hernoemen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Geselecteerd element verwijderen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Ongeldig bestand, geen audiobusindeling."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Sjablonen beheren"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Bewerkbaar Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Type:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Type:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Element toevoegen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Alle Items Toevoegen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Verwijder Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Class Items Verwijderen"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Creëer Leeg Sjabloon"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Class Items Verwijderen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Verwijder Alle Items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "GUI Thema Items"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Knoopnaam:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Thema importeren"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Standaard"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Bewerk Thema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Bron verwijderen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Thema importeren"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Anim Track Hernoemen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Bulk hernoemen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Overschrijvers"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Type"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Element toevoegen"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Creëer Lege Sjabloon Editor"
+#, fuzzy
+msgid "Node Types:"
+msgstr "Knooptype"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Laad standaard"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Creëer Derivatie Huidig Editor Thema"
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Overschrijvers"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Thema"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Exportsjablonen beheren..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Voorbeeld"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Voorbeeld bijwerken"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Selecteer een Bron Mesh:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Toggel Knop"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Knop Uitschakelen"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Item"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Item Uitschakelen"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Item Aanvinken"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Item Aangevinkt"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Radio Item"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Radio Item Aangevinkt"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Genoemde Sep."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Submenu"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Subitem 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Subitem 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Heeft"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Veel"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "LineEdit Uitgeschakeld"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Tabblad 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Tabblad 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Tabblad 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Bewerkbaar Item"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Subtree"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Heeft,Veel,Opties"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Data Type:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Icoon"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Stijl"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Lettertype"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Kleur"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Ongeldig bestand, geen audiobusindeling."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Theme Bestand"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8397,6 +9281,10 @@ msgid "Priority"
msgstr "Prioriteit"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Icoon"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z Index"
@@ -8732,11 +9620,6 @@ msgid "Commit Changes"
msgstr "Commit veranderingen"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Status"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
"Bekijk de veranderde bestanden voordat ze gebruikt worden in de nieuwste "
@@ -9640,7 +10523,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Bewerk visuele eigenschap"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9766,7 +10650,8 @@ msgid "Script"
msgstr "Script"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Script-exporteermodus:"
#: editor/project_export.cpp
@@ -9774,19 +10659,21 @@ msgid "Text"
msgstr "Tekst"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Gecompileerd"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Versleuteld (verstrek hieronder de sleutel)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Ongeldige encryptiesleutel (moet 64 tekens lang zijn)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Script encryptiesleutel (256-bits als hexadecimaal):"
#: editor/project_export.cpp
@@ -9859,7 +10746,8 @@ msgid "Imported Project"
msgstr "Geïmporteerd project"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Ongeldige projectnaam."
#: editor/project_manager.cpp
@@ -9895,6 +10783,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Kan project.godot niet in projectpad maken."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Fout bij het openen van het pakketbestand, geen zip-formaat."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "De volgende bestanden konden niet worden uitgepakt:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Pakket succesvol geïnstalleerd!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Project hernoemen"
@@ -10073,20 +10973,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Weet je zeker dat je %d projecten wilt uitvoeren?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"%d projecten uit de lijst verwijderen?\n"
-"De inhoud van de projectmappen wordt niet gewijzigd."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Selecteer apparaat uit de lijst"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Project uit de lijst verwijderen?\n"
-"De inhoud van de projectmap wordt niet gewijzigd."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Selecteer apparaat uit de lijst"
#: editor/project_manager.cpp
msgid ""
@@ -10118,7 +11012,8 @@ msgid "Project Manager"
msgstr "Projectbeheer"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projecten"
#: editor/project_manager.cpp
@@ -10130,10 +11025,25 @@ msgid "Last Modified"
msgstr "Laatst bewerkt"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Project Exporteren"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Project hernoemen"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Inlezen"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projecten"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Selecteer een map om te doorzoeken"
@@ -10142,18 +11052,41 @@ msgid "New Project"
msgstr "Nieuw Project"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Geïmporteerd project"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Project hernoemen"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Lijst opruimen"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Sjablonen"
+msgid "About"
+msgstr "Over"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Materiaalbibliotheek"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Nu herstarten"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Verwijder Alles"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Kan project niet uitvoeren"
@@ -10166,8 +11099,14 @@ msgstr ""
"Wilt u officiële voorbeeldprojecten verkennen in de Materiaalbibliotheek?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filter eigenschappen"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10181,6 +11120,10 @@ msgid "Key "
msgstr "Toets "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Controllerknop"
@@ -10224,6 +11167,10 @@ msgstr "Alle Apparaten"
msgid "Device"
msgstr "Apparaat"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Druk op een toets..."
@@ -10365,7 +11312,8 @@ msgid "Override for Feature"
msgstr "Override voor Feature"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Voeg vertaling toe"
#: editor/project_settings_editor.cpp
@@ -10373,11 +11321,13 @@ msgid "Remove Translation"
msgstr "Verwijder vertaling"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Bronpadomleiding toevoegen"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Bronomleiding toevoegen"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Bronomleiding toevoegen"
#: editor/project_settings_editor.cpp
@@ -10651,6 +11601,10 @@ msgid "Post-Process"
msgstr "Post-Process"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Stijl"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Houd"
@@ -10817,12 +11771,30 @@ msgid "Delete node \"%s\"?"
msgstr "Verwijder knoop \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Kan deze operatie niet uitvoeren met de wortelknoop."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Deze operatie kan niet worden uitgevoerd op geïnstantieerde scènes."
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10882,6 +11854,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Kan niet werken aan knopen waar de huidige scène van erft!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Deze operatie kan niet worden uitgevoerd op geïnstantieerde scènes."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Script toevoegen"
@@ -10930,10 +11906,6 @@ msgid "Load As Placeholder"
msgstr "Laden als"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Open Godot online documentatie"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11222,6 +12194,12 @@ msgstr ""
"kunnen niet in een externe editor bewerkt worden."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Klasse Naam:"
@@ -11290,6 +12268,10 @@ msgid "Copy Error"
msgstr "Kopieer Fout"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Videogeheugen"
@@ -11574,6 +12556,16 @@ msgstr "Ongeldige dictionary van instantie (ongeldige subklassen)"
msgid "Object can't provide a length."
msgstr "Object kan geen lengte geven."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exporteer Mesh Library"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exporteren..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Volgend Blad"
@@ -11615,6 +12607,11 @@ msgid "GridMap Paint"
msgstr "GridMap tekenen"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "GridMap-selectie vullen"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Grid Map"
@@ -11865,6 +12862,16 @@ msgid "Add Output Port"
msgstr "Uitvoerpoort toevoegen"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Type veranderen"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Verander input poort naam"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Een bestaande ingebouwde functie overschrijven."
@@ -11979,6 +12986,11 @@ msgid "Add Preload Node"
msgstr "Preload-knoop toevoegen"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Knoop toevoegen"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Knoop/knopen uit de scèneboom toevoegen"
@@ -12208,10 +13220,6 @@ msgstr "Zoek VisualScript"
msgid "Get %s"
msgstr "Krijg %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Zet %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Package naam ontbreekt."
@@ -12243,6 +13251,40 @@ msgid "Select device from the list"
msgstr "Selecteer apparaat uit de lijst"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Exporteer alles"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Verwijderen"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Aan het laden, even wachten a.u.b..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Kon het subproces niet opstarten!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Aangepast script uitvoeren ..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Map kon niet gemaakt worden."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Het hulpmiddel 'apksigner' kon niet gevonden worden."
@@ -12292,9 +13334,8 @@ msgid "Unable to find Android SDK platform-tools' adb command."
msgstr ""
#: platform/android/export/export.cpp
-#, fuzzy
msgid "Please check in the Android SDK directory specified in Editor Settings."
-msgstr "Ongeldig Android SDK pad voor custom build in Editor Settings."
+msgstr "Controleer de opgegeven Android SDK map in de Editor instellingen."
#: platform/android/export/export.cpp
msgid "Missing 'build-tools' directory!"
@@ -12351,6 +13392,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr "\"Export AAB\" is alleen geldig als \"Use Custom Build\" aan staat."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Bestanden aan het doornemen,\n"
+"Wacht alstublieft..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Kon template niet openen voor export:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "%s aan het toevoegen..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Exporteer alles"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
"Bestandsnaam niet toegestaan! Android App Bundle vereist een *.aab extensie."
@@ -12364,6 +13447,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Bestandsnaam niet toegestaan! Android APK vereist een *.apk extensie."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12384,6 +13471,21 @@ msgstr ""
"Herinstalleer Android build template vanuit het 'Project' menu."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Kan project.godot niet bewerken in projectpad."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Kon bestand niet schrijven:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Bouwen van Android Project (gradle)"
@@ -12407,11 +13509,54 @@ msgstr ""
"Niet in staat om het export bestand te kopiëren en hernoemen. Controleer de "
"gradle project folder voor outputs."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animatie niet gevonden: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Contouren aan het creëeren..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Kon template niet openen voor export:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "%s aan het toevoegen..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Kon bestand niet schrijven:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Identifier ontbreekt."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Het karakter '%s' is geen geldige identifier."
@@ -12442,10 +13587,6 @@ msgstr ""
"Voer de geëxporteerde HTML uit in de standaard browser van het systeem."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Kon bestand niet schrijven:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Kon template niet openen voor export:"
@@ -12454,16 +13595,49 @@ msgid "Invalid export template:"
msgstr "Ongeldige export template:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Kon bestand niet schrijven:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Kon bestand niet schrijven:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Kon de custom HTML shell niet lezen:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Kon de opstartafbeelding niet lezen:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Map kon niet gemaakt worden."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Gebruik de standaard opstartafbeelding."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Fout bij het opslaan van de scène."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Ongeldige identifier:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12797,9 +13971,8 @@ msgid "Preparing environment"
msgstr "Omgeving aan het voorbereiden"
#: scene/3d/baked_lightmap.cpp
-#, fuzzy
msgid "Generating capture"
-msgstr "Bouw Lightmappen"
+msgstr "Lichtmappen genereren"
#: scene/3d/baked_lightmap.cpp
msgid "Saving lightmaps"
@@ -12891,6 +14064,13 @@ msgstr ""
"GIProbes worden niet ondersteund door het GLES2 grafische stuurprogramma.\n"
"Gebruik in plaats daarvan een BakedLightmap."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12976,6 +14156,18 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Knoop A en Knoop B moeten PhysicsBody's zijn"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12984,6 +14176,46 @@ msgstr ""
"De \"Remote Path\" eigenschap moet wijzen naar een geldige Spatial (of van "
"Spatial afgeleide) knoop om te werken."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Dit lichaam zal worden genegeerd totdat je een mesh instelt."
@@ -13044,6 +14276,10 @@ msgstr "In BlendTree knoop '%s', animatie niet gevonden: '%s'"
msgid "Animation not found: '%s'"
msgstr "Animatie niet gevonden: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "In knoop '%s', ongeldige animatie: '%s'."
@@ -13215,6 +14451,27 @@ msgid "Invalid comparison function for that type."
msgstr "Ongeldige vergelijkingsfunctie voor dat type."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Varyings kunnen alleen worden toegewezenin vertex functies."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Toewijzing aan functie."
@@ -13223,13 +14480,179 @@ msgid "Assignment to uniform."
msgstr "Toewijzing aan uniform."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Varyings kunnen alleen worden toegewezenin vertex functies."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Constanten kunnen niet worden aangepast."
+#~ msgid "Package Contents:"
+#~ msgstr "Pakketinhoud:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Profiel '%s' verwijderen? (Onomkeerbaar)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Ingeschakelde Eigenschappen:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Ingeschakelde Functionaliteit:"
+
+#~ msgid "Unset"
+#~ msgstr "Ongezet"
+
+#~ msgid "Class Options"
+#~ msgstr "Klasse-opties"
+
+#~ msgid "Set"
+#~ msgstr "Zet"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "%s gewijzigde bron(nen) opgeslagen."
+
+#~ msgid "Q&A"
+#~ msgstr "Vragen en antwoorden"
+
+#~ msgid "Status:"
+#~ msgstr "Staat:"
+
+#~ msgid "Edit:"
+#~ msgstr "Bewerken:"
+
+#~ msgid "Redownload"
+#~ msgstr "Opnieuw downloaden"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Geïnstalleerd)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Missend)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Aanvraag Mislukt."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Blijft omleiden."
+
+#~ msgid "Download Complete."
+#~ msgstr "Download voltooid."
+
+#~ msgid "Remove Template"
+#~ msgstr "Verwijder Sjabloon"
+
+#~ msgid "Download Templates"
+#~ msgstr "Download Sjablonen"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Selecteer mirror uit lijst: (Shift-klik: In Browser openen)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Naar prullenbak verplaatsen"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Klap alle eigenschappen uit"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Klap alle eigenschappen in"
+
+#~ msgid "Copy Params"
+#~ msgstr "Kopieer Parameters"
+
+#~ msgid "Open in Help"
+#~ msgstr "Open in Help"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Game Camera Overschrijven\n"
+#~ "Geen spelinstantie actief."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Sleep: Roteer"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Druk 'v' om het draaipunt aan te passen, 'Shift+v' om het draaipunt te "
+#~ "slepen (tijdens het bewegen)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt + RMB: Diepte lijst selectie"
+
+#~ msgid "Clone Down"
+#~ msgstr "Kloon Omlaag"
+
+#~ msgid "Yaw"
+#~ msgstr "Yaw"
+
+#~ msgid "Size"
+#~ msgstr "Grootte"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Slepen: Roteren\n"
+#~ "Atl+Slepen: Verplaatsen\n"
+#~ "Alt+RMB: Diepte selectie"
+
+#~ msgid "Sep.:"
+#~ msgstr "Scheiding:"
+
+#~ msgid "Add All"
+#~ msgstr "Allen Toevoegen"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Thema Bewerkingsmenu."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Creëer Leeg Sjabloon"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Creëer Lege Sjabloon Editor"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Creëer Derivatie Huidig Editor Thema"
+
+#~ msgid "Data Type:"
+#~ msgstr "Data Type:"
+
+#~ msgid "Theme File"
+#~ msgstr "Theme Bestand"
+
+#~ msgid "Compiled"
+#~ msgstr "Gecompileerd"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "%d projecten uit de lijst verwijderen?\n"
+#~ "De inhoud van de projectmappen wordt niet gewijzigd."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Project uit de lijst verwijderen?\n"
+#~ "De inhoud van de projectmap wordt niet gewijzigd."
+
+#~ msgid "Templates"
+#~ msgstr "Sjablonen"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Bronpadomleiding toevoegen"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Kan deze operatie niet uitvoeren met de wortelknoop."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Kon de opstartafbeelding niet lezen:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Gebruik de standaard opstartafbeelding."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Een animatiespeler kan zichzelf niet animeren, alleen andere spelers."
@@ -13334,9 +14757,6 @@ msgstr "Constanten kunnen niet worden aangepast."
#~ msgstr ""
#~ "De huidige scène is nooit opgeslagen, sla het op voor het uitvoeren."
-#~ msgid "Not in resource path."
-#~ msgstr "Niet in bronpad."
-
#~ msgid "Revert"
#~ msgstr "Herstellen"
@@ -13428,9 +14848,6 @@ msgstr "Constanten kunnen niet worden aangepast."
#~ msgid "Input"
#~ msgstr "Invoer"
-#~ msgid "Properties:"
-#~ msgstr "Eigenschappen:"
-
#~ msgid "Methods:"
#~ msgstr "Methodes:"
@@ -13723,10 +15140,6 @@ msgstr "Constanten kunnen niet worden aangepast."
#~ msgstr "Splits Pad"
#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Selecteer een map om te scannen"
-
-#, fuzzy
#~ msgid "Add Node.."
#~ msgstr "Node Toevoegen"
@@ -13789,9 +15202,6 @@ msgstr "Constanten kunnen niet worden aangepast."
#~ msgid "Public Methods:"
#~ msgstr "Publieke Methodes:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "GUI Thema Items"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "GUI Thema Items:"
@@ -13929,9 +15339,6 @@ msgstr "Constanten kunnen niet worden aangepast."
#~ msgid "Set Transitions to:"
#~ msgstr "Zet Overgangen Naar:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Anim Track Hernoemen"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Anim Track Wijzig Interpolatie"
@@ -14068,9 +15475,6 @@ msgstr "Constanten kunnen niet worden aangepast."
#~ msgid "OK :("
#~ msgstr "OK :("
-#~ msgid "Separation:"
-#~ msgstr "Afzondering:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Textuur Regio Editor"
@@ -14119,9 +15523,6 @@ msgstr "Constanten kunnen niet worden aangepast."
#~ msgid "Can't write file."
#~ msgstr "Kan niet naar bestand schrijven."
-#~ msgid "Not found!"
-#~ msgstr "Niet gevonden!"
-
#~ msgid "Replace By"
#~ msgstr "Vervangen Door"
diff --git a/editor/translations/or.po b/editor/translations/or.po
index 87528cdac5..89cbdfbf2b 100644
--- a/editor/translations/or.po
+++ b/editor/translations/or.po
@@ -507,7 +507,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -533,7 +534,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -554,6 +556,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -570,6 +576,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -618,7 +628,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -704,12 +714,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -764,11 +776,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -818,6 +828,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -887,7 +898,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -902,6 +913,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -923,8 +942,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -997,16 +1016,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1051,7 +1072,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1172,37 +1193,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1210,7 +1235,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1274,7 +1299,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1354,7 +1379,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1441,6 +1466,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1456,16 +1489,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1481,7 +1514,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1620,7 +1653,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1652,15 +1725,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1678,7 +1751,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1686,17 +1759,23 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+msgid "Create Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Remove Profile"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1705,19 +1784,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1741,7 +1820,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1795,9 +1874,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1878,8 +1958,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1950,7 +2029,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2035,7 +2114,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2051,8 +2130,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2068,7 +2148,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2132,7 +2212,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2326,18 +2407,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2507,7 +2592,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2688,6 +2773,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2820,13 +2909,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2834,6 +2922,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2842,7 +2934,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2939,6 +3031,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2965,7 +3065,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3006,6 +3106,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3037,6 +3141,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3061,21 +3169,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3083,11 +3188,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3107,6 +3212,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3148,12 +3263,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3171,22 +3280,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3200,37 +3332,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3265,7 +3380,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3285,64 +3400,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3350,7 +3471,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3360,135 +3485,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Other Installed Versions:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3614,22 +3770,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3637,6 +3819,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3716,10 +3902,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3940,52 +4122,49 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
+msgid "Paste Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4001,7 +4180,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4009,6 +4192,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4036,6 +4223,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4235,7 +4431,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4449,6 +4645,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4785,10 +4986,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4797,15 +5006,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4833,6 +5046,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4933,7 +5150,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4976,6 +5197,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4984,8 +5209,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5219,15 +5444,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5281,6 +5507,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5292,19 +5519,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5536,6 +5769,14 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5548,6 +5789,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5788,6 +6069,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5820,7 +6105,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5879,13 +6164,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5939,7 +6236,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6211,7 +6507,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6515,6 +6812,22 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6718,7 +7031,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6749,6 +7062,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6871,8 +7189,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6905,10 +7223,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7060,6 +7374,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7080,39 +7413,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Vertices:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7268,6 +7605,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7283,6 +7624,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7296,7 +7641,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7304,18 +7649,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7412,6 +7754,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7701,11 +8047,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7726,7 +8067,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7734,156 +8075,520 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8052,6 +8757,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8368,11 +9077,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9192,7 +9896,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9307,7 +10011,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9315,7 +10019,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9323,11 +10027,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9400,7 +10104,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9434,6 +10138,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9578,15 +10294,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9613,7 +10325,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9625,10 +10337,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9637,11 +10361,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9649,6 +10385,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9659,8 +10403,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9670,6 +10418,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9711,6 +10463,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9850,7 +10606,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9858,11 +10614,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10130,6 +10886,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10292,11 +11052,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10352,6 +11130,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10398,10 +11180,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10672,6 +11450,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10740,6 +11524,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11023,6 +11811,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11064,6 +11860,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11306,6 +12106,14 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11414,6 +12222,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11637,10 +12449,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11670,6 +12478,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11766,6 +12602,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11778,6 +12650,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11792,6 +12668,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11811,11 +12700,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11844,27 +12771,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12212,6 +13163,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12281,12 +13239,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12335,6 +13345,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12482,15 +13496,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index 3c51593e02..edaf8ab701 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -52,8 +52,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-07-05 14:32+0000\n"
-"Last-Translator: Rafal Brozio <rafal.brozio@gmail.com>\n"
+"PO-Revision-Date: 2021-07-29 21:48+0000\n"
+"Last-Translator: Tomek <kobewi4e@gmail.com>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
"godot/pl/>\n"
"Language: pl\n"
@@ -62,7 +62,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.8-dev\n"
+"X-Generator: Weblate 4.7.2-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -571,7 +571,8 @@ msgstr "sekund"
msgid "FPS"
msgstr "klatek na sekundÄ™"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -597,7 +598,8 @@ msgstr "Skaluj zaznaczone"
msgid "Scale From Cursor"
msgstr "Skaluj od kursora"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplikuj zaznaczone"
@@ -618,6 +620,11 @@ msgid "Go to Previous Step"
msgstr "Przejdź do poprzedniego kroku"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Resetuj"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optymalizuj animacjÄ™"
@@ -634,6 +641,11 @@ msgid "Use Bezier Curves"
msgstr "Użyj krzywych Beziera"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Wklej ścieżki"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Optymalizator animacji"
@@ -682,7 +694,7 @@ msgid "Select Tracks to Copy"
msgstr "Wybierz ścieżki do skopiowania"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -768,12 +780,14 @@ msgid "Toggle Scripts Panel"
msgstr "Przełącz panel skryptów"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Przybliż"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -830,11 +844,9 @@ msgid "Add"
msgstr "Dodaj"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -885,6 +897,7 @@ msgstr "Nie można połączyć sygnału"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -954,7 +967,8 @@ msgid "Edit..."
msgstr "Edytuj..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Idź do metody"
#: editor/create_dialog.cpp
@@ -969,6 +983,14 @@ msgstr "Zmień"
msgid "Create New %s"
msgstr "Utwórz nowy %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Brak wyników dla \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -990,8 +1012,8 @@ msgstr "Szukaj:"
msgid "Matches:"
msgstr "PasujÄ…ce:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1067,19 +1089,23 @@ msgid "Owners Of:"
msgstr "Właściciele:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Usunąć wybrane pliki z projektu? (nie można tego cofnąć)\n"
"Możesz znaleźć usunięte pliki w systemowym koszu, by je przywrócić."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Usuwane pliki są wymagane przez inne zasoby, żeby mogły one działać.\n"
"Usunąć mimo to? (nie można tego cofnąć)\n"
@@ -1127,7 +1153,7 @@ msgstr "Eksplorator osieroconych zasobów"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1252,28 +1278,41 @@ msgstr "Komponenty"
msgid "Licenses"
msgstr "Licencje"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Błąd otwierania pliku pakietu, nie jest w formacie ZIP."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Błąd otwierania pliku pakietu (nie jest w formacie ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (już istnieje)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Dekompresja zasobów"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Nie powiodło się wypakowanie z pakietu następujących plików:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "I jeszcze %s plików."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Pakiet zainstalowano poprawnie!"
#: editor/editor_asset_installer.cpp
@@ -1281,16 +1320,13 @@ msgstr "Pakiet zainstalowano poprawnie!"
msgid "Success!"
msgstr "Sukces!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Zawartość paczki:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Zainstaluj"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Instalator pakietu"
#: editor/editor_audio_buses.cpp
@@ -1354,7 +1390,8 @@ msgid "Bypass"
msgstr "Omiń"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Opcje magistrali"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1434,7 +1471,7 @@ msgstr "Dodaj magistralÄ™"
msgid "Add a new Audio Bus to this layout."
msgstr "Dodaj nową Szynę Audio do tego układu."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1521,6 +1558,15 @@ msgid "Can't add autoload:"
msgstr "Nie można dodać Autoload:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Plik nie istnieje."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Dodaj AutoLoad"
@@ -1536,16 +1582,17 @@ msgid "Node Name:"
msgstr "Nazwa węzła:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nazwa"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Zmienna"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Wklej parametry"
@@ -1561,7 +1608,7 @@ msgstr "Zachowywanie lokalnych zmian..."
msgid "Updating scene..."
msgstr "Aktualizacja sceny ..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[pusty]"
@@ -1716,8 +1763,49 @@ msgid "Import Dock"
msgstr "Dok importowania"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Usunąć profil \"%s\"? (nieodwracalne)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Bieżący)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1748,15 +1836,18 @@ msgid "Enable Contextual Editor"
msgstr "Włącz edytor kontekstowy"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Włączone właściwości:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Właściwości:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Włączone funkcjonalności:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Funkcje"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Włączone klasy:"
#: editor/editor_feature_profile.cpp
@@ -1775,25 +1866,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Błąd zapisywania profilu do ścieżki \"%s\"."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Wymaż"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Resetuj do domyślnych"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Bieżący profil:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Ustaw na bieżący"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Usuń profil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Nowy"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Usuń Kafelek"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Dostępne profile:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Ustaw na bieżący"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Zaimportuj"
@@ -1802,20 +1902,22 @@ msgid "Export"
msgstr "Eksportuj"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Dostępne profile:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Bieżący profil:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Opcje klasy"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Opcje Tekstury"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Nazwa nowego profilu:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Usuń profil"
+msgid "New profile name:"
+msgstr "Nazwa nowego profilu:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1838,7 +1940,8 @@ msgid "Select Current Folder"
msgstr "Wybierz bieżący katalog"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Plik istnieje, nadpisać?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1892,9 +1995,10 @@ msgid "Open a File or Directory"
msgstr "Otwórz plik lub katalog"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Zapisz"
@@ -1975,8 +2079,7 @@ msgid "Directories & Files:"
msgstr "Katalogi i pliki:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "PodglÄ…d:"
@@ -2047,7 +2150,7 @@ msgstr "Właściwości motywu"
msgid "Enumerations"
msgstr "Wyliczenia"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Stałe"
@@ -2136,7 +2239,7 @@ msgstr "Metoda"
msgid "Signal"
msgstr "Sygnał"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Stała"
@@ -2152,9 +2255,10 @@ msgstr "Właściwość motywu"
msgid "Property:"
msgstr "Właściwość:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Ustaw"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Ustaw %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2169,7 +2273,7 @@ msgid "Copy Selection"
msgstr "Kopiuj zaznaczenie"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2233,7 +2337,8 @@ msgid "Imported resources can't be saved."
msgstr "Zaimportowane zasoby nie mogą być zapisane."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2454,18 +2559,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Zapisać zmiany w \"%s\" przed zamknięciem?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Zapisano %s zmodyfikowanych zasobów."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Scena musi posiadać korzeń, by ją zapisać."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Zapisz scenÄ™ jako..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Ta operacja nie może zostać wykonana bez sceny."
@@ -2660,7 +2770,7 @@ msgstr "Usuń układ"
msgid "Default"
msgstr "Domyślny"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Pokaż w systemie plików"
@@ -2841,6 +2951,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Eksplorator osieroconych zasobów..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Zmień nazwę projektu"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Wyjdź do listy projektów"
@@ -2996,20 +3111,25 @@ msgstr "ZarzÄ…dzaj szablonami eksportu..."
msgid "Help"
msgstr "Pomoc"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Dokumentacja online"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Otwórz dokumentację"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Pytania i odpowiedzi"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Zgłoś błąd"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "Ustaw Wartość"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Oceń dokumentację"
@@ -3018,7 +3138,8 @@ msgid "Community"
msgstr "Społeczność"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "O silniku"
#: editor/editor_node.cpp
@@ -3115,6 +3236,16 @@ msgid "Manage Templates"
msgstr "ZarzÄ…dzaj szablonami"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Zainstaluj z pliku"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Wybierz siatkę źródłową:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3151,7 +3282,7 @@ msgstr "Zaimportuj Szablony z pliku ZIP"
msgid "Template Package"
msgstr "Szablonowy pakiet"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Wyeksportuj bibliotekÄ™"
@@ -3194,6 +3325,11 @@ msgid "Select"
msgstr "Zaznacz"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Wybierz bieżący katalog"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Otwórz edytor 2D"
@@ -3225,6 +3361,11 @@ msgstr "Ostrzeżenie!"
msgid "No sub-resources found."
msgstr "Nie znaleziono podzasobów."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Nie znaleziono podzasobów."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Tworzenie podglÄ…du Mesh"
@@ -3249,33 +3390,34 @@ msgstr "Zainstalowane wtyczki:"
msgid "Update"
msgstr "Odśwież"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Wersja:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Status:"
+#, fuzzy
+msgid "Author"
+msgstr "Autorzy"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Edytuj:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Status"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Zmierzono:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Czas klatki (sek)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Åšredni czas (sek)"
#: editor/editor_profiler.cpp
@@ -3295,6 +3437,16 @@ msgid "Self"
msgstr "Pojedynczo"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Klatka #:"
@@ -3336,14 +3488,6 @@ msgstr "Nieprawidłowy RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Wybrany zasób (%s) nie zgadza się z żadnym rodzajem przewidywanym dla tego "
-"użycia (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3367,40 +3511,6 @@ msgid "Pick a Viewport"
msgstr "Wybierz Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Nowy skrypt"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Rozszerz skrypt"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Nowy %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Zrób unikalny"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Wklej"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Konwersja do %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Wybrany węzeł to nie Viewport!"
@@ -3429,6 +3539,49 @@ msgstr "Nowa wartość:"
msgid "Add Key/Value Pair"
msgstr "Dodaj parę klucz/wartość"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Wybrany zasób (%s) nie zgadza się z żadnym rodzajem przewidywanym dla tego "
+"użycia (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Zrób unikalny"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Wklej"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Konwersja do %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Nowy %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Nowy skrypt"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Rozszerz skrypt"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3464,7 +3617,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Zapomniano metody \"_run\"?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Przytrzyma Ctrl, by zaokrąglić do liczb całkowitych. Przytrzymaj Shift dla "
"bardziej precyzyjnych zmian."
@@ -3486,115 +3640,69 @@ msgid "Import From Node:"
msgstr "Zaimportuj z węzła:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Pobierz ponownie"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Odinstaluj"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Zainstalowano)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Pobierz"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
-"Oficjalne szablony eksportowe nie są dostępne dla kompilacji "
-"programistycznych."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Nie znaleziono)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Bieżący)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Nie ma pliku \"%s\"."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Pobieranie informacji o serwerach lustrzanych, proszę czekać..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Usunąć wersję \"%s\" szablonu?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Nie można otworzyć pliku zip szablonów eksportu."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Nieprawidłowy format pliku version.txt w szablonach: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Nie znaleziono pliku version.txt w szablonach."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Błąd tworzenia ścieżki dla szablonów:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Wypakowywanie szablonów eksportu"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importowanie:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Błąd odbierania listy mirrorów."
+msgid "Error requesting URL:"
+msgstr "Błąd podczas żądania adresu URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "Błąd parsowania JSONa listy mirrorów. Zgłoś proszę ten błąd!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "ÅÄ…czenie z serwerem lustrzanym..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Nie znaleziono plików do pobrania dla tej wersji. Pobieranie jest dostępne "
-"tylko dla oficjalnych wydań."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Nie udało się odnaleźć hosta:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Nie można rozwiązać."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Nie można połączyć do hosta:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Nie można połączyć."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Brak odpowiedzi hosta:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Brak odpowiedzi."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Żądanie nie powiodło się."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Pętla przekierowań."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Żądanie nieudane, zbyt dużo przekierowań"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Nie powiodło się:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Żądanie nie powiodło się."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Pobieranie zakończone."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3609,12 +3717,25 @@ msgstr ""
"Problematyczne archiwa szablonów mogą być znalezione w \"%s\"."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Błąd podczas żądania adresu URL:"
+msgid "Error getting the list of mirrors."
+msgstr "Błąd odbierania listy mirrorów."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "ÅÄ…czenie z serwerem lustrzanym..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "Błąd parsowania JSONa listy mirrorów. Zgłoś proszę ten błąd!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Nie znaleziono plików do pobrania dla tej wersji. Pobieranie jest dostępne "
+"tylko dla oficjalnych wydań."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3659,44 +3780,140 @@ msgid "SSL Handshake Error"
msgstr "Błąd podczas wymiany (handshake) SSL"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Nie można otworzyć pliku zip szablonów eksportu."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Nieprawidłowy format pliku version.txt w szablonach: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Nie znaleziono pliku version.txt w szablonach."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Błąd tworzenia ścieżki dla szablonów:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Wypakowywanie szablonów eksportu"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importowanie:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Usunąć wersję \"%s\" szablonu?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Dekompresja źródeł budowania Androida"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Menedżer szablonów eksportu"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Aktualna wersja:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Zainstalowane szablony:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Otwórz plik"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Odinstaluj"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Początkowa wartość dla licznika"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Błąd pobierania"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"Oficjalne szablony eksportowe nie są dostępne dla kompilacji "
+"programistycznych."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Zainstaluj z pliku"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Usuń szablon"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Zaimportuj Szablony z pliku ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Anuluj"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Wybierz plik szablonu"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Nie można otworzyć pliku zip szablonów eksportu."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Szablony eksportu Godota"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Zainstalowane szablony:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Menedżer szablonów eksportu"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Odinstaluj"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Pobierz szablony eksportu"
+msgid "Select Template File"
+msgstr "Wybierz plik szablonu"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr "Szablony eksportu Godota"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Wybierz serwer z listy: (Shift+Klik: Otwórz w przeglądarce)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3831,29 +4048,62 @@ msgstr "Nowy skrypt..."
msgid "New Resource..."
msgstr "Nowy zasób..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Rozwiń wszystko"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Zwiń wszystko"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplikuj..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Przeszukaj pliki"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "PrzenieÅ› do kosza"
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Data modyfikacji"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Data modyfikacji"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplikuj..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Zmień nazwę..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Poprzedni folder/plik"
@@ -3937,10 +4187,6 @@ msgstr "Znajdź..."
msgid "Replace..."
msgstr "Zamień..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Anuluj"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Znajdź: "
@@ -4165,53 +4411,55 @@ msgid "Failed to load resource."
msgstr "Nie udało się wczytać zasobu."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Rozwiń wszystkie właściwości"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Właściwości"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Zwiń wszystkie właściwości"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Zapisz jako..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Właściwości"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Kopiuj parametry"
+msgid "Make Sub-Resources Unique"
+msgstr "Utwórz unikalne podzasoby"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Edytuj schowek zasobów"
+msgid "Create a new resource in memory and edit it."
+msgstr "Utwórz nowy zasób w pamięci i edytuj go."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Kopiuj zasób"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Wczytaj istniejący zasób i edytuj go."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Stwórz wbudowany"
+msgid "Save the currently edited resource."
+msgstr "Zapisz aktualnie edytowany zasób."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Utwórz unikalne podzasoby"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Zapisz jako..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Otwórz w Pomocy"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Nie znaleziono w ścieżce zasobów."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Utwórz nowy zasób w pamięci i edytuj go."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Edytuj schowek zasobów"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Wczytaj istniejący zasób i edytuj go."
+msgid "Copy Resource"
+msgstr "Kopiuj zasób"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Zapisz aktualnie edytowany zasób."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Stwórz wbudowany"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4226,14 +4474,24 @@ msgid "History of recently edited objects."
msgstr "Historia ostatnio edytowanych obiektów."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Właściwości obiektu."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Otwórz dokumentację"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Otwórz dokumentację"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtruj właściwości"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Właściwości obiektu."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Zmiany mogą zostać utracone!"
@@ -4261,6 +4519,15 @@ msgstr "Nazwa wtyczki:"
msgid "Subfolder:"
msgstr "Podfolder:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Wersja:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Język:"
@@ -4467,7 +4734,8 @@ msgid "Blend:"
msgstr "Mieszanie:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parametr zmieniony"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4687,6 +4955,11 @@ msgid "Animation"
msgstr "Animacja"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Nowy"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Edytuj przejścia..."
@@ -5028,10 +5301,18 @@ msgid "View Files"
msgstr "Pokaż pliki"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Pobierz"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Błąd połączenia. Spróbuj ponownie."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Nie można połączyć."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Nie można połączyć do hosta:"
@@ -5040,16 +5321,20 @@ msgid "No response from host:"
msgstr "Brak odpowiedzi hosta:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Brak odpowiedzi."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Nie udało się odnaleźć hosta:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Żądanie nie powiodło się, zwracany kod:"
+msgid "Can't resolve."
+msgstr "Nie można rozwiązać."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Żądanie nie powiodło się."
+msgid "Request failed, return code:"
+msgstr "Żądanie nie powiodło się, zwracany kod:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5076,6 +5361,10 @@ msgid "Timeout."
msgstr "Przekroczenie czasu."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Nie powiodło się:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
"Zła suma kontrolna pobranego pliku. Zakładamy, że ktoś przy nim majstrował."
@@ -5177,8 +5466,12 @@ msgid "All"
msgstr "Wszystko"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Brak wyników dla \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5220,6 +5513,10 @@ msgstr "Wczytywanie..."
msgid "Assets ZIP File"
msgstr "Plik ZIP assetów"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5230,11 +5527,11 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
-"Brak siatek do cieniowania. Upewnij się, że zawierają kanał UV2 i że flaga "
-"\"Bake Light\" jest ustawiona."
+"Brak siatek do wypalenia. Upewnij się, że zawierają kanał UV2 i że flagi "
+"\"Use In Baked Light\" oraz \"Generate Lightmap\" sÄ… ustawione."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -5479,9 +5776,10 @@ msgstr "Zmień zakotwiczenie"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Przejmij kamerÄ™ gry\n"
"Zastępuje kamerę gry kamerą z widoku edytora."
@@ -5489,11 +5787,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Przejmij kamerÄ™ gry\n"
-"Brak uruchomionej instancji gry."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5548,6 +5845,7 @@ msgstr ""
"przez jego rodzica."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5559,22 +5857,32 @@ msgid "Select Mode"
msgstr "Tryb zaznaczenia"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Przeciągnij: Obróć"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Usuń zaznaczony węzeł lub przejście."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Przeciągnij: Przesuń"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Usuń zaznaczony węzeł lub przejście."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Wciśnij \"V\" by zmienić punkt zaczepienia (pivot), \"Shift+V\" by przesunąć "
-"punkt zaczepienia (podczas poruszania)."
+"Pokaż listę obiektów w miejscu kliknięcia\n"
+"(tak samo jak Alt+RMB w trybie zaznaczania)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+PPM: Wybór listy głębi"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5760,7 +6068,7 @@ msgstr "Powiększ do zaznaczenia"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Preview Canvas Scale"
-msgstr "Skala płótna podglądu"
+msgstr "Podejrzyj skalę płótna"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Translation mask for inserting keys."
@@ -5812,6 +6120,16 @@ msgid "Clear Pose"
msgstr "Wyczyść pozę"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Dodaj węzeł"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Dodaj instancjÄ™ sceny"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Podwój wielkość siatki"
@@ -5824,6 +6142,52 @@ msgid "Pan View"
msgstr "Przesuń widok"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Oddal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Oddal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Oddal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Oddal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Oddal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Oddal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Dodaj %s"
@@ -6068,6 +6432,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Nie udało się utworzyć pojedynczego wypukłego kształtu kolizji."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Utwórz pojedynczy wypukły kształt"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Utwórz pojedynczy wypukły kształt"
@@ -6101,7 +6470,8 @@ msgid "No mesh to debug."
msgstr "Brak siatki do debugowania."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Model nie posiada UV w tej warstwie"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6167,13 +6537,27 @@ msgstr ""
"To jest najszybsza (ale najmniej dokładna) opcja dla detekcji kolizji."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Utwórz pojedynczego wypukłego sąsiada kolizji"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Utwórz wiele wypukłych sąsiadów kolizji"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Tworzy kształt kolizji oparty o wielokąty.\n"
"To jest złoty środek względem wydajności powyższych dwóch opcji."
@@ -6235,7 +6619,6 @@ msgid "Mesh Library"
msgstr "Biblioteka meshów"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Dodaj element"
@@ -6507,7 +6890,8 @@ msgid "Close Curve"
msgstr "Zamknij krzywÄ…"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Opcje"
@@ -6817,6 +7201,26 @@ msgstr "Wczytaj zasób"
msgid "ResourcePreloader"
msgstr "Wstępny ładowacz zasobów"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Odbij poziomo"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Wygeneruj chmurę punktów:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Wygeneruj chmurę punktów:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Odbij poziomo"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "Węzeł AnimationTree nie ma ustawionej ścieżki do AnimationPlayer"
@@ -7022,7 +7426,7 @@ msgstr "Uruchom"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Szukaj"
@@ -7053,6 +7457,11 @@ msgid "Debug with External Editor"
msgstr "Debugowanie z zewnętrznym edytorem"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Dokumentacja online"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Otwórz dokumentację Godota online."
@@ -7180,8 +7589,8 @@ msgstr "Idź do"
msgid "Cut"
msgstr "Wytnij"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Zaznacz wszystko"
@@ -7214,10 +7623,6 @@ msgid "Unfold All Lines"
msgstr "Rozwiń wszystkie linie"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Duplikuj liniÄ™"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Uzupełnij symbol"
@@ -7371,6 +7776,28 @@ msgid "View Plane Transform."
msgstr "Pokaż transformację płaszczyzny."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Brak"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Status:"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Przesuń:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Skala:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Skalowanie: "
@@ -7391,42 +7818,54 @@ msgid "Animation Key Inserted."
msgstr "Wstawiono klucz animacji."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Wysokość"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Odchylenie"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Rozmiar"
+#, fuzzy
+msgid "Size:"
+msgstr "Rozmiar: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Narysowane obiekty"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Zmiany materiału"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Zmiany Shadera"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Zmiany powierzchni"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Wywołania rysowania"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Wierzchołki"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Widok z góry."
@@ -7579,6 +8018,11 @@ msgid "Freelook Slow Modifier"
msgstr "Wolny modyfikator swobodnego widoku"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Zmień rozmiar kamery"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Obroty widoku zablokowane"
@@ -7598,6 +8042,11 @@ msgstr ""
"Nie może być używana jako miarodajny wskaźnik wydajności w grze."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Konwersja do %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Okno dialogowe XForm"
@@ -7617,7 +8066,8 @@ msgstr ""
"powierzchnie (\"x-ray\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Przyciągnij węzły do podłogi"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7625,16 +8075,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Nie udało się znaleźć stałej podłogi do przyciągnięcia zaznaczenia."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Pociągnięcie: Obrót\n"
-"Alt+Pociągnięcie: Poruszenie\n"
-"Alt+PPM: Lista wyboru głębi"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Użyj przestrzeni lokalnej"
@@ -7643,6 +8083,10 @@ msgid "Use Snap"
msgstr "Użyj przyciągania"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Widok z dołu"
@@ -7736,6 +8180,11 @@ msgid "View Grid"
msgstr "Pokaż siatkę"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Ustawienia widoku"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Ustawienia..."
@@ -8026,11 +8475,6 @@ msgid "Snap Mode:"
msgstr "Tryb przyciÄ…gania:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Brak"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "PrzyciÄ…gaj do pikseli"
@@ -8051,165 +8495,603 @@ msgid "Step:"
msgstr "Krok:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Sep.:"
+msgid "Separation:"
+msgstr "Separacja:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "Obszar tekstury"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Dodaj wszystkie elementy"
+#, fuzzy
+msgid "Colors"
+msgstr "Kolor"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Fonts"
+msgstr "Font"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Dodaj wszystko"
+#, fuzzy
+msgid "Icons"
+msgstr "Ikona"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Styleboxes"
+msgstr "StyleBox"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Nie znaleziono podzasobów."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Stałe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Stała koloru."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Nie znaleziono!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Nie znaleziono!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Nie znaleziono podzasobów."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Zaimportuj motyw"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Zamknąć edytor?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analizowanie"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtr: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Wybierz węzeł"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Wybierz podział, by go usunąć."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Najpierw wybierz ustawienie z listy!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Najpierw wybierz ustawienie z listy!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Najpierw wybierz ustawienie z listy!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Najpierw wybierz ustawienie z listy!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Najpierw wybierz ustawienie z listy!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Zwiń wszystko"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Rozwiń wszystko"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Wybierz plik szablonu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Zaznacz Punkty"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Zaznacz wszystko"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importuj ScenÄ™"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Usuń wszystkie elementy"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Usuń wszystkie"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Usuń element"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Edytuj motyw"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Usuń wszystkie elementy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Usuń wszystkie elementy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Usuń wszystkie elementy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Usuń wszystkie elementy"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Menu edycji motywu."
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Dodaj klasę elementów"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Dodaj klasę elementów"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Dodaj element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Dodaj element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Dodaj wszystkie elementy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Usuń elementy klasy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Usuń elementy klasy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Zmień nazwę węzła"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Zmień nazwę węzła"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Usuń zaznaczony element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Plik niepoprawny, nie jest układem magistral audio."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "ZarzÄ…dzaj szablonami"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Edytowalny element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Typ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Typ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Dodaj element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Dodaj wszystkie elementy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Usuń element"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Usuń elementy klasy"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Utwórz pusty szablon"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Usuń elementy klasy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Usuń wszystkie elementy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Elementy motywu interfejsu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nazwa węzła:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Utwórz pusty szablon edytora"
+#, fuzzy
+msgid "Import Items"
+msgstr "Zaimportuj motyw"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Utwórz z aktualnego motywu edytora"
+#, fuzzy
+msgid "Default Theme"
+msgstr "Domyślny"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Edytuj motyw"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Usuń zasób"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Zaimportuj motyw"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Zmień nazwę ściezki animacji"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Grupowa zmiana nazwy"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Nadpisuje"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Typ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Dodaj element"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Typ węzła"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Wczytaj domyślny"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Nadpisuje"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Motyw"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "ZarzÄ…dzaj szablonami eksportu..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "PodglÄ…d"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Odśwież podgląd"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Wybierz siatkę źródłową:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Przełączany przycisk"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Wyłączony przycisk"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Wyłączony element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Element wyboru"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Zaznaczony element wyboru"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Element opcji"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Zaznaczony element opcji"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Nazwany sep."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Podmenu"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Podelement 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Podpozycja 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Ma"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Wiele"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "Wyłączony LineEdit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Zakładka 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Zakładka 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Zakładka 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Edytowalny element"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Poddrzewo"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Ma,Wiele,Opcji"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Typ danych:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Ikona"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Styl"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Font"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Kolor"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Plik niepoprawny, nie jest układem magistral audio."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Plik motywu"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8382,6 +9264,10 @@ msgid "Priority"
msgstr "Priorytet"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Ikona"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Indeks Z"
@@ -8716,11 +9602,6 @@ msgid "Commit Changes"
msgstr "Commituj zmiany"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Status"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "Zobacz różnice przed commitowaniem do najnowszej wersji"
@@ -9611,7 +10492,8 @@ msgid "VisualShader"
msgstr "Shader wizualny"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Edytuj Wizualną Właściwość"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9737,7 +10619,8 @@ msgid "Script"
msgstr "Skrypt"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Tryb eksportu skryptów:"
#: editor/project_export.cpp
@@ -9745,19 +10628,21 @@ msgid "Text"
msgstr "Tekst"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Skompilowany"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Zaszyfrowany (podaj klucz poniżej)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Nieprawidłowy klucz szyfrowania (długość musi wynosić 64 znaki)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Klucz szyfrujÄ…cy skryptu (256-bit jako hex):"
#: editor/project_export.cpp
@@ -9831,7 +10716,8 @@ msgid "Imported Project"
msgstr "Zaimportowano projekt"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Nieprawidłowa nazwa projektu."
#: editor/project_manager.cpp
@@ -9867,6 +10753,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Nie można utworzyć project.godot w ścieżka projektu."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Błąd otwierania pliku pakietu, nie jest w formacie ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Nie powiodło się wypakowanie z pakietu następujących plików:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Pakiet zainstalowano poprawnie!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Zmień nazwę projektu"
@@ -10045,20 +10943,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Czy na pewno chcesz uruchomić %d projektów na raz?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Usunąć %d projektów z listy?\n"
-"Zawartość folderów projektów nie zostanie zmodyfikowana."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Wybierz urzÄ…dzenie z listy"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Usunąć projekt z listy?\n"
-"Zawartość folderu projektu nie zostanie zmodyfikowana."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Wybierz urzÄ…dzenie z listy"
#: editor/project_manager.cpp
msgid ""
@@ -10091,7 +10983,8 @@ msgid "Project Manager"
msgstr "Menedżer projektów"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projekty"
#: editor/project_manager.cpp
@@ -10103,10 +10996,25 @@ msgid "Last Modified"
msgstr "Data modyfikacji"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Wyeksportuj projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Zmień nazwę projektu"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Skanuj"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projekty"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Wybierz folder do skanowania"
@@ -10115,18 +11023,41 @@ msgid "New Project"
msgstr "Nowy projekt"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Zaimportowano projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Zmień nazwę projektu"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Usuń brakujące"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Szablony"
+msgid "About"
+msgstr "O silniku"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Biblioteka zasobów"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Uruchom ponownie"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Usuń wszystkie"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Nie można uruchomić projektu"
@@ -10139,8 +11070,14 @@ msgstr ""
"Czy chcesz zobaczyć oficjalne przykładowe projekty w Bibliotece Zasobów?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtruj właściwości"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10154,6 +11091,10 @@ msgid "Key "
msgstr "Klawisz "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Przycisk joysticka"
@@ -10197,6 +11138,10 @@ msgstr "Wszystkie urzÄ…dzenia"
msgid "Device"
msgstr "UrzÄ…dzenie"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Naciśnij klawisz..."
@@ -10338,7 +11283,8 @@ msgid "Override for Feature"
msgstr "Nadpisanie dla cechy"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Dodaj tłumaczenie"
#: editor/project_settings_editor.cpp
@@ -10346,11 +11292,13 @@ msgid "Remove Translation"
msgstr "Usuń tłumaczenie"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Dodaj zmapowaną ścieżkę"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Dodaj mapowanie zasobu"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Dodaj mapowanie zasobu"
#: editor/project_settings_editor.cpp
@@ -10622,6 +11570,10 @@ msgid "Post-Process"
msgstr "Przetwarzanie końcowe"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Styl"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Bez zmian"
@@ -10788,12 +11740,30 @@ msgid "Delete node \"%s\"?"
msgstr "Usunąć węzeł \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Nie można tego wykonać z głównym węzłem."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Tej operacji nie można wykonać na dziedziczącej scenie."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10852,6 +11822,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Nie można działać na węzłach z których dziedziczy obecna scena!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Tej operacji nie można wykonać na dziedziczącej scenie."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Dołącz skrypt"
@@ -10900,10 +11874,6 @@ msgid "Load As Placeholder"
msgstr "Wczytaj jako zastępczy"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Otwórz dokumentację"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11196,6 +12166,12 @@ msgstr ""
"edytowane przy użyciu zewnętrznego edytora."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Nazwa klasy:"
@@ -11264,6 +12240,10 @@ msgid "Copy Error"
msgstr "Kopiuj błąd"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Wideo RAM"
@@ -11548,6 +12528,16 @@ msgstr "Niepoprawna instancja słownika (niepoprawne podklasy)"
msgid "Object can't provide a length."
msgstr "Obiekt nie może podać długości."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Eksportuj bibliotekę Meshów"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Eksport..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Następna płaszczyzna"
@@ -11589,6 +12579,11 @@ msgid "GridMap Paint"
msgstr "Malowanie GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "GridMap Wypełnij zaznaczenie"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Siatka"
@@ -11838,6 +12833,16 @@ msgid "Add Output Port"
msgstr "Dodaj port wyjściowy"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Zmień typ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Zmień nazwę portu wejściowego"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "ZastÄ…p istniejÄ…cÄ… funkcjÄ™ wbudowanÄ…."
@@ -11950,6 +12955,11 @@ msgid "Add Preload Node"
msgstr "Dodaj wstępnie wczytany węzeł"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Dodaj węzeł"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Dodaj węzeł(y) z drzewa"
@@ -12179,10 +13189,6 @@ msgstr "Przeszukaj VisualScript"
msgid "Get %s"
msgstr "Przyjmij %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Ustaw %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Brakuje nazwy paczki."
@@ -12212,6 +13218,40 @@ msgid "Select device from the list"
msgstr "Wybierz urzÄ…dzenie z listy"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Eksportowanie wszystkiego"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Odinstaluj"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Wczytywanie, proszę czekać..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Nie można stworzyć instancji sceny!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Uruchamiam skrypt..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Nie można utworzyć katalogu."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Nie udało się znaleźć narzędzia \"apksigner\"."
@@ -12327,6 +13367,48 @@ msgstr ""
"\"Eksportuj AAB\" jest ważne tylko gdy \"Use Custom Build\" jest włączone."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Skanowanie plików,\n"
+"Proszę czekać..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Nie można otworzyć szablonu dla eksportu:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Dodawanie %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Eksportowanie wszystkiego"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
"Nieprawidłowa nazwa pliku! Android App Bundle wymaga rozszerzenia *.aab."
@@ -12340,6 +13422,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nieprawidłowa nazwa pliku! APK Androida wymaga rozszerzenia *.apk."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12360,6 +13446,21 @@ msgstr ""
"Zainstaluj ponownie szablon z menu \"Projekt\"."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Nie znaleziono project.godot w ścieżce projektu."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Nie można zapisać pliku:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Budowanie projektu Androida (gradle)"
@@ -12384,11 +13485,54 @@ msgstr ""
"Nie udało się skopiować i przemianować pliku eksportu, sprawdź folder "
"projektu gradle po informacje."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animacja nie znaleziona: \"%s\""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Tworzenie konturów..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Nie można otworzyć szablonu dla eksportu:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Dodawanie %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Nie można zapisać pliku:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "Uzgadnianie APK..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Brakuje identyfikatora."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Znak \"%s\" nie jest dozwolony w identyfikatorze."
@@ -12417,10 +13561,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Uruchom wyeksportowany dokument HTML w domyślnej przeglądarce."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Nie można zapisać pliku:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Nie można otworzyć szablonu dla eksportu:"
@@ -12429,16 +13569,49 @@ msgid "Invalid export template:"
msgstr "Szablon eksportu nieprawidłowy:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Nie można zapisać pliku:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Nie można zapisać pliku:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Nie można odczytać niestandardowe powłoki HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Nie można odczytać pliku obrazu splash:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Nie można utworzyć katalogu."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Używam domyślnego obrazka powitalnego."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Błąd podczas zapisywania sceny."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Niepoprawny identyfikator:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12876,6 +14049,13 @@ msgstr ""
"GIProbes nie są obsługiwane przez sterownik wideo GLES2.\n"
"Zamiast tego użyj BakedLightmap."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "SpotLight z kątem szerszym niż 90 stopni nie może rzucać cieni."
@@ -12960,6 +14140,18 @@ msgstr "Złącze nie jest połączone z żadnym węzłem PhysicsBody"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Node A i Node B muszą być różnymi węzłami PhysicsBody"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12968,6 +14160,46 @@ msgstr ""
"Właściwość \"Remote Path\" musi wskazywać na poprawny węzeł typu Spatial lub "
"pochodnego."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "To ciało będzie ignorowane, dopóki nie ustawisz siatki."
@@ -13029,6 +14261,10 @@ msgstr "W węźle BlendTree '%s', animacja nie znaleziona: '%s'"
msgid "Animation not found: '%s'"
msgstr "Animacja nie znaleziona: \"%s\""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "W węźle \"%s\", nieprawidłowa animacja: \"%s\"."
@@ -13200,6 +14436,27 @@ msgid "Invalid comparison function for that type."
msgstr "Niewłaściwa funkcja porównania dla tego typu."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Varying może być przypisane tylko w funkcji wierzchołków."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Przypisanie do funkcji."
@@ -13208,13 +14465,179 @@ msgid "Assignment to uniform."
msgstr "Przypisanie do uniformu."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Varying może być przypisane tylko w funkcji wierzchołków."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Stałe nie mogą być modyfikowane."
+#~ msgid "Package Contents:"
+#~ msgstr "Zawartość paczki:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Usunąć profil \"%s\"? (nieodwracalne)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Włączone właściwości:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Włączone funkcjonalności:"
+
+#~ msgid "Unset"
+#~ msgstr "Wymaż"
+
+#~ msgid "Class Options"
+#~ msgstr "Opcje klasy"
+
+#~ msgid "Set"
+#~ msgstr "Ustaw"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Zapisano %s zmodyfikowanych zasobów."
+
+#~ msgid "Q&A"
+#~ msgstr "Pytania i odpowiedzi"
+
+#~ msgid "Status:"
+#~ msgstr "Status:"
+
+#~ msgid "Edit:"
+#~ msgstr "Edytuj:"
+
+#~ msgid "Redownload"
+#~ msgstr "Pobierz ponownie"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Zainstalowano)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Nie znaleziono)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Żądanie nie powiodło się."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Pętla przekierowań."
+
+#~ msgid "Download Complete."
+#~ msgstr "Pobieranie zakończone."
+
+#~ msgid "Remove Template"
+#~ msgstr "Usuń szablon"
+
+#~ msgid "Download Templates"
+#~ msgstr "Pobierz szablony eksportu"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Wybierz serwer z listy: (Shift+Klik: Otwórz w przeglądarce)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "PrzenieÅ› do kosza"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Rozwiń wszystkie właściwości"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Zwiń wszystkie właściwości"
+
+#~ msgid "Copy Params"
+#~ msgstr "Kopiuj parametry"
+
+#~ msgid "Open in Help"
+#~ msgstr "Otwórz w Pomocy"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Przejmij kamerÄ™ gry\n"
+#~ "Brak uruchomionej instancji gry."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Przeciągnij: Obróć"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Wciśnij \"V\" by zmienić punkt zaczepienia (pivot), \"Shift+V\" by "
+#~ "przesunąć punkt zaczepienia (podczas poruszania)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+PPM: Wybór listy głębi"
+
+#~ msgid "Clone Down"
+#~ msgstr "Duplikuj liniÄ™"
+
+#~ msgid "Yaw"
+#~ msgstr "Odchylenie"
+
+#~ msgid "Size"
+#~ msgstr "Rozmiar"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Pociągnięcie: Obrót\n"
+#~ "Alt+Pociągnięcie: Poruszenie\n"
+#~ "Alt+PPM: Lista wyboru głębi"
+
+#~ msgid "Sep.:"
+#~ msgstr "Sep.:"
+
+#~ msgid "Add All"
+#~ msgstr "Dodaj wszystko"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Menu edycji motywu."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Utwórz pusty szablon"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Utwórz pusty szablon edytora"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Utwórz z aktualnego motywu edytora"
+
+#~ msgid "Data Type:"
+#~ msgstr "Typ danych:"
+
+#~ msgid "Theme File"
+#~ msgstr "Plik motywu"
+
+#~ msgid "Compiled"
+#~ msgstr "Skompilowany"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Usunąć %d projektów z listy?\n"
+#~ "Zawartość folderów projektów nie zostanie zmodyfikowana."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Usunąć projekt z listy?\n"
+#~ "Zawartość folderu projektu nie zostanie zmodyfikowana."
+
+#~ msgid "Templates"
+#~ msgstr "Szablony"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Dodaj zmapowaną ścieżkę"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Nie można tego wykonać z głównym węzłem."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Nie można odczytać pliku obrazu splash:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Używam domyślnego obrazka powitalnego."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "AnimationPlayer nie może animować sam siebie, tylko inne węzły tego typu."
@@ -13269,9 +14692,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "W tej lokalizacji istnieje już plik lub folder o podanej nazwie."
-#~ msgid "Aligning APK..."
-#~ msgstr "Uzgadnianie APK..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "Nie udało się ukończyć uzgadniania APK."
@@ -13335,9 +14755,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ "Aktualna scena nie została zapisana, proszę zapisać scenę przed "
#~ "uruchomieniem."
-#~ msgid "Not in resource path."
-#~ msgstr "Nie znaleziono w ścieżce zasobów."
-
#~ msgid "Revert"
#~ msgstr "Przywróć"
@@ -13439,9 +14856,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "Input"
#~ msgstr "Wejście"
-#~ msgid "Properties:"
-#~ msgstr "Właściwości:"
-
#~ msgid "Methods:"
#~ msgstr "Metody:"
@@ -13784,10 +15198,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "Connect two points to make a split."
#~ msgstr "Połącz dwa punkty, by utworzyć podział."
-#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Wybierz podział, by go usunąć."
-
#~ msgid "Add Node.."
#~ msgstr "Dodaj węzeł..."
@@ -13856,9 +15266,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "Public Methods:"
#~ msgstr "Metody publiczne:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Elementy motywu interfejsu"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Elementy motywu GUI:"
@@ -13880,9 +15287,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "Match case"
#~ msgstr "Uwzględnij wielkość liter"
-#~ msgid "Filter: "
-#~ msgstr "Filtr: "
-
#~ msgid "Ok"
#~ msgstr "Ok"
@@ -13922,9 +15326,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "Rotate 270 degrees"
#~ msgstr "Obróć o 270 stopni"
-#~ msgid "Variable"
-#~ msgstr "Zmienna"
-
#~ msgid "Errors:"
#~ msgstr "Błędy:"
@@ -13994,9 +15395,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "Set Transitions to:"
#~ msgstr "Ustaw przejścia na:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Zmień nazwę ściezki animacji"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Zmień funkcję interpolacji animacji"
@@ -14146,12 +15544,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "StyleBox Preview:"
#~ msgstr "PodglÄ…d StyleBox:"
-#~ msgid "StyleBox"
-#~ msgstr "StyleBox"
-
-#~ msgid "Separation:"
-#~ msgstr "Separacja:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Edytor regionu tekstury"
@@ -14225,12 +15617,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "Nie można było utworzyć engine.cfg w ścieżce projektu."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "Nie znaleziono project.godot w ścieżce projektu."
-
-#~ msgid "Not found!"
-#~ msgstr "Nie znaleziono!"
-
#~ msgid "Replace By"
#~ msgstr "ZastÄ…p przez"
@@ -14590,9 +15976,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "Jakość Kompresji Textury (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "Opcje Tekstury"
-
#~ msgid "Please specify some files!"
#~ msgstr "Proszę podać kilka plików !"
@@ -14731,9 +16114,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "Zoom Set..."
#~ msgstr "Ustaw przybliżenie..."
-#~ msgid "Set a Value"
-#~ msgstr "Ustaw Wartość"
-
#~ msgid "Parse BBCode"
#~ msgstr "Parsuj BBCode"
@@ -14842,9 +16222,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgid "Instance at Cursor"
#~ msgstr "Instancja w miejscu kursora"
-#~ msgid "Could not instance scene!"
-#~ msgstr "Nie można stworzyć instancji sceny!"
-
#~ msgid "Use Default Light"
#~ msgstr "Użyj domyślnego światła"
@@ -14905,10 +16282,6 @@ msgstr "Stałe nie mogą być modyfikowane."
#~ msgstr "Przejście"
#, fuzzy
-#~ msgid "State"
-#~ msgstr "Status:"
-
-#, fuzzy
#~ msgid "Password"
#~ msgstr "Hasło:"
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index 675c9cf506..1bcfe47610 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -536,7 +536,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -562,7 +563,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -584,6 +586,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -600,6 +606,11 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Paste yer Node"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -648,7 +659,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -735,12 +746,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -799,11 +812,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -855,6 +866,7 @@ msgstr "Slit th' Node"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -929,8 +941,9 @@ msgid "Edit..."
msgstr "Edit"
#: editor/connections_dialog.cpp
-msgid "Go To Method"
-msgstr ""
+#, fuzzy
+msgid "Go to Method"
+msgstr "Toggle ye Breakpoint"
#: editor/create_dialog.cpp
#, fuzzy
@@ -945,6 +958,14 @@ msgstr "Change"
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -966,8 +987,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1040,16 +1061,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1094,7 +1117,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1215,37 +1238,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1253,7 +1280,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1320,8 +1347,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "Yar, Blow th' Selected Down!"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1402,7 +1430,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1489,6 +1517,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1504,16 +1540,17 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr ""
+#, fuzzy
+msgid "Global Variable"
+msgstr "Rename Variable"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1529,7 +1566,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1677,7 +1714,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1712,15 +1789,15 @@ msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr "Paste yer Node"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1739,7 +1816,7 @@ msgid "Error saving profile to path: '%s'."
msgstr "Blimey! I can't make th' signature object!"
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1748,17 +1825,26 @@ msgid "Current Profile:"
msgstr "Slit th' Node"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr ""
+#, fuzzy
+msgid "Create Profile"
+msgstr "Yar, Blow th' Selected Down!"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Discharge ye' Variable"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "yer Nodes doing nothin':"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1768,22 +1854,21 @@ msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Available Profiles:"
-msgstr "yer Nodes doing nothin':"
+msgid "Configure Selected Profile:"
+msgstr "Slit th' Node"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
+msgid "Extra Options:"
msgstr "Yar, Blow th' Selected Down!"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "Erase Profile"
-msgstr "Yar, Blow th' Selected Down!"
+msgid "New profile name:"
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1807,7 +1892,7 @@ msgid "Select Current Folder"
msgstr "Slit th' Node"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1862,9 +1947,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1947,8 +2033,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -2022,7 +2107,7 @@ msgstr "Paste yer Node"
msgid "Enumerations"
msgstr "Yer functions:"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2110,7 +2195,7 @@ msgstr ""
msgid "Signal"
msgstr "Yer signals:"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2127,9 +2212,10 @@ msgstr "Paste yer Node"
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2145,7 +2231,7 @@ msgid "Copy Selection"
msgstr "Yar, Blow th' Selected Down!"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2209,7 +2295,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2405,18 +2492,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2587,7 +2678,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
#, fuzzy
msgid "Show in FileSystem"
@@ -2775,6 +2866,11 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Rename Function"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2911,13 +3007,13 @@ msgstr "Discharge ye' Variable"
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr ""
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Yer functions:"
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2925,6 +3021,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2933,7 +3033,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -3032,6 +3132,15 @@ msgid "Manage Templates"
msgstr "Discharge ye' Variable"
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Yer anchorage not be on a resource file, ye bilge rat!"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3059,7 +3168,7 @@ msgstr ""
msgid "Template Package"
msgstr "Discharge ye' Variable"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3100,6 +3209,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Slit th' Node"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3131,6 +3245,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3157,34 +3275,30 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-#, fuzzy
-msgid "Edit:"
-msgstr "Edit"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3204,6 +3318,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3248,12 +3372,6 @@ msgstr ": Evil arguments: "
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3271,22 +3389,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3300,37 +3441,21 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Discharge ye' Function"
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3366,7 +3491,7 @@ msgstr ""
#: editor/editor_spin_slider.cpp
#, fuzzy
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Smash yer Ctrl key t' sink yer Getter. Smash yer Shift t' sink a generic "
"signature."
@@ -3388,66 +3513,72 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr ""
+#, fuzzy
+msgid "Error requesting URL:"
+msgstr "Rename Variable"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Slit th' Node"
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Yer index property name be thrown overboard!"
+msgid "Request ended up in a redirect loop."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error creating path for templates:"
-msgstr "Blimey! I can't make th' signature object!"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Cannot remove temporary file:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3456,7 +3587,11 @@ msgid "Error getting the list of mirrors."
msgstr "Blimey! I can't make th' signature object!"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3466,143 +3601,178 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr ""
+#, fuzzy
+msgid "Can't Connect"
+msgstr "Slit th' Node"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Connected"
+msgstr "Slit th' Node"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr ""
+#, fuzzy
+msgid "Connection Error"
+msgstr "Slit th' Node"
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error requesting URL:"
-msgstr "Rename Variable"
+msgid "Can't open the export templates file."
+msgstr "Discharge ye' Variable"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Yer index property name be thrown overboard!"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Yer index property name be thrown overboard!"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Blimey! I can't make th' signature object!"
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Can't Connect"
-msgstr "Slit th' Node"
+msgid "Current Version:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Connected"
+msgid "Open Folder"
msgstr "Slit th' Node"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Uninstall"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Connection Error"
-msgstr "Slit th' Node"
+msgid "Download from:"
+msgstr "Discharge ye' Variable"
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Official export templates aren't available for development builds."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Install from File"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Remove Template"
-msgstr "Discharge ye' Variable"
+msgid "Cancel the download of the templates."
+msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Select Template File"
-msgstr "Slit th' Node"
+msgid "Other Installed Versions:"
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
+msgid "Uninstall Template"
msgstr "Discharge ye' Variable"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr ""
+#, fuzzy
+msgid "Select Template File"
+msgstr "Slit th' Node"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Download Templates"
+msgid "Godot Export Templates"
msgstr "Discharge ye' Variable"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3734,30 +3904,59 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Move to Trash"
-msgstr "Forge yer Node!"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "Slit th' Node"
@@ -3843,10 +4042,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -4075,53 +4270,50 @@ msgstr ""
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Expand All Properties"
-msgstr "Add yer Getter Property"
+msgid "Copy Properties"
+msgstr "Paste yer Node"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Collapse All Properties"
+msgid "Paste Properties"
msgstr "Paste yer Node"
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
-
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4137,8 +4329,14 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr ""
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Yer functions:"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "Yer functions:"
#: editor/inspector_dock.cpp
#, fuzzy
@@ -4146,6 +4344,11 @@ msgid "Filter properties"
msgstr "Paste yer Node"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Paste yer Node"
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4173,6 +4376,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4385,7 +4597,7 @@ msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr "Change"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4611,6 +4823,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4954,10 +5171,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4966,15 +5191,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5002,6 +5231,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5102,7 +5335,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5145,6 +5382,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5153,8 +5394,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5397,15 +5638,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5465,6 +5707,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5476,19 +5719,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Discharge ye' Signal"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Discharge ye' Signal"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5726,6 +5978,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Add Node"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5738,6 +5999,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5984,6 +6285,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -6016,7 +6321,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6077,13 +6382,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Yar, Blow th' Selected Down!"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6137,7 +6455,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6410,7 +6727,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6726,6 +7044,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Discharge ye' Signal"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6938,7 +7274,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6969,6 +7305,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation."
msgstr "Yer functions:"
@@ -7096,8 +7437,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -7132,10 +7473,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7296,6 +7633,26 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Slit th' Node"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7317,40 +7674,47 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Pitch"
+msgid "Pitch:"
msgstr "Switch"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Change"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr "Change"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Change"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Call"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7507,6 +7871,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7522,6 +7890,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Discharge ye' Function"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7535,7 +7908,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7543,18 +7916,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7652,6 +8022,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7956,11 +8330,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7981,174 +8350,571 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Yer functions:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Remove All Items"
-msgstr "Discharge ye' Variable"
+msgid "Icons"
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No colors found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} constant(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No constants found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No fonts found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No icons found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No styleboxes found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All"
-msgstr "Discharge ye' Signal"
+msgid "Importing Theme Items"
+msgstr "Error loading yer Calligraphy Pen."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Updating the editor"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Finalizing"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "th' Members:"
+msgid "Filter:"
+msgstr "Paste yer Node"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "Select all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Toggle Button"
-msgstr "Toggle ye Breakpoint"
+msgid "Collapse types."
+msgstr "Paste yer Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "Cursed"
+msgid "Select all Theme items."
+msgstr "Slit th' Node"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "Cursed"
+msgid "Deselect All"
+msgstr "Slit th' Node"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+#, fuzzy
+msgid "Import Selected"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Rename Function"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Add Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Add Signal"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Add Signal"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Edit yer Variable:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Rename Function"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Rename Function"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Edit yer Variable:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "th' Base Type:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "th' Base Type:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Edit yer Variable:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Cursed"
+msgid "Default Theme"
+msgstr "th' Base Type:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+#, fuzzy
+msgid "Editor Theme"
+msgstr "th' Members:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+#, fuzzy
+msgid "Another Theme"
+msgstr "th' Members:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Editable Item"
-msgstr "Edit yer Variable:"
+msgid "Add Type"
+msgstr "Find ye Node Type"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Add Item Type"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Node Types:"
+msgstr "Find ye Node Type"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Show default type items alongside items that have been overridden."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Override All"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+#, fuzzy
+msgid "Theme:"
+msgstr "th' Members:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Discharge ye' Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+#, fuzzy
+msgid "Add Preview"
+msgstr "Add Variable"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "Paste yer Node"
+msgid "Toggle Button"
+msgstr "Toggle ye Breakpoint"
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "Cursed"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "Cursed"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Cursed"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Editable Item"
+msgstr "Edit yer Variable:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8327,6 +9093,10 @@ msgid "Priority"
msgstr "Edit yer Variable:"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8680,11 +9450,6 @@ msgid "Commit Changes"
msgstr "Change"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9521,7 +10286,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "Edit yer Variable:"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9638,7 +10403,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9646,7 +10411,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9654,11 +10419,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9732,7 +10497,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr "Yer index property name be thrown overboard!"
#: editor/project_manager.cpp
@@ -9766,6 +10531,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Rename Project"
msgstr "Rename Function"
@@ -9912,15 +10689,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9948,7 +10721,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Rename Function"
#: editor/project_manager.cpp
@@ -9960,10 +10733,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Rename Function"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Rename Function"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Rename Function"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9973,19 +10761,41 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Rename Function"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Rename Function"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Discharge ye' Signal"
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Templates"
-msgstr "Discharge ye' Variable"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
+msgstr ""
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Discharge ye' Signal"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9996,8 +10806,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Paste yer Node"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10007,6 +10822,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10048,6 +10867,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10189,19 +11012,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Add Function"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10475,6 +11299,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10643,11 +11471,29 @@ msgid "Delete node \"%s\"?"
msgstr "Slit th' Node"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10704,6 +11550,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10751,11 +11601,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "Yer functions:"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11042,6 +11887,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -11118,6 +11969,10 @@ msgid "Copy Error"
msgstr "Slit th' Node"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11408,6 +12263,15 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Edit"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11452,6 +12316,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Yar, Blow th' Selected Down!"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11712,6 +12581,16 @@ msgid "Add Output Port"
msgstr "Add Signal"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "th' Base Type:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "th' Base Type:"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11835,6 +12714,11 @@ msgid "Add Preload Node"
msgstr "Add yer Preload Node"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Add Node"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Add Node(s) From yer Tree"
@@ -12077,10 +12961,6 @@ msgstr "Discharge ye' Variable"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12110,6 +12990,35 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Edit"
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12207,6 +13116,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12219,6 +13164,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12233,6 +13182,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12252,11 +13214,50 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Find ye Node Type"
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
msgstr "Yer name's got no valid identifier:"
@@ -12287,10 +13288,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr ""
@@ -12300,15 +13297,45 @@ msgid "Invalid export template:"
msgstr "Yer index property name be thrown overboard!"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Slit th' Node"
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Yer name's got no valid identifier:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12659,6 +13686,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12728,12 +13762,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12782,6 +13868,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12933,21 +14023,64 @@ msgid "Invalid comparison function for that type."
msgstr "Yer Calligraphy be wrongly sized."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Set"
+#~ msgstr "Set"
+
+#, fuzzy
+#~ msgid "Edit:"
+#~ msgstr "Edit"
+
+#, fuzzy
+#~ msgid "Remove Template"
+#~ msgstr "Discharge ye' Variable"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Forge yer Node!"
+
+#, fuzzy
+#~ msgid "Expand All Properties"
+#~ msgstr "Add yer Getter Property"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "Paste yer Node"
+
+#, fuzzy
+#~ msgid "Templates"
+#~ msgstr "Discharge ye' Variable"
+
#, fuzzy
#~ msgid "Move pivot"
#~ msgstr "Discharge ye' Signal"
@@ -12960,9 +14093,6 @@ msgstr ""
#~ msgid "Class Description"
#~ msgstr "Yar, Blow th' Selected Down!"
-#~ msgid "Base Type:"
-#~ msgstr "th' Base Type:"
-
#~ msgid "Available Nodes:"
#~ msgstr "yer Nodes doing nothin':"
@@ -12971,10 +14101,6 @@ msgstr ""
#~ msgstr "Paste yer Node"
#, fuzzy
-#~ msgid "Enumerations:"
-#~ msgstr "Yer functions:"
-
-#, fuzzy
#~ msgid "Class Description:"
#~ msgstr "Yar, Blow th' Selected Down!"
@@ -13003,10 +14129,6 @@ msgstr ""
#~ msgstr "Slit th' Node"
#, fuzzy
-#~ msgid "Next Folder"
-#~ msgstr "Slit th' Node"
-
-#, fuzzy
#~ msgid "Custom Node"
#~ msgstr "Slit th' Node"
diff --git a/editor/translations/pt.po b/editor/translations/pt.po
index 17b1861821..e51c7a3b77 100644
--- a/editor/translations/pt.po
+++ b/editor/translations/pt.po
@@ -542,7 +542,8 @@ msgstr "Segundos"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -568,7 +569,8 @@ msgstr "Escalar Seleção"
msgid "Scale From Cursor"
msgstr "Escalar Partir do Cursor"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplicar Seleção"
@@ -589,6 +591,11 @@ msgid "Go to Previous Step"
msgstr "Ir para Passo Anterior"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Repor"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Otimizar Animação"
@@ -605,6 +612,11 @@ msgid "Use Bezier Curves"
msgstr "Usar Curvas Bezier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Colar Pistas"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Otimizador de Anim"
@@ -653,7 +665,7 @@ msgid "Select Tracks to Copy"
msgstr "Selecionar Pistas a Copiar"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -739,12 +751,14 @@ msgid "Toggle Scripts Panel"
msgstr "Alternar Painel de Scripts"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Aumentar Zoom"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -801,11 +815,9 @@ msgid "Add"
msgstr "Adicionar"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -857,6 +869,7 @@ msgstr "Não consigo conectar sinal"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -926,7 +939,8 @@ msgid "Edit..."
msgstr "Editar..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Ir para Método"
#: editor/create_dialog.cpp
@@ -941,6 +955,14 @@ msgstr "Mudar"
msgid "Create New %s"
msgstr "Criar Novo %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Nenhum resultado para \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -962,8 +984,8 @@ msgstr "Procurar:"
msgid "Matches:"
msgstr "Correspondências:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1039,19 +1061,23 @@ msgid "Owners Of:"
msgstr "Proprietários de:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Remover ficheiros selecionados do Projeto? (sem desfazer)\n"
"Pode encontrar os ficheiros removidos na Reciclagem do sistema."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Os ficheiros a serem removidos são necessários para que outros recursos "
"funcionem.\n"
@@ -1100,7 +1126,7 @@ msgstr "Explorador de Recursos Órfãos"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1225,28 +1251,41 @@ msgstr "Componentes"
msgid "Licenses"
msgstr "Licenças"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Erro ao abrir ficheiro comprimido, não está no formato ZIP."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Erro ao abrir ficheiro comprimido (não está no formato ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Já Existe)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "A Descomprimir Ativos"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Falhou a extração dos seguintes Ficheiros do pacote:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "E mais %s ficheiros."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Pacote Instalado com sucesso!"
#: editor/editor_asset_installer.cpp
@@ -1254,16 +1293,13 @@ msgstr "Pacote Instalado com sucesso!"
msgid "Success!"
msgstr "Sucesso!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Conteúdo do Pacote:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instalar"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Instalador de Pacotes"
#: editor/editor_audio_buses.cpp
@@ -1327,7 +1363,8 @@ msgid "Bypass"
msgstr "Ignorar"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Opções de barramento"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1407,7 +1444,7 @@ msgstr "Adicionar Barramento"
msgid "Add a new Audio Bus to this layout."
msgstr "Adicionar novo Barramento de Ãudio a este modelo."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1495,6 +1532,15 @@ msgid "Can't add autoload:"
msgstr "Não consigo adicionar carregamento automático:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "O Ficheiro não existe."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Adicionar Carregamento Automático"
@@ -1510,16 +1556,17 @@ msgid "Node Name:"
msgstr "Nome do Nó:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nome"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Instância única"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Variável"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Colar Parâmetros"
@@ -1535,7 +1582,7 @@ msgstr "A armazenar alterações locais..."
msgid "Updating scene..."
msgstr "A atualizar cena..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[vazio]"
@@ -1691,8 +1738,49 @@ msgid "Import Dock"
msgstr "Importar Doca"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Substituir perfil '%s'? (não há desfazer)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Atual)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1723,15 +1811,18 @@ msgid "Enable Contextual Editor"
msgstr "Ativar Editor de Contexto"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Ativar Propriedades:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Propriedades:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Ativar Características:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Características"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Ativar Classes:"
#: editor/editor_feature_profile.cpp
@@ -1750,25 +1841,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Erro ao guardar perfil no caminho: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Desativar"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Restaurar Predefinições"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Perfil atual:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Tornar Atual"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Apagar Perfil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Novo"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Remover Tile"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Perfis disponíveis:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Tornar Atual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importar"
@@ -1777,20 +1877,22 @@ msgid "Export"
msgstr "Exportar"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Perfis disponíveis:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Perfil atual:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Opções da Classe"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Opções da Classe:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Novo nome do perfil:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Apagar Perfil"
+msgid "New profile name:"
+msgstr "Novo nome do perfil:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1813,7 +1915,8 @@ msgid "Select Current Folder"
msgstr "Selecionar pasta atual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "O Ficheiro existe, sobrescrever?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1867,9 +1970,10 @@ msgid "Open a File or Directory"
msgstr "Abrir um Ficheiro ou Diretoria"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Guardar"
@@ -1950,8 +2054,7 @@ msgid "Directories & Files:"
msgstr "Diretorias e Ficheiros:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Pré-visualização:"
@@ -2024,7 +2127,7 @@ msgstr "Propriedades do Tema"
msgid "Enumerations"
msgstr "Enumerações"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Constantes"
@@ -2113,7 +2216,7 @@ msgstr "Método"
msgid "Signal"
msgstr "Sinal"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Constante"
@@ -2129,9 +2232,10 @@ msgstr "Propriedade do Tema"
msgid "Property:"
msgstr "Propriedade:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Definir"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Definir %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2146,7 +2250,7 @@ msgid "Copy Selection"
msgstr "Copiar Seleção"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2210,7 +2314,8 @@ msgid "Imported resources can't be saved."
msgstr "Recursos importados não podem ser guardados."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2432,18 +2537,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Guardar alterações a '%s' antes de fechar?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Guardado(s) %s recurso(s) modificado(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "É necessário um nó raiz para guardar a cena."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Guardar Cena Como..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Esta operação não pode ser efetuada sem uma cena."
@@ -2639,7 +2749,7 @@ msgstr "Apagar Modelo"
msgid "Default"
msgstr "Predefinição"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Mostrar no Sistema de Ficheiros"
@@ -2820,6 +2930,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Explorador de Recursos Órfãos..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Renomear Projeto"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Sair para a Lista de Projetos"
@@ -2976,20 +3091,24 @@ msgstr "Gerir Modelos de Exportação..."
msgid "Help"
msgstr "Ajuda"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Documentação Online"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Abrir documentação"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Perguntas & Respostas"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Denunciar um Bug"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Enviar Sugestão dos Docs"
@@ -2998,7 +3117,8 @@ msgid "Community"
msgstr "Comunidade"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Sobre"
#: editor/editor_node.cpp
@@ -3095,6 +3215,16 @@ msgid "Manage Templates"
msgstr "Gerir Modelos"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Instalar do Ficheiro"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Selecione uma Fonte Malha:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3132,7 +3262,7 @@ msgstr "Importar Modelos a partir de um Ficheiro ZIP"
msgid "Template Package"
msgstr "Pacote de Modelo"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Exportar Biblioteca"
@@ -3175,6 +3305,11 @@ msgid "Select"
msgstr "Selecionar"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Selecionar pasta atual"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Abrir Editor 2D"
@@ -3206,6 +3341,11 @@ msgstr "Aviso!"
msgid "No sub-resources found."
msgstr "Sub-recurso não encontrado."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Sub-recurso não encontrado."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "A criar Pré-visualizações de Malha"
@@ -3230,33 +3370,34 @@ msgstr "Plugins Instalados:"
msgid "Update"
msgstr "Atualizar"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versão:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Estado:"
+#, fuzzy
+msgid "Author"
+msgstr "Autores"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Editar:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Status"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Medida:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Tempo do Frame (seg)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Tempo Médio (seg)"
#: editor/editor_profiler.cpp
@@ -3276,6 +3417,16 @@ msgid "Self"
msgstr "Auto"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Frame #:"
@@ -3317,14 +3468,6 @@ msgstr "RID inválido"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"O recurso selecionado (%s) não corresponde a qualquer tipo esperado para "
-"esta propriedade (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3348,40 +3491,6 @@ msgid "Pick a Viewport"
msgstr "Escolha um Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Novo Script"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Estender Script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Novo %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Fazer único"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Colar"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Converter em %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Nó selecionado não é um Viewport!"
@@ -3410,6 +3519,49 @@ msgstr "Novo Valor:"
msgid "Add Key/Value Pair"
msgstr "Adicionar Par Chave/Valor"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"O recurso selecionado (%s) não corresponde a qualquer tipo esperado para "
+"esta propriedade (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Fazer único"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Colar"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Converter em %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Novo %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Novo Script"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Estender Script"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3446,7 +3598,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Esqueceu-se do método '_run'?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Pressione Ctrl para arredondar para inteiro. Pressione Shift para mudanças "
"mais precisas."
@@ -3468,117 +3621,69 @@ msgid "Import From Node:"
msgstr "Importar do Nó:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Retransferir"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Desinstalar"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Instalado)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Descarrega"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
-"Modelos de exportação oficiais não estão disponíveis para compilações de "
-"desenvolvimento."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Em Falta)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Atual)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Não existe ficheiro '%s'."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "A readquirir servidores, espere por favor..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Remover versão '%s' do Modelo?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Não consigo abrir zip de modelos de exportação."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Formato de version.txt inválido dentro dos modelos: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Não foi encontrado version.txt dentro dos Modelos."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Erro ao criar o caminho para os modelos:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "A Extrair os Modelos de Exportação"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "A Importar:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Erro na receção da lista de mirrors."
+msgid "Error requesting URL:"
+msgstr "Erro ao solicitar URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Erro ao analisar a lista de mirrors JSON. Por favor denuncie o problema!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "A ligar ao servidor..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Não foram encontrados ligações para descarregar para esta versão. "
-"Descarregamentos diretos estão disponíveis apenas para os lançamentos "
-"oficiais."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Não consigo resolver hostname:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Não consigo resolver."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Não consigo ligar ao host:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Não consigo conectar."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Sem resposta do host:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Sem resposta."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Pedido falhado."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Redirecionar ciclo."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Falha na solicitação, demasiados redirecionamentos"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Falhou:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Pedido falhado."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Descarrega completa."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3593,12 +3698,27 @@ msgstr ""
"Os ficheiros problemáticos encontram-se em '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Erro ao solicitar URL:"
+msgid "Error getting the list of mirrors."
+msgstr "Erro na receção da lista de mirrors."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "A ligar ao servidor..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Erro ao analisar a lista de mirrors JSON. Por favor denuncie o problema!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Não foram encontrados ligações para descarregar para esta versão. "
+"Descarregamentos diretos estão disponíveis apenas para os lançamentos "
+"oficiais."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3643,44 +3763,140 @@ msgid "SSL Handshake Error"
msgstr "Erro SSL Handshake"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Não consigo abrir zip de modelos de exportação."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Formato de version.txt inválido dentro dos modelos: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Não foi encontrado version.txt dentro dos Modelos."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Erro ao criar o caminho para os modelos:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "A Extrair os Modelos de Exportação"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "A Importar:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Remover versão '%s' do Modelo?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "A descompactar Fontes da Compilação Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Exportar Gestor de Modelos"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versão Atual:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Versões Instaladas:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Abrir Ficheiro"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Valor inicial do contador"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Erro na transferência"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"Modelos de exportação oficiais não estão disponíveis para compilações de "
+"desenvolvimento."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Instalar do Ficheiro"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Remover Modelo"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importar Modelos a partir de um Ficheiro ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Cancelar"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Selecionar Ficheiro de Modelo"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Não consigo abrir zip de modelos de exportação."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Modelos de Exportação Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Versões Instaladas:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Exportar Gestor de Modelos"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Desinstalar"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Selecionar Ficheiro de Modelo"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Transferir Modelos"
+msgid "Godot Export Templates"
+msgstr "Modelos de Exportação Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Selecionar servidor da lista: (Shift+Click: Abrir no Navegador)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3815,29 +4031,62 @@ msgstr "Novo Script..."
msgid "New Resource..."
msgstr "Novo Recurso..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Expandir Tudo"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Colapsar Tudo"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplicar..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Procurar ficheiros"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Última modificação"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Última modificação"
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Mover para Reciclagem"
+msgid "Duplicate..."
+msgstr "Duplicar..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Renomear..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Pasta/Ficheiro Anterior"
@@ -3921,10 +4170,6 @@ msgstr "Localizar..."
msgid "Replace..."
msgstr "Substituir..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Cancelar"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Localizar: "
@@ -4147,53 +4392,55 @@ msgid "Failed to load resource."
msgstr "Falha ao carregar recurso."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Expandir Todas as Propriedades"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Propriedades"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Colapsar Todas as Propriedades"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Guardar Como..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Propriedades"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Copiar Parâmetros"
+msgid "Make Sub-Resources Unique"
+msgstr "Tornar sub-recursos únicos"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Editar Ãrea de Transferência de Recursos"
+msgid "Create a new resource in memory and edit it."
+msgstr "Crie um novo recurso em memória edite-o."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Copiar Recurso"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Carregue um recurso existente a partir do disco e edite-o."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Tornar Incorporado"
+msgid "Save the currently edited resource."
+msgstr "Guarde o recurso editado."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Tornar sub-recursos únicos"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Guardar Como..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Abrir em Ajuda"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Não está no caminho do recurso."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Crie um novo recurso em memória edite-o."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Editar Ãrea de Transferência de Recursos"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Carregue um recurso existente a partir do disco e edite-o."
+msgid "Copy Resource"
+msgstr "Copiar Recurso"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Guarde o recurso editado."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Tornar Incorporado"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4208,14 +4455,24 @@ msgid "History of recently edited objects."
msgstr "Histórico de Objetos recentemente editados."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Propriedades do Objeto."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Abrir documentação"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Abrir documentação"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Propriedades do Filtro"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Propriedades do Objeto."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "As alterações podem ser perdidas!"
@@ -4243,6 +4500,15 @@ msgstr "Nome do Plugin:"
msgid "Subfolder:"
msgstr "Sub-pasta:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versão:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Linguagem:"
@@ -4448,7 +4714,8 @@ msgid "Blend:"
msgstr "Mistura:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Mudança de Parâmetro"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4669,6 +4936,11 @@ msgid "Animation"
msgstr "Animação"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Novo"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Editar Transições..."
@@ -5009,10 +5281,18 @@ msgid "View Files"
msgstr "Ver Ficheiros"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Descarrega"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Erro de ligação, tente novamente."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Não consigo conectar."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Não consigo ligar ao host:"
@@ -5021,16 +5301,20 @@ msgid "No response from host:"
msgstr "Sem resposta do host:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Sem resposta."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Não consigo resolver hostname:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Falha na solicitação, código de retorno:"
+msgid "Can't resolve."
+msgstr "Não consigo resolver."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Pedido falhado."
+msgid "Request failed, return code:"
+msgstr "Falha na solicitação, código de retorno:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5057,6 +5341,10 @@ msgid "Timeout."
msgstr "Tempo expirado."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Falhou:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Mau hash na transferência, assume-se que o ficheiro foi manipulado."
@@ -5157,8 +5445,12 @@ msgid "All"
msgstr "Todos"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Nenhum resultado para \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5200,6 +5492,10 @@ msgstr "A Carregar..."
msgid "Assets ZIP File"
msgstr "Ficheiro ZIP de Ativos"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5209,9 +5505,10 @@ msgstr ""
"Guarde a sua cena e tente novamente."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Não há malhas para consolidar. Assegure-se que contêm um canal UV2 e que a "
"referência 'Bake Light' flag está on."
@@ -5456,9 +5753,10 @@ msgstr "Mudar âncoras"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Sobreposição de Câmara de Jogo\n"
"Sobrepõe câmara de jogo com câmara viewport do editor."
@@ -5466,11 +5764,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Sobreposição de Câmara de Jogo\n"
-"Nenhuma instância de jogo em execução."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5525,6 +5822,7 @@ msgstr ""
"determinados apenas pelos seus progenitores."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5536,21 +5834,32 @@ msgid "Select Mode"
msgstr "Modo Seleção"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Arrastar: Rotação"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Remover nó ou transição selecionado."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Arrastar: Mover"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Remover nó ou transição selecionado."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Tecla 'v' para mudar Eixo, 'Shift+v' para arrastar Eixo (durante movimento)."
+"Mostra lista de todos os Objetos na posição clicada\n"
+"(o mesmo que Alt+RMB no modo seleção)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+RMB: seleção da lista de profundidade"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5788,6 +6097,16 @@ msgid "Clear Pose"
msgstr "Limpar Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Adicionar Nó"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Cena(s) da Instância"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Multiplicar passo da grelha por 2"
@@ -5800,6 +6119,52 @@ msgid "Pan View"
msgstr "Vista Pan"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Diminuir Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Diminuir Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Diminuir Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Diminuir Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Diminuir Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Diminuir Zoom"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Adicionar %s"
@@ -6042,6 +6407,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Não consegui criar uma forma única de colisão convexa."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Criar Forma Convexa Simples"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Criar Forma Convexa Simples"
@@ -6075,7 +6445,8 @@ msgid "No mesh to debug."
msgstr "Nenhuma malha para depurar."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "O Modelo não tem UV nesta camada"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6141,13 +6512,27 @@ msgstr ""
"Esta é a mais rápida (mas menos precisa) opção para deteção de colisão."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Criar Irmãos Únicos de Colisão Convexa"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Criar Vários Irmãos de Colisão Convexa"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Cria uma forma de colisão baseada em polígonos.\n"
"Esta uma opção de desempenho intermédio entre as duas opções acima."
@@ -6209,7 +6594,6 @@ msgid "Mesh Library"
msgstr "Bib. de Malhas"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Adicionar item"
@@ -6481,7 +6865,8 @@ msgid "Close Curve"
msgstr "Fechar curva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Opções"
@@ -6791,6 +7176,26 @@ msgstr "Carregar recurso"
msgid "ResourcePreloader"
msgstr "ResourcePreloader"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Inverter na Horizontal"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Contagem de Pontos gerados:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Contagem de Pontos gerados:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Inverter na Horizontal"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree não tem caminho definido para um AnimationPlayer"
@@ -6996,7 +7401,7 @@ msgstr "Executar"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Procurar"
@@ -7027,6 +7432,11 @@ msgid "Debug with External Editor"
msgstr "Depurar com Editor Externo"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Documentação Online"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Abrir documentação online do Godot."
@@ -7151,8 +7561,8 @@ msgstr "Ir Para"
msgid "Cut"
msgstr "Cortar"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Selecionar Tudo"
@@ -7185,10 +7595,6 @@ msgid "Unfold All Lines"
msgstr "Mostrar todas as linhas"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Clonar Abaixo"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Completar Símbolo"
@@ -7342,6 +7748,28 @@ msgid "View Plane Transform."
msgstr "Ver Transformação do Plano."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Nenhum"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Modo Rodar"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Translação:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Escala:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "A escalar: "
@@ -7362,42 +7790,54 @@ msgid "Animation Key Inserted."
msgstr "Chave de Animação inserida."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Inclinação"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Direção"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Tamanho"
+#, fuzzy
+msgid "Size:"
+msgstr "Tamanho: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Objetos desenhados"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Mudanças de Material"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Alterações do Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Mudanças de superfície"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Chamadas de desenho"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Vértices"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Vista de topo."
@@ -7550,6 +7990,11 @@ msgid "Freelook Slow Modifier"
msgstr "Freelook Modificador de Lentidão"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Mudar tamanho da Câmara"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Rotação da Vista Bloqueada"
@@ -7569,6 +8014,11 @@ msgstr ""
"Não é uma indicação fiável do desempenho do jogo."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Converter em %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Diálogo XForm"
@@ -7588,7 +8038,8 @@ msgstr ""
"(\"raios X\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Ajustar Nós ao Fundo"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7596,16 +8047,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Não foi encontrado um chão sólido para ajustar a seleção."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Arrastar: Rodar\n"
-"Alt+Arrastar: Mover\n"
-"Alt+RMB: Seleção lista de profundidade"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Usar Espaço Local"
@@ -7614,6 +8055,10 @@ msgid "Use Snap"
msgstr "Usar Ajuste"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Vista de Fundo"
@@ -7707,6 +8152,11 @@ msgid "View Grid"
msgstr "Ver grelha"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Configuração do Viewport"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Configuração..."
@@ -7996,11 +8446,6 @@ msgid "Snap Mode:"
msgstr "Modo Ajuste:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Nenhum"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Ajuste de Pixel"
@@ -8021,165 +8466,603 @@ msgid "Step:"
msgstr "Passo:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Sep.:"
+msgid "Separation:"
+msgstr "Separação:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "TextureRegion"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Adicionar Todos os Itens"
+#, fuzzy
+msgid "Colors"
+msgstr "Cor"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Adicionar tudo"
+#, fuzzy
+msgid "Fonts"
+msgstr "Letra"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Ãcone"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "StyleBox"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Sub-recurso não encontrado."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Constantes"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Constante Cor."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Não encontrado!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Não encontrado!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Sub-recurso não encontrado."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Importar tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Sair do Editor?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "A analisar"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtros:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Selecione um Nó"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Selecionar uma separação para a apagar."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Selecione primeiro um item de configuração!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Selecione primeiro um item de configuração!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Selecione primeiro um item de configuração!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Selecione primeiro um item de configuração!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Selecione primeiro um item de configuração!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Colapsar Tudo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Expandir Tudo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Selecionar Ficheiro de Modelo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Selecionar Pontos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Selecionar Tudo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importar Cena"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Remover Todos os Itens"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Remover tudo"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Remover item"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Editar Tema"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Remover Todos os Itens"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Remover Todos os Itens"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Remover Todos os Itens"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Menu edição de tema."
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Remover Todos os Itens"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Color Item"
msgstr "Adicionar Itens de Classe"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Adicionar Itens de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Adicionar item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Adicionar item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Adicionar Todos os Itens"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Remover Itens de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Remover Itens de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Renomear Nó"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Renomear Nó"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Remover item selecionado"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Ficheiro inválido, não é um Modelo válido de barramento de áudio."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Gerir Modelos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Item Editável"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Adicionar item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Adicionar Todos os Itens"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Remover item"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Remover Itens de Classe"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Criar Modelo vazio"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Remover Itens de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Remover Todos os Itens"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Itens do tema GUI"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nome do Nó:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importar tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Predefinição"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Editar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Apagar recurso"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Importar tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Anim Renomear Pista"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Renomear em Massa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Sobrepõe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Tipo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Adicionar item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Tipo de nó"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Carregar Predefinição"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Criar Modelo Editor vazio"
+#, fuzzy
+msgid "Override All"
+msgstr "Sobrepõe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Tema"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Criar a partir de tema Editor atual"
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Gerir Modelos de Exportação..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Pré-visualização"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Atualizar Pré-visualização"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Selecione uma Fonte Malha:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Alternar Botão"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Desativar Botão"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Item"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Item Desativado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Verificar item"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Item Marcado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Item Rádio"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Item Rádio Marcado"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Sep. Nomeado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Sub-menu"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Subitem 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Subitem 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Tem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Muitos"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "LineEdit Desativado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Aba 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Aba 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Aba 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Item Editável"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Sub-árvore"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Tem,Muitas,Opções"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Tipo de dados:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Ãcone"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Estilo"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Letra"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Cor"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Ficheiro inválido, não é um Modelo válido de barramento de áudio."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Ficheiro Tema"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8351,6 +9234,10 @@ msgid "Priority"
msgstr "Prioridade"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Ãcone"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Ãndice Z"
@@ -8685,11 +9572,6 @@ msgid "Commit Changes"
msgstr "Gravar Alterações"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Status"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "Ver diffs dos ficheiros antes de atualizá-los para a última versão"
@@ -9573,7 +10455,8 @@ msgid "VisualShader"
msgstr "VIsualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Editar Propriedade Visual"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9701,7 +10584,8 @@ msgid "Script"
msgstr "Script"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Modo Exportação de Script:"
#: editor/project_export.cpp
@@ -9709,19 +10593,21 @@ msgid "Text"
msgstr "Texto"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Compilado"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Encriptado (Fornecer Chave em Baixo)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Chave de Encriptação Inválida (tem de ter 64 caracteres)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Chave de Encriptação de Script (Hexadecimal 256-bits):"
#: editor/project_export.cpp
@@ -9796,7 +10682,8 @@ msgid "Imported Project"
msgstr "Projeto importado"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Nome do Projeto Inválido."
#: editor/project_manager.cpp
@@ -9832,6 +10719,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Não consigo criar project.godot no caminho do projeto."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Erro ao abrir ficheiro comprimido, não está no formato ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Falhou a extração dos seguintes Ficheiros do pacote:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Pacote Instalado com sucesso!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Renomear Projeto"
@@ -10010,20 +10909,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Está seguro que quer executar %d projetos em simultâneo?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Remover %d projetos da lista?\n"
-"O conteúdo das pastas não será modificado."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Selecionar aparelho da lista"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Remover este projeto da lista?\n"
-"O conteúdo da pasta não será modificado."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Selecionar aparelho da lista"
#: editor/project_manager.cpp
msgid ""
@@ -10056,7 +10949,8 @@ msgid "Project Manager"
msgstr "Gestor de Projetos"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projetos"
#: editor/project_manager.cpp
@@ -10068,10 +10962,25 @@ msgid "Last Modified"
msgstr "Última modificação"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Exportar Projeto"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Renomear Projeto"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Analisar"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projetos"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Selecione uma pasta para analisar"
@@ -10080,18 +10989,41 @@ msgid "New Project"
msgstr "Novo Projeto"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Projeto importado"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Renomear Projeto"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Remover Ausente"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Modelos"
+msgid "About"
+msgstr "Sobre"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Biblioteca de Ativos"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Reiniciar agora"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Remover tudo"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Não consigo executar o Projeto"
@@ -10104,8 +11036,14 @@ msgstr ""
"Gostaria de explorar os projetos de exemplo oficiais na Biblioteca de Ativos?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Propriedades do Filtro"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10119,6 +11057,10 @@ msgid "Key "
msgstr "Tecla "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Botão do joystick"
@@ -10162,6 +11104,10 @@ msgstr "Todos os Aparelhos"
msgid "Device"
msgstr "Aparelho"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Pressione uma tecla..."
@@ -10303,7 +11249,8 @@ msgid "Override for Feature"
msgstr "Sobrepor por Característica"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Adicionar tradução"
#: editor/project_settings_editor.cpp
@@ -10311,11 +11258,13 @@ msgid "Remove Translation"
msgstr "Remover tradução"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Adicionar Caminho Remapeado"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Recurso Remap Adicionar Remap"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Recurso Remap Adicionar Remap"
#: editor/project_settings_editor.cpp
@@ -10587,6 +11536,10 @@ msgid "Post-Process"
msgstr "Pós-processamento"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Estilo"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Manter"
@@ -10752,12 +11705,30 @@ msgid "Delete node \"%s\"?"
msgstr "Apagar nó \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Não consigo executar com o nó raiz."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Esta operação não pode ser feita numa cena instanciada."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10817,6 +11788,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Não consigo operar em nós herdados pela cena atual!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Esta operação não pode ser feita numa cena instanciada."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Anexar Script"
@@ -10865,10 +11840,6 @@ msgid "Load As Placeholder"
msgstr "Carregar como marcador de posição"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Abrir documentação"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11161,6 +12132,12 @@ msgstr ""
"com um editor externo."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Nome de Classe:"
@@ -11229,6 +12206,10 @@ msgid "Copy Error"
msgstr "Copiar Erro"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Memória Vídeo"
@@ -11514,6 +12495,16 @@ msgstr "Dicionário de instância inválido (subclasses inválidas)"
msgid "Object can't provide a length."
msgstr "Objeto não fornece um comprimento."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exportar Biblioteca de Malhas"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exportar..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Plano Seguinte"
@@ -11555,6 +12546,11 @@ msgid "GridMap Paint"
msgstr "Pintura do GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Seleção de Preenchimento de GridMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Mapa de grelha"
@@ -11804,6 +12800,16 @@ msgid "Add Output Port"
msgstr "Adicionar Porta de Saída"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Mudar tipo"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Mudar nome de porta de entrada"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Sobrepõe-se a função incorporada existente."
@@ -11916,6 +12922,11 @@ msgid "Add Preload Node"
msgstr "Adicionar Nó de Pré-carregamento"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Adicionar Nó"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Adicionar Nó(s) da Ãrvore"
@@ -12145,10 +13156,6 @@ msgstr "Procurar VisualScript"
msgid "Get %s"
msgstr "Obter %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Definir %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Falta o nome do pacote."
@@ -12180,6 +13187,40 @@ msgid "Select device from the list"
msgstr "Selecionar aparelho da lista"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "A Exportar Tudo"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Desinstalar"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "A carregar, espere por favor..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Não consegui iniciar o subprocesso!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "A executar Script Customizado..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Não consegui criar pasta."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Incapaz de localizar a ferramenta 'apksigner'."
@@ -12294,6 +13335,48 @@ msgstr ""
"ativa."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"A analisar Ficheiros,\n"
+"Espere, por favor..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Não consigo abrir modelo para exportação:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "A adicionar %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "A Exportar Tudo"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
"Nome de ficheiro inválido! O Pacote Android App exige a extensão *.aab."
@@ -12307,6 +13390,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nome de ficheiro inválido! APK Android exige a extensão *.apk."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12327,6 +13414,21 @@ msgstr ""
"Reinstale o modelo de compilação Android no menu 'Projeto'."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Impossível encontrar project.godot no Caminho do Projeto."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Não consigo escrever ficheiro:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "A compilar Projeto Android (gradle)"
@@ -12351,11 +13453,54 @@ msgstr ""
"Incapaz de copiar e renomear ficheiro de exportação, verifique diretoria de "
"projeto gradle por resultados."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animação não encontrada: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "A criar contornos..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Não consigo abrir modelo para exportação:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "A adicionar %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Não consigo escrever ficheiro:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "A alinhar APK..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Falta o identificador."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "O carácter \"%s\" não é permitido no Identificador."
@@ -12386,10 +13531,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Executar HTML exportado no navegador predefinido do sistema."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Não consigo escrever ficheiro:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Não consigo abrir modelo para exportação:"
@@ -12398,16 +13539,49 @@ msgid "Invalid export template:"
msgstr "Modelo de exportação inválido:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Não consigo escrever ficheiro:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Não consigo escrever ficheiro:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Não consigo ler shell HTML personalizado:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Não consigo ler ficheiro de imagem do ecrã de inicialização:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Não consegui criar pasta."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "A usar imagem de inicialização predefinida."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Erro ao guardar cena."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Identificador Inválido:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12833,6 +14007,13 @@ msgstr ""
"Sondas GI não são suportadas pelo driver vídeo GLES2.\n"
"Em vez disso, use um BakedLightmap."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "Uma SpotLight com ângulo superior a 90 graus não cria sombras."
@@ -12917,6 +14098,18 @@ msgstr "Junção não está conectada a quaisquer PhysicsBodies"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Nó A e Nó B têm de ser PhysicsBodies diferentes"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12925,6 +14118,46 @@ msgstr ""
"Para funcionar, a Propriedade \"Caminho Remoto\" tem de apontar para um nó "
"Spatial válido ou seu derivado."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Este corpo será ignorado até se definir uma malha."
@@ -12986,6 +14219,10 @@ msgstr "No nó BlendTree '%s', animação não encontrada: '%s'"
msgid "Animation not found: '%s'"
msgstr "Animação não encontrada: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "No nó '%s', animação inválida: '%s'."
@@ -13158,6 +14395,27 @@ msgid "Invalid comparison function for that type."
msgstr "Função de comparação inválida para este tipo."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Variações só podem ser atribuídas na função vértice."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Atribuição a função."
@@ -13166,13 +14424,179 @@ msgid "Assignment to uniform."
msgstr "Atribuição a uniforme."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Variações só podem ser atribuídas na função vértice."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Constantes não podem ser modificadas."
+#~ msgid "Package Contents:"
+#~ msgstr "Conteúdo do Pacote:"
+
+#~ msgid "Singleton"
+#~ msgstr "Instância única"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Substituir perfil '%s'? (não há desfazer)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Ativar Propriedades:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Ativar Características:"
+
+#~ msgid "Unset"
+#~ msgstr "Desativar"
+
+#~ msgid "Class Options"
+#~ msgstr "Opções da Classe"
+
+#~ msgid "Set"
+#~ msgstr "Definir"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Guardado(s) %s recurso(s) modificado(s)."
+
+#~ msgid "Q&A"
+#~ msgstr "Perguntas & Respostas"
+
+#~ msgid "Status:"
+#~ msgstr "Estado:"
+
+#~ msgid "Edit:"
+#~ msgstr "Editar:"
+
+#~ msgid "Redownload"
+#~ msgstr "Retransferir"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Instalado)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Em Falta)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Pedido falhado."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Redirecionar ciclo."
+
+#~ msgid "Download Complete."
+#~ msgstr "Descarrega completa."
+
+#~ msgid "Remove Template"
+#~ msgstr "Remover Modelo"
+
+#~ msgid "Download Templates"
+#~ msgstr "Transferir Modelos"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Selecionar servidor da lista: (Shift+Click: Abrir no Navegador)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Mover para Reciclagem"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Expandir Todas as Propriedades"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Colapsar Todas as Propriedades"
+
+#~ msgid "Copy Params"
+#~ msgstr "Copiar Parâmetros"
+
+#~ msgid "Open in Help"
+#~ msgstr "Abrir em Ajuda"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Sobreposição de Câmara de Jogo\n"
+#~ "Nenhuma instância de jogo em execução."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Arrastar: Rotação"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Tecla 'v' para mudar Eixo, 'Shift+v' para arrastar Eixo (durante "
+#~ "movimento)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+RMB: seleção da lista de profundidade"
+
+#~ msgid "Clone Down"
+#~ msgstr "Clonar Abaixo"
+
+#~ msgid "Yaw"
+#~ msgstr "Direção"
+
+#~ msgid "Size"
+#~ msgstr "Tamanho"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Arrastar: Rodar\n"
+#~ "Alt+Arrastar: Mover\n"
+#~ "Alt+RMB: Seleção lista de profundidade"
+
+#~ msgid "Sep.:"
+#~ msgstr "Sep.:"
+
+#~ msgid "Add All"
+#~ msgstr "Adicionar tudo"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Menu edição de tema."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Criar Modelo vazio"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Criar Modelo Editor vazio"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Criar a partir de tema Editor atual"
+
+#~ msgid "Data Type:"
+#~ msgstr "Tipo de dados:"
+
+#~ msgid "Theme File"
+#~ msgstr "Ficheiro Tema"
+
+#~ msgid "Compiled"
+#~ msgstr "Compilado"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Remover %d projetos da lista?\n"
+#~ "O conteúdo das pastas não será modificado."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Remover este projeto da lista?\n"
+#~ "O conteúdo da pasta não será modificado."
+
+#~ msgid "Templates"
+#~ msgstr "Modelos"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Adicionar Caminho Remapeado"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Não consigo executar com o nó raiz."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Não consigo ler ficheiro de imagem do ecrã de inicialização:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "A usar imagem de inicialização predefinida."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Um reprodutor de animação não se pode animar a ele próprio, apenas a "
@@ -13227,9 +14651,6 @@ msgstr "Constantes não podem ser modificadas."
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "Já existe um ficheiro ou pasta com o mesmo nome nesta localização."
-#~ msgid "Aligning APK..."
-#~ msgstr "A alinhar APK..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "Incapaz de completar o alinhamento APK."
@@ -13292,9 +14713,6 @@ msgstr "Constantes não podem ser modificadas."
#~ msgstr ""
#~ "A cena atual nunca foi guardada, por favor guarde-a antes de executar."
-#~ msgid "Not in resource path."
-#~ msgstr "Não está no caminho do recurso."
-
#~ msgid "Revert"
#~ msgstr "Reverter"
@@ -13399,9 +14817,6 @@ msgstr "Constantes não podem ser modificadas."
#~ msgid "Input"
#~ msgstr "Entrada"
-#~ msgid "Properties:"
-#~ msgstr "Propriedades:"
-
#~ msgid "Methods:"
#~ msgstr "Métodos:"
@@ -13887,9 +15302,6 @@ msgstr "Constantes não podem ser modificadas."
#~ msgid "Connect two points to make a split."
#~ msgstr "Conectar dois pontos para fazer uma divisão."
-#~ msgid "Select a split to erase it."
-#~ msgstr "Selecionar uma separação para a apagar."
-
#~ msgid "Add Node.."
#~ msgstr "Adicionar Nó.."
@@ -13958,9 +15370,6 @@ msgstr "Constantes não podem ser modificadas."
#~ msgid "Public Methods:"
#~ msgstr "Métodos Públicos:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Itens do tema GUI"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Itens do tema GUI:"
@@ -14019,9 +15428,6 @@ msgstr "Constantes não podem ser modificadas."
#~ msgid "Rotate 270 degrees"
#~ msgstr "Rodar 270 graus"
-#~ msgid "Variable"
-#~ msgstr "Variável"
-
#~ msgid "Errors:"
#~ msgstr "Erros:"
@@ -14112,9 +15518,6 @@ msgstr "Constantes não podem ser modificadas."
#~ msgid "Set Transitions to:"
#~ msgstr "Definir transições para:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Anim Renomear Pista"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Pista Anim Mudar Interpolação"
@@ -14262,12 +15665,6 @@ msgstr "Constantes não podem ser modificadas."
#~ msgid "StyleBox Preview:"
#~ msgstr "Pré-visualização StyleBox:"
-#~ msgid "StyleBox"
-#~ msgstr "StyleBox"
-
-#~ msgid "Separation:"
-#~ msgstr "Separação:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Editor da região de textura"
@@ -14339,12 +15736,6 @@ msgstr "Constantes não podem ser modificadas."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "Impossível encontrar project.godot no Caminho do Projeto."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "Impossível encontrar project.godot no Caminho do Projeto."
-
-#~ msgid "Not found!"
-#~ msgstr "Não encontrado!"
-
#~ msgid "Replace By"
#~ msgstr "Substituir por"
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index e79dd0fa19..c11e4f347b 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -640,7 +640,8 @@ msgstr "Segundos"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -666,7 +667,8 @@ msgstr "Selecionar Escala"
msgid "Scale From Cursor"
msgstr "Escalar a partir do Cursor"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplicar Seleção"
@@ -687,6 +689,11 @@ msgid "Go to Previous Step"
msgstr "Ir ao Passo Anterior"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Recompor"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Otimizar Animação"
@@ -703,6 +710,11 @@ msgid "Use Bezier Curves"
msgstr "Usar Curvas de Bezier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Colar Trilhas"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Otimizador de Animação"
@@ -751,7 +763,7 @@ msgid "Select Tracks to Copy"
msgstr "Selecionar Trilhas para Copiar"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -837,12 +849,14 @@ msgid "Toggle Scripts Panel"
msgstr "Alternar Painel de Scripts"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Ampliar"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -899,11 +913,9 @@ msgid "Add"
msgstr "Adicionar"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -954,6 +966,7 @@ msgstr "Não foi possível conectar o sinal"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -1023,7 +1036,8 @@ msgid "Edit..."
msgstr "Editar..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Ir ao Método"
#: editor/create_dialog.cpp
@@ -1038,6 +1052,14 @@ msgstr "Alterar"
msgid "Create New %s"
msgstr "Criar Novo %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Sem resultados para \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -1059,8 +1081,8 @@ msgstr "Pesquisar:"
msgid "Matches:"
msgstr "Correspondências:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1136,20 +1158,24 @@ msgid "Owners Of:"
msgstr "Donos De:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Remover arquivos selecionados do projeto? (irreversível)\n"
"Você pode encontrar os arquivos removidos na lixeira do sistema para "
"restaurá-los."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Os arquivos sendo removidos são requeridos por outros recursos para que "
"funcionem.\n"
@@ -1199,7 +1225,7 @@ msgstr "Explorador de Recursos Órfãos"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1324,28 +1350,41 @@ msgstr "Componentes"
msgid "Licenses"
msgstr "Licenças"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Erro ao abrir arquivo compactado, não está no formato ZIP."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Erro ao abrir arquivo compactado (não está em formato ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Já existe)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Descompactando Assets"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Os arquivos a seguir falharam ao serem extraídos do pacote:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "%s mais arquivo(s)."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Pacote instalado com sucesso!"
#: editor/editor_asset_installer.cpp
@@ -1353,16 +1392,13 @@ msgstr "Pacote instalado com sucesso!"
msgid "Success!"
msgstr "Sucesso!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Conteúdo:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instalar"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Instalador de Pacotes"
#: editor/editor_audio_buses.cpp
@@ -1426,7 +1462,8 @@ msgid "Bypass"
msgstr "Ignorar"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Opções da pista"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1506,7 +1543,7 @@ msgstr "Adicionar Canal"
msgid "Add a new Audio Bus to this layout."
msgstr "Adicionar um novo Canal de Ãudio a este layout."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1593,6 +1630,15 @@ msgid "Can't add autoload:"
msgstr "Não pode adicionar autoload:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "O arquivo não existe."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Adicionar Autoload"
@@ -1608,16 +1654,17 @@ msgid "Node Name:"
msgstr "Nome do Nó:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nome"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Variável"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Colar Parâmetros"
@@ -1633,7 +1680,7 @@ msgstr "Armazenando alterações locais..."
msgid "Updating scene..."
msgstr "Atualizando Cena..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[vazio]"
@@ -1789,8 +1836,49 @@ msgid "Import Dock"
msgstr "Importar Dock"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Apagar perfil '%s'? (sem desfazer)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Atual)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1821,15 +1909,18 @@ msgid "Enable Contextual Editor"
msgstr "Habilitar Editor Contextual"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Propriedades Ativadas:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Propriedades:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Funcionalidades Ativadas:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Funcionalidades"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Classes Ativadas:"
#: editor/editor_feature_profile.cpp
@@ -1848,25 +1939,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Erro ao salvar perfil no caminho: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Desmontardo"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Redefinir para os padrões"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Perfil Atual:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Definir como atual"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Apagar Perfil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Novo"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Remover Telha"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Perfis Disponíveis:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Definir como atual"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importar"
@@ -1875,20 +1975,22 @@ msgid "Export"
msgstr "Exportação"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Perfis Disponíveis:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Perfil Atual:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Opções da Classe"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Opções da Textura"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Novo nome de perfil:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Apagar Perfil"
+msgid "New profile name:"
+msgstr "Novo nome de perfil:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1911,7 +2013,8 @@ msgid "Select Current Folder"
msgstr "Selecionar a Pasta Atual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "O arquivo existe. Sobrescrever?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1965,9 +2068,10 @@ msgid "Open a File or Directory"
msgstr "Abrir Arquivo ou Diretório"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Salvar"
@@ -2048,8 +2152,7 @@ msgid "Directories & Files:"
msgstr "Diretórios & Arquivos:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Previsualização:"
@@ -2122,7 +2225,7 @@ msgstr "Propriedades do Tema"
msgid "Enumerations"
msgstr "Enumerações"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Constantes"
@@ -2211,7 +2314,7 @@ msgstr "Método"
msgid "Signal"
msgstr "Sinal"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Constante"
@@ -2227,9 +2330,10 @@ msgstr "Propriedade do Tema"
msgid "Property:"
msgstr "Propriedade:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Conjunto %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2244,7 +2348,7 @@ msgid "Copy Selection"
msgstr "Copiar Seleção"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2308,7 +2412,8 @@ msgid "Imported resources can't be saved."
msgstr "Recursos Importados não podem ser salvos."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2529,18 +2634,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Salvar alterações em '%s' antes de fechar?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Foram salvos %s recurso(s) modificado(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Um nó raiz é requerido para salvar a cena."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Salvar Cena Como..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Essa operação não pode ser realizada sem uma cena."
@@ -2742,7 +2852,7 @@ msgstr "Excluir Layout"
msgid "Default"
msgstr "Padrão"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Mostrar em Arquivos"
@@ -2923,6 +3033,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Explorador de Recursos Órfãos..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Renomear Projeto"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Sair para a Lista de Projetos"
@@ -3079,20 +3194,25 @@ msgstr "Gerenciar Modelos de Exportação..."
msgid "Help"
msgstr "Ajuda"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Documentação Online"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Abrir Documentação"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Perguntas & Respostas"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Reportar bug"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "Defina um Valor"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Enviar Feedback de Docs"
@@ -3101,7 +3221,8 @@ msgid "Community"
msgstr "Comunidade"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Sobre"
#: editor/editor_node.cpp
@@ -3200,6 +3321,16 @@ msgid "Manage Templates"
msgstr "Gerenciar Templates"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Instalar a Partir do Arquivo"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Selecione uma Malha de origem:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3236,7 +3367,7 @@ msgstr "Importar Modelos de um Arquivo ZIP"
msgid "Template Package"
msgstr "Pacote de modelos"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Exportar Biblioteca"
@@ -3279,6 +3410,11 @@ msgid "Select"
msgstr "Selecionar"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Selecionar a Pasta Atual"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Abrir Editor 2D"
@@ -3310,6 +3446,11 @@ msgstr "Aviso!"
msgid "No sub-resources found."
msgstr "Nenhum sub-recurso encontrado."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Nenhum sub-recurso encontrado."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Criando Previsualizações das Malhas"
@@ -3334,33 +3475,34 @@ msgstr "Plugins Instalados:"
msgid "Update"
msgstr "Atualizar"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versão:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Status:"
+#, fuzzy
+msgid "Author"
+msgstr "Autores"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Editar:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Estado"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Medida:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Tempo do Frame (seg)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Tempo Médio (seg)"
#: editor/editor_profiler.cpp
@@ -3380,6 +3522,16 @@ msgid "Self"
msgstr "Self"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Frame nº:"
@@ -3421,14 +3573,6 @@ msgstr "RID inválido"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"O recurso selecionado (%s) não corresponde ao tipo esperado para essa "
-"propriedade (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3453,40 +3597,6 @@ msgid "Pick a Viewport"
msgstr "Escolha uma Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Novo Script"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Estender Script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Novo %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Tornar Único"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Colar"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Converter Para %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "O nó selecionado não é uma Viewport!"
@@ -3515,6 +3625,49 @@ msgstr "Novo Valor:"
msgid "Add Key/Value Pair"
msgstr "Adicionar Par de Chave/Valor"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"O recurso selecionado (%s) não corresponde ao tipo esperado para essa "
+"propriedade (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Tornar Único"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Colar"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Converter Para %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Novo %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Novo Script"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Estender Script"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3551,7 +3704,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Você esqueceu o método '_run'?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Segure Ctrl para arredondar para números inteiros. Segure Shift para aplicar "
"mudanças mais precisas."
@@ -3573,79 +3727,98 @@ msgid "Import From Node:"
msgstr "Importar a Partir do Nó:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Baixar Novamente"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Desinstalar"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Instalado)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Não existe o arquivo '%s'."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Baixar"
+#, fuzzy
+msgid "Retrieving the mirror list..."
+msgstr "Reconectando, por favor aguarde."
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
-"Modelos de exportação oficiais não estão disponíveis para compilações de "
-"desenvolvimento."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Faltando)"
+msgid "Error requesting URL:"
+msgstr "Erro ao solicitar URL:"
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Atual)"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Conectando..."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
-msgstr "Reconectando, por favor aguarde."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Não foi possível resolver o hostname:"
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Remover versão '%s' do modelo?"
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Não foi possível conectar ao host:"
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Não se pôde abrir zip dos modelos de exportação."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Sem resposta do host:"
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Formato do version.txt inválido dentro de templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
+msgstr "A solicitação falhou."
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Não foi encontrado um version.txt dentro dos modelos."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "A solicitação falhou, muitos redirecionamentos"
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Erro ao criar caminho para modelos:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "A solicitação falhou."
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Extraindo Modelos de Exportação"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importando:"
+msgid "Cannot remove temporary file:"
+msgstr "Não é possível remover o arquivo temporário:"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
+msgstr ""
+"Falha na instalação de modelos. \n"
+"Os arquivos de modelos problemáticos podem ser encontrados em '%s'."
#: editor/export_template_manager.cpp
msgid "Error getting the list of mirrors."
msgstr "Erro ao obter a lista de espelhos."
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
msgstr ""
"Erro ao analisar o JSON da lista de espelhos. Por favor, reporte este "
"problema!"
#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
msgid ""
"No download links found for this version. Direct download is only available "
"for official releases."
@@ -3654,58 +3827,6 @@ msgstr ""
"disponível apenas para lançamentos oficiais."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Não foi possível resolver."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Não foi possível conectar."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Sem resposta."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "A Solicitação Falhou."
-
-#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Loop de Redirecionamento."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Falhou:"
-
-#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Download completo."
-
-#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr "Não é possível remover o arquivo temporário:"
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
-msgstr ""
-"Falha na instalação de modelos. \n"
-"Os arquivos de modelos problemáticos podem ser encontrados em '%s'."
-
-#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Erro ao solicitar URL:"
-
-#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Conectando..."
-
-#: editor/export_template_manager.cpp
msgid "Disconnected"
msgstr "Desconectado"
@@ -3748,44 +3869,140 @@ msgid "SSL Handshake Error"
msgstr "Erro SSL Handshake"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Não se pôde abrir zip dos modelos de exportação."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Formato do version.txt inválido dentro de templates: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Não foi encontrado um version.txt dentro dos modelos."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Erro ao criar caminho para modelos:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Extraindo Modelos de Exportação"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importando:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Remover versão '%s' do modelo?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Descompactando Fontes de Compilação do Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Gerenciador de Exportação de Modelo"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versão Atual:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Versões Instaladas:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Abrir um arquivo"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Desinstalar"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Valor inicial para o contador"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Erro ao baixar"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"Modelos de exportação oficiais não estão disponíveis para compilações de "
+"desenvolvimento."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Instalar a Partir do Arquivo"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Remover Modelo"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importar Modelos de um Arquivo ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Cancelar"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Selecionar o Arquivo de Modelo"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Não se pôde abrir zip dos modelos de exportação."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Modelos de Exportação"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Versões Instaladas:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Gerenciador de Exportação de Modelo"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Desinstalar"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Selecionar o Arquivo de Modelo"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Baixar Modelos"
+msgid "Godot Export Templates"
+msgstr "Modelos de Exportação"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Selecione um espelho da lista: (Shift+Click: Abrir no Navegador)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3920,29 +4137,62 @@ msgstr "Novo Script..."
msgid "New Resource..."
msgstr "Novo Recurso..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Expandir Tudo"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Recolher Tudo"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplicar..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Pesquisar arquivos"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Mover para o Lixo"
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Ultima Modificação"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Ultima Modificação"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplicar..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Renomear..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Pasta/Arquivo Anterior"
@@ -4026,10 +4276,6 @@ msgstr "Localizar..."
msgid "Replace..."
msgstr "Substituir..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Cancelar"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Encontrar: "
@@ -4253,53 +4499,55 @@ msgid "Failed to load resource."
msgstr "Falha ao carregar recurso."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Expandir Todas as Propriedades"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Propriedades"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Recolher Todas as Propriedades"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Salvar Como..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Propriedades"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Copiar Parâmetros"
+msgid "Make Sub-Resources Unique"
+msgstr "Tornar Únicos os Sub-recursos"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Editar Ãrea de Transferência de Recursos"
+msgid "Create a new resource in memory and edit it."
+msgstr "Cria um novo recurso na memória e o edita."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Copiar Recurso"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Carrega um recurso existente do disco e o edita."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Tornar Embutido"
+msgid "Save the currently edited resource."
+msgstr "Salva o recurso editado atualmente."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Tornar Únicos os Sub-recursos"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Salvar Como..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Abrir na Ajuda"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Não está no caminho de recursos."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Cria um novo recurso na memória e o edita."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Editar Ãrea de Transferência de Recursos"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Carrega um recurso existente do disco e o edita."
+msgid "Copy Resource"
+msgstr "Copiar Recurso"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Salva o recurso editado atualmente."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Tornar Embutido"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4314,14 +4562,24 @@ msgid "History of recently edited objects."
msgstr "Histórico dos objetos editados recentemente."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Propriedades do objeto."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Abrir Documentação"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Abrir Documentação"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtrar propriedades"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Propriedades do objeto."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Alterações podem ser perdidas!"
@@ -4349,6 +4607,15 @@ msgstr "Nome do Plugin:"
msgid "Subfolder:"
msgstr "Subpasta:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versão:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Idioma:"
@@ -4555,7 +4822,8 @@ msgid "Blend:"
msgstr "Misturar:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parâmetro Modificado"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4779,6 +5047,11 @@ msgid "Animation"
msgstr "Animação"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Novo"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Editar Conexões..."
@@ -5120,10 +5393,18 @@ msgid "View Files"
msgstr "Ver Arquivos"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Baixar"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Erro na conexão, por favor tente novamente."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Não foi possível conectar."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Não foi possível conectar ao host:"
@@ -5132,16 +5413,20 @@ msgid "No response from host:"
msgstr "Sem resposta do host:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Sem resposta."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Não foi possível resolver o hostname:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "A solicitação falhou, código de retorno:"
+msgid "Can't resolve."
+msgstr "Não foi possível resolver."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "A solicitação falhou."
+msgid "Request failed, return code:"
+msgstr "A solicitação falhou, código de retorno:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5168,6 +5453,10 @@ msgid "Timeout."
msgstr "Tempo esgotado."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Falhou:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Hash de download ruim, assumindo que o arquivo foi adulterado."
@@ -5268,8 +5557,12 @@ msgid "All"
msgstr "Todos"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Sem resultados para \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5311,6 +5604,10 @@ msgstr "Carregando..."
msgid "Assets ZIP File"
msgstr "Arquivo ZIP de Assets"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5320,9 +5617,10 @@ msgstr ""
"Salve sua cena e tente novamente."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Não há malhas para preparar. Certifique-se de que elas possuem um canal UV2 "
"e que a propriedade \"Preparar Luz\" está habilitada."
@@ -5569,9 +5867,10 @@ msgstr "Alterar Âncoras"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Sobrepor Câmera de Jogo\n"
"Sobrepõe a câmera de jogo com a janela de exibição da câmera."
@@ -5579,11 +5878,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Sobrepor Câmera de Jogo\n"
-"Sem instância de jogo em execução."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5638,6 +5936,7 @@ msgstr ""
"pelo pai."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5649,22 +5948,32 @@ msgid "Select Mode"
msgstr "Modo de Seleção"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Arrastar: Rotacionar"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Remover nó ou trilha selecionada."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Arrastar: Mover"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Remover nó ou trilha selecionada."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Aperte \"v\" para Alterar Pivô, \"Shift+v\" para Arrastar Pivô (enquanto o "
-"move)."
+"Mostrar uma lista de todos os objetos na posição clicada\n"
+"(mesmo como Alt + botão direito do mouse no Modo de seleção)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt + botão direito do mouse: Lista de seleção de profundidade"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5902,6 +6211,16 @@ msgid "Clear Pose"
msgstr "Limpar Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Adicionar Nó"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Instanciar Cena(s)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Multiplicar o passo da grade por 2"
@@ -5914,6 +6233,52 @@ msgid "Pan View"
msgstr "Deslocar Visão"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Reduzir"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Reduzir"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Reduzir"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Reduzir"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Reduzir"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Reduzir"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Adicionar %s"
@@ -6156,6 +6521,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Não foi possível criar uma forma de colisão convexa simples."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Criar Forma(s) Convexa(s) Simples"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Criar Forma(s) Convexa(s) Simples"
@@ -6188,7 +6558,8 @@ msgid "No mesh to debug."
msgstr "Nenhuma malha para depurar."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Modelo não tem uma UV nesta camada"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6254,13 +6625,27 @@ msgstr ""
"Esta é a opção mais rápida (mas menos precisa) para detecção de colisão."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Criar um irmão de Colisão Convexa"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Criar Múltipla Colisão Convexa Irmã(s)"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Cria um polígono base de colisão forma.\n"
"Este é um meio-termo entre as duas opções acima."
@@ -6322,7 +6707,6 @@ msgid "Mesh Library"
msgstr "Biblioteca de Malhas"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Adicionar Item"
@@ -6597,7 +6981,8 @@ msgid "Close Curve"
msgstr "Fechar Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Opções"
@@ -6909,6 +7294,26 @@ msgstr "Carregar Recurso"
msgid "ResourcePreloader"
msgstr "ResourcePreloader"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Inverter Horizontalmente"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Gerar Contagem de Pontos:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Gerar Contagem de Pontos:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Inverter Horizontalmente"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree não tem caminho definido para um AnimationPlayer"
@@ -7114,7 +7519,7 @@ msgstr "Rodar"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Pesquisar"
@@ -7145,6 +7550,11 @@ msgid "Debug with External Editor"
msgstr "Depurar com o Editor Externo"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Documentação Online"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Abrir a documentação online da Godot."
@@ -7270,8 +7680,8 @@ msgstr "Ir Para"
msgid "Cut"
msgstr "Recortar"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Selecionar tudo"
@@ -7304,10 +7714,6 @@ msgid "Unfold All Lines"
msgstr "Mostrar Todas as Linhas"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Clonar Abaixo"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Completar Símbolo"
@@ -7461,6 +7867,28 @@ msgid "View Plane Transform."
msgstr "Ver Transformada do Plano."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Nenhum"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Status:"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Translação:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Escala:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Escala: "
@@ -7481,42 +7909,54 @@ msgid "Animation Key Inserted."
msgstr "Chave de Animação Inserida."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Tom"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Guinada"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Tamanho"
+#, fuzzy
+msgid "Size:"
+msgstr "Tamanho: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Objetos Desenhados"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Alterações de Material"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Alterações de Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Alterações de Superfície"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Chamadas de Desenho"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Vértices"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Visão Superior."
@@ -7669,6 +8109,11 @@ msgid "Freelook Slow Modifier"
msgstr "Modificador de velocidade lenta da Visão Livre"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Alterar Tamanho da Câmera"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Ver Rotação Bloqueada"
@@ -7688,6 +8133,11 @@ msgstr ""
"Ele não deve ser usado como indicação confiável de desempenho do jogo."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Converter Para %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Diálogo XForm"
@@ -7707,7 +8157,8 @@ msgstr ""
"x\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Encaixar Nó(s) no Chão"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7715,16 +8166,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Não foi encontrado chão sólido onde encaixar a seleção."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Arrastar: Rotacionar\n"
-"Alt + Arrastar: Mover\n"
-"Alt + botão direito do mouse: Lista de Profundidade"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Usar Espaço Local"
@@ -7733,6 +8174,10 @@ msgid "Use Snap"
msgstr "Use Encaixar"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Visão inferior"
@@ -7826,6 +8271,11 @@ msgid "View Grid"
msgstr "Ver Grade"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Configurações da Viewport"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Configurações..."
@@ -8116,11 +8566,6 @@ msgid "Snap Mode:"
msgstr "Modo Snap:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Nenhum"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Snap de Pixel"
@@ -8141,165 +8586,603 @@ msgid "Step:"
msgstr "Passo:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Set .:"
+msgid "Separation:"
+msgstr "Separação:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "Região da Textura"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Adicionar Todos os Itens"
+#, fuzzy
+msgid "Colors"
+msgstr "Cor"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Adicionar Todos"
+#, fuzzy
+msgid "Fonts"
+msgstr "Fonte"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Ãcone"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "StyleBox"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Nenhum sub-recurso encontrado."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Constantes"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Cor constante."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Não encontrado!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Não encontrado!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Nenhum sub-recurso encontrado."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Importar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Sair do editor?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analisando"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtro: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Selecione um Nó"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Selecione um item de configuração primeiro!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Selecione um item de configuração primeiro!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Selecione um item de configuração primeiro!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Selecione um item de configuração primeiro!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Selecione um item de configuração primeiro!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Selecione um item de configuração primeiro!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Recolher Tudo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Expandir Tudo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Selecionar o Arquivo de Modelo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Selecionar Pontos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Selecionar tudo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importar Cena"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Remover Todos os Itens"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Remover Tudo"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Remover Item"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Editar Tema"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Remover Todos os Itens"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Menu de edição de tema."
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Remover Todos os Itens"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Remover Todos os Itens"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Remover Todos os Itens"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Adicionar Itens de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Adicionar Itens de Classe"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Adicionar Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Adicionar Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Adicionar Todos os Itens"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Remover Itens de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Remover Itens de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Renomear Nó"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Renomear Nó"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Remover Item Selecionado"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Arquivo inválido, não é um layout de canais de áudio."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Gerenciar Templates"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Item Editável"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Tipo:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Adicionar Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Adicionar Todos os Itens"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Remover Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Remover Itens de Classe"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Criar Modelo Vazio"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Remover Itens de Classe"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Remover Todos os Itens"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Itens do Tema de GUI"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Criar Modelo de Editor Vazio"
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nome do Nó:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Criar a Partir do Tema Atual do Editor"
+#, fuzzy
+msgid "Import Items"
+msgstr "Importar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Padrão"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Editar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Excluir Recurso"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Importar Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Renomear Trilha na Anim"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Renomear em lote"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Sobrescreve"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Tipo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Adicionar Item"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Tipo de nó"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Carregar Padrão"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Sobrescreve"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Gerenciar Modelos de Exportação..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Visualização"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Atualizar visualização"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Selecione uma Malha de origem:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Alternar Botão"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Botão Desativado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Item"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Item Desativado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Item Marcável"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Item Checado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Item Rádio"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Item Rádio Marcado"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Sep. Nomeado."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Submenu"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Subitem 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Subitem 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Tem"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Muitas"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "LineEdit Desativado"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Guia 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Guia 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Guia 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Item Editável"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Subárvore"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Tem,Muitas,Opções"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Tipo de Dados:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Ãcone"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Estilo"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Fonte"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Cor"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Arquivo inválido, não é um layout de canais de áudio."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Arquivo de Tema"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8471,6 +9354,10 @@ msgid "Priority"
msgstr "Prioridade"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Ãcone"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Ãndice Z"
@@ -8804,11 +9691,6 @@ msgid "Commit Changes"
msgstr "Confirmar Mudanças"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Estado"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "Ver aquivos diff antes do commit para a última versão"
@@ -9696,7 +10578,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Editar Propriedade Visual"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9825,7 +10708,8 @@ msgid "Script"
msgstr "Roteiro"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Modo de Exportação de Scripts:"
#: editor/project_export.cpp
@@ -9833,19 +10717,21 @@ msgid "Text"
msgstr "Texto"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Compilado"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Criptografado (Forneça Chave Abaixo)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Chave de Criptografia Inválida (é necessário 64 caracteres)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Chave de Criptografia dos Scripts (256-bit como hex):"
#: editor/project_export.cpp
@@ -9918,7 +10804,8 @@ msgid "Imported Project"
msgstr "Projeto Importado"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Nome do Projeto Inválido."
#: editor/project_manager.cpp
@@ -9954,6 +10841,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Não foi possível criar project.godot no caminho do projeto."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Erro ao abrir arquivo compactado, não está no formato ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Os arquivos a seguir falharam ao serem extraídos do pacote:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Pacote instalado com sucesso!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Renomear Projeto"
@@ -10132,20 +11031,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Tem certeza de que quer executar %d projetos ao mesmo tempo?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Remover %d projetos da lista?\n"
-"O conteúdo das pastas do projeto não será modificado."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Selecione um dispositivo da lista"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Remover este projeto da lista?\n"
-"O conteúdo da pasta do projeto não será modificado."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Selecione um dispositivo da lista"
#: editor/project_manager.cpp
msgid ""
@@ -10179,7 +11072,8 @@ msgid "Project Manager"
msgstr "Gerenciador de Projetos"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projetos"
#: editor/project_manager.cpp
@@ -10191,10 +11085,25 @@ msgid "Last Modified"
msgstr "Ultima Modificação"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Exportar Projeto"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Renomear Projeto"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Escanear"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projetos"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Selecione uma Pasta para Analisar"
@@ -10203,18 +11112,41 @@ msgid "New Project"
msgstr "Novo Projeto"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Projeto Importado"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Renomear Projeto"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Remover Ausente"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Modelos"
+msgid "About"
+msgstr "Sobre"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Biblioteca de Assets"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Reiniciar Agora"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Remover Tudo"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Não é possível executar o projeto"
@@ -10227,8 +11159,14 @@ msgstr ""
"Gostaria de explorar projetos de exemplo oficiais na Asset Library?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtrar propriedades"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10242,6 +11180,10 @@ msgid "Key "
msgstr "Tecla "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Botão do Joystick"
@@ -10285,6 +11227,10 @@ msgstr "Todos os dispositivos"
msgid "Device"
msgstr "Dispositivo"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Pressione uma Tecla..."
@@ -10426,7 +11372,8 @@ msgid "Override for Feature"
msgstr "Sobrescrever para Funcionalidade"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Adicionar Tradução"
#: editor/project_settings_editor.cpp
@@ -10434,11 +11381,13 @@ msgid "Remove Translation"
msgstr "Remover Tradução"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Adicionar Caminho Remapeado"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Remapeamento de Recurso Adicionar Remap"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Remapeamento de Recurso Adicionar Remap"
#: editor/project_settings_editor.cpp
@@ -10710,6 +11659,10 @@ msgid "Post-Process"
msgstr "Pós-Processamento"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Estilo"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Manter"
@@ -10876,12 +11829,30 @@ msgid "Delete node \"%s\"?"
msgstr "Excluir o nó \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Não é possível trabalhar com o nó raiz."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Essa operação não pode ser realizada em cenas instanciadas."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10940,6 +11911,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Não é possível operar em nós que a cena atual herda!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Essa operação não pode ser realizada em cenas instanciadas."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Adicionar Script"
@@ -10988,10 +11963,6 @@ msgid "Load As Placeholder"
msgstr "Carregar como Substituto"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Abrir Documentação"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11284,6 +12255,12 @@ msgstr ""
"usando um editor externo."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Nome da Classe:"
@@ -11352,6 +12329,10 @@ msgid "Copy Error"
msgstr "Copiar Erro"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Memória de Vídeo"
@@ -11637,6 +12618,16 @@ msgstr "Dicionário de instância inválido (subclasses inválidas)"
msgid "Object can't provide a length."
msgstr "Objeto não pôde fornecer um comprimento."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exportar Biblioteca de Malhas"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exportar..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Próximo Plano"
@@ -11678,6 +12669,11 @@ msgid "GridMap Paint"
msgstr "Pintura GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Seleção de preenchimento GridMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Mapa de Grade"
@@ -11926,6 +12922,16 @@ msgid "Add Output Port"
msgstr "Adicionar porta de saída"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Mudar Tipo"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Alterar nome da porta de entrada"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Não deve coincidir com um nome de função existente."
@@ -12038,6 +13044,11 @@ msgid "Add Preload Node"
msgstr "Adicionar Nó de Pré-carregamento"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Adicionar Nó"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Adicionar Nó(s) a Partir da Ãrvore"
@@ -12269,10 +13280,6 @@ msgstr "Buscar VisualScript"
msgid "Get %s"
msgstr "Receba %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Conjunto %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Nome do pacote está faltando."
@@ -12305,6 +13312,40 @@ msgid "Select device from the list"
msgstr "Selecione um dispositivo da lista"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Exportando tudo"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Desinstalar"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Carregando, por favor aguarde."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Não foi possível instanciar cena!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Rodando Script Personalizado..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Não foi possível criar a pasta."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Não foi possível encontrar a ferramenta 'apksigner'."
@@ -12427,6 +13468,48 @@ msgstr ""
"habilitado."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Escaneando arquivos,\n"
+"Por favor aguarde..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Não foi possível abrir o modelo para exportar:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Adicionando %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Exportando tudo"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr "Nome de arquivo invalido! Android App Bunlde requer a extensão *.aab."
@@ -12439,6 +13522,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Nome de arquivo inválido! Android APK requer a extensão *.apk."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12460,6 +13547,21 @@ msgstr ""
"Por favor reinstale o modelo de compilação do Android pelo menu 'Projeto'."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Não foi possível encontrar project.godot no caminho do projeto."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Não foi possível escrever o arquivo:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Construindo Projeto Android (gradle)"
@@ -12484,11 +13586,54 @@ msgstr ""
"Não foi possível copiar e renomear o arquivo de exportação, verifique o "
"diretório do projeto gradle por saídas."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animação não encontrada: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Criando contornos..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Não foi possível abrir o modelo para exportar:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Adicionando %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Não foi possível escrever o arquivo:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Identificador está ausente."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "O caractere '%s' não é permitido no identificador."
@@ -12518,10 +13663,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Rodar HTML exportado no navegador padrão do sistema."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Não foi possível escrever o arquivo:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Não foi possível abrir o modelo para exportar:"
@@ -12530,16 +13671,49 @@ msgid "Invalid export template:"
msgstr "Template de exportação inválido:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Não foi possível escrever o arquivo:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Não foi possível escrever o arquivo:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Não foi possível ler o shell HTML personalizado:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Não foi possível ler o arquivo de imagem boot splash:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Não foi possível criar a pasta."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Usando imagem boot splash padrão."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Erro ao salvar cena."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "O nome não é um identificador válido:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12964,6 +14138,13 @@ msgstr ""
"GIProbes não são suportados pelo driver de vídeo GLES2.\n"
"Use um BakedLightmap em vez disso."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "Um SpotLight com um ângulo maior que 90 graus não pode criar sombras."
@@ -13048,6 +14229,18 @@ msgstr "A junta não está conectada a nenhum PhysicsBody"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Nó A e Nó B devem ser diferente PhysicsBodies"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -13056,6 +14249,46 @@ msgstr ""
"A propriedade \"Caminho\" deve apontar para um nó Spatial ou derivados para "
"funcionar."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Este corpo será ignorado até você definir uma malha."
@@ -13117,6 +14350,10 @@ msgstr "No nó do BlendTree '%s', animação não encontrada: '%s'"
msgid "Animation not found: '%s'"
msgstr "Animação não encontrada: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "No nó '%s', animação inválida: '%s'."
@@ -13292,6 +14529,27 @@ msgid "Invalid comparison function for that type."
msgstr "Função de comparação inválida para esse tipo."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Variáveis só podem ser atribuídas na função de vértice."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Atribuição à função."
@@ -13300,13 +14558,179 @@ msgid "Assignment to uniform."
msgstr "Atribuição à uniforme."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Variáveis só podem ser atribuídas na função de vértice."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Constantes não podem serem modificadas."
+#~ msgid "Package Contents:"
+#~ msgstr "Conteúdo:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Apagar perfil '%s'? (sem desfazer)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Propriedades Ativadas:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Funcionalidades Ativadas:"
+
+#~ msgid "Unset"
+#~ msgstr "Desmontardo"
+
+#~ msgid "Class Options"
+#~ msgstr "Opções da Classe"
+
+#~ msgid "Set"
+#~ msgstr "Set"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Foram salvos %s recurso(s) modificado(s)."
+
+#~ msgid "Q&A"
+#~ msgstr "Perguntas & Respostas"
+
+#~ msgid "Status:"
+#~ msgstr "Status:"
+
+#~ msgid "Edit:"
+#~ msgstr "Editar:"
+
+#~ msgid "Redownload"
+#~ msgstr "Baixar Novamente"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Instalado)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Faltando)"
+
+#~ msgid "Request Failed."
+#~ msgstr "A Solicitação Falhou."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Loop de Redirecionamento."
+
+#~ msgid "Download Complete."
+#~ msgstr "Download completo."
+
+#~ msgid "Remove Template"
+#~ msgstr "Remover Modelo"
+
+#~ msgid "Download Templates"
+#~ msgstr "Baixar Modelos"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Selecione um espelho da lista: (Shift+Click: Abrir no Navegador)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Mover para o Lixo"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Expandir Todas as Propriedades"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Recolher Todas as Propriedades"
+
+#~ msgid "Copy Params"
+#~ msgstr "Copiar Parâmetros"
+
+#~ msgid "Open in Help"
+#~ msgstr "Abrir na Ajuda"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Sobrepor Câmera de Jogo\n"
+#~ "Sem instância de jogo em execução."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Arrastar: Rotacionar"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Aperte \"v\" para Alterar Pivô, \"Shift+v\" para Arrastar Pivô (enquanto "
+#~ "o move)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt + botão direito do mouse: Lista de seleção de profundidade"
+
+#~ msgid "Clone Down"
+#~ msgstr "Clonar Abaixo"
+
+#~ msgid "Yaw"
+#~ msgstr "Guinada"
+
+#~ msgid "Size"
+#~ msgstr "Tamanho"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Arrastar: Rotacionar\n"
+#~ "Alt + Arrastar: Mover\n"
+#~ "Alt + botão direito do mouse: Lista de Profundidade"
+
+#~ msgid "Sep.:"
+#~ msgstr "Set .:"
+
+#~ msgid "Add All"
+#~ msgstr "Adicionar Todos"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Menu de edição de tema."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Criar Modelo Vazio"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Criar Modelo de Editor Vazio"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Criar a Partir do Tema Atual do Editor"
+
+#~ msgid "Data Type:"
+#~ msgstr "Tipo de Dados:"
+
+#~ msgid "Theme File"
+#~ msgstr "Arquivo de Tema"
+
+#~ msgid "Compiled"
+#~ msgstr "Compilado"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Remover %d projetos da lista?\n"
+#~ "O conteúdo das pastas do projeto não será modificado."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Remover este projeto da lista?\n"
+#~ "O conteúdo da pasta do projeto não será modificado."
+
+#~ msgid "Templates"
+#~ msgstr "Modelos"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Adicionar Caminho Remapeado"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Não é possível trabalhar com o nó raiz."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Não foi possível ler o arquivo de imagem boot splash:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Usando imagem boot splash padrão."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Um tocador de animação não pode animar a si mesmo, apenas outros "
@@ -13415,9 +14839,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "A cena atual nunca foi salva. Por favor salve antes de rodá-la."
-#~ msgid "Not in resource path."
-#~ msgstr "Não está no caminho de recursos."
-
#~ msgid "Revert"
#~ msgstr "Reverter"
@@ -13521,9 +14942,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Input"
#~ msgstr "Entrada"
-#~ msgid "Properties:"
-#~ msgstr "Propriedades:"
-
#~ msgid "Methods:"
#~ msgstr "Métodos:"
@@ -13826,10 +15244,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Splits"
#~ msgstr "Dividir Caminho"
-#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Selecione um item de configuração primeiro!"
-
#~ msgid "Add Node.."
#~ msgstr "Adicionar Nó.."
@@ -13901,9 +15315,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Public Methods:"
#~ msgstr "Métodos Públicos:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Itens do Tema de GUI"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Itens do Tema de GUI:"
@@ -13926,9 +15337,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Match case"
#~ msgstr "Corresponder Caso"
-#~ msgid "Filter: "
-#~ msgstr "Filtro: "
-
#~ msgid "Ok"
#~ msgstr "Ok"
@@ -13967,9 +15375,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Rotate 270 degrees"
#~ msgstr "Rotacionar 270 degraus"
-#~ msgid "Variable"
-#~ msgstr "Variável"
-
#~ msgid "Errors:"
#~ msgstr "Erros:"
@@ -14060,9 +15465,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Set Transitions to:"
#~ msgstr "Definir Transições para:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Renomear Trilha na Anim"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Alterar Interpolação da Trilha"
@@ -14213,12 +15615,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "StyleBox Preview:"
#~ msgstr "Pré-Visualização do StyleBox:"
-#~ msgid "StyleBox"
-#~ msgstr "StyleBox"
-
-#~ msgid "Separation:"
-#~ msgstr "Separação:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Editor de Região da Textura"
@@ -14297,12 +15693,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "Não foi possível encontrar project.godot no caminho do projeto."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "Não foi possível encontrar project.godot no caminho do projeto."
-
-#~ msgid "Not found!"
-#~ msgstr "Não encontrado!"
-
#~ msgid "Replace By"
#~ msgstr "Substituir Por"
@@ -14676,9 +16066,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "Qualidade da Compressão da Textura (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "Opções da Textura"
-
#~ msgid "Please specify some files!"
#~ msgstr "Por favor especifique alguns arquivos!"
@@ -14839,9 +16226,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Zoom Set..."
#~ msgstr "Definir Ampliação..."
-#~ msgid "Set a Value"
-#~ msgstr "Defina um Valor"
-
#~ msgid "Parse BBCode"
#~ msgstr "Analisar BBCode"
@@ -14972,9 +16356,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgid "Instance at Cursor"
#~ msgstr "Instanciar no Cursor"
-#~ msgid "Could not instance scene!"
-#~ msgstr "Não foi possível instanciar cena!"
-
#~ msgid "Use Default Light"
#~ msgstr "Usar Luz Padrão"
@@ -15048,10 +16429,6 @@ msgstr "Constantes não podem serem modificadas."
#~ msgstr "Transição"
#, fuzzy
-#~ msgid "State"
-#~ msgstr "Status:"
-
-#, fuzzy
#~ msgid "Password"
#~ msgstr "Senha:"
diff --git a/editor/translations/ro.po b/editor/translations/ro.po
index 7ac06fc1b1..f1d65384fc 100644
--- a/editor/translations/ro.po
+++ b/editor/translations/ro.po
@@ -539,7 +539,8 @@ msgstr "Secunde"
msgid "FPS"
msgstr "FPS(cadre pe secundă)"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -565,7 +566,8 @@ msgstr "Scalați Selecția"
msgid "Scale From Cursor"
msgstr "Scalați De La Cursor"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplicați Selecția"
@@ -586,6 +588,11 @@ msgid "Go to Previous Step"
msgstr "Mergeți la Pasul Anterior"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Resetați Zoom-area"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimizați Animația"
@@ -602,6 +609,11 @@ msgid "Use Bezier Curves"
msgstr "Folosește curbe Bezier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Lipiţi Piste"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Optimizator de animație"
@@ -650,7 +662,7 @@ msgid "Select Tracks to Copy"
msgstr "Selectează Pistele de Copiat"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -736,12 +748,14 @@ msgid "Toggle Scripts Panel"
msgstr "Porniti sau opriti panoul de scripturi"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Apropiere"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -798,11 +812,9 @@ msgid "Add"
msgstr "Adăugați"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -853,6 +865,7 @@ msgstr "Nu se poate conecta semnalul"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -922,7 +935,8 @@ msgid "Edit..."
msgstr "Modificare..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Mergi la Metodă"
#: editor/create_dialog.cpp
@@ -937,6 +951,14 @@ msgstr "Schimbați"
msgid "Create New %s"
msgstr "Creați %s Nou"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -958,8 +980,8 @@ msgstr "Cautați:"
msgid "Matches:"
msgstr "Potriviri:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1035,19 +1057,23 @@ msgid "Owners Of:"
msgstr "Stăpâni La:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Ștergeți fișierele selectate din proiect? (Acțiune ireversibilă)\n"
"Poți gasi fișierele șterse in coșul de gunoi dacă vrei să le restabilești."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Fișierele în proces de ștergere sunt necesare pentru alte resurse ca ele să "
"sa funcționeze.\n"
@@ -1096,7 +1122,7 @@ msgstr "Explorator de Resurse Orfane"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1221,28 +1247,41 @@ msgstr "Componente"
msgid "Licenses"
msgstr "Licențe"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "Eroare la deschiderea fişierului pachet, nu este în format ZIP."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Există deja)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Decomprimare Asset-uri"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Următoarele file au eșuat extragerea din pachet:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "și %d alte fișiere."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Pachet instalat cu succes!"
#: editor/editor_asset_installer.cpp
@@ -1250,16 +1289,13 @@ msgstr "Pachet instalat cu succes!"
msgid "Success!"
msgstr "Succes!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Conținutul pachetului:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instalați"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Instalator de Pachet"
#: editor/editor_audio_buses.cpp
@@ -1323,7 +1359,8 @@ msgid "Bypass"
msgstr "Ocolire"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Opțiuni Pistă Audio"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1403,7 +1440,7 @@ msgstr "Adaugați Pistă Audio"
msgid "Add a new Audio Bus to this layout."
msgstr "Adăgați un nou Audio Bus acestei așezări."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1494,6 +1531,15 @@ msgid "Can't add autoload:"
msgstr "Nu pot adaugă încărcare automata:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Fișierul nu există."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Adaugați AutoLoad"
@@ -1509,16 +1555,16 @@ msgid "Node Name:"
msgstr "Nume Nod:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Nume"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton (Unicat)"
+msgid "Global Variable"
+msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Lipiţi Parametrii"
@@ -1534,7 +1580,7 @@ msgstr "Modificările locale se stochează..."
msgid "Updating scene..."
msgstr "Scena se Actualizează..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[gol]"
@@ -1694,8 +1740,49 @@ msgid "Import Dock"
msgstr "Importă Bară"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Ștergeți profilul '%s'?(ireversibil)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Curent)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1727,15 +1814,18 @@ msgid "Enable Contextual Editor"
msgstr "Activează Editorul Contextual"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Proprietăți Activate:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Reduceți toate proprietățile"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+#, fuzzy
+msgid "Main Features:"
msgstr "Caracteristici active:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Clase Activate:"
#: editor/editor_feature_profile.cpp
@@ -1755,25 +1845,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Eroare la salvarea profilului la calea: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Nesetat(ă)"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Încărcați Implicit"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Profil Curent:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Faceți Curent"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Ștergere Profil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Nou"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Elimină Șablon"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Profile Disponibile:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Faceți Curent"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importare"
@@ -1782,20 +1881,22 @@ msgid "Export"
msgstr "Exportare"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Profile Disponibile:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Profil Curent:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Opțiuni Clase"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Opțiuni Clasă:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Nume de profil nou:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Ștergere Profil"
+msgid "New profile name:"
+msgstr "Nume de profil nou:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1818,7 +1919,8 @@ msgid "Select Current Folder"
msgstr "Selectaţi directorul curent"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Fișierul există, suprascrieţi?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1872,9 +1974,10 @@ msgid "Open a File or Directory"
msgstr "Deschideți un Fişier sau Director"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Salvați"
@@ -1955,8 +2058,7 @@ msgid "Directories & Files:"
msgstr "Directoare și Fişiere:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Previzualizați:"
@@ -2029,7 +2131,7 @@ msgstr "Proprietățile Temei"
msgid "Enumerations"
msgstr "Enumerări"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Constante"
@@ -2119,7 +2221,7 @@ msgstr "Metodă"
msgid "Signal"
msgstr "Semnal"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Permanent"
@@ -2135,9 +2237,10 @@ msgstr "Proprietate Temă"
msgid "Property:"
msgstr "Proprietate:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Stabilește"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2152,7 +2255,7 @@ msgid "Copy Selection"
msgstr "Copiază Selecția"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2216,7 +2319,8 @@ msgid "Imported resources can't be saved."
msgstr "Resursele importate nu pot fi salvate."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2434,18 +2538,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Salvează schimbările la ’%s’ înainte de ieșire?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Resurse modificate %s salvate."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Un nod rădăcină este necesar pentru a salva scena."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Salvează scena ca..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Această operație nu se poate face fără o scenă."
@@ -2643,7 +2752,7 @@ msgstr "Șterge Schema"
msgid "Default"
msgstr "Implicit"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Afișare în FileSystem"
@@ -2827,6 +2936,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Explorator de resurse orfane ..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Încarcă Presetare a Curbei"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "ÃŽnchide spre Lista Proiectului"
@@ -2984,20 +3098,24 @@ msgstr "Gestionare șabloane export..."
msgid "Help"
msgstr "Ajutor"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Documentație Online"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Deschide Recente"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Întrebări și Răspunsuri"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Raportează o Eroare"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Trimite Feedbackul Docs"
@@ -3006,7 +3124,8 @@ msgid "Community"
msgstr "Comunitate"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Despre"
#: editor/editor_node.cpp
@@ -3105,6 +3224,16 @@ msgid "Manage Templates"
msgstr "Gestionați șabloanele"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Instalează Din Fișier"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Selectează un Mesh Sursă:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3131,7 +3260,7 @@ msgstr "Importă Șabloane Dintr-o Arhivă ZIP"
msgid "Template Package"
msgstr "Pachetul cu șabloane"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Exportă Librăria"
@@ -3174,6 +3303,11 @@ msgid "Select"
msgstr "Selectează"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Selectaţi directorul curent"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Deschide Editorul 2D"
@@ -3205,6 +3339,11 @@ msgstr ""
msgid "No sub-resources found."
msgstr "Nu s-a găsit nici o sub-resursă."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Nu s-a găsit nici o sub-resursă."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Se creează Previzualizările Mesh-ului"
@@ -3229,33 +3368,34 @@ msgstr "Pluginuri instalate:"
msgid "Update"
msgstr "Actualizare"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versiune:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Stare:"
+#, fuzzy
+msgid "Author"
+msgstr "Autori"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Editare:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Măsura:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Timpul Cadrului (sec)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Media Timpului (sec)"
#: editor/editor_profiler.cpp
@@ -3275,6 +3415,16 @@ msgid "Self"
msgstr "Propriu"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Cadru #:"
@@ -3316,12 +3466,6 @@ msgstr "RID nevalid"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3339,40 +3483,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Extinde Script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3401,6 +3511,47 @@ msgstr "Valoare Nouă:"
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Conversie în Mesh2D"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Extinde Script"
+
#: editor/editor_run_native.cpp
#, fuzzy
msgid ""
@@ -3437,7 +3588,7 @@ msgid "Did you forget the '_run' method?"
msgstr "Ai uitat cumva metoda '_run' ?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3457,113 +3608,70 @@ msgid "Import From Node:"
msgstr "Importă Din Nod:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Descarcă din nou"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Dezinstalează"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Instalat)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Descarcă"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Lipsește)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Curent)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Nu este niciun '%s' în filă."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Se recuperează oglinzile, te rog așteaptă..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Elimini șablonul versiunea '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Nu se pot deschide șabloanele de export zip."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Formatul versiune.txt nevalid din interiorul șabloanelor: % s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Nu s-a găsit versiune.txt în șabloane."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Eroare la crearea căii pentru șabloane:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Se extrag Șabloanele de Export"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Se importă:"
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
+msgid "Error requesting URL:"
+msgstr "Eroare la solicitarea URL:"
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Niciun link pentru descărcare nu a fost găsit pentru această versiune. "
-"Descărcarea directă este disponibilă numai pentru lansări oficiale."
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Se conectează la Oglinda..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Nu se poate rezolva."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Nu se poate rezolva numele gazdei:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Nu se poate face conexiunea."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Nu se poate conecta la gazda:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Niciun răspuns."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Nciun răspuns de la gazda:"
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Request failed."
msgstr "Cerere Eșuată."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Buclă de Redirecționare."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Cerere eșuată, prea multe redirecționări"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "A Eșuat:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Cerere Eșuată."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Descărcare Completă."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3576,12 +3684,24 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Eroare la solicitarea URL:"
+msgid "Error getting the list of mirrors."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Se conectează la Oglinda..."
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Niciun link pentru descărcare nu a fost găsit pentru această versiune. "
+"Descărcarea directă este disponibilă numai pentru lansări oficiale."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3626,45 +3746,138 @@ msgid "SSL Handshake Error"
msgstr "Eroare SSL Handshake"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Nu se pot deschide șabloanele de export zip."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Formatul versiune.txt nevalid din interiorul șabloanelor: % s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Nu s-a găsit versiune.txt în șabloane."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Eroare la crearea căii pentru șabloane:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Se extrag Șabloanele de Export"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Se importă:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Elimini șablonul versiunea '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Decomprimare Surse de compilare Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Exportă Managerul de Șabloane"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versiune Curentă:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Versiuni Instalate:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Deschideți un Fișier"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Dezinstalează"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Eroare Descărcare"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Instalează Din Fișier"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Elimină Șablon"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importă Șabloane Dintr-o Arhivă ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "Selectare fișier șablon"
+msgid "Cancel the download of the templates."
+msgstr "Nu se pot deschide șabloanele de export zip."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Șabloane de export Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Versiuni Instalate:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Exportă Managerul de Șabloane"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Dezinstalează"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Descarcă Șabloane"
+#, fuzzy
+msgid "Select Template File"
+msgstr "Selectare fișier șablon"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Selectează oglinda din listă: (Shift+Click: Deschide in Browser)"
+msgid "Godot Export Templates"
+msgstr "Șabloane de export Godot"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3791,30 +4004,60 @@ msgstr "Script nou ..."
msgid "New Resource..."
msgstr "Resursă nouă ..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Extinde Toate"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Reduceți Toate"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplicați..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Căută fișiere"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Move to Trash"
-msgstr "Mutați Autoload"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplicați..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Redenumește..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Folder/Fișier Anterior"
@@ -3896,10 +4139,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Găsiți: "
@@ -4125,53 +4364,55 @@ msgid "Failed to load resource."
msgstr "Încărcarea resursei a eșuat."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Extindeți toate proprietățile"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Proprietăți"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Reduceți toate proprietățile"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Salvează Ca..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Proprietăți"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Copie Parametrii"
+msgid "Make Sub-Resources Unique"
+msgstr "Faceți Sub-Resursa Unică"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Editare clipboard resursă"
+msgid "Create a new resource in memory and edit it."
+msgstr "Creează o nouă resursă în memorie și editeaz-o."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Copiați Resursa"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Încarcă o resursă existentă de pe disc si editeaz-o."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Faceți Încorporat"
+msgid "Save the currently edited resource."
+msgstr "Salvează resursa editată curentă."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Faceți Sub-Resursa Unică"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Salvează Ca..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Deschideți în Ajutor"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Nu în calea de resurse."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Creează o nouă resursă în memorie și editeaz-o."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Editare clipboard resursă"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Încarcă o resursă existentă de pe disc si editeaz-o."
+msgid "Copy Resource"
+msgstr "Copiați Resursa"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Salvează resursa editată curentă."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Faceți Încorporat"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4186,14 +4427,25 @@ msgid "History of recently edited objects."
msgstr "Istoricul obiectelor editate recent."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Proprietățile obiectului."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Deschide Recente"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "Deschide Recente"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Proprietăți filtrare"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Proprietățile obiectului."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Modificările pot fi pierdute!"
@@ -4221,6 +4473,15 @@ msgstr "Nume plugin:"
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versiune:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4435,7 +4696,7 @@ msgstr "Amestec:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr "Modificări ale Actualizării"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4662,6 +4923,11 @@ msgid "Animation"
msgstr "Animație"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Nou"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Editare tranziții..."
@@ -5007,10 +5273,18 @@ msgid "View Files"
msgstr "Vizualizează Fișierele"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Descarcă"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Eroare la conectare, te rog încearcă din nou."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Nu se poate face conexiunea."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Nu se poate conecta la gazda:"
@@ -5019,17 +5293,20 @@ msgid "No response from host:"
msgstr "Nciun răspuns de la gazda:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Niciun răspuns."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Nu se poate rezolva numele gazdei:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Cerere eșuată, cod returnat:"
+msgid "Can't resolve."
+msgstr "Nu se poate rezolva."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed."
-msgstr "Cerere Eșuată."
+msgid "Request failed, return code:"
+msgstr "Cerere eșuată, cod returnat:"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
@@ -5058,6 +5335,10 @@ msgid "Timeout."
msgstr "Pauză."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "A Eșuat:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Hash eronat de descărcare, se presupune că fișierul este falsificat."
@@ -5164,7 +5445,11 @@ msgid "All"
msgstr "Toate"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5207,6 +5492,10 @@ msgstr "Încărcare..."
msgid "Assets ZIP File"
msgstr "Fișier ZIP cu Asset-uri"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
#, fuzzy
msgid ""
@@ -5218,9 +5507,10 @@ msgstr ""
"cale de salvare din proprietățile BakedLightmap."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Nicio structură pentru procesare. Asigură-te că acestea conțin un canal UV2 "
"și că opțiunea 'Procesează Lumina' este pornită."
@@ -5484,15 +5774,16 @@ msgstr "Modifică Ancorele"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5552,6 +5843,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5563,22 +5855,32 @@ msgid "Select Mode"
msgstr "Selectare mod"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Trage: Rotire"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Ștergeți pista selectată."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Trage: Mutare"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Ștergeți pista selectată."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Apasă 'v' pentru a Schimba Pivotul, 'Shift+v' pentru a Trage Pivotul (în "
-"timpul mișcării)."
+"Arată o listă a tuturor obiectelor la poziția clickului\n"
+"(similar cu Alt+RMB în modul selectare)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+RMB: Selecție adâncime listă"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5828,6 +6130,16 @@ msgid "Clear Pose"
msgstr "Curăță Postura"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Adaugă punct"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Inserează Cheia Aici"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Multiplică pasul pe grilă cu 2"
@@ -5841,6 +6153,52 @@ msgid "Pan View"
msgstr "Perspectivă Snap"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Departare"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Departare"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Departare"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Departare"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Departare"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Departare"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Adaugă %s"
@@ -6096,6 +6454,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Creează o Formă Convexă"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "Creează o Formă Convexă"
@@ -6129,7 +6492,8 @@ msgid "No mesh to debug."
msgstr "Niciun mesh de depanat."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Modelul nu are UV în acest strat"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6190,13 +6554,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Creează un Frate de Coliziune Convex"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Creează un Frate de Coliziune Convex"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6252,7 +6629,6 @@ msgid "Mesh Library"
msgstr "Bibliotecă meshuri"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Adaugă Obiect"
@@ -6533,7 +6909,8 @@ msgid "Close Curve"
msgstr "Închidere curbă"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6859,6 +7236,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Număr de Puncte Generate:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Număr de Puncte Generate:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7070,7 +7465,7 @@ msgstr "Execută"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Căutare"
@@ -7102,6 +7497,11 @@ msgid "Debug with External Editor"
msgstr "Deschide Editorul următor"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Documentație Online"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Deschideți documentația online Godot."
@@ -7232,8 +7632,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -7266,10 +7666,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7433,6 +7829,28 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Mod Rotație"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Tradu Snap:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Dimensiune:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7453,39 +7871,49 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr ""
+#, fuzzy
+msgid "Size:"
+msgstr "Dimensiunea Conturului:"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Modificări ale Actualizării"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Schimbați"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Puncte de suprafață"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Apeluri"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "Particule"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7645,6 +8073,11 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Comutați Favorite"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "View Rotation Locked"
msgstr "Curăță Rotația Cursorului"
@@ -7660,6 +8093,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Convertește În..."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7674,7 +8112,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr "Snap pe grilă"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7682,13 +8120,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr ""
@@ -7697,6 +8128,10 @@ msgid "Use Snap"
msgstr "Utilizează Snap"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr ""
@@ -7791,6 +8226,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Setări ..."
@@ -8099,11 +8538,6 @@ msgid "Snap Mode:"
msgstr "Mod Snap:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Conectare prin pixeli"
@@ -8124,174 +8558,596 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Enumerări:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "Membri"
+msgid "No colors found."
+msgstr "Nu s-a găsit nici o sub-resursă."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Constante"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+#, fuzzy
+msgid "No constants found."
+msgstr "Constantă de culoare."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "Nu s-a găsit nici o sub-resursă."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "No icons found."
+msgstr "Nu s-a găsit nici o sub-resursă."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Nu s-a găsit nici o sub-resursă."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Obiecte Tema Interfața Grafică"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Toggle Button"
-msgstr "Comutează Auto-Execuție"
+msgid "Updating the editor"
+msgstr "Ieși din editor?"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "Dezactivat"
+msgid "Finalizing"
+msgstr "Analizând"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtre:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Disabled Item"
-msgstr "Dezactivat"
+msgid "Select by data type:"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Subitem 1"
-msgstr "Obiect %d"
+msgid "Collapse types."
+msgstr "Reduceți Toate"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Subitem 2"
-msgstr "Obiect %d"
+msgid "Expand types."
+msgstr "Extinde Toate"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Selectare fișier șablon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Selectare puncte"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Deconectați Toate"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Dezactivat"
+msgid "Import Selected"
+msgstr "Importă Scena"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Eliminați Autoload"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Redenumește"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Eliminați Autoload"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Eliminați Autoload"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Eliminați Autoload"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Eliminați Autoload"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Adaugă Obiect"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Permanent"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Adaugă Obiect"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Adaugă Obiect"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Adaugă Obiect"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Redenumiţi Autoload"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Elimină Obiectul Selectat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Elimină Obiectul Selectat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Elimină Obiectul Selectat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Fişier nevalid, nu este o schemă de pistă audio."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Editable Item"
+msgid "Manage Theme Items"
+msgstr "Gestionați șabloanele"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
msgstr "Editează Filtrele"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Types:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Add Type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#, fuzzy
+msgid "Add Item:"
+msgstr "Adaugă Obiect"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Adaugă Obiect"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Elimini obiectul %d?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Elimină Poligon Și Punct"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Obiecte Tema Interfața Grafică"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Nume Nod:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importă Ca:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Implicit"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Membri"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Ștergere resursă"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Membri"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Redenumește Pista Anim"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Redenumește"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "extindere:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+#, fuzzy
+msgid "Add Type"
+msgstr "Adaugă Obiect"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Adaugă Obiect"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Tip nod"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Încărcați Implicit"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "Deschideți un Fișier"
+msgid "Override All"
+msgstr "extindere:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Membri"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Gestionare șabloane export..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Previzualizare"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Previzualizare"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Selectează un Mesh Sursă:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Toggle Button"
+msgstr "Comutează Auto-Execuție"
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "Dezactivat"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "Dezactivat"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Subitem 1"
+msgstr "Obiect %d"
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Subitem 2"
+msgstr "Obiect %d"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Dezactivat"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Editable Item"
+msgstr "Editează Filtrele"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Fişier nevalid, nu este o schemă de pistă audio."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8472,6 +9328,10 @@ msgid "Priority"
msgstr "Exportă Proiectul"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid "Z Index"
msgstr "Mod ÃŽn Jur"
@@ -8830,11 +9690,6 @@ msgid "Commit Changes"
msgstr "Sincronizează Modificările Scriptului"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9667,7 +10522,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "Editează Filtrele"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9785,7 +10640,8 @@ msgid "Script"
msgstr "Execută Scriptul"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Mod export script:"
#: editor/project_export.cpp
@@ -9793,7 +10649,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9801,11 +10657,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9881,7 +10737,8 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Nume de Proiect Nevalid."
#: editor/project_manager.cpp
@@ -9915,6 +10772,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Eroare la deschiderea fişierului pachet, nu este în format ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Următoarele file au eșuat extragerea din pachet:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Pachet instalat cu succes!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -10068,16 +10937,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Ești sigur că vrei să execuți acel proiect?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Selectează un dispozitiv din listă"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Selectează un dispozitiv din listă"
#: editor/project_manager.cpp
msgid ""
@@ -10104,7 +10971,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Proiect"
#: editor/project_manager.cpp
@@ -10117,10 +10984,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Exportă Proiectul"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Proiect"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Proiect"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -10130,18 +11012,41 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Exportă Proiectul"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Elimină punct"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Elimină punct"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr ""
+msgid "About"
+msgstr "Despre"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Librăria de Resurse"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Proiectul nu poate fi executat"
@@ -10156,8 +11061,13 @@ msgstr ""
"uri?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Proprietăți filtrare"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10167,6 +11077,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10208,6 +11122,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10348,19 +11266,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Tranziție"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10635,6 +11554,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10802,11 +11725,29 @@ msgid "Delete node \"%s\"?"
msgstr "Ștergeți nodul \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10868,6 +11809,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10915,11 +11860,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "Deschide Recente"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11208,6 +12148,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "Clasă:"
@@ -11278,6 +12224,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11569,6 +12519,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exportă Librăria de Mesh-uri"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Export..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Planul următor"
@@ -11612,6 +12572,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Toată selecția"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11863,6 +12828,16 @@ msgstr "Adaugă Intrare(Input)"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "Schimbați Tipul %s"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Modificarea numelui portului de intrare"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr ""
"Nume nevalid. Nu trebuie să se lovească cu un nume de tip deja existent în "
@@ -11977,6 +12952,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Se adaugă %s..."
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -12208,10 +13188,6 @@ msgstr "Curăță Scriptul"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12241,6 +13217,40 @@ msgid "Select device from the list"
msgstr "Selectează un dispozitiv din listă"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Exportare"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Dezinstalează"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Se recuperează oglinzile, te rog așteaptă..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Nu s-a putut porni subprocesul!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Se Execută un Script Personalizat..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Directorul nu a putut fi creat."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12337,6 +13347,47 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Se Scanează Fișierele,\n"
+"Te Rog Așteaptă..."
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Se adaugă %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Exportare"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12349,6 +13400,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12363,6 +13418,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12382,11 +13450,53 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Unelte Animație"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Crearea conturilor..."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Se adaugă %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Nu s-a putut porni subprocesul!"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12415,10 +13525,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Execută HTML-ul exportat în browserul prestabilit al sistemului."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr ""
@@ -12427,15 +13533,48 @@ msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Nu s-a putut încărca fișierul la:"
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "Nu s-a putut încărca fișierul la:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Directorul nu a putut fi creat."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Eroare la scrierea TextFile:"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Identificator nevalid:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12791,6 +13930,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12860,12 +14006,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12915,6 +14113,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "Unelte Animație"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -13064,21 +14266,125 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Package Contents:"
+#~ msgstr "Conținutul pachetului:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton (Unicat)"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Ștergeți profilul '%s'?(ireversibil)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Proprietăți Activate:"
+
+#~ msgid "Unset"
+#~ msgstr "Nesetat(ă)"
+
+#~ msgid "Class Options"
+#~ msgstr "Opțiuni Clase"
+
+#~ msgid "Set"
+#~ msgstr "Stabilește"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Resurse modificate %s salvate."
+
+#~ msgid "Q&A"
+#~ msgstr "Întrebări și Răspunsuri"
+
+#~ msgid "Status:"
+#~ msgstr "Stare:"
+
+#~ msgid "Edit:"
+#~ msgstr "Editare:"
+
+#~ msgid "Redownload"
+#~ msgstr "Descarcă din nou"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Instalat)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Lipsește)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Cerere Eșuată."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Buclă de Redirecționare."
+
+#~ msgid "Download Complete."
+#~ msgstr "Descărcare Completă."
+
+#~ msgid "Remove Template"
+#~ msgstr "Elimină Șablon"
+
+#~ msgid "Download Templates"
+#~ msgstr "Descarcă Șabloane"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Selectează oglinda din listă: (Shift+Click: Deschide in Browser)"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Mutați Autoload"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Extindeți toate proprietățile"
+
+#~ msgid "Copy Params"
+#~ msgstr "Copie Parametrii"
+
+#~ msgid "Open in Help"
+#~ msgstr "Deschideți în Ajutor"
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Trage: Rotire"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Apasă 'v' pentru a Schimba Pivotul, 'Shift+v' pentru a Trage Pivotul (în "
+#~ "timpul mișcării)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+RMB: Selecție adâncime listă"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "Deschideți un Fișier"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Un player de animatie nu se poate anima insusi, doar alti playeri de "
@@ -13149,9 +14455,6 @@ msgstr ""
#~ msgstr ""
#~ "Scena curentă nu a fost salvată niciodată, salvați-o înainte de rulare."
-#~ msgid "Not in resource path."
-#~ msgstr "Nu în calea de resurse."
-
#~ msgid "Revert"
#~ msgstr "ÃŽntoarcere"
@@ -13219,9 +14522,6 @@ msgstr ""
#~ msgid "Theme Properties:"
#~ msgstr "Proprietăți"
-#~ msgid "Enumerations:"
-#~ msgstr "Enumerări:"
-
#~ msgid "Constants:"
#~ msgstr "Constante:"
@@ -13352,10 +14652,6 @@ msgstr ""
#~ msgid "Instance the selected scene(s) as child of the selected node."
#~ msgstr "Instanțiază scena(ele) selectată ca un copil al nodului selectat."
-#, fuzzy
-#~ msgid "Font Size:"
-#~ msgstr "Dimensiunea Conturului:"
-
#~ msgid "Line:"
#~ msgstr "Linie:"
@@ -13424,9 +14720,6 @@ msgstr ""
#~ msgid "Public Methods:"
#~ msgstr "Metode Publice:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Obiecte Tema Interfața Grafică"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Obiecte Tema Interfața Grafică:"
@@ -13464,9 +14757,6 @@ msgstr ""
#~ msgid "Move Anim Track Down"
#~ msgstr "Mută Pista Anim Jos"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Redenumește Pista Anim"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Anim Schimbați Interpolarea Pistei"
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index 4b56d21383..a5d8b4ea1c 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -97,11 +97,12 @@
# Bualma Show <appleaidar6@gmail.com>, 2021.
# enderlorde <madel.laboratories@gmail.com>, 2021.
# Олег Довгер <oleg.a.dovger@gmail.com>, 2021.
+# Anna Malinovskaia <tacitcoast@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-07-13 06:13+0000\n"
+"PO-Revision-Date: 2021-07-29 02:33+0000\n"
"Last-Translator: Danil Alexeev <danil@alexeev.xyz>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
@@ -622,7 +623,8 @@ msgstr "Секунды"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -648,7 +650,8 @@ msgstr "МаÑштабировать выбранное"
msgid "Scale From Cursor"
msgstr "МаÑштабировать от курÑора"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Дублировать выделенное"
@@ -669,6 +672,11 @@ msgid "Go to Previous Step"
msgstr "Перейти к предыдущему шагу"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "СброÑить"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Оптимизировать анимацию"
@@ -685,6 +693,11 @@ msgid "Use Bezier Curves"
msgstr "ИÑпользовать кривые Безье"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Ð’Ñтавить треки"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Оптимизатор анимации"
@@ -733,7 +746,7 @@ msgid "Select Tracks to Copy"
msgstr "Выбрать треки Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -819,12 +832,14 @@ msgid "Toggle Scripts Panel"
msgstr "Переключить панель Ñкриптов"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Приблизить"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -881,11 +896,9 @@ msgid "Add"
msgstr "Добавить"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -937,6 +950,7 @@ msgstr "Ðе удаетÑÑ Ð¿Ñ€Ð¸Ñоединить Ñигнал"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -1006,7 +1020,8 @@ msgid "Edit..."
msgstr "Редактировать..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Перейти к методу"
#: editor/create_dialog.cpp
@@ -1021,6 +1036,14 @@ msgstr "Изменить"
msgid "Create New %s"
msgstr "Создать %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Ðет результатов Ð´Ð»Ñ Â«%s»."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -1042,8 +1065,8 @@ msgstr "ПоиÑк:"
msgid "Matches:"
msgstr "СовпадениÑ:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1119,19 +1142,23 @@ msgid "Owners Of:"
msgstr "Владельцы:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Удалить выбранные файлы из проекта? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ)\n"
"Ð’Ñ‹ можете найти удалённые файлы в корзине, чтобы воÑÑтановить их."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"УдалÑемые файлы требуютÑÑ Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¹ работы других реÑурÑов.\n"
"Ð’ÑÑ‘ равно удалить их? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ)\n"
@@ -1179,7 +1206,7 @@ msgstr "Обзор подключённых реÑурÑов"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1304,28 +1331,41 @@ msgstr "Компоненты"
msgid "Licenses"
msgstr "Лицензии"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Ошибка при открытии файла пакета, не в формате zip."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Ошибка при открытии файла пакета (Ðе ÑвлÑетÑÑ ZIP форматом)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Уже ÑущеÑтвует)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "РаÑпаковка аÑÑетов"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Следующие файлы не удалоÑÑŒ извлечь из пакета:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Ещё %d файла(ов)."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Пакет уÑпешно уÑтановлен!"
#: editor/editor_asset_installer.cpp
@@ -1333,16 +1373,13 @@ msgstr "Пакет уÑпешно уÑтановлен!"
msgid "Success!"
msgstr "УÑпех!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Содержимое пакета:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "УÑтановить"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "УÑтановщик пакетов"
#: editor/editor_audio_buses.cpp
@@ -1406,7 +1443,8 @@ msgid "Bypass"
msgstr "Обход"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Параметры шины"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1486,7 +1524,7 @@ msgstr "Добавить"
msgid "Add a new Audio Bus to this layout."
msgstr "Добавить новую звуковую шину Ð´Ð»Ñ Ñтой раÑкладки."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1573,6 +1611,15 @@ msgid "Can't add autoload:"
msgstr "Ðе удаётÑÑ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ автозагрузку:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Файл не ÑущеÑтвует."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Добавить в автозагрузку"
@@ -1588,16 +1635,17 @@ msgid "Node Name:"
msgstr "Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð°:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Ðазвание"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Синглтон"
+#, fuzzy
+msgid "Global Variable"
+msgstr "ПеременнаÑ"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Ð’Ñтавить параметры"
@@ -1613,7 +1661,7 @@ msgstr "Сохранение локальных изменений..."
msgid "Updating scene..."
msgstr "Обновление Ñцены..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[пуÑто]"
@@ -1768,8 +1816,49 @@ msgid "Import Dock"
msgstr "Панель «Импорт»"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Стереть профиль «%s»? (Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Текущий)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1801,15 +1890,18 @@ msgid "Enable Contextual Editor"
msgstr "Включить контекÑтный редактор"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "ДоÑтупные ÑвойÑтва:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "СвойÑтва:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "ДоÑтупные функции:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "ВозможноÑти"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "ДоÑтупные клаÑÑÑ‹:"
#: editor/editor_feature_profile.cpp
@@ -1829,25 +1921,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð² «%s»."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "СброÑить"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "СброÑить наÑтройки"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Текущий профиль:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Сделать текущим"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Стереть профиль"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Ðовый"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Удалить тайл"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "ДоÑтупные профили:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Сделать текущим"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Импорт"
@@ -1856,20 +1957,22 @@ msgid "Export"
msgstr "ЭкÑпорт"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "ДоÑтупные профили:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Текущий профиль:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Параметры клаÑÑа"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Параметры текÑтуры"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Ðовое имÑ:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Стереть профиль"
+msgid "New profile name:"
+msgstr "Ðовое имÑ:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1892,7 +1995,8 @@ msgid "Select Current Folder"
msgstr "Выбрать текущую папку"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Файл ÑущеÑтвует, перезапиÑать?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1946,9 +2050,10 @@ msgid "Open a File or Directory"
msgstr "Открыть каталог или файл"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Сохранить"
@@ -2029,8 +2134,7 @@ msgid "Directories & Files:"
msgstr "Каталоги и файлы:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "ПредпроÑмотр:"
@@ -2103,7 +2207,7 @@ msgstr "СвойÑтва темы"
msgid "Enumerations"
msgstr "ПеречиÑлениÑ"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "КонÑтанты"
@@ -2192,7 +2296,7 @@ msgstr "Метод"
msgid "Signal"
msgstr "Сигнал"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "КонÑтанта"
@@ -2208,9 +2312,10 @@ msgstr "СвойÑтво темы"
msgid "Property:"
msgstr "Параметр:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Задать"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Задать %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2225,7 +2330,7 @@ msgid "Copy Selection"
msgstr "Копировать выделенное"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2289,7 +2394,8 @@ msgid "Imported resources can't be saved."
msgstr "Импортированные реÑурÑÑ‹ не могут быть Ñохранены."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2511,18 +2617,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² «%s» перед закрытием?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "%s измененных реÑурÑов Ñохранено."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Ð”Ð»Ñ ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñцены требуетÑÑ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð¹ узел."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Сохранить Ñцену как..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена без Ñцены."
@@ -2718,7 +2829,7 @@ msgstr "Удалить макет"
msgid "Default"
msgstr "По умолчанию"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Показать в файловой ÑиÑтеме"
@@ -2899,6 +3010,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Обзор реÑурÑов-Ñирот..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Переименовать проект"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Выйти в ÑпиÑок проектов"
@@ -3054,20 +3170,25 @@ msgstr "Управление шаблонами ÑкÑпорта..."
msgid "Help"
msgstr "Справка"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Онлайн документациÑ"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Открыть документацию"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "ВопроÑÑ‹ и ответы"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Сообщить об ошибке"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "УÑтановить значение"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Отправить отзыв о документации"
@@ -3076,7 +3197,8 @@ msgid "Community"
msgstr "СообщеÑтво"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "О Godot Engine"
#: editor/editor_node.cpp
@@ -3175,6 +3297,16 @@ msgid "Manage Templates"
msgstr "Управление шаблонами"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "УÑтановить из файла"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Выберите иÑточник полиÑетки:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3212,7 +3344,7 @@ msgstr "Импортировать шаблоны из ZIP файла"
msgid "Template Package"
msgstr "Шаблонный пакет"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "ЭкÑпортировать библиотеку"
@@ -3255,6 +3387,11 @@ msgid "Select"
msgstr "Выделение"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Выбрать текущую папку"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Открыть 2D-редактор"
@@ -3286,6 +3423,11 @@ msgstr "Предупреждение!"
msgid "No sub-resources found."
msgstr "Вложенные реÑурÑÑ‹ не найдены."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Вложенные реÑурÑÑ‹ не найдены."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Создание предпроÑмотра"
@@ -3310,33 +3452,34 @@ msgstr "УÑтановленные плагины:"
msgid "Update"
msgstr "Обновление"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "ВерÑиÑ:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Ðвтор:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "СтатуÑ:"
+#, fuzzy
+msgid "Author"
+msgstr "Ðвторы"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Редактировать:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "СтатуÑ"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Единица измерениÑ:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Ð’Ñ€ÐµÐ¼Ñ ÐºÐ°Ð´Ñ€Ð° (Ñек.)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Среднее Ð²Ñ€ÐµÐ¼Ñ (Ñек.)"
#: editor/editor_profiler.cpp
@@ -3356,6 +3499,16 @@ msgid "Self"
msgstr "Субъект"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Кадр #:"
@@ -3397,14 +3550,6 @@ msgstr "Ðеверный RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Выбранные реÑурÑÑ‹ (%s) не ÑоответÑтвуют типам, ожидаемым Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ "
-"ÑвойÑтва (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3428,40 +3573,6 @@ msgid "Pick a Viewport"
msgstr "Выберите Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Ðовый Ñкрипт"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "РаÑширить Ñкрипт"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Ðовый %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Сделать уникальным"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Ð’Ñтавить"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Преобразовать в %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Выбранный узел не Viewport!"
@@ -3490,6 +3601,49 @@ msgstr "Ðовое значение:"
msgid "Add Key/Value Pair"
msgstr "Добавить пару: Ключ/Значение"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Выбранные реÑурÑÑ‹ (%s) не ÑоответÑтвуют типам, ожидаемым Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ "
+"ÑвойÑтва (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Сделать уникальным"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Ð’Ñтавить"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Преобразовать в %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Ðовый %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Ðовый Ñкрипт"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "РаÑширить Ñкрипт"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3525,7 +3679,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Быть может вы забыли метод _run()?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Зажмите Ctrl, чтобы округлить до целых. Зажмите Shift Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ точных "
"изменений."
@@ -3547,114 +3702,69 @@ msgid "Import From Node:"
msgstr "Импортировать из узла:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Перезагрузить"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Удалить"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(УÑтановлено)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Загрузка"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "Официальные шаблоны ÑкÑпорта недоÑтупны Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ñ… Ñборок."
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(ОтÑутÑтвует)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Текущий)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Файла «%s» не ÑущеÑтвует."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Получение зеркал, пожалуйÑта, ждите..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Удалить верÑию шаблона «%s»?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ архив шаблонов ÑкÑпорта."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Ðеверный формат version.txt файла внутри шаблонов: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Файл version.txt не найден в шаблонах."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿ÑƒÑ‚Ð¸ Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð²:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "РаÑпаковка шаблонов ÑкÑпорта"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "ИмпортируетÑÑ:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Ошибка при получении ÑпиÑка зеркал."
+msgid "Error requesting URL:"
+msgstr "Ошибка при запроÑе URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Ошибка парÑинга JSON ÑпиÑка зеркал. ПожалуйÑта, Ñообщите об Ñтой проблеме!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Подключение к зеркалу..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Ðе найдено Ð´Ð»Ñ Ñтой верÑии ÑÑылки на Ñкачивание. ПрÑÐ¼Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° доÑтупна "
-"только Ð´Ð»Ñ Ð¾Ñ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ñ… релизов."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Ðевозможно определить Ð¸Ð¼Ñ Ñ…Ð¾Ñта:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Ðе могу преобразовать."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Ðе удаётÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº хоÑту:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Ðе удаётÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Ðет ответа от хоÑта:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Ðет ответа."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Ðе удалоÑÑŒ выполнить запроÑ."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "ЦикличеÑкое перенаправление."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ прошёл, Ñлишком много перенаправлений"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Ðе удалоÑÑŒ:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Ðе удалоÑÑŒ выполнить запроÑ."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Загрузка завершена."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3669,12 +3779,26 @@ msgstr ""
"Ðрхивы Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð½Ñ‹Ð¼Ð¸ шаблонами можно найти в «%s»."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Ошибка при запроÑе URL:"
+msgid "Error getting the list of mirrors."
+msgstr "Ошибка при получении ÑпиÑка зеркал."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Подключение к зеркалу..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Ошибка парÑинга JSON ÑпиÑка зеркал. ПожалуйÑта, Ñообщите об Ñтой проблеме!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Ðе найдено Ð´Ð»Ñ Ñтой верÑии ÑÑылки на Ñкачивание. ПрÑÐ¼Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° доÑтупна "
+"только Ð´Ð»Ñ Ð¾Ñ„Ð¸Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ñ… релизов."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3719,44 +3843,138 @@ msgid "SSL Handshake Error"
msgstr "Ошибка Ñ€ÑƒÐºÐ¾Ð¿Ð¾Ð¶Ð°Ñ‚Ð¸Ñ SSH"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ архив шаблонов ÑкÑпорта."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Ðеверный формат version.txt файла внутри шаблонов: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Файл version.txt не найден в шаблонах."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Ошибка ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿ÑƒÑ‚Ð¸ Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð²:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "РаÑпаковка шаблонов ÑкÑпорта"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "ИмпортируетÑÑ:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Удалить верÑию шаблона «%s»?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "РаÑпаковка иÑходников Ñборки Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Менеджер шаблонов ÑкÑпорта"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑиÑ:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "УÑтановленные верÑии:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Открыть файл"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Удалить"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Ðачальное значение Ð´Ð»Ñ Ñчетчика"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Ошибка загрузки"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "Официальные шаблоны ÑкÑпорта недоÑтупны Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ñ… Ñборок."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "УÑтановить из файла"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Удалить шаблон"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Импортировать шаблоны из ZIP файла"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Отмена"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Выбрать файл шаблона"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Ðе удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ архив шаблонов ÑкÑпорта."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Шаблоны ÑкÑпорта Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "УÑтановленные верÑии:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Менеджер шаблонов ÑкÑпорта"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Удалить"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Выбрать файл шаблона"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Загрузить шаблоны"
+msgid "Godot Export Templates"
+msgstr "Шаблоны ÑкÑпорта Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Выберите зеркало из ÑпиÑка: (Shift+Click: Открыть в браузере)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3891,29 +4109,62 @@ msgstr "Ðовый Ñкрипт..."
msgid "New Resource..."
msgstr "Ðовый реÑурÑ..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Развернуть вÑе"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Свернуть вÑе"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Дублировать..."
+#, fuzzy
+msgid "Sort files"
+msgstr "ПоиÑк файлов"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Удалить в корзину"
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "ПоÑледнее изменение"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "ПоÑледнее изменение"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Дублировать..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Переименовать..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°/файл"
@@ -3997,10 +4248,6 @@ msgstr "Ðайти..."
msgid "Replace..."
msgstr "Заменить..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Отмена"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Ðайти: "
@@ -4223,53 +4470,55 @@ msgid "Failed to load resource."
msgstr "Ðе удалоÑÑŒ загрузить реÑурÑ."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Развернуть вÑе ÑвойÑтва"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "СвойÑтва"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Свернуть вÑе ÑвойÑтва"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Сохранить как..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "СвойÑтва"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Копировать параметры"
+msgid "Make Sub-Resources Unique"
+msgstr "Сделать вложенные реÑурÑÑ‹ уникальными"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Редактировать реÑÑƒÑ€Ñ Ð² буфере обмена"
+msgid "Create a new resource in memory and edit it."
+msgstr "Создать новый реÑÑƒÑ€Ñ Ð² памÑти, и редактировать его."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Копировать параметры"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Загрузить ÑущеÑтвующий реÑÑƒÑ€Ñ Ñ Ð´Ð¸Ñка и редактировать его."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Сделать вÑтроенным"
+msgid "Save the currently edited resource."
+msgstr "Сохранить текущий редактируемый реÑурÑ."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Сделать вложенные реÑурÑÑ‹ уникальными"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Сохранить как..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Открыть в Ñправке"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Ðе в пути реÑурÑов."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Создать новый реÑÑƒÑ€Ñ Ð² памÑти, и редактировать его."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Редактировать реÑÑƒÑ€Ñ Ð² буфере обмена"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Загрузить ÑущеÑтвующий реÑÑƒÑ€Ñ Ñ Ð´Ð¸Ñка и редактировать его."
+msgid "Copy Resource"
+msgstr "Копировать параметры"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Сохранить текущий редактируемый реÑурÑ."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Сделать вÑтроенным"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4284,14 +4533,24 @@ msgid "History of recently edited objects."
msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½ÐµÐ´Ð°Ð²Ð½Ð¾ отредактированных объектов."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "СвойÑтва объекта."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Открыть документацию"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Открыть документацию"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Фильтр ÑвойÑтв"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "СвойÑтва объекта."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть потерÑны!"
@@ -4319,6 +4578,15 @@ msgstr "Ð˜Ð¼Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ:"
msgid "Subfolder:"
msgstr "Подпапка:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Ðвтор:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "ВерÑиÑ:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Язык:"
@@ -4525,7 +4793,8 @@ msgid "Blend:"
msgstr "Смешивание:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Параметр изменён"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4745,6 +5014,11 @@ msgid "Animation"
msgstr "ÐнимациÑ"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Ðовый"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Редактировать переходы..."
@@ -5086,10 +5360,18 @@ msgid "View Files"
msgstr "ПроÑмотр файлов"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Загрузка"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Ошибка подключениÑ, попробуйте ещё раз."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Ðе удаётÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Ðе удаётÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº хоÑту:"
@@ -5098,16 +5380,20 @@ msgid "No response from host:"
msgstr "Ðет ответа от хоÑта:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Ðет ответа."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Ðевозможно определить Ð¸Ð¼Ñ Ñ…Ð¾Ñта:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ удалÑÑ, код:"
+msgid "Can't resolve."
+msgstr "Ðе могу преобразовать."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Ðе удалоÑÑŒ выполнить запроÑ."
+msgid "Request failed, return code:"
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ удалÑÑ, код:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5134,6 +5420,10 @@ msgid "Timeout."
msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Ðе удалоÑÑŒ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "ÐеÑовпадение хеша загрузки, возможно файл был изменён."
@@ -5234,8 +5524,12 @@ msgid "All"
msgstr "Ð’Ñе"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Ðет результатов Ð´Ð»Ñ Â«%s»."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5277,6 +5571,10 @@ msgstr "Загрузка..."
msgid "Assets ZIP File"
msgstr "ZIP файл аÑÑетов"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5287,11 +5585,11 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Ðет полиÑеток Ð´Ð»Ñ Ð·Ð°Ð¿ÐµÐºÐ°Ð½Ð¸Ñ. УбедитеÑÑŒ, что они Ñодержат канал UV2 и что "
-"флаг «Запекание Ñвета» включён."
+"флаги «Запекание Ñвета» и «Генерировать карту оÑвещениÑ» включены."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -5532,9 +5830,10 @@ msgstr "Изменить привÑзку"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Переопределение игровой камеры\n"
"ПереопределÑет игровую камеру камерой редактора viewport."
@@ -5542,11 +5841,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Переопределение игровой камеры\n"
-"Ðет запущенного ÑкземплÑра игры."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5601,6 +5899,7 @@ msgstr ""
"родителÑми."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5612,22 +5911,32 @@ msgid "Select Mode"
msgstr "Режим выделениÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Тащить: Поворот"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Удалить выделенный узел или переход."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Тащить: Перемещение"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Удалить выделенный узел или переход."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Ðажмите «V» чтобы изменить точку вращениÑ, «Shift+V» чтобы перемещать точку "
-"вращениÑ."
+"Показывает ÑпиÑок вÑех объектов нажатой позиции,\n"
+"(так же как и Alt+ПКМ в режиме выделениÑ)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+ПКМ: СпиÑок выбора глубины"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5865,6 +6174,16 @@ msgid "Clear Pose"
msgstr "ОчиÑтить позу"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Добавить узел"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Дополнить Ñценой(ами)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Умножить шаг Ñетки на 2"
@@ -5877,6 +6196,52 @@ msgid "Pan View"
msgstr "Панорамировать вид"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Отдалить"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Отдалить"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Отдалить"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Отдалить"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Отдалить"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Отдалить"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Добавить %s"
@@ -6119,6 +6484,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Ðе удалоÑÑŒ Ñоздать ни одной выпуклой формы ÑтолкновениÑ."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Создать одну выпуклую форму"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Создать одну выпуклую форму"
@@ -6152,7 +6522,8 @@ msgid "No mesh to debug."
msgstr "Ðет полиÑетки Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "У модели нет UV в Ñтом Ñлое"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6218,13 +6589,27 @@ msgstr ""
"Это Ñамый быÑтрый (но наименее точный) ÑпоÑоб Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¸Ñ Ñтолкновений."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Создать одну выпуклую облаÑть ÑтолкновениÑ"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Создать выпуклую облаÑть ÑтолкновениÑ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Создает форму ÑÑ‚Ð¾Ð»ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ Ð½Ð° оÑнове полигона.\n"
"Это Ñредний по производительноÑти вариант между Ð´Ð²ÑƒÐ¼Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸."
@@ -6286,7 +6671,6 @@ msgid "Mesh Library"
msgstr "Библиотека полиÑеток"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Добавить Ñлемент"
@@ -6558,7 +6942,8 @@ msgid "Close Curve"
msgstr "Сомкнуть кривую"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Параметры"
@@ -6869,6 +7254,26 @@ msgstr "Загрузить реÑурÑ"
msgid "ResourcePreloader"
msgstr "Предзагрузчик реÑурÑов"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Перевернуть по горизонтали"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "КоличеÑтво Ñоздаваемых точек:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "КоличеÑтво Ñоздаваемых точек:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Перевернуть по горизонтали"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree - не задан путь к AnimationPlayer"
@@ -7074,7 +7479,7 @@ msgstr "ЗапуÑтить"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "ПоиÑк"
@@ -7105,6 +7510,11 @@ msgid "Debug with External Editor"
msgstr "Отладка Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ внешнего редактора"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Онлайн документациÑ"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Открыть онлайн-документацию Godot."
@@ -7233,8 +7643,8 @@ msgstr "Перейти к"
msgid "Cut"
msgstr "Вырезать"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Выделить вÑÑ‘"
@@ -7267,10 +7677,6 @@ msgid "Unfold All Lines"
msgstr "Развернуть вÑе Ñтроки"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Продублировать вниз"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Завершить Ñимвол"
@@ -7424,6 +7830,28 @@ msgid "View Plane Transform."
msgstr "Вид Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð»Ð¾ÑкоÑти."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "ПуÑто"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "ГоÑударÑтво"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Перемещение:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "МаÑштаб:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "МаÑштаб: "
@@ -7444,42 +7872,54 @@ msgid "Animation Key Inserted."
msgstr "Ключ анимации вÑтавлен."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Ð’Ñ‹Ñота"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "РыÑкание"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Размер"
+#, fuzzy
+msgid "Size:"
+msgstr "Размер: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "ÐариÑовано объектов"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð°Ñ‚ÐµÑ€Ð¸Ð°Ð»Ð°"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑˆÐµÐ¹Ð´ÐµÑ€Ð¾Ð²"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ…Ð½Ð¾Ñти"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Вызовы отриÑовки"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Вершины"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Вид Ñверху."
@@ -7632,6 +8072,11 @@ msgid "Freelook Slow Modifier"
msgstr "Модификатор Ð·Ð°Ð¼ÐµÐ´Ð»ÐµÐ½Ð¸Ñ Ñвободного вида"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Изменить размер камеры"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Блокировать вращение камеры"
@@ -7652,6 +8097,11 @@ msgstr ""
"игры."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Преобразовать в %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm диалоговое окно"
@@ -7671,7 +8121,8 @@ msgstr ""
"(«рентген»)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "ПривÑзать узлы к полу"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7679,16 +8130,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Ðе удалоÑÑŒ найти Ñплошной пол, к которому можно привÑзать выделение."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"ТÑнуть: Вращение\n"
-"Alt+ТÑнуть: Перемещение\n"
-"Alt+ПКМ: Выбор по ÑпиÑку"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "ИÑпользовать локальное проÑтранÑтво"
@@ -7697,6 +8138,10 @@ msgid "Use Snap"
msgstr "ИÑпользовать привÑзки"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Вид Ñнизу"
@@ -7790,6 +8235,11 @@ msgid "View Grid"
msgstr "Отображать Ñетку"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "ÐаÑтройки окна проÑмотра"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "ÐаÑтройки..."
@@ -8081,11 +8531,6 @@ msgid "Snap Mode:"
msgstr "Режим привÑзки:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "ПуÑто"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "ПопикÑÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
@@ -8106,165 +8551,603 @@ msgid "Step:"
msgstr "Шаг:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Разделитель:"
+msgid "Separation:"
+msgstr "Разделение:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "ОблаÑть текÑтуры"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Добавить вÑе Ñлементы"
+#, fuzzy
+msgid "Colors"
+msgstr "Цвет"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Добавить вÑе"
+#, fuzzy
+msgid "Fonts"
+msgstr "Шрифт"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Иконка"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Стиль"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Вложенные реÑурÑÑ‹ не найдены."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "КонÑтанты"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Ð¦Ð²ÐµÑ‚Ð¾Ð²Ð°Ñ ÐºÐ¾Ð½Ñтанта."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Ðе найдено!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Ðе найдено!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Вложенные реÑурÑÑ‹ не найдены."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Импортировать тему"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Выйти из редактора?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Ðнализ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Фильтр: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Выбрать узел"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Выберите разделение, чтобы Ñтереть его."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Сначала выберите Ñлемент наÑтроек!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Сначала выберите Ñлемент наÑтроек!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Сначала выберите Ñлемент наÑтроек!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Сначала выберите Ñлемент наÑтроек!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Сначала выберите Ñлемент наÑтроек!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Свернуть вÑе"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Развернуть вÑе"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Выбрать файл шаблона"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Выбрать точки"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Выделить вÑÑ‘"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Импортировать Ñцену"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Удалить вÑе Ñлементы"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Удалить вÑе"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Удалить Ñлемент"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Редактировать тему"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Удалить вÑе Ñлементы"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Удалить вÑе Ñлементы"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Удалить вÑе Ñлементы"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Меню Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐ¼."
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Удалить вÑе Ñлементы"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Добавить Ñлемент клаÑÑа"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Добавить Ñлемент клаÑÑа"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Добавить Ñлемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Добавить Ñлемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Добавить вÑе Ñлементы"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Удалить Ñлемент клаÑÑа"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Удалить Ñлемент клаÑÑа"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Переименовать узел"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Переименовать узел"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Удалить выбранный Ñлемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "ÐедопуÑтимый файл, не раÑкладка аудио шины."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Управление шаблонами"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Редактируемый Ñлемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Тип:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Тип:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Добавить Ñлемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Добавить вÑе Ñлементы"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Удалить Ñлемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Удалить Ñлемент клаÑÑа"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Создать пуÑтой шаблон"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Удалить Ñлемент клаÑÑа"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Удалить вÑе Ñлементы"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Тема Ñлементов GUI"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Создать пуÑтой шаблон редактора"
+#, fuzzy
+msgid "Old Name:"
+msgstr "Ð˜Ð¼Ñ ÑƒÐ·Ð»Ð°:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Создать из текущей темы редактора"
+#, fuzzy
+msgid "Import Items"
+msgstr "Импортировать тему"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "По умолчанию"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Редактировать тему"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Удалить реÑурÑ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Импортировать тему"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Переименовать дорожку"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Групповое переименование"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Переопределить"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Тип"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Добавить Ñлемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Тип узла"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Загрузить по умолчанию"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Переопределить"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Тема"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Управление шаблонами ÑкÑпорта..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "ПредпроÑмотр"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Обновить предварительный проÑмотр"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Выберите иÑточник полиÑетки:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Кнопка-переключатель"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Ð—Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Элемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Отключённый Ñлемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Отметить Ñлемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Отмеченный Ñлемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Переключатель"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Отмеченный переключатель"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Имен. раздел."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Подменю"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "ПодÑлемент 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "ПодÑлемент 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Имеет"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Много"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "Отключённое текÑтовое поле"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Вкладка 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Вкладка 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Вкладка 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Редактируемый Ñлемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Поддерево"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "ЕÑть,Много,Вариантов"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Тип информации:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Иконка"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Стиль"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Шрифт"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Цвет"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "ÐедопуÑтимый файл, не раÑкладка аудио шины."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Файл темы"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8436,6 +9319,10 @@ msgid "Priority"
msgstr "Приоритет"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Иконка"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z-индекÑ"
@@ -8770,11 +9657,6 @@ msgid "Commit Changes"
msgstr "Закоммитить изменениÑ"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "СтатуÑ"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "ПроÑмотр различий в файлах перед коммитом"
@@ -9663,7 +10545,8 @@ msgid "VisualShader"
msgstr "Визуальный шейдер"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Редактировать визуальное ÑвойÑтво"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9790,7 +10673,8 @@ msgid "Script"
msgstr "Скрипт"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Режим ÑкÑÐ¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñкриптов:"
#: editor/project_export.cpp
@@ -9798,20 +10682,22 @@ msgid "Text"
msgstr "ТекÑтовый"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Компилированный"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Зашифрованный (Ðапишите ключ ниже)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
"ÐедейÑтвительный ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ (длина ключа должна ÑоÑтавлÑть 64 Ñимвола)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Ключ ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñкрипта (256-бит, в шеÑтнадцатеричном виде):"
#: editor/project_export.cpp
@@ -9884,7 +10770,8 @@ msgid "Imported Project"
msgstr "Импортированный проект"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°."
#: editor/project_manager.cpp
@@ -9920,6 +10807,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Ðе удалоÑÑŒ Ñоздать project.godot в папке проекта."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Ошибка при открытии файла пакета, не в формате zip."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Следующие файлы не удалоÑÑŒ извлечь из пакета:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Пакет уÑпешно уÑтановлен!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Переименовать проект"
@@ -10097,20 +10996,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Ð’Ñ‹ уверены, что хотите запуÑтить %d проектов одновременно?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Удалить %d проектов из ÑпиÑка?\n"
-"Содержимое папок проектов не будет изменено."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Выберите уÑтройÑтво из ÑпиÑка"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Удалить данный проект из ÑпиÑка?\n"
-"Содержимое папки проекта не будет изменено."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Выберите уÑтройÑтво из ÑпиÑка"
#: editor/project_manager.cpp
msgid ""
@@ -10142,7 +11035,8 @@ msgid "Project Manager"
msgstr "Менеджер проектов"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Проекты"
#: editor/project_manager.cpp
@@ -10154,10 +11048,25 @@ msgid "Last Modified"
msgstr "ПоÑледнее изменение"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "ЭкÑпортировать проект"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Переименовать проект"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Сканировать"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Проекты"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Выбрать папку Ð´Ð»Ñ ÑканированиÑ"
@@ -10166,18 +11075,41 @@ msgid "New Project"
msgstr "Ðовый проект"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Импортированный проект"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Переименовать проект"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Удалить отÑутÑтвующие"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Шаблоны"
+msgid "About"
+msgstr "О Godot Engine"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Библиотека реÑурÑов"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "ПерезапуÑтить ÑейчаÑ"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Удалить вÑе"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Ðе удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить проект"
@@ -10190,8 +11122,14 @@ msgstr ""
"Хотите изучить официальные примеры в Библиотеке реÑурÑов?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Фильтр ÑвойÑтв"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10204,6 +11142,10 @@ msgid "Key "
msgstr "Клавиша "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Кнопка геймпада"
@@ -10247,6 +11189,10 @@ msgstr "Ð’Ñе уÑтройÑтва"
msgid "Device"
msgstr "УÑтройÑтво"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Ðажмите клавишу..."
@@ -10388,7 +11334,8 @@ msgid "Override for Feature"
msgstr "Переопределение ÑвойÑтва"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Добавить перевод"
#: editor/project_settings_editor.cpp
@@ -10396,11 +11343,13 @@ msgid "Remove Translation"
msgstr "Удалить перевод"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Добавить путь перенаправлениÑ"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Перенаправлен реÑÑƒÑ€Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Перенаправлен реÑÑƒÑ€Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ"
#: editor/project_settings_editor.cpp
@@ -10674,6 +11623,10 @@ msgid "Post-Process"
msgstr "ПоÑÑ‚-обработка"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Стиль"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "ОÑтавить оригинал"
@@ -10840,12 +11793,30 @@ msgid "Delete node \"%s\"?"
msgstr "Удалить узел «%s»?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Ðевозможно выполнить Ñ ÐºÐ¾Ñ€Ð½ÐµÐ¼."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть Ñделана на редактируемой Ñцене."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10905,6 +11876,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Ðевозможно работать Ñ ÑƒÐ·Ð»Ð°Ð¼Ð¸, от которых унаÑледована Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñцена!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть Ñделана на редактируемой Ñцене."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Прикрепить Ñкрипт"
@@ -10953,10 +11928,6 @@ msgid "Load As Placeholder"
msgstr "Загрузить как заполнитель"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Открыть документацию"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11250,6 +12221,12 @@ msgstr ""
"редактированы через внешний редактор."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Ð˜Ð¼Ñ ÐºÐ»Ð°ÑÑа:"
@@ -11318,6 +12295,10 @@ msgid "Copy Error"
msgstr "Копировать ошибку"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "ВидеопамÑть"
@@ -11603,6 +12584,16 @@ msgstr "ÐедопуÑтимый ÑкземплÑÑ€ ÑÐ»Ð¾Ð²Ð°Ñ€Ñ (неверн
msgid "Object can't provide a length."
msgstr "Объект не может предоÑтавить длину."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "ЭкÑпортировать библиотеку полиÑеток"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "ЭкÑпортировать..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð¿Ð¾ÑкоÑть"
@@ -11644,6 +12635,11 @@ msgid "GridMap Paint"
msgstr "РиÑование Ñетки"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Залить выделенную GridMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Ð¡ÐµÑ‚Ð¾Ñ‡Ð½Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð°"
@@ -11893,6 +12889,16 @@ msgid "Add Output Port"
msgstr "Добавить выходной порт"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Изменить тип"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Изменить Ð¸Ð¼Ñ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ порта"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Переопределить ÑущеÑтвующую вÑтроенную функцию."
@@ -12005,6 +13011,11 @@ msgid "Add Preload Node"
msgstr "Добавить предзагрузочный узел"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Добавить узел"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Добавить узел(узлы) из дерева"
@@ -12235,10 +13246,6 @@ msgstr "ИÑкать VisualScript"
msgid "Get %s"
msgstr "Получить %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Задать %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "ОтÑутÑтвует Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð°."
@@ -12268,6 +13275,40 @@ msgid "Select device from the list"
msgstr "Выберите уÑтройÑтво из ÑпиÑка"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "ЭкÑпорт вÑех"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Удалить"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Загрузка, пожалуйÑта, ждите..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Ðе возможно добавить Ñцену!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "ЗапуÑк пользовательÑкого Ñкрипта..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Ðевозможно Ñоздать папку."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Ðе удалоÑÑŒ найти инÑтрумент «apksigner»."
@@ -12384,6 +13425,48 @@ msgstr ""
"пользовательÑкую Ñборку»."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Сканирование файлов,\n"
+"пожалуйÑта, ждите..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Ðе удалоÑÑŒ открыть шаблон Ð´Ð»Ñ ÑкÑпорта:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Добавление %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "ЭкÑпорт вÑех"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr "Ðеверное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°! Android App Bundle требует раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ *.aab."
@@ -12396,6 +13479,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Ðеверное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°! Android APK требует раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ *.apk."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12416,6 +13503,21 @@ msgstr ""
"ПожалуйÑта, переуÑтановите шаблон Ñборки Android из меню «Проект»."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "ОтÑутÑтвует project.godot в папке проекта."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Ðе удалоÑÑŒ запиÑать файл:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Сборка проекта Android (gradle)"
@@ -12440,11 +13542,54 @@ msgstr ""
"Ðевозможно Ñкопировать и переименовать файл ÑкÑпорта, проверьте диекторию "
"проекта gradle на наличие выходных данных."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð½Ðµ найдена: %s"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Создание контуров..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Ðе удалоÑÑŒ открыть шаблон Ð´Ð»Ñ ÑкÑпорта:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Добавление %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Ðе удалоÑÑŒ запиÑать файл:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "Выравнивание APK..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "ОтÑутÑтвует определитель."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Символ «%s» в идентификаторе не допуÑкаетÑÑ."
@@ -12473,10 +13618,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "ЗапуÑтить HTML в ÑиÑтемном браузере по умолчанию."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Ðе удалоÑÑŒ запиÑать файл:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Ðе удалоÑÑŒ открыть шаблон Ð´Ð»Ñ ÑкÑпорта:"
@@ -12485,16 +13626,49 @@ msgid "Invalid export template:"
msgstr "Ðеверный шаблон ÑкÑпорта:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Ðе удалоÑÑŒ запиÑать файл:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Ðе удалоÑÑŒ запиÑать файл:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Ðе удалоÑÑŒ прочитать пользовательÑкую HTML оболочку:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Ðе удалоÑÑŒ прочитать файл Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Ðевозможно Ñоздать папку."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "ИÑпользовать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки по умолчанию."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ñцены."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Ðеверный идентификатор:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12922,6 +14096,13 @@ msgstr ""
"GIProbes не поддерживаютÑÑ Ð²Ð¸Ð´ÐµÐ¾Ð´Ñ€Ð°Ð¹Ð²ÐµÑ€Ð¾Ð¼ GLES2.\n"
"ВмеÑто Ñтого иÑпользуйте BakedLightmap."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "SpotLight Ñ ÑƒÐ³Ð»Ð¾Ð¼ более 90 градуÑов не может отбраÑывать тени."
@@ -13004,6 +14185,18 @@ msgstr "СуÑтав не Ñоединён ни Ñ Ð¾Ð´Ð½Ð¸Ð¼ ÑкземплÑÑ€
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Узел Ри Узел Ð’ должны быть различными объектами клаÑÑа PhysicsBody"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -13012,6 +14205,46 @@ msgstr ""
"СвойÑтво «Remote Path» должно указывать на дейÑтвительный Spatial или "
"унаÑледованный от Spatial узел."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Это тело будет игнорироватьÑÑ, пока вы не уÑтановите Ñетку."
@@ -13074,6 +14307,10 @@ msgstr "Ðа узле BlendTree «%s» Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð½Ðµ найдена: «%
msgid "Animation not found: '%s'"
msgstr "ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ Ð½Ðµ найдена: %s"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "Ð’ узле «%s» недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ñ: «%s»."
@@ -13247,6 +14484,27 @@ msgid "Invalid comparison function for that type."
msgstr "ÐÐµÐ²ÐµÑ€Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñтого типа."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть назначены только в функции вершины."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "Ðазначение функции."
@@ -13255,13 +14513,179 @@ msgid "Assignment to uniform."
msgstr "Ðазначить форму."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть назначены только в функции вершины."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "КонÑтанты не могут быть изменены."
+#~ msgid "Package Contents:"
+#~ msgstr "Содержимое пакета:"
+
+#~ msgid "Singleton"
+#~ msgstr "Синглтон"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Стереть профиль «%s»? (Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "ДоÑтупные ÑвойÑтва:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "ДоÑтупные функции:"
+
+#~ msgid "Unset"
+#~ msgstr "СброÑить"
+
+#~ msgid "Class Options"
+#~ msgstr "Параметры клаÑÑа"
+
+#~ msgid "Set"
+#~ msgstr "Задать"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "%s измененных реÑурÑов Ñохранено."
+
+#~ msgid "Q&A"
+#~ msgstr "ВопроÑÑ‹ и ответы"
+
+#~ msgid "Status:"
+#~ msgstr "СтатуÑ:"
+
+#~ msgid "Edit:"
+#~ msgstr "Редактировать:"
+
+#~ msgid "Redownload"
+#~ msgstr "Перезагрузить"
+
+#~ msgid "(Installed)"
+#~ msgstr "(УÑтановлено)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(ОтÑутÑтвует)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Ðе удалоÑÑŒ выполнить запроÑ."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "ЦикличеÑкое перенаправление."
+
+#~ msgid "Download Complete."
+#~ msgstr "Загрузка завершена."
+
+#~ msgid "Remove Template"
+#~ msgstr "Удалить шаблон"
+
+#~ msgid "Download Templates"
+#~ msgstr "Загрузить шаблоны"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Выберите зеркало из ÑпиÑка: (Shift+Click: Открыть в браузере)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Удалить в корзину"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Развернуть вÑе ÑвойÑтва"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Свернуть вÑе ÑвойÑтва"
+
+#~ msgid "Copy Params"
+#~ msgstr "Копировать параметры"
+
+#~ msgid "Open in Help"
+#~ msgstr "Открыть в Ñправке"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Переопределение игровой камеры\n"
+#~ "Ðет запущенного ÑкземплÑра игры."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Тащить: Поворот"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Ðажмите «V» чтобы изменить точку вращениÑ, «Shift+V» чтобы перемещать "
+#~ "точку вращениÑ."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+ПКМ: СпиÑок выбора глубины"
+
+#~ msgid "Clone Down"
+#~ msgstr "Продублировать вниз"
+
+#~ msgid "Yaw"
+#~ msgstr "РыÑкание"
+
+#~ msgid "Size"
+#~ msgstr "Размер"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "ТÑнуть: Вращение\n"
+#~ "Alt+ТÑнуть: Перемещение\n"
+#~ "Alt+ПКМ: Выбор по ÑпиÑку"
+
+#~ msgid "Sep.:"
+#~ msgstr "Разделитель:"
+
+#~ msgid "Add All"
+#~ msgstr "Добавить вÑе"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Меню Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‚ÐµÐ¼."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Создать пуÑтой шаблон"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Создать пуÑтой шаблон редактора"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Создать из текущей темы редактора"
+
+#~ msgid "Data Type:"
+#~ msgstr "Тип информации:"
+
+#~ msgid "Theme File"
+#~ msgstr "Файл темы"
+
+#~ msgid "Compiled"
+#~ msgstr "Компилированный"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Удалить %d проектов из ÑпиÑка?\n"
+#~ "Содержимое папок проектов не будет изменено."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Удалить данный проект из ÑпиÑка?\n"
+#~ "Содержимое папки проекта не будет изменено."
+
+#~ msgid "Templates"
+#~ msgstr "Шаблоны"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Добавить путь перенаправлениÑ"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Ðевозможно выполнить Ñ ÐºÐ¾Ñ€Ð½ÐµÐ¼."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Ðе удалоÑÑŒ прочитать файл Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "ИÑпользовать Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ñтавки по умолчанию."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Проигрыватель анимации не может анимировать Ñам ÑебÑ, только других."
@@ -13314,9 +14738,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "По Ñтому пути уже ÑущеÑтвует файл или папка Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ð¼ именем."
-#~ msgid "Aligning APK..."
-#~ msgstr "Выравнивание APK..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "Ðевозможно завершить выравнивание APK."
@@ -13379,9 +14800,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgstr ""
#~ "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена никогда не была Ñохранена, Ñохраните её перед запуÑком."
-#~ msgid "Not in resource path."
-#~ msgstr "Ðе в пути реÑурÑов."
-
#~ msgid "Revert"
#~ msgstr "ВоÑÑтановить"
@@ -13482,9 +14900,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "Input"
#~ msgstr "Вход"
-#~ msgid "Properties:"
-#~ msgstr "СвойÑтва:"
-
#~ msgid "Methods:"
#~ msgstr "Методы:"
@@ -13795,9 +15210,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "Connect two points to make a split."
#~ msgstr "Соединить две точки, чтобы Ñоздать разделение."
-#~ msgid "Select a split to erase it."
-#~ msgstr "Выберите разделение, чтобы Ñтереть его."
-
#~ msgid "Add Node.."
#~ msgstr "Добавить Узел.."
@@ -13866,9 +15278,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "Public Methods:"
#~ msgstr "СпиÑок методов:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Тема Ñлементов GUI"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Тема Ñлементов GUI:"
@@ -13890,9 +15299,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "Match case"
#~ msgstr "Учитывать региÑтр"
-#~ msgid "Filter: "
-#~ msgstr "Фильтр: "
-
#~ msgid "Ok"
#~ msgstr "Ок"
@@ -13930,9 +15336,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "Rotate 270 degrees"
#~ msgstr "Поворот на 270 градуÑов"
-#~ msgid "Variable"
-#~ msgstr "ПеременнаÑ"
-
#~ msgid "Errors:"
#~ msgstr "Ошибки:"
@@ -14023,9 +15426,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "Set Transitions to:"
#~ msgstr "УÑтановить переход на:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Переименовать дорожку"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Изменить интерполÑцию"
@@ -14176,9 +15576,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "StyleBox Preview:"
#~ msgstr "ПредпроÑмотр StyleBox:"
-#~ msgid "Separation:"
-#~ msgstr "Разделение:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Редактор облаÑти текÑтуры"
@@ -14255,12 +15652,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "ОтÑутÑтвует project.godot в папке проекта."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "ОтÑутÑтвует project.godot в папке проекта."
-
-#~ msgid "Not found!"
-#~ msgstr "Ðе найдено!"
-
#~ msgid "Replace By"
#~ msgstr "Заменить на"
@@ -14634,9 +16025,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "КачеÑтво ÑÐ¶Ð°Ñ‚Ð¸Ñ Ñ‚ÐµÐºÑтур (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "Параметры текÑтуры"
-
#~ msgid "Please specify some files!"
#~ msgstr "ПожалуйÑта, укажите некоторые файлы!"
@@ -14797,9 +16185,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "Zoom Set..."
#~ msgstr "УÑтановить маÑштаб..."
-#~ msgid "Set a Value"
-#~ msgstr "УÑтановить значение"
-
#~ msgid "Parse BBCode"
#~ msgstr "ПарÑить BB Код"
@@ -14930,9 +16315,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "Instance at Cursor"
#~ msgstr "ЭкземплÑÑ€ на курÑор"
-#~ msgid "Could not instance scene!"
-#~ msgstr "Ðе возможно добавить Ñцену!"
-
#~ msgid "Use Default Light"
#~ msgstr "ИÑпользовать Ñтандартный Ñвет"
@@ -15009,9 +16391,6 @@ msgstr "КонÑтанты не могут быть изменены."
#~ msgid "City"
#~ msgstr "Город"
-#~ msgid "State"
-#~ msgstr "ГоÑударÑтво"
-
#~ msgid "2 letter country code"
#~ msgstr "Двух буквенный код Ñтраны"
diff --git a/editor/translations/si.po b/editor/translations/si.po
index a5586af274..94841d0879 100644
--- a/editor/translations/si.po
+++ b/editor/translations/si.po
@@ -529,7 +529,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -555,7 +556,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -576,6 +578,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -592,6 +598,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -640,7 +650,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -727,12 +737,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -787,11 +799,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -842,6 +852,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -911,8 +922,9 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
-msgstr ""
+#, fuzzy
+msgid "Go to Method"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -926,6 +938,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -947,8 +967,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1021,16 +1041,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1075,7 +1097,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1196,37 +1218,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1234,7 +1260,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1298,8 +1324,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "à·à·Šâ€à¶»à·’à¶­:"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1378,7 +1405,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1465,6 +1492,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1480,16 +1515,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1505,7 +1540,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1644,7 +1679,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1676,15 +1751,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1702,7 +1777,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1710,17 +1785,25 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+#, fuzzy
+msgid "Create Profile"
+msgstr "à·ƒà·à¶¯à¶±à·Šà¶±"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Remove Profile"
+msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1729,19 +1812,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1765,7 +1848,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1819,9 +1902,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1902,8 +1986,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1974,7 +2057,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2059,7 +2142,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2076,8 +2159,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2093,7 +2177,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2157,7 +2241,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2351,18 +2436,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2533,7 +2622,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2714,6 +2803,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2846,13 +2939,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2860,6 +2952,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2868,7 +2964,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2966,6 +3062,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2992,7 +3096,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3033,6 +3137,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3064,6 +3172,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3088,21 +3200,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3110,11 +3219,12 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "à¶šà·à¶½à¶º (à¶­à¶­à·Š): "
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3134,6 +3244,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3175,12 +3295,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3198,22 +3312,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3227,37 +3364,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3292,7 +3412,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3312,64 +3432,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Cannot remove temporary file:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3377,7 +3503,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3387,135 +3517,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Cancel the download of the templates."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3641,22 +3802,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3664,6 +3851,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3744,10 +3935,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3969,52 +4156,51 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "ලක්ෂණය ලුහුබදින්න"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "යතුරු පිටපත් කරන්න"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4030,7 +4216,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4038,6 +4228,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4065,6 +4259,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4266,7 +4469,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4486,6 +4689,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4825,10 +5033,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4837,15 +5053,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4873,6 +5093,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4973,7 +5197,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5016,6 +5244,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5024,8 +5256,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5263,15 +5495,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5327,6 +5560,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5338,19 +5572,26 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "à¶­à·à¶»à·à¶œà¶­à·Š යතුරු මක෠දමන්න"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5585,6 +5826,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "මෙහි යතුර ඇතුලත් කරන්න"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5597,6 +5847,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5841,6 +6131,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5873,7 +6167,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5932,13 +6226,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5992,7 +6298,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6264,7 +6569,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6568,6 +6874,22 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6771,7 +7093,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6802,6 +7124,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6925,8 +7252,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6959,10 +7286,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7114,6 +7437,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7134,39 +7476,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Vertices:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7322,6 +7668,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7337,6 +7687,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7350,7 +7704,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7358,18 +7712,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7466,6 +7817,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7760,11 +8115,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7785,7 +8135,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7793,156 +8143,529 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "à¶­à·à¶»à·à¶œà¶­à·Š යතුරු මක෠දමන්න"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Select Another Theme Resource:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Another Theme"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "ලුහුබදින්නෙක් එක් කරන්න"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "ලුහුබදින්නෙක් එක් කරන්න"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8115,6 +8838,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8439,11 +9166,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9271,7 +9993,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9386,7 +10108,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9394,7 +10116,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9402,11 +10124,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9479,7 +10201,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9513,6 +10235,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9657,15 +10391,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9692,7 +10422,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9704,10 +10434,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9716,11 +10458,24 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "මෙම ලුහුබදින්න෠ඉවත් කරන්න."
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9728,6 +10483,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9738,8 +10501,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9749,6 +10516,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9790,6 +10561,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9929,19 +10704,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Anim සංක්රමණය වෙනස් කරන්න"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10209,6 +10985,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10375,11 +11155,29 @@ msgid "Delete node \"%s\"?"
msgstr "යතුරු මක෠දමන්න"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10436,6 +11234,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10483,10 +11285,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10757,6 +11555,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10826,6 +11630,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11109,6 +11917,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11150,6 +11966,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11394,6 +12214,16 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "සජීවීකරණ පුනරà·à·€à¶»à·Šà¶®à¶±à¶º"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11507,6 +12337,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "යතුරු පිටපත් කරන්න"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11735,10 +12570,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11768,6 +12599,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11864,6 +12723,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11876,6 +12771,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11890,6 +12789,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11909,11 +12821,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11942,27 +12892,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Could not create HTTP server directory:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12310,6 +13284,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12379,12 +13360,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12433,6 +13466,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12580,15 +13617,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index d97e1321ef..6deda77711 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -531,7 +531,8 @@ msgstr "Sekundy"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -557,7 +558,8 @@ msgstr "Zmeniť veľkosť výberu"
msgid "Scale From Cursor"
msgstr "Zmeniť veľkosť od kurzora"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Duplikovať výber"
@@ -578,6 +580,10 @@ msgid "Go to Previous Step"
msgstr "Prejsť na predchádzajúci krok"
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimalizácia Animacie"
@@ -594,6 +600,11 @@ msgid "Use Bezier Curves"
msgstr "Použiť Bezier Curves"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Vložiť Track-y"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Optimalizér Animácií"
@@ -642,7 +653,7 @@ msgid "Select Tracks to Copy"
msgstr "Vybrať Track-y na skopírovanie"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -728,12 +739,14 @@ msgid "Toggle Scripts Panel"
msgstr "Vypnúť Panel Script-ov"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Priblížiť"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -790,11 +803,9 @@ msgid "Add"
msgstr "Pridať"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -844,6 +855,7 @@ msgstr "Nedá sa pripojiť signál"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -913,7 +925,8 @@ msgid "Edit..."
msgstr "Upraviť..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Prejdite na Metódu"
#: editor/create_dialog.cpp
@@ -928,6 +941,14 @@ msgstr "Zmeniť"
msgid "Create New %s"
msgstr "Vytvoriť Nový %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Žiadne výsledky pre \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -949,8 +970,8 @@ msgstr "Hľadať:"
msgid "Matches:"
msgstr "Zhody:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1026,19 +1047,23 @@ msgid "Owners Of:"
msgstr "Majitelia:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Odstrániť vybraté súbory z projektu? (nedá sa vrátiť späť)\n"
"Odstránené súbory nájdete v systémovom koši, aby ste ich mohli obnoviť."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Súbory ktoré budú odstránené vyžadujú ÄalÅ¡ie zdroje, aby mohli pracovaÅ¥.\n"
"Odstrániť aj napriek tomu? (nedá sa vrátiť späť)\n"
@@ -1086,7 +1111,7 @@ msgstr "Orphan Resource Explorer"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1211,28 +1236,41 @@ msgstr "Komponenty"
msgid "Licenses"
msgstr "Licencie"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "Chyba pri otváraní súboru balíka, nie je vo formáte zip."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Už Existuje)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Dekompresia Prostriedkov"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Nasledovné súbory sa nepodarilo extrahovať z balíka:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "A %s viac súborov."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Balík bol úspešne nainštalovaný!"
#: editor/editor_asset_installer.cpp
@@ -1240,16 +1278,13 @@ msgstr "Balík bol úspešne nainštalovaný!"
msgid "Success!"
msgstr "Úspech!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "BalíÄek Obsahu:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Inštalovať"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Inštalátor Balíkov"
#: editor/editor_audio_buses.cpp
@@ -1313,7 +1348,8 @@ msgid "Bypass"
msgstr "Obísť"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Možnosti pre Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1393,7 +1429,7 @@ msgstr "Pridať Bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Pridať nový Audio Bus do tohoto layout-u."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1480,6 +1516,15 @@ msgid "Can't add autoload:"
msgstr "Nepodarilo sa pridať autoload:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Súbor neexistuje."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Pridať AutoLoad"
@@ -1495,16 +1540,16 @@ msgid "Node Name:"
msgstr "Meno Node-u:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Meno"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+msgid "Global Variable"
+msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Vložiť Params"
@@ -1520,7 +1565,7 @@ msgstr "Ukladanie lokálnych zmien..."
msgid "Updating scene..."
msgstr "Aktualizovanie scény..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[Prázdne]"
@@ -1677,8 +1722,49 @@ msgid "Import Dock"
msgstr "Importovať Dock"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Vymazať profil '%s'? (Nedá sa vrátiť späť)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Aktuálny)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1709,15 +1795,18 @@ msgid "Enable Contextual Editor"
msgstr "Povoliť Kontextuálny Editor"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Povolené Vlastnosti:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Collapsovať Všetky Vlastnosti"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+#, fuzzy
+msgid "Main Features:"
msgstr "Povolené Funkcie:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Povolené Class-y:"
#: editor/editor_feature_profile.cpp
@@ -1737,25 +1826,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Error pri ukladaní profilu do cesty: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Unset"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Obnoviť na východzie"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Aktuálny Profil:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Spraviť Aktuálny"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Vymazať Profil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Nový"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Všetky vybrané"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Profily k dispozícii:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Spraviť Aktuálny"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Import"
@@ -1764,20 +1862,22 @@ msgid "Export"
msgstr "Export"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Profily k dispozícii:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Aktuálny Profil:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Možnosti pre Class"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Možnosti pre Class:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Nové profilové meno:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Vymazať Profil"
+msgid "New profile name:"
+msgstr "Nové profilové meno:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1800,7 +1900,8 @@ msgid "Select Current Folder"
msgstr "VybraÅ¥ Aktuálny PrieÄinok"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Súbor Existuje, Predpísať?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1854,9 +1955,10 @@ msgid "Open a File or Directory"
msgstr "OtvoriÅ¥ súbor / prieÄinok"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Uložiť"
@@ -1937,8 +2039,7 @@ msgid "Directories & Files:"
msgstr "PrieÄinky a Súbory:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Predzobraziť:"
@@ -2011,7 +2112,7 @@ msgstr "Vlastnosti Témy"
msgid "Enumerations"
msgstr "VýpoÄty"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konštanty"
@@ -2100,7 +2201,7 @@ msgstr "Metóda"
msgid "Signal"
msgstr "Signál"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konštant"
@@ -2116,9 +2217,10 @@ msgstr "Vlastnosť Témy"
msgid "Property:"
msgstr "Vlastnosť:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Nastaviť"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2133,7 +2235,7 @@ msgid "Copy Selection"
msgstr "Skopírovať Výber"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2197,7 +2299,8 @@ msgid "Imported resources can't be saved."
msgstr "Importované zdroje nemôžu byť uložené."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2417,18 +2520,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Chcete uložiť zmeny do '%s' pred zatvorením?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Uložené %s upravené zdroje."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Na uloženie scény je potrebný root node."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Uložiť Scénu Ako..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Táto operácia nemôže byÅ¥ dokonÄená bez scény."
@@ -2621,7 +2729,7 @@ msgstr "Odstrániť Layout"
msgid "Default"
msgstr "Predvolené"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Ukázať v FileSystéme"
@@ -2802,6 +2910,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Orphan Resource Explorer..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Všetky vybrané"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Odísť do Listu Projektov"
@@ -2957,20 +3070,24 @@ msgstr "Spravovať Export Templates..."
msgid "Help"
msgstr "Pomoc"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Online Dokumentácie"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Popis:"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Q&A"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Nahlásiť Bugy"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Poslať spätnú väzbu Dokumentácie"
@@ -2979,7 +3096,8 @@ msgid "Community"
msgstr "Komunita"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "O nás"
#: editor/editor_node.cpp
@@ -3076,6 +3194,15 @@ msgid "Manage Templates"
msgstr "Spravovať Šablóny"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Inštalovať Zo Súboru"
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3113,7 +3240,7 @@ msgstr "Importovať Šablóny Zo ZIP File-u"
msgid "Template Package"
msgstr "Balík Šablón"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Exportovať Knižnicu"
@@ -3156,6 +3283,11 @@ msgid "Select"
msgstr "Zvoliť"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "VybraÅ¥ Aktuálny PrieÄinok"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Otvoriť 2D Editor"
@@ -3187,6 +3319,11 @@ msgstr "Upozornenie!"
msgid "No sub-resources found."
msgstr "Nenašli sa žiadne \"sub-resources\"."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Nenašli sa žiadne \"sub-resources\"."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Vytváranie Predzobrazenia Mesh-u"
@@ -3211,33 +3348,34 @@ msgstr "Nainštalované Plugins:"
msgid "Update"
msgstr "Update"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Verzia:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Status:"
+#, fuzzy
+msgid "Author"
+msgstr "Autori"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Opatrenia:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Čas Snímky (v sek.)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Priemerný Čas (v sek.)"
#: editor/editor_profiler.cpp
@@ -3257,6 +3395,16 @@ msgid "Self"
msgstr "Vlastné"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Snímka #:"
@@ -3298,13 +3446,6 @@ msgstr "Nesprávny \"RID\""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Vybraný prostriedok (%s) sa nezhoduje žiadnemu typu pre túto vlastnosť (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3328,40 +3469,6 @@ msgid "Pick a Viewport"
msgstr "Vybrať Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Nový Script"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "\"Extendovaný\" Script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Nový %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "SpraviÅ¥ JedineÄným"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Vložiť"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Konvertovať Do %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Vybraný node není Viewport!"
@@ -3390,6 +3497,48 @@ msgstr "Nová Hodnota:"
msgid "Add Key/Value Pair"
msgstr "PridaÅ¥ KľúÄ/Hodnota \"Pair\""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Vybraný prostriedok (%s) sa nezhoduje žiadnemu typu pre túto vlastnosť (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "SpraviÅ¥ JedineÄným"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Vložiť"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Konvertovať Do %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Nový %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Nový Script"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "\"Extendovaný\" Script"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3425,7 +3574,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Nezabudli ste na metódu '_run'?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Podržte Ctrl na zaokrúhlenie na celé Äísla. Podržte Shift pre viac precízne "
"zmeny."
@@ -3447,113 +3597,69 @@ msgid "Import From Node:"
msgstr "Importovať Z Node-u:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Preinštalovať"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Odinštalovať"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Nainštalované)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Stiahnuté"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "Oficiálne export šablóny niesu dostupné pre \"development builds\"."
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Chýba)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Aktuálny)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Není tu žiadny '%s' súbor."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "NaÄítavanie zrkadiel, prosím Äakajte..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Vymazať verziu šablóny '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Nedá sa otvoriť export templates zip."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Neplatný version.txt formát vo vnútri šablón: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Nenašla sa žiadny version.txt vo vnútri šablón."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Chyba pri vytváraní cesty pre šablóny:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Extrahovanie exportných šablón"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importovanie:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Chyba pri získavaní listu zrkadiel."
+msgid "Error requesting URL:"
+msgstr "Chyba pri zadávaní URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "Chyba pri rozbore JSON listu zrkadiel. Prosím nahláste túto chybu!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Prebieha Pripájanie do Zrkadla..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Nenašli sa žiadne download linky pre túto verziu. Priame stiahnutie je "
-"dostupný iba pre \"official releases\"."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Nepodarilo sa rozlúštiť hostove meno:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Nerozpoznané."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Nepodarilo sa pripojiť k host:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Nedá sa pripojiť."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Žiadna odozva od host-a:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Žiadna odozva."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "Žiadosť Zlihala."
+msgid "Request failed."
+msgstr "Žiadosť zlyhala."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Presmerovanie \"Loop-u\"."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Žiadosť zlyhala, príliš veľa presmerovaní"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Zlihalo:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Žiadosť zlyhala."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "InÅ¡talácia je DokonÄená."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3568,12 +3674,25 @@ msgstr ""
"Archívy problémových šablón nájdete v '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Chyba pri zadávaní URL:"
+msgid "Error getting the list of mirrors."
+msgstr "Chyba pri získavaní listu zrkadiel."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Prebieha Pripájanie do Zrkadla..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "Chyba pri rozbore JSON listu zrkadiel. Prosím nahláste túto chybu!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Nenašli sa žiadne download linky pre túto verziu. Priame stiahnutie je "
+"dostupný iba pre \"official releases\"."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3618,44 +3737,137 @@ msgid "SSL Handshake Error"
msgstr "Chyba SSL Handshake"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Nedá sa otvoriť export templates zip."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Neplatný version.txt formát vo vnútri šablón: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Nenašla sa žiadny version.txt vo vnútri šablón."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Chyba pri vytváraní cesty pre šablóny:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Extrahovanie exportných šablón"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importovanie:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Vymazať verziu šablóny '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Nekompresované \"Android Build Sources\""
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Exportovať Manažera Šablón"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Aktuálna Verzia:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Inštalované Verzie:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Otvoriť súbor"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall"
+msgstr "Odinštalovať"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Chyba SÅ¥ahovania"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "Oficiálne export šablóny niesu dostupné pre \"development builds\"."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Inštalovať Zo Súboru"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Vymazať Šablónu"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importovať Šablóny Zo ZIP File-u"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Zrušiť"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Vybrať Súbor Šablóny"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Nedá sa otvoriť export templates zip."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Godot Exportovanie Šablón"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Inštalované Verzie:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Exportovať Manažera Šablón"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Odinštalovať"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Stiahnuť Šablónu"
+msgid "Select Template File"
+msgstr "Vybrať Súbor Šablóny"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr "Godot Exportovanie Šablón"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Vybrať zrkadlo z listu: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3789,29 +4001,60 @@ msgstr "Nový Script..."
msgid "New Resource..."
msgstr "Nový Prostriedok..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Expandovať Všetky"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Collapse All"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplikovať..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Vyhľadať súbory"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Presunúť do odpadkov"
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplikovať..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Premenovať..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Minulý PrieÄinok/Súbor"
@@ -3895,10 +4138,6 @@ msgstr "Nájsť..."
msgid "Replace..."
msgstr "Nahradiť..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Zrušiť"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Nájsť: "
@@ -4121,53 +4360,55 @@ msgid "Failed to load resource."
msgstr "Nepodarilo sa naÄítaÅ¥ prostriedok."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Expandovať Všetky Vlastnosti"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Vlastnosti"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Collapsovať Všetky Vlastnosti"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Uložiť Ako..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Vlastnosti"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Skopírovať Parametre"
+msgid "Make Sub-Resources Unique"
+msgstr "Spraviť Sub-Prostriedky Unikátne"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Editovať Clipboard Prostriedku"
+msgid "Create a new resource in memory and edit it."
+msgstr "Vytvoriť nový prostriedok v pamäti a upraviť ho."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Skopírovať Prostriedok"
+msgid "Load an existing resource from disk and edit it."
+msgstr "NaÄítaÅ¥ existujúci prostriedok z disku a upraviÅ¥ ho."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Spraviť Built-In"
+msgid "Save the currently edited resource."
+msgstr "Uložiť aktuálne upravený prostriedok."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Spraviť Sub-Prostriedky Unikátne"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Uložiť Ako..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Otvoriť v Pomoci"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Nieje v resource path."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Vytvoriť nový prostriedok v pamäti a upraviť ho."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Editovať Clipboard Prostriedku"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "NaÄítaÅ¥ existujúci prostriedok z disku a upraviÅ¥ ho."
+msgid "Copy Resource"
+msgstr "Skopírovať Prostriedok"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Uložiť aktuálne upravený prostriedok."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Spraviť Built-In"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4182,14 +4423,25 @@ msgid "History of recently edited objects."
msgstr "História upravených objektov."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Vlastnosti Objekta."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Popis:"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "Popis:"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Vlastnosti Filtra"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Vlastnosti Objekta."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Zmeny môžu byť stratené!"
@@ -4217,6 +4469,15 @@ msgstr "Meno Pluginu:"
msgid "Subfolder:"
msgstr "Subfolder:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Verzia:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Jazyk:"
@@ -4424,7 +4685,8 @@ msgid "Blend:"
msgstr "Blend:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parameter sa Zmenil"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4641,6 +4903,11 @@ msgid "Animation"
msgstr "Animácie"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Nový"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Upraviť Prechody..."
@@ -4981,10 +5248,18 @@ msgid "View Files"
msgstr "Zobraziť Súbory"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Stiahnuté"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Chyba pripojenia, prosím skúste znovu."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Nedá sa pripojiť."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Nepodarilo sa pripojiť k host:"
@@ -4993,16 +5268,20 @@ msgid "No response from host:"
msgstr "Žiadna odozva od host-a:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Žiadna odozva."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Nepodarilo sa rozlúštiť hostove meno:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Žiadosť zlyhala, spätný kód:"
+msgid "Can't resolve."
+msgstr "Nerozpoznané."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Žiadosť zlyhala."
+msgid "Request failed, return code:"
+msgstr "Žiadosť zlyhala, spätný kód:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5029,6 +5308,10 @@ msgid "Timeout."
msgstr "Čas vypršal."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Zlihalo:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Zlý download hash, za predpokladu že bolo narábané so súborom."
@@ -5129,8 +5412,12 @@ msgid "All"
msgstr "Všetky"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Žiadne výsledky pre \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5172,6 +5459,10 @@ msgstr "NaÄitávanie..."
msgid "Assets ZIP File"
msgstr "Prostriedky Súboru ZIP"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
#, fuzzy
msgid ""
@@ -5183,9 +5474,10 @@ msgstr ""
"na uloženie so BakedLightmap vlastností."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Žiadne mesh-e na bake. Uistite sa že obsahujú UV2 channel a je na ňom 'Bake "
"Light' vlajka."
@@ -5433,9 +5725,10 @@ msgstr "Zmeniť Kovadliny"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Prepísanie Hernej Kamery\n"
"Prepísať hernú kameru s viewport kamerou editora."
@@ -5443,11 +5736,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Prepísanie Hernej Kamery\n"
-"Nieje spustená žiadna herná inštancia."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5502,6 +5794,7 @@ msgstr ""
"rodiÄa."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5513,21 +5806,32 @@ msgid "Select Mode"
msgstr "Vybrať Režim"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Potiahnutím: OtáÄenie"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "VymazaÅ¥ oznaÄený node alebo prechod."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Potiahnutie: Pohyb"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "VymazaÅ¥ oznaÄený node alebo prechod."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"StaÄte 'v' pre Zmenu Pivot-a, 'Shift+v' pre hýbanie s Pivot-om (keÄ sa hýbe)."
+"Zobraziť list všetkých objektov na kliknutej pozícii\n"
+"(rovnako ako Alt+RMB v výberovom režime)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+RMB: Výber hĺbkového zoznamu"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5765,6 +6069,16 @@ msgid "Clear Pose"
msgstr "Zmazať Pozíciu"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Pridať Node"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Tu vložiÅ¥ kľúÄ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Zdvojnásobiť krok mriežky dvomi"
@@ -5777,6 +6091,52 @@ msgid "Pan View"
msgstr "Zobrazenie Pan"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Oddialiť"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Oddialiť"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Oddialiť"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Oddialiť"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Oddialiť"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Oddialiť"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Pridať %s"
@@ -6020,6 +6380,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Vytvoriť adresár"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "Vytvoriť adresár"
@@ -6054,7 +6419,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6115,13 +6480,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Vytvoriť adresár"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Vytvoriť adresár"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6177,7 +6555,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6450,7 +6827,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6769,6 +7147,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Generovaný Bodový PoÄet:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Generovaný Bodový PoÄet:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6981,7 +7377,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Vyhľadať"
@@ -7012,6 +7408,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Online Dokumentácie"
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation."
msgstr "Popis:"
@@ -7141,8 +7542,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -7175,10 +7576,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7337,6 +7734,28 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "RotaÄný Režim"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Preložiť Preloženie:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Veľkosť:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7357,40 +7776,49 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Size"
+msgid "Size:"
msgstr "Veľkosť: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Parameter sa Zmenil"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Zmeniť"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Zmeniť"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Volania"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "Particly"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7550,6 +7978,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Prepnúť Obľúbené"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7565,6 +7998,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Konvertovať Do %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7578,7 +8016,8 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Prichytiť Node-y Na Zem"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7586,13 +8025,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Nepodarilo sa nájsť pevnú zem na prichytenie výberu."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr ""
@@ -7601,6 +8033,10 @@ msgid "Use Snap"
msgstr "Použiť Prichytávanie"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr ""
@@ -7695,6 +8131,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7996,11 +8436,6 @@ msgid "Snap Mode:"
msgstr "Režim Prichytenia:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Prichytenie Pixelov"
@@ -8021,174 +8456,593 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Popis:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Fonts"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Icons"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All Items"
-msgstr "Všetky vybrané"
+msgid "No colors found."
+msgstr "Nenašli sa žiadne \"sub-resources\"."
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All"
-msgstr "Všetky vybrané"
+msgid "{num} constant(s)"
+msgstr "Konštanty"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "Súbor:"
+msgid "No constants found."
+msgstr "Konštanty:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "Nenašli sa žiadne \"sub-resources\"."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "No icons found."
+msgstr "Nenašli sa žiadne \"sub-resources\"."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Nenašli sa žiadne \"sub-resources\"."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "(Re)Importovanie Asset-ov"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Toggle Button"
-msgstr "TlaÄidlo"
+msgid "Updating the editor"
+msgstr "Odísť z editora?"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "Vypnuté"
+msgid "Finalizing"
+msgstr "Analyzovanie"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtre:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Disabled Item"
-msgstr "Vypnuté"
+msgid "Select by data type:"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Vypnuté"
+msgid "Collapse types."
+msgstr "Collapse All"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+#, fuzzy
+msgid "Expand types."
+msgstr "Expandovať Všetky"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Vybrať Súbor Šablóny"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Opojiť Všetko"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Editable Item"
+msgid "Import Selected"
+msgstr "Importovať Scénu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Vymazať Predmet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Pridať do Obľúbených"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konštant"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Pridať Bod"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Pridať Vstup"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
msgstr "Súbor:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Vymazať Predmet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Vymazať Predmet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Neplatný súbor, není audio bus layout."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Spravovať Šablóny"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Súbor:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Add Type:"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Pridať Vstup"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Súbor:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Vymazať Predmet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Vymazať Predmet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Meno Node-u:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importovať Ako:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Predvolené"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Súbor:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Hľadať Náhradný Zdroj:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Súbor:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Konfigurovať Prichytenie"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+#, fuzzy
+msgid "Override Item"
+msgstr "Prepísať"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "Otvoriť súbor"
+msgid "Add Type"
+msgstr "Pridať Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Meno Node-u:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "NaÄítaÅ¥ predvolené"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Predpísať:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Súbor:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Spravovať Export Templates..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Predzobraziť"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Predzobraziť Vylepšenie"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Vrátiť Scénu"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Toggle Button"
+msgstr "TlaÄidlo"
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "Vypnuté"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "Vypnuté"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
+msgstr "Popis:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Vypnuté"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Editable Item"
+msgstr "Súbor:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Neplatný súbor, není audio bus layout."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
@@ -8368,6 +9222,10 @@ msgid "Priority"
msgstr "Súbor:"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8732,11 +9590,6 @@ msgid "Commit Changes"
msgstr "Zmeniť"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9579,7 +10432,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "Súbor:"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9695,7 +10548,7 @@ msgid "Script"
msgstr "Popis:"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9703,7 +10556,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9711,11 +10564,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9790,8 +10643,9 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
-msgstr ""
+#, fuzzy
+msgid "Invalid project name."
+msgstr "Neplatné meno skupiny."
#: editor/project_manager.cpp
#, fuzzy
@@ -9825,6 +10679,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Chyba pri otváraní súboru balíka, nie je vo formáte zip."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Nasledovné súbory sa nepodarilo extrahovať z balíka:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Balík bol úspešne nainštalovaný!"
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Rename Project"
msgstr "Všetky vybrané"
@@ -9972,15 +10838,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -10008,7 +10870,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Zakladatelia Projektu"
#: editor/project_manager.cpp
@@ -10021,10 +10883,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Všetky vybrané"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Zakladatelia Projektu"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -10034,19 +10911,42 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Remove Missing"
+msgid "Import Project"
+msgstr "Importovať Dock"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
msgstr "Všetky vybrané"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Templates"
+msgid "Remove Missing"
msgstr "Všetky vybrané"
#: editor/project_manager.cpp
+msgid "About"
+msgstr "O nás"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Asset Library"
+
+#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr "Všetky vybrané"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -10057,8 +10957,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Vlastnosti Filtra"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10068,6 +10973,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10110,6 +11019,10 @@ msgstr "Zariadenie"
msgid "Device"
msgstr "Zariadenie"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10253,19 +11166,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Pridať Prechod"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10538,6 +11452,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10702,11 +11620,29 @@ msgid "Delete node \"%s\"?"
msgstr "Zmazať node \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10764,6 +11700,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "Attach Script"
msgstr "Popis:"
@@ -10812,11 +11752,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "Popis:"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11099,6 +12034,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "Trieda:"
@@ -11175,6 +12116,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11464,6 +12409,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exportovať Mesh Library"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Export..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11508,6 +12463,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Všetky vybrané"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11758,6 +12718,16 @@ msgid "Add Output Port"
msgstr "Signály:"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Zmeniť %s Typ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Zmeniť Hodnotu v Slovníku"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11874,6 +12844,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Pridať Node"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -12111,10 +13086,6 @@ msgstr "Vložiť"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12144,6 +13115,40 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Export..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Odinštalovať"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "NaÄítavanie zrkadiel, prosím Äakajte..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Subprocess sa nedá spustiť!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Spustiť Vlastný Script..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "PrieÄinok sa nepodarilo vytvoriÅ¥."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12241,6 +13246,46 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Skenujem Súbory,\n"
+"PoÄkajte Prosím..."
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Pridávanie %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12253,6 +13298,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12267,6 +13316,20 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Popis:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12286,11 +13349,53 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "BalíÄek Obsahu:"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Pripájanie..."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Pridávanie %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Popis:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12320,28 +13425,57 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Invalid export template:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Could not write file:"
msgstr "Popis:"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Popis:"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "Popis:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
-msgstr ""
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "PrieÄinok sa nepodarilo vytvoriÅ¥."
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Error pri ukladaní TileSet-u!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Nesprávna veľkosť písma."
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
msgstr ""
-#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12710,6 +13844,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12779,12 +13920,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12833,6 +14026,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12982,21 +14179,136 @@ msgid "Invalid comparison function for that type."
msgstr "Neplatná funkcia porovnania pre tento typ."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Vymazať profil '%s'? (Nedá sa vrátiť späť)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Povolené Vlastnosti:"
+
+#~ msgid "Unset"
+#~ msgstr "Unset"
+
+#~ msgid "Class Options"
+#~ msgstr "Možnosti pre Class"
+
+#~ msgid "Set"
+#~ msgstr "Nastaviť"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Uložené %s upravené zdroje."
+
+#~ msgid "Q&A"
+#~ msgstr "Q&A"
+
+#~ msgid "Status:"
+#~ msgstr "Status:"
+
+#~ msgid "Edit:"
+#~ msgstr "Edit:"
+
+#~ msgid "Redownload"
+#~ msgstr "Preinštalovať"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Nainštalované)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Chýba)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Žiadosť Zlihala."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Presmerovanie \"Loop-u\"."
+
+#~ msgid "Download Complete."
+#~ msgstr "InÅ¡talácia je DokonÄená."
+
+#~ msgid "Remove Template"
+#~ msgstr "Vymazať Šablónu"
+
+#~ msgid "Download Templates"
+#~ msgstr "Stiahnuť Šablónu"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Vybrať zrkadlo z listu: (Shift+Click: Open in Browser)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Presunúť do odpadkov"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Expandovať Všetky Vlastnosti"
+
+#~ msgid "Copy Params"
+#~ msgstr "Skopírovať Parametre"
+
+#~ msgid "Open in Help"
+#~ msgstr "Otvoriť v Pomoci"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Prepísanie Hernej Kamery\n"
+#~ "Nieje spustená žiadna herná inštancia."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Potiahnutím: OtáÄenie"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "StaÄte 'v' pre Zmenu Pivot-a, 'Shift+v' pre hýbanie s Pivot-om (keÄ sa "
+#~ "hýbe)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+RMB: Výber hĺbkového zoznamu"
+
+#, fuzzy
+#~ msgid "Size"
+#~ msgstr "Veľkosť: "
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "Otvoriť súbor"
+
+#, fuzzy
+#~ msgid "Templates"
+#~ msgstr "Všetky vybrané"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "Animation player sa nemôže naanimovať sám, iba ostatné player-y."
@@ -13053,18 +14365,12 @@ msgstr ""
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "Aktuálna scéna sa nikdy neuložila, prosím uložte ju pred spustením."
-#~ msgid "Not in resource path."
-#~ msgstr "Nieje v resource path."
-
#~ msgid "Revert"
#~ msgstr "Revert"
#~ msgid "This action cannot be undone. Revert anyway?"
#~ msgstr "Túto akciu nie je možné vrátiť späť. Chcete Revertovatť aj tak?"
-#~ msgid "Revert Scene"
-#~ msgstr "Vrátiť Scénu"
-
#, fuzzy
#~ msgid "Clear Script"
#~ msgstr "Popis:"
@@ -13177,10 +14483,6 @@ msgstr ""
#~ msgstr "Všetky vybrané"
#, fuzzy
-#~ msgid "Separation:"
-#~ msgstr "Popis:"
-
-#, fuzzy
#~ msgid "Can't write file."
#~ msgstr "Popis:"
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index 07bd33c389..53b4bca499 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -557,7 +557,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -585,7 +586,8 @@ msgstr "PoveÄaj izbiro"
msgid "Scale From Cursor"
msgstr "PoveÄaj iz kazalca"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Podvoji izbrano"
@@ -609,6 +611,11 @@ msgid "Go to Previous Step"
msgstr "Pojdi na prejšnji korak"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Ponastavi PoveÄavo/PomanjÅ¡avo"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimiziraj Animacijo"
@@ -625,6 +632,11 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Prilepi Parametre"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Optimizacija Animacije"
@@ -674,7 +686,7 @@ msgid "Select Tracks to Copy"
msgstr "Izberi Lastnost"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -764,12 +776,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Približaj"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -832,11 +846,9 @@ msgid "Add"
msgstr "Dodaj"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -889,6 +901,7 @@ msgstr "Povezovanje Signala:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -966,7 +979,7 @@ msgstr "Uredi"
#: editor/connections_dialog.cpp
#, fuzzy
-msgid "Go To Method"
+msgid "Go to Method"
msgstr "Metode"
#: editor/create_dialog.cpp
@@ -981,6 +994,14 @@ msgstr "Spremeni"
msgid "Create New %s"
msgstr "Ustvari Nov %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -1002,8 +1023,8 @@ msgstr "Iskanje:"
msgid "Matches:"
msgstr "Zadetki:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1083,8 +1104,9 @@ msgstr "Lastniki:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "Odstranim izbrane datoteke iz projekta? (brez vrnitve)"
#: editor/dependency_editor.cpp
@@ -1092,8 +1114,9 @@ msgstr "Odstranim izbrane datoteke iz projekta? (brez vrnitve)"
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Izbrisane datoteke so potrebne za delovanje drugih virov.\n"
"Ali jih vseeno odstranim? (brez vrnitve)"
@@ -1142,7 +1165,7 @@ msgstr "Raziskovalec Osamljenih Virov"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1271,32 +1294,40 @@ msgstr "Komponente"
msgid "Licenses"
msgstr "Licence"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Error opening package file, not in ZIP format."
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "Napaka pri odpiranju datoteke paketa, ker ni v formatu zip."
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr "SamodejnoNalaganje '%s' že obstaja!"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Razširjenje Dodatkov"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "And %s more files."
+msgid "(and %s more files)"
msgstr "%d veÄ datotek"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Package installed successfully!"
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paket je UspeÅ¡no NameÅ¡Äen!"
#: editor/editor_asset_installer.cpp
@@ -1304,17 +1335,13 @@ msgstr "Paket je UspeÅ¡no NameÅ¡Äen!"
msgid "Success!"
msgstr "Uspelo je!"
-#: editor/editor_asset_installer.cpp
-#, fuzzy
-msgid "Package Contents:"
-msgstr "Vsebina:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Namesti"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Namestnik Paketov"
#: editor/editor_audio_buses.cpp
@@ -1379,7 +1406,8 @@ msgid "Bypass"
msgstr "Prehod"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Možnosti Vodila"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1461,7 +1489,7 @@ msgstr "Dodaj Vodilo"
msgid "Add a new Audio Bus to this layout."
msgstr "Shrani Postavitev ZvoÄnega Vodila Kot..."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1553,6 +1581,15 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Datoteka ne obstaja."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Dodaj SamodejnoNalaganje"
@@ -1568,16 +1605,17 @@ msgid "Node Name:"
msgstr "Ime Gradnika:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Ime"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Posameznik"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Preimenuj Spremenljivko"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Prilepi Parametre"
@@ -1593,7 +1631,7 @@ msgstr "Shranjevanje lokalnih sprememb..."
msgid "Updating scene..."
msgstr "Posodabljanje scene..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[prazno]"
@@ -1740,9 +1778,49 @@ msgid "Import Dock"
msgstr "Uvozi"
#: editor/editor_feature_profile.cpp
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Zamenjaj Vse"
+msgid "(current)"
+msgstr "(Trenutno)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1779,16 +1857,17 @@ msgstr "Odpri naslednji Urejevalnik"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
-msgstr "Lastnosti"
+msgid "Class Properties:"
+msgstr "SkrÄi vse lastnosti"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr ""
+#, fuzzy
+msgid "Main Features:"
+msgstr "Upravljaj Izvozne Predloge"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr "IÅ¡Äi Razrede"
#: editor/editor_feature_profile.cpp
@@ -1807,8 +1886,9 @@ msgid "Error saving profile to path: '%s'."
msgstr "Napaka pri shranjevanju PloÅ¡ÄnegaNiza!"
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Naložite Prevzeto"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1817,17 +1897,26 @@ msgstr "Trenutna RazliÄica:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Make Current"
-msgstr "Trenutno:"
+msgid "Create Profile"
+msgstr "IzbriÅ¡i toÄke"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Odstrani Predlogo"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "Na voljo Nodes:"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Make Current"
+msgstr "Trenutno:"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Uvozi"
@@ -1837,23 +1926,22 @@ msgstr "Izvozi"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Available Profiles:"
-msgstr "Na voljo Nodes:"
+msgid "Configure Selected Profile:"
+msgstr "Trenutna RazliÄica:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
-msgstr "Opis"
+msgid "Extra Options:"
+msgstr "Opis:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "New profile name:"
-msgstr "Novo ime:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase Profile"
-msgstr "IzbriÅ¡i toÄke"
+msgid "New profile name:"
+msgstr "Novo ime:"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1880,7 +1968,8 @@ msgid "Select Current Folder"
msgstr "Izberite Trenutno Mapo"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Datoteka Obstaja, Prepišem?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1937,9 +2026,10 @@ msgid "Open a File or Directory"
msgstr "Odpri Datoteko ali Mapo"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Shrani"
@@ -2028,8 +2118,7 @@ msgid "Directories & Files:"
msgstr "Mape & Datoteke:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Predogled:"
@@ -2104,7 +2193,7 @@ msgstr "Lastnosti"
msgid "Enumerations"
msgstr "OÅ¡tevilÄenja"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstante"
@@ -2209,7 +2298,7 @@ msgstr "Metode"
msgid "Signal"
msgstr "Signali"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstanta"
@@ -2227,8 +2316,9 @@ msgstr "Lastnosti"
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2245,7 +2335,7 @@ msgid "Copy Selection"
msgstr "Odstrani izbrano"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2311,7 +2401,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2523,19 +2614,22 @@ msgid "Save changes to '%s' before closing?"
msgstr "Shranim spremembe v '%s' pred zapiranjem?"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Saved %s modified resource(s)."
-msgstr "Napaka pri nalaganju vira."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Shrani Sceno Kot..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Ta operacija ni mogoÄa brez scene."
@@ -2732,7 +2826,7 @@ msgstr "Izbriši Postavitev"
msgid "Default"
msgstr "Prevzeto"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
#, fuzzy
msgid "Show in FileSystem"
@@ -2925,6 +3019,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Raziskovalec Osamljenih Virov"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Preimenuj Projekt"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Zapri na Seznam Projektov"
@@ -3088,14 +3187,14 @@ msgstr "Upravljaj Izvozne Predloge"
msgid "Help"
msgstr "PomoÄ"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Spletna Dokumentacija"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Odpri Nedavne"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "V&O"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3103,6 +3202,10 @@ msgid "Report a Bug"
msgstr "Ponovno Uvozi"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -3111,7 +3214,8 @@ msgid "Community"
msgstr "Skupnost"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "O Programu"
#: editor/editor_node.cpp
@@ -3215,6 +3319,16 @@ msgid "Manage Templates"
msgstr "Upravljaj Izvozne Predloge"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Namesti Iz Datoteke"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Ne temelji na datoteki virov"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3242,7 +3356,7 @@ msgstr "Uvozi Predloge iz ZIP Datoteke"
msgid "Template Package"
msgstr "Izvozni Upravitelj Predlog"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Izvozi Knjižnico"
@@ -3283,6 +3397,11 @@ msgid "Select"
msgstr "Izberi"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Izberite Trenutno Mapo"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Odpri 2D Urejevalnik"
@@ -3314,6 +3433,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Ustvari Predogled Modela"
@@ -3340,34 +3463,34 @@ msgstr "NameÅ¡Äeni VtiÄniki:"
msgid "Update"
msgstr "Posodobi"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "RazliÄica:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Avtor:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Stanje:"
+#, fuzzy
+msgid "Author"
+msgstr "Avtorji"
#: editor/editor_plugin_settings.cpp
-#, fuzzy
-msgid "Edit:"
-msgstr "Uredi"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Mera:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Okvirni ÄŒas (sek)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "PovpreÄni ÄŒas (sek)"
#: editor/editor_profiler.cpp
@@ -3387,6 +3510,16 @@ msgid "Self"
msgstr "Samo"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Okvir #:"
@@ -3430,12 +3563,6 @@ msgstr "Neveljavna Pot"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3453,41 +3580,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "Zaženi Skripto"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3518,6 +3610,48 @@ msgstr "Novo ime:"
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Pretvori V..."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Extend Script"
+msgstr "Zaženi Skripto"
+
#: editor/editor_run_native.cpp
#, fuzzy
msgid ""
@@ -3553,7 +3687,7 @@ msgid "Did you forget the '_run' method?"
msgstr "Ali si pozabil metodo '_run' ?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3573,115 +3707,70 @@ msgid "Import From Node:"
msgstr "Uvozi iz Gradnika:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "Ponovno Prenesi"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Odstrani"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(NameÅ¡Äeno)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Prenesi"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(ManjkajoÄe)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Trenutno)"
+msgid "There are no mirrors available."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Pridobivanje virov, poÄakajte..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "ŽeliÅ¡ odstraniti predlogo razliÄice '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Ne morem odpreti zip izvozne predloge."
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Neveljaven format version.txt znotraj predloge."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Datoteke version.txt ni v predlogi."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Napaka pri ustvarjanju poti za predloge:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Razširjanje Izvoznih Predlog"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Uvažanje:"
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr ""
+msgid "Error requesting URL:"
+msgstr "Napaka pri zahtevi URL-ja: "
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Povezovanje z Virom..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Za to razliÄico ni mogoÄe najti linkov za prenos. Neposredni prenos je na "
-"voljo samo za uradne izdaje."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Ne morem razrešiti imena gostitelja:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Ni mogoÄe razreÅ¡iti."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "NemogoÄe se je povezati z gostiteljem:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "NemogoÄe se je povezati."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Gostitelj se ne odziva:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Ni odgovora."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+#, fuzzy
+msgid "Request failed."
msgstr "Zahteva Ni Uspela."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Preusmeritev Zanke."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Zahteva ni uspela, preveÄ preusmeritev"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Spodletelo:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Zahteva Ni Uspela."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Prenos je DokonÄan."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3695,13 +3784,24 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error requesting URL:"
-msgstr "Napaka pri zahtevi URL-ja: "
+msgid "Error getting the list of mirrors."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Povezovanje z Virom..."
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Za to razliÄico ni mogoÄe najti linkov za prenos. Neposredni prenos je na "
+"voljo samo za uradne izdaje."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3747,47 +3847,139 @@ msgstr "Napaka Pri Usklanjevanju SSH"
#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Ne morem odpreti zip izvozne predloge."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Neveljaven format version.txt znotraj predloge."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Datoteke version.txt ni v predlogi."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Napaka pri ustvarjanju poti za predloge:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Razširjanje Izvoznih Predlog"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Uvažanje:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "ŽeliÅ¡ odstraniti predlogo razliÄice '%s'?"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Uncompressing Android Build Sources"
msgstr "Razširjenje Dodatkov"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Izvozni Upravitelj Predlog"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Trenutna RazliÄica:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "NameÅ¡Äene RazliÄice:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Odpri v Datoteki"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Odstrani"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+#, fuzzy
+msgid "Download from:"
+msgstr "Napaka Pri Prenosu"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Namesti Iz Datoteke"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Odstrani Predlogo"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Uvozi Predloge iz ZIP Datoteke"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "PrekliÄi"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "Izberi datoteko predloge"
+msgid "Cancel the download of the templates."
+msgstr "Ne morem odpreti zip izvozne predloge."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
-msgstr "Upravljaj Izvozne Predloge"
+msgid "Other Installed Versions:"
+msgstr "NameÅ¡Äene RazliÄice:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Izvozni Upravitelj Predlog"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Odstrani"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Prenesi Predloge"
+#, fuzzy
+msgid "Select Template File"
+msgstr "Izberi datoteko predloge"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Izberi vire s seznama: "
+msgid "Godot Export Templates"
+msgstr "Upravljaj Izvozne Predloge"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -3923,32 +4115,62 @@ msgstr "Hitro Odpri Skripto..."
msgid "New Resource..."
msgstr "Shrani Vire Kot..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Expand All"
msgstr "Razširi vse"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Collapse All"
msgstr "SkrÄi vse"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Podvoji..."
+#, fuzzy
+msgid "Sort files"
+msgstr "IÅ¡Äi Razrede"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Move to Trash"
-msgstr "Premakni SamodejnoNalaganje"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Podvoji..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Preimenuj..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "Prejšnji zavihek"
@@ -4039,10 +4261,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "PrekliÄi"
-
#: editor/find_in_files.cpp
#, fuzzy
msgid "Find: "
@@ -4284,26 +4502,44 @@ msgstr "Napaka pri nalaganju vira."
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Expand All Properties"
-msgstr "Razširi vse lastnosti"
+msgid "Copy Properties"
+msgstr "Lastnosti"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Collapse All Properties"
-msgstr "SkrÄi vse lastnosti"
+msgid "Paste Properties"
+msgstr "Lastnosti"
+
+#: editor/inspector_dock.cpp
+msgid "Make Sub-Resources Unique"
+msgstr "Naredi Pod-Vire Samostojne"
+
+#: editor/inspector_dock.cpp
+msgid "Create a new resource in memory and edit it."
+msgstr "Ustvari nov vir v pomnilniku in ga uredi."
+
+#: editor/inspector_dock.cpp
+msgid "Load an existing resource from disk and edit it."
+msgstr "Naloži obstojeÄi vir iz spomina in ga uredi."
+
+#: editor/inspector_dock.cpp
+msgid "Save the currently edited resource."
+msgstr "Shrani trenutno urejani vir."
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Save As..."
msgstr "Shrani Kot..."
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Kopiraj Parametre"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Ni na poti virov."
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Edit Resource Clipboard"
+msgid "Edit Resource from Clipboard"
msgstr "NAPAKA: Ni animacije virov na odložiÅ¡Äu!"
#: editor/inspector_dock.cpp
@@ -4311,30 +4547,11 @@ msgid "Copy Resource"
msgstr "Kopiraj Vir"
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+#, fuzzy
+msgid "Make Resource Built-In"
msgstr "Naredi Vgrajeno"
#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Naredi Pod-Vire Samostojne"
-
-#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Odpri v PomoÄi"
-
-#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Ustvari nov vir v pomnilniku in ga uredi."
-
-#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Naloži obstojeÄi vir iz spomina in ga uredi."
-
-#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Shrani trenutno urejani vir."
-
-#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
msgstr "Pojdi na prejšnji urejani objekt v zgodovini."
@@ -4347,8 +4564,14 @@ msgid "History of recently edited objects."
msgstr "Zgodovina nedavno urejanih objektov."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Lastnosti objekta."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Odpri Nedavne"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "Odpri Nedavne"
#: editor/inspector_dock.cpp
#, fuzzy
@@ -4356,6 +4579,11 @@ msgid "Filter properties"
msgstr "Lastnosti objekta."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Lastnosti objekta."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Spremembe se lahko izgubijo!"
@@ -4387,6 +4615,15 @@ msgstr "VtiÄniki"
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Avtor:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "RazliÄica:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4615,7 +4852,7 @@ msgstr "Zmešaj:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr "Spremebe v Shader"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4848,6 +5085,11 @@ msgid "Animation"
msgstr "Animacija"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "Prehodi"
@@ -5199,10 +5441,18 @@ msgid "View Files"
msgstr "Ogled datotek"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Prenesi"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Napaka pri povezavi, poskusi znova."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "NemogoÄe se je povezati."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "NemogoÄe se je povezati z gostiteljem:"
@@ -5211,17 +5461,20 @@ msgid "No response from host:"
msgstr "Gostitelj se ne odziva:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Ni odgovora."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Ne morem razrešiti imena gostitelja:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Zahteva ni uspela, povratna koda:"
+msgid "Can't resolve."
+msgstr "Ni mogoÄe razreÅ¡iti."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed."
-msgstr "Zahteva Ni Uspela."
+msgid "Request failed, return code:"
+msgstr "Zahteva ni uspela, povratna koda:"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
@@ -5252,6 +5505,10 @@ msgid "Timeout."
msgstr "ÄŒas"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Spodletelo:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Slab prenos hash kode, predvidevamo, da je bila datoteka spremenjena."
@@ -5361,7 +5618,11 @@ msgid "All"
msgstr "Vse"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5408,6 +5669,10 @@ msgstr "Naloži"
msgid "Assets ZIP File"
msgstr "Dodatki v ZIP Datoteki"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
#, fuzzy
msgid ""
@@ -5419,9 +5684,10 @@ msgstr ""
"shranitev iz lastnosti ZapeÄene Svetlobne karte."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Brez modelov za peko. Poskrbi, da vsebujejo kanal UV2 in da je vkljuÄena "
"oznaka 'ZapeÄi Svetlobo'."
@@ -5684,15 +5950,16 @@ msgstr "Spremeni SidriÅ¡Äa"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5753,6 +6020,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
@@ -5765,22 +6033,32 @@ msgid "Select Mode"
msgstr "Izberi NaÄin"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Povleci: Vrtenje"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Odstrani izbrano sled."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Drag: Premakni"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Odstrani izbrano sled."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Pritisni 'v' za Spremembo ToÄke in 'Shift+v' za Vleko ToÄke (med "
-"premikanjem)."
+"Ob kliku prikaži seznam vseh objektov na tem mestu\n"
+"(isto kot Alt+RMB v naÄinu izbire)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+RMB: Izbira globine"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -6033,6 +6311,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Dodaj vozliÅ¡Äe"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Vstavi KljuÄ Tukaj"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -6046,6 +6334,52 @@ msgid "Pan View"
msgstr "Pogled"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Oddalji"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Oddalji"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Oddalji"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Oddalji"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Oddalji"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Oddalji"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -6296,6 +6630,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Ustvari Nov %s"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "Ustvari Nov %s"
@@ -6330,7 +6669,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6391,13 +6730,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Ustvarite Poligon"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Ustvarite Poligon"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6452,7 +6804,6 @@ msgid "Mesh Library"
msgstr "Knjižnica Modelov..."
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6726,7 +7077,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -7050,6 +7402,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Premakni Bezierjevo toÄko"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Ustavi ToÄko"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7270,7 +7640,7 @@ msgstr "Zaženi"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Iskanje"
@@ -7302,6 +7672,11 @@ msgid "Debug with External Editor"
msgstr "Odpri naslednji Urejevalnik"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Spletna Dokumentacija"
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation."
msgstr "Odpri Nedavne"
@@ -7433,8 +7808,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -7467,10 +7842,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7636,6 +8007,28 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "NiÄ"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "NaÄin Vrtenja"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Prestavi ZaskoÄenje:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Prilagodi Velikost:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7656,39 +8049,48 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Spremebe v Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Spremebe v Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Spremebe v Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Klici"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "Lastnosti"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7846,6 +8248,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Preklopi na Najljubše"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7861,6 +8268,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Pretvori V..."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7875,7 +8287,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr "Pripni na mrežo"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7883,16 +8295,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Povlecite: Zavrtite\n"
-"Alt+Drag: Premaknite\n"
-"Alt+RMB: Izbira globine"
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Use Local Space"
msgstr "Lokalno prostorski naÄin (%s)"
@@ -7902,6 +8304,10 @@ msgid "Use Snap"
msgstr "Uporabi Pripenjanje"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr ""
@@ -7996,6 +8402,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Settings..."
@@ -8307,11 +8717,6 @@ msgid "Snap Mode:"
msgstr "NaÄin Postavljanja:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "NiÄ"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -8332,172 +8737,593 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "OÅ¡tevilÄenja:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
-msgstr "Odstrani Vse Stvari"
+msgid "Icons"
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Odstrani Vse"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "ÄŒlani"
+msgid "No colors found."
+msgstr "Ni Zadetka!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstante"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Konstanta"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "Ni Zadetka!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "No icons found."
+msgstr "Ni Zadetka!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Ni Zadetka!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Elementi GUI Teme"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Toggle Button"
-msgstr "Preklop funkcije Samodejno Predvajanje"
+msgid "Updating the editor"
+msgstr "Zaprem urejevalnik?"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "OnemogoÄen"
+msgid "Finalizing"
+msgstr "Analiziranje"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtri..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "OnemogoÄen"
+msgid "Select all visible color items."
+msgstr "Izberite Mapo za Skeniranje"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "OnemogoÄen"
+msgid "Collapse types."
+msgstr "SkrÄi vse"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+#, fuzzy
+msgid "Expand types."
+msgstr "Razširi vse"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Izberi datoteko predloge"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Odklopi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Editable Item"
+msgid "Import Selected"
+msgstr "Uvozi Prizor"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Odstrani Vse Stvari"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Preimenuj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Odstrani Vse Stvari"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Odstrani Vse Stvari"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Odstrani Vse Stvari"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Odstrani Vse Stvari"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Priljubljene:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konstanta"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Dodaj toÄko"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Dodaj Vnos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
msgstr "Uredi Spremenljivko"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Odstrani Vse Stvari"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Preimenuj Funkcijo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Preimenuj Funkcijo"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Odstrani Vse Stvari"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Neveljavna datoteka, ker ni postavitve zvoÄnega vodila."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Upravljaj Izvozne Predloge"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Uredi Spremenljivko"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Osnovni Tip:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Osnovni Tip:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Dodaj Vnos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Uredi Spremenljivko"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Odstrani Vse Stvari"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Odstrani Vse Stvari"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Odstrani Vse Stvari"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Elementi GUI Teme"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Ime Gradnika:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Uvozi Kot:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Prevzeto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "ÄŒlani"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Iskanje Nadomestnih Virov:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "ÄŒlani"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Animacija Preimenuj sled"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Preimenuj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+#, fuzzy
+msgid "Add Type"
+msgstr "PoiÅ¡Äi tip vozliÅ¡Äa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "Odpri v Datoteki"
+msgid "Node Types:"
+msgstr "PoiÅ¡Äi tip vozliÅ¡Äa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Naložite Prevzeto"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "ÄŒlani"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Upravljaj Izvozne Predloge"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Predogled"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Predogled"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Povrni Prizor"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Toggle Button"
+msgstr "Preklop funkcije Samodejno Predvajanje"
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "OnemogoÄen"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "OnemogoÄen"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "OnemogoÄen"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Editable Item"
+msgstr "Uredi Spremenljivko"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Neveljavna datoteka, ker ni postavitve zvoÄnega vodila."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8683,6 +9509,10 @@ msgid "Priority"
msgstr "Izvozi Projekt"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid "Z Index"
msgstr "NaÄin PloÅ¡Äe"
@@ -9049,11 +9879,6 @@ msgid "Commit Changes"
msgstr "Usklajuj Spremembe Skript"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9904,7 +10729,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "Uredi Filtre"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -10024,7 +10849,7 @@ msgstr "Zaženi Skripto"
#: editor/project_export.cpp
#, fuzzy
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr "Izvozi Projekt"
#: editor/project_export.cpp
@@ -10032,7 +10857,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -10040,11 +10865,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -10123,7 +10948,8 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Neveljavno Ime Projekta."
#: editor/project_manager.cpp
@@ -10157,6 +10983,20 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Error opening package file, not in ZIP format."
+msgstr "Napaka pri odpiranju datoteke paketa, ker ni v formatu zip."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Package installed successfully!"
+msgstr "Paket je UspeÅ¡no NameÅ¡Äen!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Preimenuj Projekt"
@@ -10308,16 +11148,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Izberite napravo s seznama"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Izberite napravo s seznama"
#: editor/project_manager.cpp
msgid ""
@@ -10344,7 +11182,7 @@ msgstr "Upravljalnik Projekta"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Projekt"
#: editor/project_manager.cpp
@@ -10357,10 +11195,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Izvozi Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Preimenuj Projekt"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Preglej"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projekt"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Izberite Mapo za Skeniranje"
@@ -10370,18 +11223,41 @@ msgstr "Nov Projekt"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Izvozi Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Preimenuj Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Odstrani toÄko"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Predloge"
+msgid "About"
+msgstr "O Programu"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Odpri Knjižnico Dodatkov"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Odstrani Vse"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -10395,8 +11271,13 @@ msgstr ""
"Želite raziskovati uradne primere projektov v Asset Library?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Lastnosti objekta."
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10406,6 +11287,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10449,6 +11334,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10588,19 +11477,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Prehod"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10880,6 +11770,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -11051,11 +11945,29 @@ msgid "Delete node \"%s\"?"
msgstr "Izberi Gradnik"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -11116,6 +12028,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -11163,11 +12079,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "Odpri Nedavne"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11465,6 +12376,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "Razred:"
@@ -11543,6 +12460,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11836,6 +12757,16 @@ msgstr "Neveljaven primer slovarja (neveljavni podrazredi)"
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Izvozi Knjižnico Modelov"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Izvozi"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11879,6 +12810,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "GridMap Izbriši Izbor"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -12137,6 +13073,16 @@ msgstr "Dodaj Vnos"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "Spremeni Tip %s"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Spremeni Ime Animacije:"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr ""
"Neveljavno ime. Ne sme se prekrivati z obstojeÄim vgrajenim imenom tipa."
@@ -12252,6 +13198,11 @@ msgid "Add Preload Node"
msgstr "Dodaj prednaloženo vozliÅ¡Äe"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Dodaj vozliÅ¡Äe"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Dodaj Gradnik(e) iz Drevesa"
@@ -12491,10 +13442,6 @@ msgstr "Odstrani Gradnik VizualnaSkripta"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12524,6 +13471,40 @@ msgid "Select device from the list"
msgstr "Izberite napravo s seznama"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Izvozi"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Odstrani"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Pridobivanje virov, poÄakajte..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Nemorem zaÄeti podprocesa!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Izvajanje Skripte Po Meri..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Mape ni mogoÄe ustvariti."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12621,6 +13602,47 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Pregledovanje Datotek,\n"
+"Prosimo, PoÄakajte..."
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Nastavitve ZaskoÄenja"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Izvozi"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12633,6 +13655,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12647,6 +13673,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12666,11 +13705,53 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animacijska Orodja"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Povezovanje..."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Filtriraj datoteke..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Nemorem zaÄeti podprocesa!"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
msgstr "Ime ni pravilen identifikator:"
@@ -12701,10 +13782,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr ""
@@ -12713,15 +13790,48 @@ msgid "Invalid export template:"
msgstr "Neveljavna izvozna predloga:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Mape ni mogoÄe ustvariti."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "Mape ni mogoÄe ustvariti."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Mape ni mogoÄe ustvariti."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Napaka pri shranjevanju PloÅ¡ÄnegaNiza!"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Ime ni pravilen identifikator:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -13095,6 +14205,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -13164,12 +14281,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -13222,6 +14391,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "Animacijska Orodja"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -13381,21 +14554,140 @@ msgid "Invalid comparison function for that type."
msgstr "Neveljaven vir za shader."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Konstante ni možno spreminjati."
+#, fuzzy
+#~ msgid "Package Contents:"
+#~ msgstr "Vsebina:"
+
+#~ msgid "Singleton"
+#~ msgstr "Posameznik"
+
+#, fuzzy
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Zamenjaj Vse"
+
+#, fuzzy
+#~ msgid "Enabled Properties:"
+#~ msgstr "Lastnosti"
+
+#, fuzzy
+#~ msgid "Class Options"
+#~ msgstr "Opis"
+
+#, fuzzy
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Napaka pri nalaganju vira."
+
+#~ msgid "Q&A"
+#~ msgstr "V&O"
+
+#~ msgid "Status:"
+#~ msgstr "Stanje:"
+
+#, fuzzy
+#~ msgid "Edit:"
+#~ msgstr "Uredi"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "Ponovno Prenesi"
+
+#~ msgid "(Installed)"
+#~ msgstr "(NameÅ¡Äeno)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(ManjkajoÄe)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Zahteva Ni Uspela."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Preusmeritev Zanke."
+
+#~ msgid "Download Complete."
+#~ msgstr "Prenos je DokonÄan."
+
+#~ msgid "Remove Template"
+#~ msgstr "Odstrani Predlogo"
+
+#~ msgid "Download Templates"
+#~ msgstr "Prenesi Predloge"
+
+#, fuzzy
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Izberi vire s seznama: "
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Premakni SamodejnoNalaganje"
+
+#, fuzzy
+#~ msgid "Expand All Properties"
+#~ msgstr "Razširi vse lastnosti"
+
+#~ msgid "Copy Params"
+#~ msgstr "Kopiraj Parametre"
+
+#~ msgid "Open in Help"
+#~ msgstr "Odpri v PomoÄi"
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Povleci: Vrtenje"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Pritisni 'v' za Spremembo ToÄke in 'Shift+v' za Vleko ToÄke (med "
+#~ "premikanjem)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+RMB: Izbira globine"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Povlecite: Zavrtite\n"
+#~ "Alt+Drag: Premaknite\n"
+#~ "Alt+RMB: Izbira globine"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "Odpri v Datoteki"
+
+#~ msgid "Templates"
+#~ msgstr "Predloge"
+
#~ msgid "No"
#~ msgstr "Ne"
@@ -13454,18 +14746,12 @@ msgstr "Konstante ni možno spreminjati."
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "Trenutna scena ni bila shranjena, shranite jo pred zagonom."
-#~ msgid "Not in resource path."
-#~ msgstr "Ni na poti virov."
-
#~ msgid "Revert"
#~ msgstr "Povrni"
#~ msgid "This action cannot be undone. Revert anyway?"
#~ msgstr "Tega dejanja ni mogoÄe razveljaviti. Vseeno povrni?"
-#~ msgid "Revert Scene"
-#~ msgstr "Povrni Prizor"
-
#~ msgid "Issue Tracker"
#~ msgstr "Sledilnik Napak"
@@ -13509,9 +14795,6 @@ msgstr "Konstante ni možno spreminjati."
#~ msgid "Add input +"
#~ msgstr "Dodaj Vnos"
-#~ msgid "Base Type:"
-#~ msgstr "Osnovni Tip:"
-
#~ msgid "Available Nodes:"
#~ msgstr "Na voljo Nodes:"
@@ -13527,9 +14810,6 @@ msgstr "Konstante ni možno spreminjati."
#~ msgid "Theme Properties:"
#~ msgstr "Lastnosti"
-#~ msgid "Enumerations:"
-#~ msgstr "OÅ¡tevilÄenja:"
-
#~ msgid "Constants:"
#~ msgstr "Konstante:"
@@ -13681,10 +14961,6 @@ msgstr "Konstante ni možno spreminjati."
#~ msgstr "Uredi Poligon"
#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Izberite Mapo za Skeniranje"
-
-#, fuzzy
#~ msgid "Add Node.."
#~ msgstr "Dodaj vozliÅ¡Äe"
@@ -13715,9 +14991,6 @@ msgstr "Konstante ni možno spreminjati."
#~ msgid "Public Methods:"
#~ msgstr "Javne Metode:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Elementi GUI Teme"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Elementi GUI Teme:"
@@ -13750,9 +15023,6 @@ msgstr "Konstante ni možno spreminjati."
#~ msgid "Set Transitions to:"
#~ msgstr "Nastavi prehode na:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Animacija Preimenuj sled"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Animacija Spremeni interpolacijo sledi"
@@ -13867,9 +15137,6 @@ msgstr "Konstante ni možno spreminjati."
#~ msgid "Edit Signal"
#~ msgstr "Uredi Signal"
-#~ msgid "Not found!"
-#~ msgstr "Ni Zadetka!"
-
#~ msgid "Replace By"
#~ msgstr "Zamenjaj Z"
diff --git a/editor/translations/sq.po b/editor/translations/sq.po
index 49a42b5553..f843d97c4e 100644
--- a/editor/translations/sq.po
+++ b/editor/translations/sq.po
@@ -514,7 +514,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -540,7 +541,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -561,6 +563,10 @@ msgid "Go to Previous Step"
msgstr "Shko tek Hapi i Mëparshëm"
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Përmirëso Animacionin"
@@ -577,6 +583,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -625,7 +635,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -714,12 +724,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -777,11 +789,9 @@ msgid "Add"
msgstr "Shto"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -834,6 +844,7 @@ msgstr "Lidh Sinjalin: "
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -907,7 +918,8 @@ msgid "Edit..."
msgstr "Modifiko..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Shko te Metoda"
#: editor/create_dialog.cpp
@@ -922,6 +934,14 @@ msgstr "Ndrysho"
msgid "Create New %s"
msgstr "Krijo %s të ri"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -943,8 +963,8 @@ msgstr "Kërko:"
msgid "Matches:"
msgstr "Përputhjet:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1024,8 +1044,9 @@ msgstr "Pronarët e:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "Hiq skedarët e zgjedhur nga projekti? (pa kthim pas)"
#: editor/dependency_editor.cpp
@@ -1033,8 +1054,9 @@ msgstr "Hiq skedarët e zgjedhur nga projekti? (pa kthim pas)"
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Skedarët që do të hiqen janë të kërkuara nga resurse të tjera në mënyrë që "
"ato të funksionojnë.\n"
@@ -1083,7 +1105,7 @@ msgstr "Eksploruesi I Resurseve Pa Zotërues"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1212,31 +1234,40 @@ msgstr "Komponentët"
msgid "Licenses"
msgstr "Liçensat"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Error opening package file, not in ZIP format."
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "Gabim në hapjen e skedarit paketë, nuk është në formatin zip."
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr "Autoload '%s' egziston!"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Duke Dekompresuar Asetet"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "And %s more files."
+msgid "(and %s more files)"
msgstr "%d skedarë më shumë"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paketa u instalua me sukses!"
#: editor/editor_asset_installer.cpp
@@ -1244,17 +1275,13 @@ msgstr "Paketa u instalua me sukses!"
msgid "Success!"
msgstr "Sukses!"
-#: editor/editor_asset_installer.cpp
-#, fuzzy
-msgid "Package Contents:"
-msgstr "Instaluesi Paketave"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Instalo"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Instaluesi Paketave"
#: editor/editor_audio_buses.cpp
@@ -1318,8 +1345,9 @@ msgid "Bypass"
msgstr "Tejkalo"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "Përshkrimi i Klasës"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1399,7 +1427,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1492,6 +1520,15 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Skedari nuk egziston."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Shto Autoload"
@@ -1507,16 +1544,16 @@ msgid "Node Name:"
msgstr "Emri i Nyjes:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Emri"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Vetmitar"
+msgid "Global Variable"
+msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Ngjit Parametrat"
@@ -1532,7 +1569,7 @@ msgstr "Duke ruajtur ndryshimet lokale..."
msgid "Updating scene..."
msgstr "Duke përditësuar skenën..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[bosh]"
@@ -1697,9 +1734,49 @@ msgid "Import Dock"
msgstr "Importo"
#: editor/editor_feature_profile.cpp
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Zëvendëso të gjitha (pa kthim pas)"
+msgid "(current)"
+msgstr "(Aktual)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1735,15 +1812,16 @@ msgstr "Hap Editorin tjetër"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr "Vetitë:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr ""
+#, fuzzy
+msgid "Main Features:"
+msgstr "Menaxho Shabllonet e Eksportit"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1762,8 +1840,9 @@ msgid "Error saving profile to path: '%s'."
msgstr "Gabim gjatë ruajtjes së TileSet-it!"
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Ngarko të Parazgjedhur"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1772,17 +1851,26 @@ msgstr "Versioni Aktual:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Make Current"
-msgstr "(Aktual)"
+msgid "Create Profile"
+msgstr "Fshi Pikat."
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr ""
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Fshi një Pllakë"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "Vetitë:"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Make Current"
+msgstr "(Aktual)"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importo"
@@ -1792,22 +1880,21 @@ msgstr "Eksporto"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Available Profiles:"
-msgstr "Vetitë:"
+msgid "Configure Selected Profile:"
+msgstr "Versioni Aktual:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
-msgstr "Përshkrimi i Klasës"
+msgid "Extra Options:"
+msgstr "Përshkrimi i Klasës:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "Erase Profile"
-msgstr "Fshi Pikat."
+msgid "New profile name:"
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1834,7 +1921,8 @@ msgid "Select Current Folder"
msgstr "Zgjidh Folderin Aktual"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Skedari Egziston, Mbishkruaj?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1888,9 +1976,10 @@ msgid "Open a File or Directory"
msgstr "Hap një Skedar ose Direktori"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Ruaj"
@@ -1975,8 +2064,7 @@ msgid "Directories & Files:"
msgstr "Direktorit & Skedarët:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Shikim paraprak:"
@@ -2051,7 +2139,7 @@ msgstr "Vetitë e Temës"
msgid "Enumerations"
msgstr "Enumeracionet"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstantet"
@@ -2145,7 +2233,7 @@ msgstr "Metodat"
msgid "Signal"
msgstr "Sinjalet"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2163,9 +2251,10 @@ msgstr "Vetitë e Temës"
msgid "Property:"
msgstr "Vetitë:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Vendos"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2180,7 +2269,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2245,7 +2334,8 @@ msgid "Imported resources can't be saved."
msgstr "Resurset e importuara nuk mund të ruhen."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Në rregull"
@@ -2466,18 +2556,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Ruaji ndryshimet në '%s' para se ta mbyllësh?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "U ruajtën resurset e modifikuara të %s."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Një nyje rrënjë është e kërkuar para se të ruash skenën."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Ruaje Skenën Si..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Ky veprim nuk mund të kryhet pa një skenë."
@@ -2677,7 +2772,7 @@ msgstr "Fshi Faqosjen"
msgid "Default"
msgstr "E Parazgjedhur"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Shfaqe në 'FileSystem'"
@@ -2865,6 +2960,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Eksploruesi I Resurseve Pa Zotërues"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Versioni Aktual:"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Dil të Lista Projekteve"
@@ -3026,14 +3126,14 @@ msgstr "Menaxho Shabllonet e Eksportit"
msgid "Help"
msgstr "Ndihmë"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Dokumentimi Online"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Hap të Fundit"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Pyetje&Përgjigje"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3041,6 +3141,10 @@ msgid "Report a Bug"
msgstr "Ri-importo"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -3049,7 +3153,8 @@ msgid "Community"
msgstr "Komuniteti"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Rreth"
#: editor/editor_node.cpp
@@ -3151,6 +3256,15 @@ msgid "Manage Templates"
msgstr "Menaxho Shabllonet e Eksportit"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Instalo Nga Skedari"
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3178,7 +3292,7 @@ msgstr "Importo Shabllonet Nga Skedari ZIP"
msgid "Template Package"
msgstr "Menaxheri i Shablloneve të Eksportimit"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Libraria e Eksportit"
@@ -3219,6 +3333,11 @@ msgid "Select"
msgstr "Zgjidh"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Zgjidh Folderin Aktual"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Hap Editorin 2D"
@@ -3250,6 +3369,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Duke Krijuar Shikimin Paraprak të Mesh-ave"
@@ -3275,33 +3398,34 @@ msgstr "Shtojcat e Instaluara:"
msgid "Update"
msgstr "Përditëso"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Versioni:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Autori:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Statusi:"
+#, fuzzy
+msgid "Author"
+msgstr "Autorët"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Modifiko:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Përmasa:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Koha e Hapit (sek)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Koha Mesatare (sek)"
#: editor/editor_profiler.cpp
@@ -3321,6 +3445,16 @@ msgid "Self"
msgstr "Vetja"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Nr i Hapit:"
@@ -3363,14 +3497,6 @@ msgstr "RID i pavlefshëm"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Resursi i zgjedhur (%s) nuk përputhet me ndonjë tip të pritur për këtë veti "
-"(%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3395,40 +3521,6 @@ msgid "Pick a Viewport"
msgstr "Zgjidh një 'Viewport'"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Shkrim i Ri"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "%s i Ri"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Bëje Unik"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Ngjit"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Konverto në %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Nyja e zgjedhur nuk është një 'Viewport'!"
@@ -3457,6 +3549,49 @@ msgstr "Vlerë e Re:"
msgid "Add Key/Value Pair"
msgstr "Shto Palë Çelës/Vlerë"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Resursi i zgjedhur (%s) nuk përputhet me ndonjë tip të pritur për këtë veti "
+"(%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Bëje Unik"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Ngjit"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Konverto në %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "%s i Ri"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Shkrim i Ri"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr ""
+
#: editor/editor_run_native.cpp
#, fuzzy
msgid ""
@@ -3492,7 +3627,7 @@ msgid "Did you forget the '_run' method?"
msgstr "A mos harrove metodën '_run'?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3512,114 +3647,68 @@ msgid "Import From Node:"
msgstr "Importo nga Nyja:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "Ri-Shkarko"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Çinstalo"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(E Instaluar)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Shkarko"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Mungon)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Aktual)"
+msgid "There are no mirrors available."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Duke marrë pasqyrat, ju lutem prisni..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Hiq shabllonin me version '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Nuk mund të hapi zip-in e shablloneve të eksportimit."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "version.txt është format i pasaktë brenda shablloneve: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Nuk u gjet version.txt brenda shablloneve."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Gabim gjatë krijimit të rrugës për shabllonet:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Duke Nxjerrë Shabllonet e Eksportit"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Duke Importuar:"
-
-#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
+#, fuzzy
+msgid "Error requesting URL:"
+msgstr "Gabim duke kërkuar url: "
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Nuk u gjet linku për shkarkimin e këtij versioni. Shkarkimi direkt është i "
-"disponueshëm vetëm për lëshimet zyrtare."
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Duke u Lidhur te Pasqyra..."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Nuk mund të zgjidhte."
+msgid "Can't resolve the requested address."
+msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+#, fuzzy
+msgid "Can't connect to the mirror."
msgstr "Nuk mund të lidhet."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+#, fuzzy
+msgid "No response from the mirror."
msgstr "Nuk u përgjigj."
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Request failed."
msgstr "Kërkimi Dështoi."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Ridrejto Ciklin."
+msgid "Request ended up in a redirect loop."
+msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Dështoi:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Kërkimi Dështoi."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Shkarkimi u Plotësua."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3636,13 +3725,24 @@ msgstr ""
"gjenden në '%s'."
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error requesting URL:"
-msgstr "Gabim duke kërkuar url: "
+msgid "Error getting the list of mirrors."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Duke u Lidhur te Pasqyra..."
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Nuk u gjet linku për shkarkimin e këtij versioni. Shkarkimi direkt është i "
+"disponueshëm vetëm për lëshimet zyrtare."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3688,46 +3788,139 @@ msgstr "Gabim në 'SSL Handshake'"
#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Nuk mund të hapi zip-in e shablloneve të eksportimit."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "version.txt është format i pasaktë brenda shablloneve: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Nuk u gjet version.txt brenda shablloneve."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Gabim gjatë krijimit të rrugës për shabllonet:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Duke Nxjerrë Shabllonet e Eksportit"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Duke Importuar:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Hiq shabllonin me version '%s'?"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Uncompressing Android Build Sources"
msgstr "Duke Dekompresuar Asetet"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Menaxheri i Shablloneve të Eksportimit"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versioni Aktual:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Versionet e Instaluar:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+#, fuzzy
+msgid "Open Folder"
+msgstr "Folderi Tjetër"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Çinstalo"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Shkarko"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Instalo Nga Skedari"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Hiq Shabllonin"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importo Shabllonet Nga Skedari ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Anullo"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "Zgjidh skedarin e shabllonit"
+msgid "Cancel the download of the templates."
+msgstr "Nuk mund të hapi zip-in e shablloneve të eksportimit."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
-msgstr "Menaxho Shabllonet e Eksportit"
+msgid "Other Installed Versions:"
+msgstr "Versionet e Instaluar:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Menaxheri i Shablloneve të Eksportimit"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Çinstalo"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Shkarko Shabllonet"
+#, fuzzy
+msgid "Select Template File"
+msgstr "Zgjidh skedarin e shabllonit"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Zgjidh pasqyrën nga lista: (Shift+Kliko: Për ta hapur në shfletues)"
+#, fuzzy
+msgid "Godot Export Templates"
+msgstr "Menaxho Shabllonet e Eksportit"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3861,30 +4054,60 @@ msgstr "Shkrim i Ri..."
msgid "New Resource..."
msgstr "Resurs i Ri..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Zgjero të Gjitha"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Mbyll të Gjitha"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Dyfisho..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Kërko skedarët"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Move to Trash"
-msgstr "Lëviz Autoload-in"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Dyfisho..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Riemërto..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "Folderi i Mëparshëm"
@@ -3970,10 +4193,6 @@ msgstr "Gjej..."
msgid "Replace..."
msgstr "Zëvendëso..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Anullo"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Gjej: "
@@ -4212,53 +4431,55 @@ msgid "Failed to load resource."
msgstr "Dështoi të ngarkojë resursin."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Zgjero Të Gjitha Vetitë"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Vetitë"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Zvogëlo Të Gjitha Vetitë"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Ruaje Si…"
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Vetitë"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Kopjo Parametrat"
+msgid "Make Sub-Resources Unique"
+msgstr "Bëj Sub-Resurset Unik"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Modifiko Resursin 'Clipboard'"
+msgid "Create a new resource in memory and edit it."
+msgstr "Krijo një resurs të ri në memorje dhe modifikoje atë."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Kopjo Resursin"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Ngarko një resurs egzistues nga disku dhe modifikoje atë."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Bëje 'Built-In'"
+msgid "Save the currently edited resource."
+msgstr "Ruaje resursin aktual të modifikuar."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Bëj Sub-Resurset Unik"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Ruaje Si…"
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Hap në Ndihmë"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Jo në rrugën e resurseve."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Krijo një resurs të ri në memorje dhe modifikoje atë."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Modifiko Resursin 'Clipboard'"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Ngarko një resurs egzistues nga disku dhe modifikoje atë."
+msgid "Copy Resource"
+msgstr "Kopjo Resursin"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Ruaje resursin aktual të modifikuar."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Bëje 'Built-In'"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4273,14 +4494,25 @@ msgid "History of recently edited objects."
msgstr "Historia e objekteve të modifikuara së fundmi."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Vetitë e objekteve."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Hap të Fundit"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "Hap të Fundit"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Filtro vetitë."
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Vetitë e objekteve."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Ndryshimet mund të humbasin!"
@@ -4309,6 +4541,15 @@ msgstr "Emri i Shtojcës:"
msgid "Subfolder:"
msgstr "Subfolderi:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Autori:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versioni:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Gjuha:"
@@ -4509,7 +4750,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4726,6 +4967,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -5063,10 +5309,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Shkarko"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Nuk mund të lidhet."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -5075,17 +5329,20 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Nuk u përgjigj."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
+msgid "Can't resolve."
+msgstr "Nuk mund të zgjidhte."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed."
-msgstr "Kërkimi Dështoi."
+msgid "Request failed, return code:"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
@@ -5116,6 +5373,10 @@ msgid "Timeout."
msgstr "Koha"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Dështoi:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5219,7 +5480,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5265,6 +5530,10 @@ msgstr "Ngarko…"
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5273,8 +5542,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5513,15 +5782,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5579,6 +5849,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5590,19 +5861,26 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Nyja e zgjedhur nuk është një 'Viewport'!"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5837,6 +6115,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Vendos Çelësin Këtu"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5850,6 +6137,46 @@ msgid "Pan View"
msgstr "Zgjidh një 'Viewport'"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -6096,6 +6423,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -6129,7 +6460,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6190,13 +6521,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Krijo një Poligon"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Krijo një Poligon"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6251,7 +6595,6 @@ msgid "Mesh Library"
msgstr "LibrariaMesh..."
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6524,7 +6867,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6830,6 +7174,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Fut një Pikë"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Fut një Pikë"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7038,7 +7400,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Kërko"
@@ -7069,6 +7431,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Dokumentimi Online"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -7195,8 +7562,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -7229,10 +7596,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7389,6 +7752,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7409,40 +7791,48 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Size"
+msgid "Size:"
msgstr "Madhësia: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Ndrysho"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Ndrysho"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Thërritjet"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "Vetitë:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7599,6 +7989,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Ndrysho të Preferuarat"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7614,6 +8009,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Konverto në %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7627,26 +8027,24 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
-msgstr ""
+#, fuzzy
+msgid "Snap Nodes to Floor"
+msgstr "Zgjidh Nyjet Për ti Importuar"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7743,6 +8141,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Settings..."
@@ -8045,11 +8447,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -8070,169 +8467,577 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Enumeracionet:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstantet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Konstantet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No fonts found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "No styleboxes found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Toggle Button"
-msgstr "Ndrysho Mënyrën"
+msgid "Importing Theme Items"
+msgstr "Duke (Ri)Importuar Asetet"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Dil nga editori?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Duke Analizuar"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filtrat:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Çaktivizo Rrotulluesin e Përditësimit"
+msgid "Collapse types."
+msgstr "Mbyll të Gjitha"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+#, fuzzy
+msgid "Expand types."
+msgstr "Zgjero të Gjitha"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Zgjidh skedarin e shabllonit"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Shkëputi të Gjitha"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+#, fuzzy
+msgid "Import Selected"
+msgstr "Importo Skenën"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Hiq Autoload-in"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Hiq Artikullin"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Hiq Autoload-in"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Hiq Artikullin"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Hiq Artikullin"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Hiq Autoload-in"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Shto te të preferuarat"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konstantet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Shto Pikë në Animacion"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Shto Pikë në Animacion"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Hiq Artikullin"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Hiq Artikullin"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Hiq Artikullin"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Dështoi të ngarkojë resursin."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Menaxho Shabllonet e Eksportit"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Modifiko:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Add Item:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Add StyleBox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
+msgid "Remove Items:"
+msgstr "Hiq Artikullin"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Hiq Artikullin"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Hiq Artikullin"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Emri i Nyjes:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importo Si:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "E Parazgjedhur"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Editor"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Kërko Resursin Zëvendësues:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Mbishkruaj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Emri i Nyjes:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Ngarko të Parazgjedhur"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Mbishkruaj"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
msgstr " Skedarët"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Menaxho Shabllonet e Eksportit"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Shikim paraprak:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "E Parazgjedhur"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Rikthe Skenën"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Toggle Button"
+msgstr "Ndrysho Mënyrën"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Çaktivizo Rrotulluesin e Përditësimit"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -8403,6 +9208,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8734,11 +9543,6 @@ msgid "Commit Changes"
msgstr "Sinkronizo Ndryshimet e Shkrimit"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9571,8 +10375,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "Vetitë:"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9686,7 +10491,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9694,7 +10499,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9702,11 +10507,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9782,8 +10587,9 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
-msgstr ""
+#, fuzzy
+msgid "Invalid project name."
+msgstr "Emri i grupit i pasakt."
#: editor/project_manager.cpp
msgid "Couldn't create folder."
@@ -9816,6 +10622,19 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Error opening package file, not in ZIP format."
+msgstr "Gabim në hapjen e skedarit paketë, nuk është në formatin zip."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Paketa u instalua me sukses!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9965,16 +10784,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Zgjidh paisjen nga lista"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Zgjidh paisjen nga lista"
#: editor/project_manager.cpp
msgid ""
@@ -10001,7 +10818,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Projekti"
#: editor/project_manager.cpp
@@ -10014,10 +10831,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Eksporto Projektin"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Projekti"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projekti"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -10027,18 +10859,41 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Eksporto Projektin"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Hiq Artikullin"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Fshi një Pllakë"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr ""
+msgid "About"
+msgstr "Rreth"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Hap Editorin e Aseteve"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -10049,8 +10904,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtro vetitë."
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10060,6 +10920,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10102,6 +10966,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10241,19 +11109,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Shto Animacion"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10524,6 +11393,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10693,11 +11566,29 @@ msgid "Delete node \"%s\"?"
msgstr "Fshi Nyjen"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10754,6 +11645,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10801,11 +11696,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "Hap të Fundit"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11092,6 +11982,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "Klasa:"
@@ -11169,6 +12065,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11456,6 +12356,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Eksporto Librarinë Mesh"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Eksporto"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11498,6 +12408,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Fshi të Selektuarat"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11747,6 +12662,16 @@ msgstr "Shto te të preferuarat"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "Ndrysho Tipin e %s"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Ndrysho Vlerën e Fjalorit"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr "Emër i palejuar. Nuk duhet të përplaset me emrin e një tipi 'buit-in'."
@@ -11861,6 +12786,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Dyfisho Nyjet"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -12091,10 +13021,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12124,6 +13050,40 @@ msgid "Select device from the list"
msgstr "Zgjidh paisjen nga lista"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Eksporto"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Çinstalo"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Duke marrë pasqyrat, ju lutem prisni..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Nuk mund të fillojë subprocess-in!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Duke Ekzekutuar Shkrimin..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Nuk mund të krijoj folderin."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12220,6 +13180,46 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Duke Skanuar Skedarët,\n"
+"Ju Lutem Prisini..."
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Duke u lidhur..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12232,6 +13232,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12246,6 +13250,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12265,11 +13282,53 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Instaluesi Paketave"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Duke u lidhur..."
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Filtro Skedarët..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Nuk mund të fillojë subprocess-in!"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12298,10 +13357,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr ""
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr ""
@@ -12310,15 +13365,47 @@ msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Nuk mund të krijoj folderin."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "Nuk mund të krijoj folderin."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Nuk mund të krijoj folderin."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Gabim gjatë ruajtjes së TileSet-it!"
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12670,6 +13757,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12739,12 +13833,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12793,6 +13939,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12940,21 +14090,111 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Singleton"
+#~ msgstr "Vetmitar"
+
+#, fuzzy
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Zëvendëso të gjitha (pa kthim pas)"
+
+#, fuzzy
+#~ msgid "Enabled Properties:"
+#~ msgstr "Vetitë:"
+
+#~ msgid "Set"
+#~ msgstr "Vendos"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "U ruajtën resurset e modifikuara të %s."
+
+#~ msgid "Q&A"
+#~ msgstr "Pyetje&Përgjigje"
+
+#~ msgid "Status:"
+#~ msgstr "Statusi:"
+
+#~ msgid "Edit:"
+#~ msgstr "Modifiko:"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "Ri-Shkarko"
+
+#~ msgid "(Installed)"
+#~ msgstr "(E Instaluar)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Mungon)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Kërkimi Dështoi."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Ridrejto Ciklin."
+
+#~ msgid "Download Complete."
+#~ msgstr "Shkarkimi u Plotësua."
+
+#~ msgid "Remove Template"
+#~ msgstr "Hiq Shabllonin"
+
+#~ msgid "Download Templates"
+#~ msgstr "Shkarko Shabllonet"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Zgjidh pasqyrën nga lista: (Shift+Kliko: Për ta hapur në shfletues)"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Lëviz Autoload-in"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Zgjero Të Gjitha Vetitë"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Zvogëlo Të Gjitha Vetitë"
+
+#~ msgid "Copy Params"
+#~ msgstr "Kopjo Parametrat"
+
+#~ msgid "Open in Help"
+#~ msgstr "Hap në Ndihmë"
+
+#, fuzzy
+#~ msgid "Size"
+#~ msgstr "Madhësia: "
+
#~ msgid "Clipboard is empty"
#~ msgstr "Clipboard-i është bosh"
@@ -13002,18 +14242,12 @@ msgstr ""
#~ "Skena aktuale nuk është ruajtur më parë, ju lutem ruajeni para se të "
#~ "filloni."
-#~ msgid "Not in resource path."
-#~ msgstr "Jo në rrugën e resurseve."
-
#~ msgid "Revert"
#~ msgstr "Rikthe"
#~ msgid "This action cannot be undone. Revert anyway?"
#~ msgstr "Ky veprim nuk mund të çbëhet. Rikthe gjithsesi?"
-#~ msgid "Revert Scene"
-#~ msgstr "Rikthe Skenën"
-
#~ msgid "Issue Tracker"
#~ msgstr "Gjurmuesi i Problemeve"
@@ -13042,18 +14276,12 @@ msgstr ""
#~ msgid "Pause the scene"
#~ msgstr "Pusho skenën"
-#~ msgid "Properties:"
-#~ msgstr "Vetitë:"
-
#~ msgid "Methods:"
#~ msgstr "Metodat:"
#~ msgid "Theme Properties:"
#~ msgstr "Vetitë e Temës:"
-#~ msgid "Enumerations:"
-#~ msgstr "Enumeracionet:"
-
#~ msgid "Constants:"
#~ msgstr "Konstantet:"
@@ -13084,9 +14312,6 @@ msgstr ""
#~ msgid "Previous Folder"
#~ msgstr "Folderi i Mëparshëm"
-#~ msgid "Next Folder"
-#~ msgstr "Folderi Tjetër"
-
#, fuzzy
#~ msgid "Open in an external image editor."
#~ msgstr "Hap Editorin tjetër"
diff --git a/editor/translations/sr_Cyrl.po b/editor/translations/sr_Cyrl.po
index 53fb04b3e4..f95781bd70 100644
--- a/editor/translations/sr_Cyrl.po
+++ b/editor/translations/sr_Cyrl.po
@@ -592,7 +592,8 @@ msgstr "Секунди"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -620,7 +621,8 @@ msgstr "Увећај одабрано"
msgid "Scale From Cursor"
msgstr "Увећај од курÑора"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Дуплирај одабрано"
@@ -644,6 +646,11 @@ msgid "Go to Previous Step"
msgstr "Идите на претходни корак"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "РеÑетуј увеличање"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Оптимизуј анимацију"
@@ -662,6 +669,11 @@ msgid "Use Bezier Curves"
msgstr "КориÑти Безиер Криве"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Ðалепи параметре"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Оптимизатор анимација"
@@ -711,7 +723,7 @@ msgid "Select Tracks to Copy"
msgstr "ПоÑтави прелаз на:"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -805,12 +817,14 @@ msgid "Toggle Scripts Panel"
msgstr "Прикажи панел Ñкриптица"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Увеличај"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -876,11 +890,9 @@ msgid "Add"
msgstr "Додај"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -935,6 +947,7 @@ msgstr "Везујући Ñигнал:"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -1015,7 +1028,7 @@ msgstr "Уреди"
#: editor/connections_dialog.cpp
#, fuzzy
-msgid "Go To Method"
+msgid "Go to Method"
msgstr "Методе"
#: editor/create_dialog.cpp
@@ -1033,6 +1046,15 @@ msgstr "Промени"
msgid "Create New %s"
msgstr "Ðаправи нов"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "No results for \"%s\"."
+msgstr "Ðема резултата за \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -1054,8 +1076,8 @@ msgstr "Тражи:"
msgid "Matches:"
msgstr "Подударање:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1135,8 +1157,9 @@ msgstr "ВлаÑници:"
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "Обриши одабране датотеке из пројекта? (ÐЕМРОПОЗИВÐЊÐ)"
#: editor/dependency_editor.cpp
@@ -1144,8 +1167,9 @@ msgstr "Обриши одабране датотеке из пројекта? (Ð
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Жељене датотеке за бриÑање Ñу потребне за рад других реÑурÑа.\n"
"Ипак их обриши? (ÐЕМРОПОЗИВÐЊÐ)"
@@ -1195,7 +1219,7 @@ msgstr "Преглед повезаних реÑурÑа"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1325,33 +1349,41 @@ msgstr "Компоненте"
msgid "Licenses"
msgstr "ЛиценÑе"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Error opening package file, not in ZIP format."
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr "Грешка при отварању датотеку пакета. Датотека није zip формата."
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr "ÐутоматÑко учитавање '%s' већ поÑтоји!"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "ДекомпреÑија ÑредÑтва"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "The following files failed extraction from package:"
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "ÐеуÑпело извлачење Ñледећих фалова из паковања:"
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "And %s more files."
+msgid "(and %s more files)"
msgstr "још %d датотека/е"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "Package installed successfully!"
+msgid "Asset \"%s\" installed successfully!"
msgstr "Пакет је инÑталиран уÑпешно!"
#: editor/editor_asset_installer.cpp
@@ -1359,17 +1391,13 @@ msgstr "Пакет је инÑталиран уÑпешно!"
msgid "Success!"
msgstr "УÑпех!"
-#: editor/editor_asset_installer.cpp
-#, fuzzy
-msgid "Package Contents:"
-msgstr "Садржај:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "ИнÑталирај"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "ИнÑталер пакета"
#: editor/editor_audio_buses.cpp
@@ -1435,7 +1463,8 @@ msgid "Bypass"
msgstr "Заобиђи"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "ПоÑтавке баÑа"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1519,7 +1548,7 @@ msgstr "Додај баÑ"
msgid "Add a new Audio Bus to this layout."
msgstr "Сачувај раÑпоред звучног баÑа као..."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1610,6 +1639,15 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Датотека не поÑтоји."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Додај аутоматÑко учитавање"
@@ -1625,16 +1663,17 @@ msgid "Node Name:"
msgstr "Име чвора:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Име"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Синглетон"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Преименуј Променљиву"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Ðалепи параметре"
@@ -1650,7 +1689,7 @@ msgstr "Чувам локалне промене..."
msgid "Updating scene..."
msgstr "Ðжурирам Ñцену..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
#, fuzzy
msgid "[empty]"
msgstr "(празно)"
@@ -1826,9 +1865,49 @@ msgid "Import Dock"
msgstr "Увоз"
#: editor/editor_feature_profile.cpp
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Замени Ñве"
+msgid "(current)"
+msgstr "(Тренутно)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1867,17 +1946,17 @@ msgstr "Отвори Ñледећи уредник"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
-msgstr "ОÑобине"
+msgid "Class Properties:"
+msgstr "Умањи Ñве"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr "КарактериÑтике"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr "Потражи клаÑе"
#: editor/editor_feature_profile.cpp
@@ -1899,8 +1978,8 @@ msgstr "Грешка при чувању TileSet!"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Unset"
-msgstr "Поништи"
+msgid "Reset to Default"
+msgstr "Учитај уобичајено"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1909,17 +1988,26 @@ msgstr "Тренутна верзија:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Make Current"
-msgstr "Тренутно:"
+msgid "Create Profile"
+msgstr "Обриши TileMap"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Ðова"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Обриши шаблон"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "ОÑобине"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Make Current"
+msgstr "Тренутно:"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Увоз"
@@ -1929,23 +2017,22 @@ msgstr "Извоз"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Available Profiles:"
-msgstr "ОÑобине"
+msgid "Configure Selected Profile:"
+msgstr "Тренутна верзија:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
-msgstr "ОпиÑ"
+msgid "Extra Options:"
+msgstr "ОпиÑ:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "New profile name:"
-msgstr "Ðово име:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase Profile"
-msgstr "Обриши TileMap"
+msgid "New profile name:"
+msgstr "Ðово име:"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1972,7 +2059,8 @@ msgid "Select Current Folder"
msgstr "Одабери тренутни директоријум"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Датотека поÑтоји, препиши?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -2029,9 +2117,10 @@ msgid "Open a File or Directory"
msgstr "Отвори датотеку или директоријум"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Сачувај"
@@ -2120,8 +2209,7 @@ msgid "Directories & Files:"
msgstr "Директоријуми и датотеке:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Преглед:"
@@ -2200,7 +2288,7 @@ msgstr "ОÑобине"
msgid "Enumerations"
msgstr "Енумерације"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "КонÑтанте"
@@ -2304,7 +2392,7 @@ msgstr "Методе"
msgid "Signal"
msgstr "Сигнали"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "КонÑтантан"
@@ -2323,10 +2411,11 @@ msgstr "ОÑобине"
msgid "Property:"
msgstr "ОÑобина:"
-#: editor/editor_inspector.cpp
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
#, fuzzy
-msgid "Set"
-msgstr "ПоÑтави"
+msgid "Set %s"
+msgstr "ПоÑтави %s"
#: editor/editor_inspector.cpp
#, fuzzy
@@ -2343,7 +2432,7 @@ msgid "Copy Selection"
msgstr "Обриши одабрано"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2418,7 +2507,8 @@ msgid "Imported resources can't be saved."
msgstr "Увезени реÑурÑи не могу бити упамћени."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
#, fuzzy
msgid "OK"
msgstr "ОК"
@@ -2641,20 +2731,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Сачувај промене '%s' пре излаÑка?"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Saved %s modified resource(s)."
-msgstr "Грешка при учитавању реÑурÑа."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "За памћене Ñцене неопходан је корени нод."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Сачувај Ñцену као..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Ова операција Ñе не може обавити без Ñцене."
@@ -2850,7 +2943,7 @@ msgstr "Обирши раÑпоред"
msgid "Default"
msgstr "Уобичајено"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
#, fuzzy
msgid "Show in FileSystem"
@@ -3047,6 +3140,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Преглед повезаних реÑурÑа"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Преимениуј Пројекат"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Изађи у лиÑту пројекта"
@@ -3213,14 +3311,14 @@ msgstr "Управљај извозним шаблонима"
msgid "Help"
msgstr "Помоћ"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Онлајн документација"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Отвори Документацију"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Питања и одговори"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3228,6 +3326,10 @@ msgid "Report a Bug"
msgstr "Поново увези"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
#, fuzzy
msgid "Send Docs Feedback"
msgstr "Пошаљи Подржку о Документацији"
@@ -3237,7 +3339,8 @@ msgid "Community"
msgstr "Заједница"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "О"
#: editor/editor_node.cpp
@@ -3345,6 +3448,16 @@ msgstr "Управљај извозним шаблонима"
#: editor/editor_node.cpp
#, fuzzy
+msgid "Install from file"
+msgstr "ИнÑталирај Ñа датотеком"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Одабери изворну мрежу:"
+
+#: editor/editor_node.cpp
+#, fuzzy
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3384,7 +3497,7 @@ msgstr "Увези шаблоне из ZIP датотеке"
msgid "Template Package"
msgstr "Менаџер извозних шаблона"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Извези библиотеку"
@@ -3428,6 +3541,11 @@ msgid "Select"
msgstr "Одабери"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Одабери тренутни директоријум"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Отвори 2Д уредник"
@@ -3461,6 +3579,11 @@ msgstr "Упозорење!"
msgid "No sub-resources found."
msgstr "Извор површине није наведен."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Извор површине није наведен."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Ðаправи приказ мрежа"
@@ -3487,34 +3610,35 @@ msgstr "ИнÑталирани прикључци:"
msgid "Update"
msgstr "Ðжурирај"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Верзија:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Ðутор:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "СтатуÑ:"
+#, fuzzy
+msgid "Author"
+msgstr "Ðутори"
#: editor/editor_plugin_settings.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
#, fuzzy
-msgid "Edit:"
-msgstr "Уреди"
+msgid "Status"
+msgstr "СтатуÑ"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Мера:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Време Ñлике (Ñек.)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Средње време (Ñек.)"
#: editor/editor_profiler.cpp
@@ -3534,6 +3658,16 @@ msgid "Self"
msgstr "Сам"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Слика број:"
@@ -3584,15 +3718,6 @@ msgstr "Ðеважеће име."
#: editor/editor_properties.cpp
#, fuzzy
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Одабрани реÑÑƒÑ€Ñ (%s) не одговара ни једној очекиваној врÑти за ову оÑобину "
-"(%s)."
-
-#: editor/editor_properties.cpp
-#, fuzzy
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3619,45 +3744,6 @@ msgstr "Одабери Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
#, fuzzy
-msgid "New Script"
-msgstr "Ðова Скрипта"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "Ðадовежи Скрипту"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "New %s"
-msgstr "Ðов %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "Make Unique"
-msgstr "Учини ЈединÑтвеним"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Ðалепи"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "Convert To %s"
-msgstr "Пребаци у %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
msgid "Selected node is not a Viewport!"
msgstr "Одабрани нод није Viewport!"
@@ -3691,6 +3777,54 @@ msgstr "Ðова вредноÑÑ‚:"
msgid "Add Key/Value Pair"
msgstr "Додај Кључ/ВредноÑÑ‚ пар"
+#: editor/editor_resource_picker.cpp
+#, fuzzy
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Одабрани реÑÑƒÑ€Ñ (%s) не одговара ни једној очекиваној врÑти за ову оÑобину "
+"(%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Make Unique"
+msgstr "Учини ЈединÑтвеним"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Ðалепи"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Пребаци у %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "New %s"
+msgstr "Ðов %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "New Script"
+msgstr "Ðова Скрипта"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Extend Script"
+msgstr "Ðадовежи Скрипту"
+
#: editor/editor_run_native.cpp
#, fuzzy
msgid ""
@@ -3727,7 +3861,7 @@ msgstr "Да ли Ñте заборавили методу „_run“?"
#: editor/editor_spin_slider.cpp
#, fuzzy
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr "Држи Ctrl да иÑпуÑтиш Узимача. Држи Shift да иÑпуÑтиш општи потпиÑ."
#: editor/editor_sub_scene.cpp
@@ -3748,121 +3882,71 @@ msgid "Import From Node:"
msgstr "Увоз преко чвора:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "Поновно преузимање"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "ДеинÑталирај"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(инÑталирано)"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Преучми"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Official export templates aren't available for development builds."
-msgstr "Званични извозни нацрти ниÑу доÑтупни за развојну градњу."
-
-#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(ÐедоÑтаје)"
-
-#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Тренутно)"
+msgid "There are no mirrors available."
+msgstr "Ðема '%s' фајла."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Прихватам одредишта, молим Ñачекајте..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Обриши шаблон верзије „%s“?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Ðе могу отворити ZIP датотеку Ñа извозним шаблонима."
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Ðеважећи формат датотеке version.txt унутар шаблона."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "„version.txt“ није пронаћен у шаблону."
+msgid "Error requesting URL:"
+msgstr "Грешка при захтеву url: "
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error creating path for templates:"
-msgstr "Грешка при прављењу пута за шаблоне:\n"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Отпакивање извозних шаблона"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Увожење:"
+msgid "Connecting to the mirror..."
+msgstr "Повезивање Ñа одредиштем..."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error getting the list of mirrors."
-msgstr "Грешка у добијању лиÑте огледала."
+msgid "Can't resolve the requested address."
+msgstr "Ðе могу решити име хоÑта:"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Грешка при JSON обради Ñа лиÑте огледала. Молимо пријавите овај проблем!"
-
-#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Ðема линкова за Ñкидање ове верзије. Директно Ñкидање ја дозвољено Ñамо за "
-"званичне верзије."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Ðе могу решити."
+msgid "Can't connect to the mirror."
+msgstr "Ðе могу Ñе повезати Ñа хоÑтом:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Ðе могу Ñе повезати."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Ðема одговора од хоÑта:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Ðема одговора."
-
-#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Захтев није уÑпешан."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Петља преуÑмерења."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Захтев неуÑпео, превише преуÑмерења"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "ÐеуÑпех:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Захтев није уÑпешан."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Преузимање уÑпешно."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3880,12 +3964,26 @@ msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error requesting URL:"
-msgstr "Грешка при захтеву url: "
+msgid "Error getting the list of mirrors."
+msgstr "Грешка у добијању лиÑте огледала."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Повезивање Ñа одредиштем..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Грешка при JSON обради Ñа лиÑте огледала. Молимо пријавите овај проблем!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Ðема линкова за Ñкидање ове верзије. Директно Ñкидање ја дозвољено Ñамо за "
+"званичне верзије."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3932,47 +4030,142 @@ msgstr "Грешка SSL руковања"
#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Ðе могу отворити ZIP датотеку Ñа извозним шаблонима."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Ðеважећи формат датотеке version.txt унутар шаблона."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "„version.txt“ није пронаћен у шаблону."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Грешка при прављењу пута за шаблоне:\n"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Отпакивање извозних шаблона"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Увожење:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Обриши шаблон верзије „%s“?"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Uncompressing Android Build Sources"
msgstr "ДекомпреÑија ÑредÑтва"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Менаџер извозних шаблона"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Тренутна верзија:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "ИнÑталиране верзије:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Отвори датотеку"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall"
+msgstr "ДеинÑталирај"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Иницијална вредноÑÑ‚ бројача"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Грешка при преузимању"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Official export templates aren't available for development builds."
+msgstr "Званични извозни нацрти ниÑу доÑтупни за развојну градњу."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "ИнÑталирај Ñа датотеком"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Обриши шаблон"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Увези шаблоне из ZIP датотеке"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+#, fuzzy
+msgid "Cancel"
+msgstr "Откажи"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "Одабери шаблонÑку датотеку"
+msgid "Cancel the download of the templates."
+msgstr "Ðе могу отворити ZIP датотеку Ñа извозним шаблонима."
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
-msgstr "Управљај извозним шаблонима"
+msgid "Other Installed Versions:"
+msgstr "ИнÑталиране верзије:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Менаџер извозних шаблона"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "ДеинÑталирај"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Преузми шаблоне"
+#, fuzzy
+msgid "Select Template File"
+msgstr "Одабери шаблонÑку датотеку"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Одабери одредиште Ñа лиÑте: "
+msgid "Godot Export Templates"
+msgstr "Управљај извозним шаблонима"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -4117,13 +4310,15 @@ msgstr "Брзо отварање Ñкриптице..."
msgid "New Resource..."
msgstr "Сачувај реÑÑƒÑ€Ñ ÐºÐ°Ð¾..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Expand All"
msgstr "Прошири Ñве"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Collapse All"
@@ -4131,19 +4326,49 @@ msgstr "Умањи Ñве"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Duplicate..."
-msgstr "Дуплирај"
+msgid "Sort files"
+msgstr "Потражи клаÑе"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "Помери аутоматÑко учитавање"
+msgid "Sort by Last Modified"
+msgstr "Задњи Измењен"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Задњи Измењен"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Duplicate..."
+msgstr "Дуплирај"
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Преименуј..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "Претодни Ñпрат"
@@ -4238,11 +4463,6 @@ msgstr "Тражи..."
msgid "Replace..."
msgstr "Замени..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-#, fuzzy
-msgid "Cancel"
-msgstr "Откажи"
-
#: editor/find_in_files.cpp
#, fuzzy
msgid "Find: "
@@ -4493,26 +4713,44 @@ msgstr "Грешка при учитавању реÑурÑа."
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Expand All Properties"
-msgstr "Прошири Ñве"
+msgid "Copy Properties"
+msgstr "ОÑобине"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Collapse All Properties"
-msgstr "Умањи Ñве"
+msgid "Paste Properties"
+msgstr "ОÑобине"
+
+#: editor/inspector_dock.cpp
+msgid "Make Sub-Resources Unique"
+msgstr "Ðаправи под-реÑÑƒÑ€Ñ Ñ˜ÐµÐ´Ð¸Ð½Ñтвеним"
+
+#: editor/inspector_dock.cpp
+msgid "Create a new resource in memory and edit it."
+msgstr "Ðаправи нови реÑÑƒÑ€Ñ Ñƒ меморији и измени га."
+
+#: editor/inspector_dock.cpp
+msgid "Load an existing resource from disk and edit it."
+msgstr "Учитај поÑтојећи реÑÑƒÑ€Ñ Ñа диÑка и измени га."
+
+#: editor/inspector_dock.cpp
+msgid "Save the currently edited resource."
+msgstr "Сачувај тренутно измењени реÑурÑ."
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Save As..."
msgstr "Сачувај као..."
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Копирај параметре"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Ðије на пут реÑурÑа."
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Edit Resource Clipboard"
+msgid "Edit Resource from Clipboard"
msgstr "Ðема реÑурÑа за копирање!"
#: editor/inspector_dock.cpp
@@ -4520,30 +4758,11 @@ msgid "Copy Resource"
msgstr "Копирај реÑурÑе"
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+#, fuzzy
+msgid "Make Resource Built-In"
msgstr "Ðаправи уграђеним"
#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Ðаправи под-реÑÑƒÑ€Ñ Ñ˜ÐµÐ´Ð¸Ð½Ñтвеним"
-
-#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Отвори у прозору за помоћ"
-
-#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Ðаправи нови реÑÑƒÑ€Ñ Ñƒ меморији и измени га."
-
-#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Учитај поÑтојећи реÑÑƒÑ€Ñ Ñа диÑка и измени га."
-
-#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Сачувај тренутно измењени реÑурÑ."
-
-#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
msgstr "Иди на претходно измењен објекат у иÑторијату."
@@ -4556,8 +4775,14 @@ msgid "History of recently edited objects."
msgstr "ИÑторијат недавно измењених објеката."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "ПоÑтавке објекта."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Отвори Документацију"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "Отвори Документацију"
#: editor/inspector_dock.cpp
#, fuzzy
@@ -4565,6 +4790,11 @@ msgid "Filter properties"
msgstr "ПречиÑти оÑобине"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "ПоÑтавке објекта."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Промене Ñе могу изгубити!"
@@ -4597,6 +4827,15 @@ msgstr "Име Прикључка :"
msgid "Subfolder:"
msgstr "ПодФолдер:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Ðутор:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Верзија:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
#, fuzzy
msgid "Language:"
@@ -4843,7 +5082,7 @@ msgstr "Мешавина:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr "Промене материјала"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -5085,6 +5324,11 @@ msgid "Animation"
msgstr "Ðнимација"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Ðова"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "Прелази"
@@ -5454,10 +5698,18 @@ msgid "View Files"
msgstr "Погледај датотеке"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Преучми"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Повезивање неуÑпешно, молимо Ð²Ð°Ñ Ð´Ð° покушате поново."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Ðе могу Ñе повезати."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Ðе могу Ñе повезати Ñа хоÑтом:"
@@ -5466,17 +5718,20 @@ msgid "No response from host:"
msgstr "Ðема одговора од хоÑта:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Ðема одговора."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Ðе могу решити име хоÑта:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Захтев неуÑпешан, повратни код:"
+msgid "Can't resolve."
+msgstr "Ðе могу решити."
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed."
-msgstr "Захтев није уÑпешан."
+msgid "Request failed, return code:"
+msgstr "Захтев неуÑпешан, повратни код:"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
@@ -5508,6 +5763,10 @@ msgid "Timeout."
msgstr "Време:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "ÐеуÑпех:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Лоша хеш Ñума, претпоÑтавља Ñе да је датотека измењена."
@@ -5621,9 +5880,12 @@ msgid "All"
msgstr "Ñви"
#: editor/plugins/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "No results for \"%s\"."
-msgstr "Ðема резултата за \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
@@ -5669,6 +5931,10 @@ msgstr "Учитај..."
msgid "Assets ZIP File"
msgstr "РеÑурÑи ЗИП датотека"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
#, fuzzy
msgid ""
@@ -5682,8 +5948,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Ðема мрежа за печење. Провери да ли Ñадрже UV2 канал и да је опција 'Изпеци "
"Светла' укључена."
@@ -5963,21 +6229,19 @@ msgstr "Промени Ñидра"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Препиши Играчку Камеру\n"
"Препиши играчку камеру Ñа камером уређивача viewport-а."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Препиши Играчку Камеру\n"
-"ИнÑтанца игре није покренута."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -6038,6 +6302,7 @@ msgid ""
msgstr "Упозорење: Деца наÑлеђују позицију и величину Ñамо од Ñвојих родитеља."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
@@ -6050,21 +6315,32 @@ msgid "Select Mode"
msgstr "Одабери режим"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Вучење: ротација"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Обриши одабрани чвор или прелаз."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+вучење: померање"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Обриши одабрани чвор или прелаз."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"ПритиÑни „v“ за измену пивота, „Shift+v“ за вучење пивота (без померања)."
+"Прикажи лиÑту Ñвих објеката на одабраној позицију\n"
+"(иÑто као Alt+ДеÑни таÑтер миша у режиму Ñелекције)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+ДеÑни таÑтер миша: Ñелекција лиÑте дубине"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -6331,6 +6607,16 @@ msgid "Clear Pose"
msgstr "Обриши позу"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Додај Чвор"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Сцена/е ИнÑтанца"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Помножи корак мреже Ñа 2"
@@ -6344,6 +6630,52 @@ msgid "Pan View"
msgstr "Поглед позади"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Умањи"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Умањи"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Умањи"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Умањи"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Умањи"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Умањи"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Додај %s"
@@ -6610,6 +6942,11 @@ msgstr "ÐеуÑпело креирање једног конвекÑног Ñу
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Ðаправи конвекÑну облик"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "Ðаправи конвекÑну облик"
@@ -6649,7 +6986,7 @@ msgstr "Ðема мреже за проверу."
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr "Модел нема UV мапу на овом Ñлоју"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6720,6 +7057,18 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Ðаправи конвекÑног Ñударног брата"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Ðаправи конвекÑног Ñударног брата"
@@ -6727,7 +7076,8 @@ msgstr "Ðаправи конвекÑног Ñударног брата"
#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Креира Ñударни облик на бази многоугла.\n"
"Ова опција поÑтиже Ñредињи учинак између 2 горе наведене."
@@ -6796,7 +7146,6 @@ msgid "Mesh Library"
msgstr "Библиотека Мрежа..."
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Додај Ñтвар"
@@ -7078,7 +7427,8 @@ msgid "Close Curve"
msgstr "Затвори криву"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Опција"
@@ -7428,6 +7778,26 @@ msgstr "Учитај реÑурÑ"
msgid "ResourcePreloader"
msgstr "РеÑурÑ"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Обрни Хоризонтално"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Број генериÑаних тачака:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Број генериÑаних тачака:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Обрни Хоризонтално"
+
#: editor/plugins/root_motion_editor_plugin.cpp
#, fuzzy
msgid "AnimationTree has no path set to an AnimationPlayer"
@@ -7662,7 +8032,7 @@ msgstr "Покрени"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Тражи"
@@ -7694,6 +8064,11 @@ msgid "Debug with External Editor"
msgstr "Дебагуј Ñа Ñпољашњим уредником"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Онлајн документација"
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation."
msgstr "Отвори Godot документацију Ñа мреже"
@@ -7834,8 +8209,8 @@ msgstr "Иди Ðа"
msgid "Cut"
msgstr "ИÑеци"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Одабери Ñве"
@@ -7869,10 +8244,6 @@ msgid "Unfold All Lines"
msgstr "Откриј Ñве линије"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Клонирај доле"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Потпун Ñимбол"
@@ -8049,6 +8420,29 @@ msgid "View Plane Transform."
msgstr "Види транÑформацију равни."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+#, fuzzy
+msgid "None"
+msgstr "<Ðиједан>"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Режим ротације"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Померај:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Скала:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Скала: "
@@ -8070,44 +8464,53 @@ msgstr "Ðнимациони кључ убачен."
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Pitch"
+msgid "Pitch:"
msgstr "Лево-ДеÑно"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Yaw"
-msgstr "Горе-Доле"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Size"
+msgid "Size:"
msgstr "Величина:"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Ðацртани објекти"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Промене материјала"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Промене шејдера"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Промене површи"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Позиви цртања"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Тачке"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Поглед одозго."
@@ -8269,6 +8672,11 @@ msgstr "Брзина Ñлободног погледа"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Проемени Велићину Камере"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "View Rotation Locked"
msgstr "Прикажи информације"
@@ -8287,6 +8695,11 @@ msgstr ""
"Ðе може бити коришћена као поуздана оцена учинка у игри."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Пребаци у %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm дијалог"
@@ -8301,7 +8714,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr "Залепи за мрежу"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -8310,16 +8723,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Ðије пронађен чврÑÑ‚ под где ће Ñе одабир прилепити"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Превуците мишем: ротација\n"
-"Alt+превуците мишем: померај\n"
-"Alt+деÑни таÑтер миша: Ñелекција лиÑте дубине"
-
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
msgid "Use Local Space"
msgstr "Режим Ñкалирања (R)"
@@ -8329,6 +8732,10 @@ msgid "Use Snap"
msgstr "КориÑти лепљење"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Поглед одоздо"
@@ -8425,6 +8832,11 @@ msgid "View Grid"
msgstr "Прикажи мрежу"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "ПоÑтавке прозора"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Settings..."
@@ -8759,12 +9171,6 @@ msgid "Snap Mode:"
msgstr "Режим лепљења:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-#, fuzzy
-msgid "None"
-msgstr "<Ðиједан>"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Лепљење по пикÑелу"
@@ -8785,9 +9191,8 @@ msgid "Step:"
msgstr "Корак:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
-msgid "Sep.:"
-msgstr "Сеп.:"
+msgid "Separation:"
+msgstr "ОдвојеноÑÑ‚:"
#: editor/plugins/texture_region_editor_plugin.cpp
#, fuzzy
@@ -8795,176 +9200,610 @@ msgid "TextureRegion"
msgstr "Регион текÑтуре"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Додај Ñве Ñтавке"
+#, fuzzy
+msgid "Colors"
+msgstr "Боја"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Додај Ñве"
+#, fuzzy
+msgid "Fonts"
+msgstr "Фонт"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Икона"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Стил"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Извор површине није наведен."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "КонÑтанте"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Боја конÑтантна."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Ðије пронађено!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Ðије пронађено!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Извор површине није наведен."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Увези тему"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Изађи из уредника?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Ðнализирање"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Филтери..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Одабери Чвор"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Прво одабери подешавање предмета!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Прво одабери подешавање предмета!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Прво одабери подешавање предмета!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Прво одабери подешавање предмета!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Прво одабери подешавање предмета!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Умањи Ñве"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Прошири Ñве"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Одабери шаблонÑку датотеку"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Одабери тачке"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Одабери Ñве"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Увези Ñцену"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Обриши Ñве Ñтавке"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Обриши Ñве"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Обриши Ñтавку"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "Измени тему..."
+msgid "Remove All Constant Items"
+msgstr "Обриши Ñве Ñтавке"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Мени уређивања теме."
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Обриши Ñве Ñтавке"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Обриши Ñве Ñтавке"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Обриши Ñве Ñтавке"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Додај Ñтавке клаÑе"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Додај Ñтавке клаÑе"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Додај Ñтвар"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Додај Ñтвар"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Додај Ñве Ñтавке"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Обриши Ñтавке клаÑе"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Обриши Ñтавке клаÑе"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Преименуј Чвор"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Преименуј Чвор"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Обриши одабрану Ñтвар"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Датотека не Ñадржи раÑпоред звучног баÑа."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Управљај извозним шаблонима"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Измени тему..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Тип:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Тип:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Додај Ñтвар"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Додај Ñве Ñтавке"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Обриши Ñтавку"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Обриши Ñтавке клаÑе"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Ðаправи празан шаблон"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Обриши Ñтавке клаÑе"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Обриши Ñве Ñтавке"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Ставке теме графичког интерфејÑа"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Име чвора:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Увези тему"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Уобичајено"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Измени тему..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Обриши реÑурÑ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Увези тему"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Измени име анимације"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Преименуј Гомилу"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "ПрепиÑке"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Ð’Ñ€Ñта"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Додај Ñтвар"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Ð’Ñ€Ñта Чвора"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Учитај уобичајено"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Ðаправи празан шаблон за уредник"
+#, fuzzy
+msgid "Override All"
+msgstr "ПрепиÑке"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Ðаправи од тренутне теме уредника"
+#, fuzzy
+msgid "Theme:"
+msgstr "Тема"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Управљај извозним шаблонима"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Преглед"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Преглед"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Одабери изворну мрежу:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Toggle Button"
msgstr "Укљ./ИÑкљ. аутоматÑко покретање"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled Button"
msgstr "Онемогућено"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Ставка"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled Item"
msgstr "Онемогућено"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Check Item"
msgstr "Провери Предмет"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Checked Item"
msgstr "Предмет проверен"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Radio Item"
msgstr "Додај Ñтвар"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Checked Radio Item"
msgstr "CheckBox Radio1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
-msgid "Named Sep."
+msgid "Named Separator"
msgstr "Иманован Сеп."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Submenu"
msgstr "Под-мени"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Subitem 1"
msgstr "Ставка"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Subitem 2"
msgstr "Ставка"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Има"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Много"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled LineEdit"
msgstr "Онемогућено"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Tab 1"
msgstr "Tab 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Tab 2"
msgstr "Tab 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Tab 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Editable Item"
msgstr "Измени тему..."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Subtree"
msgstr "Под-Ñтабло"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Has,Many,Options"
msgstr "Има,много,неколико,опција!"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Тип податка:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Икона"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Стил"
-
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Фонт"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Боја"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "Сачувај тему"
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Датотека не Ñадржи раÑпоред звучног баÑа."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -9168,6 +10007,10 @@ msgid "Priority"
msgstr "Режим извоза:"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Икона"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
#, fuzzy
msgid "Z Index"
msgstr "Режим инÑпекције"
@@ -9566,12 +10409,6 @@ msgid "Commit Changes"
msgstr "Синхронизуј промене Ñкриптица"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-#, fuzzy
-msgid "Status"
-msgstr "СтатуÑ"
-
-#: editor/plugins/version_control_editor_plugin.cpp
#, fuzzy
msgid "View file diffs before committing them to the latest version"
msgstr "Погледај фајл разлике пре него га предаш задњој верзији."
@@ -10636,7 +11473,7 @@ msgstr "ВизуелниЦртач"
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "Уреди Визуелне ОÑобине"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -10775,7 +11612,7 @@ msgstr "Покрени Ñкриптицу"
#: editor/project_export.cpp
#, fuzzy
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr "Режим извоза:"
#: editor/project_export.cpp
@@ -10784,9 +11621,8 @@ msgid "Text"
msgstr "ТекÑÑ‚"
#: editor/project_export.cpp
-#, fuzzy
-msgid "Compiled"
-msgstr "СаÑтављено"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
#, fuzzy
@@ -10795,12 +11631,12 @@ msgstr "Шифровано (Одабери Кључ ИÑпод)"
#: editor/project_export.cpp
#, fuzzy
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Ðеважећи Кључ за Шифровање(мора бити 64 карактера дуг)"
#: editor/project_export.cpp
#, fuzzy
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Кључ Шифровања Скрипте (256-бајтова као хекÑ)"
#: editor/project_export.cpp
@@ -10887,7 +11723,7 @@ msgstr "Увезен Пројекат"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr "Ðеважеће име."
#: editor/project_manager.cpp
@@ -10931,6 +11767,21 @@ msgstr "ÐеуÑпешно креирање project.godot у путањи про
#: editor/project_manager.cpp
#, fuzzy
+msgid "Error opening package file, not in ZIP format."
+msgstr "Грешка при отварању датотеку пакета. Датотека није zip формата."
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "The following files failed extraction from package:"
+msgstr "ÐеуÑпело извлачење Ñледећих фалова из паковања:"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Package installed successfully!"
+msgstr "Пакет је инÑталиран уÑпешно!"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Rename Project"
msgstr "Преимениуј Пројекат"
@@ -11134,21 +11985,13 @@ msgstr "Да ли Ñигурно желиш да покренеш %d пројеÐ
#: editor/project_manager.cpp
#, fuzzy
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Уклони %d пројекте Ñа лиÑте?\n"
-"Садржај фолдера пројекта неће бити измењен."
+msgid "Remove %d projects from the list?"
+msgstr "Одабери уређај Ñа лиÑте"
#: editor/project_manager.cpp
#, fuzzy
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Уклони овај пројекат Ñа лиÑте?\n"
-"Садржај фолдера пројекта неће бити измењен."
+msgid "Remove this project from the list?"
+msgstr "Одабери уређај Ñа лиÑте"
#: editor/project_manager.cpp
#, fuzzy
@@ -11185,7 +12028,7 @@ msgstr "Менаџер пројекта"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Пројекти"
#: editor/project_manager.cpp
@@ -11200,11 +12043,26 @@ msgstr "Задњи Измењен"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Edit Project"
+msgstr "Извези пројекат"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Преимениуј Пројекат"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Scan"
msgstr "Претрага"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Scan Projects"
+msgstr "Пројекти"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Select a Folder to Scan"
msgstr "Одабери Фолдер за Претрагу"
@@ -11215,13 +12073,27 @@ msgstr "Ðов Порјекат"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Увезен Пројекат"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Преимениуј Пројекат"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Обриши Изгубњено"
#: editor/project_manager.cpp
+msgid "About"
+msgstr "О"
+
+#: editor/project_manager.cpp
#, fuzzy
-msgid "Templates"
-msgstr "ОбразÑи"
+msgid "Asset Library Projects"
+msgstr "Отвори библиотеку ÑредÑтва"
#: editor/project_manager.cpp
#, fuzzy
@@ -11229,6 +12101,14 @@ msgid "Restart Now"
msgstr "РеÑтартуј Сада"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Обриши Ñве"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Can't run project"
msgstr "Пројекат није могуће покренути"
@@ -11244,8 +12124,13 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Filter projects"
+msgstr "ПречиÑти оÑобине"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -11259,6 +12144,10 @@ msgid "Key "
msgstr "Кључ"
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Joy Button"
msgstr "ÐÐ¾Ñ˜Ñ Ð´ÑƒÐ³Ð¼Ð¸Ð¶"
@@ -11312,6 +12201,10 @@ msgstr "Сви Уређаји"
msgid "Device"
msgstr "Уређаји"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#, fuzzy
msgid "Press a Key..."
@@ -11488,7 +12381,7 @@ msgstr "Препиши за ОÑобину"
#: editor/project_settings_editor.cpp
#, fuzzy
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr "Додај Превод"
#: editor/project_settings_editor.cpp
@@ -11498,12 +12391,12 @@ msgstr "Обриши Превод"
#: editor/project_settings_editor.cpp
#, fuzzy
-msgid "Add Remapped Path"
-msgstr "Додај Преправљену Путању"
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "РеÑÑƒÑ€Ñ ÐŸÑ€ÐµÐ¿Ñ€Ð°Ð²ÐºÐ° Додај Преправку"
#: editor/project_settings_editor.cpp
#, fuzzy
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "РеÑÑƒÑ€Ñ ÐŸÑ€ÐµÐ¿Ñ€Ð°Ð²ÐºÐ° Додај Преправку"
#: editor/project_settings_editor.cpp
@@ -11835,6 +12728,10 @@ msgid "Post-Process"
msgstr "Ðакон-Обраде"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Стил"
+
+#: editor/rename_dialog.cpp
#, fuzzy
msgid "Keep"
msgstr "Задржи"
@@ -12041,14 +12938,30 @@ msgid "Delete node \"%s\"?"
msgstr "Обриши чвор \"%s\"?"
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Can not perform with the root node."
-msgstr "Ðемогуће извршити Ñа кореним чвором."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "This operation can't be done on instanced scenes."
-msgstr "Операција не може бити извршена на инÑтанцираној Ñцени."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
#, fuzzy
@@ -12120,6 +13033,11 @@ msgstr "Ðемогуће опериÑати на чворовима од којÐ
#: editor/scene_tree_dock.cpp
#, fuzzy
+msgid "This operation can't be done on instanced scenes."
+msgstr "Операција не може бити извршена на инÑтанцираној Ñцени."
+
+#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Attach Script"
msgstr "Припој Скрипту"
@@ -12177,11 +13095,6 @@ msgid "Load As Placeholder"
msgstr "Учитај као МеÑточувца"
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "Отвори Документацију"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -12526,6 +13439,12 @@ msgstr ""
"кориÑтећи уредник."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "Име КлаÑе:"
@@ -12610,6 +13529,10 @@ msgid "Copy Error"
msgstr "Копирај Грешку"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Video RAM"
msgstr "Видео RAM"
@@ -12964,6 +13887,16 @@ msgstr "Ðеважећа инÑтанца речника (неважеће клÐ
msgid "Object can't provide a length."
msgstr "Објекат не може Ñнабдети дужину."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Извези Mesh Library"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Извоз"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -13014,6 +13947,11 @@ msgid "GridMap Paint"
msgstr "МапаМреже Боји"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "МапаМреже ИÑпуни Одабрано"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Мапа мреже"
@@ -13302,6 +14240,16 @@ msgstr "Додај излазни порт"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "Промени Тип"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Промени улазно име"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr "Препиши поÑтојећу уграђену функцију."
@@ -13432,6 +14380,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Додај Чвор"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -13674,11 +14627,6 @@ msgstr "Потражи VisualScript"
msgid "Get %s"
msgstr "Повуци %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-#, fuzzy
-msgid "Set %s"
-msgstr "ПоÑтави %s"
-
#: platform/android/export/export.cpp
#, fuzzy
msgid "Package name is missing."
@@ -13714,6 +14662,40 @@ msgid "Select device from the list"
msgstr "Одабери уређај Ñа лиÑте"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Извоз"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "ДеинÑталирај"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Прихватам одредишта, молим Ñачекајте..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Ðе могу покренути подпроцеÑ!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Обрађивање Ñкриптице..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "ÐеуÑпех при прављењу директоријума."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -13827,6 +14809,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Скенирање датотека,\n"
+"Молим Ñачекајте..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "ÐеуÑпешно отварање нацрта за извоз:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Додавање %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Извоз"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -13839,6 +14863,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
#, fuzzy
msgid ""
"Trying to build from a custom built template, but no version info for it "
@@ -13861,6 +14889,21 @@ msgstr ""
"Молимо реинÑталирајте Android нацрт изградње из \"Пројекат\" менија."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "ÐеуÑпешна измена project.godot-а у путањи пројекта."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "ÐеуÑпело упиÑивање фајла:"
+
+#: platform/android/export/export.cpp
#, fuzzy
msgid "Building Android Project (gradle)"
msgstr "Изградња Android Пројекта (gradle)"
@@ -13884,12 +14927,55 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Ðнимација није нађена: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Прављење контура..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "ÐеуÑпешно отварање нацрта за извоз:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Додавање %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "ÐеуÑпело упиÑивање фајла:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#, fuzzy
msgid "Identifier is missing."
msgstr "Идентификатор недоÑтаје."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
#, fuzzy
msgid "The character '%s' is not allowed in Identifier."
msgstr "Карактер '%s' није дозвољен као идентификатор."
@@ -13927,11 +15013,6 @@ msgstr "Покрени извезени HTML у уобичајеном претÑ
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
-msgstr "ÐеуÑпело упиÑивање фајла:"
-
-#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not open template for export:"
msgstr "ÐеуÑпешно отварање нацрта за извоз:"
@@ -13942,18 +15023,49 @@ msgstr "Ðеважећи извозни нацрт:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "ÐеуÑпело упиÑивање фајла:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "ÐеуÑпело упиÑивање фајла:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "ÐеуÑпешно читаље произвољне HTML шкољке:"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:"
-msgstr "ÐеуÑпешно читаље фајла уводне Ñлике:"
+msgid "Could not create HTTP server directory:"
+msgstr "ÐеуÑпех при прављењу директоријума."
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Using default boot splash image."
-msgstr "Коришћење уобичајне уводне Ñлике."
+msgid "Error starting HTTP server:"
+msgstr "Грешка памћена Ñцена."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Ðеважећи идентификатор:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
#, fuzzy
@@ -14427,6 +15539,13 @@ msgstr ""
" \n"
"Као замену кориÑти ИÑпеченеСенкеМапу."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
#, fuzzy
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
@@ -14515,6 +15634,18 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid ""
@@ -14524,6 +15655,46 @@ msgstr ""
"\"ДаљинÑка Путања\" подешавање да би радило мора упирати ка важећем "
"ПроÑторном или ПроÑторно-изведеном чвору."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
#, fuzzy
msgid "This body will be ignored until you set a mesh."
@@ -14591,6 +15762,10 @@ msgstr "Ðа BlendTree чвору '%s', анимација није нађена
msgid "Animation not found: '%s'"
msgstr "Ðнимација није нађена: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
#, fuzzy
msgid "In node '%s', invalid animation: '%s'."
@@ -14790,6 +15965,27 @@ msgstr "Ðеважећа упоредна функција за зај тип"
#: servers/visual/shader_language.cpp
#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Варијације могу Ñамо бити одређене у функцији тачке."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+#, fuzzy
msgid "Assignment to function."
msgstr "Додељивање функцији."
@@ -14800,15 +15996,203 @@ msgstr "Додељивање унформи."
#: servers/visual/shader_language.cpp
#, fuzzy
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Варијације могу Ñамо бити одређене у функцији тачке."
-
-#: servers/visual/shader_language.cpp
-#, fuzzy
msgid "Constants cannot be modified."
msgstr "КонÑтанте није могуће мењати."
#, fuzzy
+#~ msgid "Package Contents:"
+#~ msgstr "Садржај:"
+
+#~ msgid "Singleton"
+#~ msgstr "Синглетон"
+
+#, fuzzy
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Замени Ñве"
+
+#, fuzzy
+#~ msgid "Enabled Properties:"
+#~ msgstr "ОÑобине"
+
+#, fuzzy
+#~ msgid "Enabled Features:"
+#~ msgstr "КарактериÑтике"
+
+#, fuzzy
+#~ msgid "Unset"
+#~ msgstr "Поништи"
+
+#, fuzzy
+#~ msgid "Class Options"
+#~ msgstr "ОпиÑ"
+
+#, fuzzy
+#~ msgid "Set"
+#~ msgstr "ПоÑтави"
+
+#, fuzzy
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Грешка при учитавању реÑурÑа."
+
+#~ msgid "Q&A"
+#~ msgstr "Питања и одговори"
+
+#~ msgid "Status:"
+#~ msgstr "СтатуÑ:"
+
+#, fuzzy
+#~ msgid "Edit:"
+#~ msgstr "Уреди"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "Поновно преузимање"
+
+#~ msgid "(Installed)"
+#~ msgstr "(инÑталирано)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(ÐедоÑтаје)"
+
+#, fuzzy
+#~ msgid "Request Failed."
+#~ msgstr "Захтев није уÑпешан."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Петља преуÑмерења."
+
+#~ msgid "Download Complete."
+#~ msgstr "Преузимање уÑпешно."
+
+#~ msgid "Remove Template"
+#~ msgstr "Обриши шаблон"
+
+#~ msgid "Download Templates"
+#~ msgstr "Преузми шаблоне"
+
+#, fuzzy
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Одабери одредиште Ñа лиÑте: "
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Помери аутоматÑко учитавање"
+
+#, fuzzy
+#~ msgid "Expand All Properties"
+#~ msgstr "Прошири Ñве"
+
+#~ msgid "Copy Params"
+#~ msgstr "Копирај параметре"
+
+#~ msgid "Open in Help"
+#~ msgstr "Отвори у прозору за помоћ"
+
+#, fuzzy
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Препиши Играчку Камеру\n"
+#~ "ИнÑтанца игре није покренута."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Вучење: ротација"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "ПритиÑни „v“ за измену пивота, „Shift+v“ за вучење пивота (без померања)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+ДеÑни таÑтер миша: Ñелекција лиÑте дубине"
+
+#~ msgid "Clone Down"
+#~ msgstr "Клонирај доле"
+
+#, fuzzy
+#~ msgid "Yaw"
+#~ msgstr "Горе-Доле"
+
+#, fuzzy
+#~ msgid "Size"
+#~ msgstr "Величина:"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Превуците мишем: ротација\n"
+#~ "Alt+превуците мишем: померај\n"
+#~ "Alt+деÑни таÑтер миша: Ñелекција лиÑте дубине"
+
+#, fuzzy
+#~ msgid "Sep.:"
+#~ msgstr "Сеп.:"
+
+#~ msgid "Add All"
+#~ msgstr "Додај Ñве"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Мени уређивања теме."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Ðаправи празан шаблон"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Ðаправи празан шаблон за уредник"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Ðаправи од тренутне теме уредника"
+
+#~ msgid "Data Type:"
+#~ msgstr "Тип податка:"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "Сачувај тему"
+
+#, fuzzy
+#~ msgid "Compiled"
+#~ msgstr "СаÑтављено"
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Уклони %d пројекте Ñа лиÑте?\n"
+#~ "Садржај фолдера пројекта неће бити измењен."
+
+#, fuzzy
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Уклони овај пројекат Ñа лиÑте?\n"
+#~ "Садржај фолдера пројекта неће бити измењен."
+
+#, fuzzy
+#~ msgid "Templates"
+#~ msgstr "ОбразÑи"
+
+#, fuzzy
+#~ msgid "Add Remapped Path"
+#~ msgstr "Додај Преправљену Путању"
+
+#, fuzzy
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Ðемогуће извршити Ñа кореним чвором."
+
+#, fuzzy
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "ÐеуÑпешно читаље фајла уводне Ñлике:"
+
+#, fuzzy
+#~ msgid "Using default boot splash image."
+#~ msgstr "Коришћење уобичајне уводне Ñлике."
+
+#, fuzzy
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "Ðнимациони плејер не може анимирати Ñамог Ñебе, Ñамо друге плејере."
@@ -14932,9 +16316,6 @@ msgstr "КонÑтанте није могуће мењати."
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "Тренутна Ñцена није Ñачувана, молим Ñачувајте је пре покретања."
-#~ msgid "Not in resource path."
-#~ msgstr "Ðије на пут реÑурÑа."
-
#~ msgid "Revert"
#~ msgstr "Врати"
@@ -15281,9 +16662,6 @@ msgstr "КонÑтанте није могуће мењати."
#~ msgid "Public Methods:"
#~ msgstr "Јавне методе:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Ставке теме графичког интерфејÑа"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Ставке теме графичког интерфејÑа:"
@@ -15405,9 +16783,6 @@ msgstr "КонÑтанте није могуће мењати."
#~ msgid "Move Anim Track Down"
#~ msgstr "Помери траку доле"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Измени име анимације"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Измени интерполацију"
@@ -15543,13 +16918,6 @@ msgstr "КонÑтанте није могуће мењати."
#~ msgid "StyleBox Preview:"
#~ msgstr "StyleBox преглед:"
-#, fuzzy
-#~ msgid "StyleBox"
-#~ msgstr "Стил"
-
-#~ msgid "Separation:"
-#~ msgstr "ОдвојеноÑÑ‚:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Уредник региона текÑтуре"
@@ -15572,9 +16940,6 @@ msgstr "КонÑтанте није могуће мењати."
#~ msgid "Can't write file."
#~ msgstr "ÐеуÑпех при запиÑивању датотеке."
-#~ msgid "Not found!"
-#~ msgstr "Ðије пронађено!"
-
#~ msgid "Replace By"
#~ msgstr "Заменити Ñа"
diff --git a/editor/translations/sr_Latn.po b/editor/translations/sr_Latn.po
index 0a90379b41..877149b6ea 100644
--- a/editor/translations/sr_Latn.po
+++ b/editor/translations/sr_Latn.po
@@ -532,7 +532,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -558,7 +559,8 @@ msgstr "Skaliraj Selekciju"
msgid "Scale From Cursor"
msgstr "Skaliraj od Kursora"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Uduplaj Selekciju"
@@ -582,6 +584,10 @@ msgid "Go to Previous Step"
msgstr "Otiđi Na Prethodni Korak"
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimizuj Animaciju"
@@ -598,6 +604,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -647,7 +657,7 @@ msgid "Select Tracks to Copy"
msgstr "Postavi tranzicije na:"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -735,12 +745,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -795,11 +807,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -849,6 +859,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -919,8 +930,9 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
-msgstr ""
+#, fuzzy
+msgid "Go to Method"
+msgstr "Otiđi Na Sljedeći Korak"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -934,6 +946,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -955,8 +975,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1029,16 +1049,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1083,7 +1105,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1204,37 +1226,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1242,7 +1268,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1306,8 +1332,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "Funkcije:"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1386,7 +1413,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1473,6 +1500,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1488,16 +1523,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1513,7 +1548,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1652,7 +1687,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1685,15 +1760,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1711,7 +1786,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1719,17 +1794,25 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Napravi"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Obriši Selekciju"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1738,19 +1821,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1774,7 +1857,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1828,9 +1911,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1913,8 +1997,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1985,7 +2068,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2072,7 +2155,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Kontanta"
@@ -2088,8 +2171,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2106,7 +2190,7 @@ msgid "Copy Selection"
msgstr "Obriši Selekciju"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2170,7 +2254,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2364,18 +2449,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2546,7 +2635,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2728,6 +2817,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2861,13 +2954,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2875,6 +2967,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2883,7 +2979,8 @@ msgid "Community"
msgstr "Zajednica"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "O nama / O Godou"
#: editor/editor_node.cpp
@@ -2981,6 +3078,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3007,7 +3112,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3048,6 +3153,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Izmjeni Krivulju ÄŒvora"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3079,6 +3189,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3103,21 +3217,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3125,11 +3236,12 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "Vreme (s): "
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3149,6 +3261,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3191,12 +3313,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3214,22 +3330,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3243,37 +3382,21 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Napravi"
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3308,7 +3431,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3328,64 +3451,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3393,7 +3522,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3403,135 +3536,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3657,22 +3821,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3680,6 +3870,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3760,10 +3954,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3986,52 +4176,50 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Animacija Uduplaj KljuÄeve"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4047,7 +4235,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4055,6 +4247,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4082,6 +4278,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4287,7 +4492,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4506,6 +4711,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "Tranzicije"
@@ -4848,10 +5058,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4860,15 +5078,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4897,6 +5119,10 @@ msgid "Timeout."
msgstr "Vreme:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4997,7 +5223,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5040,6 +5270,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5048,8 +5282,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5289,15 +5523,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5355,6 +5590,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5366,19 +5602,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Obriši Selekciju"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "IzbriÅ¡i oznaÄeni kljuÄ(eve)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Obriši Selekciju"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5613,6 +5858,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Dodaj kljuÄ ovde"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5625,6 +5879,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5870,6 +6164,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5902,7 +6200,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5963,13 +6261,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Napravi"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Napravi"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6023,7 +6334,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6297,7 +6607,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6606,6 +6917,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Pomeri Bezier TaÄke"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Napravi"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6809,7 +7138,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6840,6 +7169,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6964,8 +7298,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6998,10 +7332,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7158,6 +7488,26 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Skaliraj Selekciju"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7178,39 +7528,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Vertices:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7366,6 +7720,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7381,6 +7739,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Napravi"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7394,7 +7757,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7402,18 +7765,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7510,6 +7870,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7811,11 +8175,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7836,167 +8195,549 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Tranzicije"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Napravi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Kontanta"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No styleboxes found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Updating the editor"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Finalizing"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Filter:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select by data type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "Onemogućeno"
+msgid "Deselect All"
+msgstr "Uduplaj Selekciju"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "Onemogućeno"
+msgid "Import Selected"
+msgstr "Obriši Selekciju"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Remove All Color Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+#, fuzzy
+msgid "Rename Item"
+msgstr "Animacija Preimenuj Kanal"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Obriši Selekciju"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Obriši Selekciju"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Add Color Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Kontanta"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Optimizuj Animaciju"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Optimizuj Animaciju"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Rename Color Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Rename Font Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Onemogućeno"
+msgid "Edit Items"
+msgstr "Izmjeni Selekciju Krivulje"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Types:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Add Type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Add Item:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Add StyleBox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Obriši Selekciju"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Napravi"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Add Theme Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Old Name:"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Izmjeni Selekciju Krivulje"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Animacija Preimenuj Kanal"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Unpin this StyleBox as a main style."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Animacija Dodaj Kanal"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Animacija Dodaj Kanal"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "Onemogućeno"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "Onemogućeno"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Onemogućeno"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8171,6 +8912,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8514,11 +9259,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9350,7 +10090,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9465,7 +10205,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9473,7 +10213,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9481,11 +10221,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9558,7 +10298,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9592,6 +10332,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9736,15 +10488,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9771,7 +10519,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9783,10 +10531,23 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Izmjeni Selekciju Krivulje"
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9795,12 +10556,25 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Obriši Selekciju"
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Remove Missing"
msgstr "Obriši Selekciju"
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr "O nama / O Godou"
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9808,6 +10582,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9818,8 +10600,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9829,6 +10615,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9871,6 +10661,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10010,19 +10804,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "Tranzicije"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10292,6 +11087,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10458,11 +11257,29 @@ msgid "Delete node \"%s\"?"
msgstr "Animacija ObriÅ¡i KljuÄeve"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10519,6 +11336,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10566,10 +11387,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10843,6 +11660,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10912,6 +11735,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11196,6 +12023,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11239,6 +12074,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Sve sekcije"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11485,6 +12325,16 @@ msgid "Add Output Port"
msgstr "Obriši Selekciju"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "PoÄisti Animaciju"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "PoÄisti Animaciju"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11599,6 +12449,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Animacija Uduplaj KljuÄeve"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11827,10 +12682,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11860,6 +12711,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11956,6 +12835,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11968,6 +12883,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11982,6 +12901,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12001,11 +12933,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12034,27 +13004,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Could not create HTTP server directory:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12402,6 +13396,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12471,12 +13472,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12525,6 +13578,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12672,15 +13729,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/sv.po b/editor/translations/sv.po
index 0c5db25a9a..7433664d25 100644
--- a/editor/translations/sv.po
+++ b/editor/translations/sv.po
@@ -545,7 +545,8 @@ msgstr "Sekunder"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -571,7 +572,8 @@ msgstr "Skala urval"
msgid "Scale From Cursor"
msgstr "Skala Från Muspekare"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Fördubbla val"
@@ -592,6 +594,11 @@ msgid "Go to Previous Step"
msgstr "Gå till Föregående Steg"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Återställ Zoom"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Optimera Animation"
@@ -608,6 +615,11 @@ msgid "Use Bezier Curves"
msgstr "Använd Bezier-kurvor"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Klistra in spår"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Anim. Optimerare"
@@ -656,7 +668,7 @@ msgid "Select Tracks to Copy"
msgstr "Välj Spår att Kopiera"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -742,12 +754,14 @@ msgid "Toggle Scripts Panel"
msgstr "Växla Skriptpanel"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Zooma In"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -804,11 +818,9 @@ msgid "Add"
msgstr "Lägg till"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -861,6 +873,7 @@ msgstr "Kan ej ansluta signal"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -930,7 +943,8 @@ msgid "Edit..."
msgstr "Ändra..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "GÃ¥ Till Metod"
#: editor/create_dialog.cpp
@@ -945,6 +959,14 @@ msgstr "Ändra"
msgid "Create New %s"
msgstr "Skapa Ny %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Inga resultat för \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -966,8 +988,8 @@ msgstr "Sök:"
msgid "Matches:"
msgstr "Matchar:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1043,19 +1065,23 @@ msgid "Owners Of:"
msgstr "Ägare av:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Ta bort valda filer från projektet? (Kan ej återställas)\n"
"Du kan hitta de borttagna filerna i systemets papperskorg."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Filerna som tas bort krävs av andra resurser för att de ska fungera.\n"
"Ta bort dem ändå? (går inte ångra)\n"
@@ -1103,7 +1129,7 @@ msgstr "Föräldralös Resursutforskare"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1228,28 +1254,41 @@ msgstr "Komponenter"
msgid "Licenses"
msgstr "Licenser"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Fel vid öppning av paketfil, är inte ZIP-format."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Fel vid öppning av paketetfil, inte i zip-format."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Existerar Redan)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Dekomprimerar Tillgångar"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Följande filer misslyckades att packas upp från paketet:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "%d fler filer."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paketet installerades!"
#: editor/editor_asset_installer.cpp
@@ -1257,16 +1296,13 @@ msgstr "Paketet installerades!"
msgid "Success!"
msgstr "Klart!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Paketets Innehåll:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Installera"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Paketinstallerare"
#: editor/editor_audio_buses.cpp
@@ -1330,7 +1366,8 @@ msgid "Bypass"
msgstr "Gå förbi"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Buss-alternativ"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1410,7 +1447,7 @@ msgstr "Lägg till Buss"
msgid "Add a new Audio Bus to this layout."
msgstr "Lägg till en ny Audio-Buss för denna layout."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1497,6 +1534,15 @@ msgid "Can't add autoload:"
msgstr "Kunde inte lägga till autoladdning:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Fil existerar inte."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Lägg till AutoLoad"
@@ -1512,16 +1558,17 @@ msgid "Node Name:"
msgstr "Node Namn:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Namn"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Singleton"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Variabel"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Klistra in Params"
@@ -1537,7 +1584,7 @@ msgstr "Lagrar lokala ändringar..."
msgid "Updating scene..."
msgstr "Uppdaterar scen..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[tom]"
@@ -1694,8 +1741,49 @@ msgid "Import Dock"
msgstr "Importera"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Rensa profil ‘%s’? (Du kan inte ångra den här åtgärden )"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Nuvarande)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1729,15 +1817,18 @@ msgid "Enable Contextual Editor"
msgstr "Aktivera kontextuell redigerare"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Egenskaper:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Expandera alla"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+#, fuzzy
+msgid "Main Features:"
msgstr "Aktivera funktioner:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Aktiverade Klasser:"
#: editor/editor_feature_profile.cpp
@@ -1757,25 +1848,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Fel vid laddning av mall '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Ladda Standard"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Nuvarande Profil:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Gör till Nuvarande"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Radera punkter"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Ny"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Ta Bort Mall"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Tillgängliga Profiler:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Gör till Nuvarande"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Importera"
@@ -1784,23 +1884,23 @@ msgid "Export"
msgstr "Exportera"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Tillgängliga Profiler:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Nuvarande Profil:"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
-msgstr "Beskrivning"
+msgid "Extra Options:"
+msgstr "Beskrivning:"
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "New profile name:"
-msgstr "Nytt namn:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase Profile"
-msgstr "Radera punkter"
+msgid "New profile name:"
+msgstr "Nytt namn:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1825,7 +1925,8 @@ msgid "Select Current Folder"
msgstr "Välj Nuvarande Mapp"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Filen finns redan, skriv över?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1881,9 +1982,10 @@ msgid "Open a File or Directory"
msgstr "Öppna en Fil eller Katalog"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Spara"
@@ -1964,8 +2066,7 @@ msgid "Directories & Files:"
msgstr "Kataloger & Filer:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Förhandsvisning:"
@@ -2040,7 +2141,7 @@ msgstr "Egenskaper"
msgid "Enumerations"
msgstr "Uppräkningar"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Konstanter"
@@ -2142,7 +2243,7 @@ msgstr "Metoder"
msgid "Signal"
msgstr "Signaler"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Konstant"
@@ -2160,9 +2261,10 @@ msgstr "Egenskaper"
msgid "Property:"
msgstr "Egenskap:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Sätt"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr ""
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2178,7 +2280,7 @@ msgid "Copy Selection"
msgstr "Ta bort Urval"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2243,7 +2345,8 @@ msgid "Imported resources can't be saved."
msgstr "Importerade resurser kan inte sparas."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2469,19 +2572,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Spara ändringar i '%s' innan stängning?"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Saved %s modified resource(s)."
-msgstr "Misslyckades att ladda resurs."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "En root nod krävs för att spara scenen."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Spara Scen Som..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Åtgärden kan inte göras utan en scen."
@@ -2680,7 +2787,7 @@ msgstr "Ta bort Layout"
msgid "Default"
msgstr "Standard"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
#, fuzzy
msgid "Show in FileSystem"
@@ -2869,6 +2976,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Föräldralös Resursutforskare..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Byt namn på Projekt"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Avsluta till Projektlistan"
@@ -3004,14 +3116,14 @@ msgstr "Hantera exportmallar..."
msgid "Help"
msgstr "Hjälp"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Dokumentation Online"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Öppna Senaste"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Frågor och svar"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3019,6 +3131,10 @@ msgid "Report a Bug"
msgstr "Importera om"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Skicka Dokumentations Feedback"
@@ -3027,7 +3143,8 @@ msgid "Community"
msgstr "Gemenskap"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Om"
#: editor/editor_node.cpp
@@ -3128,6 +3245,16 @@ msgid "Manage Templates"
msgstr "Hantera Mallar"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Installera Från Fil"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Inte baserad på en resursfil"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3155,7 +3282,7 @@ msgstr "Importera Mall från ZIP fil"
msgid "Template Package"
msgstr "Mallar"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Exportera Bibliotek"
@@ -3198,6 +3325,11 @@ msgid "Select"
msgstr "Välj"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Välj Nuvarande Mapp"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Öppna 2D Redigeraren"
@@ -3229,6 +3361,11 @@ msgstr "Varning!"
msgid "No sub-resources found."
msgstr "Inga underresurser hittades."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Inga underresurser hittades."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3255,33 +3392,34 @@ msgstr "Installerade Plugins:"
msgid "Update"
msgstr "Uppdatera"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Version:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Författare:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Status:"
+#, fuzzy
+msgid "Author"
+msgstr "Författare"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Redigera:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Status"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Mät:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Bildrutetid (sek)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Genomsnittlig Tid (sek)"
#: editor/editor_profiler.cpp
@@ -3301,6 +3439,16 @@ msgid "Self"
msgstr "Själv"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Bildruta #:"
@@ -3343,12 +3491,6 @@ msgstr "Ogiltig Sökväg"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3366,41 +3508,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Nytt Skript"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "Öppna Skript"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Ny %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Gör Unik"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Klistra in"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Konvertera till %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3431,6 +3538,48 @@ msgstr "Nytt namn:"
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Gör Unik"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Klistra in"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Konvertera till %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Ny %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Nytt Skript"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Extend Script"
+msgstr "Öppna Skript"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3463,7 +3612,7 @@ msgid "Did you forget the '_run' method?"
msgstr "Glömde du '_run' metoden?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3483,114 +3632,67 @@ msgid "Import From Node:"
msgstr "Importera Från Node:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "Ladda ner"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Avinstallera"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Installerad)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Ladda ner"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Saknas)"
-
-#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Nuvarande)"
-
-#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Ta bort mallversionen '%s'?"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Det finns ingen '%s' fil."
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr ""
+#, fuzzy
+msgid "Error requesting URL:"
+msgstr "Fel vid laddning:"
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Fel vid skapande av sökväg för mallar:"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Anslut Till Node:"
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Importerar:"
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Kan inte ansluta."
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr ""
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Inget svar."
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
+msgid "Request ended up in a redirect loop."
msgstr ""
-"Ingen nedladdningslänk hittades för denna version. Direkt nedladdning finns "
-"endast tillgängligt för officiella utgåvor."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Kan inte lösa."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Kan inte ansluta."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Inget svar."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+#, fuzzy
+msgid "Request failed:"
msgstr "Förfrågning Misslyckades."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Omdirigera Loop."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Misslyckades:"
-
-#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Nedladdning Klar."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3604,15 +3706,26 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error requesting URL:"
-msgstr "Fel vid laddning:"
+msgid "Error getting the list of mirrors."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Ingen nedladdningslänk hittades för denna version. Direkt nedladdning finns "
+"endast tillgängligt för officiella utgåvor."
+
+#: editor/export_template_manager.cpp
msgid "Disconnected"
msgstr "Frånkopplad"
@@ -3658,45 +3771,135 @@ msgstr "Fel vid SSL-handskakning"
#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Hantera exportmallar..."
+
+#: editor/export_template_manager.cpp
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "No version.txt found inside the export templates file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Fel vid skapande av sökväg för mallar:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Importerar:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Ta bort mallversionen '%s'?"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Uncompressing Android Build Sources"
msgstr "Dekomprimerar Tillgångar"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr ""
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Nuvarande Version:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Installerade Versioner:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
-msgstr "Installera Från Fil"
+msgid "Export templates are installed and ready to be used."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Ta Bort Mall"
+#, fuzzy
+msgid "Open Folder"
+msgstr "Öppna en Fil"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Avinstallera"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "Välj mall-fil"
+msgid "Download from:"
+msgstr "Ladda ner"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
-msgstr "Mallar"
+msgid "Install from File"
+msgstr "Installera Från Fil"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Importera Mall från ZIP fil"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Ladda Ner Mallar"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Installerade Versioner:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Avinstallera"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Select Template File"
+msgstr "Välj mall-fil"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#, fuzzy
+msgid "Godot Export Templates"
+msgstr "Mallar"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3832,26 +4035,54 @@ msgstr "Nytt Skript..."
msgid "New Resource..."
msgstr "Spara Resurs Som..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Expand All"
msgstr "Expandera alla"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
#, fuzzy
msgid "Collapse All"
msgstr "Stäng Alla"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Duplicera..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Sök Klasser"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "Flytta Autoload"
+msgid "Sort by Last Modified"
+msgstr "Senast Ändrad"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Senast Ändrad"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Duplicera..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
@@ -3859,6 +4090,10 @@ msgid "Rename..."
msgstr "Byt namn..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "Föregående flik"
@@ -3948,10 +4183,6 @@ msgstr "Hitta..."
msgid "Replace..."
msgstr "Ersätt..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Avbryt"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Hitta: "
@@ -4189,26 +4420,44 @@ msgstr "Misslyckades att ladda resurs."
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Expand All Properties"
-msgstr "Expandera alla"
+msgid "Copy Properties"
+msgstr "Egenskaper"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Collapse All Properties"
-msgstr "Expandera alla"
+msgid "Paste Properties"
+msgstr "Egenskaper"
+
+#: editor/inspector_dock.cpp
+msgid "Make Sub-Resources Unique"
+msgstr "Gör Under-resurser Unika"
+
+#: editor/inspector_dock.cpp
+msgid "Create a new resource in memory and edit it."
+msgstr "Skapa en ny resurs i minnet och ändra den."
+
+#: editor/inspector_dock.cpp
+msgid "Load an existing resource from disk and edit it."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Save the currently edited resource."
+msgstr "Spara den nuvarande redigerade resursen."
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Save As..."
msgstr "Spara Som..."
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Kopiera Params"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Inte i resursens sökväg."
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Edit Resource Clipboard"
+msgid "Edit Resource from Clipboard"
msgstr "Resurs"
#: editor/inspector_dock.cpp
@@ -4216,30 +4465,11 @@ msgid "Copy Resource"
msgstr "Kopiera Resurs"
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+#, fuzzy
+msgid "Make Resource Built-In"
msgstr "Gör Inbyggd"
#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Gör Under-resurser Unika"
-
-#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Öppna i Hjälp"
-
-#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Skapa en ny resurs i minnet och ändra den."
-
-#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Spara den nuvarande redigerade resursen."
-
-#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
msgstr ""
@@ -4252,8 +4482,14 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Objektegenskaper."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Öppna Senaste"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "Öppna Senaste"
#: editor/inspector_dock.cpp
#, fuzzy
@@ -4261,6 +4497,11 @@ msgid "Filter properties"
msgstr "Filtrera noder"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Objektegenskaper."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Ändringar kan gå förlorade!"
@@ -4291,6 +4532,15 @@ msgstr "Plugin Namn:"
msgid "Subfolder:"
msgstr "Undermapp:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Författare:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Version:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Språk:"
@@ -4505,7 +4755,7 @@ msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr "Uppdatera Ändringar"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4728,6 +4978,11 @@ msgid "Animation"
msgstr "Animation"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Ny"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Ändra Övergångar..."
@@ -5076,10 +5331,18 @@ msgid "View Files"
msgstr "Visa Filer"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Ladda ner"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Kan inte ansluta."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -5088,15 +5351,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Inget svar."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
+msgid "Can't resolve."
+msgstr "Kan inte lösa."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5126,6 +5393,10 @@ msgid "Timeout."
msgstr "Tid:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Misslyckades:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5226,8 +5497,12 @@ msgid "All"
msgstr "Alla"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Inga resultat för \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5269,6 +5544,10 @@ msgstr "Laddar..."
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5277,8 +5556,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5527,15 +5806,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5595,6 +5875,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
@@ -5607,19 +5888,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Ta bort valt spår."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "Ta bort vald Rect."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Ta bort valt spår."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5857,6 +6147,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Lägg Till Node"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Instansiera Barn-Scen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5870,6 +6170,52 @@ msgid "Pan View"
msgstr "Vy bakifrån"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Zooma Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Zooma Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Zooma Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Zooma Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Zooma Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Zooma Ut"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Lägg till %s"
@@ -6124,6 +6470,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Skapa Ny"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "Skapa Ny"
@@ -6158,7 +6509,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6219,13 +6570,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Skapa Prenumeration"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Skapa Prenumeration"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6283,7 +6647,6 @@ msgid "Mesh Library"
msgstr "MeshLibrary"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6558,7 +6921,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Alternativ"
@@ -6874,6 +7238,24 @@ msgstr "Ladda Resurs"
msgid "ResourcePreloader"
msgstr "Resurs"
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Flytta Bezierpunkt"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Infoga Punkt"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7090,7 +7472,7 @@ msgstr "Kör"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Sök"
@@ -7121,6 +7503,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Dokumentation Online"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Öppna Godot online dokumentation."
@@ -7248,8 +7635,8 @@ msgstr ""
msgid "Cut"
msgstr "Klipp"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Välj Alla"
@@ -7282,10 +7669,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7451,6 +7834,28 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Ctrl: Rotera"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Översättningar"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Skala:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Skalning: "
@@ -7472,39 +7877,48 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Pitch"
+msgid "Pitch:"
msgstr "Växla"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr ""
+#, fuzzy
+msgid "Size:"
+msgstr "Storlek: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Uppdatera Ändringar"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Ändra"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Ändra"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "Partiklar"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7665,6 +8079,11 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Växla Favorit"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "View Rotation Locked"
msgstr "Visa Information"
@@ -7680,6 +8099,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Konvertera till %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7693,26 +8117,24 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
-msgstr ""
+#, fuzzy
+msgid "Snap Nodes to Floor"
+msgstr "Välj Nod(er) att Importera"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7809,6 +8231,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Inställningar..."
@@ -8116,11 +8542,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -8141,173 +8562,599 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Sektioner:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr ""
+#, fuzzy
+msgid "Colors"
+msgstr "Färg"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Lägg till Alla"
+#, fuzzy
+msgid "Fonts"
+msgstr "Font"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Ikon"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Stil"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Ta bort Alla"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Inga underresurser hittades."
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Redigera Tema"
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Konstanter"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Färg konstant."
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "Hittades inte!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "No icons found."
+msgstr "Hittades inte!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Skapa tom mall"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Inga underresurser hittades."
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Toggle Button"
-msgstr "Musknapp"
+msgid "Importing Theme Items"
+msgstr "Importera Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "Avaktiverad"
+msgid "Updating the editor"
+msgstr "Stäng redigeraren?"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Finalizing"
+msgstr "Analyserar"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Filter:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "Avaktiverad"
+msgid "Select by data type:"
+msgstr "Välj en Node"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Välj en mapp att skanna"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "Avaktiverad"
+msgid "Collapse types."
+msgstr "Stäng Alla"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+#, fuzzy
+msgid "Expand types."
+msgstr "Expandera alla"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Välj mall-fil"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Deselect All"
+msgstr "Välj Alla"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Editable Item"
+msgid "Import Selected"
+msgstr "Importera Scen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr "Ta bort Alla"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Byt namn på Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Ta bort Alla"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Ta bort Alla"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Ta bort Alla"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Ta bort Alla"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Lägg till i Favoriter"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "Konstant"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Lägg Till Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Lägg Till Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
msgstr "Redigerbara Barn"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Byt namn på Node"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Has,Many,Options"
-msgstr "Alternativ"
+msgid "Rename Font Item"
+msgstr "Byt namn på Node"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Datatyp:"
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Byt namn på Node"
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Ikon"
+msgid "Rename Stylebox Item"
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Ogiltig fil, inte en Ljud-Buss Layout."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Hantera Mallar"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Redigerbara Barn"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Typ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Typ:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
msgstr "Stil"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Font"
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Ta Bort Mall"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Färg"
+msgid "Remove Class Items"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
+msgid "Remove Custom Items"
+msgstr "Ta bort Polygon och Punkt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Node Namn:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Importera Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Standard"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Redigera Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Ta bort Resurs"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Importera Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Anim Byt Namn På Spår"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Byt namn"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Skriv över"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Typ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Nod typ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Ladda Standard"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "skriv över:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
msgstr "Tema"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Hantera exportmallar..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Förhandsgranska"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Förhandsgranska"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Återställ Scen"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Toggle Button"
+msgstr "Musknapp"
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "Avaktiverad"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "Avaktiverad"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "Avaktiverad"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Editable Item"
+msgstr "Redigerbara Barn"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Has,Many,Options"
+msgstr "Alternativ"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Ogiltig fil, inte en Ljud-Buss Layout."
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
msgstr ""
@@ -8488,6 +9335,10 @@ msgid "Priority"
msgstr "Exportera Projekt"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Ikon"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8849,11 +9700,6 @@ msgid "Commit Changes"
msgstr "Synkronisera Skript-ändringar"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Status"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9682,7 +10528,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "Redigera Filter"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9800,7 +10646,8 @@ msgid "Script"
msgstr "Nytt Skript"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Skript Exporterings Läge:"
#: editor/project_export.cpp
@@ -9808,7 +10655,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9816,11 +10663,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9897,7 +10744,8 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Ogiltigt projektnamn."
#: editor/project_manager.cpp
@@ -9932,6 +10780,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Fel vid öppning av paketfil, är inte ZIP-format."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Följande filer misslyckades att packas upp från paketet:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Paketet installerades!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Byt namn på Projekt"
@@ -10091,18 +10951,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Välj enhet från listan"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Vill du ta bort projektet från listan?\n"
-"Projektetmappens innehåll kommer inte ändras."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Välj enhet från listan"
#: editor/project_manager.cpp
msgid ""
@@ -10129,7 +10985,7 @@ msgstr "Projektledare"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "Projekt"
#: editor/project_manager.cpp
@@ -10142,10 +10998,25 @@ msgid "Last Modified"
msgstr "Senast Ändrad"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Exportera Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Byt namn på Projekt"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Skanna"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projekt"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Välj en mapp att skanna"
@@ -10155,18 +11026,41 @@ msgstr "Nytt Projekt"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Exportera Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Byt namn på Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Ta bort Animation"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Mallar"
+msgid "About"
+msgstr "Om"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Tillgångsbibliotek"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Starta om nu"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Ta bort Alla"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Kan inte köra projektet"
@@ -10177,8 +11071,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Filtrera noder"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10188,6 +11087,10 @@ msgid "Key "
msgstr "Nyckel "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10230,6 +11133,10 @@ msgstr "Enhet"
msgid "Device"
msgstr "Enhet"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
#, fuzzy
msgid "Press a Key..."
@@ -10372,7 +11279,8 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Lägg Till Översättning"
#: editor/project_settings_editor.cpp
@@ -10380,11 +11288,11 @@ msgid "Remove Translation"
msgstr "Ta bort Översättning"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10659,6 +11567,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Stil"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10827,11 +11739,29 @@ msgid "Delete node \"%s\"?"
msgstr "Ta bort nod \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10892,6 +11822,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Fäst Skript"
@@ -10941,11 +11875,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "Öppna Senaste"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11233,6 +12162,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Klassnamn:"
@@ -11306,6 +12241,10 @@ msgid "Copy Error"
msgstr "Fel"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11596,6 +12535,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Exportera Mesh Library"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Exportera..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -11641,6 +12590,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Alla urval"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11888,6 +12842,16 @@ msgstr "Lägg till Utgångsport"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "Ändra Typ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Ändra inmatningsport namn"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr "Ogiltigt namn. FÃ¥r inte vara samma som ett befintligt inbyggt typnamn."
@@ -11999,6 +12963,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Lägg Till Node"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -12231,10 +13200,6 @@ msgstr "Fäst Skript"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12265,6 +13230,39 @@ msgid "Select device from the list"
msgstr "Välj enhet från listan"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Exportera"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Avinstallera"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Laddar..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Kunde inte starta underprocess!"
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Kunde inte skapa mapp."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12361,6 +13359,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Skannar Filer,\n"
+"Snälla Vänta..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Kunde inte öppna mall för export:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Lägger till %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Exportera"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12373,6 +13413,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12387,6 +13431,20 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Kunde inte skriva till filen:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12406,11 +13464,54 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animeringsverktyg"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Skapar konturer..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Kunde inte öppna mall för export:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Lägger till %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Kunde inte skriva till filen:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12439,10 +13540,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Kör exporterad HTML i systemets standardwebbläsare."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Kunde inte skriva till filen:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Kunde inte öppna mall för export:"
@@ -12451,15 +13548,48 @@ msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
-msgstr ""
+msgid "Could not write file:"
+msgstr "Kunde inte skriva till filen:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Kunde inte skriva till filen:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Kunde inte skriva till filen:"
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Kunde inte skapa mapp."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Fel vid sparande av scenen."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Ogiltig identifierare:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12835,6 +13965,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12906,6 +14043,18 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
#, fuzzy
msgid ""
@@ -12914,6 +14063,46 @@ msgid ""
msgstr ""
"Sökvägs-egenskapen måste peka på en giltigt Node2D Node för att fungera."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12963,6 +14152,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "Animeringsverktyg"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -13114,21 +14307,128 @@ msgid "Invalid comparison function for that type."
msgstr "Ogiltig teckenstorlek."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr ""
+#~ msgid "Package Contents:"
+#~ msgstr "Paketets Innehåll:"
+
+#~ msgid "Singleton"
+#~ msgstr "Singleton"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Rensa profil ‘%s’? (Du kan inte ångra den här åtgärden )"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Egenskaper:"
+
+#, fuzzy
+#~ msgid "Class Options"
+#~ msgstr "Beskrivning"
+
+#~ msgid "Set"
+#~ msgstr "Sätt"
+
+#, fuzzy
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Misslyckades att ladda resurs."
+
+#~ msgid "Q&A"
+#~ msgstr "Frågor och svar"
+
+#~ msgid "Status:"
+#~ msgstr "Status:"
+
+#~ msgid "Edit:"
+#~ msgstr "Redigera:"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "Ladda ner"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Installerad)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Saknas)"
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Omdirigera Loop."
+
+#~ msgid "Download Complete."
+#~ msgstr "Nedladdning Klar."
+
+#~ msgid "Remove Template"
+#~ msgstr "Ta Bort Mall"
+
+#~ msgid "Download Templates"
+#~ msgstr "Ladda Ner Mallar"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "Flytta Autoload"
+
+#, fuzzy
+#~ msgid "Expand All Properties"
+#~ msgstr "Expandera alla"
+
+#~ msgid "Copy Params"
+#~ msgstr "Kopiera Params"
+
+#~ msgid "Open in Help"
+#~ msgstr "Öppna i Hjälp"
+
+#~ msgid "Add All"
+#~ msgstr "Lägg till Alla"
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Skapa tom mall"
+
+#~ msgid "Data Type:"
+#~ msgstr "Datatyp:"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "Tema"
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Vill du ta bort projektet från listan?\n"
+#~ "Projektetmappens innehåll kommer inte ändras."
+
+#~ msgid "Templates"
+#~ msgstr "Mallar"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "En animationsspelare kan inte animera sig själv, utan bara andra spelare."
@@ -13179,18 +14479,12 @@ msgstr ""
#~ msgstr ""
#~ "Nuvarande scen har aldrig sparats, vänligen spara den innan körning."
-#~ msgid "Not in resource path."
-#~ msgstr "Inte i resursens sökväg."
-
#~ msgid "Revert"
#~ msgstr "Återställ"
#~ msgid "This action cannot be undone. Revert anyway?"
#~ msgstr "Åtgärden kan inte ångras. Återställ ändå?"
-#~ msgid "Revert Scene"
-#~ msgstr "Återställ Scen"
-
#~ msgid "Replaced %d occurrence(s)."
#~ msgstr "Ersatte %d förekomst(er)."
@@ -13418,10 +14712,6 @@ msgstr ""
#~ msgstr "Redigera Polygon"
#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Välj en mapp att skanna"
-
-#, fuzzy
#~ msgid "Add Node.."
#~ msgstr "Lägg Till Node"
@@ -13513,10 +14803,6 @@ msgstr ""
#~ msgstr "Rotera 270 grader"
#, fuzzy
-#~ msgid "Variable"
-#~ msgstr "Variabel"
-
-#, fuzzy
#~ msgid "Errors:"
#~ msgstr "Fel:"
@@ -13526,9 +14812,6 @@ msgstr ""
#~ msgid "Move Anim Track Down"
#~ msgstr "Flytta Anim Spår Neråt"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Anim Byt Namn På Spår"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Anim Ändra Spårets Interpolation"
@@ -13618,10 +14901,6 @@ msgstr ""
#~ msgstr "OK :("
#, fuzzy
-#~ msgid "StyleBox"
-#~ msgstr "Stil"
-
-#, fuzzy
#~ msgid "Condition"
#~ msgstr "Villkor"
@@ -13633,9 +14912,6 @@ msgstr ""
#~ msgid "Iterator"
#~ msgstr "Iterator"
-#~ msgid "Not found!"
-#~ msgstr "Hittades inte!"
-
#~ msgid "Replace By"
#~ msgstr "Ersätt Med"
@@ -13666,7 +14942,3 @@ msgstr ""
#~ msgid "List:"
#~ msgstr "Lista:"
-
-#, fuzzy
-#~ msgid "Sections:"
-#~ msgstr "Sektioner:"
diff --git a/editor/translations/ta.po b/editor/translations/ta.po
index 0c9022b097..5b4e249318 100644
--- a/editor/translations/ta.po
+++ b/editor/translations/ta.po
@@ -531,7 +531,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -557,7 +558,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -579,6 +581,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -595,6 +601,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -643,7 +653,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -731,12 +741,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -791,11 +803,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -845,6 +855,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -915,7 +926,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -930,6 +941,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -951,8 +970,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1025,16 +1044,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1079,7 +1100,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1200,37 +1221,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Asset \"%s\" installed successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1238,7 +1263,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1302,8 +1327,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1382,7 +1408,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1469,6 +1495,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1484,16 +1518,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1509,7 +1543,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1648,7 +1682,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1681,15 +1755,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1707,7 +1781,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1715,17 +1789,25 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+#, fuzzy
+msgid "Create Profile"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Remove Profile"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1734,19 +1816,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1770,7 +1852,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1824,9 +1906,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1907,8 +1990,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1979,7 +2061,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2064,7 +2146,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2080,8 +2162,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2098,7 +2181,7 @@ msgid "Copy Selection"
msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2162,7 +2245,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2356,18 +2440,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2537,7 +2625,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2719,6 +2807,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2852,13 +2944,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2866,6 +2957,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2874,7 +2969,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2971,6 +3066,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2997,7 +3100,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3038,6 +3141,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "கண௠வளைவை[Node Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3069,6 +3177,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3093,21 +3205,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3115,11 +3224,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3139,6 +3248,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3181,12 +3300,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3204,22 +3317,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3233,37 +3369,21 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3298,7 +3418,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3318,64 +3438,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3383,7 +3509,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3393,135 +3523,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Cancel the download of the templates."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3647,31 +3808,60 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Duplicate..."
-msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move to Trash"
-msgstr "சேர௠மà¯à®•à¯à®•ியபà¯à®ªà¯à®³à¯à®³à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯"
+msgid "Duplicate..."
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3751,10 +3941,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3977,52 +4163,50 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4038,7 +4222,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4046,6 +4234,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4073,6 +4265,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4274,7 +4475,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4492,6 +4693,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
@@ -4834,10 +5040,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4846,15 +5060,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4882,6 +5100,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4982,7 +5204,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5025,6 +5251,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5033,8 +5263,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5269,15 +5499,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5335,6 +5566,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5346,19 +5578,26 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5590,6 +5829,14 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5602,6 +5849,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5844,6 +6131,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5876,7 +6167,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5935,13 +6226,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5995,7 +6298,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6268,7 +6570,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6573,6 +6876,22 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6776,7 +7095,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6807,6 +7126,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6929,8 +7253,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6963,10 +7287,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7119,6 +7439,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7139,39 +7478,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Vertices:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7327,6 +7670,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7342,6 +7689,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7355,7 +7706,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7363,18 +7714,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7471,6 +7819,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7763,11 +8115,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7788,167 +8135,546 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No styleboxes found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Updating the editor"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Finalizing"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Filter:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select by data type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
+msgid "Deselect All"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Item"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
+msgid "Import Selected"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Remove All Color Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+#, fuzzy
+msgid "Rename Item"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதைகà¯à®•௠மறà¯à®ªà¯†à®¯à®°à¯ இடà¯"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Add Color Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Add Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+#, fuzzy
+msgid "Add Font Item"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Rename Color Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
+msgid "Edit Items"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Types:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Add Type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Add Item:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Add StyleBox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Remove Items:"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Add Theme Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Old Name:"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதைகà¯à®•௠மறà¯à®ªà¯†à®¯à®°à¯ இடà¯"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Override All"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Override all default type items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதை சேரà¯"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "à®®à¯à®Ÿà®•à¯à®•பà¯à®ªà®Ÿà¯à®Ÿà®¤à¯"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8119,6 +8845,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8442,11 +9172,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9271,7 +9996,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9386,7 +10111,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9394,7 +10119,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9402,11 +10127,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9479,7 +10204,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9513,6 +10238,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9657,15 +10394,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9692,7 +10425,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9704,10 +10437,23 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "தேரà¯à®µà¯ வளைவை [Selection Curve] திரà¯à®¤à¯à®¤à¯"
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9716,11 +10462,24 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "அசைவூடà¯à®Ÿà¯ பாதையை நீகà¯à®•à¯"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9728,6 +10487,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9738,8 +10505,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9749,6 +10520,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9790,6 +10565,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9929,19 +10708,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "மாறà¯à®±à®™à¯à®•ளை இதறà¯à®•௠அமை:"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10211,6 +10991,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10377,11 +11161,29 @@ msgid "Delete node \"%s\"?"
msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10438,6 +11240,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10485,10 +11291,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10760,6 +11562,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10828,6 +11636,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11111,6 +11923,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11154,6 +11974,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "அனைதà¯à®¤à¯ தேரà¯à®µà¯à®•ளà¯"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11399,6 +12224,16 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "மாறà¯à®±à®®à¯ அசைவூடà¯à®Ÿà¯"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11510,6 +12345,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "அசைவூடà¯à®Ÿà¯ போலிபசà¯à®šà®¾à®µà®¿à®•ளà¯"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11735,10 +12575,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11768,6 +12604,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11864,6 +12728,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11876,6 +12776,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11890,6 +12794,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11909,11 +12826,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11942,27 +12897,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Could not create HTTP server directory:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12310,6 +13289,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12379,12 +13365,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12433,6 +13471,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12580,15 +13622,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/te.po b/editor/translations/te.po
index 8274d5520f..6a4e076543 100644
--- a/editor/translations/te.po
+++ b/editor/translations/te.po
@@ -510,7 +510,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -536,7 +537,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -557,6 +559,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -573,6 +579,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -621,7 +631,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -707,12 +717,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -767,11 +779,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -821,6 +831,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -890,7 +901,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -905,6 +916,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -926,8 +945,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1000,16 +1019,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1054,7 +1075,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1175,37 +1196,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1213,7 +1238,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1277,7 +1302,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1357,7 +1382,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1444,6 +1469,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1459,16 +1492,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1484,7 +1517,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1623,7 +1656,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1655,15 +1728,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1681,7 +1754,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1689,17 +1762,23 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+msgid "Create Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Remove Profile"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1708,19 +1787,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1744,7 +1823,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1798,9 +1877,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1881,8 +1961,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1953,7 +2032,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2038,7 +2117,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2054,8 +2133,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2071,7 +2151,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2135,7 +2215,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2329,18 +2410,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2510,7 +2595,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2691,6 +2776,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2823,13 +2912,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2837,6 +2925,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2845,7 +2937,8 @@ msgid "Community"
msgstr "సంఘం"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "à°—à±à°°à°¿à°‚à°šà°¿"
#: editor/editor_node.cpp
@@ -2942,6 +3035,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2968,7 +3069,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3009,6 +3110,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3040,6 +3145,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3064,21 +3173,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3086,11 +3192,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3110,6 +3216,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3151,12 +3267,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3174,22 +3284,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3203,37 +3336,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3268,7 +3384,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3288,64 +3404,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3353,7 +3475,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3363,135 +3489,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Other Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3617,22 +3774,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3640,6 +3823,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3719,10 +3906,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3943,52 +4126,49 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
+msgid "Paste Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4004,7 +4184,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4012,6 +4196,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4039,6 +4227,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4238,7 +4435,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4452,6 +4649,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4788,10 +4990,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4800,15 +5010,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4836,6 +5050,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4936,7 +5154,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4979,6 +5201,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4987,8 +5213,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5222,15 +5448,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5284,6 +5511,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5295,19 +5523,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5539,6 +5773,14 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5551,6 +5793,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5791,6 +6073,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5823,7 +6109,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5882,13 +6168,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5942,7 +6240,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6214,7 +6511,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6518,6 +6816,22 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6721,7 +7035,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6752,6 +7066,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6874,8 +7193,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6908,10 +7227,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7063,6 +7378,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7083,39 +7417,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Vertices:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7271,6 +7609,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7286,6 +7628,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7299,7 +7645,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7307,18 +7653,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7415,6 +7758,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7704,11 +8051,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7729,7 +8071,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7737,156 +8079,520 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8055,6 +8761,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8372,11 +9082,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9196,7 +9901,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9311,7 +10016,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9319,7 +10024,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9327,11 +10032,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9404,7 +10109,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9438,6 +10143,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9582,15 +10299,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9617,7 +10330,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9629,10 +10342,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9641,11 +10366,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr "à°—à±à°°à°¿à°‚à°šà°¿"
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9653,6 +10390,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9663,8 +10408,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9674,6 +10423,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9715,6 +10468,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9854,7 +10611,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9862,11 +10619,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10134,6 +10891,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10296,11 +11057,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10356,6 +11135,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10402,10 +11185,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10676,6 +11455,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10744,6 +11529,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11027,6 +11816,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11068,6 +11865,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11310,6 +12111,14 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11418,6 +12227,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11641,10 +12454,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11674,6 +12483,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11770,6 +12607,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11782,6 +12655,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11796,6 +12673,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11815,11 +12705,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11848,27 +12776,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12216,6 +13168,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12285,12 +13244,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12339,6 +13350,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12486,15 +13501,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/th.po b/editor/translations/th.po
index e9c2a80a49..ce5e4952f1 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -541,7 +541,8 @@ msgstr "วินาที"
msgid "FPS"
msgstr "เฟรมเรท"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -567,7 +568,8 @@ msgstr "ปรับอัตราส่วนเวลาคีย์ที่
msgid "Scale From Cursor"
msgstr "ปรับอัตราส่วนเวลาตามเคอร์เซอร์"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "ทำซ้ำที่เลือà¸"
@@ -588,6 +590,11 @@ msgid "Go to Previous Step"
msgstr "ไปยังขั้นà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "รีเซ็ต"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "เพิ่มประสิทธิภาพà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
@@ -604,6 +611,11 @@ msgid "Use Bezier Curves"
msgstr "ใช้เส้นโค้งเบซิเยร์"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "วางà¹à¸—ร็à¸"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "ตัวเพิ่มประสิทธิภาพà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
@@ -652,7 +664,7 @@ msgid "Select Tracks to Copy"
msgstr "เลือà¸à¹à¸—ร็à¸à¸—ี่จะคัดลอà¸"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -738,12 +750,14 @@ msgid "Toggle Scripts Panel"
msgstr "เปิด/ปิดà¹à¸œà¸‡à¸ªà¸„ริปต์"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "ขยาย"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -798,11 +812,9 @@ msgid "Add"
msgstr "เพิ่ม"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -852,6 +864,7 @@ msgstr "ไม่สามารถเชื่อมต่อสัà¸à¸à¸²à¸“
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -921,7 +934,8 @@ msgid "Edit..."
msgstr "à¹à¸à¹‰à¹„ข..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "ไปยังเมธอด"
#: editor/create_dialog.cpp
@@ -936,6 +950,14 @@ msgstr "เปลี่ยน"
msgid "Create New %s"
msgstr "สร้าง %s ใหม่"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "ไม่มีผลลัพธ์สำหรับ \"%s\""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -957,8 +979,8 @@ msgstr "ค้นหา:"
msgid "Matches:"
msgstr "พบ:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1034,19 +1056,23 @@ msgid "Owners Of:"
msgstr "เจ้าของของ:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"ลบไฟล์ที่เลือà¸à¸­à¸­à¸à¸ˆà¸²à¸à¹‚ปรเจà¸à¸•์? (ย้อนà¸à¸¥à¸±à¸šà¹„ม่ได้)\n"
"คุณสามารถหาไฟล์ที่ลบได้จาà¸à¸–ังขยะเพื่อที่จะà¸à¸¹à¹‰à¸„ืน"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"ไฟล์ที่à¸à¸³à¸¥à¸±à¸‡à¸ˆà¸°à¸¥à¸š ถูà¸à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹‚ดยทรัพยาà¸à¸£à¸­à¸±à¸™à¸­à¸·à¹ˆà¸™\n"
"จะทำà¸à¸²à¸£à¸¥à¸šà¸«à¸£à¸·à¸­à¹„ม่? (ย้อนà¸à¸¥à¸±à¸šà¹„ม่ได้)\n"
@@ -1094,7 +1120,7 @@ msgstr "ทรัพยาà¸à¸£à¸—ี่ไม่ได้ใช้"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1218,28 +1244,41 @@ msgstr "ไลบรารี"
msgid "Licenses"
msgstr "สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "ผิดพลาดขณะเปิดไฟล์à¹à¸žà¸„เà¸à¸ˆ, ไม่ใช่รูปà¹à¸šà¸š zip"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "ผิดพลาดขณะเปิดไฟล์à¹à¸žà¸„เà¸à¸ˆ (ไม่ใช่ไฟล์นามสà¸à¸¸à¸¥ zip)"
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (มีอยู่à¸à¹ˆà¸­à¸™à¹à¸¥à¹‰à¸§)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„ลายบีบอัด"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "ผิดพลาดขณะà¹à¸¢à¸à¹„ฟล์ต่อไปนี้จาà¸à¹à¸žà¸„เà¸à¸ˆ:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "à¹à¸¥à¸°à¸­à¸µà¸ %d ไฟล์"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "ติดตั้งà¹à¸žà¸„เà¸à¸ˆà¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“์!"
#: editor/editor_asset_installer.cpp
@@ -1247,16 +1286,13 @@ msgstr "ติดตั้งà¹à¸žà¸„เà¸à¸ˆà¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“
msgid "Success!"
msgstr "สำเร็จ!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "เนื้อหาà¹à¸žà¸„เà¸à¸ˆ:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "ติดตั้ง"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "ตัวติดตั้งà¹à¸žà¸„เà¸à¸ˆ"
#: editor/editor_audio_buses.cpp
@@ -1320,7 +1356,8 @@ msgid "Bypass"
msgstr "ข้าม"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "ตัวเลือภBus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1400,7 +1437,7 @@ msgstr "เพิ่มบัส"
msgid "Add a new Audio Bus to this layout."
msgstr "เพิ่มบัสเสียงไปยังเลย์เอาต์นี้"
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1487,6 +1524,15 @@ msgid "Can't add autoload:"
msgstr "เพิ่มออโต้โหลดไม่ได้:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "ไม่พบไฟล์"
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "เพิ่มออโต้โหลด"
@@ -1502,16 +1548,17 @@ msgid "Node Name:"
msgstr "ชื่อโหนด:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "ชื่อ"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "ซิงเà¸à¸´à¸¥à¸•ัน"
+#, fuzzy
+msgid "Global Variable"
+msgstr "ตัวà¹à¸›à¸£"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "วางตัวà¹à¸›à¸£"
@@ -1527,7 +1574,7 @@ msgstr "เà¸à¹‡à¸šà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸ à¸²à¸¢à¹ƒà¸™...
msgid "Updating scene..."
msgstr "อัพเดทฉาà¸..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[ว่างเปล่า]"
@@ -1678,8 +1725,49 @@ msgid "Import Dock"
msgstr "นำเข้าà¹à¸œà¸‡"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "ลบโปรไฟล์ '%s' หรือไม่? (ทำà¸à¸¥à¸±à¸šà¹„ม่ได้)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(ปัจจุบัน)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1710,15 +1798,18 @@ msgid "Enable Contextual Editor"
msgstr "เปิดà¸à¸²à¸£à¸—ำงานตัวà¹à¸à¹‰à¹„ขตามบริบท"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "เปิดà¸à¸²à¸£à¸—ำงานคุณสมบัติ:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "คุณสมบัติ:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "เปิดà¸à¸²à¸£à¸—ำงานฟีเจอร์:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "ฟีเจอร์"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "เปิดà¸à¸²à¸£à¸—ำงานคลาส:"
#: editor/editor_feature_profile.cpp
@@ -1736,25 +1827,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "ผิดพลาดขณะบันทึà¸à¹‚ปรไฟล์ไปยังà¹à¸žà¸—ช์: '%s'"
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸•ั้งค่า"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "รีเซ็ตเป็นค่าเริ่มต้น"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "โปรไฟล์ปัจจุบัน:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "ทำให้เป็นปัจจุบัน"
+#, fuzzy
+msgid "Create Profile"
+msgstr "ลบโปรไฟล์"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "ใหม่"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "ลบไทล์"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "โปรไฟล์ที่มีให้ใช้:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "ทำให้เป็นปัจจุบัน"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "นำเข้า"
@@ -1763,20 +1863,22 @@ msgid "Export"
msgstr "ส่งออà¸"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "โปรไฟล์ที่มีให้ใช้:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "โปรไฟล์ปัจจุบัน:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "ตั้งค่าคลาส"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "ตัวเลือภTexture"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "ชื่อโปรไฟล์ใหม่:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "ลบโปรไฟล์"
+msgid "New profile name:"
+msgstr "ชื่อโปรไฟล์ใหม่:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1799,7 +1901,8 @@ msgid "Select Current Folder"
msgstr "เลือà¸à¹‚ฟลเดอร์ปัจจุบัน"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "มีไฟล์นี้อยู่à¹à¸¥à¹‰à¸§ จะเขียนทับหรือไม่?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1853,9 +1956,10 @@ msgid "Open a File or Directory"
msgstr "เปิดไฟล์หรือโฟลเดอร์"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "บันทึà¸"
@@ -1936,8 +2040,7 @@ msgid "Directories & Files:"
msgstr "ไฟล์à¹à¸¥à¸°à¹‚ฟลเดอร์:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "ตัวอย่าง:"
@@ -2008,7 +2111,7 @@ msgstr "คุณสมบัติธีม"
msgid "Enumerations"
msgstr "อีนัม"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "ค่าคงที่"
@@ -2093,7 +2196,7 @@ msgstr "เมธอด"
msgid "Signal"
msgstr "สัà¸à¸à¸²à¸“"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "คงที่"
@@ -2109,9 +2212,10 @@ msgstr "คุณสมบัติธีม"
msgid "Property:"
msgstr "คุณสมบัติ:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "à¸à¸³à¸«à¸™à¸”"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "ตั้ง %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2126,7 +2230,7 @@ msgid "Copy Selection"
msgstr "คัดลอà¸à¸—ี่เลือà¸"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2190,7 +2294,8 @@ msgid "Imported resources can't be saved."
msgstr "ทรัพยาà¸à¸£à¸—ี่นำเข้ามา ไม่สามารถบันทึà¸à¹„ด้"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "ตà¸à¸¥à¸‡"
@@ -2400,18 +2505,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "บันทึภ'%s' à¸à¹ˆà¸­à¸™à¸›à¸´à¸”โปรà¹à¸à¸£à¸¡à¸«à¸£à¸·à¸­à¹„ม่?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "บันทึà¸à¸—รัพยาà¸à¸£ %s ที่ถูà¸à¹à¸à¹‰à¹„ขสำเร็จ"
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "โหนดà¹à¸¡à¹ˆà¸ˆà¸³à¹€à¸›à¹‡à¸™à¸•้องทำà¸à¸²à¸£à¸šà¸±à¸™à¸—ึà¸à¸‰à¸²à¸"
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "บันทึà¸à¸‰à¸²à¸à¹€à¸›à¹‡à¸™..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "ทำไม่ได้ถ้าไม่มีฉาà¸"
@@ -2597,7 +2707,7 @@ msgstr "ลบเลย์เอาต์"
msgid "Default"
msgstr "ค่าเริ่มต้น"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "à¹à¸ªà¸”งในรูปà¹à¸šà¸šà¹„ฟล์"
@@ -2778,6 +2888,11 @@ msgid "Orphan Resource Explorer..."
msgstr "à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸—รัพยาà¸à¸£"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "เปลี่ยนชื่อโปรเจà¸à¸•์"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "ปิดà¹à¸¥à¸°à¸à¸¥à¸±à¸šà¸ªà¸¹à¹ˆà¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹‚ปรเจà¸à¸•์"
@@ -2926,20 +3041,25 @@ msgstr "จัดà¸à¸²à¸£à¹€à¸—มเพลตà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸..."
msgid "Help"
msgstr "ช่วยเหลือ"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "คู่มือ"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "เปิดคู่มือ"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "ถาม/ตอบ"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "รายงานบั๊à¸"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "เซ็ตค่า"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "ส่งความคิดเห็นเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸„ู่มือ"
@@ -2948,7 +3068,8 @@ msgid "Community"
msgstr "ชุมชน"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š"
#: editor/editor_node.cpp
@@ -3045,6 +3166,16 @@ msgid "Manage Templates"
msgstr "จัดà¸à¸²à¸£à¹€à¸—มเพลต"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "ติดตั้งไฟล์à¹à¸¡à¹ˆà¹à¸šà¸š"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "เลือภMesh ต้นฉบับ:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3079,7 +3210,7 @@ msgstr "นำเข้าเทมเพลตจาà¸à¹„ฟล์ ZIP"
msgid "Template Package"
msgstr "à¹à¸žà¸„เà¸à¸ˆà¹€à¸—มเพลต"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "ส่งออà¸à¹„ลบรารี"
@@ -3122,6 +3253,11 @@ msgid "Select"
msgstr "เลือà¸"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "เลือà¸à¹‚ฟลเดอร์ปัจจุบัน"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "เปิดตัวà¹à¸à¹‰à¹„ข 2D"
@@ -3153,6 +3289,11 @@ msgstr "คำเตือน!"
msgid "No sub-resources found."
msgstr "ไม่พบทรัพยาà¸à¸£à¸¢à¹ˆà¸­à¸¢"
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "ไม่พบทรัพยาà¸à¸£à¸¢à¹ˆà¸­à¸¢"
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¸ à¸²à¸žà¸•ัวอย่าง Mesh"
@@ -3177,33 +3318,34 @@ msgstr "ปลั๊à¸à¸­à¸´à¸™à¸—ี่ติดตั้งà¹à¸¥à¹‰à¸§:"
msgid "Update"
msgstr "อัพเดท"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "รุ่น:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "ผู้สร้าง:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "สถานะ:"
+#, fuzzy
+msgid "Author"
+msgstr "ทีมงาน"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "à¹à¸à¹‰à¹„ข:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "สถานะ"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "วัด:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "เวลาเฟรม (วินาที)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "เวลาเฉลี่ย (วินาที)"
#: editor/editor_profiler.cpp
@@ -3223,6 +3365,16 @@ msgid "Self"
msgstr "ตัวเอง"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "เฟรมที่:"
@@ -3264,12 +3416,6 @@ msgstr "RID ผิดพลาด"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr "ทรัพยาà¸à¸£à¸—ี่เลือภ(%s) มีประเทไม่ตรงà¸à¸±à¸šà¸„่าที่ต้องà¸à¸²à¸£ (%s)"
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3291,40 +3437,6 @@ msgid "Pick a Viewport"
msgstr "เลือà¸à¸§à¸´à¸§à¸žà¸­à¸£à¹Œà¸•"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "สคริปต์ใหม่"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "สคริปต์เสริม"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "%s ใหม่"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "ไม่ใช้ร่วมà¸à¸±à¸šà¸§à¸±à¸•ถุอื่น"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "วาง"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "à¹à¸›à¸¥à¸‡à¹€à¸›à¹‡à¸™ %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "โหนดที่เลือà¸à¹„ม่ใช่วิวพอร์ต!"
@@ -3353,6 +3465,47 @@ msgstr "ค่าใหม่:"
msgid "Add Key/Value Pair"
msgstr "เพิ่มคู่ของคีย์/ค่า"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr "ทรัพยาà¸à¸£à¸—ี่เลือภ(%s) มีประเทไม่ตรงà¸à¸±à¸šà¸„่าที่ต้องà¸à¸²à¸£ (%s)"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "ไม่ใช้ร่วมà¸à¸±à¸šà¸§à¸±à¸•ถุอื่น"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "วาง"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "à¹à¸›à¸¥à¸‡à¹€à¸›à¹‡à¸™ %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "%s ใหม่"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "สคริปต์ใหม่"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "สคริปต์เสริม"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3387,7 +3540,8 @@ msgid "Did you forget the '_run' method?"
msgstr "ลืมใส่เมท็อด '_run' หรือไม่?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"à¸à¸” Ctrl ค้างเพื่อปัดเศษเป็นจำนวนเต็ม à¸à¸” Shift ค้างเพื่อเพิ่มความà¹à¸¡à¹ˆà¸™à¸¢à¸³à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡"
@@ -3408,111 +3562,69 @@ msgid "Import From Node:"
msgstr "นำเข้าจาà¸à¹‚หนด:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "ดาวน์โหลดอีà¸à¸„รั้ง"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "ถอนà¸à¸²à¸£à¸•ิดตั้ง"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(ติดตั้งà¹à¸¥à¹‰à¸§)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "ดาวน์โหลด"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "ไม่มีเทมเพลตà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸à¸­à¸¢à¹ˆà¸²à¸‡à¹€à¸›à¹‡à¸™à¸—างà¸à¸²à¸£à¸ªà¸³à¸«à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™à¸œà¸¹à¹‰à¸žà¸±à¸’นา"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(ไม่พบ)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(ปัจจุบัน)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "ไม่มีไฟล์ '%s'"
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸£à¸µà¸¢à¸à¸‚้อมูล โปรดรอ..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "ลบเทมเพลตรุ่น '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "เปิดไฟล์ zip เทมเพลตส่งออà¸à¹„ม่ได้"
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "รูปà¹à¸šà¸šà¸‚อง version.txt ในเทมเพลต %s ไม่ถูà¸à¸•้อง"
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "ไม่พบ version.txt ในเทมเพลต"
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "ผิดพลาดขณะสร้างตำà¹à¸«à¸™à¹ˆà¸‡à¹€à¸—มเพลต:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„ลายเทมเพลตส่งออà¸"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸™à¸³à¹€à¸‚้า:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "ผิดพลาดขณะà¸à¸³à¸¥à¸±à¸‡à¸£à¸±à¸šà¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¸‚อง mirrors"
+msgid "Error requesting URL:"
+msgstr "ผิดพลาดขณะà¸à¸³à¸¥à¸±à¸‡à¸£à¹‰à¸­à¸‡à¸‚อ URL:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "เà¸à¸´à¸”ข้อผิดพลาด ไม่สามารถอ่าน JSON ในรายà¸à¸²à¸£à¸¡à¸´à¹€à¸£à¸­à¸£à¹Œ à¸à¸£à¸¸à¸“ารายงานปัà¸à¸«à¸²à¸™à¸µà¹‰!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•่อà¸à¸±à¸š Mirror"
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr "ไม่พบลิงà¸à¹Œà¸”าวน์โหลดสำหรับรุ่นนี้ มีเฉพาะสำหรับโปรà¹à¸à¸£à¸¡à¸£à¸¸à¹ˆà¸™à¸«à¸¥à¸±à¸"
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "ไม่พบตำà¹à¸«à¸™à¹ˆà¸‡à¸™à¸µà¹‰:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "ค้นหาไม่สำเร็จ"
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "ไม่สามารถเชื่อมต่อà¸à¸±à¸šà¹‚ฮสต์:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "เชื่อมต่อไม่ได้"
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "ไม่มีà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸šà¸ˆà¸²à¸à¹‚ฮสต์:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "ไม่มีà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸š"
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "ร้องขอผิดพลาด"
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "เปลี่ยนทางมาà¸à¹€à¸à¸´à¸™à¹„ป"
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด เปลี่ยนทางมาà¸à¹€à¸à¸´à¸™à¹„ป"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "ผิดพลาด:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "ร้องขอผิดพลาด"
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "ดาวน์โหลดเสร็จสิ้น"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3527,12 +3639,23 @@ msgstr ""
"ดูไฟล์รายงานปัà¸à¸«à¸²à¹„ด้ที่ '%s'"
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "ผิดพลาดขณะà¸à¸³à¸¥à¸±à¸‡à¸£à¹‰à¸­à¸‡à¸‚อ URL:"
+msgid "Error getting the list of mirrors."
+msgstr "ผิดพลาดขณะà¸à¸³à¸¥à¸±à¸‡à¸£à¸±à¸šà¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¸‚อง mirrors"
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•่อà¸à¸±à¸š Mirror"
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "เà¸à¸´à¸”ข้อผิดพลาด ไม่สามารถอ่าน JSON ในรายà¸à¸²à¸£à¸¡à¸´à¹€à¸£à¸­à¸£à¹Œ à¸à¸£à¸¸à¸“ารายงานปัà¸à¸«à¸²à¸™à¸µà¹‰!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr "ไม่พบลิงà¸à¹Œà¸”าวน์โหลดสำหรับรุ่นนี้ มีเฉพาะสำหรับโปรà¹à¸à¸£à¸¡à¸£à¸¸à¹ˆà¸™à¸«à¸¥à¸±à¸"
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3577,44 +3700,138 @@ msgid "SSL Handshake Error"
msgstr "à¸à¸²à¸£à¸£à¸±à¸šà¸£à¸­à¸‡à¸„วามปลอดภัยผิดพลาด"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "เปิดไฟล์ zip เทมเพลตส่งออà¸à¹„ม่ได้"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "รูปà¹à¸šà¸šà¸‚อง version.txt ในเทมเพลต %s ไม่ถูà¸à¸•้อง"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "ไม่พบ version.txt ในเทมเพลต"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "ผิดพลาดขณะสร้างตำà¹à¸«à¸™à¹ˆà¸‡à¹€à¸—มเพลต:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„ลายเทมเพลตส่งออà¸"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸™à¸³à¹€à¸‚้า:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "ลบเทมเพลตรุ่น '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„ลาย Android Build Sources"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "จัดà¸à¸²à¸£à¹€à¸—มเพลตส่งออà¸"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "รุ่นปัจจุบัน:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "รุ่นที่ติดตั้งà¹à¸¥à¹‰à¸§:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "เปิดไฟล์"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall"
+msgstr "ถอนà¸à¸²à¸£à¸•ิดตั้ง"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "ค่าเริ่มต้นในà¸à¸²à¸£à¸™à¸±à¸š"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "ดาวน์โหลดผิดพลาด"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "ไม่มีเทมเพลตà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸à¸­à¸¢à¹ˆà¸²à¸‡à¹€à¸›à¹‡à¸™à¸—างà¸à¸²à¸£à¸ªà¸³à¸«à¸£à¸±à¸šà¸£à¸¸à¹ˆà¸™à¸œà¸¹à¹‰à¸žà¸±à¸’นา"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "ติดตั้งไฟล์à¹à¸¡à¹ˆà¹à¸šà¸š"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "ลบเทมเพลต"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "นำเข้าเทมเพลตจาà¸à¹„ฟล์ ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "ยà¸à¹€à¸¥à¸´à¸"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "เลือà¸à¹„ฟล์เทมเพลต"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "เปิดไฟล์ zip เทมเพลตส่งออà¸à¹„ม่ได้"
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "เทมเพลตà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸ Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "รุ่นที่ติดตั้งà¹à¸¥à¹‰à¸§:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "จัดà¸à¸²à¸£à¹€à¸—มเพลตส่งออà¸"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "ถอนà¸à¸²à¸£à¸•ิดตั้ง"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "เลือà¸à¹„ฟล์เทมเพลต"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "ดาวน์โหลดเทมเพลต"
+msgid "Godot Export Templates"
+msgstr "เทมเพลตà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸ Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "เลือภmirror จาà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­: (Shift+คลิà¸: เปิดในเบราเซอร์)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3744,29 +3961,62 @@ msgstr "สคริปต์ใหม่..."
msgid "New Resource..."
msgstr "ทรัพยาà¸à¸£à¹ƒà¸«à¸¡à¹ˆ..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "ขยายออà¸"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "ยุบเข้า"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "ทำซ้ำ..."
+#, fuzzy
+msgid "Sort files"
+msgstr "ค้นหาไฟล์"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "à¹à¸à¹‰à¹„ขล่าสุด"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "à¹à¸à¹‰à¹„ขล่าสุด"
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "ย้ายไปถังขยะ"
+msgid "Duplicate..."
+msgstr "ทำซ้ำ..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "เปลี่ยนชื่อ..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "ไฟล์/โฟลเดอร์à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
@@ -3848,10 +4098,6 @@ msgstr "ค้นหา..."
msgid "Replace..."
msgstr "à¹à¸—นที่..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "ยà¸à¹€à¸¥à¸´à¸"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "ค้นหา: "
@@ -4072,53 +4318,55 @@ msgid "Failed to load resource."
msgstr "โหลดทรัพยาà¸à¸£à¹„ม่ได้"
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "ขยายคุณสมบัติทั้งหมด"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "คุณสมบัติ"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "ยุบคุณสมบัติทั้งหมด"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "บันทึà¸à¹€à¸›à¹‡à¸™..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "คุณสมบัติ"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "คัดลอà¸à¸žà¸²à¸£à¸²à¸¡à¸´à¹€à¸•อร์"
+msgid "Make Sub-Resources Unique"
+msgstr "ไม่ให้ใช้รีซอร์สร่วมà¸à¸±à¸šà¸§à¸±à¸•ถุอื่น"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "à¹à¸à¹‰à¹„ขคลิปบอร์ดทรัพยาà¸à¸£"
+msgid "Create a new resource in memory and edit it."
+msgstr "สร้างรีซอร์สใหม่ในหน่วยความจำà¹à¸¥à¸°à¸—ำà¸à¸²à¸£à¸›à¸£à¸±à¸šà¹à¸•่ง"
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "คัดลอà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ª"
+msgid "Load an existing resource from disk and edit it."
+msgstr "โหลดรีซอร์สที่มีอยู่à¹à¸¥à¹‰à¸§à¹ƒà¸™à¸”ิสà¸à¹Œà¹à¸¥à¸°à¸—ำà¸à¸²à¸£à¸›à¸£à¸±à¸šà¹à¸•่ง"
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "à¸à¸±à¸‡"
+msgid "Save the currently edited resource."
+msgstr "บันทึà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ªà¸—ี่à¸à¸³à¸¥à¸±à¸‡à¸›à¸£à¸±à¸šà¹à¸•่ง"
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "ไม่ให้ใช้รีซอร์สร่วมà¸à¸±à¸šà¸§à¸±à¸•ถุอื่น"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "บันทึà¸à¹€à¸›à¹‡à¸™..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "เปิดในคู่มือ"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "ไม่อยู่ในโฟลเดอร์รีซอร์ส"
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "สร้างรีซอร์สใหม่ในหน่วยความจำà¹à¸¥à¸°à¸—ำà¸à¸²à¸£à¸›à¸£à¸±à¸šà¹à¸•่ง"
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "à¹à¸à¹‰à¹„ขคลิปบอร์ดทรัพยาà¸à¸£"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "โหลดรีซอร์สที่มีอยู่à¹à¸¥à¹‰à¸§à¹ƒà¸™à¸”ิสà¸à¹Œà¹à¸¥à¸°à¸—ำà¸à¸²à¸£à¸›à¸£à¸±à¸šà¹à¸•่ง"
+msgid "Copy Resource"
+msgstr "คัดลอà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ª"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "บันทึà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ªà¸—ี่à¸à¸³à¸¥à¸±à¸‡à¸›à¸£à¸±à¸šà¹à¸•่ง"
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "à¸à¸±à¸‡"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4133,14 +4381,24 @@ msgid "History of recently edited objects."
msgstr "ประวัติà¸à¸²à¸£à¸›à¸£à¸±à¸šà¹à¸•่งออบเจà¸à¸•์"
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "คุณสมบัติออบเจà¸à¸•์"
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "เปิดคู่มือ"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "เปิดคู่มือ"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "คุณสมบัติตัวà¸à¸£à¸­à¸‡"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "คุณสมบัติออบเจà¸à¸•์"
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "à¸à¸²à¸£à¹à¸à¹‰à¹„ขจะไม่ถูà¸à¸šà¸±à¸™à¸—ึà¸!"
@@ -4168,6 +4426,15 @@ msgstr "ชื่อปลั๊à¸à¸­à¸´à¸™:"
msgid "Subfolder:"
msgstr "โฟลเดอร์ย่อย:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "ผู้สร้าง:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "รุ่น:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "ภาษา:"
@@ -4372,7 +4639,8 @@ msgid "Blend:"
msgstr "ผสม:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "เปลี่ยนพารามิเตอร์"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4586,6 +4854,11 @@ msgid "Animation"
msgstr "à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "ใหม่"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "à¹à¸à¹‰à¹„ขทรานสิชัน"
@@ -4925,10 +5198,18 @@ msgid "View Files"
msgstr "ดูไฟล์"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "ดาวน์โหลด"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "เชื่อมต่อไม่ได้ à¸à¸£à¸¸à¸“าลองใหม่"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "เชื่อมต่อไม่ได้"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "ไม่สามารถเชื่อมต่อà¸à¸±à¸šà¹‚ฮสต์:"
@@ -4937,16 +5218,20 @@ msgid "No response from host:"
msgstr "ไม่มีà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸šà¸ˆà¸²à¸à¹‚ฮสต์:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "ไม่มีà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸š"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "ไม่พบตำà¹à¸«à¸™à¹ˆà¸‡à¸™à¸µà¹‰:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด รหัส:"
+msgid "Can't resolve."
+msgstr "ค้นหาไม่สำเร็จ"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "ร้องขอผิดพลาด"
+msgid "Request failed, return code:"
+msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด รหัส:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -4973,6 +5258,10 @@ msgid "Timeout."
msgstr "หมดเวลา"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "ผิดพลาด:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "à¹à¸®à¸Šà¸œà¸´à¸”พลาด ไฟล์ดาวน์โหลดอาจเสียหาย"
@@ -5073,8 +5362,12 @@ msgid "All"
msgstr "ทั้งหมด"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "ไม่มีผลลัพธ์สำหรับ \"%s\""
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5116,6 +5409,10 @@ msgstr "à¸à¸³à¸¥à¸±à¸‡à¹‚หลด..."
msgid "Assets ZIP File"
msgstr "ทรัพยาà¸à¸£à¹„ฟล์ ZIP"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5125,9 +5422,10 @@ msgstr ""
"ลองบันทึà¸à¸‰à¸²à¸à¸‚องคุณà¹à¸¥à¹‰à¸§à¸¥à¸­à¸‡à¸­à¸µà¸à¸„รั้ง"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"ไม่มีพื้นผิวให้สร้าง lightmap à¸à¸£à¸¸à¸“าตรวจสอบว่าพื้นผิวมี UV2 à¹à¸¥à¸°à¹„ด้เปิดใช้งาน 'Bake Light'"
@@ -5363,9 +5661,10 @@ msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¸•รึง"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"เขียนทับà¸à¸¥à¹‰à¸­à¸‡à¸‚องเà¸à¸¡à¸ªà¹Œ\n"
"เขียนทับà¸à¸¥à¹‰à¸­à¸‡à¸‚องเà¸à¸¡à¸ªà¹Œà¸”้วยตัวà¹à¸à¹‰à¹„ขของวิวพอร์ตของà¸à¸¥à¹‰à¸­à¸‡"
@@ -5373,11 +5672,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"เขียนทับà¸à¸¥à¹‰à¸­à¸‡à¸‚องเà¸à¸¡à¸ªà¹Œ\n"
-"ไม่มีอินสà¹à¸•นซ์ของเà¸à¸¡à¸ªà¹Œà¸—ำงานอยู่"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5430,6 +5728,7 @@ msgid ""
msgstr "คำเตือน: โหนดลูà¸à¸‚องคอนเทนเนอร์จะได้รับตำà¹à¸«à¸™à¹ˆà¸‡à¹à¸¥à¸°à¸‚นาดที่à¸à¸³à¸«à¸™à¸”โดยโหนดà¹à¸¡à¹ˆà¹€à¸—่านั้น"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5441,20 +5740,32 @@ msgid "Select Mode"
msgstr "โหมดเลือà¸"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "ลาà¸: หมุน"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "ลบโหนดหรือทรานสิชันที่เลือà¸"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+ลาà¸: ย้าย"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
-msgstr "à¸à¸” 'v' เพื่อเปลี่ยนจุดหมุน 'Shift+v' เพื่อลาà¸à¸ˆà¸¸à¸”หมุน"
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "ลบโหนดหรือทรานสิชันที่เลือà¸"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+คลิà¸à¸‚วา: เลือà¸à¸—ี่ซ้อนà¸à¸±à¸™"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+"à¹à¸ªà¸”งออบเจà¸à¸•์ทั้งหมด ณ ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่คลิà¸\n"
+"(เหมือน Alt+คลิà¸à¸‚วา ในโหมดเลือà¸)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5690,6 +6001,16 @@ msgid "Clear Pose"
msgstr "ลบท่าทาง"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "เพิ่มโหนด"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "อินสà¹à¸•นซ์ฉาà¸"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "เพิ่มความถี่เส้นà¸à¸£à¸´à¸”ขึ้น 2 เท่า"
@@ -5702,6 +6023,52 @@ msgid "Pan View"
msgstr "มุมมองà¹à¸žà¸™"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "ย่อ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "ย่อ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "ย่อ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "ย่อ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "ย่อ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "ย่อ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "เพิ่ม %s"
@@ -5944,6 +6311,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "ไม่สามารถสร้างรูปทรงนูนà¹à¸šà¸šà¹€à¸”ี่ยว"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "สร้างรูปทรงนูนà¹à¸šà¸šà¹€à¸”ี่ยว"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "สร้างรูปทรงนูนà¹à¸šà¸šà¹€à¸”ี่ยว"
@@ -5976,7 +6348,8 @@ msgid "No mesh to debug."
msgstr "ไม่มีพื้นผิวให้à¹à¸à¹‰à¹„ขจุดบà¸à¸žà¸£à¹ˆà¸­à¸‡"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "โมเดลไม่มี UV ในชั้นนี้"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6041,13 +6414,27 @@ msgstr ""
"นี่จะเป็นตัวเลือà¸à¸—ี่รวดเร็วที่สุด (à¹à¸•่ความà¹à¸¡à¹ˆà¸™à¸¢à¸³à¸™à¹‰à¸­à¸¢) สำหรับà¸à¸²à¸£à¸•รวจหาà¸à¸²à¸£à¸Šà¸™"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "สร้างà¸à¸²à¸•ิขอบเขตà¸à¸²à¸£à¸Šà¸™à¸£à¸¹à¸›à¸—รงนูนà¹à¸šà¸šà¹€à¸”ี่ยว"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "สร้างà¸à¸²à¸•ิขอบเขตà¸à¸²à¸£à¸Šà¸™à¸£à¸¹à¸›à¸—รงนูนà¹à¸šà¸šà¸«à¸¥à¸²à¸¢à¸­à¸±à¸™"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"สร้างขอบเขตà¸à¸²à¸£à¸Šà¸™à¹à¸šà¸šà¸«à¸¥à¸²à¸¢à¹€à¸«à¸¥à¸µà¹ˆà¸¢à¸¡\n"
"นี่จะให้ประสิทธิภาพระดับà¸à¸¥à¸²à¸‡à¹€à¸¡à¸·à¹ˆà¸­à¹€à¸—ียบà¸à¸±à¸šà¸ªà¸­à¸‡à¸•ัวเลือà¸à¸‚้างต้น"
@@ -6107,7 +6494,6 @@ msgid "Mesh Library"
msgstr "ไลบรารี mesh"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "เพิ่มไอเทม"
@@ -6379,7 +6765,8 @@ msgid "Close Curve"
msgstr "ปิดเส้นโค้ง"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "ตัวเลือà¸"
@@ -6687,6 +7074,26 @@ msgstr "โหลดรีซอร์ส"
msgid "ResourcePreloader"
msgstr "ตัวโหลดรีซอร์สล่วงหน้า"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "พลิà¸à¹à¸™à¸§à¸™à¸­à¸™"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "จำนวนจุดที่สร้างขึ้น:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "จำนวนจุดที่สร้างขึ้น:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "พลิà¸à¹à¸™à¸§à¸™à¸­à¸™"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree ไม่มีที่อยู่ไปยัง AnimationPlayer"
@@ -6891,7 +7298,7 @@ msgstr "เริ่ม"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "ค้นหา"
@@ -6922,6 +7329,11 @@ msgid "Debug with External Editor"
msgstr "ดีบัà¸à¸”้วยตัวà¹à¸à¹‰à¹„ขภายนอà¸"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "คู่มือ"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "เปิดคู่มือออนไลน์"
@@ -7046,8 +7458,8 @@ msgstr "ไปยัง"
msgid "Cut"
msgstr "ตัด"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "เลือà¸à¸—ั้งหมด"
@@ -7080,10 +7492,6 @@ msgid "Unfold All Lines"
msgstr "à¹à¸ªà¸”งทั้งหมด"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "คัดลอà¸à¸šà¸£à¸£à¸—ัดลงมา"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "เสนอà¹à¸™à¸°à¸„ำเต็ม"
@@ -7237,6 +7645,28 @@ msgid "View Plane Transform."
msgstr "ดูระนาบà¸à¸²à¸£à¸¢à¹‰à¸²à¸¢"
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "ไม่มี"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "รัà¸"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "เคลื่อนย้าย:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "อัตราส่วน:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "อัตราส่วน: "
@@ -7257,42 +7687,54 @@ msgid "Animation Key Inserted."
msgstr "à¹à¸—รà¸à¸„ีย์à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Pitch"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Yaw"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "ขนาด"
+#, fuzzy
+msgid "Size:"
+msgstr "ขนาด: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "ออบเจà¸à¸•์ที่วาด"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "จำนวนครั้งที่เปลี่ยนวัสดุ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "จำนวนครั้งที่เปลี่ยน Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "จำนวนครั้งที่เปลี่ยนพื้นผิว"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "จำนวนครั้งในà¸à¸²à¸£à¸§à¸²à¸”"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "มุมรูปทรง"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "มุมบน"
@@ -7445,6 +7887,11 @@ msgid "Freelook Slow Modifier"
msgstr "ปรับความเร็วมุมมองอิสระ"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "เปลี่ยนขนาดà¸à¸¥à¹‰à¸­à¸‡"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "ล็อคà¸à¸²à¸£à¸«à¸¡à¸¸à¸™à¸§à¸´à¸§à¹à¸¥à¹‰à¸§"
@@ -7462,6 +7909,11 @@ msgstr ""
"ไม่สามารถใช้เป็นตัวบ่งชี้ประสิทธิภาพในเà¸à¸¡à¸—ี่à¹à¸—้จริงได้"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "à¹à¸›à¸¥à¸‡à¹€à¸›à¹‡à¸™ %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "เครื่องมือเคลื่อนย้าย"
@@ -7480,7 +7932,8 @@ msgstr ""
"ตาที่เปิดครึ่งหนึ่ง: à¸à¸´à¸‹à¹‚มสามารถมองเห็นได้ผ่านพื้นผิวทึบà¹à¸ªà¸‡ (\"x-ray\")"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "สà¹à¸™à¸›à¹‚หนดà¸à¸±à¸šà¸Šà¸±à¹‰à¸™"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7488,16 +7941,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "ไม่สามารถหาชั้นà¹à¸‚็งที่จะสà¹à¸™à¸›à¸à¸±à¸šà¸—ี่เลือà¸"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"ลาà¸: หมุน\n"
-"Alt+ลาà¸: ย้าย\n"
-"Alt+คลิà¸à¸‚วา: เลือà¸à¸—ี่ซ้อนà¸à¸±à¸™"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "ใช้พื้นที่ภายใน"
@@ -7506,6 +7949,10 @@ msgid "Use Snap"
msgstr "ใช้สà¹à¸™à¸›"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "มุมล่าง"
@@ -7599,6 +8046,11 @@ msgid "View Grid"
msgstr "à¹à¸ªà¸”งเส้นตาราง"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "ตั้งค่ามุมมอง"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "ตั้งค่า..."
@@ -7888,11 +8340,6 @@ msgid "Snap Mode:"
msgstr "โหมดสà¹à¸™à¸›:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "ไม่มี"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "สà¹à¹à¸™à¸›à¸žà¸´à¸à¹€à¸‹à¸¥"
@@ -7913,165 +8360,603 @@ msgid "Step:"
msgstr "ขนาด:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "หมวดหมู่:"
+msgid "Separation:"
+msgstr "เว้น:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "ขอบเขตเทà¸à¹€à¸ˆà¸­à¸£à¹Œ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "เพิ่มทุà¸à¹„อเทม"
+#, fuzzy
+msgid "Colors"
+msgstr "สี"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "เพิ่มทั้งหมด"
+#, fuzzy
+msgid "Fonts"
+msgstr "ฟอนต์"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "รูปย่อ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "StyleBox"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "ไม่พบทรัพยาà¸à¸£à¸¢à¹ˆà¸­à¸¢"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "ค่าคงที่"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "ค่าคงที่สี"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "ไม่พบ!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "ไม่พบ!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "ไม่พบทรัพยาà¸à¸£à¸¢à¹ˆà¸­à¸¢"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "นำเข้าธีม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "ออà¸à¹‚ปรà¹à¸à¸£à¸¡?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸§à¸´à¹€à¸„ราะห์"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "ตัวà¸à¸£à¸­à¸‡:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "เลือà¸à¹‚หนด"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸•ัวเลือà¸à¸à¹ˆà¸­à¸™!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸•ัวเลือà¸à¸à¹ˆà¸­à¸™!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸•ัวเลือà¸à¸à¹ˆà¸­à¸™!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸•ัวเลือà¸à¸à¹ˆà¸­à¸™!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸•ัวเลือà¸à¸à¹ˆà¸­à¸™!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸•ัวเลือà¸à¸à¹ˆà¸­à¸™!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "ยุบเข้า"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "ขยายออà¸"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "เลือà¸à¹„ฟล์เทมเพลต"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "เลือà¸à¸ˆà¸¸à¸”"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "เลือà¸à¸—ั้งหมด"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "นำเข้าฉาà¸"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "ลบทั้งหมด"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "ลบไอเทม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
msgstr "ลบทั้งหมด"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "à¹à¸à¹‰à¹„ขธีม"
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "ลบทั้งหมด"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "ลบทั้งหมด"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "เมนูà¹à¸à¹‰à¹„ขธีม"
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "ลบทั้งหมด"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "เพิ่มไอเทมคลาส"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "เพิ่มไอเทมคลาส"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "เพิ่มไอเทม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "เพิ่มไอเทม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "เพิ่มทุà¸à¹„อเทม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "ลบไอเทมคลาส"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "ลบไอเทมคลาส"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "เปลี่ยนชื่อโหนด"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "เปลี่ยนชื่อโหนด"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "ลบไอเทมที่เลือà¸"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "ไฟล์ไม่ถูà¸à¸•้อง ไม่ใช่เลย์เอาต์ของ Audio Bus"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "จัดà¸à¸²à¸£à¹€à¸—มเพลต"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "ไอเทมที่สามารถà¹à¸à¹‰à¹„ขได้"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "ประเภท:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "ประเภท:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "เพิ่มไอเทม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "เพิ่มทุà¸à¹„อเทม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "ลบไอเทม"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "ลบไอเทมคลาส"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "สร้างเทมเพลตเปล่า"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "ลบไอเทมคลาส"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "ลบทั้งหมด"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "ตัวà¹à¸›à¸£à¸˜à¸µà¸¡"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "สร้างà¹à¸¡à¹ˆà¹à¸šà¸šà¹€à¸›à¸¥à¹ˆà¸²à¸ªà¸³à¸«à¸£à¸±à¸šà¸•ัวà¹à¸à¹‰à¹„ข"
+#, fuzzy
+msgid "Old Name:"
+msgstr "ชื่อโหนด:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "สร้างจาà¸à¸˜à¸µà¸¡à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™"
+#, fuzzy
+msgid "Import Items"
+msgstr "นำเข้าธีม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "ค่าเริ่มต้น"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "à¹à¸à¹‰à¹„ขธีม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "ลบรีซอร์ส"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "นำเข้าธีม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "เปลี่ยนชื่อà¹à¸—ร็à¸à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "เปลี่ยนชื่อหลายรายà¸à¸²à¸£"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "à¹à¸—นที่"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "ชนิด"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "เพิ่มไอเทม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "ชนิดโหนด"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "โหลดค่าเริ่มต้น"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "à¹à¸—นที่"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "ธีม"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "จัดà¸à¸²à¸£à¹€à¸—มเพลตà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "ตัวอย่าง"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "อัพเดทà¸à¸²à¸£à¸”ูตัวอย่าง"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "เลือภMesh ต้นฉบับ:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "สลับปุ่ม"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "ปิดà¸à¸²à¸£à¸—ำงานปุ่ม"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "รายà¸à¸²à¸£"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "รายà¸à¸²à¸£à¸—ี่ปิดใช้งาน"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "ทำเครื่องหมายไอเทม"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "ไอเทมมีเครื่องหมาย"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "ไอเทมเรดิโอ"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "เลือà¸à¹„อเทมเรดิโอ"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "หมวดชื่อ"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "เมนูย่อย"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "ไอเทมย่อย 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "ไอเทมย่อย 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "มี"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "หลาย"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "ปิดใช้งาน LineEdit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "à¹à¸—็บ 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "à¹à¸—็บ 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "à¹à¸—็บ 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "ไอเทมที่สามารถà¹à¸à¹‰à¹„ขได้"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "ผังย่อย"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "มี,หลาย,ตัวเลือà¸"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "ชนิดข้อมูล:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "รูปย่อ"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "รูปà¹à¸šà¸š"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "ฟอนต์"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "สี"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "ไฟล์ไม่ถูà¸à¸•้อง ไม่ใช่เลย์เอาต์ของ Audio Bus"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "ไฟล์ธีม"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8243,6 +9128,10 @@ msgid "Priority"
msgstr "à¸à¸²à¸£à¸ˆà¸±à¸”ลำดับความสำคัà¸"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "รูปย่อ"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z Index"
@@ -8573,11 +9462,6 @@ msgid "Commit Changes"
msgstr "à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡ commit"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "สถานะ"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "ดู diffs ของไฟล์à¸à¹ˆà¸­à¸™à¸—ี่จะ commit ไปยังเวอร์ชันล่าสุด"
@@ -9436,7 +10320,8 @@ msgid "VisualShader"
msgstr "เวอร์ชวลเชดเดอร์"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "à¹à¸à¹‰à¹„ขคุณสมบัติเวอร์ชวล"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9561,7 +10446,8 @@ msgid "Script"
msgstr "สคริปต์"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "โหมดส่งออà¸à¸ªà¸„ริปต์:"
#: editor/project_export.cpp
@@ -9569,19 +10455,21 @@ msgid "Text"
msgstr "ตัวอัà¸à¸©à¸£"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "คอมไพล์à¹à¸¥à¹‰à¸§"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "เข้ารหัส (ใส่คีย์ด้านล่าง)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "คีย์เข้ารหัสไม่ถูà¸à¸•้อง (ต้องมี 64 อัà¸à¸©à¸£)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "คีย์เข้ารหัสสคริปต์ (256 บิต à¸à¸²à¸™ 16):"
#: editor/project_export.cpp
@@ -9654,7 +10542,8 @@ msgid "Imported Project"
msgstr "นำเข้าโปรเจà¸à¸•์à¹à¸¥à¹‰à¸§"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "ชื่อโปรเจà¸à¸•์ไม่ถูà¸à¸•้อง"
#: editor/project_manager.cpp
@@ -9689,6 +10578,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "สร้างไฟล์ project.godot ไม่ได้"
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "ผิดพลาดขณะเปิดไฟล์à¹à¸žà¸„เà¸à¸ˆ, ไม่ใช่รูปà¹à¸šà¸š zip"
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "ผิดพลาดขณะà¹à¸¢à¸à¹„ฟล์ต่อไปนี้จาà¸à¹à¸žà¸„เà¸à¸ˆ:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "ติดตั้งà¹à¸žà¸„เà¸à¸ˆà¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“์!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "เปลี่ยนชื่อโปรเจà¸à¸•์"
@@ -9858,20 +10759,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "ยืนยันà¸à¸²à¸£à¸£à¸±à¸™à¹‚ปรเจà¸à¸•์ %d โปรเจà¸à¸•์ทีเดียว?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"ลบโปรเจà¸à¸•์ออà¸à¸ˆà¸²à¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­? \n"
-"โฟลเดอร์จะไม่ถูà¸à¹à¸à¹‰à¹„ข"
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "เลือà¸à¸­à¸¸à¸›à¸à¸£à¸“์จาà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"ลบโปรเจà¸à¸•์ออà¸à¸ˆà¸²à¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­?\n"
-"โฟลเดอร์จะไม่ถูà¸à¹à¸à¹‰à¹„ข"
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "เลือà¸à¸­à¸¸à¸›à¸à¸£à¸“์จาà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­"
#: editor/project_manager.cpp
msgid ""
@@ -9903,7 +10798,8 @@ msgid "Project Manager"
msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "โปรเจà¸à¸•์"
#: editor/project_manager.cpp
@@ -9915,10 +10811,25 @@ msgid "Last Modified"
msgstr "à¹à¸à¹‰à¹„ขล่าสุด"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "ส่งออà¸à¹‚ปรเจà¸à¸•์"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "เปลี่ยนชื่อโปรเจà¸à¸•์"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "สà¹à¸à¸™"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "โปรเจà¸à¸•์"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "เลือà¸à¹‚ฟลเดอร์เพื่อสà¹à¸à¸™"
@@ -9927,18 +10838,41 @@ msgid "New Project"
msgstr "โปรเจà¸à¸•์ใหม่"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "นำเข้าโปรเจà¸à¸•์à¹à¸¥à¹‰à¸§"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "เปลี่ยนชื่อโปรเจà¸à¸•์"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "ลบที่หายไป"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "เทมเพลต"
+msgid "About"
+msgstr "เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "ไลบรารีทรัพยาà¸à¸£"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "เริ่มใหม่ทันที"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "ลบทั้งหมด"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "ไม่สามารถรันโปรเจà¸à¸•์"
@@ -9951,8 +10885,14 @@ msgstr ""
"คุณต้องà¸à¸²à¸£à¸ªà¸³à¸£à¸§à¸ˆà¹‚ปรเจà¸à¸•์ตัวอย่างอย่างเป็นทางà¸à¸²à¸£à¹ƒà¸™à¹„ลบรารีไฟล์เนื้อหาหรือไม่?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "คุณสมบัติตัวà¸à¸£à¸­à¸‡"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9964,6 +10904,10 @@ msgid "Key "
msgstr "ปุ่ม "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "ปุ่มจอย"
@@ -10005,6 +10949,10 @@ msgstr "อุปà¸à¸£à¸“์ทั้งหมด"
msgid "Device"
msgstr "อุปà¸à¸£à¸“์"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "à¸à¸”ปุ่ม..."
@@ -10144,7 +11092,8 @@ msgid "Override for Feature"
msgstr "à¸à¸³à¸«à¸™à¸”ค่าเฉพาะของฟีเจอร์"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "เพิ่มà¸à¸²à¸£à¹à¸›à¸¥à¸‡"
#: editor/project_settings_editor.cpp
@@ -10152,11 +11101,13 @@ msgid "Remove Translation"
msgstr "ลบà¸à¸²à¸£à¹à¸›à¸¥à¸‡"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "เพิ่มตำà¹à¸«à¸™à¹ˆà¸‡à¹à¸—นที่"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "เพิ่มà¸à¸²à¸£à¹à¸—นที่"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "เพิ่มà¸à¸²à¸£à¹à¸—นที่"
#: editor/project_settings_editor.cpp
@@ -10428,6 +11379,10 @@ msgid "Post-Process"
msgstr "หลังประมวลผล"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "รูปà¹à¸šà¸š"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "เà¸à¹‡à¸š"
@@ -10592,12 +11547,30 @@ msgid "Delete node \"%s\"?"
msgstr "ลบโหนด \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "ไม่สามารถà¸à¸£à¸°à¸—ำà¸à¸±à¸šà¹‚หนดà¹à¸¡à¹ˆà¹„ด้"
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "ทำà¸à¸±à¸šà¸‰à¸²à¸à¸—ี่เป็นอินสà¹à¸•นซ์ไม่ได้"
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10655,6 +11628,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "ทำà¸à¸±à¸šà¹‚หนดที่ฉาà¸à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¸ªà¸·à¸šà¸—อดมาไม่ได้!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "ทำà¸à¸±à¸šà¸‰à¸²à¸à¸—ี่เป็นอินสà¹à¸•นซ์ไม่ได้"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "à¹à¸™à¸šà¸ªà¸„ริปต์"
@@ -10701,10 +11678,6 @@ msgid "Load As Placeholder"
msgstr "โหลดเป็นตัวà¹à¸—น"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "เปิดคู่มือ"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10991,6 +11964,12 @@ msgid ""
msgstr "หมายเหตุ: สคริปต์ในตัวมีข้อจำà¸à¸±à¸” ไม่สามารถà¹à¸à¹‰à¹„ขได้โดยใช้ตัวà¹à¸à¹‰à¹„ขภายนอà¸"
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "ชื่อคลาส:"
@@ -11059,6 +12038,10 @@ msgid "Copy Error"
msgstr "คัดลอà¸à¸œà¸´à¸”พลาด"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "หน่วยความจำวีดีโอ"
@@ -11342,6 +12325,16 @@ msgstr "ดิà¸à¸Šà¸±à¸™à¸™à¸²à¸£à¸µà¸­à¸´à¸™à¸ªà¹à¸•นซ์ผิดพล
msgid "Object can't provide a length."
msgstr "ไม่สามารถบอà¸à¸„วามยาวของออบเจà¸à¸•์ได้"
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "ส่งออà¸à¹„ลบรารี Mesh"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "ส่งออà¸..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "ระนาบถัดไป"
@@ -11383,6 +12376,11 @@ msgid "GridMap Paint"
msgstr "วาด GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "เติมที่เลือà¸à¹ƒà¸™ GridMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "จำà¸à¸±à¸”ด้วยเส้นตาราง"
@@ -11626,6 +12624,16 @@ msgid "Add Output Port"
msgstr "เพิ่มพอร์ตเอาท์พุต"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "เปลี่ยนชนิด"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "เปลี่ยนชื่อพอร์ตอินพุต"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "เขียนทับฟังà¸à¹Œà¸Šà¸±à¸™à¸šà¸´à¸§à¸—์อินที่มีอยู่"
@@ -11734,6 +12742,11 @@ msgid "Add Preload Node"
msgstr "เพิ่มโหนด Preload"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "เพิ่มโหนด"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "เพิ่มโหนดจาà¸à¸œà¸±à¸‡"
@@ -11959,10 +12972,6 @@ msgstr "ค้นหาโหนด VisualScript"
msgid "Get %s"
msgstr "รับ %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "ตั้ง %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "ชื่อà¹à¸žà¹‡à¸„เà¸à¸ˆà¸«à¸²à¸¢à¹„ป"
@@ -11992,6 +13001,40 @@ msgid "Select device from the list"
msgstr "เลือà¸à¸­à¸¸à¸›à¸à¸£à¸“์จาà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "ส่งออà¸à¸—ั้งหมด"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "ถอนà¸à¸²à¸£à¸•ิดตั้ง"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹‚หลด โปรดรอ..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "อินสà¹à¸•นซ์ฉาà¸à¹„ม่ได้!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸±à¸™à¸ªà¸„ริปต์..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "ไม่สามารถสร้างโฟลเดอร์"
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "ไม่สามารถหาเครื่องมือ 'apksigner'"
@@ -12092,6 +13135,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr "\"Export AAB\" จะใช้ได้เฉพาะเมื่อเปิดใช้งาน \"Use Custom Build\""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"à¸à¸³à¸¥à¸±à¸‡à¸ªà¹à¸à¸™à¹„ฟล์,\n"
+"à¸à¸£à¸¸à¸“ารอ..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "เปิดเทมเพลตเพื่อส่งออà¸à¹„ม่ได้:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸žà¸´à¹ˆà¸¡ %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "ส่งออà¸à¸—ั้งหมด"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr "ชื่อไฟล์ผิดพลาด! à¹à¸­à¸™à¸”รอยด์à¹à¸­à¸›à¸šà¸±à¸™à¹€à¸”ิลจำเป็นต้องมีนามสà¸à¸¸à¸¥ *.aab"
@@ -12104,6 +13189,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "ชื่อไฟล์ผิดพลาด! à¹à¸­à¸™à¸”รอยด์ APK จำเป็นต้องมีนามสà¸à¸¸à¸¥ *.apk"
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12123,6 +13212,21 @@ msgstr ""
"โปรดติดตั้งเทมเพลตà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸­à¸™à¸”รอยด์ใหม่จาà¸à¹€à¸¡à¸™à¸¹ \"โปรเจà¸à¸•์\""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "ไม่พบไฟล์ project.godot"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "เขียนไฟล์ไม่ได้:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¹‚ปรเจคà¹à¸­à¸™à¸”รอยด์ (gradle)"
@@ -12145,11 +13249,54 @@ msgid ""
msgstr ""
"ไม่สามารถคัดลอà¸à¹à¸¥à¸°à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸Šà¸·à¹ˆà¸­à¹„ฟล์ส่งออภตรวจสอบไดเร็à¸à¸—อรีโปรเจ็à¸à¸•์ gradle สำหรับเอาต์พุต"
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "ไม่พบà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¸„อนทัวร์..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "เปิดเทมเพลตเพื่อส่งออà¸à¹„ม่ได้:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸žà¸´à¹ˆà¸¡ %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "เขียนไฟล์ไม่ได้:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "จัดเรียง APK..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "ไม่มีตัวระบุ"
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "ไม่อนุà¸à¸²à¸•ให้ใช้อัà¸à¸‚ระ '% s' ในตัวระบุ"
@@ -12178,10 +13325,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "รันไฟล์ HTML ที่ส่งออà¸à¹ƒà¸™à¹€à¸šà¸£à¸²à¹€à¸‹à¸­à¸£à¹Œ"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "เขียนไฟล์ไม่ได้:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "เปิดเทมเพลตเพื่อส่งออà¸à¹„ม่ได้:"
@@ -12190,16 +13333,49 @@ msgid "Invalid export template:"
msgstr "เทมเพลตส่งออà¸à¹„ม่ถูà¸à¸•้อง:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "เขียนไฟล์ไม่ได้:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "เขียนไฟล์ไม่ได้:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "ไม่สามารถอ่านโครงสร้าง HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "ไม่สามารถอ่านไฟล์ภาพขณะเริ่มเà¸à¸¡:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "ไม่สามารถสร้างโฟลเดอร์"
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "ใช้ภาพขณะเริ่มเà¸à¸¡à¸›à¸£à¸´à¸¢à¸²à¸¢"
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "ผิดพลาดขณะบันทึà¸à¸‰à¸²à¸"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "ระบุไม่ถูà¸à¸•้อง:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12586,6 +13762,13 @@ msgstr ""
"ไดรเวอร์วีดีโอ GLES2 ไม่สนับสนุน GIProbe\n"
"ใช้ BakedLightmap à¹à¸—น"
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "SpotLight ที่มีมุมมาà¸à¸à¸§à¹ˆà¸² 90 ไม่สามารถสร้างเงา"
@@ -12666,6 +13849,18 @@ msgstr "ข้อต่อไม่ได้เชื่อมโยงà¸à¸±à¸š
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "โหนด A à¹à¸¥à¸°à¹‚หนด B จะต้องเป็น PhysicsBody ที่à¹à¸•à¸à¸•่างà¸à¸±à¸™"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12674,6 +13869,46 @@ msgstr ""
"คุณสมบัติ \"Remote Path\" จะต้องชี้ไปยังโหนด Spatial หรือ Spatialย่อย "
"ที่ถูà¸à¸•้องเพื่อที่จะทำงานได้"
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "วัตถุนี้จะถูà¸à¸¥à¸°à¹€à¸§à¹‰à¸™à¸ˆà¸™à¸à¸§à¹ˆà¸²à¸ˆà¸°à¸•ั้ง mesh"
@@ -12728,6 +13963,10 @@ msgstr "ที่โหนด BlendTree '%s' ไม่พบà¹à¸­à¸™à¸´à¹€à¸¡à¸
msgid "Animation not found: '%s'"
msgstr "ไม่พบà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "ในโหนด '%s', à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™à¸œà¸´à¸”พลาด: '%s'."
@@ -12891,6 +14130,27 @@ msgid "Invalid comparison function for that type."
msgstr "ฟังà¸à¹Œà¸Šà¸±à¸™à¸à¸²à¸£à¹€à¸›à¸£à¸µà¸¢à¸šà¹€à¸—ียบไม่ถูà¸à¸•้องสำหรับประเภทนั้น"
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Varyings สามารถà¸à¸³à¸«à¸™à¸”ในังà¸à¹Œà¸Šà¸±à¸™à¹€à¸§à¸­à¸£à¹Œà¹€à¸—็à¸à¸‹à¹Œ"
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ให้à¸à¸±à¸šà¸Ÿà¸±à¸‡à¸à¹Œà¸Šà¸±à¸™"
@@ -12899,13 +14159,177 @@ msgid "Assignment to uniform."
msgstr "à¸à¸²à¸£à¸à¸³à¸«à¸™à¸”ให้à¸à¸±à¸šà¸¢à¸¹à¸™à¸´à¸Ÿà¸­à¸£à¹Œà¸¡"
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Varyings สามารถà¸à¸³à¸«à¸™à¸”ในังà¸à¹Œà¸Šà¸±à¸™à¹€à¸§à¸­à¸£à¹Œà¹€à¸—็à¸à¸‹à¹Œ"
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได้"
+#~ msgid "Package Contents:"
+#~ msgstr "เนื้อหาà¹à¸žà¸„เà¸à¸ˆ:"
+
+#~ msgid "Singleton"
+#~ msgstr "ซิงเà¸à¸´à¸¥à¸•ัน"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "ลบโปรไฟล์ '%s' หรือไม่? (ทำà¸à¸¥à¸±à¸šà¹„ม่ได้)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "เปิดà¸à¸²à¸£à¸—ำงานคุณสมบัติ:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "เปิดà¸à¸²à¸£à¸—ำงานฟีเจอร์:"
+
+#~ msgid "Unset"
+#~ msgstr "ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸•ั้งค่า"
+
+#~ msgid "Class Options"
+#~ msgstr "ตั้งค่าคลาส"
+
+#~ msgid "Set"
+#~ msgstr "à¸à¸³à¸«à¸™à¸”"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "บันทึà¸à¸—รัพยาà¸à¸£ %s ที่ถูà¸à¹à¸à¹‰à¹„ขสำเร็จ"
+
+#~ msgid "Q&A"
+#~ msgstr "ถาม/ตอบ"
+
+#~ msgid "Status:"
+#~ msgstr "สถานะ:"
+
+#~ msgid "Edit:"
+#~ msgstr "à¹à¸à¹‰à¹„ข:"
+
+#~ msgid "Redownload"
+#~ msgstr "ดาวน์โหลดอีà¸à¸„รั้ง"
+
+#~ msgid "(Installed)"
+#~ msgstr "(ติดตั้งà¹à¸¥à¹‰à¸§)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(ไม่พบ)"
+
+#~ msgid "Request Failed."
+#~ msgstr "ร้องขอผิดพลาด"
+
+#~ msgid "Redirect Loop."
+#~ msgstr "เปลี่ยนทางมาà¸à¹€à¸à¸´à¸™à¹„ป"
+
+#~ msgid "Download Complete."
+#~ msgstr "ดาวน์โหลดเสร็จสิ้น"
+
+#~ msgid "Remove Template"
+#~ msgstr "ลบเทมเพลต"
+
+#~ msgid "Download Templates"
+#~ msgstr "ดาวน์โหลดเทมเพลต"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "เลือภmirror จาà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­: (Shift+คลิà¸: เปิดในเบราเซอร์)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "ย้ายไปถังขยะ"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "ขยายคุณสมบัติทั้งหมด"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "ยุบคุณสมบัติทั้งหมด"
+
+#~ msgid "Copy Params"
+#~ msgstr "คัดลอà¸à¸žà¸²à¸£à¸²à¸¡à¸´à¹€à¸•อร์"
+
+#~ msgid "Open in Help"
+#~ msgstr "เปิดในคู่มือ"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "เขียนทับà¸à¸¥à¹‰à¸­à¸‡à¸‚องเà¸à¸¡à¸ªà¹Œ\n"
+#~ "ไม่มีอินสà¹à¸•นซ์ของเà¸à¸¡à¸ªà¹Œà¸—ำงานอยู่"
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "ลาà¸: หมุน"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr "à¸à¸” 'v' เพื่อเปลี่ยนจุดหมุน 'Shift+v' เพื่อลาà¸à¸ˆà¸¸à¸”หมุน"
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+คลิà¸à¸‚วา: เลือà¸à¸—ี่ซ้อนà¸à¸±à¸™"
+
+#~ msgid "Clone Down"
+#~ msgstr "คัดลอà¸à¸šà¸£à¸£à¸—ัดลงมา"
+
+#~ msgid "Yaw"
+#~ msgstr "Yaw"
+
+#~ msgid "Size"
+#~ msgstr "ขนาด"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "ลาà¸: หมุน\n"
+#~ "Alt+ลาà¸: ย้าย\n"
+#~ "Alt+คลิà¸à¸‚วา: เลือà¸à¸—ี่ซ้อนà¸à¸±à¸™"
+
+#~ msgid "Sep.:"
+#~ msgstr "หมวดหมู่:"
+
+#~ msgid "Add All"
+#~ msgstr "เพิ่มทั้งหมด"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "เมนูà¹à¸à¹‰à¹„ขธีม"
+
+#~ msgid "Create Empty Template"
+#~ msgstr "สร้างเทมเพลตเปล่า"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "สร้างà¹à¸¡à¹ˆà¹à¸šà¸šà¹€à¸›à¸¥à¹ˆà¸²à¸ªà¸³à¸«à¸£à¸±à¸šà¸•ัวà¹à¸à¹‰à¹„ข"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "สร้างจาà¸à¸˜à¸µà¸¡à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™"
+
+#~ msgid "Data Type:"
+#~ msgstr "ชนิดข้อมูล:"
+
+#~ msgid "Theme File"
+#~ msgstr "ไฟล์ธีม"
+
+#~ msgid "Compiled"
+#~ msgstr "คอมไพล์à¹à¸¥à¹‰à¸§"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "ลบโปรเจà¸à¸•์ออà¸à¸ˆà¸²à¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­? \n"
+#~ "โฟลเดอร์จะไม่ถูà¸à¹à¸à¹‰à¹„ข"
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "ลบโปรเจà¸à¸•์ออà¸à¸ˆà¸²à¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­?\n"
+#~ "โฟลเดอร์จะไม่ถูà¸à¹à¸à¹‰à¹„ข"
+
+#~ msgid "Templates"
+#~ msgstr "เทมเพลต"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "เพิ่มตำà¹à¸«à¸™à¹ˆà¸‡à¹à¸—นที่"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "ไม่สามารถà¸à¸£à¸°à¸—ำà¸à¸±à¸šà¹‚หนดà¹à¸¡à¹ˆà¹„ด้"
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "ไม่สามารถอ่านไฟล์ภาพขณะเริ่มเà¸à¸¡:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "ใช้ภาพขณะเริ่มเà¸à¸¡à¸›à¸£à¸´à¸¢à¸²à¸¢"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "à¹à¸—ร็à¸à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¹ˆà¸™à¹„ม่สามารถเล่นตัวมันเองได้ à¹à¸•่สามารถเล่นตัวเล่นอื่นได้"
@@ -12955,9 +14379,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "มีไฟล์หรือโฟลเดอร์ชื่อเดียวà¸à¸±à¸™à¸­à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§"
-#~ msgid "Aligning APK..."
-#~ msgstr "จัดเรียง APK..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "ไม่สามารถจัดเรียง APK ได้สำเร็จ"
@@ -13019,9 +14440,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "ฉาà¸à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¸¢à¸±à¸‡à¹„ม่ได้บันทึภà¸à¸£à¸¸à¸“าบันทึà¸à¸à¹ˆà¸­à¸™à¹€à¸£à¸´à¹ˆà¸¡à¹‚ปรà¹à¸à¸£à¸¡"
-#~ msgid "Not in resource path."
-#~ msgstr "ไม่อยู่ในโฟลเดอร์รีซอร์ส"
-
#~ msgid "Revert"
#~ msgstr "คืนà¸à¸¥à¸±à¸š"
@@ -13107,9 +14525,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "Input"
#~ msgstr "เพิ่มอินพุต"
-#~ msgid "Properties:"
-#~ msgstr "คุณสมบัติ:"
-
#, fuzzy
#~ msgid "Methods:"
#~ msgstr "รายชื่อเมท็อด"
@@ -13411,10 +14826,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgstr "ตัดเส้น"
#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸•ัวเลือà¸à¸à¹ˆà¸­à¸™!"
-
-#, fuzzy
#~ msgid "Add Node.."
#~ msgstr "เพิ่มโหนด"
@@ -13482,9 +14893,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "Public Methods:"
#~ msgstr "เมท็อด:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "ตัวà¹à¸›à¸£à¸˜à¸µà¸¡"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "ตัวà¹à¸›à¸£à¸˜à¸µà¸¡:"
@@ -13508,10 +14916,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "Match case"
#~ msgstr "ตรงตามอัà¸à¸©à¸£à¸žà¸´à¸¡à¸žà¹Œà¹€à¸¥à¹‡à¸-ใหà¸à¹ˆ"
-#, fuzzy
-#~ msgid "Filter: "
-#~ msgstr "ตัวà¸à¸£à¸­à¸‡:"
-
#~ msgid "Ok"
#~ msgstr "ตà¸à¸¥à¸‡"
@@ -13548,9 +14952,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "Rotate 270 degrees"
#~ msgstr "หมุน 270 องศา"
-#~ msgid "Variable"
-#~ msgstr "ตัวà¹à¸›à¸£"
-
#~ msgid "Errors:"
#~ msgstr "ข้อผิดพลาด:"
@@ -13638,9 +15039,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "Set Transitions to:"
#~ msgstr "à¸à¸³à¸«à¸™à¸”ทรานสิชันเป็น:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "เปลี่ยนชื่อà¹à¸—ร็à¸à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹à¸—ร็à¸à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
@@ -13791,12 +15189,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "StyleBox Preview:"
#~ msgstr "ตัวอย่าง StyleBox:"
-#~ msgid "StyleBox"
-#~ msgstr "StyleBox"
-
-#~ msgid "Separation:"
-#~ msgstr "เว้น:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¹à¸šà¹ˆà¸‡à¸ªà¹ˆà¸§à¸™ Texture"
@@ -13868,12 +15260,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "ไม่พบไฟล์ project.godot"
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "ไม่พบไฟล์ project.godot"
-
-#~ msgid "Not found!"
-#~ msgstr "ไม่พบ!"
-
#~ msgid "Replace By"
#~ msgstr "à¹à¸—นที่ด้วย"
@@ -14228,9 +15614,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "คุณภาพà¸à¸²à¸£à¸šà¸µà¸šà¸­à¸±à¸” Texture (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "ตัวเลือภTexture"
-
#~ msgid "Please specify some files!"
#~ msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸ªà¸±à¸à¹„ฟล์!"
@@ -14383,9 +15766,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "Zoom Set..."
#~ msgstr "ตั้งค่าà¸à¸²à¸£à¸‹à¸¹à¸¡..."
-#~ msgid "Set a Value"
-#~ msgstr "เซ็ตค่า"
-
#~ msgid "Parse BBCode"
#~ msgstr "ประมวลผล BBCode"
@@ -14509,9 +15889,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "Instance at Cursor"
#~ msgstr "อินสà¹à¸•นซ์ที่เคอร์เซอร์"
-#~ msgid "Could not instance scene!"
-#~ msgstr "อินสà¹à¸•นซ์ฉาà¸à¹„ม่ได้!"
-
#~ msgid "Ambient Light Color:"
#~ msgstr "สีของà¹à¸ªà¸‡à¹‚ดยรอบ:"
@@ -14577,9 +15954,6 @@ msgstr "ค่าคงที่ไม่สามารถà¹à¸à¹‰à¹„ขได
#~ msgid "City"
#~ msgstr "เมือง"
-#~ msgid "State"
-#~ msgstr "รัà¸"
-
#~ msgid "2 letter country code"
#~ msgstr "รหัสประเทศ 2 ตัวอัà¸à¸©à¸£"
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index 578d7b48d0..8a735113cc 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -583,7 +583,8 @@ msgstr "Saniye"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -609,7 +610,8 @@ msgstr "Seçimi Ölçekle"
msgid "Scale From Cursor"
msgstr "İmleçten Ölçekle"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Seçimi Çoğalt"
@@ -630,6 +632,11 @@ msgid "Go to Previous Step"
msgstr "Önceki Adıma Git"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Sıfırla"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Animasyonu EniyileÅŸtir"
@@ -646,6 +653,11 @@ msgid "Use Bezier Curves"
msgstr "Bezier EÄŸrileri Kullan"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "İzleri Yapıştır"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Anim. EniyileÅŸtirici"
@@ -694,7 +706,7 @@ msgid "Select Tracks to Copy"
msgstr "Kopyalanacak izleri seç"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -780,12 +792,14 @@ msgid "Toggle Scripts Panel"
msgstr "Betikler Panelini Aç/Kapa"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Yaklaştır"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -842,11 +856,9 @@ msgid "Add"
msgstr "Ekle"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -896,6 +908,7 @@ msgstr "Sinyale bağlanamıyor"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -966,7 +979,8 @@ msgid "Edit..."
msgstr "Düzenle..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Yönteme Git"
#: editor/create_dialog.cpp
@@ -981,6 +995,14 @@ msgstr "DeÄŸiÅŸtir"
msgid "Create New %s"
msgstr "Yeni %s OluÅŸtur"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "\"%s\" için sonuç yok."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -1002,8 +1024,8 @@ msgstr "Ara:"
msgid "Matches:"
msgstr "EÅŸleÅŸmeler:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1079,20 +1101,24 @@ msgid "Owners Of:"
msgstr "Şunların sahipleri:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Seçilen dosyalar kaldırılsın mı? (geri alınamaz)\n"
"Kaldırılan dosyaları sistemin geri dönüşüm kutusunda bulabilir ve geri "
"yükleyebilirsiniz."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Diğer kimi dosyaların çalışması için kaldırdığınız dosyalar gerekli "
"görülmekte.\n"
@@ -1141,7 +1167,7 @@ msgstr "Orphan Kaynak Araştırıcı"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1267,28 +1293,41 @@ msgstr "BileÅŸenler"
msgid "Licenses"
msgstr "Lisanslar"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Paket dosyası açılırken hata oluştu, zip formatında değil."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Paket dosyası açılırken hata (ZIP formatında değil)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Zaten Var)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Varlıklar Çıkartılıyor"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Aşağıdaki dosyaların, çıkından ayıklanma işlemi başarısız oldu:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Ve %s kadar dosya daha."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Paket Başarı ile Kuruldu!"
#: editor/editor_asset_installer.cpp
@@ -1296,16 +1335,13 @@ msgstr "Paket Başarı ile Kuruldu!"
msgid "Success!"
msgstr "Başarılı!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Paket İçerikleri:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Kur"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Paket Yükleyici"
#: editor/editor_audio_buses.cpp
@@ -1369,7 +1405,8 @@ msgid "Bypass"
msgstr "Baypas"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Bus ayarları"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1449,7 +1486,7 @@ msgstr "Bus ekle"
msgid "Add a new Audio Bus to this layout."
msgstr "Bu yerleşim planına yeni ses veri yolu ekle."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1536,6 +1573,15 @@ msgid "Can't add autoload:"
msgstr "Otomatik yükleme eklenemiyor:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Dosya yok."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "KendindenYüklenme Ekle"
@@ -1551,16 +1597,17 @@ msgid "Node Name:"
msgstr "Düğüm adı:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "İsim"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Tekil nesne"
+#, fuzzy
+msgid "Global Variable"
+msgstr "DeÄŸiÅŸken"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Parametreleri Yapıştır"
@@ -1576,7 +1623,7 @@ msgstr "Yerel değişiklikler kayıt ediliyor..."
msgid "Updating scene..."
msgstr "Sahne güncelleniyor..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "(boÅŸ)"
@@ -1731,8 +1778,49 @@ msgid "Import Dock"
msgstr "Dock İçe Aktar"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "'%s' profilini sil? (geri alınamaz)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Åžuanki)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1763,15 +1851,18 @@ msgid "Enable Contextual Editor"
msgstr "İçeriksel Düzenleyiciyi Etkinleştir"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Etkin Özellikler:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Özellikler:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Aktif Özellikler:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Özellikler"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Aktif Sınıflar:"
#: editor/editor_feature_profile.cpp
@@ -1790,25 +1881,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Profil '%s' yoluna kaydedilirken hata oluÅŸtu."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Ayarı kaldır"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Varsayılanlara dön"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Åžu Anki Profil:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Geçerli Yap"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Profili Sil"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Yeni"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Döşemeyi Kaldır"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Kullanılabilir Profiller:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Geçerli Yap"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "İçe Aktar"
@@ -1817,20 +1917,22 @@ msgid "Export"
msgstr "Dışa Aktar"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Kullanılabilir Profiller:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Åžu Anki Profil:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Sınıf Seçenekleri"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Doku Seçenekleri"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Yeni profil ismi:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Profili Sil"
+msgid "New profile name:"
+msgstr "Yeni profil ismi:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1853,7 +1955,8 @@ msgid "Select Current Folder"
msgstr "Geçerli Klasörü Seç"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Dosya var. Üzerine Yazılsın mı?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1907,9 +2010,10 @@ msgid "Open a File or Directory"
msgstr "Bir Dosya ya da Dizin Aç"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Kaydet"
@@ -1990,8 +2094,7 @@ msgid "Directories & Files:"
msgstr "Dizinler & Dosyalar:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Önizleme:"
@@ -2064,7 +2167,7 @@ msgstr "Tema Özellikleri"
msgid "Enumerations"
msgstr "Numaralandırmalar"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Sabitler"
@@ -2153,7 +2256,7 @@ msgstr "Metot"
msgid "Signal"
msgstr "Sinyal"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Sabit"
@@ -2169,9 +2272,10 @@ msgstr "Tema Özelliği"
msgid "Property:"
msgstr "Özellik:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Ayarla"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Ayarla %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2186,7 +2290,7 @@ msgid "Copy Selection"
msgstr "Seçimi Kopyala"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2250,7 +2354,8 @@ msgid "Imported resources can't be saved."
msgstr "İçe aktarılmış kaynaklar kaydedilemez."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Tamam"
@@ -2470,18 +2575,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Kapatmadan önce değişklikler buraya '%s' kaydedilsin mi?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "'%s' deÄŸiÅŸtirilmiÅŸ kaynak kaydedildi."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Sahneyi kaydedilmesi için kök düğüm gerekiyor."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Sahneyi Farklı Kaydet..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Bu işlem bir sahne olmadan yapılamaz."
@@ -2677,7 +2787,7 @@ msgstr "Yerleşim Düzenini Sil"
msgid "Default"
msgstr "Varsayılan"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Dosya Sisteminde Göster"
@@ -2858,6 +2968,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Orphan Kaynak Göstericisi..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Projeyi Yeniden Adlandır"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Proje Listesine Çık"
@@ -3015,20 +3130,25 @@ msgstr "Dışa Aktarım Şablonlarını Yönet..."
msgid "Help"
msgstr "Yardım"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Çevrimiçi Belgeler"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Klavuzu Aç"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "S&C"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Hata Bildir"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "Bir DeÄŸer Ata"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Belgelendirme Hatası Bildir"
@@ -3037,7 +3157,8 @@ msgid "Community"
msgstr "Topluluk"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Hakkında"
#: editor/editor_node.cpp
@@ -3135,6 +3256,16 @@ msgid "Manage Templates"
msgstr "Şablonlarını Yönet"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Dosyadan Kur"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Bir Kaynak Örüntü Seçin:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3172,7 +3303,7 @@ msgstr "Şablonları Zip Dosyasından İçeri Aktar"
msgid "Template Package"
msgstr "Åžablon Paketi"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Betikevini Dışa Aktar"
@@ -3215,6 +3346,11 @@ msgid "Select"
msgstr "Seç"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Geçerli Klasörü Seç"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "2B Düzenleyiciyi Aç"
@@ -3246,6 +3382,11 @@ msgstr "Uyarı!"
msgid "No sub-resources found."
msgstr "Alt kaynağı bulunamadı."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Alt kaynağı bulunamadı."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Mesh Önizlemeleri Oluşturuluyor"
@@ -3270,33 +3411,34 @@ msgstr "Yüklü Eklentiler:"
msgid "Update"
msgstr "Güncelle"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Sürüm:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Yazar:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Durum:"
+#, fuzzy
+msgid "Author"
+msgstr "Yazarlar"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Düzenle:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Durum"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Ölçüm:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Kare Zamanı (sn)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Ortalama Zaman (sn)"
#: editor/editor_profiler.cpp
@@ -3316,6 +3458,16 @@ msgid "Self"
msgstr "Kendi"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Kare #:"
@@ -3357,14 +3509,6 @@ msgstr "Geçersiz Yol"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Seçili kaynak (%s) bu özellik (%s) için beklenen herhangi bir tip ile "
-"uyuÅŸmuyor."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3389,40 +3533,6 @@ msgid "Pick a Viewport"
msgstr "Bir Görüntükapısı Seçin"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Yeni Betik"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Betik Aç"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Yeni %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Benzersiz Yap"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Yapıştır"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Şuna Dönüştür %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Seçili düğüm bir Viewport değil!"
@@ -3451,6 +3561,49 @@ msgstr "Yeni DeÄŸer:"
msgid "Add Key/Value Pair"
msgstr "Anahtar/Değer İkilisini Ekle"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Seçili kaynak (%s) bu özellik (%s) için beklenen herhangi bir tip ile "
+"uyuÅŸmuyor."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Benzersiz Yap"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Yapıştır"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Şuna Dönüştür %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Yeni %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Yeni Betik"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Betik Aç"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3486,7 +3639,8 @@ msgid "Did you forget the '_run' method?"
msgstr "'_run()' metodunu unuttunuz mu?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Tam sayıya yuvarlamak için Ctrl tuşuna basılı tutun. Hassas değişiklikler "
"için Shift tuşuna basılı tutun."
@@ -3508,115 +3662,69 @@ msgid "Import From Node:"
msgstr "Düğümden İçe Aktar:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Yeniden İndir"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Kaldır"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Kurulu)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "İndir"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Open the folder containing these templates."
msgstr ""
-"Resmi dışa aktarım şablonları, geliştirici sürümleri için kullanılabilir "
-"deÄŸildir."
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Mevcut DeÄŸil)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Åžuanki)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "'%s' dosyası bulunamadı."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Aynalar alınıyor, lütfen bekleyin..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Şablon sürümünü kaldır '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Dışa aktarım kalıplarının zipi açılamadı."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Şablonların içinde geçersiz version.txt formatı: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Şablonların içinde version.txt bulunamadı."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Şablonlar için yol oluşturulurken hata:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Dışa Aktarım Şablonları Çıkartılıyor"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "İçe Aktarım:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Kaynaklar listesini alırken hata."
+msgid "Error requesting URL:"
+msgstr "URL isteği hatası:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "JSON sunucuları listesini alırken hata. Lütfen bu hatayı bildirin!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Aynaya bağlanılıyor..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Bu sürüm için indirme bağlantıları bulunamadı. Doğrudan indirme sadece resmi "
-"dağıtımlar için mecut."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Ana makine adı çözümlenemedi:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Çözümlenemedi."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Ana makineye bağlanılamadı:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Bağlanamadı."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Ana makineden cevap yok:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Cevap yok."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "İstek Başarısız Oldu."
+msgid "Request failed."
+msgstr "İstek başarısız."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Yönlendirme Döngüsü."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "İstem Başarısız, çok fazla yönlendirme"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Başarısız:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "İstek başarısız."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "İndirme Tamamlandı."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3631,12 +3739,25 @@ msgstr ""
"Sorunlu ÅŸablon arÅŸivi ÅŸurada bulunabilir: '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "URL isteği hatası:"
+msgid "Error getting the list of mirrors."
+msgstr "Kaynaklar listesini alırken hata."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Aynaya bağlanılıyor..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "JSON sunucuları listesini alırken hata. Lütfen bu hatayı bildirin!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Bu sürüm için indirme bağlantıları bulunamadı. Doğrudan indirme sadece resmi "
+"dağıtımlar için mecut."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3681,44 +3802,140 @@ msgid "SSL Handshake Error"
msgstr "SSL El Sıkışma Hatası"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Dışa aktarım kalıplarının zipi açılamadı."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Şablonların içinde geçersiz version.txt formatı: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Şablonların içinde version.txt bulunamadı."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Şablonlar için yol oluşturulurken hata:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Dışa Aktarım Şablonları Çıkartılıyor"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "İçe Aktarım:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Şablon sürümünü kaldır '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Android İnşa Kaynakları Çıkartılıyor"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Dışa Aktarım Şablonu Yöneticisi"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Şu Anki Sürüm:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Yüklü Sürümler:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Dosya Aç"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Kaldır"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Sayaç için başlangıç değeri"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "İndirme Hatası"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+"Resmi dışa aktarım şablonları, geliştirici sürümleri için kullanılabilir "
+"deÄŸildir."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Dosyadan Kur"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Şablonu Kaldır"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Şablonları Zip Dosyasından İçeri Aktar"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Vazgeç"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Şablon Dosyası Seç"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Dışa aktarım kalıplarının zipi açılamadı."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Godot Dışa Aktarım Şablonları"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Yüklü Sürümler:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Dışa Aktarım Şablonu Yöneticisi"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Kaldır"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Şablonları İndir"
+msgid "Select Template File"
+msgstr "Şablon Dosyası Seç"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr "Godot Dışa Aktarım Şablonları"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Listeden ayna seç: (Shift+Tıkla: Tarayıcıda Aç)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3853,29 +4070,62 @@ msgstr "Yeni Betik..."
msgid "New Resource..."
msgstr "Yeni Kaynak..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Hepsini GeniÅŸlet"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Hepsini Daralt"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Çoğalt..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Dosyaları ara"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Çöpe At"
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Son DeÄŸiÅŸiklik"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Son DeÄŸiÅŸiklik"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Çoğalt..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Yeniden Adlandır..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Önceki Klasör/Dosya"
@@ -3959,10 +4209,6 @@ msgstr "Bul..."
msgid "Replace..."
msgstr "DeÄŸiÅŸtir..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Vazgeç"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Bul: "
@@ -4189,53 +4435,55 @@ msgid "Failed to load resource."
msgstr "Kaynak yükleme başarısız oldu."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Tüm Özellikleri Genişlet"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Özellikler"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Tüm Özellikleri Daralt"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Farklı Kaydet..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Özellikler"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Değişkenleri Tıpkıla"
+msgid "Make Sub-Resources Unique"
+msgstr "Alt Kaynakları Eşsiz Yap"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Kaynak Panosunu Düzenle"
+msgid "Create a new resource in memory and edit it."
+msgstr "Bellekte yeni bir kaynak oluşturun ve onu düzenleyin."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Kaynağı Tıpkıla"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Var olan bir kaynağı diskten yükleyin ve düzenleyin."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Gömülü Yap"
+msgid "Save the currently edited resource."
+msgstr "Düzenlenen kaynağı kaydedin."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Alt Kaynakları Eşsiz Yap"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Farklı Kaydet..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Yardımda Aç"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Kaynak yolunda deÄŸil."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Bellekte yeni bir kaynak oluşturun ve onu düzenleyin."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Kaynak Panosunu Düzenle"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Var olan bir kaynağı diskten yükleyin ve düzenleyin."
+msgid "Copy Resource"
+msgstr "Kaynağı Tıpkıla"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Düzenlenen kaynağı kaydedin."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Gömülü Yap"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4250,14 +4498,24 @@ msgid "History of recently edited objects."
msgstr "En son düzenlenen nesnelerin geçmişi."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Nesne özellikleri."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Klavuzu Aç"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Klavuzu Aç"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Özellikleri süz"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Nesne özellikleri."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "DeÄŸiÅŸiklikler Kaybolabilir!"
@@ -4285,6 +4543,15 @@ msgstr "Eklentinin Adı:"
msgid "Subfolder:"
msgstr "Alt Klasör:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Yazar:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Sürüm:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Dil:"
@@ -4490,7 +4757,8 @@ msgid "Blend:"
msgstr "Karışma:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Parametre DeÄŸiÅŸti"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4707,6 +4975,11 @@ msgid "Animation"
msgstr "Animasyon"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Yeni"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Geçişleri Düzenle..."
@@ -5050,10 +5323,18 @@ msgid "View Files"
msgstr "Dosyaları Görüntüle"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "İndir"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Bağlantı hatası, lütfen tekrar deneyiniz."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Bağlanamadı."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Ana makineye bağlanılamadı:"
@@ -5062,16 +5343,20 @@ msgid "No response from host:"
msgstr "Ana makineden cevap yok:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Cevap yok."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Ana makine adı çözümlenemedi:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "İstem başarısız, dönen kod:"
+msgid "Can't resolve."
+msgstr "Çözümlenemedi."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "İstek başarısız."
+msgid "Request failed, return code:"
+msgstr "İstem başarısız, dönen kod:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5098,6 +5383,10 @@ msgid "Timeout."
msgstr "Zaman aşımı."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Başarısız:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "Kötü indirme sağlaması, dosya üzerinde oynama yapılmış."
@@ -5198,8 +5487,12 @@ msgid "All"
msgstr "Hepsi"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "\"%s\" için sonuç yok."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5241,6 +5534,10 @@ msgstr "Yükle..."
msgid "Assets ZIP File"
msgstr "Varlıkların ZIP Dosyası"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5250,9 +5547,10 @@ msgstr ""
"Sahneyi kaydedip tekrar deneyin."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"Pişirilecek örüntüler yok. Örüntülerin UV2 kanalı içerdiğinden ve 'Bake "
"Light' bayrağınının açık olduğundan emin olun."
@@ -5497,9 +5795,10 @@ msgstr "Çapaları Değiştir"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Oyun Kamerası Değiştir\n"
"Oyun kamerasını, düzenleme arayüzü kamerası ile değiştirir."
@@ -5507,11 +5806,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Oyun Kamera DeÄŸiÅŸtir\n"
-"Çalışan oyun örneği yok."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5566,6 +5864,7 @@ msgstr ""
"alırlar."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5577,22 +5876,32 @@ msgid "Select Mode"
msgstr "Kip Seç"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Sürükle: Döndürür"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Seçilen düğüm ya da geçişi sil."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Sürükle: Taşır"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Seçilen düğüm ya da geçişi sil."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"Ekseni Değiştirmek için 'v' dokunacına basın, Ekseni Sürüklemek için "
-"(sürüklerken) 'Shift + v' dokunaçlarına basın."
+"Tıklanan konumdaki tüm nesnelerin bir listesini gösterin\n"
+"(Seçme biçiminde Alt + RMB ile özdeş)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt + RMB: Derin liste seçimi"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5829,6 +6138,16 @@ msgid "Clear Pose"
msgstr "DuruÅŸu Temizle"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Düğüm Ekle"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Sahne(leri) Örnekle"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Izgara basamağını 2 ile çarp"
@@ -5841,6 +6160,52 @@ msgid "Pan View"
msgstr "Yatay Kaydırma Görünümü"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Uzaklaştır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Uzaklaştır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Uzaklaştır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Uzaklaştır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Uzaklaştır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Uzaklaştır"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Ekle %s"
@@ -6083,6 +6448,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Tek dışbükey çarpışma şekli oluşturulamadı."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Tekil Dışbükey Şekil Oluştur"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Tekil Dışbükey Şekil Oluştur"
@@ -6115,7 +6485,8 @@ msgid "No mesh to debug."
msgstr "Hata ayıklaöma için örüntü yok."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Model bu katmanda UV'ye sahip deÄŸil"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6181,13 +6552,27 @@ msgstr ""
"Bu, çarpışma tespiti için en hızlı (ancak en az doğru) seçenektir."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Dışbükey Çarpışma Komşusu Oluştur"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Dışbükey Çarpışma Komşuları Oluştur"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Poligon bazlı bir çarpışma şekli oluştur.\n"
"Bu performans açısından üstteki iki seçeneğin arasındadır."
@@ -6249,7 +6634,6 @@ msgid "Mesh Library"
msgstr "Model Kütüphanesi"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Öğe Ekle"
@@ -6521,7 +6905,8 @@ msgid "Close Curve"
msgstr "EÄŸriyi Kapat"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Seçenekler"
@@ -6831,6 +7216,26 @@ msgstr "Kaynak Yükle"
msgid "ResourcePreloader"
msgstr "KaynakÖnyükleyici"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Yatay Yansıt"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Üretilen Nokta Sayısı:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Üretilen Nokta Sayısı:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Yatay Yansıt"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "Animasyon ağacı AnimasyonOynatıcı'ya atanmış yola sahip değil"
@@ -7036,7 +7441,7 @@ msgstr "Çalıştır"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Ara"
@@ -7067,6 +7472,11 @@ msgid "Debug with External Editor"
msgstr "Harici düzenleyici ile hata ayıkla"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Çevrimiçi Belgeler"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Çevrimiçi Godot dökümanlarını aç."
@@ -7193,8 +7603,8 @@ msgstr "Åžuna Git"
msgid "Cut"
msgstr "Kes"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Hepsini Seç"
@@ -7227,10 +7637,6 @@ msgid "Unfold All Lines"
msgstr "Tüm Satırları Genişlet"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Aşağıya Eşle"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Simgeyi Tamamla"
@@ -7384,6 +7790,28 @@ msgid "View Plane Transform."
msgstr "Düzlem Dönüşümünü Görüntüle."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Düğüm"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Ülke"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Çevir:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Ölçekle:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "Ölçekleniyor: "
@@ -7404,42 +7832,54 @@ msgid "Animation Key Inserted."
msgstr "Animasyon Anahtarı Eklendi."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "Perde"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "Yalpala"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Boyut"
+#, fuzzy
+msgid "Size:"
+msgstr "Boyut: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Çizilmiş Nesneler"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Materyal DeÄŸiÅŸiklikleri"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Shader DeÄŸiÅŸiklikleri"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Yüzey Değişiklikleri"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Çizim Çağrıları"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Köşenoktalar"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "Üstten Görünüm."
@@ -7592,6 +8032,11 @@ msgid "Freelook Slow Modifier"
msgstr "Serbest Bakış Hız Değiştirici"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Kamera Boyutunu DeÄŸiÅŸtir"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Dönme Kilitli Görünüm"
@@ -7611,6 +8056,11 @@ msgstr ""
"Oyun içi performansın gösteri olarak ele alınamaz."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Şuna Dönüştür %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm İletişim Kutusu"
@@ -7629,7 +8079,8 @@ msgstr ""
"Yarı-açık göz: Gizmo aynı zamanda saydam yüzeylerden görünür (\"x-ray\")."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Düğümleri zemine hizala"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7637,16 +8088,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Seçimi hizalamak için somut zemin bulunamıyor."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Sürükle: Döndür\n"
-"Alt+Sürükle: Taşı\n"
-"Alt+RMB: Derin liste seçimi"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Yerel Ekseni Kullan"
@@ -7655,6 +8096,10 @@ msgid "Use Snap"
msgstr "Yapışma Kullan"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Alttan Görünüm"
@@ -7748,6 +8193,11 @@ msgid "View Grid"
msgstr "Izgara Görünümü"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Görüntükapısı Ayarları"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Ayarlar..."
@@ -8038,11 +8488,6 @@ msgid "Snap Mode:"
msgstr "Yapışma Kipi:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Düğüm"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Nokta Yapışması"
@@ -8063,165 +8508,603 @@ msgid "Step:"
msgstr "Adım:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Ayraç:"
+msgid "Separation:"
+msgstr "Ayrım:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "DokuBölgesi"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Tüm Öğeleri Ekle"
+#, fuzzy
+msgid "Colors"
+msgstr "Renk"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Fonts"
+msgstr "Yazı Tipi"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Tümünü Ekle"
+#, fuzzy
+msgid "Icons"
+msgstr "Simge"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Styleboxes"
+msgstr "StilKutusu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Alt kaynağı bulunamadı."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Sabitler"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Renk Sabiti."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Bulunamadı!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Bulunamadı!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Alt kaynağı bulunamadı."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Kalıbı İçe Aktar"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Düzenleyiciden çık?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Çözümleniyor"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Süzgeç:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Bir Düğüm Seç"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Önce bir ayar öğesi seçin!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Önce bir ayar öğesi seçin!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Önce bir ayar öğesi seçin!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Önce bir ayar öğesi seçin!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Önce bir ayar öğesi seçin!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Önce bir ayar öğesi seçin!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Hepsini Daralt"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Hepsini GeniÅŸlet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Şablon Dosyası Seç"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Noktaları Seç"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Hepsini Seç"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Sahneyi İçe Aktar"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Bütün Öğeleri Kaldır"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Tümünü Kaldır"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Öğeyi Kaldır"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Tema düzenle"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Bütün Öğeleri Kaldır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Bütün Öğeleri Kaldır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Bütün Öğeleri Kaldır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Bütün Öğeleri Kaldır"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Tema düzenleme menüsü."
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Sınıf Öğeleri Ekle"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Sınıf Öğeleri Ekle"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Öğe Ekle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Öğe Ekle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Tüm Öğeleri Ekle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Sınıf Öğelerini Kaldır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Sınıf Öğelerini Kaldır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Düğümü Yeniden Adlandır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Düğümü Yeniden Adlandır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Seçilen Öğeyi Kaldır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Geçersiz dosya, bu bir audio bus yerleşim düzeni değil."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Şablonlarını Yönet"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Düzenlenebilir Öge"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Tür:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Tür:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Öğe Ekle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Tüm Öğeleri Ekle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Öğeyi Kaldır"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Sınıf Öğelerini Kaldır"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "BoÅŸ Åžablon OluÅŸtur"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Sınıf Öğelerini Kaldır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Bütün Öğeleri Kaldır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Grafik Arayüzü Tema Öğeleri"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Düğüm adı:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Kalıbı İçe Aktar"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Varsayılan"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Tema düzenle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Kaynağı Sil"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Kalıbı İçe Aktar"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Animasyon İzini Yeniden Adlandır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Tümden Yeniden Adlandır"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Üzerine Yaz"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Tür"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Öğe Ekle"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Boş Düzenleyici Kalıbı Oluştur"
+#, fuzzy
+msgid "Node Types:"
+msgstr "Düğüm Türü"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Mevcut Düzenleyici Temasından Oluştur"
+#, fuzzy
+msgid "Show Default"
+msgstr "Varsayılanı Yükle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Üzerine Yaz"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Tema"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Dışa Aktarım Şablonlarını Yönet..."
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Önizleme"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Önizlemeyi Güncelle"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Bir Kaynak Örüntü Seçin:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Değiştirme Düğmesi"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Pasif Düğme"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Öğe"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Pasif Öge"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Öğeyi Denetle"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Denetlenen Öğe"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Radyo Ögesi"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Seçili Radyo Ögesi"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "İsimli Ayraç."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Altmenü"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Altöge 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Altöge 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Var"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Çok"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "Pasif SatırDüzeltici"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Sekme 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Sekme 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Sekme 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Düzenlenebilir Öge"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Altağaç"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Var,Çok,Seçenekler"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Veri Türü:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Simge"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Yoldam"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Yazı Tipi"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Renk"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Geçersiz dosya, bu bir audio bus yerleşim düzeni değil."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Tema Dosyası"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8395,6 +9278,10 @@ msgid "Priority"
msgstr "Öncelik"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Simge"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Derinlik İndeksi"
@@ -8732,11 +9619,6 @@ msgid "Commit Changes"
msgstr "Değişiklikleri İşle"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Durum"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "Son versiyona işlemeden önce dosya diff 'lerini incele"
@@ -9620,7 +10502,8 @@ msgid "VisualShader"
msgstr "GörselShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Görsel Niteliği Düzenle"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9747,7 +10630,8 @@ msgid "Script"
msgstr "Betik"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Betik Dışa Aktarım Biçimi:"
#: editor/project_export.cpp
@@ -9755,19 +10639,21 @@ msgid "Text"
msgstr "Yazı"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "DerlenmiÅŸ"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Şifreli (Açarı Aşağıda Belirtin)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Geçersiz Şifreleme Anahtarı (64 karakter uzunluğunda olmalı)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Betik Şifreleme Açarı (Hex olarak 256-bit):"
#: editor/project_export.cpp
@@ -9840,7 +10726,8 @@ msgid "Imported Project"
msgstr "İçe Aktarılan Proje"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Geçersiz Proje Adı."
#: editor/project_manager.cpp
@@ -9876,6 +10763,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "proje.godot proje yolunda oluşturulamadı."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Paket dosyası açılırken hata oluştu, zip formatında değil."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Aşağıdaki dosyaların, çıkından ayıklanma işlemi başarısız oldu:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Paket Başarı ile Kuruldu!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Projeyi Yeniden Adlandır"
@@ -10052,20 +10951,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Birden fazla projeyi çalıştırmak istediğinize emin misiniz?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"%d projeleri listeden kalksın mı?\n"
-"Proje klasörü'nün içeriği değiştirilmeyecek."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Listeden aygıt seç"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Bu projeyi listeden kaldır?\n"
-"Proje klasörünün içeriği değiştirilmeyecek."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Listeden aygıt seç"
#: editor/project_manager.cpp
msgid ""
@@ -10099,7 +10992,8 @@ msgid "Project Manager"
msgstr "Proje Yöneticisi"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Projeler"
#: editor/project_manager.cpp
@@ -10111,10 +11005,25 @@ msgid "Last Modified"
msgstr "Son DeÄŸiÅŸiklik"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Projeyi Dışa Aktar"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Projeyi Yeniden Adlandır"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Tara"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Projeler"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Tarama İçin Bir Klasör Seç"
@@ -10123,18 +11032,41 @@ msgid "New Project"
msgstr "Yeni Proje"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "İçe Aktarılan Proje"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Projeyi Yeniden Adlandır"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Eksikleri Kaldır"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Åžablonlar"
+msgid "About"
+msgstr "Hakkında"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Varlık Kütüphanesi"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Åžimdi Yeniden BaÅŸlat"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Tümünü Kaldır"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Proje çalıştırılamadı"
@@ -10147,8 +11079,14 @@ msgstr ""
"Varlık Kütüphanesi'ndeki resmî örnek projeleri incelemek ister misin?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Özellikleri süz"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10161,6 +11099,10 @@ msgid "Key "
msgstr "Anahtar "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Oyun Kolu Düğmesi"
@@ -10203,6 +11145,10 @@ msgstr "Tüm Aygıtlar"
msgid "Device"
msgstr "Aygıt"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Bir Dokunaca Basın..."
@@ -10343,7 +11289,8 @@ msgid "Override for Feature"
msgstr "Özelliğin Üzerine Yaz"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Çeviri Ekle"
#: editor/project_settings_editor.cpp
@@ -10351,11 +11298,13 @@ msgid "Remove Translation"
msgstr "Çeviriyi Kaldır"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Yeniden EÅŸlenmiÅŸ Yol Ekle"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "Kaynak Yeniden EÅŸleme Ekle EÅŸle"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "Kaynak Yeniden EÅŸleme Ekle EÅŸle"
#: editor/project_settings_editor.cpp
@@ -10629,6 +11578,10 @@ msgid "Post-Process"
msgstr "Artçıl-İşlem"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Yoldam"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Tut"
@@ -10795,12 +11748,30 @@ msgid "Delete node \"%s\"?"
msgstr "\"%s\" düğümü silinsin mi?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Kök düğüm ile gerçekleştirilemez."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Bu işlem örneklenmiş sahnelerde yapılamaz."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10860,6 +11831,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Geçerli sahneden miras alınan düğümler üzerinde işlem yapılamaz!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Bu işlem örneklenmiş sahnelerde yapılamaz."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Betik İliştir"
@@ -10907,10 +11882,6 @@ msgid "Load As Placeholder"
msgstr "Yer Tutucu Olarak Yükle"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Klavuzu Aç"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11202,6 +12173,12 @@ msgstr ""
"ile düzenlenemezler."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Sınıf İsmi:"
@@ -11270,6 +12247,10 @@ msgid "Copy Error"
msgstr "Hatayı Kopyala"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Görüntü Belleği"
@@ -11553,6 +12534,16 @@ msgstr "Geçersiz örnek sözlüğü (geçersiz altsınıflar)"
msgid "Object can't provide a length."
msgstr "Nesne bir uzunluk saÄŸlayamaz."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Örüntü Kütüphanesini Dışa Aktar"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Dışa Aktar..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Sonraki sekme"
@@ -11594,6 +12585,11 @@ msgid "GridMap Paint"
msgstr "IzgaraHaritası Boyama"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "IzgaraHaritası Seçimi Doldur"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Izgara Haritası"
@@ -11842,6 +12838,16 @@ msgid "Add Output Port"
msgstr "Çıkış Portu Ekle"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Türü Değiştir"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Giriş noktası adını değiştir"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Varolan gömülü işlevi değiştir."
@@ -11954,6 +12960,11 @@ msgid "Add Preload Node"
msgstr "Önyüklenen Düğüm Ekle"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Düğüm Ekle"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Ağaçtan Düğüm(ler) Ekle"
@@ -12182,10 +13193,6 @@ msgstr "Görsel Betikte Ara"
msgid "Get %s"
msgstr "Getir %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Ayarla %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Paket ismi eksik."
@@ -12215,6 +13222,40 @@ msgid "Select device from the list"
msgstr "Listeden aygıt seç"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Tümünü Dışa Aktarma"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Kaldır"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Yükleniyor, lütfen bekleyin..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Sahne Örneklenemedi!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Çalışan Özel Betik..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Klasör oluşturulamadı."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "'apksigner' aracı bulunamıyor."
@@ -12332,6 +13373,48 @@ msgstr ""
"geçerlidir."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Dosyalar Taranıyor,\n"
+"Lütfen Bekleyiniz..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Dışa aktarma için şablon açılamadı:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Ekliyor %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Tümünü Dışa Aktarma"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr "Geçersiz dosya adı! Android Uygulama Paketi *.aab uzantısı gerektirir."
@@ -12344,6 +13427,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Geçersiz dosya adı! Android APK, * .apk uzantısını gerektirir."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12364,6 +13451,21 @@ msgstr ""
"Lütfen 'Proje' menüsünden Android derleme şablonunu yeniden yükleyin."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Proje yolunda proje.godot alınamadı."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Dosya yazılamadı:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Android Projesi OluÅŸturma (gradle)"
@@ -12389,11 +13491,54 @@ msgstr ""
"Dışa aktarma dosyası kopyalanamıyor ve yeniden adlandırılamıyor, çıktılar "
"için gradle proje dizinini kontrol edin."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Animasyon bulunamadı: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Konturlar oluÅŸturuluyor..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Dışa aktarma için şablon açılamadı:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Ekliyor %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Dosya yazılamadı:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "APK hizalanıyor ..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Tanımlayıcı eksik."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Tanımlayıcı'da '%s' karakterine izin verilmiyor."
@@ -12422,10 +13567,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Dışa aktarılmış HTML'yi sistemin varsayılan tarayıcısında çalıştır."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Dosya yazılamadı:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Dışa aktarma için şablon açılamadı:"
@@ -12434,16 +13575,49 @@ msgid "Invalid export template:"
msgstr "Geçersiz Dışa Aktarım Şablonu:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Dosya yazılamadı:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Dosya yazılamadı:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Özel HTML çekirdeği okunamadı:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Açılış ekranı resim dosyası okunamadı:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Klasör oluşturulamadı."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Açılış ekranı resim dosyası okunamadı."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Sahne kaydedilirken hata."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Geçersiz Tanımlayıcı:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12868,6 +14042,13 @@ msgstr ""
"GIProbes GLES2 video sürücüsü tarafından desteklenmez.\n"
"Bunun yerine bir BakedLightmap kullanın."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "90 dereceden geniş açılı SpotIşık gölge oluşturamaz."
@@ -12953,6 +14134,18 @@ msgstr "Kesişim, herhangi bir PhysicsBody'ye bağlı değil"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Düğüm A ve Düğüm B, farklı PhysicsBody olmalıdır"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12961,6 +14154,46 @@ msgstr ""
"\"Uzak Yol\" özelliği çalışması için geçerli bir Uzamsal veya Uzamsal türevi "
"düğüme işaret etmelidir."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Bir model ayarlanana kadar bu gövde yok sayılır."
@@ -13022,6 +14255,10 @@ msgstr "'%s' BlendTree düğümünde, animasyon bulunamadı: '% s'"
msgid "Animation not found: '%s'"
msgstr "Animasyon bulunamadı: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "'%s' düğümünde geçersiz animasyon: '%s'."
@@ -13196,6 +14433,27 @@ msgid "Invalid comparison function for that type."
msgstr "Bu tür için geçersiz karşılaştırma işlevi."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "varyings yalnızca vertex işlevinde atanabilir."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "İşleve atama."
@@ -13204,13 +14462,179 @@ msgid "Assignment to uniform."
msgstr "uniform için atama."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "varyings yalnızca vertex işlevinde atanabilir."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
+#~ msgid "Package Contents:"
+#~ msgstr "Paket İçerikleri:"
+
+#~ msgid "Singleton"
+#~ msgstr "Tekil nesne"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "'%s' profilini sil? (geri alınamaz)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Etkin Özellikler:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Aktif Özellikler:"
+
+#~ msgid "Unset"
+#~ msgstr "Ayarı kaldır"
+
+#~ msgid "Class Options"
+#~ msgstr "Sınıf Seçenekleri"
+
+#~ msgid "Set"
+#~ msgstr "Ayarla"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "'%s' deÄŸiÅŸtirilmiÅŸ kaynak kaydedildi."
+
+#~ msgid "Q&A"
+#~ msgstr "S&C"
+
+#~ msgid "Status:"
+#~ msgstr "Durum:"
+
+#~ msgid "Edit:"
+#~ msgstr "Düzenle:"
+
+#~ msgid "Redownload"
+#~ msgstr "Yeniden İndir"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Kurulu)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Mevcut DeÄŸil)"
+
+#~ msgid "Request Failed."
+#~ msgstr "İstek Başarısız Oldu."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Yönlendirme Döngüsü."
+
+#~ msgid "Download Complete."
+#~ msgstr "İndirme Tamamlandı."
+
+#~ msgid "Remove Template"
+#~ msgstr "Şablonu Kaldır"
+
+#~ msgid "Download Templates"
+#~ msgstr "Şablonları İndir"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Listeden ayna seç: (Shift+Tıkla: Tarayıcıda Aç)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Çöpe At"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Tüm Özellikleri Genişlet"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Tüm Özellikleri Daralt"
+
+#~ msgid "Copy Params"
+#~ msgstr "Değişkenleri Tıpkıla"
+
+#~ msgid "Open in Help"
+#~ msgstr "Yardımda Aç"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Oyun Kamera DeÄŸiÅŸtir\n"
+#~ "Çalışan oyun örneği yok."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Sürükle: Döndürür"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "Ekseni Değiştirmek için 'v' dokunacına basın, Ekseni Sürüklemek için "
+#~ "(sürüklerken) 'Shift + v' dokunaçlarına basın."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt + RMB: Derin liste seçimi"
+
+#~ msgid "Clone Down"
+#~ msgstr "Aşağıya Eşle"
+
+#~ msgid "Yaw"
+#~ msgstr "Yalpala"
+
+#~ msgid "Size"
+#~ msgstr "Boyut"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Sürükle: Döndür\n"
+#~ "Alt+Sürükle: Taşı\n"
+#~ "Alt+RMB: Derin liste seçimi"
+
+#~ msgid "Sep.:"
+#~ msgstr "Ayraç:"
+
+#~ msgid "Add All"
+#~ msgstr "Tümünü Ekle"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Tema düzenleme menüsü."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "BoÅŸ Åžablon OluÅŸtur"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Boş Düzenleyici Kalıbı Oluştur"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Mevcut Düzenleyici Temasından Oluştur"
+
+#~ msgid "Data Type:"
+#~ msgstr "Veri Türü:"
+
+#~ msgid "Theme File"
+#~ msgstr "Tema Dosyası"
+
+#~ msgid "Compiled"
+#~ msgstr "DerlenmiÅŸ"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "%d projeleri listeden kalksın mı?\n"
+#~ "Proje klasörü'nün içeriği değiştirilmeyecek."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Bu projeyi listeden kaldır?\n"
+#~ "Proje klasörünün içeriği değiştirilmeyecek."
+
+#~ msgid "Templates"
+#~ msgstr "Åžablonlar"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Yeniden EÅŸlenmiÅŸ Yol Ekle"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Kök düğüm ile gerçekleştirilemez."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Açılış ekranı resim dosyası okunamadı:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Açılış ekranı resim dosyası okunamadı."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Bir animasyon oynatıcı kendisini oynamataz, sadece diğer oynatıcılar "
@@ -13266,9 +14690,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "Bu konumda zaten aynı ada sahip bir dosya veya klasör var."
-#~ msgid "Aligning APK..."
-#~ msgstr "APK hizalanıyor ..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "APK hizalaması tamamlanamıyor."
@@ -13331,9 +14752,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgstr ""
#~ "Şimdiki sahne hiç kaydedilmedi, lütfen çalıştırmadan önce kaydediniz."
-#~ msgid "Not in resource path."
-#~ msgstr "Kaynak yolunda deÄŸil."
-
#~ msgid "Revert"
#~ msgstr "Geri dön"
@@ -13423,9 +14841,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "Input"
#~ msgstr "GiriÅŸ"
-#~ msgid "Properties:"
-#~ msgstr "Özellikler:"
-
#~ msgid "Methods:"
#~ msgstr "Metotlar:"
@@ -13736,10 +15151,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgstr "Yolu Ayır"
#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Önce bir ayar öğesi seçin!"
-
-#, fuzzy
#~ msgid "Add Node.."
#~ msgstr "Düğüm Ekle"
@@ -13809,9 +15220,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "Public Methods:"
#~ msgstr "Açık Metotlar:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Grafik Arayüzü Tema Öğeleri"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Grafik Arayüzü Tema Öğeleri:"
@@ -13835,10 +15243,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "Match case"
#~ msgstr "Büyük/Küçük Harf Eşleştir"
-#, fuzzy
-#~ msgid "Filter: "
-#~ msgstr "Süzgeç:"
-
#~ msgid "Ok"
#~ msgstr "Tamam"
@@ -13877,9 +15281,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "Rotate 270 degrees"
#~ msgstr "270 Düzeyde Döndür"
-#~ msgid "Variable"
-#~ msgstr "DeÄŸiÅŸken"
-
#~ msgid "Errors:"
#~ msgstr "Hatalar:"
@@ -13967,9 +15368,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "Set Transitions to:"
#~ msgstr "Geçişleri Şuna Ayarla:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Animasyon İzini Yeniden Adlandır"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Anim İzi Değişikliği İnterpolasyonu"
@@ -14120,12 +15518,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "StyleBox Preview:"
#~ msgstr "StyleBox Önizleme:"
-#~ msgid "StyleBox"
-#~ msgstr "StilKutusu"
-
-#~ msgid "Separation:"
-#~ msgstr "Ayrım:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Doku Bölgesi Düzenleyicisi"
@@ -14199,12 +15591,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "Proje yolunda proje.godot alınamadı."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "Proje yolunda proje.godot alınamadı."
-
-#~ msgid "Not found!"
-#~ msgstr "Bulunamadı!"
-
#~ msgid "Replace By"
#~ msgstr "Åžununla DeÄŸiÅŸtir"
@@ -14561,9 +15947,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "Doku Sıkıştırma Niteliği (WebP):"
-#~ msgid "Texture Options"
-#~ msgstr "Doku Seçenekleri"
-
#~ msgid "Please specify some files!"
#~ msgstr "Lütfen bazı dizeçleri belirtin!"
@@ -14726,9 +16109,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "Zoom Set..."
#~ msgstr "Yakınlaşmayı Ayarla..."
-#~ msgid "Set a Value"
-#~ msgstr "Bir DeÄŸer Ata"
-
#~ msgid "Parse BBCode"
#~ msgstr "BBCode'u Ayrıştır"
@@ -14852,9 +16232,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "Instance at Cursor"
#~ msgstr "Göstergede Örnekle"
-#~ msgid "Could not instance scene!"
-#~ msgstr "Sahne Örneklenemedi!"
-
#~ msgid "Use Default Light"
#~ msgstr "Önyüklü Işık Kullan"
@@ -14931,9 +16308,6 @@ msgstr "Sabit deÄŸerler deÄŸiÅŸtirilemez."
#~ msgid "City"
#~ msgstr "Åžehir"
-#~ msgid "State"
-#~ msgstr "Ülke"
-
#~ msgid "2 letter country code"
#~ msgstr "2 damgalı ülke imi"
diff --git a/editor/translations/tt.po b/editor/translations/tt.po
index 3e63f2369d..4ff5555363 100644
--- a/editor/translations/tt.po
+++ b/editor/translations/tt.po
@@ -510,7 +510,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -536,7 +537,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -557,6 +559,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -573,6 +579,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -621,7 +631,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -707,12 +717,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -767,11 +779,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -821,6 +831,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -890,7 +901,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -905,6 +916,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -926,8 +945,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1000,16 +1019,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1054,7 +1075,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1175,37 +1196,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1213,7 +1238,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1277,7 +1302,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1357,7 +1382,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1444,6 +1469,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1459,16 +1492,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1484,7 +1517,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1623,7 +1656,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1655,15 +1728,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1681,7 +1754,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1689,17 +1762,23 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+msgid "Create Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Remove Profile"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1708,19 +1787,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1744,7 +1823,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1798,9 +1877,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1881,8 +1961,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1953,7 +2032,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2038,7 +2117,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2054,8 +2133,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2071,7 +2151,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2135,7 +2215,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2329,18 +2410,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2510,7 +2595,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2691,6 +2776,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2823,13 +2912,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2837,6 +2925,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2845,7 +2937,7 @@ msgid "Community"
msgstr "Җәмәгать"
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2942,6 +3034,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2968,7 +3068,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3009,6 +3109,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3040,6 +3144,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3064,21 +3172,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3086,11 +3191,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3110,6 +3215,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3151,12 +3266,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3174,22 +3283,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3203,37 +3335,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3268,7 +3383,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3288,64 +3403,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3353,7 +3474,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3363,135 +3488,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Other Installed Versions:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3617,22 +3773,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3640,6 +3822,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3719,10 +3905,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3943,52 +4125,49 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
+msgid "Paste Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4004,7 +4183,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4012,6 +4195,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4039,6 +4226,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4238,7 +4434,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4452,6 +4648,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4788,10 +4989,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4800,15 +5009,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4836,6 +5049,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4936,7 +5153,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4979,6 +5200,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4987,8 +5212,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5222,15 +5447,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5284,6 +5510,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5295,19 +5522,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5539,6 +5772,14 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5551,6 +5792,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5791,6 +6072,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5823,7 +6108,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5882,13 +6167,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5942,7 +6239,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6214,7 +6510,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6518,6 +6815,22 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6721,7 +7034,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6752,6 +7065,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6874,8 +7192,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6908,10 +7226,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7063,6 +7377,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7083,39 +7416,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Vertices:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7271,6 +7608,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7286,6 +7627,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7299,7 +7644,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7307,18 +7652,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7415,6 +7757,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7704,11 +8050,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7729,7 +8070,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7737,156 +8078,520 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8055,6 +8760,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8371,11 +9080,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9195,7 +9899,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9310,7 +10014,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9318,7 +10022,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9326,11 +10030,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9403,7 +10107,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9437,6 +10141,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9581,15 +10297,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9616,7 +10328,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9628,10 +10340,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9640,11 +10364,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9652,6 +10388,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9662,8 +10406,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9673,6 +10421,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9714,6 +10466,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9853,7 +10609,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9861,11 +10617,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10133,6 +10889,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10295,11 +11055,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10355,6 +11133,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10401,10 +11183,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10675,6 +11453,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10743,6 +11527,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11026,6 +11814,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11067,6 +11863,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11309,6 +12109,14 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11417,6 +12225,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11640,10 +12452,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11673,6 +12481,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11769,6 +12605,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11781,6 +12653,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11795,6 +12671,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11814,11 +12703,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11847,27 +12774,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12215,6 +13166,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12284,12 +13242,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12338,6 +13348,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12485,15 +13499,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/tzm.po b/editor/translations/tzm.po
index 0b0ce7d01e..7d41f508ee 100644
--- a/editor/translations/tzm.po
+++ b/editor/translations/tzm.po
@@ -508,7 +508,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -534,7 +535,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -555,6 +557,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -571,6 +577,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -619,7 +629,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -705,12 +715,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -765,11 +777,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -819,6 +829,7 @@ msgstr ""
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -888,7 +899,7 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+msgid "Go to Method"
msgstr ""
#: editor/create_dialog.cpp
@@ -903,6 +914,14 @@ msgstr ""
msgid "Create New %s"
msgstr ""
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -924,8 +943,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -998,16 +1017,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1052,7 +1073,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1173,37 +1194,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+msgid "Asset \"%s\" installed successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1211,7 +1236,7 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+msgid "Asset Installer"
msgstr ""
#: editor/editor_audio_buses.cpp
@@ -1275,7 +1300,7 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+msgid "Bus Options"
msgstr ""
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1355,7 +1380,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1442,6 +1467,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1457,16 +1490,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1482,7 +1515,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1621,7 +1654,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1653,15 +1726,15 @@ msgid "Enable Contextual Editor"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1679,7 +1752,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1687,17 +1760,23 @@ msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
+msgid "Create Profile"
msgstr ""
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+msgid "Remove Profile"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1706,19 +1785,19 @@ msgid "Export"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
+msgid "Extra Options:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
+msgid "New profile name:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1742,7 +1821,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1796,9 +1875,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1879,8 +1959,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1951,7 +2030,7 @@ msgstr ""
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2036,7 +2115,7 @@ msgstr ""
msgid "Signal"
msgstr ""
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2052,8 +2131,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2069,7 +2149,7 @@ msgid "Copy Selection"
msgstr ""
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2133,7 +2213,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2327,18 +2408,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2508,7 +2593,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2689,6 +2774,10 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+msgid "Reload Current Project"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2821,13 +2910,12 @@ msgstr ""
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2835,6 +2923,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2843,7 +2935,7 @@ msgid "Community"
msgstr ""
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2940,6 +3032,14 @@ msgid "Manage Templates"
msgstr ""
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -2966,7 +3066,7 @@ msgstr ""
msgid "Template Package"
msgstr ""
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3007,6 +3107,10 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+msgid "Select Current"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3038,6 +3142,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3062,21 +3170,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3084,11 +3189,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3108,6 +3213,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3149,12 +3264,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3172,22 +3281,45 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
+msgid "Selected node is not a Viewport!"
msgstr ""
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
+#: editor/editor_properties_array_dict.cpp
+msgid "Size: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
+#: editor/editor_properties_array_dict.cpp
+msgid "Page: "
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
+#: editor/editor_properties_array_dict.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Key:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "New Value:"
+msgstr ""
+
+#: editor/editor_properties_array_dict.cpp
+msgid "Add Key/Value Pair"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
msgid "Make Unique"
msgstr ""
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -3201,37 +3333,20 @@ msgstr ""
msgid "Paste"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Convert to %s"
msgstr ""
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Selected node is not a Viewport!"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Size: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "Page: "
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Item"
-msgstr ""
-
-#: editor/editor_properties_array_dict.cpp
-msgid "New Key:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "New Value:"
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
msgstr ""
-#: editor/editor_properties_array_dict.cpp
-msgid "Add Key/Value Pair"
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
msgstr ""
#: editor/editor_run_native.cpp
@@ -3266,7 +3381,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3286,64 +3401,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3351,7 +3472,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3361,135 +3486,166 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
+msgid "Can't open the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
+msgid "Open Folder"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove Template"
+msgid "Download from:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select Template File"
+msgid "Download and Install"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Templates"
+msgid "Other Installed Versions:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid "Uninstall Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3615,22 +3771,48 @@ msgstr ""
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
@@ -3638,6 +3820,10 @@ msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3717,10 +3903,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -3941,52 +4123,49 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
+msgid "Copy Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
+msgid "Paste Properties"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
+msgid "Extra resource options."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
+msgid "Edit Resource from Clipboard"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4002,7 +4181,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4010,6 +4193,10 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+msgid "Manage object properties."
+msgstr ""
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4037,6 +4224,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4236,7 +4432,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4450,6 +4646,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4786,10 +4987,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4798,15 +5007,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4834,6 +5047,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -4934,7 +5151,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4977,6 +5198,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr ""
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -4985,8 +5210,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5220,15 +5445,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5282,6 +5508,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5293,19 +5520,25 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Drag: Rotate selected node around pivot."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+msgid "Alt+Drag: Move selected node."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+msgid "V: Set selected node's pivot position."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5537,6 +5770,14 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add Node Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5549,6 +5790,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5789,6 +6070,10 @@ msgid "Couldn't create a single convex collision shape."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr ""
@@ -5821,7 +6106,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5880,13 +6165,25 @@ msgid ""
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Simplified Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -5940,7 +6237,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6212,7 +6508,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6516,6 +6813,22 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Room Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Generate Points"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6719,7 +7032,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6750,6 +7063,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -6872,8 +7190,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -6906,10 +7224,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7061,6 +7375,25 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7081,39 +7414,43 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "Vertices:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7269,6 +7606,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7284,6 +7625,10 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Convert Rooms"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7297,7 +7642,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7305,18 +7650,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7413,6 +7755,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7702,11 +8048,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7727,7 +8068,7 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
+msgid "Separation:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
@@ -7735,156 +8076,520 @@ msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Fonts"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+msgid "Icons"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "{num} constant(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "No constants found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "No fonts found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "No icons found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "No styleboxes found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Importing Theme Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Updating the editor"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Finalizing"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Filter:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+msgid "Select all visible icon items and their data."
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Collapse types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Expand types."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Color Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Constant Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Font Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Icon Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All StyleBox Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Color Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Font Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Icon Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Stylebox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Items:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Custom Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Import Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Editor Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Override Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Manage Items..."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select UI Scene:"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -8053,6 +8758,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8369,11 +9078,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9193,7 +9897,7 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9308,7 +10012,7 @@ msgid "Script"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9316,7 +10020,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9324,11 +10028,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9401,7 +10105,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9435,6 +10139,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr ""
@@ -9579,15 +10295,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9614,7 +10326,7 @@ msgid "Project Manager"
msgstr ""
#: editor/project_manager.cpp
-msgid "Projects"
+msgid "Local Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9626,10 +10338,22 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+msgid "Edit Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Run Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+msgid "Scan Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9638,11 +10362,23 @@ msgid "New Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Import Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr ""
#: editor/project_manager.cpp
-msgid "Templates"
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
msgstr ""
#: editor/project_manager.cpp
@@ -9650,6 +10386,14 @@ msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9660,8 +10404,12 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+msgid "Filter projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9671,6 +10419,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9712,6 +10464,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -9851,7 +10607,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -9859,11 +10615,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10131,6 +10887,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10293,11 +11053,29 @@ msgid "Delete node \"%s\"?"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10353,6 +11131,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr ""
@@ -10399,10 +11181,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10673,6 +11451,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -10741,6 +11525,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11024,6 +11812,14 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export GLTF..."
+msgstr ""
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11065,6 +11861,10 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11307,6 +12107,14 @@ msgid "Add Output Port"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Port Name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11415,6 +12223,10 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11638,10 +12450,6 @@ msgstr ""
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11671,6 +12479,34 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not install to device: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not execute on device."
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -11767,6 +12603,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -11779,6 +12651,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -11793,6 +12669,19 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not write expansion package file!"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -11812,11 +12701,49 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Adding files..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -11845,27 +12772,51 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
+msgid "Could not open template for export:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
+msgid "Invalid export template:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
+msgid "Could not write file:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not read HTML shell:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+msgid "Error starting HTTP server:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12213,6 +13164,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12282,12 +13240,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12336,6 +13346,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12483,15 +13497,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
diff --git a/editor/translations/uk.po b/editor/translations/uk.po
index 50508c5df3..adccdfd91f 100644
--- a/editor/translations/uk.po
+++ b/editor/translations/uk.po
@@ -16,12 +16,13 @@
# Vladislav Glinsky <cl0ne@mithril.org.ua>, 2020.
# Микола Тимошенко <9081@ukr.net>, 2020.
# Miroslav <zinmirx@gmail.com>, 2020.
+# IllusiveMan196 <hamsterrv@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: Ukrainian (Godot Engine)\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-06-20 13:35+0000\n"
-"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"PO-Revision-Date: 2021-08-02 02:00+0000\n"
+"Last-Translator: IllusiveMan196 <hamsterrv@gmail.com>\n"
"Language-Team: Ukrainian <https://hosted.weblate.org/projects/godot-engine/"
"godot/uk/>\n"
"Language: uk\n"
@@ -30,7 +31,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Weblate 4.7\n"
+"X-Generator: Weblate 4.8-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -546,7 +547,8 @@ msgstr "Секунди"
msgid "FPS"
msgstr "Кадри за Ñекунду"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -572,7 +574,8 @@ msgstr "Вибір маÑштабу"
msgid "Scale From Cursor"
msgstr "МаÑштаб від курÑору"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Дублювати позначене"
@@ -593,6 +596,11 @@ msgid "Go to Previous Step"
msgstr "До попереднього кроку"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Скинути"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Оптимізувати анімацію"
@@ -609,6 +617,11 @@ msgid "Use Bezier Curves"
msgstr "ВикориÑтовувати криві Безьє"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Ð’Ñтавити доріжки"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Оптимізатор Ðнімації"
@@ -657,7 +670,7 @@ msgid "Select Tracks to Copy"
msgstr "Виберіть доріжки Ð´Ð»Ñ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -743,12 +756,14 @@ msgid "Toggle Scripts Panel"
msgstr "Перемкнути панель Ñкриптів"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Збільшувати"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -805,11 +820,9 @@ msgid "Add"
msgstr "Додати"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -861,6 +874,7 @@ msgstr "Ðе вдалоÑÑ Ð·'єднати Ñигнал"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -930,7 +944,8 @@ msgid "Edit..."
msgstr "Змінити…"
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Перейти до методу"
#: editor/create_dialog.cpp
@@ -945,6 +960,14 @@ msgstr "Змінити"
msgid "Create New %s"
msgstr "Створити новий %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Ðічого не знайдено Ð´Ð»Ñ Â«%s»."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -966,8 +989,8 @@ msgstr "Пошук:"
msgid "Matches:"
msgstr "Збіги:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1043,19 +1066,23 @@ msgid "Owners Of:"
msgstr "ВлаÑники:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Вилучити позначені файли з проєкту? (без можливоÑті ÑкаÑувати)\n"
"Вилучені файли можна буде знайти Ñ– відновити у теці Ñмітника ÑиÑтеми."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Файли, Ñкі ви вилучаєте, потрібні Ð´Ð»Ñ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÐµÐ·Ð´Ð°Ñ‚Ð½Ð¾Ñті інших "
"реÑурÑів.\n"
@@ -1104,7 +1131,7 @@ msgstr "ОглÑд підключених реÑурÑів"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1229,28 +1256,41 @@ msgstr "Складники"
msgid "Licenses"
msgstr "Ліцензії"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби відкрити файл пакунка — дані не у форматі zip."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби відкрити файл пакунка (дані не у форматі ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (вже Ñ–Ñнує)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Ð Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑів"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ такі файли з пакунка:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "І ще %s файлів."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Пакунок уÑпішно вÑтановлено!"
#: editor/editor_asset_installer.cpp
@@ -1258,16 +1298,13 @@ msgstr "Пакунок уÑпішно вÑтановлено!"
msgid "Success!"
msgstr "УÑпіх!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "ВміÑÑ‚ пакунка:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Ð’Ñтановити"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Ð’Ñтановлювач пакета"
#: editor/editor_audio_buses.cpp
@@ -1331,7 +1368,8 @@ msgid "Bypass"
msgstr "Обхід"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Опції шини"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1411,7 +1449,7 @@ msgstr "Додати шину"
msgid "Add a new Audio Bus to this layout."
msgstr "Додати нову аудіошину до цього компонуваннÑ."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1498,6 +1536,15 @@ msgid "Can't add autoload:"
msgstr "Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ автозавантаженнÑ:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Файл не Ñ–Ñнує."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Додати автозавантаженнÑ"
@@ -1513,16 +1560,17 @@ msgid "Node Name:"
msgstr "Ім'Ñ Ð’ÑƒÐ·Ð»Ð°:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Ðазва"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "Одинак (шаблон проєктуваннÑ)"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Змінна"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Ð’Ñтавити параметри"
@@ -1538,7 +1586,7 @@ msgstr "Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… змін..."
msgid "Updating scene..."
msgstr "ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñцени..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[порожньо]"
@@ -1695,8 +1743,49 @@ msgid "Import Dock"
msgstr "Бічна панель імпортуваннÑ"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Витерти профіль «%s»? (не можна ÑкаÑувати)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Поточний)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1727,15 +1816,18 @@ msgid "Enable Contextual Editor"
msgstr "Увімкнути контекÑтуальний редактор"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Увімкнені влаÑтивоÑті:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "ВлаÑтивоÑті:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Увімкнені можливоÑті:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "МожливоÑті"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Увімкнені клаÑи:"
#: editor/editor_feature_profile.cpp
@@ -1755,25 +1847,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби зберегти профіль до каталогу: «%s»."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "Ðе вÑтановлено"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Відновити типові параметри"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Поточний профіль:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Зробити поточним"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Витерти профіль"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Ðовий"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Вилучити плитку"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "ДоÑтупні профілі:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Зробити поточним"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Імпорт"
@@ -1782,20 +1883,22 @@ msgid "Export"
msgstr "ЕкÑпортуваннÑ"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "ДоÑтупні профілі:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Поточний профіль:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Параметри клаÑу"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Параметри клаÑу:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Ðазва нового профілю:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Витерти профіль"
+msgid "New profile name:"
+msgstr "Ðазва нового профілю:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1818,7 +1921,8 @@ msgid "Select Current Folder"
msgstr "Вибрати поточну теку"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Файл Ñ–Ñнує, перезапиÑати його?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1872,9 +1976,10 @@ msgid "Open a File or Directory"
msgstr "Відкрити файл або каталог"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Зберегти"
@@ -1955,8 +2060,7 @@ msgid "Directories & Files:"
msgstr "Каталоги та файли:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Попередній переглÑд:"
@@ -2029,7 +2133,7 @@ msgstr "ВлаÑтивоÑті теми"
msgid "Enumerations"
msgstr "Переліки"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "КонÑтанти"
@@ -2118,7 +2222,7 @@ msgstr "Метод"
msgid "Signal"
msgstr "Сигнал"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Сталий"
@@ -2134,9 +2238,10 @@ msgstr "ВлаÑтивіÑть теми"
msgid "Property:"
msgstr "ВлаÑтивіÑть:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Множина"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Ð’Ñтановити %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2151,7 +2256,7 @@ msgid "Copy Selection"
msgstr "Копіювати позначене"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2215,7 +2320,8 @@ msgid "Imported resources can't be saved."
msgstr "Ðеможливо зберегти імпортовані реÑурÑи."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "Гаразд"
@@ -2435,18 +2541,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Зберегти зміни, внеÑені до '%s' перед закриттÑм?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Збережено змінених реÑурÑів: %s."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб можна було зберегти Ñцену, потрібен кореневий вузол."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Зберегти Ñцену Ñк..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Ð¦Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð½Ðµ може бути виконана без Ñцени."
@@ -2645,7 +2756,7 @@ msgstr "Видалити компонуваннÑ"
msgid "Default"
msgstr "Типовий"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Показати у файловій ÑиÑтемі"
@@ -2826,6 +2937,11 @@ msgid "Orphan Resource Explorer..."
msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ñиротілими реÑурÑами…"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Перейменувати проєкт"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Вийти в ÑпиÑок проєктів"
@@ -2983,20 +3099,24 @@ msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸ екÑпортуваннÑ…"
msgid "Help"
msgstr "Довідка"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Онлайн документаціÑ"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Відкрити документацію"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Ð—Ð°Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° відповіді"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Повідомити про ваду"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "ÐадіÑлати відгук щодо документації"
@@ -3005,7 +3125,8 @@ msgid "Community"
msgstr "Спільнота"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "Про"
#: editor/editor_node.cpp
@@ -3104,6 +3225,16 @@ msgid "Manage Templates"
msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Ð’Ñтановити з файлу"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Виберіть джерело Ñітки:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3140,7 +3271,7 @@ msgstr "Імпортувати шаблони з ZIP-файлу"
msgid "Template Package"
msgstr "Пакунок шаблонів"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "ЕкÑпортувати бібліотеку"
@@ -3183,6 +3314,11 @@ msgid "Select"
msgstr "Виділити"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Вибрати поточну теку"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Відкрити 2D редактор"
@@ -3214,6 +3350,11 @@ msgstr "Увага!"
msgid "No sub-resources found."
msgstr "Підлеглих реÑурÑів не знайдено."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Підлеглих реÑурÑів не знайдено."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ переглÑду Ñітки"
@@ -3238,33 +3379,34 @@ msgstr "Ð’Ñтановлені плаґіни:"
msgid "Update"
msgstr "Оновити"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "ВерÑÑ–Ñ:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Ðвтор:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "СтатуÑ:"
+#, fuzzy
+msgid "Author"
+msgstr "Ðвтори"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Редагувати:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "СтатуÑ"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Вимірювати:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Ð§Ð°Ñ ÐºÐ°Ð´Ñ€Ñƒ (Ñек)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Середній Ñ‡Ð°Ñ (Ñек)"
#: editor/editor_profiler.cpp
@@ -3284,6 +3426,16 @@ msgid "Self"
msgstr "Цей об'єкт"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Кадр #:"
@@ -3325,14 +3477,6 @@ msgstr "Ðекоректний RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Тип вибраного реÑурÑу (%s) не відповідає типу, Ñкий Ñ” очікуваним Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— "
-"влаÑтивоÑті (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3357,40 +3501,6 @@ msgid "Pick a Viewport"
msgstr "Виберіть панель переглÑду"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Ðовий Ñкрипт"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Розширити Ñкрипт"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "Ðовий %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Зробити унікальним"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Ð’Ñтавити"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Перетворити на %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Позначений вузол не Ñ” панеллю переглÑду!"
@@ -3419,6 +3529,49 @@ msgstr "Ðове значеннÑ:"
msgid "Add Key/Value Pair"
msgstr "Додати пару ключ-значеннÑ"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Тип вибраного реÑурÑу (%s) не відповідає типу, Ñкий Ñ” очікуваним Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— "
+"влаÑтивоÑті (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Зробити унікальним"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Ð’Ñтавити"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Перетворити на %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "Ðовий %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Ðовий Ñкрипт"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Розширити Ñкрипт"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3455,7 +3608,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Ви забули метод '_run'?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
"Утримуйте натиÑнутою Ctrl, щоб заокруглити до цілих. Утримуйте натиÑнутою "
"Shift, щоб зміни були точнішими."
@@ -3477,77 +3631,98 @@ msgid "Import From Node:"
msgstr "Імпортувати з вузла:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Отримати повторно"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Видалити"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Ð’Ñтановлено)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Ðемає файла «%s»."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Завантажити"
+#, fuzzy
+msgid "Retrieving the mirror list..."
+msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð·ÐµÑ€ÐºÐ°Ð», будь лаÑка, зачекайте..."
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "Ð”Ð»Ñ Ñ‚ÐµÑтових збірок не передбачено офіційних шаблонів екÑпортуваннÑ."
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(ВідÑутній)"
+msgid "Error requesting URL:"
+msgstr "Помилка під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ за такою адреÑою:"
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Поточний)"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ дзеркала..."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
-msgstr "ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð·ÐµÑ€ÐºÐ°Ð», будь лаÑка, зачекайте..."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Ðеможливо розпізнати ім'Ñ Ñ…Ð¾Ñта:"
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Вилучити верÑÑ–ÑŽ шаблону '%s'?"
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Ðе вдалоÑÑ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ÑÑ Ð´Ð¾ хоÑту:"
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Ðеможливо відкрити ZIP-файл шаблону екÑпорту."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Ðемає відповіді від хоÑта:"
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Ðеправильний формат version.txt у шаблонах: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
+msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ запит."
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Файл version.txt не знайдено у шаблонах."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Запит не вдавÑÑ, забагато перенаправлень"
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Помилка ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑˆÐ»Ñху Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ запит."
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Ð Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð² екÑпорту"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "ІмпортуваннÑ:"
+msgid "Cannot remove temporary file:"
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ тимчаÑовий файл:"
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
+msgstr ""
+"Ðе вдалоÑÑ Ð²Ñтановити шаблони.\n"
+"Проблемні архіви із шаблонами можна знайти тут: «%s»."
#: editor/export_template_manager.cpp
msgid "Error getting the list of mirrors."
msgstr "Помилка під Ñ‡Ð°Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÑпиÑку дзеркал."
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
msgstr ""
"Помилка під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ JSON ÑпиÑку дзеркал. Будь лаÑка, повідомте про цю "
"ваду!"
#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
msgid ""
"No download links found for this version. Direct download is only available "
"for official releases."
@@ -3556,58 +3731,6 @@ msgstr ""
"доÑтупне лише Ð´Ð»Ñ Ð¾Ñ„Ñ–Ñ†Ñ–Ð¹Ð½Ð¸Ñ… випуÑків."
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Ðе вдалоÑÑ Ð²Ð¸Ñ€Ñ–ÑˆÐ¸Ñ‚Ð¸ проблему."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Ðе вдаєтьÑÑ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ÑÑ."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Ðемає відповіді."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "Запит не вдавÑÑ."
-
-#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Циклічне переÑпрÑмуваннÑ."
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Ðе вдалоÑÑ:"
-
-#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð¾."
-
-#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
-msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ тимчаÑовий файл:"
-
-#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
-msgstr ""
-"Ðе вдалоÑÑ Ð²Ñтановити шаблони.\n"
-"Проблемні архіви із шаблонами можна знайти тут: «%s»."
-
-#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Помилка під Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ за такою адреÑою:"
-
-#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ дзеркала..."
-
-#: editor/export_template_manager.cpp
msgid "Disconnected"
msgstr "Роз'єднано"
@@ -3650,44 +3773,138 @@ msgid "SSL Handshake Error"
msgstr "Помилка SSL РукоÑтиÑканнÑ"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Ðеможливо відкрити ZIP-файл шаблону екÑпорту."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Ðеправильний формат version.txt у шаблонах: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Файл version.txt не знайдено у шаблонах."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Помилка ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÑˆÐ»Ñху Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Ð Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð² екÑпорту"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "ІмпортуваннÑ:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Вилучити верÑÑ–ÑŽ шаблону '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Розпаковуємо код Ð´Ð»Ñ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð´Ð»Ñ Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Менеджер екÑпорту шаблонів"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Поточна верÑÑ–Ñ:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Ð’Ñтановлені верÑÑ–Ñ—:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Відкрити файл"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Видалити"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Початкове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ°"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Помилка завантаженнÑ"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "Ð”Ð»Ñ Ñ‚ÐµÑтових збірок не передбачено офіційних шаблонів екÑпортуваннÑ."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Ð’Ñтановити з файлу"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Вилучити шаблон"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Імпортувати шаблони з ZIP-файлу"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "СкаÑувати"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Виберіть файл шаблону"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Ðеможливо відкрити ZIP-файл шаблону екÑпорту."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Шаблони екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Ð’Ñтановлені верÑÑ–Ñ—:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Менеджер екÑпорту шаблонів"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Видалити"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Завантажити шаблони"
+msgid "Select Template File"
+msgstr "Виберіть файл шаблону"
+
+#: editor/export_template_manager.cpp
+msgid "Godot Export Templates"
+msgstr "Шаблони екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "Виберіть дзеркало зі ÑпиÑку: (Shift+клацаннÑ: відкрити у браузері)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3822,29 +4039,62 @@ msgstr "Створити Ñкрипт…"
msgid "New Resource..."
msgstr "Створити реÑурÑ…"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Розгорнути вÑе"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Згорнути вÑе"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Дублювати..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Шукати файли"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "ВоÑтаннє змінено"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "ВоÑтаннє змінено"
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "ПереÑунути до Ñмітника"
+msgid "Duplicate..."
+msgstr "Дублювати..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Перейменувати..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñ‚ÐµÐºÐ° або файл"
@@ -3928,10 +4178,6 @@ msgstr "Знайти..."
msgid "Replace..."
msgstr "Замінити..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "СкаÑувати"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Знайти: "
@@ -4154,53 +4400,55 @@ msgid "Failed to load resource."
msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ реÑурÑ."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Розгорнути вÑÑ– влаÑтивоÑті"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "ВлаÑтивоÑті"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Згорнути вÑÑ– влаÑтивоÑті"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Зберегти Ñк..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "ВлаÑтивоÑті"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Копіювати параметри"
+msgid "Make Sub-Resources Unique"
+msgstr "Зробити Ñуб-реÑурÑи унікальними"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Редагувати буфер реÑурÑів"
+msgid "Create a new resource in memory and edit it."
+msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ реÑурÑу в пам'Ñті Ñ– редагувати його."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Копіювати реÑурÑ"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Завантажити наÑвний реÑÑƒÑ€Ñ Ñ–Ð· диÑка та відредагувати його."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "Зробити вбудованим"
+msgid "Save the currently edited resource."
+msgstr "Зберегти поточний редагований реÑурÑ."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Зробити Ñуб-реÑурÑи унікальними"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Зберегти Ñк..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Відкрити у довідці"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "Ðе в реÑурÑному шлÑху."
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ реÑурÑу в пам'Ñті Ñ– редагувати його."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Редагувати буфер реÑурÑів"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Завантажити наÑвний реÑÑƒÑ€Ñ Ñ–Ð· диÑка та відредагувати його."
+msgid "Copy Resource"
+msgstr "Копіювати реÑурÑ"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Зберегти поточний редагований реÑурÑ."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Зробити вбудованим"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4215,14 +4463,24 @@ msgid "History of recently edited objects."
msgstr "ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ð½ÐµÑ‰Ð¾Ð´Ð°Ð²Ð½Ð¾ відредагованих об'єктів."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "ВлаÑтивоÑті об'єкта."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Відкрити документацію"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Відкрити документацію"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Фільтрувати влаÑтивоÑті"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "ВлаÑтивоÑті об'єкта."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Зміни можуть бути втрачені!"
@@ -4250,6 +4508,15 @@ msgstr "Ðазва додатка:"
msgid "Subfolder:"
msgstr "Підтека:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Ðвтор:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "ВерÑÑ–Ñ:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Мова:"
@@ -4459,7 +4726,8 @@ msgid "Blend:"
msgstr "Змішувати:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Змінено параметр"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4681,6 +4949,11 @@ msgid "Animation"
msgstr "ÐнімаціÑ"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Ðовий"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Редагувати переходи…"
@@ -5022,10 +5295,18 @@ msgid "View Files"
msgstr "ПереглÑд файлів"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Завантажити"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Помилка з'єднаннÑ, будь лаÑка, повторіть Ñпробу."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Ðе вдаєтьÑÑ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ÑÑ."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Ðе вдалоÑÑ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚Ð¸ÑÑ Ð´Ð¾ хоÑту:"
@@ -5034,16 +5315,20 @@ msgid "No response from host:"
msgstr "Ðемає відповіді від хоÑта:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Ðемає відповіді."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Ðеможливо розпізнати ім'Ñ Ñ…Ð¾Ñта:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Помилка запиту, код поверненнÑ:"
+msgid "Can't resolve."
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ñ€Ñ–ÑˆÐ¸Ñ‚Ð¸ проблему."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ запит."
+msgid "Request failed, return code:"
+msgstr "Помилка запиту, код поверненнÑ:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5070,6 +5355,10 @@ msgid "Timeout."
msgstr "Перевищено Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° відповідь."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Ðе вдалоÑÑ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "РозбіжніÑть хеша завантаженнÑ, можливо файл був змінений."
@@ -5170,8 +5459,12 @@ msgid "All"
msgstr "Ð’Ñе"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Ðічого не знайдено Ð´Ð»Ñ Â«%s»."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5213,6 +5506,10 @@ msgstr "ЗавантаженнÑ…"
msgid "Assets ZIP File"
msgstr "ZIP файл реÑурÑів"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5223,11 +5520,12 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
-"Ðемає поліÑеток Ð´Ð»Ñ Ð·Ð°Ð¿Ñ–ÐºÐ°Ð½Ð½Ñ. ПереконайтеÑÑ, що вони міÑÑ‚Ñть канал UV2 Ñ– що "
-"прапор 'Ð—Ð°Ð¿Ñ–ÐºÐ°Ð½Ð½Ñ Ñвітла' включений."
+"Ðемає Ñіток Ð´Ð»Ñ Ð·Ð°Ð¿Ñ–ÐºÐ°Ð½Ð½Ñ. ПереконайтеÑÑ, що вони міÑÑ‚Ñть канал UV2, Ñ– "
+"позначено пункти «ВикориÑтовувати у приготованому оÑвітленні» (Use In Baked "
+"Light) та «Створити карту оÑвітленнÑ» (Generate Lightmap)."
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -5471,9 +5769,10 @@ msgstr "Змінити прив'Ñзки"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"ÐŸÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ гри\n"
"Замінює камеру гри камерою видимої облаÑті редактора."
@@ -5481,11 +5780,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"ÐŸÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ гри\n"
-"Ðемає запущеного екземплÑра гри."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5540,6 +5838,7 @@ msgstr ""
"визначаютьÑÑ Ð»Ð¸ÑˆÐµ їхнім батьківÑьким об'єктом."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5551,22 +5850,32 @@ msgid "Select Mode"
msgstr "Режим виділеннÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "ПеретÑгуваннÑ: Поворот"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Вилучити позначений вузол або перехід."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+ПеретÑгнути: переміÑтити"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Вилучити позначений вузол або перехід."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
-"ÐатиÑніть 'V', щоб змінити Pivot, 'Shift + V' Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ‚ÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Pivot (під "
-"Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ)."
+"Показати ÑпиÑок уÑÑ–Ñ… об'єктів, натиÑнутих на позицію\n"
+"(так Ñамо, Ñк Ðльт+ПКМ у режимі вибору)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Ðльт+ПКМ: СпиÑок вибору глибини"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5804,6 +6113,16 @@ msgid "Clear Pose"
msgstr "ОчиÑтити позу"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Додати вузол"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Сцени екземплÑра"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Помножити крок Ñітки на 2"
@@ -5816,6 +6135,52 @@ msgid "Pan View"
msgstr "ÐŸÐ°Ð½Ð¾Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "ЗменшеннÑ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "ЗменшеннÑ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "ЗменшеннÑ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "ЗменшеннÑ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "ЗменшеннÑ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "ЗменшеннÑ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Додати %s"
@@ -6059,6 +6424,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "Ðе вдалоÑÑ Ñтворити єдину опуклу форму зіткненнÑ."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Створити єдину опуклу форму"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "Створити єдину опуклу форму"
@@ -6091,7 +6461,8 @@ msgid "No mesh to debug."
msgstr "Ðемає Ñітки Ð´Ð»Ñ Ð½Ð°Ð»Ð°Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "Модель не має UV на цьому шарі"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6157,13 +6528,27 @@ msgstr ""
"Цей найшвидший (але найменш точний) варіант Ð´Ð»Ñ Ð²Ð¸ÑÐ²Ð»ÐµÐ½Ð½Ñ Ð·Ñ–Ñ‚ÐºÐ½ÐµÐ½ÑŒ."
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Створити єдину опуклу облаÑть зіткненнÑ"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "Створити декілька опуклих облаÑтей зіткненнÑ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Створює заÑновану на багатокутниках форму зіткненнÑ.\n"
"Цей проміжний за швидкіÑтю варіант між наведеними вище двома варіантами."
@@ -6225,7 +6610,6 @@ msgid "Mesh Library"
msgstr "Бібліотека Ñітки"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Додати елемент"
@@ -6498,7 +6882,8 @@ msgid "Close Curve"
msgstr "Закрити криву"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Параметри"
@@ -6809,6 +7194,26 @@ msgstr "Завантажити реÑурÑ"
msgid "ResourcePreloader"
msgstr "Передзавантажувач реÑурÑів"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Віддзеркалити горизонтально"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "КількіÑть генерованих точок:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "КількіÑть генерованих точок:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Віддзеркалити горизонтально"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree не міÑтить вÑтановлено шлÑху до AnimationPlayer"
@@ -7016,7 +7421,7 @@ msgstr "ЗапуÑтити"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Пошук"
@@ -7047,6 +7452,11 @@ msgid "Debug with External Editor"
msgstr "Ð—Ð½ÐµÐ²Ð°Ð´Ð¶ÐµÐ½Ð½Ñ Ð·Ð° допомогою зовнішнього редактора"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Онлайн документаціÑ"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Відкрити онлайнову документацію Godot."
@@ -7175,8 +7585,8 @@ msgstr "Перейти"
msgid "Cut"
msgstr "Вирізати"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Виділити вÑе"
@@ -7209,10 +7619,6 @@ msgid "Unfold All Lines"
msgstr "Розгорнути вÑÑ– Ñ€Ñдки"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "Клонувати вниз"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "Завершити Ñимвол"
@@ -7366,6 +7772,28 @@ msgid "View Plane Transform."
msgstr "ÐŸÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ð»Ð¾Ñ‰Ð¸Ð½Ð¸ переглÑду."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Ðемає"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Режим повороту"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "ПеренеÑеннÑ:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "МаÑштаб:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "МаÑштаб: "
@@ -7386,42 +7814,54 @@ msgid "Animation Key Inserted."
msgstr "Ð’Ñтавлено ключ анімації."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "ХилитаннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "ВідхиленнÑ"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Розмір"
+#, fuzzy
+msgid "Size:"
+msgstr "Розмір: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "Ðамальовано об'єктів"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "Зміни матеріалу"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "Зміни шейдерів"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "Зміни поверхонь"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "Виклики заÑобу малюваннÑ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Вершини"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "ВиглÑд згори."
@@ -7574,6 +8014,11 @@ msgid "Freelook Slow Modifier"
msgstr "Модифікатор швидкоÑті довільного оглÑду"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Змінити розмір камери"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду заблоковано"
@@ -7594,6 +8039,11 @@ msgstr ""
"грі."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Перетворити на %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Вікно XForm"
@@ -7612,7 +8062,8 @@ msgstr ""
"Ðапівзакрите око: Gizmo Ñ” також видимим крізь непрозорі поверхні («рентген»)."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "Приліпити вузли до підлоги"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7620,16 +8071,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ твердої оÑнови Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ фрагмента."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"ПеретÑгуваннÑ: Обертати\n"
-"Alt+ПеретÑгуваннÑ: ПереÑунути\n"
-"Alt+Права кнопка: Вибір у ÑпиÑку за глибиною"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "ВикориÑтати локальний проÑтір"
@@ -7638,6 +8079,10 @@ msgid "Use Snap"
msgstr "За допомогою функції прив'Ñзки"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "ВиглÑд знизу"
@@ -7731,6 +8176,11 @@ msgid "View Grid"
msgstr "ПереглÑд ґратки"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Параметри панелі переглÑду"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Параметри…"
@@ -8022,11 +8472,6 @@ msgid "Snap Mode:"
msgstr "Режим прилипаннÑ:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Ðемає"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "ÐŸÑ€Ð¸Ð»Ð¸Ð¿Ð°Ð½Ð½Ñ Ð´Ð¾ пікÑелів"
@@ -8047,165 +8492,603 @@ msgid "Step:"
msgstr "Крок:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "Роздільник:"
+msgid "Separation:"
+msgstr "ВідокремленнÑ:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "TextureRegion"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Додати уÑÑ– елементи"
+#, fuzzy
+msgid "Colors"
+msgstr "Колір"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Додати уÑÑ–"
+#, fuzzy
+msgid "Fonts"
+msgstr "Шрифт"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Піктограма"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Style Box"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Підлеглих реÑурÑів не знайдено."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "КонÑтанти"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Сталий колір."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Ðе знайдено!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Ðе знайдено!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Підлеглих реÑурÑів не знайдено."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Імпортувати тему"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Вийти з редактора?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Ðналіз"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Фільтри:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Виберіть вузол"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Виберіть поділ Ð´Ð»Ñ Ð¹Ð¾Ð³Ð¾ витираннÑ."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Спочатку виберіть елемент параметра!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Спочатку виберіть елемент параметра!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Спочатку виберіть елемент параметра!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Спочатку виберіть елемент параметра!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Спочатку виберіть елемент параметра!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Згорнути вÑе"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Розгорнути вÑе"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Виберіть файл шаблону"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Виберіть пункти"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Виділити вÑе"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Імпортувати Ñцену"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Вилучити уÑÑ– елементи"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Вилучити уÑÑ–"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Вилучити елемент"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Редагувати тему"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Вилучити уÑÑ– елементи"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Меню Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¸."
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Вилучити уÑÑ– елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Вилучити уÑÑ– елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Вилучити уÑÑ– елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Додати елементи клаÑу"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Додати елементи клаÑу"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Додати елемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Додати елемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Додати уÑÑ– елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Вилучити елементи клаÑу"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Вилучити елементи клаÑу"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Перейменувати вузол"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Перейменувати вузол"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Вилучити вибраний елемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "ÐеприпуÑтимий файл, це не ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾-шини."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Редагований елемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Тип:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Тип:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Додати елемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Додати уÑÑ– елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Вилучити елемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Вилучити елементи клаÑу"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Створити порожній шаблон"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Вилучити елементи клаÑу"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Створити порожній шаблон редактора"
+msgid "Remove All Items"
+msgstr "Вилучити уÑÑ– елементи"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Тема елементів ГІК"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Ім'Ñ Ð’ÑƒÐ·Ð»Ð°:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Створити на оÑнові поточної теми редактора"
+#, fuzzy
+msgid "Import Items"
+msgstr "Імпортувати тему"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Типовий"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Редагувати тему"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Вилучити реÑурÑ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Імпортувати тему"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Перейменувати доріжку"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Пакетне перейменуваннÑ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "ПеревизначеннÑ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Тип"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Додати елемент"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Тип вузлів"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Завантажити типовий"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "ПеревизначеннÑ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Тема"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸ екÑпортуваннÑ…"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "Попередній переглÑд"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Оновити переглÑд"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Виберіть джерело Ñітки:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "Кнопка-перемикач"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "Вимкнена кнопка"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Елемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Вимкнений елемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Позначити елемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Позначений елемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "Пункт варіанта"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "Позначений пункт варіанта"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "Імен. розд."
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Підменю"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Піделемент 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Піделемент 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Має"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Багато"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "Вимкнений LineEdit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "Вкладка 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "Вкладка 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "Вкладка 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Редагований елемент"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Піддерево"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Має,Багато,Параметрів"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Тип даних:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Піктограма"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Стиль"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Шрифт"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Колір"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "ÐеприпуÑтимий файл, це не ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð°ÑƒÐ´Ñ–Ð¾-шини."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Файл теми"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8377,6 +9260,10 @@ msgid "Priority"
msgstr "ПріоритетніÑть"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Піктограма"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z-індекÑ"
@@ -8715,11 +9602,6 @@ msgid "Commit Changes"
msgstr "ВнеÑти зміни"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "СтатуÑ"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
"ПереглÑнути відмінноÑті у файлах, перш ніж внеÑти Ñ—Ñ… до найÑвіжішої верÑÑ–Ñ—"
@@ -9611,7 +10493,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "Змінити візуальну влаÑтивіÑть"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9738,7 +10621,8 @@ msgid "Script"
msgstr "Скрипт"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Режим екÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñкрипту:"
#: editor/project_export.cpp
@@ -9746,19 +10630,21 @@ msgid "Text"
msgstr "ТекÑÑ‚"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Зібрано"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Зашифровано (ключ можна вказати нижче)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Ðекоректний ключ ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ (ключ має ÑкладатиÑÑ Ñ–Ð· 64 Ñимволів)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Ключ ÑˆÐ¸Ñ„Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñкрипту (256-бітове шіÑтнадцÑткове чиÑло):"
#: editor/project_export.cpp
@@ -9831,7 +10717,8 @@ msgid "Imported Project"
msgstr "Імпортований проєкт"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Ðекоректна назва проєкту."
#: editor/project_manager.cpp
@@ -9867,6 +10754,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Ðе вдалоÑÑ Ñтворити project.godot у каталозі проєкту."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Помилка під Ñ‡Ð°Ñ Ñпроби відкрити файл пакунка — дані не у форматі zip."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Ðе вдалоÑÑ Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ такі файли з пакунка:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Пакунок уÑпішно вÑтановлено!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Перейменувати проєкт"
@@ -10046,20 +10945,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Ви Ñправді хочете запуÑтити %d проєктів одночаÑно?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Вилучити %d проєктів зі ÑпиÑку?\n"
-"ВміÑÑ‚ тек проєктів змінено не буде."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Вибрати приÑтрій зі ÑпиÑку"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Вилучити цей проєкт зі ÑпиÑку?\n"
-"ВміÑÑ‚ теки не буде змінено."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Вибрати приÑтрій зі ÑпиÑку"
#: editor/project_manager.cpp
msgid ""
@@ -10092,7 +10985,8 @@ msgid "Project Manager"
msgstr "Керівник проєкту"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Проєкти"
#: editor/project_manager.cpp
@@ -10104,10 +10998,25 @@ msgid "Last Modified"
msgstr "ВоÑтаннє змінено"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "ЕкÑпортувати проєкт"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Перейменувати проєкт"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Сканувати"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Проєкти"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Виберіть теку Ð´Ð»Ñ ÑкануваннÑ"
@@ -10116,18 +11025,41 @@ msgid "New Project"
msgstr "Ðовий проєкт"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "Імпортований проєкт"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Перейменувати проєкт"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "Вилучити пропущене"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Шаблони"
+msgid "About"
+msgstr "Про"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Бібліотека реÑурÑів"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Перезавантажити зараз"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Вилучити уÑÑ–"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Ðе вдаєтьÑÑ Ð·Ð°Ð¿ÑƒÑтити проєкт"
@@ -10140,8 +11072,14 @@ msgstr ""
"Бажаєте переглÑнути офіційні приклади проєктів з бібліотеки реÑурÑів?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Фільтрувати влаÑтивоÑті"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10154,6 +11092,10 @@ msgid "Key "
msgstr "Клавіша "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "Кнопка джойÑтика"
@@ -10197,6 +11139,10 @@ msgstr "УÑÑ– приÑтрої"
msgid "Device"
msgstr "ПриÑтрій"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "ÐатиÑніть клавішу,..."
@@ -10338,7 +11284,8 @@ msgid "Override for Feature"
msgstr "Перевизначено Ð´Ð»Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñті"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Додати переклад"
#: editor/project_settings_editor.cpp
@@ -10346,11 +11293,13 @@ msgid "Remove Translation"
msgstr "Вилучити переклад"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "Додати переÑпрÑмований шлÑÑ…"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "ПереÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу додає переÑпрÑмуваннÑ"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "ПереÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÑурÑу додає переÑпрÑмуваннÑ"
#: editor/project_settings_editor.cpp
@@ -10624,6 +11573,10 @@ msgid "Post-Process"
msgstr "ПоÑÑ‚-обробка"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Стиль"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Ðе змінювати"
@@ -10790,12 +11743,30 @@ msgid "Delete node \"%s\"?"
msgstr "Вилучити вузол «%s»?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Ðе можна виконувати із кореневим вузлом."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Цю дію не можна виконувати над Ñценами з екземплÑрами."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10854,6 +11825,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Ðе можна працювати з вузлами, Ñпадкоємцем Ñких Ñ” поточна Ñцена!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Цю дію не можна виконувати над Ñценами з екземплÑрами."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Долучити Ñкрипт"
@@ -10902,10 +11877,6 @@ msgid "Load As Placeholder"
msgstr "Завантажити Ñк заповнювач"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Відкрити документацію"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11199,6 +12170,12 @@ msgstr ""
"можна редагувати у зовнішньому редакторі."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Ðазва клаÑу:"
@@ -11267,6 +12244,10 @@ msgid "Copy Error"
msgstr "Помилка копіюваннÑ"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "Відеопам'Ñть"
@@ -11552,6 +12533,16 @@ msgstr "Ðекоректний Ñловник екземплÑра (некоре
msgid "Object can't provide a length."
msgstr "Об'єкт не може надавати довжину."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "ЕкÑпортувати бібліотеку Ñіті"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "ЕкÑпортувати…"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "ÐаÑтупна площина"
@@ -11593,6 +12584,11 @@ msgid "GridMap Paint"
msgstr "Малюнок GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Вибір Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ GridMap"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Карта Ñітки"
@@ -11842,6 +12838,16 @@ msgid "Add Output Port"
msgstr "Додати вихідний порт"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Змінити тип"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Змінити назву вхідного порту"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "ÐŸÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ñвної вбудованої функції."
@@ -11954,6 +12960,11 @@ msgid "Add Preload Node"
msgstr "Додати попередньо завантажений вузол"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Додати вузол"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Додати вузли з дерева"
@@ -12184,10 +13195,6 @@ msgstr "Шукати VisualScript"
msgid "Get %s"
msgstr "Отримати %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Ð’Ñтановити %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Ðе вказано назви пакунка."
@@ -12219,6 +13226,40 @@ msgid "Select device from the list"
msgstr "Вибрати приÑтрій зі ÑпиÑку"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "ЕкÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑƒÑього"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Видалити"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "ЗавантаженнÑ. Будь лаÑка, зачекайте..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити підпроцеÑ!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "ЗапуÑк кориÑтувацького Ñкрипту..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Ðеможливо Ñтворити теку."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ програму apksigner."
@@ -12341,6 +13382,48 @@ msgstr ""
"нетипове збираннÑ»."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Ð¡ÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²,\n"
+"будь лаÑка, зачекайте..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ шаблон Ð´Ð»Ñ ÐµÐºÑпорту:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "ЕкÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑƒÑього"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
"Ðекоректна назва файла! Пакет програми Android повинен мати ÑÑƒÑ„Ñ–ÐºÑ Ð½Ð°Ð·Ð²Ð¸ *."
@@ -12356,6 +13439,10 @@ msgstr ""
"Ðекоректна назва файла! Пакунок Android APK повинен мати ÑÑƒÑ„Ñ–ÐºÑ Ð½Ð°Ð·Ð²Ð¸ *.apk."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12378,6 +13465,21 @@ msgstr ""
"меню «Проєкт»."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ project.godot у каталозі проекту."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Ð—Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ”ÐºÑ‚Ñƒ Android (gradle)"
@@ -12403,11 +13505,54 @@ msgstr ""
"Ðе вдалоÑÑ Ñкопіювати Ñ– перейменувати файл екÑпортованих даних. Виведені "
"дані можна знайти у каталозі проєкту gradle."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Ðе знайдено анімації: «%s»"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚ÑƒÑ€Ñ–Ð²..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ шаблон Ð´Ð»Ñ ÐµÐºÑпорту:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "Вирівнюємо APK..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Ðе вказано ідентифікатор."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "У назві ідентифікатора не можна викориÑтовувати Ñимволи «%s»."
@@ -12437,10 +13582,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Виконати екÑпортований HTML у браузері за умовчаннÑм ÑиÑтеми."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ шаблон Ð´Ð»Ñ ÐµÐºÑпорту:"
@@ -12449,16 +13590,49 @@ msgid "Invalid export template:"
msgstr "Ðеправильний шаблон екÑпорту:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Ðе вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати файл:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Ðе вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñпеціальну оболонку HTML:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ файл Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтавки:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Ðеможливо Ñтворити теку."
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð³Ð¾ файлу Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтавки."
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Помилка Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñцени."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Ðекоректний ідентифікатор:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12894,6 +14068,13 @@ msgstr ""
"У драйвері GLES2 не передбачено підтримки GIProbes.\n"
"СкориÑтайтеÑÑ Ð·Ð°Ð¼Ñ–Ñть них BakedLightmap."
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "SpotLight з кутом, Ñкий Ñ” більшим за 90 градуÑів, не може давати тіні."
@@ -12979,6 +14160,18 @@ msgstr "З'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð½Ðµ з'єднано із жодним PhysicsBody"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Вузол A і вузол B має бути різними PhysicsBody"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12987,6 +14180,46 @@ msgstr ""
"Щоб уÑе працювало Ñк Ñлід, влаÑтивіÑть «Remote Path» має вказувати на "
"коректний вузол Spatial або похідний від Spatial."
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "Це тіло буде проігноровано, аж доки ви не вÑтановите Ñітку."
@@ -13048,6 +14281,10 @@ msgstr "У вузлі BlendTree «%s» не знайдено анімації: Â
msgid "Animation not found: '%s'"
msgstr "Ðе знайдено анімації: «%s»"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "У вузлі «%s», некоректна анімаціÑ: «%s»."
@@ -13224,6 +14461,27 @@ msgid "Invalid comparison function for that type."
msgstr "Ðекоректна Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿Ð¾Ñ€Ñ–Ð²Ð½ÑÐ½Ð½Ñ Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ типу."
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Змінні величини можна пов'Ñзувати лише із функцією вузлів."
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹Ð½Ð¾Ð³Ð¾."
@@ -13232,13 +14490,179 @@ msgid "Assignment to uniform."
msgstr "ÐŸÑ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð´Ð½Ð¾Ñ€Ñ–Ð´Ð½Ð¾Ð³Ð¾."
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Змінні величини можна пов'Ñзувати лише із функцією вузлів."
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Сталі не можна змінювати."
+#~ msgid "Package Contents:"
+#~ msgstr "ВміÑÑ‚ пакунка:"
+
+#~ msgid "Singleton"
+#~ msgstr "Одинак (шаблон проєктуваннÑ)"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Витерти профіль «%s»? (не можна ÑкаÑувати)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Увімкнені влаÑтивоÑті:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Увімкнені можливоÑті:"
+
+#~ msgid "Unset"
+#~ msgstr "Ðе вÑтановлено"
+
+#~ msgid "Class Options"
+#~ msgstr "Параметри клаÑу"
+
+#~ msgid "Set"
+#~ msgstr "Множина"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Збережено змінених реÑурÑів: %s."
+
+#~ msgid "Q&A"
+#~ msgstr "Ð—Ð°Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° відповіді"
+
+#~ msgid "Status:"
+#~ msgstr "СтатуÑ:"
+
+#~ msgid "Edit:"
+#~ msgstr "Редагувати:"
+
+#~ msgid "Redownload"
+#~ msgstr "Отримати повторно"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Ð’Ñтановлено)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(ВідÑутній)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Запит не вдавÑÑ."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Циклічне переÑпрÑмуваннÑ."
+
+#~ msgid "Download Complete."
+#~ msgstr "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð¾."
+
+#~ msgid "Remove Template"
+#~ msgstr "Вилучити шаблон"
+
+#~ msgid "Download Templates"
+#~ msgstr "Завантажити шаблони"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "Виберіть дзеркало зі ÑпиÑку: (Shift+клацаннÑ: відкрити у браузері)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "ПереÑунути до Ñмітника"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Розгорнути вÑÑ– влаÑтивоÑті"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Згорнути вÑÑ– влаÑтивоÑті"
+
+#~ msgid "Copy Params"
+#~ msgstr "Копіювати параметри"
+
+#~ msgid "Open in Help"
+#~ msgstr "Відкрити у довідці"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "ÐŸÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ°Ð¼ÐµÑ€Ð¸ гри\n"
+#~ "Ðемає запущеного екземплÑра гри."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "ПеретÑгуваннÑ: Поворот"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr ""
+#~ "ÐатиÑніть 'V', щоб змінити Pivot, 'Shift + V' Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ‚ÑÐ³ÑƒÐ²Ð°Ð½Ð½Ñ Pivot "
+#~ "(під Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ)."
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Ðльт+ПКМ: СпиÑок вибору глибини"
+
+#~ msgid "Clone Down"
+#~ msgstr "Клонувати вниз"
+
+#~ msgid "Yaw"
+#~ msgstr "ВідхиленнÑ"
+
+#~ msgid "Size"
+#~ msgstr "Розмір"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "ПеретÑгуваннÑ: Обертати\n"
+#~ "Alt+ПеретÑгуваннÑ: ПереÑунути\n"
+#~ "Alt+Права кнопка: Вибір у ÑпиÑку за глибиною"
+
+#~ msgid "Sep.:"
+#~ msgstr "Роздільник:"
+
+#~ msgid "Add All"
+#~ msgstr "Додати уÑÑ–"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Меню Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÐ¼Ð¸."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Створити порожній шаблон"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Створити порожній шаблон редактора"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Створити на оÑнові поточної теми редактора"
+
+#~ msgid "Data Type:"
+#~ msgstr "Тип даних:"
+
+#~ msgid "Theme File"
+#~ msgstr "Файл теми"
+
+#~ msgid "Compiled"
+#~ msgstr "Зібрано"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Вилучити %d проєктів зі ÑпиÑку?\n"
+#~ "ВміÑÑ‚ тек проєктів змінено не буде."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Вилучити цей проєкт зі ÑпиÑку?\n"
+#~ "ВміÑÑ‚ теки не буде змінено."
+
+#~ msgid "Templates"
+#~ msgstr "Шаблони"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "Додати переÑпрÑмований шлÑÑ…"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Ðе можна виконувати із кореневим вузлом."
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "Ðе вдалоÑÑ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ñ‚Ð¸ файл Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтавки:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "ВикориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð³Ð¾ файлу Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ñтавки."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Відтворювач анімації не може відтворювати Ñам Ñебе, лише інші "
@@ -13306,9 +14730,6 @@ msgstr "Сталі не можна змінювати."
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "У вказаному каталозі вже міÑтитьÑÑ Ñ‚ÐµÐºÐ° або файл із вказано назвою."
-#~ msgid "Aligning APK..."
-#~ msgstr "Вирівнюємо APK..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "Ðе вдалоÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚Ð¸ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ APK."
@@ -13372,9 +14793,6 @@ msgstr "Сталі не можна змінювати."
#~ "Поточна Ñцена ніколи не була збережена, будь лаÑка, збережіть Ñ—Ñ— до "
#~ "запуÑку."
-#~ msgid "Not in resource path."
-#~ msgstr "Ðе в реÑурÑному шлÑху."
-
#~ msgid "Revert"
#~ msgstr "ПовернутиÑÑ"
@@ -13478,9 +14896,6 @@ msgstr "Сталі не можна змінювати."
#~ msgid "Input"
#~ msgstr "Вхідні дані"
-#~ msgid "Properties:"
-#~ msgstr "ВлаÑтивоÑті:"
-
#~ msgid "Methods:"
#~ msgstr "Методи:"
@@ -13960,9 +15375,6 @@ msgstr "Сталі не можна змінювати."
#~ msgid "Connect two points to make a split."
#~ msgstr "З'єднайте дві точки Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ñ€Ñ–Ð·Ñƒ."
-#~ msgid "Select a split to erase it."
-#~ msgstr "Виберіть поділ Ð´Ð»Ñ Ð¹Ð¾Ð³Ð¾ витираннÑ."
-
#~ msgid "Add Node.."
#~ msgstr "Додати вузол…"
@@ -14031,9 +15443,6 @@ msgstr "Сталі не можна змінювати."
#~ msgid "Public Methods:"
#~ msgstr "Публічні методи:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "Тема елементів ГІК"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "Тема елементів ГІК:"
@@ -14092,9 +15501,6 @@ msgstr "Сталі не можна змінювати."
#~ msgid "Rotate 270 degrees"
#~ msgstr "ÐžÐ±ÐµÑ€Ñ‚Ð°Ð½Ð½Ñ Ð½Ð° 270 градуÑів"
-#~ msgid "Variable"
-#~ msgstr "Змінна"
-
#~ msgid "Errors:"
#~ msgstr "Помилки:"
@@ -14185,9 +15591,6 @@ msgstr "Сталі не можна змінювати."
#~ msgid "Set Transitions to:"
#~ msgstr "Ð’Ñтановити перехід на:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Перейменувати доріжку"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Змінити інтерполÑцію"
@@ -14335,12 +15738,6 @@ msgstr "Сталі не можна змінювати."
#~ msgid "StyleBox Preview:"
#~ msgstr "ПереглÑд StyleBox:"
-#~ msgid "StyleBox"
-#~ msgstr "Style Box"
-
-#~ msgid "Separation:"
-#~ msgstr "ВідокремленнÑ:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "Редактор облаÑті текÑтури"
@@ -14412,12 +15809,6 @@ msgstr "Сталі не можна змінювати."
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ project.godot з каталогу проекту."
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ project.godot у каталозі проекту."
-
-#~ msgid "Not found!"
-#~ msgstr "Ðе знайдено!"
-
#~ msgid "Replace By"
#~ msgstr "Замінити на"
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index 0a213a2bdf..5c5a6baa8e 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -517,7 +517,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -543,7 +544,8 @@ msgstr ""
msgid "Scale From Cursor"
msgstr ""
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr ""
@@ -565,6 +567,10 @@ msgid "Go to Previous Step"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Apply Reset"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr ""
@@ -581,6 +587,10 @@ msgid "Use Bezier Curves"
msgstr ""
#: editor/animation_track_editor.cpp
+msgid "Create RESET Track(s)"
+msgstr ""
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr ""
@@ -629,7 +639,7 @@ msgid "Select Tracks to Copy"
msgstr ""
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -716,12 +726,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -779,11 +791,9 @@ msgid "Add"
msgstr ""
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -834,6 +844,7 @@ msgstr ".تمام کا انتخاب"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -907,8 +918,9 @@ msgid "Edit..."
msgstr ""
#: editor/connections_dialog.cpp
-msgid "Go To Method"
-msgstr ""
+#, fuzzy
+msgid "Go to Method"
+msgstr "سب سکریپشن بنائیں"
#: editor/create_dialog.cpp
msgid "Change %s Type"
@@ -923,6 +935,14 @@ msgstr ""
msgid "Create New %s"
msgstr "سب سکریپشن بنائیں"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -944,8 +964,8 @@ msgstr ""
msgid "Matches:"
msgstr ""
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1018,16 +1038,18 @@ msgstr ""
#: editor/dependency_editor.cpp
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1072,7 +1094,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1193,37 +1215,41 @@ msgstr ""
msgid "Licenses"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Uncompressing Assets"
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+msgid "Uncompressing Assets"
msgstr ""
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Success!"
+msgid "(and %s more files)"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Asset \"%s\" installed successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
msgstr ""
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
@@ -1231,8 +1257,9 @@ msgid "Install"
msgstr ""
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
-msgstr ""
+#, fuzzy
+msgid "Asset Installer"
+msgstr "Ø§Ø«Ø§Ø«Û Ú©ÛŒ زپ ÙØ§Ø¦Ù„"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
@@ -1297,8 +1324,9 @@ msgid "Bypass"
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+#, fuzzy
+msgid "Bus Options"
+msgstr "سب سکریپشن بنائیں"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/scene_tree_dock.cpp
@@ -1378,7 +1406,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1466,6 +1494,14 @@ msgid "Can't add autoload:"
msgstr ""
#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr ""
@@ -1481,16 +1517,16 @@ msgid "Node Name:"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr ""
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr ""
@@ -1506,7 +1542,7 @@ msgstr ""
msgid "Updating scene..."
msgstr ""
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr ""
@@ -1648,7 +1684,47 @@ msgid "Import Dock"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(current)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1682,15 +1758,15 @@ msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr ".تمام کا انتخاب"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
+msgid "Main Features:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1708,7 +1784,7 @@ msgid "Error saving profile to path: '%s'."
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Unset"
+msgid "Reset to Default"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1717,17 +1793,26 @@ msgid "Current Profile:"
msgstr ".تمام کا انتخاب"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr ""
+#, fuzzy
+msgid "Create Profile"
+msgstr ".تمام کا انتخاب"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+#, fuzzy
+msgid "Remove Profile"
+msgstr ".تمام کا انتخاب"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr ".تمام کا انتخاب"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr ""
@@ -1737,22 +1822,21 @@ msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Available Profiles:"
+msgid "Configure Selected Profile:"
msgstr ".تمام کا انتخاب"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
+msgid "Extra Options:"
msgstr "سب سکریپشن بنائیں"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
+msgid "Create or import a profile to edit available classes and properties."
msgstr ""
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "Erase Profile"
-msgstr ".تمام کا انتخاب"
+msgid "New profile name:"
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1775,7 +1859,7 @@ msgid "Select Current Folder"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+msgid "File exists, overwrite?"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1830,9 +1914,10 @@ msgid "Open a File or Directory"
msgstr ""
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr ""
@@ -1918,8 +2003,7 @@ msgid "Directories & Files:"
msgstr ""
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr ""
@@ -1992,7 +2076,7 @@ msgstr ".تمام کا انتخاب"
msgid "Enumerations"
msgstr ""
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr ""
@@ -2080,7 +2164,7 @@ msgstr ""
msgid "Signal"
msgstr ".تمام کا انتخاب"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr ""
@@ -2097,8 +2181,9 @@ msgstr ".تمام کا انتخاب"
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2115,7 +2200,7 @@ msgid "Copy Selection"
msgstr ".تمام کا انتخاب"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2180,7 +2265,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr ""
@@ -2374,18 +2460,22 @@ msgid "Save changes to '%s' before closing?"
msgstr ""
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr ""
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2558,7 +2648,7 @@ msgstr ""
msgid "Default"
msgstr ""
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr ""
@@ -2742,6 +2832,11 @@ msgid "Orphan Resource Explorer..."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr ".تمام کا انتخاب"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr ""
@@ -2875,13 +2970,12 @@ msgstr ".تمام کا انتخاب"
msgid "Help"
msgstr ""
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
+#: editor/editor_node.cpp
+msgid "Online Documentation"
msgstr ""
#: editor/editor_node.cpp
-msgid "Q&A"
+msgid "Questions & Answers"
msgstr ""
#: editor/editor_node.cpp
@@ -2889,6 +2983,10 @@ msgid "Report a Bug"
msgstr ""
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -2897,7 +2995,7 @@ msgid "Community"
msgstr "کمیونٹی"
#: editor/editor_node.cpp
-msgid "About"
+msgid "About Godot"
msgstr ""
#: editor/editor_node.cpp
@@ -2995,6 +3093,15 @@ msgid "Manage Templates"
msgstr ".تمام کا انتخاب"
#: editor/editor_node.cpp
+msgid "Install from file"
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr ".ÛŒÛ Ø±ÛŒØ³ÙˆØ±Ø³ ÙØ§Ø¦Ù„ پر مبنی Ù†ÛÛŒ ÛÛ’"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3022,7 +3129,7 @@ msgstr ""
msgid "Template Package"
msgstr ".تمام کا انتخاب"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3064,6 +3171,11 @@ msgid "Select"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr ".تمام کا انتخاب"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr ""
@@ -3095,6 +3207,10 @@ msgstr ""
msgid "No sub-resources found."
msgstr ""
+#: editor/editor_path.cpp
+msgid "Open a list of sub-resources."
+msgstr ""
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3120,21 +3236,18 @@ msgstr ""
msgid "Update"
msgstr ""
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
+#: editor/editor_plugin_settings.cpp
+msgid "Version"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
+msgid "Author"
msgstr ""
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3142,11 +3255,11 @@ msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+msgid "Frame Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3166,6 +3279,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr ""
@@ -3208,12 +3331,6 @@ msgstr ""
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3231,42 +3348,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "New Script"
-msgstr "سب سکریپشن بنائیں"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "سب سکریپشن بنائیں"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3295,6 +3376,49 @@ msgstr ""
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr ".تمام کا انتخاب"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "New Script"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Extend Script"
+msgstr "سب سکریپشن بنائیں"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3327,7 +3451,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3347,64 +3471,70 @@ msgid "Import From Node:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redownload"
+msgid "Open the folder containing these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uninstall"
+msgid "Uninstall these templates."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Installed)"
+msgid "There are no mirrors available."
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
+msgid "Retrieving the mirror list..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
+msgid "Starting the download..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
+msgid "Error requesting URL:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
+msgid "Connecting to the mirror..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+msgid "Can't resolve the requested address."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
+msgid "Can't connect to the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
+msgid "No response from the mirror."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
+msgid "Request ended up in a redirect loop."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
+msgid "Request failed:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
+msgid "Download complete; extracting templates..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Importing:"
+msgid "Cannot remove temporary file:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Templates installation failed.\n"
+"The problematic templates archives can be found at '%s'."
msgstr ""
#: editor/export_template_manager.cpp
@@ -3412,7 +3542,11 @@ msgid "Error getting the list of mirrors."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
msgstr ""
#: editor/export_template_manager.cpp
@@ -3422,139 +3556,172 @@ msgid ""
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
+msgid "Disconnected"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
+msgid "Resolving"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't Resolve"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
+msgid "Connecting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Can't Connect"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
+msgid "Connected"
msgstr ""
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
+msgid "Requesting..."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Download Complete."
+msgid "Downloading"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Cannot remove temporary file:"
+msgid "Connection Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid ""
-"Templates installation failed.\n"
-"The problematic templates archives can be found at '%s'."
+msgid "SSL Handshake Error"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr ""
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr ".تمام کا انتخاب"
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
+msgid "Invalid version.txt format inside the export templates file: %s."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Disconnected"
+msgid "No version.txt found inside the export templates file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Resolving"
+msgid "Error creating path for extracting templates:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Resolve"
+msgid "Extracting Export Templates"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Connecting..."
+msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Can't Connect"
+msgid "Remove templates for the version '%s'?"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connected"
+msgid "Uncompressing Android Build Sources"
msgstr ""
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Requesting..."
+msgid "Export Template Manager"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Downloading"
+msgid "Current Version:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Connection Error"
+msgid "Export templates are missing. Download them or install from a file."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "SSL Handshake Error"
+msgid "Export templates are installed and ready to be used."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Uncompressing Android Build Sources"
-msgstr ""
+#, fuzzy
+msgid "Open Folder"
+msgstr "سب سکریپشن بنائیں"
#: editor/export_template_manager.cpp
-msgid "Current Version:"
+msgid "Open the folder containing installed templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
+msgid "Uninstall"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall templates for the current version."
msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Remove Template"
+msgid "Download from:"
msgstr ".تمام کا انتخاب"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Select Template File"
-msgstr ".تمام کا انتخاب"
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install from File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install templates from a local file."
+msgstr ""
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Cancel the download of the templates."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Other Installed Versions:"
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
+msgid "Uninstall Template"
msgstr ".تمام کا انتخاب"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr ""
+#, fuzzy
+msgid "Select Template File"
+msgstr ".تمام کا انتخاب"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Download Templates"
+msgid "Godot Export Templates"
msgstr ".تمام کا انتخاب"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -3688,30 +3855,59 @@ msgstr "سب سکریپشن بنائیں"
msgid "New Resource..."
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr ""
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
+msgid "Sort files"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Move to Trash"
-msgstr "ایکشن منتقل کریں"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr ""
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr ""
@@ -3792,10 +3988,6 @@ msgstr ""
msgid "Replace..."
msgstr ""
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr ""
@@ -4022,52 +4214,53 @@ msgid "Failed to load resource."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr ".تمام کا انتخاب"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr ""
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr ""
+#, fuzzy
+msgid "Paste Properties"
+msgstr ".تمام کا انتخاب"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
+msgid "Make Sub-Resources Unique"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
+msgid "Create a new resource in memory and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
+msgid "Load an existing resource from disk and edit it."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
+msgid "Save the currently edited resource."
msgstr ""
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr ""
+#, fuzzy
+msgid "Extra resource options."
+msgstr ".ÛŒÛ Ø±ÛŒØ³ÙˆØ±Ø³ ÙØ§Ø¦Ù„ پر مبنی Ù†ÛÛŒ ÛÛ’"
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr ".ÛŒÛ Ø±ÛŒØ³ÙˆØ±Ø³ ÙØ§Ø¦Ù„ پر مبنی Ù†ÛÛŒ ÛÛ’"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
+msgid "Copy Resource"
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
+msgid "Make Resource Built-In"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4083,7 +4276,11 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
+msgid "Open documentation for this object."
+msgstr ""
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
msgstr ""
#: editor/inspector_dock.cpp
@@ -4091,6 +4288,11 @@ msgid "Filter properties"
msgstr ""
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr ".تمام کا انتخاب"
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4119,6 +4321,15 @@ msgstr ""
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr ""
@@ -4328,7 +4539,7 @@ msgid "Blend:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4548,6 +4759,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr ""
@@ -4890,10 +5106,18 @@ msgid "View Files"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr ""
@@ -4902,15 +5126,19 @@ msgid "No response from host:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
+msgid "Can't resolve."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
+msgid "Request failed, return code:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -4938,6 +5166,10 @@ msgid "Timeout."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5038,7 +5270,11 @@ msgid "All"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5083,6 +5319,10 @@ msgstr ""
msgid "Assets ZIP File"
msgstr "Ø§Ø«Ø§Ø«Û Ú©ÛŒ زپ ÙØ§Ø¦Ù„"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5091,8 +5331,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5335,15 +5575,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5403,6 +5644,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5414,19 +5656,28 @@ msgid "Select Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr ".تمام کا انتخاب"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr ".تمام کا انتخاب"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5662,6 +5913,15 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Instance Scene Here"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5674,6 +5934,46 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 50%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 100%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 200%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 400%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 800%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -5921,6 +6221,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "سب سکریپشن بنائیں"
@@ -5955,7 +6260,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6016,13 +6321,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "سب سکریپشن بنائیں"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6076,7 +6394,6 @@ msgid "Mesh Library"
msgstr ""
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6349,7 +6666,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr ""
@@ -6666,6 +6984,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -6874,7 +7210,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr ""
@@ -6905,6 +7241,11 @@ msgid "Debug with External Editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr ""
@@ -7031,8 +7372,8 @@ msgstr ""
msgid "Cut"
msgstr ""
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr ""
@@ -7065,10 +7406,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7224,6 +7561,26 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "ایکشن منتقل کریں"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7244,39 +7601,45 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Surface Changes:"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Vertices:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7435,6 +7798,10 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Toggle Camera Preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr ""
@@ -7450,6 +7817,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7463,7 +7835,7 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7471,18 +7843,15 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7580,6 +7949,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr ""
@@ -7882,11 +8255,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -7907,169 +8275,561 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr ".تمام کا انتخاب"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Fonts"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Icons"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "Styleboxes"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No colors found."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All Items"
-msgstr ".تمام کا انتخاب"
+msgid "{num} constant(s)"
+msgstr "سب سکریپشن بنائیں"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No constants found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No fonts found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No icons found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "No styleboxes found."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing Theme Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Updating the editor"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Finalizing"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All"
-msgstr ".تمام کا انتخاب"
+msgid "Filter:"
+msgstr "سب سکریپشن بنائیں"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "Select by data type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Toggle Button"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Button"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled Item"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Select all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Select all visible icon items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Deselect all visible icon items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Select all visible stylebox items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Deselect all visible stylebox items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Collapse types."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Expand types."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+#, fuzzy
+msgid "Select all Theme items."
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Disabled LineEdit"
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+#, fuzzy
+msgid "Deselect All"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+#, fuzzy
+msgid "Import Selected"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Remove All Color Items"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Ù¾Ø³Ù†Ø¯ÛŒØ¯Û Ø§ÙˆÙ¾Ø± منتقل کریں"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Editable Item"
+#, fuzzy
+msgid "Add Font Item"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Stylebox Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has,Many,Options"
+#, fuzzy
+msgid "Rename Font Item"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, not a Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+msgid "Add Item:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Add StyleBox Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
+msgid "Remove Custom Items"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Old Name:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr ".سپورٹ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Another Theme"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Confirm Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Cancel Item Rename"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Node Types:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show Default"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
msgstr "سب سکریپشن بنائیں"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Default Preview"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "ایک مینو منظر چنیں"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Toggle Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Button"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Disabled LineEdit"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Editable Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has,Many,Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -8245,6 +9005,10 @@ msgid "Priority"
msgstr ""
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8595,11 +9359,6 @@ msgid "Commit Changes"
msgstr ""
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9433,8 +10192,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr ".تمام کا انتخاب"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9549,7 +10309,7 @@ msgid "Script"
msgstr "سب سکریپشن بنائیں"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr ""
#: editor/project_export.cpp
@@ -9557,7 +10317,7 @@ msgid "Text"
msgstr ""
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9565,11 +10325,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -9643,7 +10403,7 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr ""
#: editor/project_manager.cpp
@@ -9678,6 +10438,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Rename Project"
msgstr ".تمام کا انتخاب"
@@ -9825,15 +10597,11 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
+msgid "Remove %d projects from the list?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
+msgid "Remove this project from the list?"
msgstr ""
#: editor/project_manager.cpp
@@ -9861,7 +10629,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr ".تمام کا انتخاب"
#: editor/project_manager.cpp
@@ -9873,10 +10641,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr ".تمام کا انتخاب"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr ".تمام کا انتخاب"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr ".تمام کا انتخاب"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -9886,19 +10669,41 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Remove Missing"
+msgid "Import Project"
+msgstr ".تمام کا انتخاب"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
msgstr ".تمام کا انتخاب"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Templates"
+msgid "Remove Missing"
msgstr ".تمام کا انتخاب"
#: editor/project_manager.cpp
+msgid "About"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Asset Library Projects"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove All"
+msgstr ".تمام کا انتخاب"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -9909,8 +10714,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9920,6 +10730,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -9961,6 +10775,10 @@ msgstr ""
msgid "Device"
msgstr ""
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10102,7 +10920,7 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+msgid "Add %d Translations"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10110,11 +10928,11 @@ msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10383,6 +11201,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr ""
@@ -10550,11 +11372,29 @@ msgid "Delete node \"%s\"?"
msgstr ".اینیمیشن کی کیز کو ڈیلیٹ کرو"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -10612,6 +11452,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "Attach Script"
msgstr "سب سکریپشن بنائیں"
@@ -10660,10 +11504,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10943,6 +11783,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr ""
@@ -11015,6 +11861,10 @@ msgid "Copy Error"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11305,6 +12155,15 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+msgid "Export Mesh GLTF2"
+msgstr ""
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr ".سپورٹ"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr ""
@@ -11349,6 +12208,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr ".تمام کا انتخاب"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -11598,6 +12462,16 @@ msgid "Add Output Port"
msgstr ".تمام کا انتخاب"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr ""
@@ -11713,6 +12587,11 @@ msgid "Add Preload Node"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr ".تمام کا انتخاب"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr ""
@@ -11946,10 +12825,6 @@ msgstr "سب سکریپشن بنائیں"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -11979,6 +12854,37 @@ msgid "Select device from the list"
msgstr ""
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr ".سپورٹ"
+
+#: platform/android/export/export.cpp
+msgid "Uninstalling..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Installing to device, please wait..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/android/export/export.cpp
+msgid "Running on device..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12075,6 +12981,42 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing release %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not find keystore, unable to export."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Verifying %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Exporting for Android"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12087,6 +13029,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12101,6 +13047,20 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12120,11 +13080,51 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+msgid "Package not found: %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Creating APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr ".تمام کا انتخاب"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "سب سکریپشن بنائیں"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12153,28 +13153,54 @@ msgid "Run exported HTML in the system's default browser."
msgstr ""
#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Invalid export template:"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
#, fuzzy
msgid "Could not write file:"
msgstr "سب سکریپشن بنائیں"
#: platform/javascript/export/export.cpp
-msgid "Could not open template for export:"
-msgstr ""
+#, fuzzy
+msgid "Could not read file:"
+msgstr "سب سکریپشن بنائیں"
#: platform/javascript/export/export.cpp
-msgid "Invalid export template:"
-msgstr ""
+#, fuzzy
+msgid "Could not read HTML shell:"
+msgstr "سب سکریپشن بنائیں"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not create HTTP server directory:"
msgstr ""
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+msgid "Error starting HTTP server:"
msgstr ""
-#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
+#: platform/osx/export/export.cpp
+msgid "Invalid bundle identifier:"
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
msgstr ""
#: platform/uwp/export/export.cpp
@@ -12522,6 +13548,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12591,12 +13624,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12645,6 +13730,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr ""
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -12792,15 +13881,31 @@ msgid "Invalid comparison function for that type."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
@@ -12808,16 +13913,24 @@ msgid "Constants cannot be modified."
msgstr ""
#, fuzzy
-#~ msgid "Move pivot"
+#~ msgid "Remove Template"
+#~ msgstr ".تمام کا انتخاب"
+
+#, fuzzy
+#~ msgid "Move to Trash"
#~ msgstr "ایکشن منتقل کریں"
#, fuzzy
-#~ msgid "Move anchor"
+#~ msgid "Templates"
+#~ msgstr ".تمام کا انتخاب"
+
+#, fuzzy
+#~ msgid "Move pivot"
#~ msgstr "ایکشن منتقل کریں"
#, fuzzy
-#~ msgid "Not in resource path."
-#~ msgstr ".ÛŒÛ Ø±ÛŒØ³ÙˆØ±Ø³ ÙØ§Ø¦Ù„ پر مبنی Ù†ÛÛŒ ÛÛ’"
+#~ msgid "Move anchor"
+#~ msgstr "ایکشن منتقل کریں"
#, fuzzy
#~ msgid "Clear Script"
diff --git a/editor/translations/vi.po b/editor/translations/vi.po
index 0104d05502..531488e640 100644
--- a/editor/translations/vi.po
+++ b/editor/translations/vi.po
@@ -24,7 +24,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2021-05-14 11:20+0000\n"
+"PO-Revision-Date: 2021-08-02 02:00+0000\n"
"Last-Translator: Rev <revolnoom7801@gmail.com>\n"
"Language-Team: Vietnamese <https://hosted.weblate.org/projects/godot-engine/"
"godot/vi/>\n"
@@ -33,7 +33,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.7-dev\n"
+"X-Generator: Weblate 4.8-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -538,7 +538,8 @@ msgstr "Giây"
msgid "FPS"
msgstr "Khung hình(FPS)"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -564,7 +565,8 @@ msgstr "Chá»n Scale"
msgid "Scale From Cursor"
msgstr "Scale từ trỠchuột"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "Nhân đôi lá»±a chá»n"
@@ -585,6 +587,11 @@ msgid "Go to Previous Step"
msgstr "Äến Bước trước đó"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "Äặt lại phóng"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "Tối ưu Hoạt ảnh"
@@ -601,6 +608,11 @@ msgid "Use Bezier Curves"
msgstr "Sá»­ dụng đưá»ng cong Bezier"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "Dán Tracks"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "Tối ưu hóa Animation"
@@ -649,7 +661,7 @@ msgid "Select Tracks to Copy"
msgstr "Chá»n các Track để sao chép"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -735,12 +747,14 @@ msgid "Toggle Scripts Panel"
msgstr "Hiện/Ẩn bảng Tệp lệnh"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "Phóng to"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -797,11 +811,9 @@ msgid "Add"
msgstr "Thêm"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -852,6 +864,7 @@ msgstr "Không thể kết nối tín hiệu"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -921,7 +934,8 @@ msgid "Edit..."
msgstr "Chỉnh sửa..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "Äến Method"
#: editor/create_dialog.cpp
@@ -936,6 +950,14 @@ msgstr "Äổi"
msgid "Create New %s"
msgstr "Tạo %s mới"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "Không tìm thấy kết quả cho \"%s\"."
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -957,8 +979,8 @@ msgstr "Tìm kiếm:"
msgid "Matches:"
msgstr "Phù hợp:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1034,19 +1056,23 @@ msgid "Owners Of:"
msgstr "Sở hữu của:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Gỡ bá» các tệp đã chá»n trong dá»± án? (Không thể khôi phục)\n"
"Bạn có thể khôi phục chúng trong thùng rác của hệ thống."
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"Các tài nguyên khác cần những tệp bị xóa này mới hoạt động được.\n"
"Vẫn xóa hả? (không hồi được đâu)\n"
@@ -1094,7 +1120,7 @@ msgstr "Tìm tài nguyên mất gốc"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1219,28 +1245,41 @@ msgstr "Thành phần"
msgid "Licenses"
msgstr "Các giấy phép"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "Lỗi không thể mở gói, không phải dạng nén ZIP."
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "Lỗi mở gói (không phải dạng ZIP)."
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s (Äã tồn tại)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "Giải nén tài nguyên"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "Không thể lấy các tệp sau khá»i gói:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "Và %s tệp nữa."
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "Cài đặt gói thành công!"
#: editor/editor_asset_installer.cpp
@@ -1248,16 +1287,13 @@ msgstr "Cài đặt gói thành công!"
msgid "Success!"
msgstr "Thành công!"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "Trong Gói có:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "Cài đặt"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "Gói cài đặt"
#: editor/editor_audio_buses.cpp
@@ -1321,7 +1357,8 @@ msgid "Bypass"
msgstr "Bá» qua"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "Tùy chá»n Bus"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1401,7 +1438,7 @@ msgstr "Thêm Bus"
msgid "Add a new Audio Bus to this layout."
msgstr "Thêm Bus âm thanh mới cho bố cục."
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1488,6 +1525,15 @@ msgid "Can't add autoload:"
msgstr "Không thể thêm nạp tự động:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "Tệp không tồn tại."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "Thêm AutoLoad"
@@ -1503,16 +1549,17 @@ msgid "Node Name:"
msgstr "Tên Node:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "Tên"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "ÄÆ¡n nhất"
+#, fuzzy
+msgid "Global Variable"
+msgstr "Äổi tên Biến"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "Dán các đối số"
@@ -1528,7 +1575,7 @@ msgstr "Lưu các thay đổi cục bộ ..."
msgid "Updating scene..."
msgstr "Äang cập nhật cảnh ..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[rá»—ng]"
@@ -1681,8 +1728,49 @@ msgid "Import Dock"
msgstr "Khung Nhập"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "Xoá hồ sơ '%s'? (không hoàn tác)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(Hiện tại)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1713,15 +1801,18 @@ msgid "Enable Contextual Editor"
msgstr "Bật trình chỉnh sửa ngữ cảnh"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "Thuộc tính đã bật:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "Thuộc tính:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "Tính năng đã bật:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "Tính năng"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "Lớp đã bật:"
#: editor/editor_feature_profile.cpp
@@ -1739,25 +1830,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "Lá»—i khi lưu hồ sÆ¡ đến đưá»ng dẫn: '%s'."
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "BỠđặt"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "Äặt lại thành mặc định"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "Hồ sơ hiện tại:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "Äặt làm hiện tại"
+#, fuzzy
+msgid "Create Profile"
+msgstr "Xoá hồ sơ"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "Má»›i"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "Xóa Ô"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "Hồ sơ khả dụng:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "Äặt làm hiện tại"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "Nhập"
@@ -1766,20 +1866,22 @@ msgid "Export"
msgstr "Xuất ra"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "Hồ sơ khả dụng:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "Hồ sơ hiện tại:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "Tuỳ chỉnh lớp"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "Tuỳ chá»n Lá»›p:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "Tên mới hồ sơ:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "Xoá hồ sơ"
+msgid "New profile name:"
+msgstr "Tên mới hồ sơ:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1802,7 +1904,8 @@ msgid "Select Current Folder"
msgstr "Chá»n thư mục hiện tại"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "Tệp tin tồn tại, ghi đè?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1856,9 +1959,10 @@ msgid "Open a File or Directory"
msgstr "Mở một tệp tin hoặc thư mục"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "Lưu"
@@ -1939,8 +2043,7 @@ msgid "Directories & Files:"
msgstr "Các Thư mục và Tệp tin:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "Xem thá»­:"
@@ -2013,7 +2116,7 @@ msgstr "Thuá»™c tính Chá»§ Ä‘á»"
msgid "Enumerations"
msgstr "Liệt kê"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "Hằng số"
@@ -2102,7 +2205,7 @@ msgstr "Hàm"
msgid "Signal"
msgstr "Tín hiệu"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "Hằng số"
@@ -2118,9 +2221,10 @@ msgstr "Cài đặt Tông màu"
msgid "Property:"
msgstr "Thuộc tính:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "Gán"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "Gán %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2135,7 +2239,7 @@ msgid "Copy Selection"
msgstr "Sao chép lá»±a chá»n"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2199,7 +2303,8 @@ msgid "Imported resources can't be saved."
msgstr "Tài nguyên đã nhập không thể lưu."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2415,18 +2520,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "Lưu thay đổi vào '%s' trước khi đóng?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "Äã lưu tài nguyên được sá»­a đổi."
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "Yêu cầu một nút gốc khi lưu cảnh."
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "Lưu Cảnh thành..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "Thao tác này phải có Cảnh mới làm được."
@@ -2618,7 +2728,7 @@ msgstr "Xoá bố cục"
msgid "Default"
msgstr "Mặc định"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "Hiện trong Hệ thống tệp tin"
@@ -2799,6 +2909,11 @@ msgid "Orphan Resource Explorer..."
msgstr "Tìm kiếm tài nguyên mất gốc..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "Äổi tên Dá»± án"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "Thoát khá»i Danh sách Dá»± án"
@@ -2945,20 +3060,24 @@ msgstr "Quản lý Các Mẫu Xuất Bản ..."
msgid "Help"
msgstr "Trợ giúp"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "Tài liệu trực tuyến"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "Mở Hướng dẫn"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Há»i và Äáp"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "Báo lỗi"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "Gửi ý kiến phản hồi vỠhướng dẫn"
@@ -2967,7 +3086,8 @@ msgid "Community"
msgstr "Cộng đồng"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "VỠchúng tôi"
#: editor/editor_node.cpp
@@ -3066,6 +3186,16 @@ msgid "Manage Templates"
msgstr "Quản lý Mẫu xuất bản"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "Cài đặt từ File"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "Chá»n má»™t lưới nguồn:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3101,7 +3231,7 @@ msgstr "Nạp các mẫu xuất bản bằng tệp ZIP"
msgid "Template Package"
msgstr "Gói Ví Dụ"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "Xuất thư viện ra"
@@ -3144,6 +3274,11 @@ msgid "Select"
msgstr "Chá»n"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "Chá»n thư mục hiện tại"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "Mở trình chỉnh sửa 2D"
@@ -3175,6 +3310,11 @@ msgstr "Cảnh báo!"
msgid "No sub-resources found."
msgstr "Không tìm thấy tài nguyên phụ."
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "Không tìm thấy tài nguyên phụ."
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "Tạo bản xem trước lưới"
@@ -3199,33 +3339,34 @@ msgstr "Các Tiện ích đã cài:"
msgid "Update"
msgstr "Cập nhật"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "Phiên bản:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "Tác giả:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "Trạng thái:"
+#, fuzzy
+msgid "Author"
+msgstr "Tác giả"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "Sá»­a:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "Trạng thái"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "Äo đạc:"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "Thá»i gian khung hình (giây)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "Thá»i gian trung bình (giây)"
#: editor/editor_profiler.cpp
@@ -3245,6 +3386,16 @@ msgid "Self"
msgstr "Chính nó"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "Khung hình #:"
@@ -3286,13 +3437,6 @@ msgstr "Số RID không hợp lệ"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-"Kiểu cá»§a tài nguyên đã chá»n (%s) không dùng được cho thuá»™c tính này (%s)."
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3312,40 +3456,6 @@ msgid "Pick a Viewport"
msgstr "Chá»n cổng xem"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "Mã lệnh mới"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "Mở rộng Script"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "%s má»›i"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "Duy nhất"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "Dán"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "Chuyển thành %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "Nút được chá»n không phải Cổng xem!"
@@ -3374,6 +3484,48 @@ msgstr "Giá trị mới:"
msgid "Add Key/Value Pair"
msgstr "Thêm cặp Khoá/Giá trị"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+"Kiểu cá»§a tài nguyên đã chá»n (%s) không dùng được cho thuá»™c tính này (%s)."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Duy nhất"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "Dán"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "Chuyển thành %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "%s má»›i"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "Mã lệnh mới"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "Mở rộng Script"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3406,7 +3558,8 @@ msgid "Did you forget the '_run' method?"
msgstr "Bạn quên phương thức '_run' à?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr "Giữ Ctrl để làm tròn vỠsố nguyên. Giữ Shift để sửa tỉ mỉ hơn."
#: editor/editor_sub_scene.cpp
@@ -3426,114 +3579,69 @@ msgid "Import From Node:"
msgstr "Nhập từ Nút:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "Tải lại xuống"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "Gỡ cài đặt"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(Äã cài đặt)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "Tải"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "Các mẫu xuất bản chính thức không có sẵn cho các bản dựng phát triển."
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(Thiếu)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(Hiện tại)"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "Không có tệp tin '%s'."
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "Äang tìm các trang dá»± phòng, đợi xíu..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "Xóa template phiên bản '%s'?"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "Không thể mở tệp zip các mẫu xuất bản."
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "Äịnh dạng version.txt không hợp lệ bên trong các mẫu xuất bản: %s."
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "Không thấy version.txt trong các mẫu xuất bản."
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "Lá»—i tạo đưá»ng dẫn đến các mẫu xuất bản:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "Trích xuất các Mẫu xuất bản"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "Äang Nhập:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "Có lỗi khi lấy các trang mirror."
+msgid "Error requesting URL:"
+msgstr "Lá»—i khi yêu cầu đưá»ng dẫn:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr ""
-"Có lỗi khi phân tích JSON của danh sách trang dự phòng. Hãy báo cáo lỗi!"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "Äang kết nối tá»›i trang Mirror..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr ""
-"Không tìm thấy liên kết để tải phiên bản này. Chỉ có thể tải trực tiếp các "
-"bản chính thức."
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "Không thể phân giải tên máy lưu trữ:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Không thể giải quyết."
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "Không thể kết nối tới host:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Không thể kết nối."
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "Không có phản hồi từ host:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Không phản hồi."
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "Yêu cầu thất bại."
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "Chuyển hướng vòng lặp."
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "Yêu cầu thất bại, chuyển hướng quá nhiá»u"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Thất bại:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "Yêu cầu thất bại."
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "Tải xuống xong."
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3548,12 +3656,26 @@ msgstr ""
"Các lưu trữ mẫu xuất bản có vấn đỠcó thể được tìm thấy tại '%s'."
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "Lá»—i khi yêu cầu đưá»ng dẫn:"
+msgid "Error getting the list of mirrors."
+msgstr "Có lỗi khi lấy các trang mirror."
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "Äang kết nối tá»›i trang Mirror..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr ""
+"Có lỗi khi phân tích JSON của danh sách trang dự phòng. Hãy báo cáo lỗi!"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr ""
+"Không tìm thấy liên kết để tải phiên bản này. Chỉ có thể tải trực tiếp các "
+"bản chính thức."
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3598,45 +3720,138 @@ msgid "SSL Handshake Error"
msgstr "Lá»—i SSL Handshake"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "Không thể mở tệp zip các mẫu xuất bản."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "Äịnh dạng version.txt không hợp lệ bên trong các mẫu xuất bản: %s."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "Không thấy version.txt trong các mẫu xuất bản."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "Lá»—i tạo đưá»ng dẫn đến các mẫu xuất bản:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "Trích xuất các Mẫu xuất bản"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "Äang Nhập:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "Xóa template phiên bản '%s'?"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "Giải nén nguồn xây dựng Android"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "Trình quản lý Mẫu Xuất"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Phiên bản hiện tại:"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "Phiên bản đã cài:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "Mở tệp"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "Gỡ cài đặt"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "Giá trị đếm ban đầu"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "Lỗi tải"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "Các mẫu xuất bản chính thức không có sẵn cho các bản dựng phát triển."
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "Cài đặt từ File"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "Xóa Template"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "Nạp các mẫu xuất bản bằng tệp ZIP"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Huá»· bá»"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "Chá»n tệp bản mẫu"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "Không thể mở tệp zip các mẫu xuất bản."
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Các mẫu xuất bản Godot"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "Phiên bản đã cài:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "Trình quản lý Mẫu Xuất"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "Gỡ cài đặt"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "Chá»n tệp bản mẫu"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "Tải Xuống Các Mẫu Xuất Bản"
+msgid "Godot Export Templates"
+msgstr "Các mẫu xuất bản Godot"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
msgstr ""
-"Chá»n trang dá»± phòng từ danh sách: (Shift + Chuá»™t trái: Mở trong trình duyệt)"
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3651,6 +3866,7 @@ msgstr ""
msgid ""
"Importing has been disabled for this file, so it can't be opened for editing."
msgstr ""
+"Tệp này đã bị vô hiệu hóa chức năng nhập, nên không thể mở để chỉnh sửa được."
#: editor/filesystem_dock.cpp
msgid "Cannot move/rename resources root."
@@ -3767,29 +3983,62 @@ msgstr "Tạo Mã lệnh ..."
msgid "New Resource..."
msgstr "Tài nguyên mới ..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "Mở rộng Tất cả"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "Thu gá»n Tất cả"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "Nhân đôi..."
+#, fuzzy
+msgid "Sort files"
+msgstr "Tìm kiếm tệp tin"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "Di chuyển vào Thùng rác"
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "Sửa đổi lần cuối"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "Sửa đổi lần cuối"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "Nhân đôi..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "Äổi tên..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "Thư mục/Tệp tin trước"
@@ -3873,10 +4122,6 @@ msgstr "Tìm..."
msgid "Replace..."
msgstr "Thay thế ..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Huá»· bá»"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "Tìm: "
@@ -4100,53 +4345,54 @@ msgid "Failed to load resource."
msgstr "Nạp tài nguyên thất bại."
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "Mở rộng tất cả"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "Thuộc tính"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "Thu gá»n tất cả"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "Lưu thành ..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "Thuộc tính"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "Sao chép các đối số"
+msgid "Make Sub-Resources Unique"
+msgstr "Biến tài nguyên phụ thành độc nhất"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "Chỉnh sửa Tài nguyên trên Clipboard"
+msgid "Create a new resource in memory and edit it."
+msgstr "Tạo tài nguyên mới trong bộ nhớ rồi chỉnh sửa."
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "Sao chép Tài nguyên"
+msgid "Load an existing resource from disk and edit it."
+msgstr "Tải tài nguyên có sẵn trong đĩa rồi chỉnh sửa."
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr ""
+msgid "Save the currently edited resource."
+msgstr "Lưu tài nguyên đã chỉnh sửa hiện tại."
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "Biến tài nguyên phụ thành độc nhất"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "Lưu thành ..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "Mở trong Trợ giúp"
+msgid "Extra resource options."
+msgstr ""
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "Tạo tài nguyên mới trong bộ nhớ rồi chỉnh sửa."
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "Chỉnh sửa Tài nguyên trên Clipboard"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "Tải tài nguyên có sẵn trong đĩa rồi chỉnh sửa."
+msgid "Copy Resource"
+msgstr "Sao chép Tài nguyên"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "Lưu tài nguyên đã chỉnh sửa hiện tại."
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "Biến tài nguyên phụ thành độc nhất"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4161,14 +4407,24 @@ msgid "History of recently edited objects."
msgstr "Lịch sử các đối tượng được chỉnh sửa gần đây."
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "Thuộc tính đối tượng."
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "Mở Hướng dẫn"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "Mở Hướng dẫn"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "Lá»c các thuá»™c tính"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "Thuộc tính đối tượng."
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "Các thay đổi có thể mất!"
@@ -4196,6 +4452,15 @@ msgstr "Tên Tiện ích:"
msgid "Subfolder:"
msgstr "Thư mục phụ:"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "Tác giả:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Phiên bản:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "Ngôn ngữ:"
@@ -4319,7 +4584,7 @@ msgstr ""
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Select and move points, create points with RMB."
-msgstr ""
+msgstr "Chá»n và di chuyển các Ä‘iểm, chuá»™t phải để tạo Ä‘iểm."
#: editor/plugins/animation_blend_space_1d_editor.cpp
#: editor/plugins/animation_blend_space_2d_editor.cpp scene/gui/graph_edit.cpp
@@ -4374,12 +4639,11 @@ msgstr "BlendSpace2D không thuộc nút AnimationTree."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "No triangles exist, so no blending can take place."
-msgstr ""
+msgstr "Không có tam giác nào nên không trộn được."
#: editor/plugins/animation_blend_space_2d_editor.cpp
-#, fuzzy
msgid "Toggle Auto Triangles"
-msgstr "Bật tắt Ưa thích"
+msgstr "Bật tắt Tự động tạo tam giác"
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Create triangles by connecting points."
@@ -4391,7 +4655,7 @@ msgstr "Xóa tam giác và các điểm."
#: editor/plugins/animation_blend_space_2d_editor.cpp
msgid "Generate blend triangles automatically (instead of manually)"
-msgstr ""
+msgstr "Tự động tạo tam giác trộn (thay vì phải vất vả thủ công)"
#: editor/plugins/animation_blend_space_2d_editor.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
@@ -4399,7 +4663,8 @@ msgid "Blend:"
msgstr "Trá»™n:"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "Äối số đã thay đổi"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4409,11 +4674,11 @@ msgstr "Chỉnh sá»­a Lá»c"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Output node can't be added to the blend tree."
-msgstr "Nút đầu ra không thể thêm vào cây Blend."
+msgstr "Nút đầu ra không thể thêm vào Cây Trộn."
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Add Node to BlendTree"
-msgstr "Thêm nút vào cây Blend"
+msgstr "Thêm nút vào cây Trộn"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
msgid "Node Moved"
@@ -4615,6 +4880,11 @@ msgid "Animation"
msgstr "Hoạt ảnh"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "Má»›i"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "Chỉnh sửa Chuyển tiếp ..."
@@ -4957,10 +5227,18 @@ msgid "View Files"
msgstr "Xem Files"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "Tải"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "Kết nỗi lỗi, thử lại."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Không thể kết nối."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "Không thể kết nối tới host:"
@@ -4969,16 +5247,20 @@ msgid "No response from host:"
msgstr "Không có phản hồi từ host:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Không phản hồi."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "Không thể phân giải tên máy lưu trữ:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Yêu cầu thất bại, trả lại code:"
+msgid "Can't resolve."
+msgstr "Không thể giải quyết."
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "Yêu cầu thất bại."
+msgid "Request failed, return code:"
+msgstr "Yêu cầu thất bại, trả lại code:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5005,6 +5287,10 @@ msgid "Timeout."
msgstr "Quá giá»."
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Thất bại:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5105,8 +5391,12 @@ msgid "All"
msgstr "Tất cả"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "Không tìm thấy kết quả cho \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5148,6 +5438,10 @@ msgstr "Äang tải..."
msgid "Assets ZIP File"
msgstr "Tệp tin ZIP Nguyên liệu"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5156,8 +5450,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5392,9 +5686,10 @@ msgstr "Äổi các Neo"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"Ghi đè máy quay trò chơi\n"
"Ghi đè máy quay trò chơi bằng máy quay cổng xem của trình chỉnh sửa."
@@ -5402,11 +5697,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"Ghi đè máy quay trò chơi\n"
-"Không có thực thể trò chơi này đang chạy."
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5461,6 +5755,7 @@ msgstr ""
"rồi."
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5472,20 +5767,32 @@ msgid "Select Mode"
msgstr "Chế độ chá»n"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "Kéo: Xoay"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "Xoá nút và chuyển tiếp đã chá»n."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+Kéo: Di chuyển"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "Xoá nút và chuyển tiếp đã chá»n."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
+"Hiện thị danh sách tất cả đối tượng có vị trí đã nhấp.\n"
+"(giống Alt+RMB trong chế độ chá»n)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+chuá»™t phải: Chá»n theo tầng"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5719,6 +6026,16 @@ msgid "Clear Pose"
msgstr "Xoá sạch tư thế"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "Thêm Nút"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "Khởi tạo Cảnh"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "Gấp đôi bước lưới"
@@ -5731,6 +6048,52 @@ msgid "Pan View"
msgstr "Di chuyển tầm nhìn"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "Thu nhá»"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "Thu nhá»"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "Thu nhá»"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "Thu nhá»"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "Thu nhá»"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "Thu nhá»"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "Thêm %s"
@@ -5975,6 +6338,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "Tạo hình dạng lồi"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "Tạo hình dạng lồi"
@@ -6008,7 +6376,7 @@ msgid "No mesh to debug."
msgstr "Không có lưới để gỡ lỗi."
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6075,13 +6443,27 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "Tạo"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "Tạo"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"Tạo một khối va chạm đa giác.\n"
"Äây là tùy chá»n có hiệu suất cân bằng so vá»›i hai tùy chá»n trên."
@@ -6139,7 +6521,6 @@ msgid "Mesh Library"
msgstr "Thư viện Lưới"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "Thêm mục"
@@ -6413,7 +6794,8 @@ msgid "Close Curve"
msgstr "Äóng đưá»ng cong"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "Tùy chá»n"
@@ -6724,6 +7106,26 @@ msgstr "Nạp tài nguyên"
msgid "ResourcePreloader"
msgstr ""
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "Lật Ngang"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Di chuyển các điểm Bezier"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "Xóa Point"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "Lật Ngang"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree chưa đặt đưá»ng dẫn đến AnimationPlayer nào"
@@ -6847,13 +7249,13 @@ msgstr "Sắp xếp"
#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Move Up"
-msgstr ""
+msgstr "Nâng nút lên"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
#: modules/gdnative/gdnative_library_editor_plugin.cpp
msgid "Move Down"
-msgstr ""
+msgstr "Hạ nút xuống"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -6928,7 +7330,7 @@ msgstr "Chạy"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "Tìm kiếm"
@@ -6959,6 +7361,11 @@ msgid "Debug with External Editor"
msgstr "Gỡ lỗi bằng Trình chỉnh sửa bên ngoài"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "Tài liệu trực tuyến"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "Mở tài liệu Godot trực tuyến."
@@ -7084,8 +7491,8 @@ msgstr "Äi tá»›i"
msgid "Cut"
msgstr "Cắt"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "Chá»n Toàn Bá»™"
@@ -7118,10 +7525,6 @@ msgid "Unfold All Lines"
msgstr "Trải tất cả các dòng"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
#, fuzzy
msgid "Complete Symbol"
msgstr "Hoàn thiện kí hiệu"
@@ -7277,6 +7680,28 @@ msgid "View Plane Transform."
msgstr "Xem Transform cá»§a Plane."
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "Không có"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "Chế độ Xoay"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "Bản dịch"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "Tỷ lệ:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7297,42 +7722,52 @@ msgid "Animation Key Inserted."
msgstr "Äã chèn khóa hoạt ảnh."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "Kích cỡ"
+#, fuzzy
+msgid "Size:"
+msgstr "Kích thước: "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
-msgstr ""
+#, fuzzy
+msgid "Material Changes:"
+msgstr "Äối số đã thay đổi"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
-msgstr ""
+#, fuzzy
+msgid "Shader Changes:"
+msgstr "Những thay đổi"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
-msgstr ""
+#, fuzzy
+msgid "Surface Changes:"
+msgstr "Các điểm bỠmặt"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
-msgstr ""
+#, fuzzy
+msgid "Draw Calls:"
+msgstr "Lượt gá»i"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "Äỉnh"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr ""
@@ -7487,6 +7922,11 @@ msgid "Freelook Slow Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "Bật tắt Ưa thích"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "Äã khóa xoay ở chế độ xem"
@@ -7504,6 +7944,11 @@ msgstr ""
"Äừng lấy đó làm mốc để đánh giá hiệu suất."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "Chuyển thành %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7518,7 +7963,7 @@ msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Snap Nodes To Floor"
+msgid "Snap Nodes to Floor"
msgstr "Dính Nút lên Sàn"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7526,16 +7971,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"Kéo: Xoay\n"
-"Alt+Kéo: Di chuyển\n"
-"Alt+Chuá»™t phải: Chá»n theo tầng"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "Sử dụng Không gian Cục bộ"
@@ -7544,6 +7979,10 @@ msgid "Use Snap"
msgstr "Sử dụng Dính"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "Góc nhìn đáy"
@@ -7637,6 +8076,11 @@ msgid "View Grid"
msgstr "Xem Lưới"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "Cài đặt Cổng xem"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "Cài đặt..."
@@ -7926,11 +8370,6 @@ msgid "Snap Mode:"
msgstr "Chế độ Dính:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "Không có"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "Dính Äiểm ảnh"
@@ -7951,168 +8390,606 @@ msgid "Step:"
msgstr "Bước:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "Thu phóng (theo tỉ lệ):"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "TextureRegion"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "Thêm tất cả các mục"
+#, fuzzy
+msgid "Colors"
+msgstr "Màu"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "Thêm Tất cả"
+#, fuzzy
+msgid "Fonts"
+msgstr "Phông chữ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "Biểu tượng"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "Kiểu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "Không tìm thấy tài nguyên phụ."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "Hằng số"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "Cố định"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "Không tìm thấy tài nguyên phụ."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "Không tìm thấy tài nguyên phụ."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "Không tìm thấy tài nguyên phụ."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "Nhập Tông màu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "Thoát trình chỉnh sửa?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "Phân tích"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "Lá»c:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "Chá»n má»™t Nút"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "Chá»n má»™t Folder để Quét"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "Chá»n má»™t mục cài đặt đã!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "Chá»n má»™t mục cài đặt đã!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "Chá»n má»™t mục cài đặt đã!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "Chá»n má»™t mục cài đặt đã!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "Chá»n má»™t mục cài đặt đã!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "Thu gá»n Tất cả"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "Mở rộng Tất cả"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "Chá»n tệp bản mẫu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "Chá»n Points"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "Chá»n Toàn Bá»™"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "Nhập cảnh"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "Xóa tất cả các mục"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "Xoá tất cả"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "Gõ bỠMục"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "Chỉnh Tông màu"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "Xóa tất cả các mục"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "Xóa tất cả các mục"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "Xóa tất cả các mục"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "Xóa tất cả các mục"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "Menu chỉnh Tông màu."
+#, fuzzy
+msgid "Add Color Item"
+msgstr "Thêm mục Lớp"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "Thêm mục Lớp"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "Thêm mục"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "Thêm mục"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "Thêm tất cả các mục"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "Xóa mục Lớp"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "Xóa mục Lớp"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "Äổi tên nút"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "Äổi tên nút"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "Xóa mục đã chá»n"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "Sai kiểu tệp, không phải bố cục bus âm thanh."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "Quản lý Mẫu xuất bản"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "Mục có thể chỉnh sửa"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "Kiểu:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "Kiểu:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "Thêm mục"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "Thêm tất cả các mục"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "Gõ bỠMục"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "Xóa mục Lớp"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "Tạo Mẫu Trống"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "Xóa mục Lớp"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "Xóa tất cả các mục"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "Thêm mục"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "Tên Node:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "Nhập Tông màu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "Mặc định"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "Chỉnh Tông màu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "Xóa tài nguyên"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "Nhập Tông màu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "Äổi tên Anim Track"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "Tạo mẫu Trình biên tập trống"
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "Äổi tên"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "Ghi đè"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "Tạo từ Tông màu Trình biên soạn hiện tại"
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "Kiểu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "Thêm mục"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Loại nút"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "Nạp mặc định"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "Ghi đè"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "Tông màu"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "Quản lý Các Mẫu Xuất Bản ..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
+msgid "Add Preview"
+msgstr "Xem thá»­"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "Cập nhật bản xem trước"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "Chá»n má»™t lưới nguồn:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
msgid "Toggle Button"
msgstr "Bật tắt Chức năng"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled Button"
msgstr "Tắt"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "Mục"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "Các mục tắt"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "Äánh dấu mục"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "Mục đã đánh dấu"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "Menu phụ"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "Mục phụ 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "Mục phụ 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "Có"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "Nhiá»u"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#, fuzzy
msgid "Disabled LineEdit"
msgstr "Tắt"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "Mục có thể chỉnh sửa"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "Cây con"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "Có, Nhiá»u, Tùy Chá»n"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "Kiểu Dữ liệu:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "Biểu tượng"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "Kiểu"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Phông chữ"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "Màu"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "Sai kiểu tệp, không phải bố cục bus âm thanh."
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "Tệp Tông màu"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8283,6 +9160,10 @@ msgid "Priority"
msgstr "Ưu tiên"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "Biểu tượng"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Chỉ số Z"
@@ -8616,11 +9497,6 @@ msgid "Commit Changes"
msgstr "Äổi"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "Trạng thái"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "Kiểm tra các khác biệt trước khi xác nhận vào phiên bản mới nhất"
@@ -9464,8 +10340,9 @@ msgid "VisualShader"
msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
-msgstr ""
+#, fuzzy
+msgid "Edit Visual Property:"
+msgstr "Chỉnh độ ưu tiên của ô"
#: editor/plugins/visual_shader_editor_plugin.cpp
msgid "Visual Shader Mode Changed"
@@ -9588,7 +10465,8 @@ msgid "Script"
msgstr "Tệp lệnh"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "Chế độ xuất tệp lệnh:"
#: editor/project_export.cpp
@@ -9596,19 +10474,21 @@ msgid "Text"
msgstr "Văn bản"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "Äã biên dịch"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "Äã mã hóa (cung cấp mã mở bên dưới)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "Mã mở không hợp lệ (phải dài 64 kí tự)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "Mã khóa tệp lệnh (256-bit theo hex):"
#: editor/project_export.cpp
@@ -9682,7 +10562,8 @@ msgid "Imported Project"
msgstr "Äã nạp Dá»± án"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "Tên dự án không hợp lệ."
#: editor/project_manager.cpp
@@ -9718,6 +10599,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "Không thể tạo 'project.godot' trong đưá»ng dẫn dá»± án."
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "Lỗi không thể mở gói, không phải dạng nén ZIP."
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "Không thể lấy các tệp sau khá»i gói:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "Cài đặt gói thành công!"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "Äổi tên Dá»± án"
@@ -9891,20 +10784,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "Bạn có chắc chắn chạy các dự án %d cùng lúc?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"Gỡ các dá»± án %d khá»i danh sách?\n"
-"Nội dung các thư mục dự án sẽ không được sửa đổi."
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "Chá»n thiết bị trong danh sách"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"Gỡ dá»± án này khá»i danh sách?\n"
-"Nội dung của thư mục dự án sẽ không được sửa đổi."
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "Chá»n thiết bị trong danh sách"
#: editor/project_manager.cpp
msgid ""
@@ -9937,7 +10824,8 @@ msgid "Project Manager"
msgstr "Trình quản lý Dự án"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "Dự án"
#: editor/project_manager.cpp
@@ -9949,10 +10837,25 @@ msgid "Last Modified"
msgstr "Sửa đổi lần cuối"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "Xuất bản Dự án"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "Äổi tên Dá»± án"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "Quét"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "Dự án"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "Chá»n má»™t Folder để Quét"
@@ -9962,18 +10865,41 @@ msgstr "Tạo Dá»± Ãn"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "Äã nạp Dá»± án"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "Äổi tên Dá»± án"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "Xóa Animation"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "Thư Viện"
+msgid "About"
+msgstr "VỠchúng tôi"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "Thư viện tài nguyên"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "Restart ngay"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "Xoá tất cả"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "Không thể chạy dự án"
@@ -9986,8 +10912,14 @@ msgstr ""
"Bạn có muốn xem qua các dự án ví dụ trên Thư Viện không?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "Lá»c các thuá»™c tính"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10000,6 +10932,10 @@ msgid "Key "
msgstr "Khoá "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10042,6 +10978,10 @@ msgstr "Tất cả thiết bị"
msgid "Device"
msgstr "Thiết bị"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "Nhấn một phím..."
@@ -10181,7 +11121,8 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "Thêm Bản dịch"
#: editor/project_settings_editor.cpp
@@ -10189,11 +11130,11 @@ msgid "Remove Translation"
msgstr "Xóa bản dịch"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10469,6 +11410,10 @@ msgid "Post-Process"
msgstr "Hậu xử lý"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "Kiểu"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "Giữ"
@@ -10640,12 +11585,30 @@ msgid "Delete node \"%s\"?"
msgstr "Xoá nút \"%s\"?"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "Không thể thực hiện với nút gốc."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "Không thể thực hiện thao tác này trên Cảnh được khởi tạo."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10704,6 +11667,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "Không thể hoạt động các nút mà cảnh hiện tại kế thừa từ nó!"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "Không thể thực hiện thao tác này trên Cảnh được khởi tạo."
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "Äính kèm Script"
@@ -10752,10 +11719,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "Mở Hướng dẫn"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11058,6 +12021,12 @@ msgstr ""
"biên soạn bên ngoài."
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "Tên Lớp:"
@@ -11128,6 +12097,10 @@ msgid "Copy Error"
msgstr "Sao chép lỗi"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11419,6 +12392,16 @@ msgstr "Từ điển không hợp lệ (Lớp con không hợp lệ)"
msgid "Object can't provide a length."
msgstr "Äối tượng không thể cung cấp chiá»u dài."
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "Xuất Mesh Library"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "Xuất..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "Mặt phẳng tiếp theo"
@@ -11462,6 +12445,11 @@ msgid "GridMap Paint"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "Chá»n tất cả"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "Bản đồ Lưới"
@@ -11714,6 +12702,16 @@ msgid "Add Output Port"
msgstr "Thêm cổng ra"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "Äổi Kiểu"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "Äổi tên cổng đầu vào"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "Ghi đè một hàm cài sẵn."
@@ -11822,6 +12820,11 @@ msgid "Add Preload Node"
msgstr "Thêm nút tải trước"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "Thêm Nút"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "Thêm nút từ cây"
@@ -12049,10 +13052,6 @@ msgstr "Tìm VisualScript"
msgid "Get %s"
msgstr "Lấy %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "Gán %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "Thiếu tên gói."
@@ -12082,6 +13081,40 @@ msgid "Select device from the list"
msgstr "Chá»n thiết bị trong danh sách"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "Xuất tất cả"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "Gỡ cài đặt"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "Äang tải, đợi xíu..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "Không thể bắt đầu quá trình phụ!"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "Chạy Tệp lệnh Tá»± chá»n ..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "Không thể tạo folder."
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "Không tìm thấy công cụ 'apksigner'."
@@ -12186,6 +13219,48 @@ msgstr ""
"\"Xuất AAB\" chỉ dùng được khi \"Sử dụng Bản dựng tùy chỉnh\" được bật."
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"Äang quét các tệp tin,\n"
+"ChỠmột chút ..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "Không thể mở bản mẫu để xuất:"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "Äang thêm %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "Xuất tất cả"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr "Tên tệp không hợp lệ! Android App Bundle cần đuôi *.aab ở cuối."
@@ -12199,6 +13274,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "Tên tệp không hợp lệ! Android APK cần đuôi *.apk ở cuối."
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12219,6 +13298,21 @@ msgstr ""
"Vui lòng cài đặt lại mẫu xuất bản Android từ menu 'Dá»± Ãn'."
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "Không thể chỉnh sá»­a 'project.godot' trong đưá»ng dẫn dá»± án."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "Không viết được file:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "Äang dá»±ng dá»± án Android (gradle)"
@@ -12242,11 +13336,54 @@ msgstr ""
"Không thể sao chép và đổi tên tệp xuất, hãy kiểm tra thư mục Gradle của dự "
"án để xem kết quả."
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "Không tìm thấy Animation: '%s'"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "Tạo đưá»ng viá»n ..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "Không thể mở bản mẫu để xuất:"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "Äang thêm %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "Không viết được file:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "Thiếu định danh."
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "Không được phép có kí tá»± '%s' trong Äịnh danh."
@@ -12275,10 +13412,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Chạy HTML được xuất với trình duyệt mặc định của máy."
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "Không viết được file:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "Không thể mở bản mẫu để xuất:"
@@ -12287,16 +13420,49 @@ msgid "Invalid export template:"
msgstr "Bản xuất mẫu không hợp lệ:"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
-msgstr ""
+msgid "Could not write file:"
+msgstr "Không viết được file:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "Không viết được file:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "Không Ä‘á»c được file hình khởi động:"
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "Sử dụng hình khởi động mặc định."
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "Không thể tạo folder."
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "Lỗi khi lưu scene."
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "Äịnh danh không hợp lệ:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12695,6 +13861,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -12769,12 +13942,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -12825,6 +14050,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "Không tìm thấy Animation: '%s'"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "Trong node '%s', animation vô hiệu: '%s'."
@@ -12981,21 +14210,189 @@ msgid "Invalid comparison function for that type."
msgstr "nguồn vô hiệu cho shader."
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "Không thể chỉnh sửa hằng số."
+#~ msgid "Package Contents:"
+#~ msgstr "Trong Gói có:"
+
+#~ msgid "Singleton"
+#~ msgstr "ÄÆ¡n nhất"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "Xoá hồ sơ '%s'? (không hoàn tác)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "Thuộc tính đã bật:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "Tính năng đã bật:"
+
+#~ msgid "Unset"
+#~ msgstr "BỠđặt"
+
+#~ msgid "Class Options"
+#~ msgstr "Tuỳ chỉnh lớp"
+
+#~ msgid "Set"
+#~ msgstr "Gán"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "Äã lưu tài nguyên được sá»­a đổi."
+
+#~ msgid "Q&A"
+#~ msgstr "Há»i và Äáp"
+
+#~ msgid "Status:"
+#~ msgstr "Trạng thái:"
+
+#~ msgid "Edit:"
+#~ msgstr "Sá»­a:"
+
+#~ msgid "Redownload"
+#~ msgstr "Tải lại xuống"
+
+#~ msgid "(Installed)"
+#~ msgstr "(Äã cài đặt)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(Thiếu)"
+
+#~ msgid "Request Failed."
+#~ msgstr "Yêu cầu thất bại."
+
+#~ msgid "Redirect Loop."
+#~ msgstr "Chuyển hướng vòng lặp."
+
+#~ msgid "Download Complete."
+#~ msgstr "Tải xuống xong."
+
+#~ msgid "Remove Template"
+#~ msgstr "Xóa Template"
+
+#~ msgid "Download Templates"
+#~ msgstr "Tải Xuống Các Mẫu Xuất Bản"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr ""
+#~ "Chá»n trang dá»± phòng từ danh sách: (Shift + Chuá»™t trái: Mở trong trình "
+#~ "duyệt)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "Di chuyển vào Thùng rác"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "Mở rộng tất cả"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "Thu gá»n tất cả"
+
+#~ msgid "Copy Params"
+#~ msgstr "Sao chép các đối số"
+
+#~ msgid "Open in Help"
+#~ msgstr "Mở trong Trợ giúp"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "Ghi đè máy quay trò chơi\n"
+#~ "Không có thực thể trò chơi này đang chạy."
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "Kéo: Xoay"
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+chuá»™t phải: Chá»n theo tầng"
+
+#~ msgid "Size"
+#~ msgstr "Kích cỡ"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "Kéo: Xoay\n"
+#~ "Alt+Kéo: Di chuyển\n"
+#~ "Alt+Chuá»™t phải: Chá»n theo tầng"
+
+#~ msgid "Add All"
+#~ msgstr "Thêm Tất cả"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "Menu chỉnh Tông màu."
+
+#~ msgid "Create Empty Template"
+#~ msgstr "Tạo Mẫu Trống"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "Tạo mẫu Trình biên tập trống"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "Tạo từ Tông màu Trình biên soạn hiện tại"
+
+#~ msgid "Data Type:"
+#~ msgstr "Kiểu Dữ liệu:"
+
+#~ msgid "Theme File"
+#~ msgstr "Tệp Tông màu"
+
+#~ msgid "Compiled"
+#~ msgstr "Äã biên dịch"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "Gỡ các dá»± án %d khá»i danh sách?\n"
+#~ "Nội dung các thư mục dự án sẽ không được sửa đổi."
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "Gỡ dá»± án này khá»i danh sách?\n"
+#~ "Nội dung của thư mục dự án sẽ không được sửa đổi."
+
+#~ msgid "Templates"
+#~ msgstr "Thư Viện"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "Không thể thực hiện với nút gốc."
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "Sử dụng hình khởi động mặc định."
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr ""
#~ "Animation player không tự tạo hoạt ảnh được, phải thông qua các player "
@@ -13091,9 +14488,6 @@ msgstr "Không thể chỉnh sửa hằng số."
#~ msgid "Input"
#~ msgstr "Nhập"
-#~ msgid "Properties:"
-#~ msgstr "Thuộc tính:"
-
#~ msgid "Methods:"
#~ msgstr "Hàm:"
@@ -13180,10 +14574,6 @@ msgstr "Không thể chỉnh sửa hằng số."
#~ msgstr "Bá» lá»±a chá»n"
#, fuzzy
-#~ msgid "Select a split to erase it."
-#~ msgstr "Chá»n má»™t Folder để Quét"
-
-#, fuzzy
#~ msgid "Zoom out"
#~ msgstr "Thu nhá»"
@@ -13241,9 +14631,6 @@ msgstr "Không thể chỉnh sửa hằng số."
#~ msgid "Set Transitions to:"
#~ msgstr "Äặt Transtions thành:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "Äổi tên Anim Track"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "Äổi phép ná»™i suy Anim Track"
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index 4393cb4e08..dbbd935854 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -83,7 +83,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Chinese (Simplified) (Godot Engine)\n"
"POT-Creation-Date: 2018-01-20 12:15+0200\n"
-"PO-Revision-Date: 2021-07-13 06:13+0000\n"
+"PO-Revision-Date: 2021-08-01 12:02+0000\n"
"Last-Translator: Haoyu Qiu <timothyqiu32@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"godot-engine/godot/zh_Hans/>\n"
@@ -92,7 +92,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 4.7.2-dev\n"
+"X-Generator: Weblate 4.8-dev\n"
#: core/math/expression.cpp modules/gdscript/gdscript_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -595,7 +595,8 @@ msgstr "ç§’"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -621,7 +622,8 @@ msgstr "缩放选中项"
msgid "Scale From Cursor"
msgstr "通过光标缩放"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "å¤åˆ¶é€‰ä¸­é¡¹"
@@ -642,6 +644,11 @@ msgid "Go to Previous Step"
msgstr "返回上一步"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "é‡ç½®"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "优化动画"
@@ -658,6 +665,11 @@ msgid "Use Bezier Curves"
msgstr "使用è´å¡žå°”曲线"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "粘贴轨é“"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "动画优化器"
@@ -706,7 +718,7 @@ msgid "Select Tracks to Copy"
msgstr "选择è¦å¤åˆ¶çš„轨é“"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -736,7 +748,7 @@ msgstr "修改数组大å°"
#: editor/array_property_edit.cpp
msgid "Change Array Value Type"
-msgstr "修改数组类型"
+msgstr "修改数组值类型"
#: editor/array_property_edit.cpp
msgid "Change Array Value"
@@ -792,12 +804,14 @@ msgid "Toggle Scripts Panel"
msgstr "切æ¢è„šæœ¬é¢æ¿"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "放大"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -821,7 +835,7 @@ msgstr "必须指定目标节点的方法。"
#: editor/connections_dialog.cpp
msgid "Method name must be a valid identifier."
-msgstr "方法å称必须是一个有效的标识符。"
+msgstr "方法å称必须是有效的标识符。"
#: editor/connections_dialog.cpp
msgid ""
@@ -852,11 +866,9 @@ msgid "Add"
msgstr "添加"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -906,6 +918,7 @@ msgstr "无法连接信å·"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -923,7 +936,7 @@ msgstr "ä¿¡å·ï¼š"
#: editor/connections_dialog.cpp
msgid "Connect '%s' to '%s'"
-msgstr "连接 “%s†到 “%sâ€"
+msgstr "å°† “%s†连接到 “%sâ€"
#: editor/connections_dialog.cpp
msgid "Disconnect '%s' from '%s'"
@@ -975,7 +988,8 @@ msgid "Edit..."
msgstr "编辑..."
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "跳转到方法"
#: editor/create_dialog.cpp
@@ -990,6 +1004,14 @@ msgstr "更改"
msgid "Create New %s"
msgstr "创建 %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "未找到 “%sâ€ã€‚"
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -1011,8 +1033,8 @@ msgstr "æœç´¢ï¼š"
msgid "Matches:"
msgstr "匹é…项:"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1088,19 +1110,23 @@ msgid "Owners Of:"
msgstr "拥有者:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"是å¦ä»Žé¡¹ç›®ä¸­åˆ é™¤æ‰€é€‰æ–‡ä»¶ï¼Ÿï¼ˆæ— æ³•撤销)\n"
"ä½ å¯ä»¥åœ¨ç³»ç»Ÿå›žæ”¶ç«™ä¸­æ¢å¤è¢«åˆ é™¤çš„æ–‡ä»¶ã€‚"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"è¦åˆ é™¤çš„æ–‡ä»¶è¢«å…¶ä»–èµ„æºæ‰€ä¾èµ–。\n"
"ä»ç„¶è¦åˆ é™¤å—?(无法撤销)\n"
@@ -1148,7 +1174,7 @@ msgstr "å­¤ç«‹èµ„æºæµè§ˆå™¨"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1172,7 +1198,7 @@ msgstr "改å˜å­—典值"
#: editor/editor_about.cpp
msgid "Thanks from the Godot community!"
-msgstr "Godot 社区感谢你ï¼"
+msgstr "Godot 社区感谢大家ï¼"
#: editor/editor_about.cpp editor/editor_node.cpp editor/project_manager.cpp
msgid "Click to copy."
@@ -1271,28 +1297,41 @@ msgstr "组件"
msgid "Licenses"
msgstr "许å¯è¯"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "æ‰“å¼€åŒ…æ–‡ä»¶æ—¶å‡ºé”™ï¼Œéž ZIP æ ¼å¼ã€‚"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "æ‰“å¼€åŒ…æ–‡ä»¶æ—¶å‡ºé”™ï¼ˆéž ZIP æ ¼å¼ï¼‰ã€‚"
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s(已存在)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "正在解压素æ"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "以下文件无法从包中æå–:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "以åŠå…¶å®ƒ %s 个文件。"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "软件包安装æˆåŠŸï¼"
#: editor/editor_asset_installer.cpp
@@ -1300,16 +1339,13 @@ msgstr "软件包安装æˆåŠŸï¼"
msgid "Success!"
msgstr "æˆåŠŸï¼"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "包内容:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "安装"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "程åºåŒ…安装程åº"
#: editor/editor_audio_buses.cpp
@@ -1373,7 +1409,8 @@ msgid "Bypass"
msgstr "æ—通"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "总线选项"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1453,7 +1490,7 @@ msgstr "添加总线"
msgid "Add a new Audio Bus to this layout."
msgstr "将新的音频总线添加到此布局。"
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1540,6 +1577,15 @@ msgid "Can't add autoload:"
msgstr "无法加载 Autoload:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "文件ä¸å­˜åœ¨ã€‚"
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "添加 Autoload"
@@ -1555,16 +1601,17 @@ msgid "Node Name:"
msgstr "节点å称:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "åç§°"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "å•例"
+#, fuzzy
+msgid "Global Variable"
+msgstr "å˜é‡"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "ç²˜è´´å‚æ•°"
@@ -1580,7 +1627,7 @@ msgstr "ä¿å­˜æœ¬åœ°æ›´æ”¹..."
msgid "Updating scene..."
msgstr "更新场景..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[空]"
@@ -1727,8 +1774,49 @@ msgid "Import Dock"
msgstr "坼入颿¿"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "是å¦åˆ é™¤é…置文件 “%sâ€ï¼Ÿï¼ˆæ— æ³•撤销)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(当å‰ï¼‰"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1759,15 +1847,18 @@ msgid "Enable Contextual Editor"
msgstr "å¯ç”¨ä¸Šä¸‹æ–‡ç¼–辑器"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "å¯ç”¨çš„属性:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "属性:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "å¯ç”¨çš„功能:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "特性"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "å¯ç”¨çš„类:"
#: editor/editor_feature_profile.cpp
@@ -1785,25 +1876,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "å°†é…置文件ä¿å­˜åˆ°è·¯å¾„ “%s†时出错。"
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "未设置"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "é‡ç½®ä¸ºé»˜è®¤å€¼"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "当å‰é…置文件:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "设为当å‰"
+#, fuzzy
+msgid "Create Profile"
+msgstr "删除é…置文件"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "新建"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "移除图å—"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "å¯ç”¨é…置文件:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "设为当å‰"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "导入"
@@ -1812,20 +1912,22 @@ msgid "Export"
msgstr "导出"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "å¯ç”¨é…置文件:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "当å‰é…置文件:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "类选项"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "纹ç†é€‰é¡¹"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "æ–°çš„é…置文件å称:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "删除é…置文件"
+msgid "New profile name:"
+msgstr "æ–°çš„é…置文件å称:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1848,7 +1950,8 @@ msgid "Select Current Folder"
msgstr "é€‰æ‹©å½“å‰æ–‡ä»¶å¤¹"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "文件已存在,是å¦è¦†ç›–?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1902,9 +2005,10 @@ msgid "Open a File or Directory"
msgstr "打开文件或目录"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "ä¿å­˜"
@@ -1985,8 +2089,7 @@ msgid "Directories & Files:"
msgstr "目录与文件:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "预览:"
@@ -2057,7 +2160,7 @@ msgstr "主题属性"
msgid "Enumerations"
msgstr "枚举"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "常é‡"
@@ -2146,7 +2249,7 @@ msgstr "方法"
msgid "Signal"
msgstr "ä¿¡å·"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "常é‡"
@@ -2162,9 +2265,10 @@ msgstr "主题属性"
msgid "Property:"
msgstr "属性:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "设置"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "设置 %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2176,10 +2280,10 @@ msgstr "输出:"
#: editor/editor_log.cpp editor/plugins/tile_map_editor_plugin.cpp
msgid "Copy Selection"
-msgstr "å¤åˆ¶æ‰€é€‰é¡¹"
+msgstr "å¤åˆ¶é€‰ä¸­é¡¹"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2243,7 +2347,8 @@ msgid "Imported resources can't be saved."
msgstr "å¯¼å…¥çš„èµ„æºæ— æ³•ä¿å­˜ã€‚"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "确定"
@@ -2452,18 +2557,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "是å¦åœ¨å…³é—­å‰ä¿å­˜å¯¹ “%s†的更改?"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "å·²ä¿å­˜ %s 个修改åŽçš„资æºã€‚"
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "必须有根节点æ‰å¯ä¿å­˜åœºæ™¯ã€‚"
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "场景å¦å­˜ä¸º..."
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "必须先打开一个场景æ‰èƒ½å®Œæˆæ­¤æ“作。"
@@ -2647,7 +2757,7 @@ msgstr "删除布局"
msgid "Default"
msgstr "默认"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "在文件系统中显示"
@@ -2828,6 +2938,11 @@ msgid "Orphan Resource Explorer..."
msgstr "å­¤ç«‹èµ„æºæµè§ˆå™¨..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "é‡å‘½å项目"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "退出到项目列表"
@@ -2972,20 +3087,25 @@ msgstr "管ç†å¯¼å‡ºæ¨¡æ¿..."
msgid "Help"
msgstr "帮助"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "在线文档"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "打开文档"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "问答"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "报告问题"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Suggest a Feature"
+msgstr "设置值"
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "å‘逿–‡æ¡£å馈"
@@ -2994,7 +3114,8 @@ msgid "Community"
msgstr "社区"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "关于"
#: editor/editor_node.cpp
@@ -3091,6 +3212,16 @@ msgid "Manage Templates"
msgstr "ç®¡ç†æ¨¡æ¿"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "从文件安装"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "选择æºç½‘格:"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3125,7 +3256,7 @@ msgstr "从 ZIP 文件中导入模æ¿"
msgid "Template Package"
msgstr "模æ¿åŒ…"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "导出库"
@@ -3168,6 +3299,11 @@ msgid "Select"
msgstr "选择"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "é€‰æ‹©å½“å‰æ–‡ä»¶å¤¹"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "打开 2D 编辑器"
@@ -3199,6 +3335,11 @@ msgstr "警告ï¼"
msgid "No sub-resources found."
msgstr "找ä¸åˆ°å­èµ„æºã€‚"
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "找ä¸åˆ°å­èµ„æºã€‚"
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "正在创建网格预览"
@@ -3223,33 +3364,34 @@ msgstr "已安装æ’件:"
msgid "Update"
msgstr "æ›´æ–°"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "版本:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "作者:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "状æ€ï¼š"
+#, fuzzy
+msgid "Author"
+msgstr "作者"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "编辑:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "状æ€"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "测é‡ï¼š"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "帧时间(秒)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "平凿—¶é—´ï¼ˆç§’)"
#: editor/editor_profiler.cpp
@@ -3269,6 +3411,16 @@ msgid "Self"
msgstr "仅自己"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "帧 #:"
@@ -3310,12 +3462,6 @@ msgstr "无效的 RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr "所选资æºï¼ˆ%s)与该属性(%s)所需的类型都ä¸åŒ¹é…。"
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3337,40 +3483,6 @@ msgid "Pick a Viewport"
msgstr "选择视å£"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "新建脚本"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "扩展脚本"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "新建 %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "唯一化"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "粘贴"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "转æ¢ä¸º %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "é€‰å®šèŠ‚ç‚¹ä¸æ˜¯ Viewportï¼"
@@ -3399,6 +3511,47 @@ msgstr "新建值:"
msgid "Add Key/Value Pair"
msgstr "添加键值对"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr "所选资æºï¼ˆ%s)与该属性(%s)所需的类型都ä¸åŒ¹é…。"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "唯一化"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "粘贴"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "转æ¢ä¸º %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "新建 %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "新建脚本"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "扩展脚本"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3433,7 +3586,8 @@ msgid "Did you forget the '_run' method?"
msgstr "是å¦é—æ¼äº† _run() 方法?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr "æŒ‰ä½ Ctrl é”®æ¥å–整。 æŒ‰ä½ Shift é”®èŽ·å–æ›´ç²¾ç¡®çš„å˜åŒ–。"
#: editor/editor_sub_scene.cpp
@@ -3453,111 +3607,69 @@ msgid "Import From Node:"
msgstr "从节点中导入:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "釿–°ä¸‹è½½"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "å¸è½½"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(已安装)"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "下载"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "开呿ž„建下官方导出模æ¿ä¸å¯ç”¨ã€‚"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(缺失)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(当å‰ï¼‰"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "文件 “%s†ä¸å­˜åœ¨ã€‚"
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "检索镜åƒï¼Œè¯·ç­‰å¾…..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "是å¦ç§»é™¤æ¨¡æ¿ç‰ˆæœ¬ “%sâ€ï¼Ÿ"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "无法打开 ZIP 导出模æ¿ã€‚"
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "模æ¿ä¸­çš„ version.txt æ ¼å¼æ— æ•ˆï¼š%s。"
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "模æ¿ä¸­æ²¡æœ‰æ‰¾åˆ° version.txt。"
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "创建模æ¿è·¯å¾„出错:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "正在解压导出模æ¿"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "正在导入:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "获å–镜åƒåˆ—表时出错。"
+msgid "Error requesting URL:"
+msgstr "请求 URL 时出错:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "è§£æžé•œåƒåˆ—表 JSON 时出错。请æäº¤æ­¤é—®é¢˜ï¼"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "正在连接镜åƒç½‘ç«™..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr "没有找到这个版本的下载链接。直接下载åªé€‚用于正å¼ç‰ˆæœ¬ã€‚"
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "无法解æžä¸»æœºå:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "无法解æžã€‚"
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "无法连接到主机:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "无法连接。"
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "主机无å“应:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "æ— å“应。"
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
+msgid "Request failed."
msgstr "请求失败。"
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "循环é‡å®šå‘。"
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "请求失败,é‡å®šå‘次数过多"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "失败:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "请求失败。"
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "下载完æˆã€‚"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3572,12 +3684,23 @@ msgstr ""
"æœ‰é—®é¢˜çš„æ¨¡æ¿æ–‡æ¡£åœ¨ “%sâ€ã€‚"
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "请求 URL 时出错:"
+msgid "Error getting the list of mirrors."
+msgstr "获å–镜åƒåˆ—表时出错。"
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "正在连接镜åƒç½‘ç«™..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "è§£æžé•œåƒåˆ—表 JSON 时出错。请æäº¤æ­¤é—®é¢˜ï¼"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr "没有找到这个版本的下载链接。直接下载åªé€‚用于正å¼ç‰ˆæœ¬ã€‚"
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3622,44 +3745,138 @@ msgid "SSL Handshake Error"
msgstr "SSL æ¡æ‰‹é”™è¯¯"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "无法打开 ZIP 导出模æ¿ã€‚"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "模æ¿ä¸­çš„ version.txt æ ¼å¼æ— æ•ˆï¼š%s。"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "模æ¿ä¸­æ²¡æœ‰æ‰¾åˆ° version.txt。"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "创建模æ¿è·¯å¾„出错:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "正在解压导出模æ¿"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "正在导入:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "是å¦ç§»é™¤æ¨¡æ¿ç‰ˆæœ¬ “%sâ€ï¼Ÿ"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "解压 Android Build 资æº"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "模æ¿å¯¼å‡ºå·¥å…·"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "当å‰ç‰ˆæœ¬ï¼š"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "已安装版本:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "打开文件"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall"
+msgstr "å¸è½½"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "计数器åˆå§‹å€¼"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "下载错误"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "开呿ž„建下官方导出模æ¿ä¸å¯ç”¨ã€‚"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "从文件安装"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "移除模æ¿"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "从 ZIP 文件中导入模æ¿"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "å–æ¶ˆ"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "é€‰æ‹©æ¨¡æ¿æ–‡ä»¶"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "无法打开 ZIP 导出模æ¿ã€‚"
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Godot 导出模æ¿"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "已安装版本:"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "模æ¿å¯¼å‡ºå·¥å…·"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "å¸è½½"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "é€‰æ‹©æ¨¡æ¿æ–‡ä»¶"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "下载模æ¿"
+msgid "Godot Export Templates"
+msgstr "Godot 导出模æ¿"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "从列表中选择镜åƒï¼šï¼ˆShift+å•击:在æµè§ˆå™¨ä¸­æ‰“开)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3789,29 +4006,62 @@ msgstr "新建脚本..."
msgid "New Resource..."
msgstr "新建资æº..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "全部展开"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "全部折å "
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "å¤åˆ¶ä¸º..."
+#, fuzzy
+msgid "Sort files"
+msgstr "æœç´¢æ–‡ä»¶"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "修改时间"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "修改时间"
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "移动至回收站"
+msgid "Duplicate..."
+msgstr "å¤åˆ¶ä¸º..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "é‡å‘½å为..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "上一个文件夹或文件"
@@ -3893,10 +4143,6 @@ msgstr "查找..."
msgid "Replace..."
msgstr "替æ¢..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "å–æ¶ˆ"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "查找: "
@@ -4117,53 +4363,55 @@ msgid "Failed to load resource."
msgstr "加载资æºå¤±è´¥ã€‚"
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "展开所有属性"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "属性"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "æŠ˜å æ‰€æœ‰å±žæ€§"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "å¦å­˜ä¸º..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "属性"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "å¤åˆ¶å‚æ•°"
+msgid "Make Sub-Resources Unique"
+msgstr "转为独立å­èµ„æº"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "编辑资æºå‰ªè´´æ¿"
+msgid "Create a new resource in memory and edit it."
+msgstr "在内存中新建资æºå¹¶ç¼–辑。"
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "å¤åˆ¶èµ„æº"
+msgid "Load an existing resource from disk and edit it."
+msgstr "从ç£ç›˜ä¸­åŠ è½½èµ„æºå¹¶ç¼–辑。"
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "转为内置"
+msgid "Save the currently edited resource."
+msgstr "ä¿å­˜å½“å‰ç¼–辑的资æºã€‚"
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "转为独立å­èµ„æº"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "å¦å­˜ä¸º..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "在帮助中打开"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "ä¸åœ¨èµ„æºè·¯å¾„下。"
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "在内存中新建资æºå¹¶ç¼–辑。"
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "编辑资æºå‰ªè´´æ¿"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "从ç£ç›˜ä¸­åŠ è½½èµ„æºå¹¶ç¼–辑。"
+msgid "Copy Resource"
+msgstr "å¤åˆ¶èµ„æº"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "ä¿å­˜å½“å‰ç¼–辑的资æºã€‚"
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "转为内置"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4178,14 +4426,24 @@ msgid "History of recently edited objects."
msgstr "最近编辑历å²å¯¹è±¡ã€‚"
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "对象属性。"
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "打开文档"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "打开文档"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "筛选属性"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "对象属性。"
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "更改å¯èƒ½ä¼šä¸¢å¤±!"
@@ -4213,6 +4471,15 @@ msgstr "æ’ä»¶å:"
msgid "Subfolder:"
msgstr "å­æ–‡ä»¶å¤¹ï¼š"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "作者:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "版本:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "语言:"
@@ -4417,7 +4684,8 @@ msgid "Blend:"
msgstr "æ··åˆï¼š"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "傿•°å·²æ›´æ”¹"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4631,6 +4899,11 @@ msgid "Animation"
msgstr "动画"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "新建"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "编辑过渡方å¼..."
@@ -4907,11 +5180,11 @@ msgstr "删除输入"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Animation tree is valid."
-msgstr "动画树å¯ç”¨ã€‚"
+msgstr "动画树有效。"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Animation tree is invalid."
-msgstr "动画树ä¸å¯ç”¨ã€‚"
+msgstr "动画树无效。"
#: editor/plugins/animation_tree_player_editor_plugin.cpp
msgid "Animation Node"
@@ -4970,10 +5243,18 @@ msgid "View Files"
msgstr "查看文件"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "下载"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "连接错误,请é‡è¯•。"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "无法连接。"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "无法连接到主机:"
@@ -4982,16 +5263,20 @@ msgid "No response from host:"
msgstr "主机无å“应:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "æ— å“应。"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "无法解æžä¸»æœºå:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "请求失败,返回代ç ï¼š"
+msgid "Can't resolve."
+msgstr "无法解æžã€‚"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "请求失败。"
+msgid "Request failed, return code:"
+msgstr "请求失败,返回代ç ï¼š"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -5018,6 +5303,10 @@ msgid "Timeout."
msgstr "超时。"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "失败:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "文件哈希值错误,该文件å¯èƒ½è¢«ç¯¡æ”¹ã€‚"
@@ -5118,8 +5407,12 @@ msgid "All"
msgstr "全部"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "未找到 “%sâ€ã€‚"
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5161,6 +5454,10 @@ msgstr "载入中..."
msgid "Assets ZIP File"
msgstr "ç´ æ ZIP 文件"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5172,9 +5469,11 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
-msgstr "没有å¯çƒ˜ç„™çš„网格。请确ä¿ç½‘æ ¼åŒ…å« UV2 通é“并且勾选 “Bake Light†选项。"
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
+msgstr ""
+"没有å¯çƒ˜ç„™çš„网格。请确ä¿ç½‘æ ¼åŒ…å« UV2 通é“,并且“Use In Baked "
+"Lightâ€å’Œâ€œGenerate Lightmapâ€é€‰é¡¹å·²å¯ç”¨ã€‚"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid "Failed creating lightmap images, make sure path is writable."
@@ -5406,9 +5705,10 @@ msgstr "编辑锚点"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"游æˆç›¸æœºè¦†ç›–\n"
"使用编辑器视图相机覆盖游æˆç›¸æœºã€‚"
@@ -5416,11 +5716,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"游æˆç›¸æœºè¦†ç›–\n"
-"没有正在è¿è¡Œçš„æ¸¸æˆå®žä¾‹ã€‚"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5473,6 +5772,7 @@ msgid ""
msgstr "警告:容器å­çº§çš„ä½ç½®ä¸Žå¤§å°åªèƒ½ç”±å®ƒçš„父级确定。"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5484,20 +5784,32 @@ msgid "Select Mode"
msgstr "选择模å¼"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "æ‹–åŠ¨æ¥æ—‹è½¬"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "移除选中的节点或过渡动画。"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+拖动:移动"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
-msgstr "按下 “V†键修改旋转中心,在移动时按下 Shift+V æ¥æ‹–动它。"
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "移除选中的节点或过渡动画。"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+é¼ æ ‡å³é”®ï¼šæ˜¾ç¤ºé¼ æ ‡ç‚¹å‡»ä½ç½®ä¸‹çš„æ‰€æœ‰èŠ‚ç‚¹åˆ—è¡¨"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+"显示鼠标点击ä½ç½®çš„æ‰€æœ‰èŠ‚ç‚¹\n"
+"ï¼ˆåŒ Alt + é¼ æ ‡å³é”®ï¼‰ã€‚"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5733,6 +6045,16 @@ msgid "Clear Pose"
msgstr "清除姿势"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "添加节点"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "实例化场景"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "网格步进乘以 2"
@@ -5745,6 +6067,52 @@ msgid "Pan View"
msgstr "平移视图"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "缩å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "缩å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "缩å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "缩å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "缩å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "缩å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "添加 %s"
@@ -5987,6 +6355,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "无法创建å•一凸碰撞形状。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "创建å•一凸形状"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "创建å•一凸形状"
@@ -6019,7 +6392,8 @@ msgid "No mesh to debug."
msgstr "没有å¯è°ƒè¯•的网格。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "模型在此层上没有 UV"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6084,13 +6458,27 @@ msgstr ""
"这是最快(但是最ä¸ç²¾ç¡®ï¼‰çš„碰撞检测手段。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "创建å•一凸碰撞åŒçº§"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "创建多个凸碰撞åŒçº§"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"创建基于多边形的碰撞形状。\n"
"这是性能ä½äºŽä¸Šè¿°ä¸¤ç§ä¹‹é—´çš„碰撞检测手段。"
@@ -6150,7 +6538,6 @@ msgid "Mesh Library"
msgstr "网格库"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "添加项目"
@@ -6422,7 +6809,8 @@ msgid "Close Curve"
msgstr "关闭曲线"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "选项"
@@ -6728,6 +7116,26 @@ msgstr "加载资æº"
msgid "ResourcePreloader"
msgstr "预加载资æº"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "水平翻转"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "生æˆé¡¶ç‚¹è®¡æ•°:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "生æˆé¡¶ç‚¹è®¡æ•°:"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "水平翻转"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree 没有设置到 AnimationPlayer 的路径"
@@ -6931,7 +7339,7 @@ msgstr "è¿è¡Œ"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "æœç´¢"
@@ -6962,6 +7370,11 @@ msgid "Debug with External Editor"
msgstr "使用外部编辑器进行调试"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "在线文档"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "打开 Godot 在线文档。"
@@ -7086,8 +7499,8 @@ msgstr "转到"
msgid "Cut"
msgstr "剪切"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "全选"
@@ -7120,10 +7533,6 @@ msgid "Unfold All Lines"
msgstr "展开所有行"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "å¤åˆ¶åˆ°ä¸‹ä¸€è¡Œ"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "符å·è‡ªåŠ¨è¡¥å…¨"
@@ -7277,6 +7686,28 @@ msgid "View Plane Transform."
msgstr "视图平é¢å˜æ¢ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "æ— "
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "å·ž(State)"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "移动:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "缩放:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "缩放: "
@@ -7297,48 +7728,60 @@ msgid "Animation Key Inserted."
msgstr "æ’入动画键。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "俯仰角"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "å航角"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "大å°"
+#, fuzzy
+msgid "Size:"
+msgstr "大å°ï¼š "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "绘制对象"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "æè´¨å˜æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "ç€è‰²å™¨å˜æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "表é¢å˜æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "绘制调用"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "顶点"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "顶视图。"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View."
-msgstr "仰视图。"
+msgstr "底视图。"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom"
@@ -7485,6 +7928,11 @@ msgid "Freelook Slow Modifier"
msgstr "缓慢自由视图速度"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "ä¿®æ”¹æ‘„åƒæœºå°ºå¯¸"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "å·²é”定视角旋转"
@@ -7502,6 +7950,11 @@ msgstr ""
"ä¸èƒ½å馈出实际游æˆä¸­çš„æ€§èƒ½ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "转æ¢ä¸º %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm å¯¹è¯æ¡†"
@@ -7520,7 +7973,8 @@ msgstr ""
"åŠç眼:Gizmo 也å¯ç©¿è¿‡ä¸é€æ˜Žçš„表é¢å¯è§ï¼ˆâ€œX å…‰â€ï¼‰ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "将节点å¸é™„至地é¢"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7528,16 +7982,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "找ä¸åˆ°å¯å¸é™„çš„åšå®žåœ°æ¿ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"鼠标拖拽:旋转\n"
-"Alt+拖拽:移动\n"
-"Alt+é¼ æ ‡å³é”®ï¼šæ˜¾ç¤ºåˆ—表"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "使用本地空间"
@@ -7546,12 +7990,16 @@ msgid "Use Snap"
msgstr "使用å¸é™„"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
-msgstr "仰视图"
+msgstr "底视图"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View"
-msgstr "俯视图"
+msgstr "顶视图"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View"
@@ -7559,7 +8007,7 @@ msgstr "åŽè§†å›¾"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front View"
-msgstr "正视图"
+msgstr "å‰è§†å›¾"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Left View"
@@ -7639,6 +8087,11 @@ msgid "View Grid"
msgstr "显示网格"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "视å£è®¾ç½®"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "设置..."
@@ -7928,11 +8381,6 @@ msgid "Snap Mode:"
msgstr "å¸é™„模å¼ï¼š"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "æ— "
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "åƒç´ å¸é™„"
@@ -7953,165 +8401,603 @@ msgid "Step:"
msgstr "步长:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "间隔:"
+msgid "Separation:"
+msgstr "分隔:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "纹ç†åŒºåŸŸ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "添加所有项目"
+#, fuzzy
+msgid "Colors"
+msgstr "颜色"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "添加所有"
+#, fuzzy
+msgid "Fonts"
+msgstr "字体"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "图标"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "æ ·å¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "找ä¸åˆ°å­èµ„æºã€‚"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "常é‡"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "颜色常é‡ã€‚"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "未找到ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "未找到ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "找ä¸åˆ°å­èµ„æºã€‚"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "导入主题"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "确定è¦é€€å‡ºç¼–辑器å—?"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "正在分æž"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "过滤: "
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "选择一个节点"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible color items."
+msgstr "选择一个拆分以擦除它。"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "请先选择一个设置项ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "请先选择一个设置项ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "请先选择一个设置项ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "请先选择一个设置项ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "请先选择一个设置项ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "全部折å "
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "全部展开"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "é€‰æ‹©æ¨¡æ¿æ–‡ä»¶"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "选择顶点"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "全选"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "导入场景"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "移除所有项目"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "移除全部"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "移除项目"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "编辑主题"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "移除所有项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "移除所有项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "移除所有项目"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "主题编辑èœå•。"
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "移除所有项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "添加类项目"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "添加类项目"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "添加项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "添加项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "添加所有项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "移除类项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "移除类项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "é‡å‘½å节点"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "é‡å‘½å节点"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "移除选中项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "æ— æ•ˆæ–‡ä»¶ï¼Œä¸æ˜¯éŸ³é¢‘总线布局。"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "ç®¡ç†æ¨¡æ¿"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "å¯ç¼–辑的项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "类型:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "类型:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "添加项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "添加所有项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "移除项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "移除类项目"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "创建主题模æ¿"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "移除类项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr "移除所有项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "GUI主题项目"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "创建空编辑器主题模æ¿"
+#, fuzzy
+msgid "Old Name:"
+msgstr "节点å称:"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "从当å‰ç¼–辑器主题模æ¿åˆ›å»º"
+#, fuzzy
+msgid "Import Items"
+msgstr "导入主题"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "默认"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "编辑主题"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "删除资æº"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "导入主题"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "é‡å‘½å轨é“"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "批é‡é‡å‘½å"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "é‡å†™"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "类型"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "添加项目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "节点类型"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "加载默认"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "é‡å†™"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "主题"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "管ç†å¯¼å‡ºæ¨¡æ¿..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "预览"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "更新预览"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "选择æºç½‘格:"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "åˆ‡æ¢æŒ‰é’®"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "ä¸å¯ç”¨çš„æŒ‰é’®"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "项目"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "ä¸å¯ç”¨çš„项目"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "检查项目"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "已选项目"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "å•选项目"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "已选å•选项目"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "带å称的分隔线"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "å­èœå•"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "å­é¡¹ç›® 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "å­é¡¹ç›® 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "有"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "许多"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "å·²ç¦ç”¨ LineEdit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "é€‰é¡¹å¡ 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "é€‰é¡¹å¡ 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "é€‰é¡¹å¡ 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "å¯ç¼–辑的项目"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "å­æ ‘"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "有, 很多, 选项"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "æ•°æ®ç±»åž‹ï¼š"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "图标"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "æ ·å¼"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "字体"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "颜色"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "æ— æ•ˆæ–‡ä»¶ï¼Œä¸æ˜¯éŸ³é¢‘总线布局。"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "主题文件"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8128,7 +9014,7 @@ msgstr "剪切选中项"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
-msgstr "绘制图å—地图"
+msgstr "绘制 TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Line Draw"
@@ -8144,7 +9030,7 @@ msgstr "油漆桶填充"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
-msgstr "擦除图å—地图"
+msgstr "擦除 TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Find Tile"
@@ -8168,7 +9054,7 @@ msgstr "筛选图å—"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Give a TileSet resource to this TileMap to use its tiles."
-msgstr "为图å—地图设置图å—集资æºåŽï¼Œæ‰èƒ½ä½¿ç”¨å…¶å›¾å—。"
+msgstr "为 TileMap 设置 TileSet 资æºåŽï¼Œæ‰èƒ½ä½¿ç”¨å…¶å›¾å—。"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint Tile"
@@ -8240,7 +9126,7 @@ msgstr "新建自动图å—"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "New Atlas"
-msgstr "新建åˆé›†"
+msgstr "新建图集"
#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Next Coordinate"
@@ -8283,6 +9169,10 @@ msgid "Priority"
msgstr "优先级"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "图标"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z 索引"
@@ -8613,11 +9503,6 @@ msgid "Commit Changes"
msgstr "æäº¤å˜æ›´"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "状æ€"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "在æäº¤åˆ°æœ€æ–°ç‰ˆæœ¬ä¹‹å‰æŸ¥çœ‹æ–‡ä»¶å·®å¼‚"
@@ -9469,7 +10354,8 @@ msgid "VisualShader"
msgstr "å¯è§†ç€è‰²å™¨"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "编辑å¯è§†å±žæ€§"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9594,7 +10480,8 @@ msgid "Script"
msgstr "脚本"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "脚本导出模å¼:"
#: editor/project_export.cpp
@@ -9602,19 +10489,21 @@ msgid "Text"
msgstr "文本"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "编译"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "åŠ å¯†ï¼ˆåœ¨ä¸‹é¢æä¾›å¯†é’¥ï¼‰"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "无效的加密密钥(长度必须为 64 个字符)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "脚本加密密钥(256 ä½ 16 进制ç ï¼‰:"
#: editor/project_export.cpp
@@ -9687,7 +10576,8 @@ msgid "Imported Project"
msgstr "已导入的项目"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "项目å称无效。"
#: editor/project_manager.cpp
@@ -9722,6 +10612,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "无法在项目路径下创建 project.godot 文件。"
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "æ‰“å¼€åŒ…æ–‡ä»¶æ—¶å‡ºé”™ï¼Œéž ZIP æ ¼å¼ã€‚"
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "以下文件无法从包中æå–:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "软件包安装æˆåŠŸï¼"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "é‡å‘½å项目"
@@ -9890,20 +10792,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "确定è¦åŒæ—¶è¿è¡Œ %d 个项目å—?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"是å¦ä»Žåˆ—表中删除 %d 个项目? \n"
-"项目文件夹的内容ä¸ä¼šè¢«ä¿®æ”¹ã€‚"
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "从列表中选择设备"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"是å¦ä»Žåˆ—表中删除该项目?\n"
-"项目文件夹的内容ä¸ä¼šè¢«ä¿®æ”¹ã€‚"
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "从列表中选择设备"
#: editor/project_manager.cpp
msgid ""
@@ -9935,7 +10831,8 @@ msgid "Project Manager"
msgstr "项目管ç†å™¨"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "项目"
#: editor/project_manager.cpp
@@ -9947,10 +10844,25 @@ msgid "Last Modified"
msgstr "修改时间"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "导出项目"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "é‡å‘½å项目"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "扫æ"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "项目"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "é€‰æ‹©è¦æ‰«æçš„æ–‡ä»¶å¤¹"
@@ -9959,18 +10871,41 @@ msgid "New Project"
msgstr "新建项目"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "已导入的项目"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "é‡å‘½å项目"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "移除缺失项"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "模æ¿"
+msgid "About"
+msgstr "关于"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "ç´ æåº“"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "ç«‹å³é‡å¯"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "移除全部"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "无法è¿è¡Œé¡¹ç›®"
@@ -9983,8 +10918,14 @@ msgstr ""
"æ˜¯å¦æŸ¥çœ‹ç´ æåº“中的官方示例项目?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "筛选属性"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9996,6 +10937,10 @@ msgid "Key "
msgstr "按键 "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "手柄按键"
@@ -10037,6 +10982,10 @@ msgstr "所有设备"
msgid "Device"
msgstr "设备"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "请按键……"
@@ -10177,7 +11126,8 @@ msgid "Override for Feature"
msgstr "é‡å†™åŠŸèƒ½"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "添加翻译"
#: editor/project_settings_editor.cpp
@@ -10185,11 +11135,13 @@ msgid "Remove Translation"
msgstr "移除翻译"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "添加é‡å®šå‘路径"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "添加资æºé‡å®šå‘"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "添加资æºé‡å®šå‘"
#: editor/project_settings_editor.cpp
@@ -10461,6 +11413,10 @@ msgid "Post-Process"
msgstr "åŽæœŸå¤„ç†"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "æ ·å¼"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "ä¿æŒ"
@@ -10623,12 +11579,30 @@ msgid "Delete node \"%s\"?"
msgstr "是å¦åˆ é™¤èŠ‚ç‚¹ “%sâ€ï¼Ÿ"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "无法对根节点执行此æ“作。"
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "æ­¤æ“作ä¸èƒ½åº”用于实例化的场景。"
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10685,6 +11659,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "无法æ“作此节点,因为当å‰åœºæ™¯ç»§æ‰¿è‡ªè¯¥èŠ‚ç‚¹ï¼"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "æ­¤æ“作ä¸èƒ½åº”用于实例化的场景。"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "添加脚本"
@@ -10731,10 +11709,6 @@ msgid "Load As Placeholder"
msgstr "加载为å ä½ç¬¦"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "打开文档"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11021,6 +11995,12 @@ msgid ""
msgstr "注æ„ï¼šå†…ç½®è„šæœ¬æœ‰å…¶å±€é™æ€§ï¼Œå¹¶ä¸”ä¸èƒ½ä½¿ç”¨å¤–部编辑器编辑。"
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "ç±»å:"
@@ -11089,6 +12069,10 @@ msgid "Copy Error"
msgstr "å¤åˆ¶é”™è¯¯ä¿¡æ¯"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "显存"
@@ -11242,23 +12226,23 @@ msgstr "更改çƒä½“åŠå¾„"
#: editor/spatial_editor_gizmos.cpp modules/csg/csg_gizmos.cpp
msgid "Change Box Shape Extents"
-msgstr "æ”¹å˜æ–¹æ¡†å¤§å°"
+msgstr "改å˜ç«‹æ–¹ä½“大å°"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Capsule Shape Radius"
-msgstr "修改椭圆形åŠå¾„"
+msgstr "修改胶囊体åŠå¾„"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Capsule Shape Height"
-msgstr "修改椭圆形高度"
+msgstr "修改胶囊体高度"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Cylinder Shape Radius"
-msgstr "修改圆柱形åŠå¾„"
+msgstr "修改圆柱体åŠå¾„"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Cylinder Shape Height"
-msgstr "修改圆柱形高度"
+msgstr "修改圆柱体高度"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Ray Shape Length"
@@ -11372,6 +12356,16 @@ msgstr "实例字典无效(派生类无效)"
msgid "Object can't provide a length."
msgstr "对象无法æä¾›é•¿åº¦ã€‚"
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "导出网格库"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "导出..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "下一个平é¢"
@@ -11413,6 +12407,11 @@ msgid "GridMap Paint"
msgstr "绘制栅格图"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "网格地图填充所选项"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "网格地图"
@@ -11450,23 +12449,23 @@ msgstr "光标沿 X 轴旋转"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Rotate Y"
-msgstr "沿 Y 轴旋转"
+msgstr "光标沿 Y 轴旋转"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Rotate Z"
-msgstr "沿 Z 轴旋转"
+msgstr "光标沿 Z 轴旋转"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
-msgstr "光标沿 X è½´å‘åŽæ—‹è½¬"
+msgstr "光标沿 X è½´é€†å‘æ—‹è½¬"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Y"
-msgstr "光标沿 Y è½´å‘åŽæ—‹è½¬"
+msgstr "光标沿 Y è½´é€†å‘æ—‹è½¬"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Z"
-msgstr "光标沿 Z è½´å‘åŽæ—‹è½¬"
+msgstr "光标沿 Z è½´é€†å‘æ—‹è½¬"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Clear Rotation"
@@ -11478,11 +12477,11 @@ msgstr "粘贴选中项"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clear Selection"
-msgstr "清空选中"
+msgstr "清空选中项"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Fill Selection"
-msgstr "填充已选"
+msgstr "填充选中项"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "GridMap Settings"
@@ -11657,6 +12656,16 @@ msgid "Add Output Port"
msgstr "增加输出端å£"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "更改类型"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "更改输入端å£åç§°"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "覆盖现有的内置函数。"
@@ -11765,6 +12774,11 @@ msgid "Add Preload Node"
msgstr "添加预载 (Preload) 节点"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "添加节点"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "从树中添加节点"
@@ -11990,10 +13004,6 @@ msgstr "æœç´¢å¯è§†åŒ–脚本节点"
msgid "Get %s"
msgstr "èŽ·å– %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "设置 %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "包å缺失。"
@@ -12023,6 +13033,40 @@ msgid "Select device from the list"
msgstr "从列表中选择设备"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "全部导出"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "å¸è½½"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "正在加载,请ç¨å€™â€¦â€¦"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "无法实例化场景ï¼"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "执行自定义脚本..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "无法创建文件夹。"
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "找ä¸åˆ°â€œapksignerâ€å·¥å…·ã€‚"
@@ -12123,6 +13167,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr "“Export AABâ€ åªæœ‰åœ¨å½“å¯ç”¨ “Use Custom Buildâ€ æ—¶æ‰æœ‰æ•ˆã€‚"
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"æ­£åœ¨æ‰«ææ–‡ä»¶ï¼Œ\n"
+"请ç¨å€™â€¦â€¦"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "无法打开导出模æ¿ï¼š"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "正在添加 %s..."
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "全部导出"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr "无效文件åï¼Android App Bundle 必须有 *.aab 扩展。"
@@ -12135,6 +13221,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "无效文件åï¼Android APK 必须有 *.apk 扩展。"
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12154,6 +13244,21 @@ msgstr ""
"请从“项目â€èœå•䏭釿–°å®‰è£… Android 构建模æ¿ã€‚"
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "无法在项目目录下找到project.godot文件。"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "无法写入文件:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "构建 Android 项目 (Gradle)"
@@ -12175,11 +13280,54 @@ msgid ""
"outputs."
msgstr "无法å¤åˆ¶ä¸Žæ›´å导出文件,请在 Gradle 项目文件夹内确认输出。"
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "没有动画: “%sâ€"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "正在创建轮廓..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "无法打开导出模æ¿ï¼š"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "正在添加 %s..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "无法写入文件:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "å¯¹é½ APK..."
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "缺少标识符。"
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "标识符中ä¸å…许使用字符 '%s' 。"
@@ -12208,10 +13356,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "使用默认æµè§ˆå™¨æ‰“开导出的 HTML 文件。"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "无法写入文件:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "无法打开导出模æ¿ï¼š"
@@ -12220,16 +13364,49 @@ msgid "Invalid export template:"
msgstr "å¯¼å‡ºæ¨¡æ¿æ— æ•ˆï¼š"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "无法写入文件:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "无法写入文件:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "无法读å–自定义 HTML 壳层:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "无法读å–å¯åŠ¨å›¾ç‰‡ï¼š"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "无法创建文件夹。"
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "使用默认å¯åŠ¨å›¾ç‰‡ã€‚"
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "ä¿å­˜åœºæ™¯å‡ºé”™ã€‚"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "无效的标识符:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12616,6 +13793,13 @@ msgstr ""
"GLES2 视频驱动程åºä¸æ”¯æŒ GIProbes。\n"
"请改用 BakedLightmap。"
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "角度宽于 90 度的 SpotLight 无法投射出阴影。"
@@ -12696,6 +13880,18 @@ msgstr "Joint 未连结到任何 PhysicsBody"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Node A 与 Node B 必须为ä¸åŒçš„ PhysicsBody"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12703,6 +13899,46 @@ msgid ""
msgstr ""
"“Remote Pathâ€ å±žæ€§å¿…é¡»æŒ‡å‘æœ‰æ•ˆçš„ Spatial 或 Spatial 派生的节点æ‰èƒ½å·¥ä½œã€‚"
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "在设置网格之å‰ï¼Œå°†å¿½ç•¥è¯¥å®žä½“。"
@@ -12761,6 +13997,10 @@ msgstr "在 BlendTree 节点 “%s†上没有å‘现动画: “%sâ€"
msgid "Animation not found: '%s'"
msgstr "没有动画: “%sâ€"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "在节点 “%s†上的动画无效: “%s†。"
@@ -12910,7 +14150,7 @@ msgstr "Viewport 大å°å¤§äºŽ 0 æ—¶æ‰èƒ½è¿›è¡Œæ¸²æŸ“。"
msgid ""
"The sampler port is connected but not used. Consider changing the source to "
"'SamplerPort'."
-msgstr "采样器端å£å·²è¿žæŽ¥ä½†æœªä½¿ç”¨ã€‚è€ƒè™‘å°†æºæ›´æ”¹ä¸ºâ€œSamplerPortâ€ã€‚"
+msgstr "采样器端å£å·²è¿žæŽ¥ä½†æœªä½¿ç”¨ã€‚è¯·è€ƒè™‘å°†æºæ›´æ”¹ä¸ºâ€œSamplerPortâ€ã€‚"
#: scene/resources/visual_shader_nodes.cpp
msgid "Invalid source for preview."
@@ -12925,6 +14165,27 @@ msgid "Invalid comparison function for that type."
msgstr "该类型的比较功能无效。"
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "å˜é‡åªèƒ½åœ¨é¡¶ç‚¹å‡½æ•°ä¸­æŒ‡å®šã€‚"
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "对函数的赋值。"
@@ -12933,13 +14194,177 @@ msgid "Assignment to uniform."
msgstr "对统一的赋值。"
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "å˜é‡åªèƒ½åœ¨é¡¶ç‚¹å‡½æ•°ä¸­æŒ‡å®šã€‚"
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "ä¸å…许修改常é‡ã€‚"
+#~ msgid "Package Contents:"
+#~ msgstr "包内容:"
+
+#~ msgid "Singleton"
+#~ msgstr "å•例"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "是å¦åˆ é™¤é…置文件 “%sâ€ï¼Ÿï¼ˆæ— æ³•撤销)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "å¯ç”¨çš„属性:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "å¯ç”¨çš„功能:"
+
+#~ msgid "Unset"
+#~ msgstr "未设置"
+
+#~ msgid "Class Options"
+#~ msgstr "类选项"
+
+#~ msgid "Set"
+#~ msgstr "设置"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "å·²ä¿å­˜ %s 个修改åŽçš„资æºã€‚"
+
+#~ msgid "Q&A"
+#~ msgstr "问答"
+
+#~ msgid "Status:"
+#~ msgstr "状æ€ï¼š"
+
+#~ msgid "Edit:"
+#~ msgstr "编辑:"
+
+#~ msgid "Redownload"
+#~ msgstr "釿–°ä¸‹è½½"
+
+#~ msgid "(Installed)"
+#~ msgstr "(已安装)"
+
+#~ msgid "(Missing)"
+#~ msgstr "(缺失)"
+
+#~ msgid "Request Failed."
+#~ msgstr "请求失败。"
+
+#~ msgid "Redirect Loop."
+#~ msgstr "循环é‡å®šå‘。"
+
+#~ msgid "Download Complete."
+#~ msgstr "下载完æˆã€‚"
+
+#~ msgid "Remove Template"
+#~ msgstr "移除模æ¿"
+
+#~ msgid "Download Templates"
+#~ msgstr "下载模æ¿"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "从列表中选择镜åƒï¼šï¼ˆShift+å•击:在æµè§ˆå™¨ä¸­æ‰“开)"
+
+#~ msgid "Move to Trash"
+#~ msgstr "移动至回收站"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "展开所有属性"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "æŠ˜å æ‰€æœ‰å±žæ€§"
+
+#~ msgid "Copy Params"
+#~ msgstr "å¤åˆ¶å‚æ•°"
+
+#~ msgid "Open in Help"
+#~ msgstr "在帮助中打开"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "游æˆç›¸æœºè¦†ç›–\n"
+#~ "没有正在è¿è¡Œçš„æ¸¸æˆå®žä¾‹ã€‚"
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "æ‹–åŠ¨æ¥æ—‹è½¬"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr "按下 “V†键修改旋转中心,在移动时按下 Shift+V æ¥æ‹–动它。"
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+é¼ æ ‡å³é”®ï¼šæ˜¾ç¤ºé¼ æ ‡ç‚¹å‡»ä½ç½®ä¸‹çš„æ‰€æœ‰èŠ‚ç‚¹åˆ—è¡¨"
+
+#~ msgid "Clone Down"
+#~ msgstr "å¤åˆ¶åˆ°ä¸‹ä¸€è¡Œ"
+
+#~ msgid "Yaw"
+#~ msgstr "å航角"
+
+#~ msgid "Size"
+#~ msgstr "大å°"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "鼠标拖拽:旋转\n"
+#~ "Alt+拖拽:移动\n"
+#~ "Alt+é¼ æ ‡å³é”®ï¼šæ˜¾ç¤ºåˆ—表"
+
+#~ msgid "Sep.:"
+#~ msgstr "间隔:"
+
+#~ msgid "Add All"
+#~ msgstr "添加所有"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "主题编辑èœå•。"
+
+#~ msgid "Create Empty Template"
+#~ msgstr "创建主题模æ¿"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "创建空编辑器主题模æ¿"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "从当å‰ç¼–辑器主题模æ¿åˆ›å»º"
+
+#~ msgid "Data Type:"
+#~ msgstr "æ•°æ®ç±»åž‹ï¼š"
+
+#~ msgid "Theme File"
+#~ msgstr "主题文件"
+
+#~ msgid "Compiled"
+#~ msgstr "编译"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "是å¦ä»Žåˆ—表中删除 %d 个项目? \n"
+#~ "项目文件夹的内容ä¸ä¼šè¢«ä¿®æ”¹ã€‚"
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "是å¦ä»Žåˆ—表中删除该项目?\n"
+#~ "项目文件夹的内容ä¸ä¼šè¢«ä¿®æ”¹ã€‚"
+
+#~ msgid "Templates"
+#~ msgstr "模æ¿"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "添加é‡å®šå‘路径"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "无法对根节点执行此æ“作。"
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "无法读å–å¯åŠ¨å›¾ç‰‡ï¼š"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "使用默认å¯åŠ¨å›¾ç‰‡ã€‚"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "动画播放器ä¸èƒ½åŠ¨ç”»åŒ–è‡ªå·±ï¼Œåªèƒ½åŠ¨ç”»åŒ–å…¶ä»–æ’­æ”¾å™¨ã€‚"
@@ -13001,9 +14426,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "当å‰ä½ç½®å·²å­˜åœ¨åŒå文件或文件夹。"
-#~ msgid "Aligning APK..."
-#~ msgstr "å¯¹é½ APK..."
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "æ— æ³•å®Œæˆ APK 对é½ã€‚"
@@ -13065,9 +14487,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "当å‰åœºæ™¯å°šæœªä¿å­˜ï¼Œè¯·ä¿å­˜åŽå†å°è¯•执行。"
-#~ msgid "Not in resource path."
-#~ msgstr "ä¸åœ¨èµ„æºè·¯å¾„下。"
-
#~ msgid "Revert"
#~ msgstr "æ¢å¤"
@@ -13167,9 +14586,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Input"
#~ msgstr "输入"
-#~ msgid "Properties:"
-#~ msgstr "属性:"
-
#~ msgid "Methods:"
#~ msgstr "方法:"
@@ -13473,9 +14889,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Connect two points to make a split."
#~ msgstr "连接两个点以进行分割。"
-#~ msgid "Select a split to erase it."
-#~ msgstr "选择一个拆分以擦除它。"
-
#~ msgid "Add Node.."
#~ msgstr "添加节点.."
@@ -13544,9 +14957,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Public Methods:"
#~ msgstr "公共方法:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "GUI主题项目"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "GUI主题:"
@@ -13568,9 +14978,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Match case"
#~ msgstr "匹é…大å°å†™"
-#~ msgid "Filter: "
-#~ msgstr "过滤: "
-
#~ msgid "Ok"
#~ msgstr "好的"
@@ -13606,9 +15013,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Rotate 270 degrees"
#~ msgstr "旋转270度"
-#~ msgid "Variable"
-#~ msgstr "å˜é‡"
-
#~ msgid "Errors:"
#~ msgstr "错误:"
@@ -13699,9 +15103,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Set Transitions to:"
#~ msgstr "设置过渡效果:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "é‡å‘½å轨é“"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "轨é“修改为æ’值模å¼"
@@ -13852,12 +15253,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "StyleBox Preview:"
#~ msgstr "StyleBox预览:"
-#~ msgid "StyleBox"
-#~ msgstr "æ ·å¼"
-
-#~ msgid "Separation:"
-#~ msgstr "分隔:"
-
#~ msgid "Texture Region Editor"
#~ msgstr "纹ç†åŒºåŸŸç¼–辑器"
@@ -13932,12 +15327,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Couldn't get project.godot in project path."
#~ msgstr "无法在项目目录下找到project.godot文件。"
-#~ msgid "Couldn't get project.godot in the project path."
-#~ msgstr "无法在项目目录下找到project.godot文件。"
-
-#~ msgid "Not found!"
-#~ msgstr "未找到ï¼"
-
#~ msgid "Replace By"
#~ msgstr "替æ¢"
@@ -14309,9 +15698,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Texture Compression Quality (WebP):"
#~ msgstr "高质é‡ï¼ˆWebP)压缩方å¼:"
-#~ msgid "Texture Options"
-#~ msgstr "纹ç†é€‰é¡¹"
-
#~ msgid "Please specify some files!"
#~ msgstr "请添加文件ï¼"
@@ -14471,9 +15857,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Zoom Set..."
#~ msgstr "设置缩放..."
-#~ msgid "Set a Value"
-#~ msgstr "设置值"
-
#~ msgid "Parse BBCode"
#~ msgstr "è§£æžBBCode"
@@ -14603,9 +15986,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "Instance at Cursor"
#~ msgstr "光标处实例"
-#~ msgid "Could not instance scene!"
-#~ msgstr "无法实例化场景ï¼"
-
#~ msgid "Use Default Light"
#~ msgstr "使用默认光照"
@@ -14680,9 +16060,6 @@ msgstr "ä¸å…许修改常é‡ã€‚"
#~ msgid "City"
#~ msgstr "城市(City)"
-#~ msgid "State"
-#~ msgstr "å·ž(State)"
-
#~ msgid "2 letter country code"
#~ msgstr "2个字æ¯çš„国家代ç "
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index 28a69ee289..9cae040eb4 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -550,7 +550,8 @@ msgstr ""
msgid "FPS"
msgstr ""
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -576,7 +577,8 @@ msgstr "縮放selection"
msgid "Scale From Cursor"
msgstr "由鼠標縮放"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Duplicate Selection"
msgstr "複製 Selection"
@@ -603,6 +605,11 @@ msgstr "跳到上一步"
#: editor/animation_track_editor.cpp
#, fuzzy
+msgid "Apply Reset"
+msgstr "é‡è¨­ç¸®æ”¾æ¯”例"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Optimize Animation"
msgstr "優化動畫"
@@ -620,6 +627,11 @@ msgstr ""
#: editor/animation_track_editor.cpp
#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "è²¼ä¸Šåƒæ•¸"
+
+#: editor/animation_track_editor.cpp
+#, fuzzy
msgid "Anim. Optimizer"
msgstr "動畫優化工具"
@@ -675,7 +687,7 @@ msgid "Select Tracks to Copy"
msgstr "鏿“‡æ¨¡å¼"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -763,12 +775,14 @@ msgid "Toggle Scripts Panel"
msgstr ""
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "放大"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -824,11 +838,9 @@ msgid "Add"
msgstr "添加"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -878,6 +890,7 @@ msgstr "無法連接訊號"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -955,7 +968,7 @@ msgstr "編輯"
#: editor/connections_dialog.cpp
#, fuzzy
-msgid "Go To Method"
+msgid "Go to Method"
msgstr "鏿“‡æ¨¡å¼"
#: editor/create_dialog.cpp
@@ -973,6 +986,14 @@ msgstr "當改變時更新"
msgid "Create New %s"
msgstr "新增"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -994,8 +1015,8 @@ msgstr "æœå°‹ï¼š"
msgid "Matches:"
msgstr "å»åˆï¼š"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1069,16 +1090,18 @@ msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr "從專案中刪除所é¸çš„æª”案?(此動作無法復原)"
#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
#: editor/dependency_editor.cpp
@@ -1125,7 +1148,7 @@ msgstr ""
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1254,31 +1277,39 @@ msgstr "內容:"
msgid "Licenses"
msgstr "æŽˆæ¬Šæ¢æ¬¾"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
+#: editor/editor_asset_installer.cpp
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
msgstr ""
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "%s (Already Exists)"
+msgid "%s (already exists)"
msgstr "AutoLoad '%s'已存在ï¼"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
#, fuzzy
msgid "Uncompressing Assets"
msgstr "導入中:"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+msgid "The following files failed extraction from asset \"%s\":"
msgstr ""
#: editor/editor_asset_installer.cpp
#, fuzzy
-msgid "And %s more files."
+msgid "(and %s more files)"
msgstr "多 %d 檔案"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+msgid "Asset \"%s\" installed successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
@@ -1286,18 +1317,14 @@ msgstr ""
msgid "Success!"
msgstr "æˆåŠŸï¼"
-#: editor/editor_asset_installer.cpp
-#, fuzzy
-msgid "Package Contents:"
-msgstr "內容:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "安è£"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
-msgstr ""
+#, fuzzy
+msgid "Asset Installer"
+msgstr "安è£"
#: editor/editor_audio_buses.cpp
#, fuzzy
@@ -1363,7 +1390,7 @@ msgstr "ç•¥éŽ"
#: editor/editor_audio_buses.cpp
#, fuzzy
-msgid "Bus options"
+msgid "Bus Options"
msgstr "é¸é …"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1448,7 +1475,7 @@ msgstr ""
msgid "Add a new Audio Bus to this layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1545,6 +1572,15 @@ msgstr ""
#: editor/editor_autoload_settings.cpp
#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "檔案ä¸å­˜åœ¨."
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+#, fuzzy
msgid "Add AutoLoad"
msgstr "新增AutoLoad"
@@ -1560,16 +1596,16 @@ msgid "Node Name:"
msgstr "Nodeå稱"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "å稱"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
+msgid "Global Variable"
msgstr ""
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
#, fuzzy
msgid "Paste Params"
msgstr "è²¼ä¸Šåƒæ•¸"
@@ -1586,7 +1622,7 @@ msgstr "儲存本地更改..."
msgid "Updating scene..."
msgstr "正在更新場景..."
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[空]"
@@ -1730,9 +1766,49 @@ msgid "Import Dock"
msgstr "å°Žå…¥"
#: editor/editor_feature_profile.cpp
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase profile '%s'? (no undo)"
-msgstr "全部å–代"
+msgid "(current)"
+msgstr "(Current)"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1768,15 +1844,16 @@ msgstr "è¦é›¢é–‹ç·¨è¼¯å™¨å—Ž?"
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Enabled Properties:"
+msgid "Class Properties:"
msgstr "篩é¸:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr ""
+#, fuzzy
+msgid "Main Features:"
+msgstr "管ç†è¼¸å‡ºç¯„本"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+msgid "Nodes and Classes:"
msgstr ""
#: editor/editor_feature_profile.cpp
@@ -1795,25 +1872,35 @@ msgid "Error saving profile to path: '%s'."
msgstr "載入字形出ç¾éŒ¯èª¤"
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr ""
+#, fuzzy
+msgid "Reset to Default"
+msgstr "é è¨­"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr ""
+#, fuzzy
+msgid "Create Profile"
+msgstr "縮放selection"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "移除é¸é …"
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "Available Profiles:"
+msgstr "篩é¸:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
msgstr ""
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "å°Žå…¥"
@@ -1822,24 +1909,22 @@ msgid "Export"
msgstr "匯出"
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "Available Profiles:"
-msgstr "篩é¸:"
+msgid "Configure Selected Profile:"
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Class Options"
+msgid "Extra Options:"
msgstr "æè¿°ï¼š"
#: editor/editor_feature_profile.cpp
-#, fuzzy
-msgid "New profile name:"
-msgstr "有效å稱"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
#, fuzzy
-msgid "Erase Profile"
-msgstr "縮放selection"
+msgid "New profile name:"
+msgstr "有效å稱"
#: editor/editor_feature_profile.cpp
#, fuzzy
@@ -1867,7 +1952,8 @@ msgid "Select Current Folder"
msgstr "新增資料夾"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "檔案已存在, è¦è¦†è“‹å—Ž?"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1923,9 +2009,10 @@ msgid "Open a File or Directory"
msgstr "鏿“‡è³‡æ–™å¤¾/檔案"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "儲存"
@@ -2014,8 +2101,7 @@ msgid "Directories & Files:"
msgstr "資料夾和檔案:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "é è¦½:"
@@ -2093,7 +2179,7 @@ msgstr "篩é¸:"
msgid "Enumerations"
msgstr "翻譯:"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
#, fuzzy
msgid "Constants"
msgstr "常數"
@@ -2186,7 +2272,7 @@ msgstr ""
msgid "Signal"
msgstr "訊號"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "常數"
@@ -2202,8 +2288,9 @@ msgstr ""
msgid "Property:"
msgstr ""
-#: editor/editor_inspector.cpp
-msgid "Set"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
msgstr ""
#: editor/editor_inspector.cpp
@@ -2219,7 +2306,7 @@ msgid "Copy Selection"
msgstr "複製é¸é …"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2284,7 +2371,8 @@ msgid "Imported resources can't be saved."
msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "OK"
@@ -2488,19 +2576,22 @@ msgid "Save changes to '%s' before closing?"
msgstr "關閉å‰è¦å…ˆå„²å­˜å° '%s' 任何更改嗎?"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Saved %s modified resource(s)."
-msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚"
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "把場景å¦å­˜ç‚º"
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr ""
@@ -2687,7 +2778,7 @@ msgstr "刪除佈局"
msgid "Default"
msgstr "é è¨­"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
#, fuzzy
msgid "Show in FileSystem"
@@ -2888,6 +2979,11 @@ msgid "Orphan Resource Explorer..."
msgstr "把資æºå¦å­˜ç‚º..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "專案"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "回到專案列表"
@@ -3031,16 +3127,14 @@ msgstr "管ç†è¼¸å‡ºç¯„本"
msgid "Help"
msgstr "幫助"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
+#: editor/editor_node.cpp
#, fuzzy
-msgid "Online Docs"
-msgstr "關閉場景"
+msgid "Online Documentation"
+msgstr "開啓最近的"
#: editor/editor_node.cpp
-#, fuzzy
-msgid "Q&A"
-msgstr "Q&A"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
#, fuzzy
@@ -3048,6 +3142,10 @@ msgid "Report a Bug"
msgstr "å°Žå…¥"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr ""
@@ -3056,7 +3154,8 @@ msgid "Community"
msgstr "社群"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "關於"
#: editor/editor_node.cpp
@@ -3157,6 +3256,15 @@ msgid "Manage Templates"
msgstr "管ç†è¼¸å‡ºç¯„本"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "從檔案安è£"
+
+#: editor/editor_node.cpp
+msgid "Select android sources file"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3185,7 +3293,7 @@ msgstr "從ZIP檔"
msgid "Template Package"
msgstr "移除é¸é …"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr ""
@@ -3228,6 +3336,11 @@ msgstr "é¸å–"
#: editor/editor_node.cpp
#, fuzzy
+msgid "Select Current"
+msgstr "新增資料夾"
+
+#: editor/editor_node.cpp
+#, fuzzy
msgid "Open 2D Editor"
msgstr "開啟資料夾"
@@ -3262,6 +3375,11 @@ msgstr ""
msgid "No sub-resources found."
msgstr "資æº"
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "資æº"
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr ""
@@ -3289,35 +3407,33 @@ msgstr ""
msgid "Update"
msgstr "æ›´æ–°"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
-msgstr "版本:"
-
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp
#, fuzzy
-msgid "Author:"
-msgstr "作者:"
+msgid "Version"
+msgstr "版本:"
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "狀態:"
+#, fuzzy
+msgid "Author"
+msgstr "作者"
#: editor/editor_plugin_settings.cpp
-#, fuzzy
-msgid "Edit:"
-msgstr "編輯"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr ""
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
-msgstr ""
+#, fuzzy
+msgid "Frame Time (ms)"
+msgstr "時間:"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+msgid "Average Time (ms)"
msgstr ""
#: editor/editor_profiler.cpp
@@ -3337,6 +3453,16 @@ msgid "Self"
msgstr ""
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "幀 #:"
@@ -3381,12 +3507,6 @@ msgstr "有效的路徑"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr ""
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3404,43 +3524,6 @@ msgid "Pick a Viewport"
msgstr ""
#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "New Script"
-msgstr "下一個腳本"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Extend Script"
-msgstr "下一個腳本"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr ""
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr ""
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "貼上"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-#, fuzzy
-msgid "Convert To %s"
-msgstr "轉為..."
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr ""
@@ -3469,6 +3552,49 @@ msgstr ""
msgid "Add Key/Value Pair"
msgstr ""
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "貼上"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "轉為..."
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr ""
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "New Script"
+msgstr "下一個腳本"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Extend Script"
+msgstr "下一個腳本"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3502,7 +3628,7 @@ msgid "Did you forget the '_run' method?"
msgstr ""
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr ""
#: editor/editor_sub_scene.cpp
@@ -3523,126 +3649,68 @@ msgid "Import From Node:"
msgstr "從Node導入:"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redownload"
-msgstr "釿–°ä¸‹è¼‰"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "解除安è£"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(已安è£ï¼‰"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "下載"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Official export templates aren't available for development builds."
-msgstr "Development builds未能æä¾›å®˜æ–¹export templates。"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(欠缺)"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "(Current)"
-msgstr "(Current)"
+msgid "There are no mirrors available."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Retrieving mirrors, please wait..."
+msgid "Retrieving the mirror list..."
msgstr "接收 mirrors中, è«‹ç¨ä¾¯..."
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Remove template version '%s'?"
-msgstr "移除版本 '%s' 的範本?"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Can't open export templates zip."
-msgstr "ä¸èƒ½é–‹å•Ÿexport templatesçš„zip壓縮檔。"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "範本文件: %s 中的 version.txt æ ¼å¼ç„¡æ•ˆã€‚"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "No version.txt found inside templates."
-msgstr "範本中找ä¸åˆ°version.txt。"
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "範本創造路徑時出ç¾éŒ¯èª¤ï¼š"
+msgid "Error requesting URL:"
+msgstr "請求URL時出ç¾éŒ¯èª¤ï¼š"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Extracting Export Templates"
-msgstr "正在解壓Export Templates"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "導入中:"
+msgid "Connecting to the mirror..."
+msgstr "正在連到Mirror..."
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Error getting the list of mirrors."
-msgstr "å–å¾—mirrors列表時出錯。"
+msgid "Can't resolve the requested address."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "parsing mirror列表的JSON出錯。 請回報此å•題ï¼"
+msgid "Can't connect to the mirror."
+msgstr "ä¸èƒ½é€£åˆ°ä¸»æ©Ÿï¼š"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr "找ä¸åˆ°é€™å€‹ç‰ˆæœ¬çš„下載連çµã€‚直接下載åªé©ç”¨æ–¼official releases."
+msgid "No response from the mirror."
+msgstr "主機沒有回應:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Can't resolve."
-msgstr "無法解決。"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "ä¸èƒ½é€£æŽ¥ã€‚"
+msgid "Request failed."
+msgstr "請求失敗。"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "沒有回應。"
+msgid "Request ended up in a redirect loop."
+msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Request Failed."
+msgid "Request failed:"
msgstr "請求失敗。"
#: editor/export_template_manager.cpp
-#, fuzzy
-msgid "Redirect Loop."
-msgstr "釿–°å®šå‘循環。"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "失敗:"
-
-#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "下載完æˆã€‚"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3659,13 +3727,24 @@ msgstr ""
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Error requesting URL:"
-msgstr "請求URL時出ç¾éŒ¯èª¤ï¼š"
+msgid "Error getting the list of mirrors."
+msgstr "å–å¾—mirrors列表時出錯。"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Connecting to Mirror..."
-msgstr "正在連到Mirror..."
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "parsing mirror列表的JSON出錯。 請回報此å•題ï¼"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr "找ä¸åˆ°é€™å€‹ç‰ˆæœ¬çš„下載連çµã€‚直接下載åªé©ç”¨æ–¼official releases."
#: editor/export_template_manager.cpp
#, fuzzy
@@ -3716,48 +3795,143 @@ msgstr "SSL Handshake出錯"
#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "ä¸èƒ½é–‹å•Ÿexport templatesçš„zip壓縮檔。"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "範本文件: %s 中的 version.txt æ ¼å¼ç„¡æ•ˆã€‚"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "範本中找ä¸åˆ°version.txt。"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "範本創造路徑時出ç¾éŒ¯èª¤ï¼š"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Extracting Export Templates"
+msgstr "正在解壓Export Templates"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "導入中:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "移除版本 '%s' 的範本?"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Uncompressing Android Build Sources"
msgstr "正在解壓Android Build Sources"
#: editor/export_template_manager.cpp
#, fuzzy
+msgid "Export Template Manager"
+msgstr "Export Template管ç†å™¨"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
msgid "Current Version:"
msgstr "ç•¶å‰ç‰ˆæœ¬ï¼š"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "已安è£çš„版本:"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "開啟檔案"
+
+#: editor/export_template_manager.cpp
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Uninstall"
+msgstr "解除安è£"
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "下載出ç¾éŒ¯èª¤"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Official export templates aren't available for development builds."
+msgstr "Development builds未能æä¾›å®˜æ–¹export templates。"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "從檔案安è£"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "移除Template"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "從ZIP檔"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "å–æ¶ˆ"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Select Template File"
-msgstr "é¸å–Template檔案"
+msgid "Cancel the download of the templates."
+msgstr "ä¸èƒ½é–‹å•Ÿexport templatesçš„zip壓縮檔。"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Godot Export Templates"
-msgstr "Godot輸出範本"
+msgid "Other Installed Versions:"
+msgstr "已安è£çš„版本:"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Export Template Manager"
-msgstr "Export Template管ç†å™¨"
+msgid "Uninstall Template"
+msgstr "解除安è£"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "下載Templates"
+#, fuzzy
+msgid "Select Template File"
+msgstr "é¸å–Template檔案"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Godot Export Templates"
+msgstr "Godot輸出範本"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "å¾žæ¸…å–®ä¸­é¸æ“‡é¡åƒ: (Shift + 單擊: 在ç€è¦½å™¨ä¸­æ‰“é–‹)"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -3892,24 +4066,50 @@ msgstr "新增腳本..."
msgid "New Resource..."
msgstr "新增資æº..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "全部展開"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "全部折疊"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "å†è£½..."
+#, fuzzy
+msgid "Sort files"
+msgstr "在幫助檔æœå°‹"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Move to Trash"
-msgstr "移動Autoload"
+msgid "Sort by Name (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Last Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by First Modified"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "å†è£½..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
@@ -3917,6 +4117,10 @@ msgid "Rename..."
msgstr "釿–°å‘½å..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
#, fuzzy
msgid "Previous Folder/File"
msgstr "上一個tab"
@@ -4008,10 +4212,6 @@ msgstr "尋找..."
msgid "Replace..."
msgstr "替æ›â€¦"
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "å–æ¶ˆ"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "尋找: "
@@ -4249,27 +4449,45 @@ msgid "Failed to load resource."
msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚"
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr ""
+#, fuzzy
+msgid "Copy Properties"
+msgstr "內客"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Collapse All Properties"
-msgstr "篩é¸:"
+msgid "Paste Properties"
+msgstr "內客"
+
+#: editor/inspector_dock.cpp
+msgid "Make Sub-Resources Unique"
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Create a new resource in memory and edit it."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Load an existing resource from disk and edit it."
+msgstr ""
+
+#: editor/inspector_dock.cpp
+msgid "Save the currently edited resource."
+msgstr ""
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Save As..."
msgstr "å¦å­˜ç‚º..."
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Copy Params"
-msgstr "è¤‡è£½åƒæ•¸"
+msgid "Extra resource options."
+msgstr "ä¸åœ¨è³‡æºè·¯å¾‘。"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Edit Resource Clipboard"
+msgid "Edit Resource from Clipboard"
msgstr "錯誤:剪貼簿沒有動畫ï¼"
#: editor/inspector_dock.cpp
@@ -4278,31 +4496,10 @@ msgstr "貼上資æº"
#: editor/inspector_dock.cpp
#, fuzzy
-msgid "Make Built-In"
+msgid "Make Resource Built-In"
msgstr "設定æˆå…§å»ºçš„"
#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr ""
-
-#: editor/inspector_dock.cpp
-#, fuzzy
-msgid "Open in Help"
-msgstr "在幫助中開啓"
-
-#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr ""
-
-#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr ""
-
-#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
msgstr ""
@@ -4315,8 +4512,14 @@ msgid "History of recently edited objects."
msgstr ""
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr ""
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "開啓最近的"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+#, fuzzy
+msgid "Open Documentation"
+msgstr "開啓最近的"
#: editor/inspector_dock.cpp
#, fuzzy
@@ -4324,6 +4527,11 @@ msgid "Filter properties"
msgstr "篩é¸:"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "動畫內容。"
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr ""
@@ -4354,6 +4562,16 @@ msgstr "æ’件列表:"
msgid "Subfolder:"
msgstr ""
+#: editor/plugin_config_dialog.cpp
+#, fuzzy
+msgid "Author:"
+msgstr "作者:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "版本:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
#, fuzzy
msgid "Language:"
@@ -4573,7 +4791,7 @@ msgstr ""
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
#, fuzzy
-msgid "Parameter Changed"
+msgid "Parameter Changed:"
msgstr "當改變時更新"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4809,6 +5027,11 @@ msgid "Animation"
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
msgid "Edit Transitions..."
msgstr "編輯連接"
@@ -5164,10 +5387,18 @@ msgid "View Files"
msgstr "檔案"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "下載"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "ä¸èƒ½é€£æŽ¥ã€‚"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "ä¸èƒ½é€£åˆ°ä¸»æ©Ÿï¼š"
@@ -5176,18 +5407,22 @@ msgid "No response from host:"
msgstr "主機沒有回應:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "沒有回應。"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Request failed, return code:"
-msgstr "請求失敗,"
+msgid "Can't resolve."
+msgstr "無法解決。"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Request failed."
-msgstr "請求失敗。"
+msgid "Request failed, return code:"
+msgstr "請求失敗,"
#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
@@ -5217,6 +5452,10 @@ msgid "Timeout."
msgstr "時間:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "失敗:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
@@ -5325,7 +5564,11 @@ msgid "All"
msgstr "全部"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
@@ -5372,6 +5615,10 @@ msgstr "載入"
msgid "Assets ZIP File"
msgstr "Assets ZIP 檔"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5380,8 +5627,8 @@ msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
#: editor/plugins/baked_lightmap_editor_plugin.cpp
@@ -5628,15 +5875,16 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5697,6 +5945,7 @@ msgid ""
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
#, fuzzy
@@ -5709,19 +5958,28 @@ msgid "Select Mode"
msgstr "鏿“‡æ¨¡å¼"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr ""
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "移除被é¸å–的軌迹。"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
-msgstr ""
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
+msgstr "è¦åˆªé™¤é¸ä¸­æª”案?"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "移除被é¸å–的軌迹。"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
+msgid "RMB: Add node at position clicked."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -5964,6 +6222,16 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "新增節點"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "在這æ’入關éµå¹€"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr ""
@@ -5976,6 +6244,52 @@ msgid "Pan View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr ""
@@ -6228,6 +6542,11 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "新增"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Single Convex Shape"
msgstr "新增"
@@ -6262,7 +6581,7 @@ msgid "No mesh to debug."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+msgid "Mesh has no UV in layer %d."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6323,13 +6642,26 @@ msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "縮放selection"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid "Create Multiple Convex Collision Siblings"
msgstr "縮放selection"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6386,7 +6718,6 @@ msgid "Mesh Library"
msgstr "MeshLibrary..."
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr ""
@@ -6661,7 +6992,8 @@ msgid "Close Curve"
msgstr ""
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "é¸é …"
@@ -6981,6 +7313,24 @@ msgstr ""
msgid "ResourcePreloader"
msgstr "資æº"
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portals"
+msgstr ""
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "Bezier節點下移"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "刪除"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+msgid "Flip Portal"
+msgstr ""
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr ""
@@ -7205,7 +7555,7 @@ msgstr "é‹è¡Œ"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "æœå°‹"
@@ -7237,6 +7587,12 @@ msgid "Debug with External Editor"
msgstr "è¦é›¢é–‹ç·¨è¼¯å™¨å—Ž?"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#, fuzzy
+msgid "Online Docs"
+msgstr "關閉場景"
+
+#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation."
msgstr "開啓最近的"
@@ -7370,8 +7726,8 @@ msgstr ""
msgid "Cut"
msgstr "剪下"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "å…¨é¸"
@@ -7406,10 +7762,6 @@ msgid "Unfold All Lines"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr ""
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr ""
@@ -7576,6 +7928,27 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate"
+msgstr ""
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "翻譯"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr ""
@@ -7597,42 +7970,47 @@ msgid "Animation Key Inserted."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+msgid "Pitch:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
+msgid "Yaw:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
+msgid "Size:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+msgid "Objects Drawn:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Material Changes"
+msgid "Material Changes:"
msgstr "當改變時更新"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Shader Changes"
+msgid "Shader Changes:"
msgstr "當改變時更新"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Surface Changes"
+msgid "Surface Changes:"
msgstr "當改變時更新"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+msgid "Draw Calls:"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
+msgstr "內客"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7795,6 +8173,11 @@ msgstr "下滾"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "(ä¸ï¼‰é¡¯ç¤ºæœ€æ„›"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "View Rotation Locked"
msgstr "本地化"
@@ -7810,6 +8193,11 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "轉為..."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr ""
@@ -7823,26 +8211,24 @@ msgid ""
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
-msgstr ""
+#, fuzzy
+msgid "Snap Nodes to Floor"
+msgstr "鏿“‡è¦å°Žå…¥çš„Node(s)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Couldn't find a solid floor to snap the selection to."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
+msgid "Use Local Space"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Local Space"
+msgid "Use Snap"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Converts rooms for portal culling."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7941,6 +8327,10 @@ msgid "View Grid"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Portal Culling"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Settings..."
@@ -8254,11 +8644,6 @@ msgid "Snap Mode:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr ""
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr ""
@@ -8279,175 +8664,591 @@ msgid "Step:"
msgstr ""
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr ""
+#, fuzzy
+msgid "Separation:"
+msgstr "翻譯:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
+msgid "Colors"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Fonts"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Icons"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Styleboxes"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
+msgid "{num} color(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All Items"
-msgstr "移除é¸é …"
+msgid "No colors found."
+msgstr "資æº"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Remove All"
-msgstr "移除"
+msgid "{num} constant(s)"
+msgstr "常數"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Edit Theme"
-msgstr "檔案"
+msgid "No constants found."
+msgstr "常數"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
+msgid "{num} font(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "No fonts found."
+msgstr "找ä¸åˆ°!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove Class Items"
+#, fuzzy
+msgid "No icons found."
+msgstr "找ä¸åˆ°!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "資æº"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
+msgid "Nothing was selected for the import."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "如來如此"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Toggle Button"
-msgstr "é–‹ï¼é—œè‡ªå‹•播放"
+msgid "Updating the editor"
+msgstr "è¦é›¢é–‹ç·¨è¼¯å™¨å—Ž?"
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled Button"
-msgstr "å·²åœç”¨"
+msgid "Finalizing"
+msgstr "分æžä¸­"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Item"
+#, fuzzy
+msgid "Filter:"
+msgstr "篩é¸:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Disabled Item"
-msgstr "å·²åœç”¨"
+msgid "Select by data type:"
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Check Item"
+msgid "Select all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Item"
+msgid "Select all visible color items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Radio Item"
+msgid "Deselect all visible color items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Checked Radio Item"
+msgid "Select all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+msgid "Select all visible constant items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Submenu"
+msgid "Deselect all visible constant items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 1"
+msgid "Select all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subitem 2"
+msgid "Select all visible font items and their data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Has"
+msgid "Deselect all visible font items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Many"
+msgid "Select all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible icon items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible icon items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Disabled LineEdit"
-msgstr "å·²åœç”¨"
+msgid "Collapse types."
+msgstr "全部折疊"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 1"
+#, fuzzy
+msgid "Expand types."
+msgstr "全部展開"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "é¸å–Template檔案"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 2"
+#, fuzzy
+msgid "Deselect All"
+msgstr "å…¨é¸"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Tab 3"
+#, fuzzy
+msgid "Import Selected"
+msgstr "導入場景"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Editable Item"
+msgid "Remove All Color Items"
+msgstr "移除é¸é …"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "釿–°å‘½å"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "移除é¸é …"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "移除é¸é …"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "移除é¸é …"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "移除é¸é …"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Color Item"
+msgstr "加到最愛"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Constant Item"
+msgstr "常數"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "新增訊號"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "新增訊號"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
msgstr "檔案"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Subtree"
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "移除é¸é …"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Rename Constant Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Has,Many,Options"
-msgstr "é¸é …"
+msgid "Rename Font Item"
+msgstr "åªé™é¸ä¸­"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "åªé™é¸ä¸­"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "移除é¸é …"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "管ç†è¼¸å‡ºç¯„本"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "檔案"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Types:"
msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item:"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "檔案"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "移除é¸é …"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "移除é¸é …"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Items"
+msgstr "移除é¸é …"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Theme Item"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
#, fuzzy
-msgid "Theme File"
-msgstr "開啟檔案"
+msgid "Old Name:"
+msgstr "Nodeå稱"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "å°Žå…¥"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "é è¨­"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "檔案"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select Another Theme Resource:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Another Theme"
+msgstr "檔案"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "å‹•ç•«è»Œè·¡é‡æ–°å‘½å"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "釿–°å‘½å..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "覆蓋"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "新增節點"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Item Type"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "Nodeå稱"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "é è¨­"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "覆蓋"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "檔案"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "管ç†è¼¸å‡ºç¯„本"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "é è¦½:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "é è¦½:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "儲存場景"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Toggle Button"
+msgstr "é–‹ï¼é—œè‡ªå‹•播放"
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Button"
+msgstr "å·²åœç”¨"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled Item"
+msgstr "å·²åœç”¨"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Checked Radio Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Named Separator"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Submenu"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subitem 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Disabled LineEdit"
+msgstr "å·²åœç”¨"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Editable Item"
+msgstr "檔案"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Subtree"
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Has,Many,Options"
+msgstr "é¸é …"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid file, not a PackedScene resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
@@ -8632,6 +9433,10 @@ msgid "Priority"
msgstr "匯出"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr ""
@@ -8995,11 +9800,6 @@ msgid "Commit Changes"
msgstr "åŒæ­¥æ›´æ–°è…³æœ¬"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr ""
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr ""
@@ -9845,7 +10645,7 @@ msgstr ""
#: editor/plugins/visual_shader_editor_plugin.cpp
#, fuzzy
-msgid "Edit Visual Property"
+msgid "Edit Visual Property:"
msgstr "檔案"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9969,7 +10769,7 @@ msgstr "下一個腳本"
#: editor/project_export.cpp
#, fuzzy
-msgid "Script Export Mode:"
+msgid "GDScript Export Mode:"
msgstr "匯出"
#: editor/project_export.cpp
@@ -9977,7 +10777,7 @@ msgid "Text"
msgstr "文字"
#: editor/project_export.cpp
-msgid "Compiled"
+msgid "Compiled Bytecode (Faster Loading)"
msgstr ""
#: editor/project_export.cpp
@@ -9985,11 +10785,11 @@ msgid "Encrypted (Provide Key Below)"
msgstr ""
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr ""
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr ""
#: editor/project_export.cpp
@@ -10068,7 +10868,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid Project Name."
+msgid "Invalid project name."
msgstr "無效å稱"
#: editor/project_manager.cpp
@@ -10103,6 +10903,18 @@ msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Rename Project"
msgstr "專案"
@@ -10256,16 +11068,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr ""
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "從列表é¸å–設備"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "從列表é¸å–設備"
#: editor/project_manager.cpp
msgid ""
@@ -10292,7 +11102,7 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Projects"
+msgid "Local Projects"
msgstr "專案"
#: editor/project_manager.cpp
@@ -10305,10 +11115,25 @@ msgid "Last Modified"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "專案"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "專案"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "專案"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr ""
@@ -10318,13 +11143,27 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Import Project"
+msgstr "å°Žå…¥"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "專案"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Remove Missing"
msgstr "åªé™é¸ä¸­"
#: editor/project_manager.cpp
+msgid "About"
+msgstr "關於"
+
+#: editor/project_manager.cpp
#, fuzzy
-msgid "Templates"
-msgstr "移除é¸é …"
+msgid "Asset Library Projects"
+msgstr "MeshLibrary..."
#: editor/project_manager.cpp
msgid "Restart Now"
@@ -10332,6 +11171,15 @@ msgstr ""
#: editor/project_manager.cpp
#, fuzzy
+msgid "Remove All"
+msgstr "移除"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Can't run project"
msgstr "ä¸èƒ½é€£æŽ¥ã€‚"
@@ -10342,8 +11190,13 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "篩é¸:"
+
+#: editor/project_manager.cpp
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -10353,6 +11206,10 @@ msgid "Key "
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr ""
@@ -10397,6 +11254,10 @@ msgstr "設備"
msgid "Device"
msgstr "設備"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr ""
@@ -10544,19 +11405,20 @@ msgid "Override for Feature"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
-msgstr ""
+#, fuzzy
+msgid "Add %d Translations"
+msgstr "éŽæ¸¡"
#: editor/project_settings_editor.cpp
msgid "Remove Translation"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
+msgid "Translation Resource Remap: Add %d Path(s)"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -10838,6 +11700,10 @@ msgid "Post-Process"
msgstr ""
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "ä¿ç•™"
@@ -11013,11 +11879,29 @@ msgid "Delete node \"%s\"?"
msgstr "ä¸é¸"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
msgstr ""
#: editor/scene_tree_dock.cpp
@@ -11078,6 +11962,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr ""
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "Attach Script"
msgstr "腳本"
@@ -11128,11 +12016,6 @@ msgid "Load As Placeholder"
msgstr ""
#: editor/scene_tree_dock.cpp
-#, fuzzy
-msgid "Open Documentation"
-msgstr "開啓最近的"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -11429,6 +12312,12 @@ msgid ""
msgstr ""
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Class Name:"
msgstr "å稱:"
@@ -11509,6 +12398,10 @@ msgid "Copy Error"
msgstr "載入錯誤"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr ""
@@ -11800,6 +12693,16 @@ msgstr ""
msgid "Object can't provide a length."
msgstr ""
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "匯出Mesh Library"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "匯出"
+
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Next Plane"
@@ -11847,6 +12750,11 @@ msgid "GridMap Paint"
msgstr "設定"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "刪除é¸ä¸­æª”案"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr ""
@@ -12102,6 +13010,16 @@ msgstr "新增訊號"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Change Port Type"
+msgstr "更改動畫循環"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "動畫變化數值"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Override an existing built-in function."
msgstr "有效å稱。"
@@ -12219,6 +13137,11 @@ msgid "Add Preload Node"
msgstr "新增節點"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "新增節點"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "由主幹新增節點"
@@ -12461,10 +13384,6 @@ msgstr "貼上"
msgid "Get %s"
msgstr ""
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr ""
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr ""
@@ -12494,6 +13413,40 @@ msgid "Select device from the list"
msgstr "從列表é¸å–設備"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "匯出"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "解除安è£"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "接收 mirrors中, è«‹ç¨ä¾¯..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "無法新增資料夾"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "正在é‹è¡Œè‡ªå®šç¾©è…³æœ¬..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "無法新增資料夾"
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr ""
@@ -12591,6 +13544,46 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr "æ­£åœ¨æŽƒææª”案, è«‹ç¨å€™..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "無法新增資料夾"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "設定"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "匯出"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr ""
@@ -12603,6 +13596,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr ""
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12617,6 +13614,20 @@ msgid ""
msgstr ""
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not export project files to gradle project\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "無法新增資料夾"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr ""
@@ -12636,11 +13647,54 @@ msgid ""
"outputs."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "時長(秒)。"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "連接中..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "無法新增資料夾"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "ç¯©é¸æª”案..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "無法新增資料夾"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr ""
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr ""
@@ -12672,11 +13726,6 @@ msgstr ""
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not write file:"
-msgstr "無法新增資料夾"
-
-#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not open template for export:"
msgstr "無法新增資料夾"
@@ -12687,19 +13736,50 @@ msgstr "管ç†è¼¸å‡ºç¯„本"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Could not read boot splash image file:"
+msgid "Could not read file:"
msgstr "無法新增資料夾"
#: platform/javascript/export/export.cpp
#, fuzzy
-msgid "Using default boot splash image."
+msgid "Could not read HTML shell:"
msgstr "無法新增資料夾"
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "無法新增資料夾"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "儲存TileSet時出ç¾éŒ¯èª¤ï¼"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "無效字型"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
+
#: platform/uwp/export/export.cpp
#, fuzzy
msgid "Invalid package short name."
@@ -13053,6 +14133,13 @@ msgid ""
"Use a BakedLightmap instead."
msgstr ""
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr ""
@@ -13122,12 +14209,64 @@ msgstr ""
msgid "Node A and Node B must be different PhysicsBodies"
msgstr ""
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
"derived node to work."
msgstr ""
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr ""
@@ -13177,6 +14316,10 @@ msgstr ""
msgid "Animation not found: '%s'"
msgstr "時長(秒)。"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr ""
@@ -13329,15 +14472,31 @@ msgid "Invalid comparison function for that type."
msgstr "無效的函å¼é¡žåž‹å°æ¯”。"
#: servers/visual/shader_language.cpp
-msgid "Assignment to function."
+msgid "Varying may not be assigned in the '%s' function."
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Assignment to uniform."
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
msgstr ""
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
+msgid "Assignment to function."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Assignment to uniform."
msgstr ""
#: servers/visual/shader_language.cpp
@@ -13345,6 +14504,95 @@ msgid "Constants cannot be modified."
msgstr ""
#, fuzzy
+#~ msgid "Package Contents:"
+#~ msgstr "內容:"
+
+#, fuzzy
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "全部å–代"
+
+#, fuzzy
+#~ msgid "Enabled Properties:"
+#~ msgstr "篩é¸:"
+
+#, fuzzy
+#~ msgid "Class Options"
+#~ msgstr "æè¿°ï¼š"
+
+#, fuzzy
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "資æºåŠ è¼‰å¤±æ•—ã€‚"
+
+#, fuzzy
+#~ msgid "Q&A"
+#~ msgstr "Q&A"
+
+#~ msgid "Status:"
+#~ msgstr "狀態:"
+
+#, fuzzy
+#~ msgid "Edit:"
+#~ msgstr "編輯"
+
+#, fuzzy
+#~ msgid "Redownload"
+#~ msgstr "釿–°ä¸‹è¼‰"
+
+#~ msgid "(Installed)"
+#~ msgstr "(已安è£ï¼‰"
+
+#~ msgid "(Missing)"
+#~ msgstr "(欠缺)"
+
+#, fuzzy
+#~ msgid "Request Failed."
+#~ msgstr "請求失敗。"
+
+#, fuzzy
+#~ msgid "Redirect Loop."
+#~ msgstr "釿–°å®šå‘循環。"
+
+#~ msgid "Download Complete."
+#~ msgstr "下載完æˆã€‚"
+
+#~ msgid "Remove Template"
+#~ msgstr "移除Template"
+
+#~ msgid "Download Templates"
+#~ msgstr "下載Templates"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "å¾žæ¸…å–®ä¸­é¸æ“‡é¡åƒ: (Shift + 單擊: 在ç€è¦½å™¨ä¸­æ‰“é–‹)"
+
+#, fuzzy
+#~ msgid "Move to Trash"
+#~ msgstr "移動Autoload"
+
+#, fuzzy
+#~ msgid "Copy Params"
+#~ msgstr "è¤‡è£½åƒæ•¸"
+
+#, fuzzy
+#~ msgid "Open in Help"
+#~ msgstr "在幫助中開啓"
+
+#, fuzzy
+#~ msgid "Theme File"
+#~ msgstr "開啟檔案"
+
+#, fuzzy
+#~ msgid "Templates"
+#~ msgstr "移除é¸é …"
+
+#, fuzzy
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "無法新增資料夾"
+
+#, fuzzy
+#~ msgid "Using default boot splash image."
+#~ msgstr "無法新增資料夾"
+
+#, fuzzy
#~ msgid "Clipboard is empty"
#~ msgstr "路徑為空"
@@ -13393,10 +14641,6 @@ msgstr ""
#~ msgstr "檔案系統"
#, fuzzy
-#~ msgid "Not in resource path."
-#~ msgstr "ä¸åœ¨è³‡æºè·¯å¾‘。"
-
-#, fuzzy
#~ msgid "Clear Script"
#~ msgstr "下一個腳本"
@@ -13436,10 +14680,6 @@ msgstr ""
#~ msgstr "篩é¸:"
#, fuzzy
-#~ msgid "Enumerations:"
-#~ msgstr "翻譯:"
-
-#, fuzzy
#~ msgid "Class Description:"
#~ msgstr "æè¿°ï¼š"
@@ -13634,9 +14874,6 @@ msgstr ""
#~ msgid "Set Transitions to:"
#~ msgstr "å°‡éŽæ¸¡è¨­åˆ°ï¼š"
-#~ msgid "Anim Track Rename"
-#~ msgstr "å‹•ç•«è»Œè·¡é‡æ–°å‘½å"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "動畫軌跡變化Interpolation"
@@ -13726,9 +14963,6 @@ msgstr ""
#~ msgid "Can't write file."
#~ msgstr "無法新增資料夾"
-#~ msgid "Not found!"
-#~ msgstr "找ä¸åˆ°!"
-
#, fuzzy
#~ msgid "Replace By"
#~ msgstr "由這個å–代"
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index f65d628d63..2b4dd0fc03 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -542,7 +542,8 @@ msgstr "ç§’"
msgid "FPS"
msgstr "FPS"
-#: editor/animation_track_editor.cpp editor/editor_properties.cpp
+#: editor/animation_track_editor.cpp editor/editor_plugin_settings.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/polygon_2d_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
@@ -568,7 +569,8 @@ msgstr "縮放所é¸"
msgid "Scale From Cursor"
msgstr "以游標縮放"
-#: editor/animation_track_editor.cpp modules/gridmap/grid_map_editor_plugin.cpp
+#: editor/animation_track_editor.cpp editor/plugins/script_text_editor.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Duplicate Selection"
msgstr "é‡è¤‡æ‰€é¸"
@@ -589,6 +591,11 @@ msgid "Go to Previous Step"
msgstr "跳至上一步"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Apply Reset"
+msgstr "é‡è¨­"
+
+#: editor/animation_track_editor.cpp
msgid "Optimize Animation"
msgstr "最佳化動畫"
@@ -605,6 +612,11 @@ msgid "Use Bezier Curves"
msgstr "使用è²èŒ²æ›²ç·š"
#: editor/animation_track_editor.cpp
+#, fuzzy
+msgid "Create RESET Track(s)"
+msgstr "貼上關éµç•«æ ¼"
+
+#: editor/animation_track_editor.cpp
msgid "Anim. Optimizer"
msgstr "最佳化動畫工具"
@@ -653,7 +665,7 @@ msgid "Select Tracks to Copy"
msgstr "鏿“‡è»Œé“以複製"
#: editor/animation_track_editor.cpp editor/editor_log.cpp
-#: editor/editor_properties.cpp
+#: editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
@@ -739,12 +751,14 @@ msgid "Toggle Scripts Panel"
msgstr "開啟ï¼é—œé–‰è…³æœ¬é¢æ¿"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom In"
msgstr "放大"
#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Out"
@@ -799,11 +813,9 @@ msgid "Add"
msgstr "新增"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
-#: editor/editor_feature_profile.cpp editor/groups_editor.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/groups_editor.cpp editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
@@ -853,6 +865,7 @@ msgstr "無法連接訊號"
#: editor/plugins/resource_preloader_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
#: editor/plugins/version_control_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/property_editor.cpp
#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
@@ -922,7 +935,8 @@ msgid "Edit..."
msgstr "編輯…"
#: editor/connections_dialog.cpp
-msgid "Go To Method"
+#, fuzzy
+msgid "Go to Method"
msgstr "跳至方法"
#: editor/create_dialog.cpp
@@ -937,6 +951,14 @@ msgstr "更改"
msgid "Create New %s"
msgstr "建立新的 %s"
+#: editor/create_dialog.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "No results for \"%s\"."
+msgstr "找ä¸åˆ°èˆ‡ã€Œ%sã€ç›¸é—œçš„çµæžœã€‚"
+
+#: editor/create_dialog.cpp
+msgid "No description available for %s."
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
@@ -958,8 +980,8 @@ msgstr "æœå°‹ï¼š"
msgid "Matches:"
msgstr "ç¬¦åˆæ¢ä»¶ï¼š"
-#: editor/create_dialog.cpp editor/editor_plugin_settings.cpp
-#: editor/plugin_config_dialog.cpp
+#: editor/create_dialog.cpp editor/editor_feature_profile.cpp
+#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/property_selector.cpp
#: modules/visual_script/visual_script_property_selector.cpp
@@ -1035,19 +1057,23 @@ msgid "Owners Of:"
msgstr "ç‚ºä¸‹åˆ—ä¹‹æ“æœ‰è€…:"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
-"Remove selected files from the project? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove the selected files from the project? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"確定è¦å°‡æ‰€é¸æª”案自專案中移除嗎?(無法復原)\n"
"移除的檔案å¯åœ¨ç¨å¾Œæ–¼ç³»çµ±è³‡æºå›žæ”¶æ¡¶å…§æ‰¾åˆ°ã€‚"
#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
-"Remove them anyway? (no undo)\n"
-"You can find the removed files in the system trash to restore them."
+"Remove them anyway? (Cannot be undone.)\n"
+"Depending on your filesystem configuration, the files will either be moved "
+"to the system trash or deleted permanently."
msgstr ""
"有其他資æºéœ€è¦æ­£åœ¨åˆªé™¤çš„æª”案æ‰èƒ½æ­£å¸¸é‹ä½œã€‚\n"
"ä¾ç„¶è¦ç§»é™¤å—Žï¼Ÿï¼ˆç„¡æ³•復原)\n"
@@ -1095,7 +1121,7 @@ msgstr "孤立資æºç€è¦½å™¨"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/plugins/item_list_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
@@ -1218,28 +1244,41 @@ msgstr "元件"
msgid "Licenses"
msgstr "æŽˆæ¬Šæ¢æ¬¾"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Error opening package file, not in ZIP format."
-msgstr "ç„¡æ³•é–‹å•Ÿå¥—ä»¶æª”æ¡ˆï¼Œéž ZIP æ ¼å¼ã€‚"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Error opening asset file for \"%s\" (not in ZIP format)."
+msgstr "é–‹å•Ÿå¥—ä»¶æª”æ¡ˆæ™‚ç™¼ç”ŸéŒ¯èª¤ï¼ˆéž ZIP æ ¼å¼ï¼‰ã€‚"
#: editor/editor_asset_installer.cpp
-msgid "%s (Already Exists)"
+#, fuzzy
+msgid "%s (already exists)"
msgstr "%s(已存在)"
#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - %d file(s) conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Contents of asset \"%s\" - No files conflict with your project:"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
msgstr "正在解壓縮素æ"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "The following files failed extraction from asset \"%s\":"
msgstr "自套件中å–得下列檔案失敗:"
#: editor/editor_asset_installer.cpp
-msgid "And %s more files."
+#, fuzzy
+msgid "(and %s more files)"
msgstr "與其他 %d 個檔案。"
-#: editor/editor_asset_installer.cpp editor/project_manager.cpp
-msgid "Package installed successfully!"
+#: editor/editor_asset_installer.cpp
+#, fuzzy
+msgid "Asset \"%s\" installed successfully!"
msgstr "å¥—ä»¶å®‰è£æˆåŠŸï¼"
#: editor/editor_asset_installer.cpp
@@ -1247,16 +1286,13 @@ msgstr "å¥—ä»¶å®‰è£æˆåŠŸï¼"
msgid "Success!"
msgstr "æˆåŠŸï¼"
-#: editor/editor_asset_installer.cpp
-msgid "Package Contents:"
-msgstr "套件內容:"
-
#: editor/editor_asset_installer.cpp editor/editor_node.cpp
msgid "Install"
msgstr "安è£"
#: editor/editor_asset_installer.cpp
-msgid "Package Installer"
+#, fuzzy
+msgid "Asset Installer"
msgstr "套件安è£ç¨‹å¼"
#: editor/editor_audio_buses.cpp
@@ -1320,7 +1356,8 @@ msgid "Bypass"
msgstr "忽略效果"
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
+#, fuzzy
+msgid "Bus Options"
msgstr "åŒ¯æµæŽ’é¸é …"
#: editor/editor_audio_buses.cpp editor/filesystem_dock.cpp
@@ -1400,7 +1437,7 @@ msgstr "æ–°å¢žåŒ¯æµæŽ’"
msgid "Add a new Audio Bus to this layout."
msgstr "æ–°å¢žä¸€å€‹æ–°çš„éŸ³è¨ŠåŒ¯æµæŽ’è‡³è©²é…置。"
-#: editor/editor_audio_buses.cpp editor/editor_properties.cpp
+#: editor/editor_audio_buses.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_player_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Load"
@@ -1487,6 +1524,15 @@ msgid "Can't add autoload:"
msgstr "無法新增 Autoload:"
#: editor/editor_autoload_settings.cpp
+#, fuzzy
+msgid "%s is an invalid path. File does not exist."
+msgstr "檔案ä¸å­˜åœ¨ã€‚"
+
+#: editor/editor_autoload_settings.cpp
+msgid "%s is an invalid path. Not in resource path (res://)."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
msgstr "新增 Autoload"
@@ -1502,16 +1548,17 @@ msgid "Node Name:"
msgstr "節點å稱:"
#: editor/editor_autoload_settings.cpp editor/editor_help_search.cpp
-#: editor/editor_profiler.cpp editor/project_manager.cpp
-#: editor/settings_config_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/editor_profiler.cpp
+#: editor/project_manager.cpp editor/settings_config_dialog.cpp
msgid "Name"
msgstr "å稱"
#: editor/editor_autoload_settings.cpp
-msgid "Singleton"
-msgstr "單例"
+#, fuzzy
+msgid "Global Variable"
+msgstr "釿–°å‘½å變數"
-#: editor/editor_data.cpp editor/inspector_dock.cpp
+#: editor/editor_data.cpp
msgid "Paste Params"
msgstr "è²¼ä¸Šåƒæ•¸"
@@ -1527,7 +1574,7 @@ msgstr "正在儲存變更..."
msgid "Updating scene..."
msgstr "正在更新場景…"
-#: editor/editor_data.cpp editor/editor_properties.cpp
+#: editor/editor_data.cpp editor/editor_resource_picker.cpp
msgid "[empty]"
msgstr "[空]"
@@ -1678,8 +1725,49 @@ msgid "Import Dock"
msgstr "匯入åœé§åˆ—"
#: editor/editor_feature_profile.cpp
-msgid "Erase profile '%s'? (no undo)"
-msgstr "ç¢ºå®šè¦æ¸…除設定檔「%sã€å—Žï¼Ÿï¼ˆç„¡æ³•復原)"
+msgid "Allows to view and edit 3D scenes."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to edit scripts using the integrated script editor."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Provides built-in access to the Asset Library."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows editing the node hierarchy in the Scene dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to work with signals and groups of the node selected in the Scene "
+"dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Allows to browse the local file system via a dedicated dock."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid ""
+"Allows to configure import settings for individual assets. Requires the "
+"FileSystem dock to function."
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+#, fuzzy
+msgid "(current)"
+msgstr "(目å‰ï¼‰"
+
+#: editor/editor_feature_profile.cpp
+msgid "(none)"
+msgstr ""
+
+#: editor/editor_feature_profile.cpp
+msgid "Remove currently selected profile, '%s'? Cannot be undone."
+msgstr ""
#: editor/editor_feature_profile.cpp
msgid "Profile must be a valid filename and must not contain '.'"
@@ -1710,15 +1798,18 @@ msgid "Enable Contextual Editor"
msgstr "啟用上下文編輯器"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Properties:"
-msgstr "啟用屬性:"
+#, fuzzy
+msgid "Class Properties:"
+msgstr "效能:"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Features:"
-msgstr "啟用功能:"
+#, fuzzy
+msgid "Main Features:"
+msgstr "功能"
#: editor/editor_feature_profile.cpp
-msgid "Enabled Classes:"
+#, fuzzy
+msgid "Nodes and Classes:"
msgstr "啟用類別:"
#: editor/editor_feature_profile.cpp
@@ -1736,25 +1827,34 @@ msgid "Error saving profile to path: '%s'."
msgstr "在下列路徑ä¿å­˜è¨­å®šæª”時發生錯誤:%s。"
#: editor/editor_feature_profile.cpp
-msgid "Unset"
-msgstr "未設定"
+#, fuzzy
+msgid "Reset to Default"
+msgstr "é‡è¨­ç‚ºé è¨­"
#: editor/editor_feature_profile.cpp
msgid "Current Profile:"
msgstr "ç›®å‰è¨­å®šæª”:"
#: editor/editor_feature_profile.cpp
-msgid "Make Current"
-msgstr "設為目å‰çš„"
+#, fuzzy
+msgid "Create Profile"
+msgstr "清除設定檔"
#: editor/editor_feature_profile.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/version_control_editor_plugin.cpp
-msgid "New"
-msgstr "新增"
+#, fuzzy
+msgid "Remove Profile"
+msgstr "移除圖塊"
+
+#: editor/editor_feature_profile.cpp
+msgid "Available Profiles:"
+msgstr "å¯ç”¨è¨­å®šæª”:"
+
+#: editor/editor_feature_profile.cpp
+msgid "Make Current"
+msgstr "設為目å‰çš„"
#: editor/editor_feature_profile.cpp editor/editor_node.cpp
-#: editor/project_manager.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
msgid "Import"
msgstr "匯入"
@@ -1763,20 +1863,22 @@ msgid "Export"
msgstr "匯出"
#: editor/editor_feature_profile.cpp
-msgid "Available Profiles:"
-msgstr "å¯ç”¨è¨­å®šæª”:"
+#, fuzzy
+msgid "Configure Selected Profile:"
+msgstr "ç›®å‰è¨­å®šæª”:"
#: editor/editor_feature_profile.cpp
-msgid "Class Options"
-msgstr "類別é¸é …"
+#, fuzzy
+msgid "Extra Options:"
+msgstr "類別é¸é …:"
#: editor/editor_feature_profile.cpp
-msgid "New profile name:"
-msgstr "新增設定檔å稱:"
+msgid "Create or import a profile to edit available classes and properties."
+msgstr ""
#: editor/editor_feature_profile.cpp
-msgid "Erase Profile"
-msgstr "清除設定檔"
+msgid "New profile name:"
+msgstr "新增設定檔å稱:"
#: editor/editor_feature_profile.cpp
msgid "Godot Feature Profile"
@@ -1799,7 +1901,8 @@ msgid "Select Current Folder"
msgstr "鏿“‡ç›®å‰è³‡æ–™å¤¾"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "File Exists, Overwrite?"
+#, fuzzy
+msgid "File exists, overwrite?"
msgstr "檔案已存在,是å¦è¦†è“‹ï¼Ÿ"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
@@ -1853,9 +1956,10 @@ msgid "Open a File or Directory"
msgstr "開啟檔案或資料夾"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
-#: editor/editor_properties.cpp editor/import_defaults_editor.cpp
+#: editor/editor_resource_picker.cpp editor/import_defaults_editor.cpp
#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
msgstr "ä¿å­˜"
@@ -1936,8 +2040,7 @@ msgid "Directories & Files:"
msgstr "資料夾與檔案:"
#: editor/editor_file_dialog.cpp editor/plugins/sprite_editor_plugin.cpp
-#: editor/plugins/style_box_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
+#: editor/plugins/style_box_editor_plugin.cpp editor/rename_dialog.cpp
msgid "Preview:"
msgstr "é è¦½ï¼š"
@@ -2008,7 +2111,7 @@ msgstr "主題屬性"
msgid "Enumerations"
msgstr "列舉類型"
-#: editor/editor_help.cpp
+#: editor/editor_help.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constants"
msgstr "常數"
@@ -2095,7 +2198,7 @@ msgstr "方法"
msgid "Signal"
msgstr "訊號"
-#: editor/editor_help_search.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/editor_help_search.cpp
msgid "Constant"
msgstr "常數"
@@ -2111,9 +2214,10 @@ msgstr "主題屬性"
msgid "Property:"
msgstr "屬性:"
-#: editor/editor_inspector.cpp
-msgid "Set"
-msgstr "設定"
+#: editor/editor_inspector.cpp editor/scene_tree_dock.cpp
+#: modules/visual_script/visual_script_property_selector.cpp
+msgid "Set %s"
+msgstr "設定 %s"
#: editor/editor_inspector.cpp
msgid "Set Multiple:"
@@ -2128,7 +2232,7 @@ msgid "Copy Selection"
msgstr "複製所é¸"
#: editor/editor_log.cpp editor/editor_network_profiler.cpp
-#: editor/editor_profiler.cpp editor/editor_properties.cpp
+#: editor/editor_profiler.cpp editor/editor_resource_picker.cpp
#: editor/plugins/animation_tree_player_editor_plugin.cpp
#: editor/property_editor.cpp editor/scene_tree_dock.cpp
#: editor/script_editor_debugger.cpp
@@ -2192,7 +2296,8 @@ msgid "Imported resources can't be saved."
msgstr "匯入的資æºç„¡æ³•ä¿å­˜ã€‚"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: scene/gui/dialogs.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp scene/gui/dialogs.cpp
msgid "OK"
msgstr "好"
@@ -2401,18 +2506,23 @@ msgid "Save changes to '%s' before closing?"
msgstr "é—œé–‰å‰æ˜¯å¦ä¿å­˜å°ã€Œ%sã€çš„æ›´æ”¹ï¼Ÿ"
#: editor/editor_node.cpp
-msgid "Saved %s modified resource(s)."
-msgstr "å·²ä¿å­˜ %s 個已修改的資æºã€‚"
+msgid ""
+"The current scene has no root node, but %d modified external resource(s) "
+"were saved anyway."
+msgstr ""
#: editor/editor_node.cpp
-msgid "A root node is required to save the scene."
+#, fuzzy
+msgid ""
+"A root node is required to save the scene. You can add a root node using the "
+"Scene tree dock."
msgstr "必須有根節點æ‰å¯ä¿å­˜å ´æ™¯ã€‚"
#: editor/editor_node.cpp
msgid "Save Scene As..."
msgstr "å¦å­˜å ´æ™¯ç‚ºâ€¦"
-#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "This operation can't be done without a scene."
msgstr "å¿…é ˆè¦æœ‰å ´æ™¯æ‰å¯å®Œæˆè©²æ“作。"
@@ -2595,7 +2705,7 @@ msgstr "刪除é…ç½®"
msgid "Default"
msgstr "é è¨­"
-#: editor/editor_node.cpp editor/editor_properties.cpp
+#: editor/editor_node.cpp editor/editor_resource_picker.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "Show in FileSystem"
msgstr "在檔案系統中顯示"
@@ -2776,6 +2886,11 @@ msgid "Orphan Resource Explorer..."
msgstr "孤立資æºç€è¦½å™¨..."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Reload Current Project"
+msgstr "釿–°å‘½åé …ç›®"
+
+#: editor/editor_node.cpp
msgid "Quit to Project List"
msgstr "退出到專案列表"
@@ -2920,20 +3035,24 @@ msgstr "管ç†åŒ¯å‡ºæ¨£æ¿..."
msgid "Help"
msgstr "說明"
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/shader_editor_plugin.cpp
-msgid "Online Docs"
-msgstr "線上說明文件"
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Online Documentation"
+msgstr "開啟說明文件"
#: editor/editor_node.cpp
-msgid "Q&A"
-msgstr "Q&A"
+msgid "Questions & Answers"
+msgstr ""
#: editor/editor_node.cpp
msgid "Report a Bug"
msgstr "回報錯誤"
#: editor/editor_node.cpp
+msgid "Suggest a Feature"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Send Docs Feedback"
msgstr "傳é€èªªæ˜Žæ–‡ä»¶å›žé¥‹"
@@ -2942,7 +3061,8 @@ msgid "Community"
msgstr "社群"
#: editor/editor_node.cpp
-msgid "About"
+#, fuzzy
+msgid "About Godot"
msgstr "關於"
#: editor/editor_node.cpp
@@ -3039,6 +3159,16 @@ msgid "Manage Templates"
msgstr "ç®¡ç†æ¨£æ¿"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Install from file"
+msgstr "自檔案安è£"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select android sources file"
+msgstr "鏿“‡ä¾†æºç¶²æ ¼ï¼š"
+
+#: editor/editor_node.cpp
msgid ""
"This will set up your project for custom Android builds by installing the "
"source template to \"res://android/build\".\n"
@@ -3073,7 +3203,7 @@ msgstr "自 ZIP 檔匯入樣æ¿"
msgid "Template Package"
msgstr "樣æ¿åŒ…"
-#: editor/editor_node.cpp
+#: editor/editor_node.cpp modules/gltf/editor_scene_exporter_gltf_plugin.cpp
msgid "Export Library"
msgstr "匯出函å¼åº«"
@@ -3116,6 +3246,11 @@ msgid "Select"
msgstr "鏿“‡"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Select Current"
+msgstr "鏿“‡ç›®å‰è³‡æ–™å¤¾"
+
+#: editor/editor_node.cpp
msgid "Open 2D Editor"
msgstr "開啟 2D 編輯器"
@@ -3147,6 +3282,11 @@ msgstr "警告ï¼"
msgid "No sub-resources found."
msgstr "未找到å­è³‡æºã€‚"
+#: editor/editor_path.cpp
+#, fuzzy
+msgid "Open a list of sub-resources."
+msgstr "未找到å­è³‡æºã€‚"
+
#: editor/editor_plugin.cpp
msgid "Creating Mesh Previews"
msgstr "建立網格é è¦½"
@@ -3171,33 +3311,34 @@ msgstr "已安è£çš„外掛:"
msgid "Update"
msgstr "æ›´æ–°"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Version:"
+#: editor/editor_plugin_settings.cpp
+#, fuzzy
+msgid "Version"
msgstr "版本:"
-#: editor/editor_plugin_settings.cpp editor/plugin_config_dialog.cpp
-msgid "Author:"
-msgstr "作者:"
-
#: editor/editor_plugin_settings.cpp
-msgid "Status:"
-msgstr "狀態:"
+#, fuzzy
+msgid "Author"
+msgstr "作者"
#: editor/editor_plugin_settings.cpp
-msgid "Edit:"
-msgstr "編輯:"
+#: editor/plugins/version_control_editor_plugin.cpp
+#: modules/gdnative/gdnative_library_singleton_editor.cpp
+msgid "Status"
+msgstr "狀態"
#: editor/editor_profiler.cpp
msgid "Measure:"
msgstr "測é‡ï¼š"
#: editor/editor_profiler.cpp
-msgid "Frame Time (sec)"
+#, fuzzy
+msgid "Frame Time (ms)"
msgstr "影格長度 (秒)"
#: editor/editor_profiler.cpp
-msgid "Average Time (sec)"
+#, fuzzy
+msgid "Average Time (ms)"
msgstr "平凿™‚é–“ (ç§’)"
#: editor/editor_profiler.cpp
@@ -3217,6 +3358,16 @@ msgid "Self"
msgstr "僅自己"
#: editor/editor_profiler.cpp
+msgid ""
+"Inclusive: Includes time from other functions called by this function.\n"
+"Use this to spot bottlenecks.\n"
+"\n"
+"Self: Only count the time spent in the function itself, not in other "
+"functions called by that function.\n"
+"Use this to find individual functions to optimize."
+msgstr ""
+
+#: editor/editor_profiler.cpp
msgid "Frame #:"
msgstr "å¹€ #:"
@@ -3258,12 +3409,6 @@ msgstr "無效的 RID"
#: editor/editor_properties.cpp
msgid ""
-"The selected resource (%s) does not match any type expected for this "
-"property (%s)."
-msgstr "所é¸è³‡æºï¼ˆ%s)ä¸ç¬¦åˆä»»è©²å±¬æ€§ï¼ˆ%s)的任何型別。"
-
-#: editor/editor_properties.cpp
-msgid ""
"Can't create a ViewportTexture on resources saved as a file.\n"
"Resource needs to belong to a scene."
msgstr ""
@@ -3285,40 +3430,6 @@ msgid "Pick a Viewport"
msgstr "鏿“‡ Viewport"
#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New Script"
-msgstr "新增腳本"
-
-#: editor/editor_properties.cpp editor/scene_tree_dock.cpp
-msgid "Extend Script"
-msgstr "擴充腳本"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "New %s"
-msgstr "新增 %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Make Unique"
-msgstr "ç¨ç«‹åŒ–"
-
-#: editor/editor_properties.cpp
-#: editor/plugins/animation_blend_space_1d_editor.cpp
-#: editor/plugins/animation_blend_space_2d_editor.cpp
-#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/animation_state_machine_editor.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
-#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
-msgid "Paste"
-msgstr "貼上"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
-msgid "Convert To %s"
-msgstr "轉æ›ç‚º %s"
-
-#: editor/editor_properties.cpp editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
msgstr "所é¸ç¯€é»žä¸¦éž Viewportï¼"
@@ -3347,6 +3458,47 @@ msgstr "新增數值:"
msgid "Add Key/Value Pair"
msgstr "新增索引éµï¼å€¼çµ„"
+#: editor/editor_resource_picker.cpp
+msgid ""
+"The selected resource (%s) does not match any type expected for this "
+"property (%s)."
+msgstr "所é¸è³‡æºï¼ˆ%s)ä¸ç¬¦åˆä»»è©²å±¬æ€§ï¼ˆ%s)的任何型別。"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "ç¨ç«‹åŒ–"
+
+#: editor/editor_resource_picker.cpp
+#: editor/plugins/animation_blend_space_1d_editor.cpp
+#: editor/plugins/animation_blend_space_2d_editor.cpp
+#: editor/plugins/animation_blend_tree_editor_plugin.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/animation_state_machine_editor.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+#: editor/plugins/tile_map_editor_plugin.cpp editor/property_editor.cpp
+#: editor/scene_tree_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr "貼上"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+#, fuzzy
+msgid "Convert to %s"
+msgstr "轉æ›ç‚º %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New %s"
+msgstr "新增 %s"
+
+#: editor/editor_resource_picker.cpp editor/property_editor.cpp
+msgid "New Script"
+msgstr "新增腳本"
+
+#: editor/editor_resource_picker.cpp editor/scene_tree_dock.cpp
+msgid "Extend Script"
+msgstr "擴充腳本"
+
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
@@ -3381,7 +3533,8 @@ msgid "Did you forget the '_run' method?"
msgstr "æ˜¯å¦æœªæ–°å¢žã€Œ_runã€æ–¹æ³•?"
#: editor/editor_spin_slider.cpp
-msgid "Hold Ctrl to round to integers. Hold Shift for more precise changes."
+#, fuzzy
+msgid "Hold %s to round to integers. Hold Shift for more precise changes."
msgstr "æŒ‰ä½ Ctrl 以喿•´æ•¸ã€‚æŒ‰ä½ Shift 以進行更精確的改動。"
#: editor/editor_sub_scene.cpp
@@ -3401,111 +3554,69 @@ msgid "Import From Node:"
msgstr "自節點中匯入:"
#: editor/export_template_manager.cpp
-msgid "Redownload"
-msgstr "釿–°ä¸‹è¼‰"
-
-#: editor/export_template_manager.cpp
-msgid "Uninstall"
-msgstr "å–æ¶ˆå®‰è£"
-
-#: editor/export_template_manager.cpp
-msgid "(Installed)"
-msgstr "(已安è£ï¼‰"
-
-#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Download"
-msgstr "下載"
-
-#: editor/export_template_manager.cpp
-msgid "Official export templates aren't available for development builds."
-msgstr "開發建置 (Development Build) 下無法使用官方匯出樣æ¿ã€‚"
+msgid "Open the folder containing these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Missing)"
-msgstr "(éºå¤±ï¼‰"
+msgid "Uninstall these templates."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "(Current)"
-msgstr "(目å‰ï¼‰"
+#, fuzzy
+msgid "There are no mirrors available."
+msgstr "檔案「%sã€ä¸å­˜åœ¨ã€‚"
#: editor/export_template_manager.cpp
-msgid "Retrieving mirrors, please wait..."
+#, fuzzy
+msgid "Retrieving the mirror list..."
msgstr "正在å–å¾—é¡åƒï¼Œè«‹ç¨å¾Œ..."
#: editor/export_template_manager.cpp
-msgid "Remove template version '%s'?"
-msgstr "是å¦åˆªé™¤æ¨£æ¿ç‰ˆæœ¬ã€Œ%sã€ï¼Ÿ"
-
-#: editor/export_template_manager.cpp
-msgid "Can't open export templates zip."
-msgstr "ç„¡æ³•é–‹å•ŸåŒ¯å‡ºæ¨£æ¿ ZIP 檔。"
-
-#: editor/export_template_manager.cpp
-msgid "Invalid version.txt format inside templates: %s."
-msgstr "æ¨£æ¿ %s 中的 version.txt æ ¼å¼ç„¡æ•ˆã€‚"
-
-#: editor/export_template_manager.cpp
-msgid "No version.txt found inside templates."
-msgstr "樣æ¿ä¸­æœªæ‰¾åˆ° version.txt。"
-
-#: editor/export_template_manager.cpp
-msgid "Error creating path for templates:"
-msgstr "為樣æ¿å»ºç«‹è·¯å¾‘時發生錯誤:"
-
-#: editor/export_template_manager.cpp
-msgid "Extracting Export Templates"
-msgstr "正在解壓縮匯出樣æ¿"
-
-#: editor/export_template_manager.cpp
-msgid "Importing:"
-msgstr "正在匯入:"
+msgid "Starting the download..."
+msgstr ""
#: editor/export_template_manager.cpp
-msgid "Error getting the list of mirrors."
-msgstr "å–å¾—é¡åƒåˆ—表時發生錯誤。"
+msgid "Error requesting URL:"
+msgstr "請求 URL 時發生錯誤:"
#: editor/export_template_manager.cpp
-msgid "Error parsing JSON of mirror list. Please report this issue!"
-msgstr "è§£æžé¡åƒåˆ—表的 JSON 時發生錯誤。請回報此å•題ï¼"
+#, fuzzy
+msgid "Connecting to the mirror..."
+msgstr "正在連線到é¡åƒ..."
#: editor/export_template_manager.cpp
-msgid ""
-"No download links found for this version. Direct download is only available "
-"for official releases."
-msgstr "æœªæ‰¾åˆ°è©²ç‰ˆæœ¬çš„ä¸‹è¼‰éˆæŽ¥ã€‚ç›´æŽ¥ä¸‹è¼‰åƒ…é©ç”¨æ–¼æ­£å¼ç™¼è¡Œç‰ˆæœ¬ã€‚"
+#, fuzzy
+msgid "Can't resolve the requested address."
+msgstr "無法解æžä¸»æ©Ÿå稱:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "無法解æžã€‚"
+#, fuzzy
+msgid "Can't connect to the mirror."
+msgstr "無法連線至主機:"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "無法連線。"
+#, fuzzy
+msgid "No response from the mirror."
+msgstr "主機沒有回應:"
#: editor/export_template_manager.cpp
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "沒有回應。"
-
-#: editor/export_template_manager.cpp
-msgid "Request Failed."
-msgstr "請求失敗。"
+msgid "Request failed."
+msgstr "è¦æ±‚失敗。"
#: editor/export_template_manager.cpp
-msgid "Redirect Loop."
-msgstr "釿–°å°Žå‘循環。"
+#, fuzzy
+msgid "Request ended up in a redirect loop."
+msgstr "è¦æ±‚失敗,éŽå¤šé‡æ–°å°Žå‘"
#: editor/export_template_manager.cpp
-#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "失敗:"
+#, fuzzy
+msgid "Request failed:"
+msgstr "è¦æ±‚失敗。"
#: editor/export_template_manager.cpp
-msgid "Download Complete."
-msgstr "下載完æˆã€‚"
+msgid "Download complete; extracting templates..."
+msgstr ""
#: editor/export_template_manager.cpp
msgid "Cannot remove temporary file:"
@@ -3520,12 +3631,23 @@ msgstr ""
"發生å•é¡Œä¹‹æ¨£æ¿æª”案存放於「%sã€ã€‚"
#: editor/export_template_manager.cpp
-msgid "Error requesting URL:"
-msgstr "請求 URL 時發生錯誤:"
+msgid "Error getting the list of mirrors."
+msgstr "å–å¾—é¡åƒåˆ—表時發生錯誤。"
#: editor/export_template_manager.cpp
-msgid "Connecting to Mirror..."
-msgstr "正在連線到é¡åƒ..."
+#, fuzzy
+msgid "Error parsing JSON with the list of mirrors. Please report this issue!"
+msgstr "è§£æžé¡åƒåˆ—表的 JSON 時發生錯誤。請回報此å•題ï¼"
+
+#: editor/export_template_manager.cpp
+msgid "Best available mirror"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"No download links found for this version. Direct download is only available "
+"for official releases."
+msgstr "æœªæ‰¾åˆ°è©²ç‰ˆæœ¬çš„ä¸‹è¼‰éˆæŽ¥ã€‚ç›´æŽ¥ä¸‹è¼‰åƒ…é©ç”¨æ–¼æ­£å¼ç™¼è¡Œç‰ˆæœ¬ã€‚"
#: editor/export_template_manager.cpp
msgid "Disconnected"
@@ -3570,44 +3692,138 @@ msgid "SSL Handshake Error"
msgstr "SSL 交æ¡éŒ¯èª¤"
#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Can't open the export templates file."
+msgstr "ç„¡æ³•é–‹å•ŸåŒ¯å‡ºæ¨£æ¿ ZIP 檔。"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Invalid version.txt format inside the export templates file: %s."
+msgstr "æ¨£æ¿ %s 中的 version.txt æ ¼å¼ç„¡æ•ˆã€‚"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "No version.txt found inside the export templates file."
+msgstr "樣æ¿ä¸­æœªæ‰¾åˆ° version.txt。"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Error creating path for extracting templates:"
+msgstr "為樣æ¿å»ºç«‹è·¯å¾‘時發生錯誤:"
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr "正在解壓縮匯出樣æ¿"
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr "正在匯入:"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Remove templates for the version '%s'?"
+msgstr "是å¦åˆªé™¤æ¨£æ¿ç‰ˆæœ¬ã€Œ%sã€ï¼Ÿ"
+
+#: editor/export_template_manager.cpp
msgid "Uncompressing Android Build Sources"
msgstr "正在解壓縮 Android 建置來æº"
#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr "匯出樣æ¿ç®¡ç†å“¡"
+
+#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "ç›®å‰ç‰ˆæœ¬ï¼š"
#: editor/export_template_manager.cpp
-msgid "Installed Versions:"
-msgstr "已安è£ç‰ˆæœ¬ï¼š"
+msgid "Export templates are missing. Download them or install from a file."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export templates are installed and ready to be used."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Open Folder"
+msgstr "開啟檔案"
#: editor/export_template_manager.cpp
-msgid "Install From File"
+msgid "Open the folder containing installed templates for the current version."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr "å–æ¶ˆå®‰è£"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Uninstall templates for the current version."
+msgstr "計數器起始值"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Download from:"
+msgstr "下載錯誤"
+
+#: editor/export_template_manager.cpp
+msgid "Download and Install"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Download and install templates for the current version from the best "
+"possible mirror."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Official export templates aren't available for development builds."
+msgstr "開發建置 (Development Build) 下無法使用官方匯出樣æ¿ã€‚"
+
+#: editor/export_template_manager.cpp
+#, fuzzy
+msgid "Install from File"
msgstr "自檔案安è£"
#: editor/export_template_manager.cpp
-msgid "Remove Template"
-msgstr "移除樣æ¿"
+#, fuzzy
+msgid "Install templates from a local file."
+msgstr "自 ZIP 檔匯入樣æ¿"
+
+#: editor/export_template_manager.cpp editor/find_in_files.cpp
+#: editor/progress_dialog.cpp scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "å–æ¶ˆ"
#: editor/export_template_manager.cpp
-msgid "Select Template File"
-msgstr "鏿“‡æ¨£æ¿æª”案"
+#, fuzzy
+msgid "Cancel the download of the templates."
+msgstr "ç„¡æ³•é–‹å•ŸåŒ¯å‡ºæ¨£æ¿ ZIP 檔。"
#: editor/export_template_manager.cpp
-msgid "Godot Export Templates"
-msgstr "Godot 匯出樣æ¿"
+#, fuzzy
+msgid "Other Installed Versions:"
+msgstr "已安è£ç‰ˆæœ¬ï¼š"
#: editor/export_template_manager.cpp
-msgid "Export Template Manager"
-msgstr "匯出樣æ¿ç®¡ç†å“¡"
+#, fuzzy
+msgid "Uninstall Template"
+msgstr "å–æ¶ˆå®‰è£"
+
+#: editor/export_template_manager.cpp
+msgid "Select Template File"
+msgstr "鏿“‡æ¨£æ¿æª”案"
#: editor/export_template_manager.cpp
-msgid "Download Templates"
-msgstr "下載樣æ¿"
+msgid "Godot Export Templates"
+msgstr "Godot 匯出樣æ¿"
#: editor/export_template_manager.cpp
-msgid "Select mirror from list: (Shift+Click: Open in Browser)"
-msgstr "è‡ªåˆ—è¡¨ä¸­é¸æ“‡é¡åƒï¼šï¼ˆShift+點擊:在ç€è¦½å™¨ä¸­é–‹å•Ÿï¼‰"
+msgid ""
+"The templates will continue to download.\n"
+"You may experience a short editor freeze when they finish."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Favorites"
@@ -3737,29 +3953,62 @@ msgstr "新增腳本..."
msgid "New Resource..."
msgstr "新增資æº..."
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Expand All"
msgstr "展開全部"
-#: editor/filesystem_dock.cpp editor/plugins/visual_shader_editor_plugin.cpp
+#: editor/filesystem_dock.cpp editor/inspector_dock.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/script_editor_debugger.cpp
msgid "Collapse All"
msgstr "æ”¶åˆå…¨éƒ¨"
#: editor/filesystem_dock.cpp
-msgid "Duplicate..."
-msgstr "é‡è¤‡..."
+#, fuzzy
+msgid "Sort files"
+msgstr "æœå°‹æª”案"
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Name (Ascending)"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move to Trash"
-msgstr "移動至資æºå›žæ”¶æ¡¶"
+msgid "Sort by Name (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Ascending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Sort by Type (Descending)"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by Last Modified"
+msgstr "最後修改時間"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Sort by First Modified"
+msgstr "最後修改時間"
+
+#: editor/filesystem_dock.cpp
+msgid "Duplicate..."
+msgstr "é‡è¤‡..."
#: editor/filesystem_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
msgid "Rename..."
msgstr "釿–°å‘½å..."
#: editor/filesystem_dock.cpp
+msgid "Focus the search box"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid "Previous Folder/File"
msgstr "ä¸Šä¸€å€‹è³‡æ–™å¤¾ï¼æª”案"
@@ -3841,10 +4090,6 @@ msgstr "æœå°‹..."
msgid "Replace..."
msgstr "å–代..."
-#: editor/find_in_files.cpp editor/progress_dialog.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "å–æ¶ˆ"
-
#: editor/find_in_files.cpp
msgid "Find: "
msgstr "æœå°‹ï¼š "
@@ -4065,53 +4310,55 @@ msgid "Failed to load resource."
msgstr "加載資æºå¤±æ•—。"
#: editor/inspector_dock.cpp
-msgid "Expand All Properties"
-msgstr "展開所有屬性"
+#, fuzzy
+msgid "Copy Properties"
+msgstr "屬性"
#: editor/inspector_dock.cpp
-msgid "Collapse All Properties"
-msgstr "æ”¶åˆæ‰€æœ‰å±¬æ€§"
-
-#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Save As..."
-msgstr "å¦å­˜ç‚º..."
+#, fuzzy
+msgid "Paste Properties"
+msgstr "屬性"
#: editor/inspector_dock.cpp
-msgid "Copy Params"
-msgstr "è¤‡è£½åƒæ•¸"
+msgid "Make Sub-Resources Unique"
+msgstr "ç¨ç«‹åŒ–å­è³‡æº"
#: editor/inspector_dock.cpp
-msgid "Edit Resource Clipboard"
-msgstr "編輯資æºå‰ªè²¼ç°¿"
+msgid "Create a new resource in memory and edit it."
+msgstr "在記憶體中建立新資æºä¸¦ç·¨è¼¯ã€‚"
#: editor/inspector_dock.cpp
-msgid "Copy Resource"
-msgstr "複製資æº"
+msgid "Load an existing resource from disk and edit it."
+msgstr "從ç£ç¢Ÿä¸­è¼‰å…¥ç¾æœ‰çš„資æºä¸¦ç·¨è¼¯ã€‚"
#: editor/inspector_dock.cpp
-msgid "Make Built-In"
-msgstr "轉為內建"
+msgid "Save the currently edited resource."
+msgstr "ä¿å­˜ç›®å‰ç·¨è¼¯çš„資æºã€‚"
-#: editor/inspector_dock.cpp
-msgid "Make Sub-Resources Unique"
-msgstr "ç¨ç«‹åŒ–å­è³‡æº"
+#: editor/inspector_dock.cpp editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Save As..."
+msgstr "å¦å­˜ç‚º..."
#: editor/inspector_dock.cpp
-msgid "Open in Help"
-msgstr "在說明中開啟"
+#, fuzzy
+msgid "Extra resource options."
+msgstr "ä¸åœ¨è³‡æºè·¯å¾‘中。"
#: editor/inspector_dock.cpp
-msgid "Create a new resource in memory and edit it."
-msgstr "在記憶體中建立新資æºä¸¦ç·¨è¼¯ã€‚"
+#, fuzzy
+msgid "Edit Resource from Clipboard"
+msgstr "編輯資æºå‰ªè²¼ç°¿"
#: editor/inspector_dock.cpp
-msgid "Load an existing resource from disk and edit it."
-msgstr "從ç£ç¢Ÿä¸­è¼‰å…¥ç¾æœ‰çš„資æºä¸¦ç·¨è¼¯ã€‚"
+msgid "Copy Resource"
+msgstr "複製資æº"
#: editor/inspector_dock.cpp
-msgid "Save the currently edited resource."
-msgstr "ä¿å­˜ç›®å‰ç·¨è¼¯çš„資æºã€‚"
+#, fuzzy
+msgid "Make Resource Built-In"
+msgstr "轉為內建"
#: editor/inspector_dock.cpp
msgid "Go to the previous edited object in history."
@@ -4126,14 +4373,24 @@ msgid "History of recently edited objects."
msgstr "最近編輯的物件歷å²è¨˜éŒ„。"
#: editor/inspector_dock.cpp
-msgid "Object properties."
-msgstr "物件屬性。"
+#, fuzzy
+msgid "Open documentation for this object."
+msgstr "開啟說明文件"
+
+#: editor/inspector_dock.cpp editor/scene_tree_dock.cpp
+msgid "Open Documentation"
+msgstr "開啟說明文件"
#: editor/inspector_dock.cpp
msgid "Filter properties"
msgstr "篩é¸å±¬æ€§"
#: editor/inspector_dock.cpp
+#, fuzzy
+msgid "Manage object properties."
+msgstr "物件屬性。"
+
+#: editor/inspector_dock.cpp
msgid "Changes may be lost!"
msgstr "改動å¯èƒ½æœƒéºå¤±ï¼"
@@ -4161,6 +4418,15 @@ msgstr "外掛å稱:"
msgid "Subfolder:"
msgstr "å­è³‡æ–™å¤¾ï¼š"
+#: editor/plugin_config_dialog.cpp
+msgid "Author:"
+msgstr "作者:"
+
+#: editor/plugin_config_dialog.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "版本:"
+
#: editor/plugin_config_dialog.cpp editor/script_create_dialog.cpp
msgid "Language:"
msgstr "語言:"
@@ -4365,7 +4631,8 @@ msgid "Blend:"
msgstr "æ··åˆï¼š"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
-msgid "Parameter Changed"
+#, fuzzy
+msgid "Parameter Changed:"
msgstr "å·²æ›´æ”¹åƒæ•¸"
#: editor/plugins/animation_blend_tree_editor_plugin.cpp
@@ -4579,6 +4846,11 @@ msgid "Animation"
msgstr "å‹•ç•«"
#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/version_control_editor_plugin.cpp
+msgid "New"
+msgstr "新增"
+
+#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Edit Transitions..."
msgstr "編輯轉場..."
@@ -4918,10 +5190,18 @@ msgid "View Files"
msgstr "檢視檔案"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download"
+msgstr "下載"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Connection error, please try again."
msgstr "連線錯誤,請é‡è©¦ã€‚"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "無法連線。"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't connect to host:"
msgstr "無法連線至主機:"
@@ -4930,16 +5210,20 @@ msgid "No response from host:"
msgstr "主機沒有回應:"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "沒有回應。"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Can't resolve hostname:"
msgstr "無法解æžä¸»æ©Ÿå稱:"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "è¦æ±‚失敗,回傳代碼:"
+msgid "Can't resolve."
+msgstr "無法解æžã€‚"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "Request failed."
-msgstr "è¦æ±‚失敗。"
+msgid "Request failed, return code:"
+msgstr "è¦æ±‚失敗,回傳代碼:"
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Cannot save response to:"
@@ -4966,6 +5250,10 @@ msgid "Timeout."
msgstr "逾時。"
#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "失敗:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Bad download hash, assuming file has been tampered with."
msgstr "下載雜湊錯誤,檔案å¯èƒ½è¢«ç¯¡æ”¹ã€‚"
@@ -5066,8 +5354,12 @@ msgid "All"
msgstr "全部"
#: editor/plugins/asset_library_editor_plugin.cpp
-msgid "No results for \"%s\"."
-msgstr "找ä¸åˆ°èˆ‡ã€Œ%sã€ç›¸é—œçš„çµæžœã€‚"
+msgid "Search templates, projects, and demos"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Search assets (excluding templates, projects, and demos)"
+msgstr ""
#: editor/plugins/asset_library_editor_plugin.cpp
msgid "Import..."
@@ -5109,6 +5401,10 @@ msgstr "正在載入..."
msgid "Assets ZIP File"
msgstr "ç´ æ ZIP 檔"
+#: editor/plugins/audio_stream_editor_plugin.cpp
+msgid "Audio Preview Play/Pause"
+msgstr ""
+
#: editor/plugins/baked_lightmap_editor_plugin.cpp
msgid ""
"Can't determine a save path for lightmap images.\n"
@@ -5118,9 +5414,10 @@ msgstr ""
"è«‹ä¿å­˜å ´æ™¯ä¸¦é‡è©¦ã€‚"
#: editor/plugins/baked_lightmap_editor_plugin.cpp
+#, fuzzy
msgid ""
-"No meshes to bake. Make sure they contain an UV2 channel and that the 'Bake "
-"Light' flag is on."
+"No meshes to bake. Make sure they contain an UV2 channel and that the 'Use "
+"In Baked Light' and 'Generate Lightmap' flags are on."
msgstr ""
"ç„¡å¯çƒ˜ç„™ä¹‹ç¶²æ ¼ã€‚請確ä¿é€™äº›ç¶²æ ¼åŒ…å« UV2 通é“並已開啟「Bake Lightã€æ——標。"
@@ -5356,9 +5653,10 @@ msgstr "修改錨點"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid ""
-"Game Camera Override\n"
-"Overrides game camera with editor viewport camera."
+"Project Camera Override\n"
+"Overrides the running project's camera with the editor viewport camera."
msgstr ""
"éŠæˆ²ç›¸æ©Ÿè¤‡å¯«\n"
"以檢視å€ç›¸æ©Ÿå–ä»£éŠæˆ²ç›¸æ©Ÿã€‚"
@@ -5366,11 +5664,10 @@ msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
msgid ""
-"Game Camera Override\n"
-"No game instance running."
+"Project Camera Override\n"
+"No project instance running. Run the project from the editor to use this "
+"feature."
msgstr ""
-"éŠæˆ²ç›¸æ©Ÿè¤‡å¯«\n"
-"ç„¡æ­£åœ¨åŸ·è¡Œçš„éŠæˆ²å¯¦é«”。"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5423,6 +5720,7 @@ msgid ""
msgstr "警告:容器å­é …目之ä½ç½®èˆ‡å¤§å°ç”±å…¶æ¯é …目決定。"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
#: editor/plugins/texture_region_editor_plugin.cpp
#: editor/plugins/tile_set_editor_plugin.cpp scene/gui/graph_edit.cpp
msgid "Zoom Reset"
@@ -5434,20 +5732,32 @@ msgid "Select Mode"
msgstr "鏿“‡æ¨¡å¼"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Drag: Rotate"
-msgstr "拖移:旋轉"
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Drag: Rotate selected node around pivot."
+msgstr "移除所é¸çš„節點或轉場。"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+Drag: Move"
+#, fuzzy
+msgid "Alt+Drag: Move selected node."
msgstr "Alt+拖移:移動"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
-msgstr "按「vã€ä»¥ä¿®æ”¹æ¨žç´ï¼Œã€ŒShift+vã€ä»¥ç§»å‹•樞ç´ï¼ˆç§»å‹•時)。"
+#, fuzzy
+msgid "V: Set selected node's pivot position."
+msgstr "移除所é¸çš„節點或轉場。"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Alt+RMB: Show list of all nodes at position clicked, including locked."
+msgstr ""
+"顯示該點擊ä½ç½®æ‰€æœ‰ç‰©ä»¶çš„列表\n"
+"(åŒé¸æ“‡æ¨¡å¼ä¸­çš„ Alt+滑鼠å³éµï¼‰ã€‚"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Alt+RMB: Depth list selection"
-msgstr "Alt+滑鼠å³éµï¼šå±•é–‹æ‰€é¸æ¸…å–®"
+msgid "RMB: Add node at position clicked."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -5683,6 +5993,16 @@ msgid "Clear Pose"
msgstr "清除姿勢"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Add Node Here"
+msgstr "新增節點"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Instance Scene Here"
+msgstr "實體化場景"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Multiply grid step by 2"
msgstr "將網格步數乘以 2"
@@ -5695,6 +6015,52 @@ msgid "Pan View"
msgstr "平移檢視"
#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 3.125%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 6.25%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 12.5%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 25%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 50%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 100%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 200%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 400%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Zoom to 800%"
+msgstr "縮å°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Zoom to 1600%"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
msgstr "新增 %"
@@ -5937,6 +6303,11 @@ msgid "Couldn't create a single convex collision shape."
msgstr "無法建立單一凸碰撞形狀。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Shape"
+msgstr "建立單一凸é¢å½¢ç‹€"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Single Convex Shape"
msgstr "建立單一凸é¢å½¢ç‹€"
@@ -5969,7 +6340,8 @@ msgid "No mesh to debug."
msgstr "沒有å¯é€²è¡ŒåµéŒ¯ä¹‹ç¶²æ ¼ã€‚"
#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Model has no UV in this layer"
+#, fuzzy
+msgid "Mesh has no UV in layer %d."
msgstr "模型在該圖層上無 UV"
#: editor/plugins/mesh_instance_editor_plugin.cpp
@@ -6034,13 +6406,27 @@ msgstr ""
"å°æ–¼ç¢°æ’žåµæ¸¬ï¼Œè©²é¸é …為最快(但最ä¸ç²¾ç¢ºï¼‰çš„é¸é …。"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
+msgid "Create Simplified Convex Collision Sibling"
+msgstr "建立單一凸é¢ç¢°æ’žåŒç´š"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid ""
+"Creates a simplified convex collision shape.\n"
+"This is similar to single collision shape, but can result in a simpler "
+"geometry in some cases, at the cost of accuracy."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Multiple Convex Collision Siblings"
msgstr "建立碰撞多邊形åŒç´š"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+#, fuzzy
msgid ""
"Creates a polygon-based collision shape.\n"
-"This is a performance middle-ground between the two above options."
+"This is a performance middle-ground between a single convex collision and a "
+"polygon-based collision."
msgstr ""
"建立基於多邊形的碰撞å€åŸŸã€‚\n"
"é€™æ˜¯æ•ˆèƒ½ä½æ–¼ä¸Šé¢å…©å€‹æ–¹æ³•中間的é¸é …。"
@@ -6100,7 +6486,6 @@ msgid "Mesh Library"
msgstr "網格庫"
#: editor/plugins/mesh_library_editor_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Item"
msgstr "新增項目"
@@ -6372,7 +6757,8 @@ msgid "Close Curve"
msgstr "關閉曲線"
#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/path_editor_plugin.cpp editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_export.cpp
msgid "Options"
msgstr "é¸é …"
@@ -6678,6 +7064,26 @@ msgstr "載入資æº"
msgid "ResourcePreloader"
msgstr "ResourcePreloader"
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portals"
+msgstr "水平翻轉"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Room Generate Points"
+msgstr "已產生的頂點數é‡ï¼š"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Generate Points"
+msgstr "已產生的頂點數é‡ï¼š"
+
+#: editor/plugins/room_manager_editor_plugin.cpp
+#, fuzzy
+msgid "Flip Portal"
+msgstr "水平翻轉"
+
#: editor/plugins/root_motion_editor_plugin.cpp
msgid "AnimationTree has no path set to an AnimationPlayer"
msgstr "AnimationTree 未設定至 AnimationPlayer 的路徑"
@@ -6881,7 +7287,7 @@ msgstr "執行"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp editor/plugins/text_editor.cpp
-#: editor/plugins/visual_shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/plugins/visual_shader_editor_plugin.cpp
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Search"
msgstr "æœå°‹"
@@ -6912,6 +7318,11 @@ msgid "Debug with External Editor"
msgstr "使用外部編輯器進行除錯"
#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Online Docs"
+msgstr "線上說明文件"
+
+#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation."
msgstr "打開 Godot 線上說明文件。"
@@ -7036,8 +7447,8 @@ msgstr "跳至"
msgid "Cut"
msgstr "剪下"
-#: editor/plugins/script_text_editor.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/plugins/script_text_editor.cpp editor/plugins/theme_editor_plugin.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Select All"
msgstr "å…¨éƒ¨é¸æ“‡"
@@ -7070,10 +7481,6 @@ msgid "Unfold All Lines"
msgstr "展開所有行"
#: editor/plugins/script_text_editor.cpp
-msgid "Clone Down"
-msgstr "複製到下一行"
-
-#: editor/plugins/script_text_editor.cpp
msgid "Complete Symbol"
msgstr "補全符號"
@@ -7227,6 +7634,28 @@ msgid "View Plane Transform."
msgstr "檢視平é¢è½‰æ›ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
+#: editor/plugins/texture_region_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp scene/resources/visual_shader.cpp
+msgid "None"
+msgstr "ç„¡"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Rotate"
+msgstr "旋轉模å¼"
+
+#. TRANSLATORS: This refers to the movement that changes the position of an object.
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Translate"
+msgstr "移動:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Scale"
+msgstr "縮放:"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Scaling: "
msgstr "縮放: "
@@ -7247,42 +7676,54 @@ msgid "Animation Key Inserted."
msgstr "å·²æ’入動畫éµã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Pitch"
+#, fuzzy
+msgid "Pitch:"
msgstr "ä»°è§’"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Yaw"
-msgstr "å航"
+msgid "Yaw:"
+msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Size"
-msgstr "大å°"
+#, fuzzy
+msgid "Size:"
+msgstr "大å°ï¼š "
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Objects Drawn"
+#, fuzzy
+msgid "Objects Drawn:"
msgstr "繪製的物件"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Material Changes"
+#, fuzzy
+msgid "Material Changes:"
msgstr "æè³ªè®Šæ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Shader Changes"
+#, fuzzy
+msgid "Shader Changes:"
msgstr "著色器變更"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Surface Changes"
+#, fuzzy
+msgid "Surface Changes:"
msgstr "表é¢è®Šæ›´"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Draw Calls"
+#, fuzzy
+msgid "Draw Calls:"
msgstr "繪製呼å«"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Vertices"
+#, fuzzy
+msgid "Vertices:"
msgstr "頂點"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "FPS: %d (%s ms)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
msgstr "俯視圖。"
@@ -7435,6 +7876,11 @@ msgid "Freelook Slow Modifier"
msgstr "放慢自由視圖速度"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Toggle Camera Preview"
+msgstr "更改相機尺寸"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Rotation Locked"
msgstr "視圖旋轉已鎖定"
@@ -7452,6 +7898,11 @@ msgstr ""
"ç„¡æ³•å¯¦éš›åæ˜ ç‚ºéŠæˆ²ä¸­çš„æ•ˆèƒ½ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Convert Rooms"
+msgstr "轉æ›ç‚º %s"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm å°è©±æ¡†"
@@ -7470,7 +7921,8 @@ msgstr ""
"åŠé–‹çœ¼é¡ï¼šGizmo 也å¯ä»¥é€šéŽ Opaque Surface(「X-Ray - Xå…‰ã€ï¼‰å¯è¦‹ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Snap Nodes To Floor"
+#, fuzzy
+msgid "Snap Nodes to Floor"
msgstr "å¸é™„節點至地é¢"
#: editor/plugins/spatial_editor_plugin.cpp
@@ -7478,16 +7930,6 @@ msgid "Couldn't find a solid floor to snap the selection to."
msgstr "找ä¸åˆ°å¯å¸é™„所é¸é …ç›®çš„å …å›ºåœ°æ¿ (Solid Floor)。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid ""
-"Drag: Rotate\n"
-"Alt+Drag: Move\n"
-"Alt+RMB: Depth list selection"
-msgstr ""
-"拖移:旋轉\n"
-"Alt+拖移:移動\n"
-"Alt+å³éµé»žæ“Šï¼šå±•開鏿“‡åˆ—表"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Use Local Space"
msgstr "使用本機空間"
@@ -7496,6 +7938,10 @@ msgid "Use Snap"
msgstr "使用å¸é™„"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Converts rooms for portal culling."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View"
msgstr "仰視圖"
@@ -7589,6 +8035,11 @@ msgid "View Grid"
msgstr "顯示網格"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "View Portal Culling"
+msgstr "檢視å€è¨­å®š"
+
+#: editor/plugins/spatial_editor_plugin.cpp
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Settings..."
msgstr "設定..."
@@ -7878,11 +8329,6 @@ msgid "Snap Mode:"
msgstr "å¸é™„模å¼ï¼š"
#: editor/plugins/texture_region_editor_plugin.cpp
-#: scene/resources/visual_shader.cpp
-msgid "None"
-msgstr "ç„¡"
-
-#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Pixel Snap"
msgstr "åƒç´ å¸é™„"
@@ -7903,165 +8349,603 @@ msgid "Step:"
msgstr "步驟:"
#: editor/plugins/texture_region_editor_plugin.cpp
-msgid "Sep.:"
-msgstr "分隔線:"
+#, fuzzy
+msgid "Separation:"
+msgstr "枚舉:"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "TextureRegion"
msgstr "ç´‹ç†è²¼åœ–å€åŸŸ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All Items"
-msgstr "新增所有項目"
+#, fuzzy
+msgid "Colors"
+msgstr "é¡è‰²"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add All"
-msgstr "新增全部"
+#, fuzzy
+msgid "Fonts"
+msgstr "å­—é«”"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Remove All Items"
+#, fuzzy
+msgid "Icons"
+msgstr "圖示"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Styleboxes"
+msgstr "樣å¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} color(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No colors found."
+msgstr "未找到å­è³‡æºã€‚"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "{num} constant(s)"
+msgstr "常數"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No constants found."
+msgstr "色彩常數。"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} font(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No fonts found."
+msgstr "找ä¸åˆ°!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} icon(s)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No icons found."
+msgstr "找ä¸åˆ°!"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} stylebox(es)"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "No styleboxes found."
+msgstr "未找到å­è³‡æºã€‚"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "{num} currently selected"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Nothing was selected for the import."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Importing Theme Items"
+msgstr "匯入主題"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Importing items {n}/{n}"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Updating the editor"
+msgstr "è¦çµæŸç·¨è¼¯å™¨å—Žï¼Ÿ"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Finalizing"
+msgstr "正在分æž"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Filter:"
+msgstr "篩é¸ï¼š"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "With Data"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select by data type:"
+msgstr "鏿“‡ä¸€å€‹ç¯€é»ž"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible color items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible color items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible constant items."
+msgstr "è«‹å…ˆé¸æ“‡ä¸€å€‹è¨­å®šé …ç›®ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible constant items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible constant items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible font items."
+msgstr "è«‹å…ˆé¸æ“‡ä¸€å€‹è¨­å®šé …ç›®ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible font items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible font items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items."
+msgstr "è«‹å…ˆé¸æ“‡ä¸€å€‹è¨­å®šé …ç›®ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all visible icon items and their data."
+msgstr "è«‹å…ˆé¸æ“‡ä¸€å€‹è¨­å®šé …ç›®ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect all visible icon items."
+msgstr "è«‹å…ˆé¸æ“‡ä¸€å€‹è¨­å®šé …ç›®ï¼"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all visible stylebox items and their data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all visible stylebox items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Caution: Adding icon data may considerably increase the size of your Theme "
+"resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Collapse types."
+msgstr "æ”¶åˆå…¨éƒ¨"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Expand types."
+msgstr "展開全部"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select all Theme items."
+msgstr "鏿“‡æ¨£æ¿æª”案"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select With Data"
+msgstr "鏿“‡æŽ§åˆ¶é»ž"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Select all Theme items with item data."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Deselect All"
+msgstr "å…¨éƒ¨é¸æ“‡"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Deselect all Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Selected"
+msgstr "匯入場景"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Import Items tab has some items selected. Selection will be lost upon "
+"closing this window.\n"
+"Close anyway?"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Color Items"
msgstr "移除所有項目"
-#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
-msgid "Remove All"
-msgstr "移除全部"
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Item"
+msgstr "移除項目"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Edit Theme"
-msgstr "編輯主題"
+#, fuzzy
+msgid "Remove All Constant Items"
+msgstr "移除所有項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Font Items"
+msgstr "移除所有項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All Icon Items"
+msgstr "移除所有項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove All StyleBox Items"
+msgstr "移除所有項目"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme editing menu."
-msgstr "主題編輯é¸å–®ã€‚"
+#, fuzzy
+msgid "Add Color Item"
+msgstr "新增類別項目"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+#, fuzzy
+msgid "Add Constant Item"
msgstr "新增類別項目"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Font Item"
+msgstr "新增項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Icon Item"
+msgstr "新增項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Stylebox Item"
+msgstr "新增所有項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Color Item"
+msgstr "刪除類別項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Constant Item"
+msgstr "刪除類別項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Font Item"
+msgstr "釿–°å‘½å節點"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Icon Item"
+msgstr "釿–°å‘½å節點"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Rename Stylebox Item"
+msgstr "移除所é¸é …ç›®"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Invalid file, not a Theme resource."
+msgstr "無效檔案或該檔案並éžéŸ³è¨ŠåŒ¯æµæŽ’é…置檔。"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Invalid file, same as the edited Theme resource."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Theme Items"
+msgstr "ç®¡ç†æ¨£æ¿"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Edit Items"
+msgstr "å¯ç·¨è¼¯çš„é …ç›®"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Types:"
+msgstr "型別:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type:"
+msgstr "型別:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item:"
+msgstr "新增項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add StyleBox Item"
+msgstr "新增所有項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Remove Items:"
+msgstr "移除項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
msgstr "刪除類別項目"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Template"
-msgstr "建立空白樣æ¿"
+#, fuzzy
+msgid "Remove Custom Items"
+msgstr "刪除類別項目"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create Empty Editor Template"
-msgstr "建立空白編輯器樣æ¿"
+msgid "Remove All Items"
+msgstr "移除所有項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Theme Item"
+msgstr "介é¢ä¸»é¡Œé …ç›®"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Old Name:"
+msgstr "節點å稱:"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Import Items"
+msgstr "匯入主題"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Theme"
+msgstr "é è¨­"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Editor Theme"
+msgstr "編輯主題"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select Another Theme Resource:"
+msgstr "刪除資æº"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Create From Current Editor Theme"
-msgstr "自目å‰ç·¨è¼¯å™¨ä¸»é¡Œå»ºç«‹"
+#, fuzzy
+msgid "Another Theme"
+msgstr "匯入主題"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Confirm Item Rename"
+msgstr "釿–°å‘½å動畫軌"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Cancel Item Rename"
+msgstr "æ‰¹æ¬¡é‡æ–°å‘½å"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override Item"
+msgstr "複寫"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Unpin this StyleBox as a main style."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid ""
+"Pin this StyleBox as a main style. Editing its properties will update the "
+"same properties in all other StyleBoxes of this type."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Type"
+msgstr "型別"
#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Item Type"
+msgstr "新增項目"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Node Types:"
+msgstr "節點型別"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Show Default"
+msgstr "載入é è¨­"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Show default type items alongside items that have been overridden."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Override All"
+msgstr "複寫"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Override all default type items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Theme:"
+msgstr "主題"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Manage Items..."
+msgstr "管ç†åŒ¯å‡ºæ¨£æ¿..."
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add, remove, organize and import Theme items."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Add Preview"
+msgstr "é è¦½"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Default Preview"
+msgstr "æ›´æ–°é è¦½"
+
+#: editor/plugins/theme_editor_plugin.cpp
+#, fuzzy
+msgid "Select UI Scene:"
+msgstr "鏿“‡ä¾†æºç¶²æ ¼ï¼š"
+
+#: editor/plugins/theme_editor_preview.cpp
+msgid ""
+"Toggle the control picker, allowing to visually select control types for "
+"edit."
+msgstr ""
+
+#: editor/plugins/theme_editor_preview.cpp
msgid "Toggle Button"
msgstr "開啟ï¼é—œé–‰æŒ‰éˆ•"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Button"
msgstr "å·²åœç”¨çš„æŒ‰éˆ•"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Item"
msgstr "é …ç›®"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled Item"
msgstr "å·²åœç”¨çš„é …ç›®"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Check Item"
msgstr "檢查項目"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Item"
msgstr "已檢查的項目"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Radio Item"
msgstr "å–®é¸é …"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Checked Radio Item"
msgstr "å·²é¸ä¸­çš„å–®é¸é …"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Named Sep."
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Named Separator"
msgstr "帶å稱的分隔線"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Submenu"
msgstr "å­é¸å–®"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 1"
msgstr "å­é …ç›® 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subitem 2"
msgstr "å­é …ç›® 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has"
msgstr "有"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Many"
msgstr "許多"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Disabled LineEdit"
msgstr "å·²åœç”¨çš„ LineEdit"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 1"
msgstr "標籤 1"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 2"
msgstr "標籤 2"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Tab 3"
msgstr "標籤 3"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Editable Item"
msgstr "å¯ç·¨è¼¯çš„é …ç›®"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Subtree"
msgstr "å­æ¨¹"
-#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_preview.cpp
msgid "Has,Many,Options"
msgstr "有, 許多, é¸é …"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Data Type:"
-msgstr "資料類型:"
-
-#: editor/plugins/theme_editor_plugin.cpp
-#: editor/plugins/tile_set_editor_plugin.cpp
-msgid "Icon"
-msgstr "圖示"
-
-#: editor/plugins/theme_editor_plugin.cpp editor/rename_dialog.cpp
-msgid "Style"
-msgstr "樣å¼"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid path, the PackedScene resource was probably moved or removed."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "å­—é«”"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Invalid PackedScene resource, must have a Control node at its root."
+msgstr ""
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
-msgstr "é¡è‰²"
+#: editor/plugins/theme_editor_preview.cpp
+#, fuzzy
+msgid "Invalid file, not a PackedScene resource."
+msgstr "無效檔案或該檔案並éžéŸ³è¨ŠåŒ¯æµæŽ’é…置檔。"
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme File"
-msgstr "主題檔"
+#: editor/plugins/theme_editor_preview.cpp
+msgid "Reload the scene to reflect its most actual state."
+msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase Selection"
@@ -8233,6 +9117,10 @@ msgid "Priority"
msgstr "優先級"
#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Icon"
+msgstr "圖示"
+
+#: editor/plugins/tile_set_editor_plugin.cpp
msgid "Z Index"
msgstr "Z 索引"
@@ -8563,11 +9451,6 @@ msgid "Commit Changes"
msgstr "æäº¤æ”¹å‹•"
#: editor/plugins/version_control_editor_plugin.cpp
-#: modules/gdnative/gdnative_library_singleton_editor.cpp
-msgid "Status"
-msgstr "狀態"
-
-#: editor/plugins/version_control_editor_plugin.cpp
msgid "View file diffs before committing them to the latest version"
msgstr "在æäº¤è‡³æœ€æ–°ç‰ˆæœ¬å‰æª¢è¦–檔案的差異"
@@ -9420,7 +10303,8 @@ msgid "VisualShader"
msgstr "VisualShader"
#: editor/plugins/visual_shader_editor_plugin.cpp
-msgid "Edit Visual Property"
+#, fuzzy
+msgid "Edit Visual Property:"
msgstr "編輯視覺屬性"
#: editor/plugins/visual_shader_editor_plugin.cpp
@@ -9545,7 +10429,8 @@ msgid "Script"
msgstr "腳本"
#: editor/project_export.cpp
-msgid "Script Export Mode:"
+#, fuzzy
+msgid "GDScript Export Mode:"
msgstr "腳本匯出模å¼ï¼š"
#: editor/project_export.cpp
@@ -9553,19 +10438,21 @@ msgid "Text"
msgstr "純文字"
#: editor/project_export.cpp
-msgid "Compiled"
-msgstr "編譯"
+msgid "Compiled Bytecode (Faster Loading)"
+msgstr ""
#: editor/project_export.cpp
msgid "Encrypted (Provide Key Below)"
msgstr "加密(使用以下密鑰)"
#: editor/project_export.cpp
-msgid "Invalid Encryption Key (must be 64 characters long)"
+#, fuzzy
+msgid "Invalid Encryption Key (must be 64 hexadecimal characters long)"
msgstr "無效的加密密鑰(長度需為 64 個字元)"
#: editor/project_export.cpp
-msgid "Script Encryption Key (256-bits as hex):"
+#, fuzzy
+msgid "GDScript Encryption Key (256-bits as hexadecimal):"
msgstr "腳本加密密鑰(256 ä½å…ƒçš„ 16 進ä½ï¼‰ï¼š"
#: editor/project_export.cpp
@@ -9638,7 +10525,8 @@ msgid "Imported Project"
msgstr "已匯入的項目"
#: editor/project_manager.cpp
-msgid "Invalid Project Name."
+#, fuzzy
+msgid "Invalid project name."
msgstr "無效的專案å。"
#: editor/project_manager.cpp
@@ -9672,6 +10560,18 @@ msgid "Couldn't create project.godot in project path."
msgstr "無法在項目路徑中建立 project.godot。"
#: editor/project_manager.cpp
+msgid "Error opening package file, not in ZIP format."
+msgstr "ç„¡æ³•é–‹å•Ÿå¥—ä»¶æª”æ¡ˆï¼Œéž ZIP æ ¼å¼ã€‚"
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr "自套件中å–得下列檔案失敗:"
+
+#: editor/project_manager.cpp
+msgid "Package installed successfully!"
+msgstr "å¥—ä»¶å®‰è£æˆåŠŸï¼"
+
+#: editor/project_manager.cpp
msgid "Rename Project"
msgstr "釿–°å‘½åé …ç›®"
@@ -9841,20 +10741,14 @@ msgid "Are you sure to run %d projects at once?"
msgstr "確定è¦ä¸€æ¬¡åŸ·è¡Œ %d 個專案?"
#: editor/project_manager.cpp
-msgid ""
-"Remove %d projects from the list?\n"
-"The project folders' contents won't be modified."
-msgstr ""
-"確定è¦è‡ªæ¸…單中移除 %d 個專案嗎?\n"
-"å°ˆæ¡ˆè³‡æ–™å¤¾çš„å…§å®¹ä¸æœƒè¢«ä¿®æ”¹ã€‚"
+#, fuzzy
+msgid "Remove %d projects from the list?"
+msgstr "è‡ªæ¸…å–®ä¸­é¸æ“‡è£ç½®"
#: editor/project_manager.cpp
-msgid ""
-"Remove this project from the list?\n"
-"The project folder's contents won't be modified."
-msgstr ""
-"確定è¦è‡ªåˆ—表移除該專案嗎?\n"
-"å°ˆæ¡ˆè³‡æ–™å¤¾çš„å…§å®¹ä¸æœƒè¢«ä¿®æ”¹ã€‚"
+#, fuzzy
+msgid "Remove this project from the list?"
+msgstr "è‡ªæ¸…å–®ä¸­é¸æ“‡è£ç½®"
#: editor/project_manager.cpp
msgid ""
@@ -9886,7 +10780,8 @@ msgid "Project Manager"
msgstr "專案管ç†å“¡"
#: editor/project_manager.cpp
-msgid "Projects"
+#, fuzzy
+msgid "Local Projects"
msgstr "專案"
#: editor/project_manager.cpp
@@ -9898,10 +10793,25 @@ msgid "Last Modified"
msgstr "最後修改時間"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Edit Project"
+msgstr "匯出專案"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Run Project"
+msgstr "釿–°å‘½åé …ç›®"
+
+#: editor/project_manager.cpp
msgid "Scan"
msgstr "掃æ"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Scan Projects"
+msgstr "專案"
+
+#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
msgstr "鏿“‡è³‡æ–™å¤¾ä»¥é€²è¡ŒæŽƒæ"
@@ -9910,18 +10820,41 @@ msgid "New Project"
msgstr "新增專案"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Import Project"
+msgstr "已匯入的項目"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Remove Project"
+msgstr "釿–°å‘½åé …ç›®"
+
+#: editor/project_manager.cpp
msgid "Remove Missing"
msgstr "刪除éºå¤±"
#: editor/project_manager.cpp
-msgid "Templates"
-msgstr "樣æ¿"
+msgid "About"
+msgstr "關於"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Asset Library Projects"
+msgstr "ç´ æåº«"
#: editor/project_manager.cpp
msgid "Restart Now"
msgstr "ç«‹å³é‡æ–°å•Ÿå‹•"
#: editor/project_manager.cpp
+msgid "Remove All"
+msgstr "移除全部"
+
+#: editor/project_manager.cpp
+msgid "Also delete project contents (no undo!)"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr "無法執行專案"
@@ -9934,8 +10867,14 @@ msgstr ""
"è¦åœ¨ç´ æåº«ä¸­ç€è¦½å®˜æ–¹ç¯„例專案嗎?"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Filter projects"
+msgstr "篩é¸å±¬æ€§"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid ""
-"The search box filters projects by name and last path component.\n"
+"This field filters projects by name and last path component.\n"
"To filter projects by name and full path, the query must contain at least "
"one `/` character."
msgstr ""
@@ -9947,6 +10886,10 @@ msgid "Key "
msgstr "æŒ‰éµ "
#: editor/project_settings_editor.cpp
+msgid "Physical Key"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Joy Button"
msgstr "控制器按鈕"
@@ -9988,6 +10931,10 @@ msgstr "所有è£ç½®"
msgid "Device"
msgstr "è£ç½®"
+#: editor/project_settings_editor.cpp
+msgid " (Physical)"
+msgstr ""
+
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key..."
msgstr "請按下按éµ..."
@@ -10127,7 +11074,8 @@ msgid "Override for Feature"
msgstr "複寫功能"
#: editor/project_settings_editor.cpp
-msgid "Add Translation"
+#, fuzzy
+msgid "Add %d Translations"
msgstr "新增翻譯"
#: editor/project_settings_editor.cpp
@@ -10135,11 +11083,13 @@ msgid "Remove Translation"
msgstr "移除翻譯"
#: editor/project_settings_editor.cpp
-msgid "Add Remapped Path"
-msgstr "æ–°å¢žé‡æ˜ å°„路徑"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Path(s)"
+msgstr "資æºé‡æ˜ å°„æ–°å¢žé‡æ˜ å°„"
#: editor/project_settings_editor.cpp
-msgid "Resource Remap Add Remap"
+#, fuzzy
+msgid "Translation Resource Remap: Add %d Remap(s)"
msgstr "資æºé‡æ˜ å°„æ–°å¢žé‡æ˜ å°„"
#: editor/project_settings_editor.cpp
@@ -10411,6 +11361,10 @@ msgid "Post-Process"
msgstr "後處ç†"
#: editor/rename_dialog.cpp
+msgid "Style"
+msgstr "樣å¼"
+
+#: editor/rename_dialog.cpp
msgid "Keep"
msgstr "ä¿æŒ"
@@ -10573,12 +11527,30 @@ msgid "Delete node \"%s\"?"
msgstr "確定è¦åˆªé™¤ç¯€é»žã€Œ%sã€å—Žï¼Ÿ"
#: editor/scene_tree_dock.cpp
-msgid "Can not perform with the root node."
-msgstr "無法在根節點執行此æ“作。"
+msgid ""
+"Saving the branch as a scene requires having a scene open in the editor."
+msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "This operation can't be done on instanced scenes."
-msgstr "該æ“作無法在已實體化場景中執行。"
+msgid ""
+"Saving the branch as a scene requires selecting only one node, but you have "
+"selected %d nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the root node branch as an instanced scene.\n"
+"To create an editable copy of the current scene, duplicate it using the "
+"FileSystem dock context menu\n"
+"or create an inherited scene using Scene > New Inherited Scene... instead."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Can't save the branch of an already instanced scene.\n"
+"To create a variation of a scene, you can make an inherited scene based on "
+"the instanced scene using Scene > New Inherited Scene... instead."
+msgstr ""
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As..."
@@ -10635,6 +11607,10 @@ msgid "Can't operate on nodes the current scene inherits from!"
msgstr "無法å°ç›®å‰å ´æ™¯ç¹¼æ‰¿ä¾†æºçš„節點進行æ“作ï¼"
#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr "該æ“作無法在已實體化場景中執行。"
+
+#: editor/scene_tree_dock.cpp
msgid "Attach Script"
msgstr "附加腳本"
@@ -10681,10 +11657,6 @@ msgid "Load As Placeholder"
msgstr "載入為佔ä½"
#: editor/scene_tree_dock.cpp
-msgid "Open Documentation"
-msgstr "開啟說明文件"
-
-#: editor/scene_tree_dock.cpp
msgid ""
"Cannot attach a script: there are no languages registered.\n"
"This is probably because this editor was built with all language modules "
@@ -10969,6 +11941,12 @@ msgid ""
msgstr "注æ„:內建腳本有些é™åˆ¶ï¼Œä¸”無法使用外部編輯器來編輯。"
#: editor/script_create_dialog.cpp
+msgid ""
+"Warning: Having the script name be the same as a built-in type is usually "
+"not desired."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Class Name:"
msgstr "類別å稱:"
@@ -11037,6 +12015,10 @@ msgid "Copy Error"
msgstr "複製錯誤"
#: editor/script_editor_debugger.cpp
+msgid "Open C++ Source on GitHub"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Video RAM"
msgstr "視訊記憶體"
@@ -11320,6 +12302,16 @@ msgstr "無效的實體字典(無效的å­é¡žåž‹ï¼‰"
msgid "Object can't provide a length."
msgstr "物件無法æä¾›é•·åº¦ã€‚"
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export Mesh GLTF2"
+msgstr "匯出網格庫"
+
+#: modules/gltf/editor_scene_exporter_gltf_plugin.cpp
+#, fuzzy
+msgid "Export GLTF..."
+msgstr "匯出..."
+
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Plane"
msgstr "下一個平é¢"
@@ -11361,6 +12353,11 @@ msgid "GridMap Paint"
msgstr "網格地圖繪圖"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
+msgid "GridMap Selection"
+msgstr "網格地圖填充所é¸ç¯„åœ"
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Grid Map"
msgstr "網格地圖"
@@ -11603,6 +12600,16 @@ msgid "Add Output Port"
msgstr "新增輸出埠å£"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Type"
+msgstr "更改型別"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Change Port Name"
+msgstr "修改輸入埠å£å稱"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Override an existing built-in function."
msgstr "è¤‡å¯«ä¸€å€‹ç¾æœ‰çš„內建函å¼ã€‚"
@@ -11712,6 +12719,11 @@ msgid "Add Preload Node"
msgstr "新增é è¼‰ (Preload) 節點"
#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
+msgid "Add Node(s)"
+msgstr "新增節點"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Add Node(s) From Tree"
msgstr "自樹中新增節點"
@@ -11937,10 +12949,6 @@ msgstr "æœå°‹è¦–覺腳本 (VisualScript)"
msgid "Get %s"
msgstr "å–å¾— %s"
-#: modules/visual_script/visual_script_property_selector.cpp
-msgid "Set %s"
-msgstr "設定 %s"
-
#: platform/android/export/export.cpp
msgid "Package name is missing."
msgstr "缺少套件å稱。"
@@ -11970,6 +12978,40 @@ msgid "Select device from the list"
msgstr "è‡ªæ¸…å–®ä¸­é¸æ“‡è£ç½®"
#: platform/android/export/export.cpp
+msgid "Running on %s"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting APK..."
+msgstr "全部匯出"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Uninstalling..."
+msgstr "å–æ¶ˆå®‰è£"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Installing to device, please wait..."
+msgstr "載入中,請ç¨å¾Œ..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not install to device: %s"
+msgstr "無法啟動å­è™•ç†ç¨‹åºï¼"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Running on device..."
+msgstr "正在執行自定腳本..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not execute on device."
+msgstr "無法新增資料夾。"
+
+#: platform/android/export/export.cpp
msgid "Unable to find the 'apksigner' tool."
msgstr "找ä¸åˆ°ã€Œapksignerã€å·¥å…·ã€‚"
@@ -12074,6 +13116,48 @@ msgid "\"Export AAB\" is only valid when \"Use Custom Build\" is enabled."
msgstr "「Export AABã€åƒ…於「Use Custom Buildã€å•Ÿç”¨æ™‚å¯ç”¨ã€‚"
#: platform/android/export/export.cpp
+msgid ""
+"'apksigner' could not be found.\n"
+"Please check the command is available in the Android SDK build-tools "
+"directory.\n"
+"The resulting %s is unsigned."
+msgstr ""
+
+#: platform/android/export/export.cpp
+msgid "Signing debug %s..."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Signing release %s..."
+msgstr ""
+"æ­£åœ¨æŽƒææª”案,\n"
+"è«‹ç¨å¾Œ..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not find keystore, unable to export."
+msgstr "無法開啟樣æ¿ä»¥è¼¸å‡ºï¼š"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' returned with error #%d"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Verifying %s..."
+msgstr "正在新增 %s…"
+
+#: platform/android/export/export.cpp
+msgid "'apksigner' verification of %s failed."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Exporting for Android"
+msgstr "全部匯出"
+
+#: platform/android/export/export.cpp
msgid "Invalid filename! Android App Bundle requires the *.aab extension."
msgstr "無效的檔案å稱ï¼Android App Bundle å¿…é ˆè¦æœ‰ *.aab 副檔å。"
@@ -12086,6 +13170,10 @@ msgid "Invalid filename! Android APK requires the *.apk extension."
msgstr "無效的檔案å稱ï¼Android APK å¿…é ˆè¦æœ‰ *.apk 副檔å。"
#: platform/android/export/export.cpp
+msgid "Unsupported export format!\n"
+msgstr ""
+
+#: platform/android/export/export.cpp
msgid ""
"Trying to build from a custom built template, but no version info for it "
"exists. Please reinstall from the 'Project' menu."
@@ -12105,6 +13193,21 @@ msgstr ""
"請自「專案ã€ç›®éŒ„䏭釿–°å®‰è£ Android 建置樣æ¿ã€‚"
#: platform/android/export/export.cpp
+msgid ""
+"Unable to overwrite res://android/build/res/*.xml files with project name"
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files to gradle project\n"
+msgstr "無法在專案路徑中編輯 project.godot。"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not write expansion package file!"
+msgstr "無法寫入檔案:"
+
+#: platform/android/export/export.cpp
msgid "Building Android Project (gradle)"
msgstr "建置 Android 專案(Gradle)"
@@ -12126,11 +13229,54 @@ msgid ""
"outputs."
msgstr "無法複製並更å匯出的檔案,請於 Gradle 專案資料夾內確èªè¼¸å‡ºã€‚"
-#: platform/iphone/export/export.cpp
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Package not found: %s"
+msgstr "未找到動畫:「%sã€"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Creating APK..."
+msgstr "正在建立輪廓..."
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid ""
+"Could not find template APK to export:\n"
+"%s"
+msgstr "無法開啟樣æ¿ä»¥è¼¸å‡ºï¼š"
+
+#: platform/android/export/export.cpp
+msgid ""
+"Missing libraries in the export template for the selected architectures: "
+"%s.\n"
+"Please build a template with all required libraries, or uncheck the missing "
+"architectures in the export preset."
+msgstr ""
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Adding files..."
+msgstr "正在新增 %s…"
+
+#: platform/android/export/export.cpp
+#, fuzzy
+msgid "Could not export project files"
+msgstr "無法寫入檔案:"
+
+#: platform/android/export/export.cpp
+msgid "Aligning APK..."
+msgstr "正在å°é½Š APK…"
+
+#: platform/android/export/export.cpp
+msgid "Could not unzip temporary unaligned APK."
+msgstr ""
+
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "Identifier is missing."
msgstr "缺少識別符。"
-#: platform/iphone/export/export.cpp
+#: platform/iphone/export/export.cpp platform/osx/export/export.cpp
msgid "The character '%s' is not allowed in Identifier."
msgstr "字元「%sã€ä¸å¯ç”¨æ–¼è­˜åˆ¥ç¬¦ä¸­ã€‚"
@@ -12159,10 +13305,6 @@ msgid "Run exported HTML in the system's default browser."
msgstr "在系統的é è¨­ç€è¦½å™¨ä¸­åŸ·è¡Œå·²åŒ¯å‡ºçš„ HTML。"
#: platform/javascript/export/export.cpp
-msgid "Could not write file:"
-msgstr "無法寫入檔案:"
-
-#: platform/javascript/export/export.cpp
msgid "Could not open template for export:"
msgstr "無法開啟樣æ¿ä»¥è¼¸å‡ºï¼š"
@@ -12171,16 +13313,49 @@ msgid "Invalid export template:"
msgstr "無效的輸出樣æ¿ï¼š"
#: platform/javascript/export/export.cpp
-msgid "Could not read custom HTML shell:"
+msgid "Could not write file:"
+msgstr "無法寫入檔案:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read file:"
+msgstr "無法寫入檔案:"
+
+#: platform/javascript/export/export.cpp
+#, fuzzy
+msgid "Could not read HTML shell:"
msgstr "無法讀å–自定 HTML Shell:"
#: platform/javascript/export/export.cpp
-msgid "Could not read boot splash image file:"
-msgstr "無法讀å–啟動畫é¢åœ–檔:"
+#, fuzzy
+msgid "Could not create HTTP server directory:"
+msgstr "無法新增資料夾。"
#: platform/javascript/export/export.cpp
-msgid "Using default boot splash image."
-msgstr "使用é è¨­å•Ÿå‹•ç•«é¢åœ–檔。"
+#, fuzzy
+msgid "Error starting HTTP server:"
+msgstr "ä¿å­˜å ´æ™¯æ™‚發生錯誤。"
+
+#: platform/osx/export/export.cpp
+#, fuzzy
+msgid "Invalid bundle identifier:"
+msgstr "無效的識別符:"
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: code signing required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: hardened runtime required."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID name not specified."
+msgstr ""
+
+#: platform/osx/export/export.cpp
+msgid "Notarization: Apple ID password not specified."
+msgstr ""
#: platform/uwp/export/export.cpp
msgid "Invalid package short name."
@@ -12566,6 +13741,13 @@ msgstr ""
"GLES2 視訊驅動程å¼ä¸æ”¯æ´ GIProbes。\n"
"請改為使用 BakedLightmap。"
+#: scene/3d/gi_probe.cpp
+msgid ""
+"The GIProbe Compress property has been deprecated due to known bugs and no "
+"longer has any effect.\n"
+"To remove this warning, disable the GIProbe's Compress property."
+msgstr ""
+
#: scene/3d/light.cpp
msgid "A SpotLight with an angle wider than 90 degrees cannot cast shadows."
msgstr "角度大於 90 度的 SpotLight 無法投射出陰影。"
@@ -12646,6 +13828,18 @@ msgstr "Joint 尚未連çµè‡³ä»»ä½• PhysicsBody"
msgid "Node A and Node B must be different PhysicsBodies"
msgstr "Node A 與 Node B 必須為ä¸åŒçš„ PhysicsBody"
+#: scene/3d/portal.cpp
+msgid "The RoomManager should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A Room should not be a child or grandchild of a Portal."
+msgstr ""
+
+#: scene/3d/portal.cpp
+msgid "A RoomGroup should not be a child or grandchild of a Portal."
+msgstr ""
+
#: scene/3d/remote_transform.cpp
msgid ""
"The \"Remote Path\" property must point to a valid Spatial or Spatial-"
@@ -12653,6 +13847,46 @@ msgid ""
msgstr ""
"「Remote Pathã€å±¬æ€§å¿…須指å‘一個有效的 Spatial 或 Spatial è¡ç”Ÿä¹‹ç¯€é»žæ‰å¯é‹ä½œã€‚"
+#: scene/3d/room.cpp
+msgid "A Room cannot have another Room as a child or grandchild."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "The RoomManager should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid "A RoomGroup should not be placed inside a Room."
+msgstr ""
+
+#: scene/3d/room.cpp
+msgid ""
+"Room convex hull contains a large number of planes.\n"
+"Consider simplifying the room bound in order to increase performance."
+msgstr ""
+
+#: scene/3d/room_group.cpp
+msgid "The RoomManager should not be placed inside a RoomGroup."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList has not been assigned."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "The RoomList node should be a Spatial (or derived from Spatial)."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid ""
+"Portal Depth Limit is set to Zero.\n"
+"Only the Room that the Camera is in will render."
+msgstr ""
+
+#: scene/3d/room_manager.cpp
+msgid "There should only be one RoomManager in the SceneTree."
+msgstr ""
+
#: scene/3d/soft_body.cpp
msgid "This body will be ignored until you set a mesh."
msgstr "該形體在設定網格å‰éƒ½å°‡è¢«å¿½ç•¥ã€‚"
@@ -12711,6 +13945,10 @@ msgstr "æ–¼ BlendTree 節點「%sã€ä¸Šæœªæ‰¾åˆ°å‹•畫:「%sã€"
msgid "Animation not found: '%s'"
msgstr "未找到動畫:「%sã€"
+#: scene/animation/animation_player.cpp
+msgid "Anim Apply Reset"
+msgstr ""
+
#: scene/animation/animation_tree.cpp
msgid "In node '%s', invalid animation: '%s'."
msgstr "於節點「%sã€å…§å‹•畫無效:「%sã€ã€‚"
@@ -12876,6 +14114,27 @@ msgid "Invalid comparison function for that type."
msgstr "該型別的比較函å¼ç„¡æ•ˆã€‚"
#: servers/visual/shader_language.cpp
+#, fuzzy
+msgid "Varying may not be assigned in the '%s' function."
+msgstr "Varying 變數åªå¯åœ¨é ‚點函å¼ä¸­æŒ‡æ´¾ã€‚"
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'vertex' function may not be reassigned in "
+"'fragment' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid ""
+"Varyings which assigned in 'fragment' function may not be reassigned in "
+"'vertex' or 'light'."
+msgstr ""
+
+#: servers/visual/shader_language.cpp
+msgid "Fragment-stage varying could not been accessed in custom function!"
+msgstr ""
+
+#: servers/visual/shader_language.cpp
msgid "Assignment to function."
msgstr "指派至函å¼ã€‚"
@@ -12884,13 +14143,177 @@ msgid "Assignment to uniform."
msgstr "指派至å‡å‹»ã€‚"
#: servers/visual/shader_language.cpp
-msgid "Varyings can only be assigned in vertex function."
-msgstr "Varying 變數åªå¯åœ¨é ‚點函å¼ä¸­æŒ‡æ´¾ã€‚"
-
-#: servers/visual/shader_language.cpp
msgid "Constants cannot be modified."
msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚"
+#~ msgid "Package Contents:"
+#~ msgstr "套件內容:"
+
+#~ msgid "Singleton"
+#~ msgstr "單例"
+
+#~ msgid "Erase profile '%s'? (no undo)"
+#~ msgstr "ç¢ºå®šè¦æ¸…除設定檔「%sã€å—Žï¼Ÿï¼ˆç„¡æ³•復原)"
+
+#~ msgid "Enabled Properties:"
+#~ msgstr "啟用屬性:"
+
+#~ msgid "Enabled Features:"
+#~ msgstr "啟用功能:"
+
+#~ msgid "Unset"
+#~ msgstr "未設定"
+
+#~ msgid "Class Options"
+#~ msgstr "類別é¸é …"
+
+#~ msgid "Set"
+#~ msgstr "設定"
+
+#~ msgid "Saved %s modified resource(s)."
+#~ msgstr "å·²ä¿å­˜ %s 個已修改的資æºã€‚"
+
+#~ msgid "Q&A"
+#~ msgstr "Q&A"
+
+#~ msgid "Status:"
+#~ msgstr "狀態:"
+
+#~ msgid "Edit:"
+#~ msgstr "編輯:"
+
+#~ msgid "Redownload"
+#~ msgstr "釿–°ä¸‹è¼‰"
+
+#~ msgid "(Installed)"
+#~ msgstr "(已安è£ï¼‰"
+
+#~ msgid "(Missing)"
+#~ msgstr "(éºå¤±ï¼‰"
+
+#~ msgid "Request Failed."
+#~ msgstr "請求失敗。"
+
+#~ msgid "Redirect Loop."
+#~ msgstr "釿–°å°Žå‘循環。"
+
+#~ msgid "Download Complete."
+#~ msgstr "下載完æˆã€‚"
+
+#~ msgid "Remove Template"
+#~ msgstr "移除樣æ¿"
+
+#~ msgid "Download Templates"
+#~ msgstr "下載樣æ¿"
+
+#~ msgid "Select mirror from list: (Shift+Click: Open in Browser)"
+#~ msgstr "è‡ªåˆ—è¡¨ä¸­é¸æ“‡é¡åƒï¼šï¼ˆShift+點擊:在ç€è¦½å™¨ä¸­é–‹å•Ÿï¼‰"
+
+#~ msgid "Move to Trash"
+#~ msgstr "移動至資æºå›žæ”¶æ¡¶"
+
+#~ msgid "Expand All Properties"
+#~ msgstr "展開所有屬性"
+
+#~ msgid "Collapse All Properties"
+#~ msgstr "æ”¶åˆæ‰€æœ‰å±¬æ€§"
+
+#~ msgid "Copy Params"
+#~ msgstr "è¤‡è£½åƒæ•¸"
+
+#~ msgid "Open in Help"
+#~ msgstr "在說明中開啟"
+
+#~ msgid ""
+#~ "Game Camera Override\n"
+#~ "No game instance running."
+#~ msgstr ""
+#~ "éŠæˆ²ç›¸æ©Ÿè¤‡å¯«\n"
+#~ "ç„¡æ­£åœ¨åŸ·è¡Œçš„éŠæˆ²å¯¦é«”。"
+
+#~ msgid "Drag: Rotate"
+#~ msgstr "拖移:旋轉"
+
+#~ msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+#~ msgstr "按「vã€ä»¥ä¿®æ”¹æ¨žç´ï¼Œã€ŒShift+vã€ä»¥ç§»å‹•樞ç´ï¼ˆç§»å‹•時)。"
+
+#~ msgid "Alt+RMB: Depth list selection"
+#~ msgstr "Alt+滑鼠å³éµï¼šå±•é–‹æ‰€é¸æ¸…å–®"
+
+#~ msgid "Clone Down"
+#~ msgstr "複製到下一行"
+
+#~ msgid "Yaw"
+#~ msgstr "å航"
+
+#~ msgid "Size"
+#~ msgstr "大å°"
+
+#~ msgid ""
+#~ "Drag: Rotate\n"
+#~ "Alt+Drag: Move\n"
+#~ "Alt+RMB: Depth list selection"
+#~ msgstr ""
+#~ "拖移:旋轉\n"
+#~ "Alt+拖移:移動\n"
+#~ "Alt+å³éµé»žæ“Šï¼šå±•開鏿“‡åˆ—表"
+
+#~ msgid "Sep.:"
+#~ msgstr "分隔線:"
+
+#~ msgid "Add All"
+#~ msgstr "新增全部"
+
+#~ msgid "Theme editing menu."
+#~ msgstr "主題編輯é¸å–®ã€‚"
+
+#~ msgid "Create Empty Template"
+#~ msgstr "建立空白樣æ¿"
+
+#~ msgid "Create Empty Editor Template"
+#~ msgstr "建立空白編輯器樣æ¿"
+
+#~ msgid "Create From Current Editor Theme"
+#~ msgstr "自目å‰ç·¨è¼¯å™¨ä¸»é¡Œå»ºç«‹"
+
+#~ msgid "Data Type:"
+#~ msgstr "資料類型:"
+
+#~ msgid "Theme File"
+#~ msgstr "主題檔"
+
+#~ msgid "Compiled"
+#~ msgstr "編譯"
+
+#~ msgid ""
+#~ "Remove %d projects from the list?\n"
+#~ "The project folders' contents won't be modified."
+#~ msgstr ""
+#~ "確定è¦è‡ªæ¸…單中移除 %d 個專案嗎?\n"
+#~ "å°ˆæ¡ˆè³‡æ–™å¤¾çš„å…§å®¹ä¸æœƒè¢«ä¿®æ”¹ã€‚"
+
+#~ msgid ""
+#~ "Remove this project from the list?\n"
+#~ "The project folder's contents won't be modified."
+#~ msgstr ""
+#~ "確定è¦è‡ªåˆ—表移除該專案嗎?\n"
+#~ "å°ˆæ¡ˆè³‡æ–™å¤¾çš„å…§å®¹ä¸æœƒè¢«ä¿®æ”¹ã€‚"
+
+#~ msgid "Templates"
+#~ msgstr "樣æ¿"
+
+#~ msgid "Add Remapped Path"
+#~ msgstr "æ–°å¢žé‡æ˜ å°„路徑"
+
+#~ msgid "Can not perform with the root node."
+#~ msgstr "無法在根節點執行此æ“作。"
+
+#~ msgid "Could not read boot splash image file:"
+#~ msgstr "無法讀å–啟動畫é¢åœ–檔:"
+
+#~ msgid "Using default boot splash image."
+#~ msgstr "使用é è¨­å•Ÿå‹•ç•«é¢åœ–檔。"
+
#~ msgid "An animation player can't animate itself, only other players."
#~ msgstr "å‹•ç•« Player ç„¡æ³•æ’­æ”¾è‡ªå·±ï¼Œåƒ…å¯æ’­æ”¾å…¶ä»– Player。"
@@ -12940,9 +14363,6 @@ msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚"
#~ msgid "There is already file or folder with the same name in this location."
#~ msgstr "該ä½ç½®å·²æœ‰ç›¸åŒå稱的檔案或資料夾。"
-#~ msgid "Aligning APK..."
-#~ msgstr "正在å°é½Š APK…"
-
#~ msgid "Unable to complete APK alignment."
#~ msgstr "ç„¡æ³•å®Œæˆ APK å°é½Šã€‚"
@@ -13003,9 +14423,6 @@ msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚"
#~ msgid "Current scene was never saved, please save it prior to running."
#~ msgstr "ç›®å‰çš„場景從未被ä¿å­˜ï¼Œè«‹å…ˆä¿å­˜ä»¥åŸ·è¡Œã€‚"
-#~ msgid "Not in resource path."
-#~ msgstr "ä¸åœ¨è³‡æºè·¯å¾‘中。"
-
#~ msgid "Revert"
#~ msgstr "還原"
@@ -13071,9 +14488,6 @@ msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚"
#~ msgid "Add input +"
#~ msgstr "添加輸入"
-#~ msgid "Properties:"
-#~ msgstr "效能:"
-
#, fuzzy
#~ msgid "Methods:"
#~ msgstr "方法"
@@ -13082,9 +14496,6 @@ msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚"
#~ msgid "Theme Properties:"
#~ msgstr "éŽæ¿¾æª”案..."
-#~ msgid "Enumerations:"
-#~ msgstr "枚舉:"
-
#~ msgid "Constants:"
#~ msgstr "定數:"
@@ -13290,9 +14701,6 @@ msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚"
#~ msgid "Public Methods:"
#~ msgstr "公開 method:"
-#~ msgid "GUI Theme Items"
-#~ msgstr "介é¢ä¸»é¡Œé …ç›®"
-
#~ msgid "GUI Theme Items:"
#~ msgstr "介é¢ä¸»é¡Œé …ç›®:"
@@ -13333,9 +14741,6 @@ msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚"
#~ msgid "Set Transitions to:"
#~ msgstr "設定轉場效果為:"
-#~ msgid "Anim Track Rename"
-#~ msgstr "釿–°å‘½å動畫軌"
-
#~ msgid "Anim Track Change Interpolation"
#~ msgstr "改變動畫軌內æ’"
@@ -13415,9 +14820,6 @@ msgstr "ä¸å¯ä¿®æ”¹å¸¸æ•¸ã€‚"
#~ msgid "Set pivot at mouse position"
#~ msgstr "移除"
-#~ msgid "Not found!"
-#~ msgstr "找ä¸åˆ°!"
-
#~ msgid "Replace By"
#~ msgstr "用...å–代"
diff --git a/main/main.cpp b/main/main.cpp
index 1e5445fd93..d91cc5c9bf 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -326,9 +326,10 @@ void Main::print_help(const char *p_binary) {
OS::get_singleton()->print(" --text-driver <driver> Text driver (Fonts, BiDi, shaping)\n");
+ OS::get_singleton()->print(" --headless Enable headless mode (--display-driver headless --audio-driver Dummy). Useful for servers and with --script.\n");
+
OS::get_singleton()->print("\n");
-#ifndef SERVER_ENABLED
OS::get_singleton()->print("Display options:\n");
OS::get_singleton()->print(" -f, --fullscreen Request fullscreen mode.\n");
OS::get_singleton()->print(" -m, --maximized Request a maximized window.\n");
@@ -337,11 +338,9 @@ void Main::print_help(const char *p_binary) {
OS::get_singleton()->print(" --resolution <W>x<H> Request window resolution.\n");
OS::get_singleton()->print(" --position <X>,<Y> Request window position.\n");
OS::get_singleton()->print(" --low-dpi Force low-DPI mode (macOS and Windows only).\n");
- OS::get_singleton()->print(" --no-window Disable window creation (Windows only). Useful together with --script.\n");
OS::get_singleton()->print(" --single-window Use a single window (no separate subwindows).\n");
OS::get_singleton()->print(" --tablet-driver Pen tablet input driver.\n");
OS::get_singleton()->print("\n");
-#endif
OS::get_singleton()->print("Debug options:\n");
OS::get_singleton()->print(" -d, --debug Debug (local stdout debugger).\n");
@@ -352,7 +351,7 @@ void Main::print_help(const char *p_binary) {
OS::get_singleton()->print(" --gpu-abort Abort on GPU errors (usually validation layer errors), may help see the problem if your system freezes.\n");
#endif
OS::get_singleton()->print(" --remote-debug <uri> Remote debug (<protocol>://<host/IP>[:<port>], e.g. tcp://127.0.0.1:6007).\n");
-#if defined(DEBUG_ENABLED) && !defined(SERVER_ENABLED)
+#if defined(DEBUG_ENABLED)
OS::get_singleton()->print(" --debug-collisions Show collision shapes when running the scene.\n");
OS::get_singleton()->print(" --debug-navigation Show navigation polygons when running the scene.\n");
#endif
@@ -728,7 +727,6 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->print("Missing video driver argument, aborting.\n");
goto error;
}
-#ifndef SERVER_ENABLED
} else if (I->get() == "-f" || I->get() == "--fullscreen") { // force fullscreen
init_fullscreen = true;
@@ -818,10 +816,11 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
} else if (I->get() == "--low-dpi") { // force low DPI (macOS only)
force_lowdpi = true;
- } else if (I->get() == "--no-window") { // disable window creation (Windows only)
+ } else if (I->get() == "--headless") { // enable headless mode (no audio, no rendering).
+
+ audio_driver = "Dummy";
+ display_driver = "headless";
- OS::get_singleton()->set_no_window_mode(true);
-#endif
} else if (I->get() == "--profiling") { // enable profiling
use_debug_profiler = true;
@@ -1080,7 +1079,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
#else
const String error_msg = "Error: Couldn't load project data at path \"" + project_path + "\". Is the .pck file missing?\nIf you've renamed the executable, the associated .pck file should also be renamed to match the executable's name (without the extension).\n";
OS::get_singleton()->print("%s", error_msg.ascii().get_data());
- DisplayServer::get_singleton()->alert(error_msg);
+ OS::get_singleton()->alert(error_msg);
goto error;
#endif
@@ -1089,6 +1088,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
// Initialize user data dir.
OS::get_singleton()->ensure_user_data_dir();
+ ResourceUID::get_singleton()->load_from_cache(); // load UUIDs from cache.
+
GLOBAL_DEF("memory/limits/multithreaded_server/rid_pool_prealloc", 60);
ProjectSettings::get_singleton()->set_custom_property_info("memory/limits/multithreaded_server/rid_pool_prealloc",
PropertyInfo(Variant::INT,
@@ -1594,6 +1595,13 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
rendering_server->set_print_gpu_profile(true);
}
+#ifdef UNIX_ENABLED
+ // Print warning after initializing the renderer but before initializing audio.
+ if (OS::get_singleton()->get_environment("USER") == "root" && !OS::get_singleton()->has_environment("GODOT_SILENCE_ROOT_WARNING")) {
+ WARN_PRINT("Started the engine as `root`/superuser. This is a security risk, and subsystems like audio may not work correctly.\nSet the environment variable `GODOT_SILENCE_ROOT_WARNING` to 1 to silence this warning.");
+ }
+#endif
+
OS::get_singleton()->initialize_joypads();
/* Initialize Audio Driver */
@@ -2015,6 +2023,7 @@ bool Main::start() {
// Let's throw an error gently. The code leading to this is pretty brittle so
// this might end up triggered by valid usage, in which case we'll have to
// fine-tune further.
+ OS::get_singleton()->alert("Couldn't detect whether to run the editor, the project manager or a specific project. Aborting.");
ERR_FAIL_V_MSG(false, "Couldn't detect whether to run the editor, the project manager or a specific project. Aborting.");
}
#endif
@@ -2044,9 +2053,8 @@ bool Main::start() {
if (obj) {
memdelete(obj);
}
- ERR_FAIL_V_MSG(false,
- vformat("Can't load the script \"%s\" as it doesn't inherit from SceneTree or MainLoop.",
- script));
+ OS::get_singleton()->alert(vformat("Can't load the script \"%s\" as it doesn't inherit from SceneTree or MainLoop.", script));
+ ERR_FAIL_V_MSG(false, vformat("Can't load the script \"%s\" as it doesn't inherit from SceneTree or MainLoop.", script));
}
script_loop->set_initialize_script(script_res);
@@ -2065,7 +2073,7 @@ bool Main::start() {
if (obj) {
memdelete(obj);
}
- DisplayServer::get_singleton()->alert("Error: Invalid MainLoop script base type: " + script_base);
+ OS::get_singleton()->alert("Error: Invalid MainLoop script base type: " + script_base);
ERR_FAIL_V_MSG(false, vformat("The global class %s does not inherit from SceneTree or MainLoop.", main_loop_type));
}
script_loop->set_initialize_script(script_res);
@@ -2079,7 +2087,7 @@ bool Main::start() {
if (!main_loop) {
if (!ClassDB::class_exists(main_loop_type)) {
- DisplayServer::get_singleton()->alert("Error: MainLoop type doesn't exist: " + main_loop_type);
+ OS::get_singleton()->alert("Error: MainLoop type doesn't exist: " + main_loop_type);
return false;
} else {
Object *ml = ClassDB::instantiate(main_loop_type);
@@ -2169,8 +2177,8 @@ bool Main::start() {
}
}
- for (List<Node *>::Element *E = to_add.front(); E; E = E->next()) {
- sml->get_root()->add_child(E->get());
+ for (Node *E : to_add) {
+ sml->get_root()->add_child(E);
}
}
}
diff --git a/main/main_timer_sync.cpp b/main/main_timer_sync.cpp
index 93448d0904..94e62bea97 100644
--- a/main/main_timer_sync.cpp
+++ b/main/main_timer_sync.cpp
@@ -30,7 +30,7 @@
#include "main_timer_sync.h"
-void MainFrameTime::clamp_process_step(float min_process_step, float max_process_step) {
+void MainFrameTime::clamp_process_step(double min_process_step, double max_process_step) {
if (process_step < min_process_step) {
process_step = min_process_step;
} else if (process_step > max_process_step) {
@@ -43,25 +43,25 @@ void MainFrameTime::clamp_process_step(float min_process_step, float max_process
// returns the fraction of p_physics_step required for the timer to overshoot
// before advance_core considers changing the physics_steps return from
// the typical values as defined by typical_physics_steps
-float MainTimerSync::get_physics_jitter_fix() {
+double MainTimerSync::get_physics_jitter_fix() {
return Engine::get_singleton()->get_physics_jitter_fix();
}
// gets our best bet for the average number of physics steps per render frame
// return value: number of frames back this data is consistent
-int MainTimerSync::get_average_physics_steps(float &p_min, float &p_max) {
+int MainTimerSync::get_average_physics_steps(double &p_min, double &p_max) {
p_min = typical_physics_steps[0];
p_max = p_min + 1;
for (int i = 1; i < CONTROL_STEPS; ++i) {
- const float typical_lower = typical_physics_steps[i];
- const float current_min = typical_lower / (i + 1);
+ const double typical_lower = typical_physics_steps[i];
+ const double current_min = typical_lower / (i + 1);
if (current_min > p_max) {
return i; // bail out of further restrictions would void the interval
} else if (current_min > p_min) {
p_min = current_min;
}
- const float current_max = (typical_lower + 1) / (i + 1);
+ const double current_max = (typical_lower + 1) / (i + 1);
if (current_max < p_min) {
return i;
} else if (current_max < p_max) {
@@ -73,7 +73,7 @@ int MainTimerSync::get_average_physics_steps(float &p_min, float &p_max) {
}
// advance physics clock by p_process_step, return appropriate number of steps to simulate
-MainFrameTime MainTimerSync::advance_core(float p_physics_step, int p_physics_fps, float p_process_step) {
+MainFrameTime MainTimerSync::advance_core(double p_physics_step, int p_physics_fps, double p_process_step) {
MainFrameTime ret;
ret.process_step = p_process_step;
@@ -146,7 +146,7 @@ MainFrameTime MainTimerSync::advance_core(float p_physics_step, int p_physics_fp
}
// calls advance_core, keeps track of deficit it adds to animaption_step, make sure the deficit sum stays close to zero
-MainFrameTime MainTimerSync::advance_checked(float p_physics_step, int p_physics_fps, float p_process_step) {
+MainFrameTime MainTimerSync::advance_checked(double p_physics_step, int p_physics_fps, double p_process_step) {
if (fixed_fps != -1) {
p_process_step = 1.0 / fixed_fps;
}
@@ -163,7 +163,7 @@ MainFrameTime MainTimerSync::advance_checked(float p_physics_step, int p_physics
// first, least important clamping: keep ret.process_step consistent with typical_physics_steps.
// this smoothes out the process steps and culls small but quick variations.
{
- float min_average_physics_steps, max_average_physics_steps;
+ double min_average_physics_steps, max_average_physics_steps;
int consistent_steps = get_average_physics_steps(min_average_physics_steps, max_average_physics_steps);
if (consistent_steps > 3) {
ret.clamp_process_step(min_average_physics_steps * p_physics_step, max_average_physics_steps * p_physics_step);
@@ -171,7 +171,7 @@ MainFrameTime MainTimerSync::advance_checked(float p_physics_step, int p_physics
}
// second clamping: keep abs(time_deficit) < jitter_fix * frame_slise
- float max_clock_deviation = get_physics_jitter_fix() * p_physics_step;
+ double max_clock_deviation = get_physics_jitter_fix() * p_physics_step;
ret.clamp_process_step(p_process_step - max_clock_deviation, p_process_step + max_clock_deviation);
// last clamping: make sure time_accum is between 0 and p_physics_step for consistency between physics and process
@@ -191,7 +191,7 @@ MainFrameTime MainTimerSync::advance_checked(float p_physics_step, int p_physics
}
// determine wall clock step since last iteration
-float MainTimerSync::get_cpu_process_step() {
+double MainTimerSync::get_cpu_process_step() {
uint64_t cpu_ticks_elapsed = current_cpu_ticks_usec - last_cpu_ticks_usec;
last_cpu_ticks_usec = current_cpu_ticks_usec;
@@ -220,8 +220,8 @@ void MainTimerSync::set_fixed_fps(int p_fixed_fps) {
}
// advance one physics frame, return timesteps to take
-MainFrameTime MainTimerSync::advance(float p_physics_step, int p_physics_fps) {
- float cpu_process_step = get_cpu_process_step();
+MainFrameTime MainTimerSync::advance(double p_physics_step, int p_physics_fps) {
+ double cpu_process_step = get_cpu_process_step();
return advance_checked(p_physics_step, p_physics_fps, cpu_process_step);
}
diff --git a/main/main_timer_sync.h b/main/main_timer_sync.h
index 884978bf96..abdec18f6d 100644
--- a/main/main_timer_sync.h
+++ b/main/main_timer_sync.h
@@ -34,11 +34,11 @@
#include "core/config/engine.h"
struct MainFrameTime {
- float process_step; // delta time to advance during process()
+ double process_step; // delta time to advance during process()
int physics_steps; // number of times to iterate the physics engine
- float interpolation_fraction; // fraction through the current physics tick
+ double interpolation_fraction; // fraction through the current physics tick
- void clamp_process_step(float min_process_step, float max_process_step);
+ void clamp_process_step(double min_process_step, double max_process_step);
};
class MainTimerSync {
@@ -47,10 +47,10 @@ class MainTimerSync {
uint64_t current_cpu_ticks_usec = 0;
// logical game time since last physics timestep
- float time_accum = 0;
+ double time_accum = 0;
// current difference between wall clock time and reported sum of process_steps
- float time_deficit = 0;
+ double time_deficit = 0;
// number of frames back for keeping accumulated physics steps roughly constant.
// value of 12 chosen because that is what is required to make 144 Hz monitors
@@ -70,20 +70,20 @@ protected:
// returns the fraction of p_physics_step required for the timer to overshoot
// before advance_core considers changing the physics_steps return from
// the typical values as defined by typical_physics_steps
- float get_physics_jitter_fix();
+ double get_physics_jitter_fix();
// gets our best bet for the average number of physics steps per render frame
// return value: number of frames back this data is consistent
- int get_average_physics_steps(float &p_min, float &p_max);
+ int get_average_physics_steps(double &p_min, double &p_max);
// advance physics clock by p_process_step, return appropriate number of steps to simulate
- MainFrameTime advance_core(float p_physics_step, int p_physics_fps, float p_process_step);
+ MainFrameTime advance_core(double p_physics_step, int p_physics_fps, double p_process_step);
// calls advance_core, keeps track of deficit it adds to animaption_step, make sure the deficit sum stays close to zero
- MainFrameTime advance_checked(float p_physics_step, int p_physics_fps, float p_process_step);
+ MainFrameTime advance_checked(double p_physics_step, int p_physics_fps, double p_process_step);
// determine wall clock step since last iteration
- float get_cpu_process_step();
+ double get_cpu_process_step();
public:
MainTimerSync();
@@ -96,7 +96,7 @@ public:
void set_fixed_fps(int p_fixed_fps);
// advance one frame, return timesteps to take
- MainFrameTime advance(float p_physics_step, int p_physics_fps);
+ MainFrameTime advance(double p_physics_step, int p_physics_fps);
};
#endif // MAIN_TIMER_SYNC_H
diff --git a/main/performance.cpp b/main/performance.cpp
index 9f5be7b8c4..f9ff34c05d 100644
--- a/main/performance.cpp
+++ b/main/performance.cpp
@@ -77,7 +77,7 @@ void Performance::_bind_methods() {
BIND_ENUM_CONSTANT(MONITOR_MAX);
}
-float Performance::_get_node_count() const {
+int Performance::_get_node_count() const {
MainLoop *ml = OS::get_singleton()->get_main_loop();
SceneTree *sml = Object::cast_to<SceneTree>(ml);
if (!sml) {
@@ -118,7 +118,7 @@ String Performance::get_monitor_name(Monitor p_monitor) const {
return names[p_monitor];
}
-float Performance::get_monitor(Monitor p_monitor) const {
+double Performance::get_monitor(Monitor p_monitor) const {
switch (p_monitor) {
case TIME_FPS:
return Engine::get_singleton()->get_frames_per_second();
@@ -207,11 +207,11 @@ Performance::MonitorType Performance::get_monitor_type(Monitor p_monitor) const
return types[p_monitor];
}
-void Performance::set_process_time(float p_pt) {
+void Performance::set_process_time(double p_pt) {
_process_time = p_pt;
}
-void Performance::set_physics_process_time(float p_pt) {
+void Performance::set_physics_process_time(double p_pt) {
_physics_process_time = p_pt;
}
diff --git a/main/performance.h b/main/performance.h
index 174b3500d1..4653051ebb 100644
--- a/main/performance.h
+++ b/main/performance.h
@@ -43,10 +43,10 @@ class Performance : public Object {
static Performance *singleton;
static void _bind_methods();
- float _get_node_count() const;
+ int _get_node_count() const;
- float _process_time;
- float _physics_process_time;
+ double _process_time;
+ double _physics_process_time;
class MonitorCall {
Callable _callable;
@@ -96,13 +96,13 @@ public:
MONITOR_TYPE_TIME
};
- float get_monitor(Monitor p_monitor) const;
+ double get_monitor(Monitor p_monitor) const;
String get_monitor_name(Monitor p_monitor) const;
MonitorType get_monitor_type(Monitor p_monitor) const;
- void set_process_time(float p_pt);
- void set_physics_process_time(float p_pt);
+ void set_process_time(double p_pt);
+ void set_physics_process_time(double p_pt);
void add_custom_monitor(const StringName &p_id, const Callable &p_callable, const Vector<Variant> &p_args);
void remove_custom_monitor(const StringName &p_id);
diff --git a/methods.py b/methods.py
index fd9978657e..13851d8315 100644
--- a/methods.py
+++ b/methods.py
@@ -61,10 +61,9 @@ def add_module_version_string(self, s):
def update_version(module_version_string=""):
-
build_name = "custom_build"
if os.getenv("BUILD_NAME") != None:
- build_name = os.getenv("BUILD_NAME")
+ build_name = str(os.getenv("BUILD_NAME"))
print("Using custom build name: " + build_name)
import version
@@ -79,7 +78,13 @@ def update_version(module_version_string=""):
f.write("#define VERSION_MAJOR " + str(version.major) + "\n")
f.write("#define VERSION_MINOR " + str(version.minor) + "\n")
f.write("#define VERSION_PATCH " + str(version.patch) + "\n")
- f.write('#define VERSION_STATUS "' + str(version.status) + '"\n')
+ # For dev snapshots (alpha, beta, RC, etc.) we do not commit status change to Git,
+ # so this define provides a way to override it without having to modify the source.
+ godot_status = str(version.status)
+ if os.getenv("GODOT_VERSION_STATUS") != None:
+ godot_status = str(os.getenv("GODOT_VERSION_STATUS"))
+ print("Using version status '{}', overriding the original '{}'.".format(godot_status, str(version.status)))
+ f.write('#define VERSION_STATUS "' + godot_status + '"\n')
f.write('#define VERSION_BUILD "' + str(build_name) + '"\n')
f.write('#define VERSION_MODULE_CONFIG "' + str(version.module_config) + module_version_string + '"\n')
f.write("#define VERSION_YEAR " + str(version.year) + "\n")
diff --git a/misc/dist/linux/org.godotengine.Godot.xml b/misc/dist/linux/org.godotengine.Godot.xml
index e51179cd61..d4452018c4 100644
--- a/misc/dist/linux/org.godotengine.Godot.xml
+++ b/misc/dist/linux/org.godotengine.Godot.xml
@@ -2,20 +2,21 @@
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="application/x-godot-project">
<comment>Godot Engine project</comment>
- <icon name="x-godot-project" />
- <glob pattern="*.godot"/>
+ <sub-class-of type="text/plain"/>
+ <icon name="x-godot-project"/>
+ <glob pattern="project.godot"/>
</mime-type>
<mime-type type="application/x-godot-resource">
<comment>Godot Engine resource</comment>
- <icon name="x-godot-resource" />
+ <icon name="x-godot-resource"/>
<glob pattern="*.res"/>
<glob pattern="*.tres"/>
</mime-type>
<mime-type type="application/x-godot-scene">
<comment>Godot Engine scene</comment>
- <icon name="x-godot-scene" />
+ <icon name="x-godot-scene"/>
<glob pattern="*.scn"/>
<glob pattern="*.tscn"/>
<glob pattern="*.escn"/>
@@ -23,13 +24,15 @@
<mime-type type="application/x-godot-shader">
<comment>Godot Engine shader</comment>
- <icon name="x-godot-shader" />
+ <sub-class-of type="text/plain"/>
+ <icon name="x-godot-shader"/>
<glob pattern="*.gdshader"/>
</mime-type>
<mime-type type="application/x-gdscript">
<comment>GDScript script</comment>
- <icon name="x-gdscript" />
+ <sub-class-of type="text/plain"/>
+ <icon name="x-gdscript"/>
<glob pattern="*.gd"/>
</mime-type>
</mime-info>
diff --git a/misc/dist/shell/_godot.zsh-completion b/misc/dist/shell/_godot.zsh-completion
index b29746bfc4..8f42c3a1a2 100644
--- a/misc/dist/shell/_godot.zsh-completion
+++ b/misc/dist/shell/_godot.zsh-completion
@@ -50,7 +50,7 @@ _arguments \
'--resolution[request window resolution]:resolution in WxH format' \
'--position[request window position]:position in X,Y format' \
'--low-dpi[force low-DPI mode (macOS and Windows only)]' \
- '--no-window[disable window creation (Windows only), useful together with --script]' \
+ '--headless[enable headless mode (--display-driver headless --audio-driver Dummy). Useful for servers and with --script]' \
'(-d --debug)'{-d,--debug}'[debug (local stdout debugger)]' \
'(-b --breakpoints)'{-b,--breakpoints}'[specify the breakpoint list as source::line comma-separated pairs, no spaces (use %20 instead)]:breakpoint list' \
'--profiling[enable profiling in the script debugger]' \
diff --git a/misc/dist/shell/godot.bash-completion b/misc/dist/shell/godot.bash-completion
index 03861e43f8..0a31c545e1 100644
--- a/misc/dist/shell/godot.bash-completion
+++ b/misc/dist/shell/godot.bash-completion
@@ -53,7 +53,7 @@ _complete_godot_options() {
--resolution
--position
--low-dpi
---no-window
+--headless
--debug
--breakpoints
--profiling
diff --git a/misc/dist/shell/godot.fish b/misc/dist/shell/godot.fish
index 1367665bbc..b44762c4ab 100644
--- a/misc/dist/shell/godot.fish
+++ b/misc/dist/shell/godot.fish
@@ -60,7 +60,7 @@ complete -c godot -s t -l always-on-top -d "Request an always-on-top window"
complete -c godot -l resolution -d "Request window resolution" -x
complete -c godot -l position -d "Request window position" -x
complete -c godot -l low-dpi -d "Force low-DPI mode (macOS and Windows only)"
-complete -c godot -l no-window -d "Disable window creation (Windows only), useful together with --script"
+complete -c godot -l headless -d "Enable headless mode (--display-driver headless --audio-driver Dummy). Useful for servers and with --script"
# Debug options:
complete -c godot -s d -l debug -d "Debug (local stdout debugger)"
diff --git a/misc/dist/windows/modpath.pas b/misc/dist/windows/modpath.pas
index c55ec60163..ab09f18254 100644
--- a/misc/dist/windows/modpath.pas
+++ b/misc/dist/windows/modpath.pas
@@ -144,7 +144,7 @@ begin
end;
end;
-// Split a string into an array using passed delimeter
+// Split a string into an array using passed delimiter.
procedure MPExplode(var Dest: TArrayOfString; Text: String; Separator: String);
var
i: Integer;
diff --git a/misc/scripts/check_ci_log.py b/misc/scripts/check_ci_log.py
index 56c32b154c..2c75b83bd7 100755
--- a/misc/scripts/check_ci_log.py
+++ b/misc/scripts/check_ci_log.py
@@ -5,7 +5,7 @@ import sys
if len(sys.argv) < 2:
print("ERROR: You must run program with file name as argument.")
- sys.exit(1)
+ sys.exit(50)
fname = sys.argv[1]
@@ -17,7 +17,7 @@ file_contents = fileread.read()
if file_contents.find("ERROR: AddressSanitizer:") != -1:
print("FATAL ERROR: An incorrectly used memory was found.")
- sys.exit(1)
+ sys.exit(51)
# There is also possible, that program crashed with or without backtrace.
@@ -27,7 +27,7 @@ if (
or file_contents.find("Segmentation fault (core dumped)") != -1
):
print("FATAL ERROR: Godot has been crashed.")
- sys.exit(1)
+ sys.exit(52)
# Finding memory leaks in Godot is quite difficult, because we need to take into
# account leaks also in external libraries. They are usually provided without
@@ -38,7 +38,7 @@ if (
if file_contents.find("ERROR: LeakSanitizer:") != -1:
if file_contents.find("#4 0x") != -1:
print("ERROR: Memory leak was found")
- sys.exit(1)
+ sys.exit(53)
# It may happen that Godot detects leaking nodes/resources and removes them, so
# this possibility should also be handled as a potential error, even if
@@ -46,7 +46,7 @@ if file_contents.find("ERROR: LeakSanitizer:") != -1:
if file_contents.find("ObjectDB instances leaked at exit") != -1:
print("ERROR: Memory leak was found")
- sys.exit(1)
+ sys.exit(54)
# In test project may be put several assert functions which will control if
# project is executed with right parameters etc. which normally will not stop
@@ -54,7 +54,7 @@ if file_contents.find("ObjectDB instances leaked at exit") != -1:
if file_contents.find("Assertion failed") != -1:
print("ERROR: Assertion failed in project, check execution log for more info")
- sys.exit(1)
+ sys.exit(55)
# For now Godot leaks a lot of rendering stuff so for now we just show info
# about it and this needs to be re-enabled after fixing this memory leaks.
diff --git a/misc/scripts/make_tarball.sh b/misc/scripts/make_tarball.sh
new file mode 100755
index 0000000000..9e02b80af1
--- /dev/null
+++ b/misc/scripts/make_tarball.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+if [ ! -e "version.py" ]; then
+ echo "This script should be ran from the root folder of the Godot repository."
+ exit 1
+fi
+
+while getopts "h?sv:g:" opt; do
+ case "$opt" in
+ h|\?)
+ echo "Usage: $0 [OPTIONS...]"
+ echo
+ echo " -s script friendly file name (godot.tar.gz)"
+ echo " -v godot version for file name (e.g. 4.0-stable)"
+ echo " -g git treeish to archive (e.g. master)"
+ echo
+ exit 1
+ ;;
+ s)
+ script_friendly_name=1
+ ;;
+ v)
+ godot_version=$OPTARG
+ ;;
+ g)
+ git_treeish=$OPTARG
+ ;;
+ esac
+done
+
+if [ ! -z "$git_treeish" ]; then
+ HEAD=$(git rev-parse $git_treeish)
+else
+ HEAD=$(git rev-parse HEAD)
+fi
+
+if [ ! -z "$script_friendly_name" ]; then
+ NAME=godot
+else
+ if [ ! -z "$godot_version" ]; then
+ NAME=godot-$godot_version
+ else
+ NAME=godot-$HEAD
+ fi
+fi
+
+CURDIR=$(pwd)
+TMPDIR=$(mktemp -d -t godot-XXXXXX)
+
+echo "Generating tarball for revision $HEAD with folder name '$NAME'."
+echo
+echo "The tarball will be written to the parent folder:"
+echo " $(dirname $CURDIR)/$NAME.tar.gz"
+
+git archive $HEAD --prefix=$NAME/ -o $TMPDIR/$NAME.tar
+
+# Adding custom .git/HEAD to tarball so that we can generate VERSION_HASH.
+cd $TMPDIR
+mkdir -p $NAME/.git
+echo $HEAD > $NAME/.git/HEAD
+tar -uf $NAME.tar $NAME
+
+cd $CURDIR
+gzip -c $TMPDIR/$NAME.tar > ../$NAME.tar.gz
+
+rm -rf $TMPDIR
diff --git a/modules/bullet/godot_result_callbacks.cpp b/modules/bullet/godot_result_callbacks.cpp
index 1fd656c9b4..399b102284 100644
--- a/modules/bullet/godot_result_callbacks.cpp
+++ b/modules/bullet/godot_result_callbacks.cpp
@@ -52,7 +52,7 @@ bool GodotFilterCallback::needBroadphaseCollision(btBroadphaseProxy *proxy0, btB
}
bool GodotClosestRayResultCallback::needsCollision(btBroadphaseProxy *proxy0) const {
- if (m_collisionFilterGroup & proxy0->m_collisionFilterMask) {
+ if (proxy0->m_collisionFilterGroup & m_collisionFilterMask) {
btCollisionObject *btObj = static_cast<btCollisionObject *>(proxy0->m_clientObject);
CollisionObjectBullet *gObj = static_cast<CollisionObjectBullet *>(btObj->getUserPointer());
@@ -85,7 +85,7 @@ bool GodotAllConvexResultCallback::needsCollision(btBroadphaseProxy *proxy0) con
return false;
}
- if (m_collisionFilterGroup & proxy0->m_collisionFilterMask) {
+ if (proxy0->m_collisionFilterGroup & m_collisionFilterMask) {
btCollisionObject *btObj = static_cast<btCollisionObject *>(proxy0->m_clientObject);
CollisionObjectBullet *gObj = static_cast<CollisionObjectBullet *>(btObj->getUserPointer());
if (m_exclude->has(gObj->get_self())) {
@@ -117,7 +117,7 @@ btScalar GodotAllConvexResultCallback::addSingleResult(btCollisionWorld::LocalCo
}
bool GodotKinClosestConvexResultCallback::needsCollision(btBroadphaseProxy *proxy0) const {
- if (m_collisionFilterGroup & proxy0->m_collisionFilterMask) {
+ if (proxy0->m_collisionFilterGroup & m_collisionFilterMask) {
btCollisionObject *btObj = static_cast<btCollisionObject *>(proxy0->m_clientObject);
CollisionObjectBullet *gObj = static_cast<CollisionObjectBullet *>(btObj->getUserPointer());
if (gObj == m_self_object) {
@@ -143,7 +143,7 @@ bool GodotKinClosestConvexResultCallback::needsCollision(btBroadphaseProxy *prox
}
bool GodotClosestConvexResultCallback::needsCollision(btBroadphaseProxy *proxy0) const {
- if (m_collisionFilterGroup & proxy0->m_collisionFilterMask) {
+ if (proxy0->m_collisionFilterGroup & m_collisionFilterMask) {
btCollisionObject *btObj = static_cast<btCollisionObject *>(proxy0->m_clientObject);
CollisionObjectBullet *gObj = static_cast<CollisionObjectBullet *>(btObj->getUserPointer());
@@ -180,7 +180,7 @@ bool GodotAllContactResultCallback::needsCollision(btBroadphaseProxy *proxy0) co
return false;
}
- if (m_collisionFilterGroup & proxy0->m_collisionFilterMask) {
+ if (proxy0->m_collisionFilterGroup & m_collisionFilterMask) {
btCollisionObject *btObj = static_cast<btCollisionObject *>(proxy0->m_clientObject);
CollisionObjectBullet *gObj = static_cast<CollisionObjectBullet *>(btObj->getUserPointer());
@@ -235,7 +235,7 @@ bool GodotContactPairContactResultCallback::needsCollision(btBroadphaseProxy *pr
return false;
}
- if (m_collisionFilterGroup & proxy0->m_collisionFilterMask) {
+ if (proxy0->m_collisionFilterGroup & m_collisionFilterMask) {
btCollisionObject *btObj = static_cast<btCollisionObject *>(proxy0->m_clientObject);
CollisionObjectBullet *gObj = static_cast<CollisionObjectBullet *>(btObj->getUserPointer());
@@ -277,7 +277,7 @@ btScalar GodotContactPairContactResultCallback::addSingleResult(btManifoldPoint
}
bool GodotRestInfoContactResultCallback::needsCollision(btBroadphaseProxy *proxy0) const {
- if (m_collisionFilterGroup & proxy0->m_collisionFilterMask) {
+ if (proxy0->m_collisionFilterGroup & m_collisionFilterMask) {
btCollisionObject *btObj = static_cast<btCollisionObject *>(proxy0->m_clientObject);
CollisionObjectBullet *gObj = static_cast<CollisionObjectBullet *>(btObj->getUserPointer());
diff --git a/modules/bullet/space_bullet.cpp b/modules/bullet/space_bullet.cpp
index 8c286a8629..583900e6bc 100644
--- a/modules/bullet/space_bullet.cpp
+++ b/modules/bullet/space_bullet.cpp
@@ -1133,7 +1133,7 @@ public:
virtual bool process(const btBroadphaseProxy *proxy) {
btCollisionObject *co = static_cast<btCollisionObject *>(proxy->m_clientObject);
if (co->getInternalType() <= btCollisionObject::CO_RIGID_BODY) {
- if (self_collision_object != proxy->m_clientObject && (collision_layer & proxy->m_collisionFilterMask)) {
+ if (self_collision_object != proxy->m_clientObject && (proxy->collision_layer & m_collisionFilterMask)) {
if (co->getCollisionShape()->isCompound()) {
const btCompoundShape *cs = static_cast<btCompoundShape *>(co->getCollisionShape());
diff --git a/modules/camera/camera_osx.h b/modules/camera/camera_osx.h
index 964b7c1edc..84274f0bf6 100644
--- a/modules/camera/camera_osx.h
+++ b/modules/camera/camera_osx.h
@@ -32,7 +32,7 @@
#define CAMERAOSX_H
///@TODO this is a near duplicate of CameraIOS, we should find a way to combine those to minimize code duplication!!!!
-// If you fix something here, make sure you fix it there as wel!
+// If you fix something here, make sure you fix it there as well!
#include "servers/camera_server.h"
diff --git a/modules/camera/camera_osx.mm b/modules/camera/camera_osx.mm
index 6bc56add20..4875eb578a 100644
--- a/modules/camera/camera_osx.mm
+++ b/modules/camera/camera_osx.mm
@@ -29,7 +29,7 @@
/*************************************************************************/
///@TODO this is a near duplicate of CameraIOS, we should find a way to combine those to minimize code duplication!!!!
-// If you fix something here, make sure you fix it there as wel!
+// If you fix something here, make sure you fix it there as well!
#include "camera_osx.h"
#include "servers/camera/camera_feed.h"
diff --git a/modules/csg/csg.cpp b/modules/csg/csg.cpp
index 57206ae18b..cb82b65307 100644
--- a/modules/csg/csg.cpp
+++ b/modules/csg/csg.cpp
@@ -530,8 +530,8 @@ void CSGBrushOperation::MeshMerge::_add_distance(List<real_t> &r_intersectionsA,
List<real_t> &intersections = p_from_B ? r_intersectionsB : r_intersectionsA;
// Check if distance exists.
- for (const List<real_t>::Element *E = intersections.front(); E; E = E->next()) {
- if (Math::is_equal_approx(**E, p_distance)) {
+ for (const real_t E : intersections) {
+ if (Math::is_equal_approx(E, p_distance)) {
return;
}
}
diff --git a/modules/csg/csg_gizmos.cpp b/modules/csg/csg_gizmos.cpp
index 37a7d96de5..42f8b9f163 100644
--- a/modules/csg/csg_gizmos.cpp
+++ b/modules/csg/csg_gizmos.cpp
@@ -29,6 +29,8 @@
/*************************************************************************/
#include "csg_gizmos.h"
+#include "editor/plugins/node_3d_editor_plugin.h"
+#include "scene/3d/camera_3d.h"
///////////
@@ -48,7 +50,7 @@ CSGShape3DGizmoPlugin::CSGShape3DGizmoPlugin() {
create_handle_material("handles");
}
-String CSGShape3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const {
+String CSGShape3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const {
CSGShape3D *cs = Object::cast_to<CSGShape3D>(p_gizmo->get_spatial_node());
if (Object::cast_to<CSGSphere3D>(cs)) {
@@ -60,17 +62,17 @@ String CSGShape3DGizmoPlugin::get_handle_name(const EditorNode3DGizmo *p_gizmo,
}
if (Object::cast_to<CSGCylinder3D>(cs)) {
- return p_idx == 0 ? "Radius" : "Height";
+ return p_id == 0 ? "Radius" : "Height";
}
if (Object::cast_to<CSGTorus3D>(cs)) {
- return p_idx == 0 ? "InnerRadius" : "OuterRadius";
+ return p_id == 0 ? "InnerRadius" : "OuterRadius";
}
return "";
}
-Variant CSGShape3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const {
+Variant CSGShape3DGizmoPlugin::get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const {
CSGShape3D *cs = Object::cast_to<CSGShape3D>(p_gizmo->get_spatial_node());
if (Object::cast_to<CSGSphere3D>(cs)) {
@@ -85,18 +87,18 @@ Variant CSGShape3DGizmoPlugin::get_handle_value(EditorNode3DGizmo *p_gizmo, int
if (Object::cast_to<CSGCylinder3D>(cs)) {
CSGCylinder3D *s = Object::cast_to<CSGCylinder3D>(cs);
- return p_idx == 0 ? s->get_radius() : s->get_height();
+ return p_id == 0 ? s->get_radius() : s->get_height();
}
if (Object::cast_to<CSGTorus3D>(cs)) {
CSGTorus3D *s = Object::cast_to<CSGTorus3D>(cs);
- return p_idx == 0 ? s->get_inner_radius() : s->get_outer_radius();
+ return p_id == 0 ? s->get_inner_radius() : s->get_outer_radius();
}
return Variant();
}
-void CSGShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) {
+void CSGShape3DGizmoPlugin::set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const {
CSGShape3D *cs = Object::cast_to<CSGShape3D>(p_gizmo->get_spatial_node());
Transform3D gt = cs->get_global_transform();
@@ -129,10 +131,16 @@ void CSGShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Ca
CSGBox3D *s = Object::cast_to<CSGBox3D>(cs);
Vector3 axis;
- axis[p_idx] = 1.0;
+ axis[p_id] = 1.0;
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(Vector3(), axis * 4096, sg[0], sg[1], ra, rb);
- float d = ra[p_idx];
+ float d = ra[p_id];
+
+ if (Math::is_nan(d)) {
+ // The handle is perpendicular to the camera.
+ return;
+ }
+
if (Node3DEditor::get_singleton()->is_snap_enabled()) {
d = Math::snapped(d, Node3DEditor::get_singleton()->get_translate_snap());
}
@@ -142,7 +150,7 @@ void CSGShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Ca
}
Vector3 h = s->get_size();
- h[p_idx] = d * 2;
+ h[p_id] = d * 2;
s->set_size(h);
}
@@ -150,7 +158,7 @@ void CSGShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Ca
CSGCylinder3D *s = Object::cast_to<CSGCylinder3D>(cs);
Vector3 axis;
- axis[p_idx == 0 ? 0 : 1] = 1.0;
+ axis[p_id == 0 ? 0 : 1] = 1.0;
Vector3 ra, rb;
Geometry3D::get_closest_points_between_segments(Vector3(), axis * 4096, sg[0], sg[1], ra, rb);
float d = axis.dot(ra);
@@ -162,9 +170,9 @@ void CSGShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Ca
d = 0.001;
}
- if (p_idx == 0) {
+ if (p_id == 0) {
s->set_radius(d);
- } else if (p_idx == 1) {
+ } else if (p_id == 1) {
s->set_height(d * 2.0);
}
}
@@ -185,15 +193,15 @@ void CSGShape3DGizmoPlugin::set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Ca
d = 0.001;
}
- if (p_idx == 0) {
+ if (p_id == 0) {
s->set_inner_radius(d);
- } else if (p_idx == 1) {
+ } else if (p_id == 1) {
s->set_outer_radius(d);
}
}
}
-void CSGShape3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) {
+void CSGShape3DGizmoPlugin::commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const {
CSGShape3D *cs = Object::cast_to<CSGShape3D>(p_gizmo->get_spatial_node());
if (Object::cast_to<CSGSphere3D>(cs)) {
@@ -227,7 +235,7 @@ void CSGShape3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx,
if (Object::cast_to<CSGCylinder3D>(cs)) {
CSGCylinder3D *s = Object::cast_to<CSGCylinder3D>(cs);
if (p_cancel) {
- if (p_idx == 0) {
+ if (p_id == 0) {
s->set_radius(p_restore);
} else {
s->set_height(p_restore);
@@ -236,7 +244,7 @@ void CSGShape3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx,
}
UndoRedo *ur = Node3DEditor::get_singleton()->get_undo_redo();
- if (p_idx == 0) {
+ if (p_id == 0) {
ur->create_action(TTR("Change Cylinder Radius"));
ur->add_do_method(s, "set_radius", s->get_radius());
ur->add_undo_method(s, "set_radius", p_restore);
@@ -252,7 +260,7 @@ void CSGShape3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx,
if (Object::cast_to<CSGTorus3D>(cs)) {
CSGTorus3D *s = Object::cast_to<CSGTorus3D>(cs);
if (p_cancel) {
- if (p_idx == 0) {
+ if (p_id == 0) {
s->set_inner_radius(p_restore);
} else {
s->set_outer_radius(p_restore);
@@ -261,7 +269,7 @@ void CSGShape3DGizmoPlugin::commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx,
}
UndoRedo *ur = Node3DEditor::get_singleton()->get_undo_redo();
- if (p_idx == 0) {
+ if (p_id == 0) {
ur->create_action(TTR("Change Torus Inner Radius"));
ur->add_do_method(s, "set_inner_radius", s->get_inner_radius());
ur->add_undo_method(s, "set_inner_radius", p_restore);
@@ -356,7 +364,7 @@ void CSGShape3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) {
break;
}
- p_gizmo->add_mesh(mesh, false, Ref<SkinReference>(), solid_material);
+ p_gizmo->add_mesh(mesh, solid_material);
}
if (Object::cast_to<CSGSphere3D>(cs)) {
diff --git a/modules/csg/csg_gizmos.h b/modules/csg/csg_gizmos.h
index 8f7da35de3..847313c0b4 100644
--- a/modules/csg/csg_gizmos.h
+++ b/modules/csg/csg_gizmos.h
@@ -33,22 +33,22 @@
#include "csg_shape.h"
#include "editor/editor_plugin.h"
-#include "editor/node_3d_editor_gizmos.h"
+#include "editor/plugins/node_3d_editor_gizmos.h"
class CSGShape3DGizmoPlugin : public EditorNode3DGizmoPlugin {
GDCLASS(CSGShape3DGizmoPlugin, EditorNode3DGizmoPlugin);
public:
- bool has_gizmo(Node3D *p_spatial) override;
- String get_gizmo_name() const override;
- int get_priority() const override;
- bool is_selectable_when_hidden() const override;
- void redraw(EditorNode3DGizmo *p_gizmo) override;
-
- String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- Variant get_handle_value(EditorNode3DGizmo *p_gizmo, int p_idx) const override;
- void set_handle(EditorNode3DGizmo *p_gizmo, int p_idx, Camera3D *p_camera, const Point2 &p_point) override;
- void commit_handle(EditorNode3DGizmo *p_gizmo, int p_idx, const Variant &p_restore, bool p_cancel) override;
+ virtual bool has_gizmo(Node3D *p_spatial) override;
+ virtual String get_gizmo_name() const override;
+ virtual int get_priority() const override;
+ virtual bool is_selectable_when_hidden() const override;
+ virtual void redraw(EditorNode3DGizmo *p_gizmo) override;
+
+ virtual String get_handle_name(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ virtual Variant get_handle_value(const EditorNode3DGizmo *p_gizmo, int p_id) const override;
+ virtual void set_handle(const EditorNode3DGizmo *p_gizmo, int p_id, Camera3D *p_camera, const Point2 &p_point) const override;
+ virtual void commit_handle(const EditorNode3DGizmo *p_gizmo, int p_id, const Variant &p_restore, bool p_cancel) const override;
CSGShape3DGizmoPlugin();
};
diff --git a/modules/csg/csg_shape.cpp b/modules/csg/csg_shape.cpp
index 729dc2f8fc..b47fa35f1a 100644
--- a/modules/csg/csg_shape.cpp
+++ b/modules/csg/csg_shape.cpp
@@ -548,7 +548,7 @@ void CSGShape3D::_notification(int p_what) {
void CSGShape3D::set_operation(Operation p_operation) {
operation = p_operation;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
CSGShape3D::Operation CSGShape3D::get_operation() const {
@@ -845,7 +845,7 @@ CSGBrush *CSGMesh3D::_build_brush() {
void CSGMesh3D::_mesh_changed() {
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
void CSGMesh3D::set_material(const Ref<Material> &p_material) {
@@ -923,36 +923,40 @@ CSGBrush *CSGSphere3D::_build_brush() {
Ref<Material> *materialsw = materials.ptrw();
bool *invertw = invert.ptrw();
- const double lat_step = 1.0 / rings;
- const double lon_step = 1.0 / radial_segments;
+ // We want to follow an order that's convenient for UVs.
+ // For latitude step we start at the top and move down like in an image.
+ const double latitude_step = -Math_PI / rings;
+ const double longitude_step = Math_TAU / radial_segments;
int face = 0;
- for (int i = 1; i <= rings; i++) {
- double lat0 = Math_PI * (0.5 - (i - 1) * lat_step);
- double c0 = Math::cos(lat0);
- double s0 = Math::sin(lat0);
- double v0 = double(i - 1) / rings;
-
- double lat1 = Math_PI * (0.5 - i * lat_step);
- double c1 = Math::cos(lat1);
- double s1 = Math::sin(lat1);
- double v1 = double(i) / rings;
-
- for (int j = 1; j <= radial_segments; j++) {
- double lng0 = Math_TAU * (0.5 - (j - 1) * lon_step);
- double x0 = Math::cos(lng0);
- double y0 = Math::sin(lng0);
- double u0 = double(j - 1) / radial_segments;
-
- double lng1 = Math_TAU * (0.5 - j * lon_step);
- double x1 = Math::cos(lng1);
- double y1 = Math::sin(lng1);
- double u1 = double(j) / radial_segments;
+ for (int i = 0; i < rings; i++) {
+ double latitude0 = latitude_step * i + Math_TAU / 4;
+ double cos0 = Math::cos(latitude0);
+ double sin0 = Math::sin(latitude0);
+ double v0 = double(i) / rings;
+
+ double latitude1 = latitude_step * (i + 1) + Math_TAU / 4;
+ double cos1 = Math::cos(latitude1);
+ double sin1 = Math::sin(latitude1);
+ double v1 = double(i + 1) / rings;
+
+ for (int j = 0; j < radial_segments; j++) {
+ double longitude0 = longitude_step * j;
+ // We give sin to X and cos to Z on purpose.
+ // This allows UVs to be CCW on +X so it maps to images well.
+ double x0 = Math::sin(longitude0);
+ double z0 = Math::cos(longitude0);
+ double u0 = double(j) / radial_segments;
+
+ double longitude1 = longitude_step * (j + 1);
+ double x1 = Math::sin(longitude1);
+ double z1 = Math::cos(longitude1);
+ double u1 = double(j + 1) / radial_segments;
Vector3 v[4] = {
- Vector3(x0 * c0, s0, y0 * c0) * radius,
- Vector3(x1 * c0, s0, y1 * c0) * radius,
- Vector3(x1 * c1, s1, y1 * c1) * radius,
- Vector3(x0 * c1, s1, y0 * c1) * radius,
+ Vector3(x0 * cos0, sin0, z0 * cos0) * radius,
+ Vector3(x1 * cos0, sin0, z1 * cos0) * radius,
+ Vector3(x1 * cos1, sin1, z1 * cos1) * radius,
+ Vector3(x0 * cos1, sin1, z0 * cos1) * radius,
};
Vector2 u[4] = {
@@ -962,8 +966,8 @@ CSGBrush *CSGSphere3D::_build_brush() {
Vector2(u0, v1),
};
- if (i < rings) {
- //face 1
+ // Draw the first face, but skip this at the north pole (i == 0).
+ if (i > 0) {
facesw[face * 3 + 0] = v[0];
facesw[face * 3 + 1] = v[1];
facesw[face * 3 + 2] = v[2];
@@ -979,8 +983,8 @@ CSGBrush *CSGSphere3D::_build_brush() {
face++;
}
- if (i > 1) {
- //face 2
+ // Draw the second face, but skip this at the south pole (i == rings - 1).
+ if (i < rings - 1) {
facesw[face * 3 + 0] = v[2];
facesw[face * 3 + 1] = v[3];
facesw[face * 3 + 2] = v[0];
@@ -1034,7 +1038,7 @@ void CSGSphere3D::set_radius(const float p_radius) {
ERR_FAIL_COND(p_radius <= 0);
radius = p_radius;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
float CSGSphere3D::get_radius() const {
@@ -1044,7 +1048,7 @@ float CSGSphere3D::get_radius() const {
void CSGSphere3D::set_radial_segments(const int p_radial_segments) {
radial_segments = p_radial_segments > 4 ? p_radial_segments : 4;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
int CSGSphere3D::get_radial_segments() const {
@@ -1054,7 +1058,7 @@ int CSGSphere3D::get_radial_segments() const {
void CSGSphere3D::set_rings(const int p_rings) {
rings = p_rings > 1 ? p_rings : 1;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
int CSGSphere3D::get_rings() const {
@@ -1203,7 +1207,7 @@ void CSGBox3D::_bind_methods() {
void CSGBox3D::set_size(const Vector3 &p_size) {
size = p_size;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
Vector3 CSGBox3D::get_size() const {
@@ -1213,7 +1217,7 @@ Vector3 CSGBox3D::get_size() const {
void CSGBox3D::set_material(const Ref<Material> &p_material) {
material = p_material;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
Ref<Material> CSGBox3D::get_material() const {
@@ -1384,7 +1388,7 @@ void CSGCylinder3D::_bind_methods() {
void CSGCylinder3D::set_radius(const float p_radius) {
radius = p_radius;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
float CSGCylinder3D::get_radius() const {
@@ -1394,7 +1398,7 @@ float CSGCylinder3D::get_radius() const {
void CSGCylinder3D::set_height(const float p_height) {
height = p_height;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
float CSGCylinder3D::get_height() const {
@@ -1405,7 +1409,7 @@ void CSGCylinder3D::set_sides(const int p_sides) {
ERR_FAIL_COND(p_sides < 3);
sides = p_sides;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
int CSGCylinder3D::get_sides() const {
@@ -1415,7 +1419,7 @@ int CSGCylinder3D::get_sides() const {
void CSGCylinder3D::set_cone(const bool p_cone) {
cone = p_cone;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
bool CSGCylinder3D::is_cone() const {
@@ -1603,7 +1607,7 @@ void CSGTorus3D::_bind_methods() {
void CSGTorus3D::set_inner_radius(const float p_inner_radius) {
inner_radius = p_inner_radius;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
float CSGTorus3D::get_inner_radius() const {
@@ -1613,7 +1617,7 @@ float CSGTorus3D::get_inner_radius() const {
void CSGTorus3D::set_outer_radius(const float p_outer_radius) {
outer_radius = p_outer_radius;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
float CSGTorus3D::get_outer_radius() const {
@@ -1624,7 +1628,7 @@ void CSGTorus3D::set_sides(const int p_sides) {
ERR_FAIL_COND(p_sides < 3);
sides = p_sides;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
int CSGTorus3D::get_sides() const {
@@ -1635,7 +1639,7 @@ void CSGTorus3D::set_ring_sides(const int p_ring_sides) {
ERR_FAIL_COND(p_ring_sides < 3);
ring_sides = p_ring_sides;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
int CSGTorus3D::get_ring_sides() const {
@@ -2172,7 +2176,7 @@ void CSGPolygon3D::_validate_property(PropertyInfo &property) const {
void CSGPolygon3D::_path_changed() {
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
void CSGPolygon3D::_path_exited() {
@@ -2248,7 +2252,7 @@ void CSGPolygon3D::_bind_methods() {
void CSGPolygon3D::set_polygon(const Vector<Vector2> &p_polygon) {
polygon = p_polygon;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
Vector<Vector2> CSGPolygon3D::get_polygon() const {
@@ -2258,7 +2262,7 @@ Vector<Vector2> CSGPolygon3D::get_polygon() const {
void CSGPolygon3D::set_mode(Mode p_mode) {
mode = p_mode;
_make_dirty();
- update_gizmo();
+ update_gizmos();
notify_property_list_changed();
}
@@ -2270,7 +2274,7 @@ void CSGPolygon3D::set_depth(const float p_depth) {
ERR_FAIL_COND(p_depth < 0.001);
depth = p_depth;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
float CSGPolygon3D::get_depth() const {
@@ -2290,7 +2294,7 @@ void CSGPolygon3D::set_spin_degrees(const float p_spin_degrees) {
ERR_FAIL_COND(p_spin_degrees < 0.01 || p_spin_degrees > 360);
spin_degrees = p_spin_degrees;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
float CSGPolygon3D::get_spin_degrees() const {
@@ -2301,7 +2305,7 @@ void CSGPolygon3D::set_spin_sides(const int p_spin_sides) {
ERR_FAIL_COND(p_spin_sides < 3);
spin_sides = p_spin_sides;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
int CSGPolygon3D::get_spin_sides() const {
@@ -2311,7 +2315,7 @@ int CSGPolygon3D::get_spin_sides() const {
void CSGPolygon3D::set_path_node(const NodePath &p_path) {
path_node = p_path;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
NodePath CSGPolygon3D::get_path_node() const {
@@ -2322,7 +2326,7 @@ void CSGPolygon3D::set_path_interval(float p_interval) {
ERR_FAIL_COND_MSG(p_interval < 0.001, "Path interval cannot be smaller than 0.001.");
path_interval = p_interval;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
float CSGPolygon3D::get_path_interval() const {
@@ -2332,7 +2336,7 @@ float CSGPolygon3D::get_path_interval() const {
void CSGPolygon3D::set_path_rotation(PathRotation p_rotation) {
path_rotation = p_rotation;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
CSGPolygon3D::PathRotation CSGPolygon3D::get_path_rotation() const {
@@ -2342,7 +2346,7 @@ CSGPolygon3D::PathRotation CSGPolygon3D::get_path_rotation() const {
void CSGPolygon3D::set_path_local(bool p_enable) {
path_local = p_enable;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
bool CSGPolygon3D::is_path_local() const {
@@ -2352,7 +2356,7 @@ bool CSGPolygon3D::is_path_local() const {
void CSGPolygon3D::set_path_joined(bool p_enable) {
path_joined = p_enable;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
bool CSGPolygon3D::is_path_joined() const {
diff --git a/modules/csg/doc_classes/CSGShape3D.xml b/modules/csg/doc_classes/CSGShape3D.xml
index 01ec46e707..f42ce8c379 100644
--- a/modules/csg/doc_classes/CSGShape3D.xml
+++ b/modules/csg/doc_classes/CSGShape3D.xml
@@ -10,55 +10,43 @@
</tutorials>
<methods>
<method name="get_collision_layer_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns an individual bit on the collision mask.
</description>
</method>
<method name="get_collision_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns an individual bit on the collision mask.
</description>
</method>
<method name="get_meshes" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an [Array] with two elements, the first is the [Transform3D] of this node and the second is the root [Mesh] of this node. Only works when this node is the root shape.
</description>
</method>
<method name="is_root_shape" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this is a root shape and is thus the object that is rendered.
</description>
</method>
<method name="set_collision_layer_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
Sets individual bits on the layer mask. Use this if you only need to change one layer's value.
</description>
</method>
<method name="set_collision_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
Sets individual bits on the collision mask. Use this if you only need to change one layer's value.
</description>
diff --git a/modules/enet/config.py b/modules/enet/config.py
index 3662b2d94e..9102c74579 100644
--- a/modules/enet/config.py
+++ b/modules/enet/config.py
@@ -9,6 +9,8 @@ def configure(env):
def get_doc_classes():
return [
"ENetMultiplayerPeer",
+ "ENetConnection",
+ "ENetPacketPeer",
]
diff --git a/modules/enet/doc_classes/ENetConnection.xml b/modules/enet/doc_classes/ENetConnection.xml
new file mode 100644
index 0000000000..c2a85ffdf8
--- /dev/null
+++ b/modules/enet/doc_classes/ENetConnection.xml
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="ENetConnection" inherits="RefCounted" version="4.0">
+ <brief_description>
+ A wrapper class for an [url=http://enet.bespin.org/group__host.html]ENetHost[/url].
+ </brief_description>
+ <description>
+ ENet's purpose is to provide a relatively thin, simple and robust network communication layer on top of UDP (User Datagram Protocol).
+ </description>
+ <tutorials>
+ <link title="API documentation on the ENet website">http://enet.bespin.org/usergroup0.html</link>
+ </tutorials>
+ <methods>
+ <method name="bandwidth_limit">
+ <return type="void" />
+ <argument index="0" name="in_bandwidth" type="int" default="0" />
+ <argument index="1" name="out_bandwidth" type="int" default="0" />
+ <description>
+ Adjusts the bandwidth limits of a host.
+ </description>
+ </method>
+ <method name="broadcast">
+ <return type="void" />
+ <argument index="0" name="channel" type="int" />
+ <argument index="1" name="packet" type="PackedByteArray" />
+ <argument index="2" name="flags" type="int" />
+ <description>
+ Queues a [code]packet[/code] to be sent to all peers associated with the host over the specified [code]channel[/code]. See [ENetPacketPeer] [code]FLAG_*[/code] constants for available packet flags.
+ </description>
+ </method>
+ <method name="channel_limit">
+ <return type="void" />
+ <argument index="0" name="limit" type="int" />
+ <description>
+ Limits the maximum allowed channels of future incoming connections.
+ </description>
+ </method>
+ <method name="compress">
+ <return type="void" />
+ <argument index="0" name="mode" type="int" enum="ENetConnection.CompressionMode" />
+ <description>
+ Sets the compression method used for network packets. These have different tradeoffs of compression speed versus bandwidth, you may need to test which one works best for your use case if you use compression at all.
+ [b]Note:[/b] Most games' network design involve sending many small packets frequently (smaller than 4 KB each). If in doubt, it is recommended to keep the default compression algorithm as it works best on these small packets.
+ </description>
+ </method>
+ <method name="connect_to_host">
+ <return type="ENetPacketPeer" />
+ <argument index="0" name="address" type="String" />
+ <argument index="1" name="port" type="int" />
+ <argument index="2" name="channels" type="int" default="0" />
+ <argument index="3" name="data" type="int" default="0" />
+ <description>
+ Initiates a connection to a foreign [code]address[/code] using the specified [code]port[/code] and allocting the requested [code]channels[/code]. Optional [code]data[/code] can be passed during connection in the form of a 32 bit integer.
+ Note: You must call either [method create_host] or [method create_host_bound] before calling this method.
+ </description>
+ </method>
+ <method name="create_host">
+ <return type="int" enum="Error" />
+ <argument index="0" name="max_peers" type="int" default="32" />
+ <argument index="1" name="max_channels" type="int" default="0" />
+ <argument index="2" name="in_bandwidth" type="int" default="0" />
+ <argument index="3" name="out_bandwidth" type="int" default="0" />
+ <description>
+ Create an ENetHost that will allow up to [code]max_peers[/code] connected peers, each allocating up to [code]max_channels[/code] channels, optionally limiting bandwith to [code]in_bandwidth[/code] and [code]out_bandwidth[/code].
+ </description>
+ </method>
+ <method name="create_host_bound">
+ <return type="int" enum="Error" />
+ <argument index="0" name="bind_address" type="String" />
+ <argument index="1" name="bind_port" type="int" />
+ <argument index="2" name="max_peers" type="int" default="32" />
+ <argument index="3" name="max_channels" type="int" default="0" />
+ <argument index="4" name="in_bandwidth" type="int" default="0" />
+ <argument index="5" name="out_bandwidth" type="int" default="0" />
+ <description>
+ Create an ENetHost like [method create_host] which is also bound to the given [code]bind_address[/code] and [code]bind_port[/code].
+ </description>
+ </method>
+ <method name="destroy">
+ <return type="void" />
+ <description>
+ Destroys the host and all resources associated with it.
+ </description>
+ </method>
+ <method name="dtls_client_setup">
+ <return type="int" enum="Error" />
+ <argument index="0" name="certificate" type="X509Certificate" />
+ <argument index="1" name="hostname" type="String" />
+ <argument index="2" name="verify" type="bool" default="true" />
+ <description>
+ Configure this ENetHost to use the custom Godot extension allowing DTLS encryption for ENet clients. Call this before [method connect_to_host] to have ENet connect using DTLS with [code]certificate[/code] and [code]hostname[/code] verification. Verification can be optionally turned off via the [code]verify[/code] parameter.
+ </description>
+ </method>
+ <method name="dtls_server_setup">
+ <return type="int" enum="Error" />
+ <argument index="0" name="key" type="CryptoKey" />
+ <argument index="1" name="certificate" type="X509Certificate" />
+ <description>
+ Configure this ENetHost to use the custom Godot extension allowing DTLS encryption for ENet servers. Call this right after [method create_host_bound] to have ENet expect peers to connect using DTLS.
+ </description>
+ </method>
+ <method name="flush">
+ <return type="void" />
+ <description>
+ Sends any queued packets on the host specified to its designated peers.
+ </description>
+ </method>
+ <method name="get_local_port" qualifiers="const">
+ <return type="int" />
+ <description>
+ Returns the local port to which this peer is bound.
+ </description>
+ </method>
+ <method name="get_max_channels" qualifiers="const">
+ <return type="int" />
+ <description>
+ Returns the maximum number of channels allowed for connected peers.
+ </description>
+ </method>
+ <method name="get_peers">
+ <return type="Array" />
+ <description>
+ Returns the list of peers associated with this host.
+ Note: This list might include some peers that are not fully connected or are still being disconnected.
+ </description>
+ </method>
+ <method name="pop_statistic">
+ <return type="float" />
+ <argument index="0" name="statistic" type="int" enum="ENetConnection.HostStatistic" />
+ <description>
+ Returns and resets host statistics. See [enum HostStatistic] for more info.
+ </description>
+ </method>
+ <method name="refuse_new_connections">
+ <return type="void" />
+ <argument index="0" name="refuse" type="bool" />
+ <description>
+ Configures the DTLS server to automatically drop new connections.
+ Note: This method is only relevant after calling [method dtls_server_setup].
+ </description>
+ </method>
+ <method name="service">
+ <return type="Array" />
+ <argument index="0" name="timeout" type="int" default="0" />
+ <description>
+ Waits for events on the host specified and shuttles packets between the host and its peers. The returned [Array] will have 4 elements. An [enum EventType], the [ENetPacketPeer] which generated the event, the event associated data (if any), the event associated channel (if any). If the generated event is [constant EVENT_RECEIVE], the received packet will be queued to the associated [ENetPacketPeer].
+ Call this function regularly to handle connections, disconnections, and to receive new packets.
+ </description>
+ </method>
+ </methods>
+ <constants>
+ <constant name="COMPRESS_NONE" value="0" enum="CompressionMode">
+ No compression. This uses the most bandwidth, but has the upside of requiring the fewest CPU resources. This option may also be used to make network debugging using tools like Wireshark easier.
+ </constant>
+ <constant name="COMPRESS_RANGE_CODER" value="1" enum="CompressionMode">
+ ENet's built-in range encoding. Works well on small packets, but is not the most efficient algorithm on packets larger than 4 KB.
+ </constant>
+ <constant name="COMPRESS_FASTLZ" value="2" enum="CompressionMode">
+ [url=http://fastlz.org/]FastLZ[/url] compression. This option uses less CPU resources compared to [constant COMPRESS_ZLIB], at the expense of using more bandwidth.
+ </constant>
+ <constant name="COMPRESS_ZLIB" value="3" enum="CompressionMode">
+ [url=https://www.zlib.net/]Zlib[/url] compression. This option uses less bandwidth compared to [constant COMPRESS_FASTLZ], at the expense of using more CPU resources.
+ </constant>
+ <constant name="COMPRESS_ZSTD" value="4" enum="CompressionMode">
+ [url=https://facebook.github.io/zstd/]Zstandard[/url] compression. Note that this algorithm is not very efficient on packets smaller than 4 KB. Therefore, it's recommended to use other compression algorithms in most cases.
+ </constant>
+ <constant name="EVENT_ERROR" value="-1" enum="EventType">
+ An error occurred during [method service]. You will likely need to [method destroy] the host and recreate it.
+ </constant>
+ <constant name="EVENT_NONE" value="0" enum="EventType">
+ No event occurred within the specified time limit.
+ </constant>
+ <constant name="EVENT_CONNECT" value="1" enum="EventType">
+ A connection request initiated by enet_host_connect has completed. The array will contain the peer which successfully connected.
+ </constant>
+ <constant name="EVENT_DISCONNECT" value="2" enum="EventType">
+ A peer has disconnected. This event is generated on a successful completion of a disconnect initiated by [method ENetPacketPeer.peer_disconnect], if a peer has timed out, or if a connection request intialized by [method connect_to_host] has timed out. The array will contain the peer which disconnected. The data field contains user supplied data describing the disconnection, or 0, if none is available.
+ </constant>
+ <constant name="EVENT_RECEIVE" value="3" enum="EventType">
+ A packet has been received from a peer. The array will contain the peer which sent the packet, the channel number upon which the packet was received, and the received packet.
+ </constant>
+ <constant name="HOST_TOTAL_SENT_DATA" value="0" enum="HostStatistic">
+ Total data sent.
+ </constant>
+ <constant name="HOST_TOTAL_SENT_PACKETS" value="1" enum="HostStatistic">
+ Total UDP packets sent.
+ </constant>
+ <constant name="HOST_TOTAL_RECEIVED_DATA" value="2" enum="HostStatistic">
+ Total data received.
+ </constant>
+ <constant name="HOST_TOTAL_RECEIVED_PACKETS" value="3" enum="HostStatistic">
+ Total UDP packets received.
+ </constant>
+ </constants>
+</class>
diff --git a/modules/enet/doc_classes/ENetMultiplayerPeer.xml b/modules/enet/doc_classes/ENetMultiplayerPeer.xml
index 30dec5987b..3a37b396a4 100644
--- a/modules/enet/doc_classes/ENetMultiplayerPeer.xml
+++ b/modules/enet/doc_classes/ENetMultiplayerPeer.xml
@@ -1,11 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="ENetMultiplayerPeer" inherits="MultiplayerPeer" version="4.0">
<brief_description>
- PacketPeer implementation using the [url=http://enet.bespin.org/index.html]ENet[/url] library.
+ A MultiplayerPeer implementation using the [url=http://enet.bespin.org/index.html]ENet[/url] library.
</brief_description>
<description>
- A PacketPeer implementation that should be passed to [member MultiplayerAPI.network_peer] after being initialized as either a client or server. Events can then be handled by connecting to [SceneTree] signals.
- ENet's purpose is to provide a relatively thin, simple and robust network communication layer on top of UDP (User Datagram Protocol).
+ A MultiplayerPeer implementation that should be passed to [member MultiplayerAPI.network_peer] after being initialized as either a client, server, or mesh. Events can then be handled by connecting to [MultiplayerAPI] signals. See [ENetConnection] for more information on the ENet library wrapper.
[b]Note:[/b] ENet only uses UDP, not TCP. When forwarding the server port to make your server accessible on the public Internet, you only need to forward the server port in UDP. You can use the [UPNP] class to try to forward the server port automatically when starting the server.
</description>
<tutorials>
@@ -13,183 +12,77 @@
<link title="API documentation on the ENet website">http://enet.bespin.org/usergroup0.html</link>
</tutorials>
<methods>
- <method name="close_connection">
- <return type="void">
- </return>
- <argument index="0" name="wait_usec" type="int" default="100">
- </argument>
+ <method name="add_mesh_peer">
+ <return type="int" enum="Error" />
+ <argument index="0" name="peer_id" type="int" />
+ <argument index="1" name="host" type="ENetConnection" />
<description>
- Closes the connection. Ignored if no connection is currently established. If this is a server it tries to notify all clients before forcibly disconnecting them. If this is a client it simply closes the connection to the server.
+ Add a new remote peer with the given [code]peer_id[/code] connected to the given [code]host[/code].
+ Note: The [code]host[/code] must have exactly one peer in the [constant ENetPacketPeer.STATE_CONNECTED] state.
</description>
</method>
- <method name="create_client">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="address" type="String">
- </argument>
- <argument index="1" name="port" type="int">
- </argument>
- <argument index="2" name="in_bandwidth" type="int" default="0">
- </argument>
- <argument index="3" name="out_bandwidth" type="int" default="0">
- </argument>
- <argument index="4" name="local_port" type="int" default="0">
- </argument>
- <description>
- Create client that connects to a server at [code]address[/code] using specified [code]port[/code]. The given address needs to be either a fully qualified domain name (e.g. [code]"www.example.com"[/code]) or an IP address in IPv4 or IPv6 format (e.g. [code]"192.168.1.1"[/code]). The [code]port[/code] is the port the server is listening on. The [code]in_bandwidth[/code] and [code]out_bandwidth[/code] parameters can be used to limit the incoming and outgoing bandwidth to the given number of bytes per second. The default of 0 means unlimited bandwidth. Note that ENet will strategically drop packets on specific sides of a connection between peers to ensure the peer's bandwidth is not overwhelmed. The bandwidth parameters also determine the window size of a connection which limits the amount of reliable packets that may be in transit at any given time. Returns [constant OK] if a client was created, [constant ERR_ALREADY_IN_USE] if this ENetMultiplayerPeer instance already has an open connection (in which case you need to call [method close_connection] first) or [constant ERR_CANT_CREATE] if the client could not be created. If [code]local_port[/code] is specified, the client will also listen to the given port; this is useful for some NAT traversal techniques.
- </description>
- </method>
- <method name="create_server">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
- <argument index="1" name="max_clients" type="int" default="32">
- </argument>
- <argument index="2" name="in_bandwidth" type="int" default="0">
- </argument>
- <argument index="3" name="out_bandwidth" type="int" default="0">
- </argument>
- <description>
- Create server that listens to connections via [code]port[/code]. The port needs to be an available, unused port between 0 and 65535. Note that ports below 1024 are privileged and may require elevated permissions depending on the platform. To change the interface the server listens on, use [method set_bind_ip]. The default IP is the wildcard [code]"*"[/code], which listens on all available interfaces. [code]max_clients[/code] is the maximum number of clients that are allowed at once, any number up to 4095 may be used, although the achievable number of simultaneous clients may be far lower and depends on the application. For additional details on the bandwidth parameters, see [method create_client]. Returns [constant OK] if a server was created, [constant ERR_ALREADY_IN_USE] if this ENetMultiplayerPeer instance already has an open connection (in which case you need to call [method close_connection] first) or [constant ERR_CANT_CREATE] if the server could not be created.
- </description>
- </method>
- <method name="disconnect_peer">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="now" type="bool" default="false">
- </argument>
- <description>
- Disconnect the given peer. If "now" is set to [code]true[/code], the connection will be closed immediately without flushing queued messages.
- </description>
- </method>
- <method name="get_last_packet_channel" qualifiers="const">
- <return type="int">
- </return>
+ <method name="close_connection">
+ <return type="void" />
+ <argument index="0" name="wait_usec" type="int" default="100" />
<description>
- Returns the channel of the last packet fetched via [method PacketPeer.get_packet].
+ Closes the connection. Ignored if no connection is currently established. If this is a server it tries to notify all clients before forcibly disconnecting them. If this is a client it simply closes the connection to the server.
</description>
</method>
- <method name="get_local_port" qualifiers="const">
- <return type="int">
- </return>
+ <method name="create_client">
+ <return type="int" enum="Error" />
+ <argument index="0" name="address" type="String" />
+ <argument index="1" name="port" type="int" />
+ <argument index="2" name="channel_count" type="int" default="0" />
+ <argument index="3" name="in_bandwidth" type="int" default="0" />
+ <argument index="4" name="out_bandwidth" type="int" default="0" />
+ <argument index="5" name="local_port" type="int" default="0" />
<description>
- Returns the local port to which this peer is bound.
+ Create client that connects to a server at [code]address[/code] using specified [code]port[/code]. The given address needs to be either a fully qualified domain name (e.g. [code]"www.example.com"[/code]) or an IP address in IPv4 or IPv6 format (e.g. [code]"192.168.1.1"[/code]). The [code]port[/code] is the port the server is listening on. The [code]channel_count[/code] parameter can be used to specify the number of ENet channels allocated for the connection. The [code]in_bandwidth[/code] and [code]out_bandwidth[/code] parameters can be used to limit the incoming and outgoing bandwidth to the given number of bytes per second. The default of 0 means unlimited bandwidth. Note that ENet will strategically drop packets on specific sides of a connection between peers to ensure the peer's bandwidth is not overwhelmed. The bandwidth parameters also determine the window size of a connection which limits the amount of reliable packets that may be in transit at any given time. Returns [constant OK] if a client was created, [constant ERR_ALREADY_IN_USE] if this ENetMultiplayerPeer instance already has an open connection (in which case you need to call [method close_connection] first) or [constant ERR_CANT_CREATE] if the client could not be created. If [code]local_port[/code] is specified, the client will also listen to the given port; this is useful for some NAT traversal techniques.
</description>
</method>
- <method name="get_packet_channel" qualifiers="const">
- <return type="int">
- </return>
+ <method name="create_mesh">
+ <return type="int" enum="Error" />
+ <argument index="0" name="unique_id" type="int" />
<description>
- Returns the channel of the next packet that will be retrieved via [method PacketPeer.get_packet].
+ Initialize this [MultiplayerPeer] in mesh mode. The provided [code]unique_id[/code] will be used as the local peer network unique ID once assigned as the [member MultiplayerAPI.network_peer]. In the mesh configuration you will need to set up each new peer manually using [ENetConnection] before calling [method add_mesh_peer]. While this technique is more advanced, it allows for better control over the connection process (e.g. when dealing with NAT punch-through) and for better distribution of the network load (which would otherwise be more taxing on the server).
</description>
</method>
- <method name="get_peer_address" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <method name="create_server">
+ <return type="int" enum="Error" />
+ <argument index="0" name="port" type="int" />
+ <argument index="1" name="max_clients" type="int" default="32" />
+ <argument index="2" name="max_channels" type="int" default="0" />
+ <argument index="3" name="in_bandwidth" type="int" default="0" />
+ <argument index="4" name="out_bandwidth" type="int" default="0" />
<description>
- Returns the IP address of the given peer.
+ Create server that listens to connections via [code]port[/code]. The port needs to be an available, unused port between 0 and 65535. Note that ports below 1024 are privileged and may require elevated permissions depending on the platform. To change the interface the server listens on, use [method set_bind_ip]. The default IP is the wildcard [code]"*"[/code], which listens on all available interfaces. [code]max_clients[/code] is the maximum number of clients that are allowed at once, any number up to 4095 may be used, although the achievable number of simultaneous clients may be far lower and depends on the application. For additional details on the bandwidth parameters, see [method create_client]. Returns [constant OK] if a server was created, [constant ERR_ALREADY_IN_USE] if this ENetMultiplayerPeer instance already has an open connection (in which case you need to call [method close_connection] first) or [constant ERR_CANT_CREATE] if the server could not be created.
</description>
</method>
- <method name="get_peer_port" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <method name="get_peer" qualifiers="const">
+ <return type="ENetPacketPeer" />
+ <argument index="0" name="id" type="int" />
<description>
- Returns the remote port of the given peer.
+ Return the [ENetPacketPeer] associated to the given [code]id[/code].
</description>
</method>
<method name="set_bind_ip">
- <return type="void">
- </return>
- <argument index="0" name="ip" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="ip" type="String" />
<description>
The IP used when creating a server. This is set to the wildcard [code]"*"[/code] by default, which binds to all available interfaces. The given IP needs to be in IPv4 or IPv6 address format, for example: [code]"192.168.1.1"[/code].
</description>
</method>
- <method name="set_dtls_certificate">
- <return type="void">
- </return>
- <argument index="0" name="certificate" type="X509Certificate">
- </argument>
- <description>
- Configure the [X509Certificate] to use when [member use_dtls] is [code]true[/code]. For servers, you must also setup the [CryptoKey] via [method set_dtls_key].
- </description>
- </method>
- <method name="set_dtls_key">
- <return type="void">
- </return>
- <argument index="0" name="key" type="CryptoKey">
- </argument>
- <description>
- Configure the [CryptoKey] to use when [member use_dtls] is [code]true[/code]. Remember to also call [method set_dtls_certificate] to setup your [X509Certificate].
- </description>
- </method>
- <method name="set_peer_timeout">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="timeout_limit" type="int">
- </argument>
- <argument index="2" name="timeout_min" type="int">
- </argument>
- <argument index="3" name="timeout_max" type="int">
- </argument>
- <description>
- Sets the timeout parameters for a peer. The timeout parameters control how and when a peer will timeout from a failure to acknowledge reliable traffic. Timeout values are expressed in milliseconds.
- The [code]timeout_limit[/code] is a factor that, multiplied by a value based on the average round trip time, will determine the timeout limit for a reliable packet. When that limit is reached, the timeout will be doubled, and the peer will be disconnected if that limit has reached [code]timeout_min[/code]. The [code]timeout_max[/code] parameter, on the other hand, defines a fixed timeout for which any packet must be acknowledged or the peer will be dropped.
- </description>
- </method>
</methods>
<members>
- <member name="always_ordered" type="bool" setter="set_always_ordered" getter="is_always_ordered" default="false">
- Enforce ordered packets when using [constant MultiplayerPeer.TRANSFER_MODE_UNRELIABLE] (thus behaving similarly to [constant MultiplayerPeer.TRANSFER_MODE_UNRELIABLE_ORDERED]). This is the only way to use ordering with the RPC system.
- </member>
- <member name="channel_count" type="int" setter="set_channel_count" getter="get_channel_count" default="3">
- The number of channels to be used by ENet. Channels are used to separate different kinds of data. In reliable or ordered mode, for example, the packet delivery order is ensured on a per-channel basis. This is done to combat latency and reduces ordering restrictions on packets. The delivery status of a packet in one channel won't stall the delivery of other packets in another channel.
- </member>
- <member name="compression_mode" type="int" setter="set_compression_mode" getter="get_compression_mode" enum="ENetMultiplayerPeer.CompressionMode" default="1">
- The compression method used for network packets. These have different tradeoffs of compression speed versus bandwidth, you may need to test which one works best for your use case if you use compression at all.
- [b]Note:[/b] Most games' network design involve sending many small packets frequently (smaller than 4 KB each). If in doubt, it is recommended to keep the default compression algorithm as it works best on these small packets.
- </member>
- <member name="dtls_verify" type="bool" setter="set_dtls_verify_enabled" getter="is_dtls_verify_enabled" default="true">
- Enable or disable certificate verification when [member use_dtls] [code]true[/code].
+ <member name="host" type="ENetConnection" setter="" getter="get_host">
+ The underlying [ENetConnection] created after [method create_client] and [method create_server].
</member>
<member name="refuse_new_connections" type="bool" setter="set_refuse_new_connections" getter="is_refusing_new_connections" override="true" default="false" />
<member name="server_relay" type="bool" setter="set_server_relay_enabled" getter="is_server_relay_enabled" default="true">
Enable or disable the server feature that notifies clients of other peers' connection/disconnection, and relays messages between them. When this option is [code]false[/code], clients won't be automatically notified of other peers and won't be able to send them packets through the server.
</member>
- <member name="transfer_channel" type="int" setter="set_transfer_channel" getter="get_transfer_channel" default="-1">
- Set the default channel to be used to transfer data. By default, this value is [code]-1[/code] which means that ENet will only use 2 channels: one for reliable packets, and one for unreliable packets. The channel [code]0[/code] is reserved and cannot be used. Setting this member to any value between [code]0[/code] and [member channel_count] (excluded) will force ENet to use that channel for sending data. See [member channel_count] for more information about ENet channels.
- </member>
<member name="transfer_mode" type="int" setter="set_transfer_mode" getter="get_transfer_mode" override="true" enum="MultiplayerPeer.TransferMode" default="2" />
- <member name="use_dtls" type="bool" setter="set_dtls_enabled" getter="is_dtls_enabled" default="false">
- When enabled, the client or server created by this peer, will use [PacketPeerDTLS] instead of raw UDP sockets for communicating with the remote peer. This will make the communication encrypted with DTLS at the cost of higher resource usage and potentially larger packet size.
- Note: When creating a DTLS server, make sure you setup the key/certificate pair via [method set_dtls_key] and [method set_dtls_certificate]. For DTLS clients, have a look at the [member dtls_verify] option, and configure the certificate accordingly via [method set_dtls_certificate].
- </member>
</members>
<constants>
- <constant name="COMPRESS_NONE" value="0" enum="CompressionMode">
- No compression. This uses the most bandwidth, but has the upside of requiring the fewest CPU resources. This option may also be used to make network debugging using tools like Wireshark easier.
- </constant>
- <constant name="COMPRESS_RANGE_CODER" value="1" enum="CompressionMode">
- ENet's built-in range encoding. Works well on small packets, but is not the most efficient algorithm on packets larger than 4 KB.
- </constant>
- <constant name="COMPRESS_FASTLZ" value="2" enum="CompressionMode">
- [url=http://fastlz.org/]FastLZ[/url] compression. This option uses less CPU resources compared to [constant COMPRESS_ZLIB], at the expense of using more bandwidth.
- </constant>
- <constant name="COMPRESS_ZLIB" value="3" enum="CompressionMode">
- [url=https://www.zlib.net/]Zlib[/url] compression. This option uses less bandwidth compared to [constant COMPRESS_FASTLZ], at the expense of using more CPU resources.
- </constant>
- <constant name="COMPRESS_ZSTD" value="4" enum="CompressionMode">
- [url=https://facebook.github.io/zstd/]Zstandard[/url] compression. Note that this algorithm is not very efficient on packets smaller than 4 KB. Therefore, it's recommended to use other compression algorithms in most cases.
- </constant>
</constants>
</class>
diff --git a/modules/enet/doc_classes/ENetPacketPeer.xml b/modules/enet/doc_classes/ENetPacketPeer.xml
new file mode 100644
index 0000000000..8f0693fb01
--- /dev/null
+++ b/modules/enet/doc_classes/ENetPacketPeer.xml
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="ENetPacketPeer" inherits="PacketPeer" version="4.0">
+ <brief_description>
+ A wrapper class for an [url=http://enet.bespin.org/group__peer.html]ENetPeer[/url].
+ </brief_description>
+ <description>
+ A PacketPeer implementation representing a peer of an [ENetConnection].
+ This class cannot be instantiated directly but can be retrieved during [method ENetConnection.service] or via [method ENetConnection.get_peers].
+ </description>
+ <tutorials>
+ <link title="API documentation on the ENet website">http://enet.bespin.org/usergroup0.html</link>
+ </tutorials>
+ <methods>
+ <method name="get_channels" qualifiers="const">
+ <return type="int" />
+ <description>
+ Returns the number of channels allocated for communication with peer.
+ </description>
+ </method>
+ <method name="get_state" qualifiers="const">
+ <return type="int" enum="ENetPacketPeer.PeerState" />
+ <description>
+ Returns the current peer state. See [enum PeerState].
+ </description>
+ </method>
+ <method name="get_statistic">
+ <return type="float" />
+ <argument index="0" name="statistic" type="int" enum="ENetPacketPeer.PeerStatistic" />
+ <description>
+ Returns the requested [code]statistic[/code] for this peer. See [enum PeerStatistic].
+ </description>
+ </method>
+ <method name="is_active" qualifiers="const">
+ <return type="bool" />
+ <description>
+ Returns [code]true[/code] if the peer is currently active (i.e. the associated [ENetConnection] is still valid).
+ </description>
+ </method>
+ <method name="peer_disconnect">
+ <return type="void" />
+ <argument index="0" name="data" type="int" default="0" />
+ <description>
+ Request a disconnection from a peer. An [constant ENetConnection.EVENT_DISCONNECT] will be generated during [method ENetConnection.service] once the disconnection is complete.
+ </description>
+ </method>
+ <method name="peer_disconnect_later">
+ <return type="void" />
+ <argument index="0" name="data" type="int" default="0" />
+ <description>
+ Request a disconnection from a peer, but only after all queued outgoing packets are sent. An [constant ENetConnection.EVENT_DISCONNECT] will be generated during [method ENetConnection.service] once the disconnection is complete.
+ </description>
+ </method>
+ <method name="peer_disconnect_now">
+ <return type="void" />
+ <argument index="0" name="data" type="int" default="0" />
+ <description>
+ Force an immediate disconnection from a peer. No [constant ENetConnection.EVENT_DISCONNECT] will be generated. The foreign peer is not guaranteed to receive the disconnect notification, and is reset immediately upon return from this function.
+ </description>
+ </method>
+ <method name="ping">
+ <return type="void" />
+ <description>
+ Sends a ping request to a peer. ENet automatically pings all connected peers at regular intervals, however, this function may be called to ensure more frequent ping requests.
+ </description>
+ </method>
+ <method name="ping_interval">
+ <return type="void" />
+ <argument index="0" name="ping_interval" type="int" />
+ <description>
+ Sets the [code]ping_interval[/code] in milliseconds at which pings will be sent to a peer. Pings are used both to monitor the liveness of the connection and also to dynamically adjust the throttle during periods of low traffic so that the throttle has reasonable responsiveness during traffic spikes.
+ </description>
+ </method>
+ <method name="reset">
+ <return type="void" />
+ <description>
+ Forcefully disconnects a peer. The foreign host represented by the peer is not notified of the disconnection and will timeout on its connection to the local host.
+ </description>
+ </method>
+ <method name="send">
+ <return type="int" enum="Error" />
+ <argument index="0" name="channel" type="int" />
+ <argument index="1" name="packet" type="PackedByteArray" />
+ <argument index="2" name="flags" type="int" />
+ <description>
+ Queues a [code]packet[/code] to be sent over the specified [code]channel[/code]. See [code]FLAG_*[/code] constants for available packet flags.
+ </description>
+ </method>
+ <method name="set_timeout">
+ <return type="void" />
+ <argument index="0" name="timeout" type="int" />
+ <argument index="1" name="timeout_min" type="int" />
+ <argument index="2" name="timeout_max" type="int" />
+ <description>
+ Sets the timeout parameters for a peer. The timeout parameters control how and when a peer will timeout from a failure to acknowledge reliable traffic. Timeout values are expressed in milliseconds.
+ The [code]timeout_limit[/code] is a factor that, multiplied by a value based on the average round trip time, will determine the timeout limit for a reliable packet. When that limit is reached, the timeout will be doubled, and the peer will be disconnected if that limit has reached [code]timeout_min[/code]. The [code]timeout_max[/code] parameter, on the other hand, defines a fixed timeout for which any packet must be acknowledged or the peer will be dropped.
+ </description>
+ </method>
+ <method name="throttle_configure">
+ <return type="void" />
+ <argument index="0" name="interval" type="int" />
+ <argument index="1" name="acceleration" type="int" />
+ <argument index="2" name="deceleration" type="int" />
+ <description>
+ Configures throttle parameter for a peer.
+ Unreliable packets are dropped by ENet in response to the varying conditions of the Internet connection to the peer. The throttle represents a probability that an unreliable packet should not be dropped and thus sent by ENet to the peer. By measuring fluctuations in round trip times of reliable packets over the specified [code]interval[/code], ENet will either increase the probably by the amount specified in the [code]acceleration[/code] parameter, or decrease it by the amount specified in the [code]deceleration[/code] parameter (both are ratios to [constant PACKET_THROTTLE_SCALE]).
+ When the throttle has a value of [constant PACKET_THROTTLE_SCALE], no unreliable packets are dropped by ENet, and so 100% of all unreliable packets will be sent.
+ When the throttle has a value of 0, all unreliable packets are dropped by ENet, and so 0% of all unreliable packets will be sent.
+ Intermediate values for the throttle represent intermediate probabilities between 0% and 100% of unreliable packets being sent. The bandwidth limits of the local and foreign hosts are taken into account to determine a sensible limit for the throttle probability above which it should not raise even in the best of conditions.
+ </description>
+ </method>
+ </methods>
+ <constants>
+ <constant name="STATE_DISCONNECTED" value="0" enum="PeerState">
+ </constant>
+ <constant name="STATE_CONNECTING" value="1" enum="PeerState">
+ </constant>
+ <constant name="STATE_ACKNOWLEDGING_CONNECT" value="2" enum="PeerState">
+ </constant>
+ <constant name="STATE_CONNECTION_PENDING" value="3" enum="PeerState">
+ </constant>
+ <constant name="STATE_CONNECTION_SUCCEEDED" value="4" enum="PeerState">
+ </constant>
+ <constant name="STATE_CONNECTED" value="5" enum="PeerState">
+ </constant>
+ <constant name="STATE_DISCONNECT_LATER" value="6" enum="PeerState">
+ </constant>
+ <constant name="STATE_DISCONNECTING" value="7" enum="PeerState">
+ </constant>
+ <constant name="STATE_ACKNOWLEDGING_DISCONNECT" value="8" enum="PeerState">
+ </constant>
+ <constant name="STATE_ZOMBIE" value="9" enum="PeerState">
+ </constant>
+ <constant name="PEER_PACKET_LOSS" value="0" enum="PeerStatistic">
+ Mean packet loss of reliable packets as a ratio with respect to the [constant PACKET_LOSS_SCALE].
+ </constant>
+ <constant name="PEER_PACKET_LOSS_VARIANCE" value="1" enum="PeerStatistic">
+ Packet loss variance.
+ </constant>
+ <constant name="PEER_PACKET_LOSS_EPOCH" value="2" enum="PeerStatistic">
+ </constant>
+ <constant name="PEER_ROUND_TRIP_TIME" value="3" enum="PeerStatistic">
+ Mean packet round trip time for reliable packets.
+ </constant>
+ <constant name="PEER_ROUND_TRIP_TIME_VARIANCE" value="4" enum="PeerStatistic">
+ Variance of the mean round trip time.
+ </constant>
+ <constant name="PEER_LAST_ROUND_TRIP_TIME" value="5" enum="PeerStatistic">
+ Last recorded round trip time for a reliable packet.
+ </constant>
+ <constant name="PEER_LAST_ROUND_TRIP_TIME_VARIANCE" value="6" enum="PeerStatistic">
+ Variance of the last trip time recorded.
+ </constant>
+ <constant name="PEER_PACKET_THROTTLE" value="7" enum="PeerStatistic">
+ </constant>
+ <constant name="PEER_PACKET_THROTTLE_LIMIT" value="8" enum="PeerStatistic">
+ </constant>
+ <constant name="PEER_PACKET_THROTTLE_COUNTER" value="9" enum="PeerStatistic">
+ </constant>
+ <constant name="PEER_PACKET_THROTTLE_EPOCH" value="10" enum="PeerStatistic">
+ </constant>
+ <constant name="PEER_PACKET_THROTTLE_ACCELERATION" value="11" enum="PeerStatistic">
+ </constant>
+ <constant name="PEER_PACKET_THROTTLE_DECELERATION" value="12" enum="PeerStatistic">
+ </constant>
+ <constant name="PEER_PACKET_THROTTLE_INTERVAL" value="13" enum="PeerStatistic">
+ </constant>
+ <constant name="PACKET_LOSS_SCALE" value="65536">
+ The reference scale for packet loss. See [method get_statistic] and [constant PEER_PACKET_LOSS].
+ </constant>
+ <constant name="PACKET_THROTTLE_SCALE" value="32">
+ The reference value for throttle configuration. See [method throttle_configure].
+ </constant>
+ <constant name="FLAG_RELIABLE" value="1">
+ Mark the packet to be sent as reliable.
+ </constant>
+ <constant name="FLAG_UNSEQUENCED" value="2">
+ Mark the packet to be sent unsequenced (unreliable).
+ </constant>
+ <constant name="FLAG_UNRELIABLE_FRAGMENT" value="8">
+ Mark the packet to be sent unreliable even if the packet is too big and needs fragmentation (increasing the chance of it being dropped).
+ </constant>
+ </constants>
+</class>
diff --git a/modules/enet/enet_connection.cpp b/modules/enet/enet_connection.cpp
new file mode 100644
index 0000000000..e833264d6a
--- /dev/null
+++ b/modules/enet/enet_connection.cpp
@@ -0,0 +1,470 @@
+/*************************************************************************/
+/* enet_connection.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "enet_connection.h"
+
+#include "enet_packet_peer.h"
+
+#include "core/io/compression.h"
+#include "core/io/ip.h"
+
+void ENetConnection::broadcast(enet_uint8 p_channel, ENetPacket *p_packet) {
+ ERR_FAIL_COND_MSG(!host, "The ENetConnection instance isn't currently active.");
+ ERR_FAIL_COND_MSG(p_channel >= host->channelLimit, vformat("Unable to send packet on channel %d, max channels: %d", p_channel, (int)host->channelLimit));
+ enet_host_broadcast(host, p_channel, p_packet);
+}
+
+Error ENetConnection::create_host_bound(const IPAddress &p_bind_address, int p_port, int p_max_peers, int p_max_channels, int p_in_bandwidth, int p_out_bandwidth) {
+ ERR_FAIL_COND_V_MSG(!p_bind_address.is_valid() && !p_bind_address.is_wildcard(), ERR_INVALID_PARAMETER, "Invalid bind IP.");
+ ERR_FAIL_COND_V_MSG(p_port < 0 || p_port > 65535, ERR_INVALID_PARAMETER, "The local port number must be between 0 and 65535 (inclusive).");
+
+ ENetAddress address;
+ memset(&address, 0, sizeof(address));
+ address.port = p_port;
+#ifdef GODOT_ENET
+ if (p_bind_address.is_wildcard()) {
+ address.wildcard = 1;
+ } else {
+ enet_address_set_ip(&address, p_bind_address.get_ipv6(), 16);
+ }
+#else
+ if (p_bind_address.is_wildcard()) {
+ address.host = 0;
+ } else {
+ ERR_FAIL_COND_V(!p_bind_address.is_ipv4(), ERR_INVALID_PARAMETER);
+ address.host = *(uint32_t *)p_bind_address.get_ipv4();
+ }
+#endif
+ return _create(&address, p_max_peers, p_max_channels, p_in_bandwidth, p_out_bandwidth);
+}
+
+Error ENetConnection::create_host(int p_max_peers, int p_max_channels, int p_in_bandwidth, int p_out_bandwidth) {
+ return _create(nullptr, p_max_peers, p_max_channels, p_in_bandwidth, p_out_bandwidth);
+}
+
+void ENetConnection::destroy() {
+ ERR_FAIL_COND_MSG(!host, "Host already destroyed");
+ for (List<Ref<ENetPacketPeer>>::Element *E = peers.front(); E; E = E->next()) {
+ E->get()->_on_disconnect();
+ }
+ peers.clear();
+ enet_host_destroy(host);
+ host = nullptr;
+}
+
+Ref<ENetPacketPeer> ENetConnection::connect_to_host(const String &p_address, int p_port, int p_channels, int p_data) {
+ Ref<ENetPacketPeer> out;
+ ERR_FAIL_COND_V_MSG(!host, out, "The ENetConnection instance isn't currently active.");
+ ERR_FAIL_COND_V_MSG(peers.size(), out, "The ENetConnection is already connected to a peer.");
+ ERR_FAIL_COND_V_MSG(p_port < 1 || p_port > 65535, out, "The remote port number must be between 1 and 65535 (inclusive).");
+
+ IPAddress ip;
+ if (p_address.is_valid_ip_address()) {
+ ip = p_address;
+ } else {
+#ifdef GODOT_ENET
+ ip = IP::get_singleton()->resolve_hostname(p_address);
+#else
+ ip = IP::get_singleton()->resolve_hostname(p_address, IP::TYPE_IPV4);
+#endif
+ ERR_FAIL_COND_V_MSG(!ip.is_valid(), out, "Couldn't resolve the server IP address or domain name.");
+ }
+
+ ENetAddress address;
+#ifdef GODOT_ENET
+ enet_address_set_ip(&address, ip.get_ipv6(), 16);
+#else
+ ERR_FAIL_COND_V_MSG(!ip.is_ipv4(), out, "Connecting to an IPv6 server isn't supported when using vanilla ENet. Recompile Godot with the bundled ENet library.");
+ address.host = *(uint32_t *)ip.get_ipv4();
+#endif
+ address.port = p_port;
+
+ // Initiate connection, allocating enough channels
+ ENetPeer *peer = enet_host_connect(host, &address, p_channels > 0 ? p_channels : ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT, p_data);
+
+ if (peer == nullptr) {
+ return nullptr;
+ }
+ out = Ref<ENetPacketPeer>(memnew(ENetPacketPeer(peer)));
+ peers.push_back(out);
+ return out;
+}
+
+ENetConnection::EventType ENetConnection::service(int p_timeout, Event &r_event) {
+ ERR_FAIL_COND_V_MSG(!host, EVENT_ERROR, "The ENetConnection instance isn't currently active.");
+ ERR_FAIL_COND_V(r_event.peer.is_valid(), EVENT_ERROR);
+
+ // Drop peers that have already been disconnected.
+ // NOTE: Forcibly disconnected peers (i.e. peers disconnected via
+ // enet_peer_disconnect*) do not trigger DISCONNECTED events.
+ List<Ref<ENetPacketPeer>>::Element *E = peers.front();
+ while (E) {
+ if (!E->get()->is_active()) {
+ peers.erase(E->get());
+ }
+ E = E->next();
+ }
+
+ ENetEvent event;
+ int ret = enet_host_service(host, &event, p_timeout);
+
+ if (ret < 0) {
+ return EVENT_ERROR;
+ } else if (ret == 0) {
+ return EVENT_NONE;
+ }
+ switch (event.type) {
+ case ENET_EVENT_TYPE_CONNECT: {
+ if (event.peer->data == nullptr) {
+ Ref<ENetPacketPeer> pp = memnew(ENetPacketPeer(event.peer));
+ peers.push_back(pp);
+ }
+ r_event.peer = Ref<ENetPacketPeer>((ENetPacketPeer *)event.peer->data);
+ r_event.data = event.data;
+ return EVENT_CONNECT;
+ } break;
+ case ENET_EVENT_TYPE_DISCONNECT: {
+ // A peer disconnected.
+ if (event.peer->data != nullptr) {
+ Ref<ENetPacketPeer> pp = Ref<ENetPacketPeer>((ENetPacketPeer *)event.peer->data);
+ pp->_on_disconnect();
+ peers.erase(pp);
+ r_event.peer = pp;
+ r_event.data = event.data;
+ return EVENT_DISCONNECT;
+ }
+ return EVENT_ERROR;
+ } break;
+ case ENET_EVENT_TYPE_RECEIVE: {
+ // Packet reveived.
+ if (event.peer->data != nullptr) {
+ Ref<ENetPacketPeer> pp = Ref<ENetPacketPeer>((ENetPacketPeer *)event.peer->data);
+ r_event.peer = Ref<ENetPacketPeer>((ENetPacketPeer *)event.peer->data);
+ r_event.channel_id = event.channelID;
+ r_event.packet = event.packet;
+ return EVENT_RECEIVE;
+ }
+ return EVENT_ERROR;
+ } break;
+ case ENET_EVENT_TYPE_NONE:
+ return EVENT_NONE;
+ default:
+ return EVENT_NONE;
+ }
+}
+
+void ENetConnection::flush() {
+ ERR_FAIL_COND_MSG(!host, "The ENetConnection instance isn't currently active.");
+ enet_host_flush(host);
+}
+
+void ENetConnection::bandwidth_limit(int p_in_bandwidth, int p_out_bandwidth) {
+ ERR_FAIL_COND_MSG(!host, "The ENetConnection instance isn't currently active.");
+ enet_host_bandwidth_limit(host, p_in_bandwidth, p_out_bandwidth);
+}
+
+void ENetConnection::channel_limit(int p_max_channels) {
+ ERR_FAIL_COND_MSG(!host, "The ENetConnection instance isn't currently active.");
+ enet_host_channel_limit(host, p_max_channels);
+}
+
+void ENetConnection::bandwidth_throttle() {
+ ERR_FAIL_COND_MSG(!host, "The ENetConnection instance isn't currently active.");
+ enet_host_bandwidth_throttle(host);
+}
+
+void ENetConnection::compress(CompressionMode p_mode) {
+ ERR_FAIL_COND_MSG(!host, "The ENetConnection instance isn't currently active.");
+ Compressor::setup(host, p_mode);
+}
+
+double ENetConnection::pop_statistic(HostStatistic p_stat) {
+ ERR_FAIL_COND_V_MSG(!host, 0, "The ENetConnection instance isn't currently active.");
+ uint32_t *ptr = nullptr;
+ switch (p_stat) {
+ case HOST_TOTAL_SENT_DATA:
+ ptr = &(host->totalSentData);
+ break;
+ case HOST_TOTAL_SENT_PACKETS:
+ ptr = &(host->totalSentPackets);
+ break;
+ case HOST_TOTAL_RECEIVED_DATA:
+ ptr = &(host->totalReceivedData);
+ break;
+ case HOST_TOTAL_RECEIVED_PACKETS:
+ ptr = &(host->totalReceivedPackets);
+ break;
+ }
+ ERR_FAIL_COND_V_MSG(ptr == nullptr, 0, "Invalid statistic: " + itos(p_stat));
+ uint32_t ret = *ptr;
+ *ptr = 0;
+ return ret;
+}
+
+int ENetConnection::get_max_channels() const {
+ ERR_FAIL_COND_V_MSG(!host, 0, "The ENetConnection instance isn't currently active.");
+ return host->channelLimit;
+}
+
+int ENetConnection::get_local_port() const {
+ ERR_FAIL_COND_V_MSG(!host, 0, "The ENetConnection instance isn't currently active.");
+ ERR_FAIL_COND_V_MSG(!(host->socket), 0, "The ENetConnection instance isn't currently bound");
+ ENetAddress address;
+ ERR_FAIL_COND_V_MSG(enet_socket_get_address(host->socket, &address), 0, "Unable to get socket address");
+ return address.port;
+}
+
+void ENetConnection::get_peers(List<Ref<ENetPacketPeer>> &r_peers) {
+ for (const Ref<ENetPacketPeer> &I : peers) {
+ r_peers.push_back(I);
+ }
+}
+
+Array ENetConnection::_get_peers() {
+ ERR_FAIL_COND_V_MSG(!host, Array(), "The ENetConnection instance isn't currently active.");
+ Array out;
+ for (const Ref<ENetPacketPeer> &I : peers) {
+ out.push_back(I);
+ }
+ return out;
+}
+
+Error ENetConnection::dtls_server_setup(Ref<CryptoKey> p_key, Ref<X509Certificate> p_cert) {
+#ifdef GODOT_ENET
+ ERR_FAIL_COND_V_MSG(!host, ERR_UNCONFIGURED, "The ENetConnection instance isn't currently active.");
+ return enet_host_dtls_server_setup(host, p_key.ptr(), p_cert.ptr()) ? FAILED : OK;
+#else
+ ERR_FAIL_V_MSG(ERR_UNAVAILABLE, "ENet DTLS support not available in this build.");
+#endif
+}
+
+void ENetConnection::refuse_new_connections(bool p_refuse) {
+#ifdef GODOT_ENET
+ ERR_FAIL_COND_MSG(!host, "The ENetConnection instance isn't currently active.");
+ enet_host_refuse_new_connections(host, p_refuse);
+#else
+ ERR_FAIL_MSG("ENet DTLS support not available in this build.");
+#endif
+}
+
+Error ENetConnection::dtls_client_setup(Ref<X509Certificate> p_cert, const String &p_hostname, bool p_verify) {
+#ifdef GODOT_ENET
+ ERR_FAIL_COND_V_MSG(!host, ERR_UNCONFIGURED, "The ENetConnection instance isn't currently active.");
+ return enet_host_dtls_client_setup(host, p_cert.ptr(), p_verify, p_hostname.utf8().get_data()) ? FAILED : OK;
+#else
+ ERR_FAIL_V_MSG(ERR_UNAVAILABLE, "ENet DTLS support not available in this build.");
+#endif
+}
+
+Error ENetConnection::_create(ENetAddress *p_address, int p_max_peers, int p_max_channels, int p_in_bandwidth, int p_out_bandwidth) {
+ ERR_FAIL_COND_V_MSG(host != nullptr, ERR_ALREADY_IN_USE, "The ENetConnection instance is already active.");
+ ERR_FAIL_COND_V_MSG(p_max_peers < 1 || p_max_peers > 4095, ERR_INVALID_PARAMETER, "The number of clients must be set between 1 and 4095 (inclusive).");
+ ERR_FAIL_COND_V_MSG(p_max_channels < 0 || p_max_channels > ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT, ERR_INVALID_PARAMETER, "Invalid channel count. Must be between 0 and 255 (0 means maximum, i.e. 255)");
+ ERR_FAIL_COND_V_MSG(p_in_bandwidth < 0, ERR_INVALID_PARAMETER, "The incoming bandwidth limit must be greater than or equal to 0 (0 disables the limit).");
+ ERR_FAIL_COND_V_MSG(p_out_bandwidth < 0, ERR_INVALID_PARAMETER, "The outgoing bandwidth limit must be greater than or equal to 0 (0 disables the limit).");
+
+ host = enet_host_create(p_address /* the address to bind the server host to */,
+ p_max_peers /* allow up to p_max_peers connections */,
+ p_max_channels /* allow up to p_max_channel to be used */,
+ p_in_bandwidth /* limit incoming bandwidth if > 0 */,
+ p_out_bandwidth /* limit outgoing bandwidth if > 0 */);
+
+ ERR_FAIL_COND_V_MSG(!host, ERR_CANT_CREATE, "Couldn't create an ENet host.");
+ return OK;
+}
+
+Array ENetConnection::_service(int p_timeout) {
+ Array out;
+ Event event;
+ Ref<ENetPacketPeer> peer;
+ EventType ret = service(p_timeout, event);
+ out.push_back(ret);
+ out.push_back(event.peer);
+ out.push_back(event.data);
+ out.push_back(event.channel_id);
+ if (event.packet && event.peer.is_valid()) {
+ event.peer->_queue_packet(event.packet);
+ }
+ return out;
+}
+
+void ENetConnection::_broadcast(int p_channel, PackedByteArray p_packet, int p_flags) {
+ ERR_FAIL_COND_MSG(!host, "The ENetConnection instance isn't currently active.");
+ ERR_FAIL_COND_MSG(p_channel < 0 || p_channel > (int)host->channelLimit, "Invalid channel");
+ ERR_FAIL_COND_MSG(p_flags & ~ENetPacketPeer::FLAG_ALLOWED, "Invalid flags");
+ ENetPacket *pkt = enet_packet_create(p_packet.ptr(), p_packet.size(), p_flags);
+ broadcast(p_channel, pkt);
+}
+
+void ENetConnection::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("create_host_bound", "bind_address", "bind_port", "max_peers", "max_channels", "in_bandwidth", "out_bandwidth"), &ENetConnection::create_host_bound, DEFVAL(32), DEFVAL(0), DEFVAL(0), DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("create_host", "max_peers", "max_channels", "in_bandwidth", "out_bandwidth"), &ENetConnection::create_host, DEFVAL(32), DEFVAL(0), DEFVAL(0), DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("destroy"), &ENetConnection::destroy);
+ ClassDB::bind_method(D_METHOD("connect_to_host", "address", "port", "channels", "data"), &ENetConnection::connect_to_host, DEFVAL(0), DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("service", "timeout"), &ENetConnection::_service, DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("flush"), &ENetConnection::flush);
+ ClassDB::bind_method(D_METHOD("bandwidth_limit", "in_bandwidth", "out_bandwidth"), &ENetConnection::bandwidth_limit, DEFVAL(0), DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("channel_limit", "limit"), &ENetConnection::channel_limit);
+ ClassDB::bind_method(D_METHOD("broadcast", "channel", "packet", "flags"), &ENetConnection::_broadcast);
+ ClassDB::bind_method(D_METHOD("compress", "mode"), &ENetConnection::compress);
+ ClassDB::bind_method(D_METHOD("dtls_server_setup", "key", "certificate"), &ENetConnection::dtls_server_setup);
+ ClassDB::bind_method(D_METHOD("dtls_client_setup", "certificate", "hostname", "verify"), &ENetConnection::dtls_client_setup, DEFVAL(true));
+ ClassDB::bind_method(D_METHOD("refuse_new_connections", "refuse"), &ENetConnection::refuse_new_connections);
+ ClassDB::bind_method(D_METHOD("pop_statistic", "statistic"), &ENetConnection::pop_statistic);
+ ClassDB::bind_method(D_METHOD("get_max_channels"), &ENetConnection::get_max_channels);
+ ClassDB::bind_method(D_METHOD("get_local_port"), &ENetConnection::get_local_port);
+ ClassDB::bind_method(D_METHOD("get_peers"), &ENetConnection::_get_peers);
+
+ BIND_ENUM_CONSTANT(COMPRESS_NONE);
+ BIND_ENUM_CONSTANT(COMPRESS_RANGE_CODER);
+ BIND_ENUM_CONSTANT(COMPRESS_FASTLZ);
+ BIND_ENUM_CONSTANT(COMPRESS_ZLIB);
+ BIND_ENUM_CONSTANT(COMPRESS_ZSTD);
+
+ BIND_ENUM_CONSTANT(EVENT_ERROR);
+ BIND_ENUM_CONSTANT(EVENT_NONE);
+ BIND_ENUM_CONSTANT(EVENT_CONNECT);
+ BIND_ENUM_CONSTANT(EVENT_DISCONNECT);
+ BIND_ENUM_CONSTANT(EVENT_RECEIVE);
+
+ BIND_ENUM_CONSTANT(HOST_TOTAL_SENT_DATA);
+ BIND_ENUM_CONSTANT(HOST_TOTAL_SENT_PACKETS);
+ BIND_ENUM_CONSTANT(HOST_TOTAL_RECEIVED_DATA);
+ BIND_ENUM_CONSTANT(HOST_TOTAL_RECEIVED_PACKETS);
+}
+
+ENetConnection::~ENetConnection() {
+ if (host) {
+ destroy();
+ }
+}
+
+size_t ENetConnection::Compressor::enet_compress(void *context, const ENetBuffer *inBuffers, size_t inBufferCount, size_t inLimit, enet_uint8 *outData, size_t outLimit) {
+ Compressor *compressor = (Compressor *)(context);
+
+ if (size_t(compressor->src_mem.size()) < inLimit) {
+ compressor->src_mem.resize(inLimit);
+ }
+
+ int total = inLimit;
+ int ofs = 0;
+ while (total) {
+ for (size_t i = 0; i < inBufferCount; i++) {
+ int to_copy = MIN(total, int(inBuffers[i].dataLength));
+ memcpy(&compressor->src_mem.write[ofs], inBuffers[i].data, to_copy);
+ ofs += to_copy;
+ total -= to_copy;
+ }
+ }
+
+ Compression::Mode mode;
+
+ switch (compressor->mode) {
+ case COMPRESS_FASTLZ: {
+ mode = Compression::MODE_FASTLZ;
+ } break;
+ case COMPRESS_ZLIB: {
+ mode = Compression::MODE_DEFLATE;
+ } break;
+ case COMPRESS_ZSTD: {
+ mode = Compression::MODE_ZSTD;
+ } break;
+ default: {
+ ERR_FAIL_V_MSG(0, vformat("Invalid ENet compression mode: %d", compressor->mode));
+ }
+ }
+
+ int req_size = Compression::get_max_compressed_buffer_size(ofs, mode);
+ if (compressor->dst_mem.size() < req_size) {
+ compressor->dst_mem.resize(req_size);
+ }
+ int ret = Compression::compress(compressor->dst_mem.ptrw(), compressor->src_mem.ptr(), ofs, mode);
+
+ if (ret < 0) {
+ return 0;
+ }
+
+ if (ret > int(outLimit)) {
+ return 0; // Do not bother
+ }
+
+ memcpy(outData, compressor->dst_mem.ptr(), ret);
+
+ return ret;
+}
+
+size_t ENetConnection::Compressor::enet_decompress(void *context, const enet_uint8 *inData, size_t inLimit, enet_uint8 *outData, size_t outLimit) {
+ Compressor *compressor = (Compressor *)(context);
+ int ret = -1;
+ switch (compressor->mode) {
+ case COMPRESS_FASTLZ: {
+ ret = Compression::decompress(outData, outLimit, inData, inLimit, Compression::MODE_FASTLZ);
+ } break;
+ case COMPRESS_ZLIB: {
+ ret = Compression::decompress(outData, outLimit, inData, inLimit, Compression::MODE_DEFLATE);
+ } break;
+ case COMPRESS_ZSTD: {
+ ret = Compression::decompress(outData, outLimit, inData, inLimit, Compression::MODE_ZSTD);
+ } break;
+ default: {
+ }
+ }
+ if (ret < 0) {
+ return 0;
+ } else {
+ return ret;
+ }
+}
+
+void ENetConnection::Compressor::setup(ENetHost *p_host, CompressionMode p_mode) {
+ ERR_FAIL_COND(!p_host);
+ switch (p_mode) {
+ case COMPRESS_NONE: {
+ enet_host_compress(p_host, nullptr);
+ } break;
+ case COMPRESS_RANGE_CODER: {
+ enet_host_compress_with_range_coder(p_host);
+ } break;
+ case COMPRESS_FASTLZ:
+ case COMPRESS_ZLIB:
+ case COMPRESS_ZSTD: {
+ Compressor *compressor = memnew(Compressor(p_mode));
+ enet_host_compress(p_host, &(compressor->enet_compressor));
+ } break;
+ }
+}
+
+ENetConnection::Compressor::Compressor(CompressionMode p_mode) {
+ mode = p_mode;
+ enet_compressor.context = this;
+ enet_compressor.compress = enet_compress;
+ enet_compressor.decompress = enet_decompress;
+ enet_compressor.destroy = enet_compressor_destroy;
+}
diff --git a/modules/enet/enet_connection.h b/modules/enet/enet_connection.h
new file mode 100644
index 0000000000..0f7744953e
--- /dev/null
+++ b/modules/enet/enet_connection.h
@@ -0,0 +1,138 @@
+/*************************************************************************/
+/* enet_connection.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef ENET_CONNECTION_H
+#define ENET_CONNECTION_H
+
+#include "core/object/ref_counted.h"
+
+#include "core/crypto/crypto.h"
+#include "enet_packet_peer.h"
+
+#include <enet/enet.h>
+
+class ENetConnection : public RefCounted {
+ GDCLASS(ENetConnection, RefCounted);
+
+public:
+ enum CompressionMode {
+ COMPRESS_NONE = 0,
+ COMPRESS_RANGE_CODER,
+ COMPRESS_FASTLZ,
+ COMPRESS_ZLIB,
+ COMPRESS_ZSTD,
+ };
+
+ enum HostStatistic {
+ HOST_TOTAL_SENT_DATA,
+ HOST_TOTAL_SENT_PACKETS,
+ HOST_TOTAL_RECEIVED_DATA,
+ HOST_TOTAL_RECEIVED_PACKETS,
+ };
+
+ enum EventType {
+ EVENT_ERROR = -1,
+ EVENT_NONE = 0,
+ EVENT_CONNECT,
+ EVENT_DISCONNECT,
+ EVENT_RECEIVE,
+ };
+
+ struct Event {
+ Ref<ENetPacketPeer> peer;
+ enet_uint8 channel_id = 0;
+ enet_uint32 data = 0;
+ ENetPacket *packet = nullptr;
+ };
+
+protected:
+ static void _bind_methods();
+
+private:
+ ENetHost *host = nullptr;
+ List<Ref<ENetPacketPeer>> peers;
+
+ Error _create(ENetAddress *p_address, int p_max_peers, int p_max_channels, int p_in_bandwidth, int p_out_bandwidth);
+ Array _service(int p_timeout = 0);
+ void _broadcast(int p_channel, PackedByteArray p_packet, int p_flags);
+ Array _get_peers();
+
+ class Compressor {
+ private:
+ CompressionMode mode = COMPRESS_NONE;
+ Vector<uint8_t> src_mem;
+ Vector<uint8_t> dst_mem;
+ ENetCompressor enet_compressor;
+
+ Compressor(CompressionMode mode);
+
+ static size_t enet_compress(void *context, const ENetBuffer *inBuffers, size_t inBufferCount, size_t inLimit, enet_uint8 *outData, size_t outLimit);
+ static size_t enet_decompress(void *context, const enet_uint8 *inData, size_t inLimit, enet_uint8 *outData, size_t outLimit);
+ static void enet_compressor_destroy(void *context) {
+ memdelete((Compressor *)context);
+ }
+
+ public:
+ static void setup(ENetHost *p_host, CompressionMode p_mode);
+ };
+
+public:
+ void broadcast(enet_uint8 p_channel, ENetPacket *p_packet);
+ Error create_host_bound(const IPAddress &p_bind_address = IPAddress("*"), int p_port = 0, int p_max_peers = 32, int p_max_channels = 0, int p_in_bandwidth = 0, int p_out_bandwidth = 0);
+ Error create_host(int p_max_peers = 32, int p_max_channels = 0, int p_in_bandwidth = 0, int p_out_bandwidth = 0);
+ void destroy();
+ Ref<ENetPacketPeer> connect_to_host(const String &p_address, int p_port, int p_channels, int p_data = 0);
+ EventType service(int p_timeout, Event &r_event);
+ void flush();
+ void bandwidth_limit(int p_in_bandwidth = 0, int p_out_bandwidth = 0);
+ void channel_limit(int p_max_channels);
+ void bandwidth_throttle();
+ void compress(CompressionMode p_mode);
+ double pop_statistic(HostStatistic p_stat);
+ int get_max_channels() const;
+
+ // Extras
+ void get_peers(List<Ref<ENetPacketPeer>> &r_peers);
+ int get_local_port() const;
+
+ // Godot additions
+ Error dtls_server_setup(Ref<CryptoKey> p_key, Ref<X509Certificate> p_cert);
+ Error dtls_client_setup(Ref<X509Certificate> p_cert, const String &p_hostname, bool p_verify = true);
+ void refuse_new_connections(bool p_refuse);
+
+ ENetConnection() {}
+ ~ENetConnection();
+};
+
+VARIANT_ENUM_CAST(ENetConnection::CompressionMode);
+VARIANT_ENUM_CAST(ENetConnection::EventType);
+VARIANT_ENUM_CAST(ENetConnection::HostStatistic);
+
+#endif // ENET_CONNECTION_H
diff --git a/modules/enet/enet_multiplayer_peer.cpp b/modules/enet/enet_multiplayer_peer.cpp
index b4ca93f4d9..aa0e09bcde 100644
--- a/modules/enet/enet_multiplayer_peer.cpp
+++ b/modules/enet/enet_multiplayer_peer.cpp
@@ -33,6 +33,14 @@
#include "core/io/marshalls.h"
#include "core/os/os.h"
+void ENetMultiplayerPeer::set_transfer_channel(int p_channel) {
+ transfer_channel = p_channel;
+}
+
+int ENetMultiplayerPeer::get_transfer_channel() const {
+ return transfer_channel;
+}
+
void ENetMultiplayerPeer::set_transfer_mode(TransferMode p_mode) {
transfer_mode = p_mode;
}
@@ -46,458 +54,375 @@ void ENetMultiplayerPeer::set_target_peer(int p_peer) {
}
int ENetMultiplayerPeer::get_packet_peer() const {
- ERR_FAIL_COND_V_MSG(!active, 1, "The multiplayer instance isn't currently active.");
+ ERR_FAIL_COND_V_MSG(!_is_active(), 1, "The multiplayer instance isn't currently active.");
ERR_FAIL_COND_V(incoming_packets.size() == 0, 1);
return incoming_packets.front()->get().from;
}
-int ENetMultiplayerPeer::get_packet_channel() const {
- ERR_FAIL_COND_V_MSG(!active, -1, "The multiplayer instance isn't currently active.");
- ERR_FAIL_COND_V(incoming_packets.size() == 0, -1);
-
- return incoming_packets.front()->get().channel;
-}
-
-int ENetMultiplayerPeer::get_last_packet_channel() const {
- ERR_FAIL_COND_V_MSG(!active, -1, "The multiplayer instance isn't currently active.");
- ERR_FAIL_COND_V(!current_packet.packet, -1);
+Error ENetMultiplayerPeer::create_server(int p_port, int p_max_clients, int p_max_channels, int p_in_bandwidth, int p_out_bandwidth) {
+ ERR_FAIL_COND_V_MSG(_is_active(), ERR_ALREADY_IN_USE, "The multiplayer instance is already active.");
+ Ref<ENetConnection> host;
+ host.instantiate();
+ Error err = host->create_host_bound(bind_ip, p_port, p_max_clients, 0, p_max_channels > 0 ? p_max_channels + SYSCH_MAX : 0, p_out_bandwidth);
+ if (err != OK) {
+ return err;
+ }
- return current_packet.channel;
+ active_mode = MODE_SERVER;
+ refuse_connections = false;
+ unique_id = 1;
+ connection_status = CONNECTION_CONNECTED;
+ hosts[0] = host;
+ return OK;
}
-Error ENetMultiplayerPeer::create_server(int p_port, int p_max_clients, int p_in_bandwidth, int p_out_bandwidth) {
- ERR_FAIL_COND_V_MSG(active, ERR_ALREADY_IN_USE, "The multiplayer instance is already active.");
- ERR_FAIL_COND_V_MSG(p_port < 0 || p_port > 65535, ERR_INVALID_PARAMETER, "The local port number must be between 0 and 65535 (inclusive).");
- ERR_FAIL_COND_V_MSG(p_max_clients < 1 || p_max_clients > 4095, ERR_INVALID_PARAMETER, "The number of clients must be set between 1 and 4095 (inclusive).");
- ERR_FAIL_COND_V_MSG(p_in_bandwidth < 0, ERR_INVALID_PARAMETER, "The incoming bandwidth limit must be greater than or equal to 0 (0 disables the limit).");
- ERR_FAIL_COND_V_MSG(p_out_bandwidth < 0, ERR_INVALID_PARAMETER, "The outgoing bandwidth limit must be greater than or equal to 0 (0 disables the limit).");
- ERR_FAIL_COND_V(dtls_enabled && (dtls_key.is_null() || dtls_cert.is_null()), ERR_INVALID_PARAMETER);
-
- ENetAddress address;
- memset(&address, 0, sizeof(address));
-
-#ifdef GODOT_ENET
- if (bind_ip.is_wildcard()) {
- address.wildcard = 1;
+Error ENetMultiplayerPeer::create_client(const String &p_address, int p_port, int p_channel_count, int p_in_bandwidth, int p_out_bandwidth, int p_local_port) {
+ ERR_FAIL_COND_V_MSG(_is_active(), ERR_ALREADY_IN_USE, "The multiplayer instance is already active.");
+ Ref<ENetConnection> host;
+ host.instantiate();
+ Error err;
+ if (p_local_port) {
+ err = host->create_host_bound(bind_ip, p_local_port, 1, 0, p_in_bandwidth, p_out_bandwidth);
} else {
- enet_address_set_ip(&address, bind_ip.get_ipv6(), 16);
+ err = host->create_host(1, 0, p_in_bandwidth, p_out_bandwidth);
}
-#else
- if (bind_ip.is_wildcard()) {
- address.host = 0;
- } else {
- ERR_FAIL_COND_V(!bind_ip.is_ipv4(), ERR_INVALID_PARAMETER);
- address.host = *(uint32_t *)bind_ip.get_ipv4();
+ if (err != OK) {
+ return err;
}
-#endif
- address.port = p_port;
- host = enet_host_create(&address /* the address to bind the server host to */,
- p_max_clients /* allow up to 32 clients and/or outgoing connections */,
- channel_count /* allow up to channel_count to be used */,
- p_in_bandwidth /* limit incoming bandwidth if > 0 */,
- p_out_bandwidth /* limit outgoing bandwidth if > 0 */);
+ unique_id = generate_unique_id();
- ERR_FAIL_COND_V_MSG(!host, ERR_CANT_CREATE, "Couldn't create an ENet multiplayer server.");
-#ifdef GODOT_ENET
- if (dtls_enabled) {
- enet_host_dtls_server_setup(host, dtls_key.ptr(), dtls_cert.ptr());
+ Ref<ENetPacketPeer> peer = host->connect_to_host(p_address, p_port, p_channel_count > 0 ? p_channel_count + SYSCH_MAX : 0, unique_id);
+ if (peer.is_null()) {
+ host->destroy();
+ ERR_FAIL_V_MSG(ERR_CANT_CREATE, "Couldn't connect to the ENet multiplayer server.");
}
- enet_host_refuse_new_connections(host, refuse_connections);
-#endif
- _setup_compressor();
- active = true;
- server = true;
+ // Need to wait for CONNECT event.
+ connection_status = CONNECTION_CONNECTING;
+ active_mode = MODE_CLIENT;
refuse_connections = false;
- unique_id = 1;
+ peers[1] = peer;
+ hosts[0] = host;
+
+ return OK;
+}
+
+Error ENetMultiplayerPeer::create_mesh(int p_id) {
+ ERR_FAIL_COND_V_MSG(p_id <= 0, ERR_INVALID_PARAMETER, "The unique ID must be greater then 0");
+ ERR_FAIL_COND_V_MSG(_is_active(), ERR_ALREADY_IN_USE, "The multiplayer instance is already active.");
+ active_mode = MODE_MESH;
+ refuse_connections = false;
+ unique_id = p_id;
connection_status = CONNECTION_CONNECTED;
return OK;
}
-Error ENetMultiplayerPeer::create_client(const String &p_address, int p_port, int p_in_bandwidth, int p_out_bandwidth, int p_local_port) {
- ERR_FAIL_COND_V_MSG(active, ERR_ALREADY_IN_USE, "The multiplayer instance is already active.");
- ERR_FAIL_COND_V_MSG(p_port < 1 || p_port > 65535, ERR_INVALID_PARAMETER, "The remote port number must be between 1 and 65535 (inclusive).");
- ERR_FAIL_COND_V_MSG(p_local_port < 0 || p_local_port > 65535, ERR_INVALID_PARAMETER, "The local port number must be between 0 and 65535 (inclusive).");
- ERR_FAIL_COND_V_MSG(p_in_bandwidth < 0, ERR_INVALID_PARAMETER, "The incoming bandwidth limit must be greater than or equal to 0 (0 disables the limit).");
- ERR_FAIL_COND_V_MSG(p_out_bandwidth < 0, ERR_INVALID_PARAMETER, "The outgoing bandwidth limit must be greater than or equal to 0 (0 disables the limit).");
- ENetAddress c_client;
+Error ENetMultiplayerPeer::add_mesh_peer(int p_id, Ref<ENetConnection> p_host) {
+ ERR_FAIL_COND_V(p_host.is_null(), ERR_INVALID_PARAMETER);
+ ERR_FAIL_COND_V_MSG(active_mode != MODE_MESH, ERR_UNCONFIGURED, "The multiplayer instance is not configured as a mesh. Call 'create_mesh' first.");
+ List<Ref<ENetPacketPeer>> host_peers;
+ p_host->get_peers(host_peers);
+ ERR_FAIL_COND_V_MSG(host_peers.size() != 1 || host_peers[0]->get_state() != ENetPacketPeer::STATE_CONNECTED, ERR_INVALID_PARAMETER, "The provided host must have excatly one peer in the connected state.");
+ hosts[p_id] = p_host;
+ peers[p_id] = host_peers[0];
+ emit_signal(SNAME("peer_connected"), p_id);
+ return OK;
+}
-#ifdef GODOT_ENET
- if (bind_ip.is_wildcard()) {
- c_client.wildcard = 1;
- } else {
- enet_address_set_ip(&c_client, bind_ip.get_ipv6(), 16);
- }
-#else
- if (bind_ip.is_wildcard()) {
- c_client.host = 0;
- } else {
- ERR_FAIL_COND_V_MSG(!bind_ip.is_ipv4(), ERR_INVALID_PARAMETER, "Wildcard IP addresses are only permitted in IPv4, not IPv6.");
- c_client.host = *(uint32_t *)bind_ip.get_ipv4();
+bool ENetMultiplayerPeer::_poll_server() {
+ for (const KeyValue<int, Ref<ENetPacketPeer>> &E : peers) {
+ if (!(E.value->is_active())) {
+ emit_signal(SNAME("peer_disconnected"), E.value->get_meta(SNAME("_net_id")));
+ peers.erase(E.key);
+ }
}
-#endif
-
- c_client.port = p_local_port;
-
- host = enet_host_create(&c_client /* create a client host */,
- 1 /* only allow 1 outgoing connection */,
- channel_count /* allow up to channel_count to be used */,
- p_in_bandwidth /* limit incoming bandwidth if > 0 */,
- p_out_bandwidth /* limit outgoing bandwidth if > 0 */);
-
- ERR_FAIL_COND_V_MSG(!host, ERR_CANT_CREATE, "Couldn't create the ENet client host.");
-#ifdef GODOT_ENET
- if (dtls_enabled) {
- enet_host_dtls_client_setup(host, dtls_cert.ptr(), dtls_verify, p_address.utf8().get_data());
+ ENetConnection::Event event;
+ ENetConnection::EventType ret = hosts[0]->service(0, event);
+ if (ret == ENetConnection::EVENT_ERROR) {
+ return true;
}
- enet_host_refuse_new_connections(host, refuse_connections);
-#endif
+ switch (ret) {
+ case ENetConnection::EVENT_CONNECT: {
+ if (refuse_connections) {
+ event.peer->reset();
+ return false;
+ }
+ // Client joined with invalid ID, probably trying to exploit us.
+ if (event.data < 2 || peers.has((int)event.data)) {
+ event.peer->reset();
+ return false;
+ }
+ int id = event.data;
+ event.peer->set_meta(SNAME("_net_id"), id);
+ peers[id] = event.peer;
- _setup_compressor();
+ emit_signal(SNAME("peer_connected"), id);
+ if (server_relay) {
+ _notify_peers(id, true);
+ }
+ return false;
+ }
+ case ENetConnection::EVENT_DISCONNECT: {
+ int id = event.peer->get_meta(SNAME("_net_id"));
+ if (!peers.has(id)) {
+ // Never fully connected.
+ return false;
+ }
- IPAddress ip;
- if (p_address.is_valid_ip_address()) {
- ip = p_address;
- } else {
-#ifdef GODOT_ENET
- ip = IP::get_singleton()->resolve_hostname(p_address);
-#else
- ip = IP::get_singleton()->resolve_hostname(p_address, IP::TYPE_IPV4);
-#endif
+ emit_signal(SNAME("peer_disconnected"), id);
+ peers.erase(id);
+ if (!server_relay) {
+ _notify_peers(id, false);
+ }
+ return false;
+ }
+ case ENetConnection::EVENT_RECEIVE: {
+ if (event.channel_id == SYSCH_CONFIG) {
+ _destroy_unused(event.packet);
+ ERR_FAIL_V_MSG(false, "Only server can send config messages");
+ } else {
+ if (event.packet->dataLength < 8) {
+ _destroy_unused(event.packet);
+ ERR_FAIL_V_MSG(false, "Invalid packet size");
+ }
- ERR_FAIL_COND_V_MSG(!ip.is_valid(), ERR_CANT_RESOLVE, "Couldn't resolve the server IP address or domain name.");
- }
+ uint32_t source = decode_uint32(&event.packet->data[0]);
+ int target = decode_uint32(&event.packet->data[4]);
- ENetAddress address;
-#ifdef GODOT_ENET
- enet_address_set_ip(&address, ip.get_ipv6(), 16);
-#else
- ERR_FAIL_COND_V_MSG(!ip.is_ipv4(), ERR_INVALID_PARAMETER, "Connecting to an IPv6 server isn't supported when using vanilla ENet. Recompile Godot with the bundled ENet library.");
- address.host = *(uint32_t *)ip.get_ipv4();
-#endif
- address.port = p_port;
+ uint32_t id = event.peer->get_meta(SNAME("_net_id"));
+ // Someone is cheating and trying to fake the source!
+ if (source != id) {
+ _destroy_unused(event.packet);
+ ERR_FAIL_V_MSG(false, "Someone is cheating and trying to fake the source!");
+ }
- unique_id = _gen_unique_id();
+ Packet packet;
+ packet.packet = event.packet;
+ packet.channel = event.channel_id;
+ packet.from = id;
- // Initiate connection, allocating enough channels
- ENetPeer *peer = enet_host_connect(host, &address, channel_count, unique_id);
+ // Even if relaying is disabled, these targets are valid as incoming packets.
+ if (target == 1 || target == 0 || target < -1) {
+ packet.packet->referenceCount++;
+ incoming_packets.push_back(packet);
+ }
- if (peer == nullptr) {
- enet_host_destroy(host);
- ERR_FAIL_COND_V_MSG(!peer, ERR_CANT_CREATE, "Couldn't connect to the ENet multiplayer server.");
+ if (server_relay && target != 1) {
+ packet.packet->referenceCount++;
+ _relay(source, target, event.channel_id, event.packet);
+ packet.packet->referenceCount--;
+ _destroy_unused(event.packet);
+ }
+ // Destroy packet later
+ }
+ return false;
+ }
+ default:
+ return true;
}
-
- // Technically safe to ignore the peer or anything else.
-
- connection_status = CONNECTION_CONNECTING;
- active = true;
- server = false;
- refuse_connections = false;
-
- return OK;
}
-void ENetMultiplayerPeer::poll() {
- ERR_FAIL_COND_MSG(!active, "The multiplayer instance isn't currently active.");
-
- _pop_current_packet();
-
- ENetEvent event;
- /* Keep servicing until there are no available events left in queue. */
- while (true) {
- if (!host || !active) { // Might have been disconnected while emitting a notification
- return;
+bool ENetMultiplayerPeer::_poll_client() {
+ if (peers.has(1) && !peers[1]->is_active()) {
+ if (connection_status == CONNECTION_CONNECTED) {
+ // Client just disconnected from server.
+ emit_signal(SNAME("server_disconnected"));
+ } else {
+ emit_signal(SNAME("connection_failed"));
}
-
- int ret = enet_host_service(host, &event, 0);
-
- if (ret < 0) {
- // Error, do something?
- break;
- } else if (ret == 0) {
- break;
+ close_connection();
+ return true;
+ }
+ ENetConnection::Event event;
+ ENetConnection::EventType ret = hosts[0]->service(0, event);
+ if (ret == ENetConnection::EVENT_ERROR) {
+ return true;
+ }
+ switch (ret) {
+ case ENetConnection::EVENT_CONNECT: {
+ emit_signal(SNAME("peer_connected"), 1);
+ connection_status = CONNECTION_CONNECTED;
+ emit_signal(SNAME("connection_succeeded"));
+ return false;
+ }
+ case ENetConnection::EVENT_DISCONNECT: {
+ if (connection_status == CONNECTION_CONNECTED) {
+ // Client just disconnected from server.
+ emit_signal(SNAME("server_disconnected"));
+ } else {
+ emit_signal(SNAME("connection_failed"));
+ }
+ close_connection();
+ return true;
}
+ case ENetConnection::EVENT_RECEIVE: {
+ if (event.channel_id == SYSCH_CONFIG) {
+ // Config message
+ if (event.packet->dataLength != 8) {
+ _destroy_unused(event.packet);
+ ERR_FAIL_V(false);
+ }
- switch (event.type) {
- case ENET_EVENT_TYPE_CONNECT: {
- // Store any relevant client information here.
+ int msg = decode_uint32(&event.packet->data[0]);
+ int id = decode_uint32(&event.packet->data[4]);
- if (server && refuse_connections) {
- enet_peer_reset(event.peer);
- break;
- }
+ switch (msg) {
+ case SYSMSG_ADD_PEER: {
+ peers[id] = Ref<ENetPacketPeer>();
+ emit_signal(SNAME("peer_connected"), id);
- // A client joined with an invalid ID (negative values, 0, and 1 are reserved).
- // Probably trying to exploit us.
- if (server && ((int)event.data < 2 || peer_map.has((int)event.data))) {
- enet_peer_reset(event.peer);
- ERR_CONTINUE(true);
+ } break;
+ case SYSMSG_REMOVE_PEER: {
+ peers.erase(id);
+ emit_signal(SNAME("peer_disconnected"), id);
+ } break;
+ }
+ _destroy_unused(event.packet);
+ } else {
+ if (event.packet->dataLength < 8) {
+ _destroy_unused(event.packet);
+ ERR_FAIL_V_MSG(false, "Invalid packet size");
}
- int *new_id = memnew(int);
- *new_id = event.data;
+ uint32_t source = decode_uint32(&event.packet->data[0]);
+ Packet packet;
+ packet.packet = event.packet;
+ packet.from = source;
+ packet.channel = event.channel_id;
- if (*new_id == 0) { // Data zero is sent by server (ENet won't let you configure this). Server is always 1.
- *new_id = 1;
- }
+ packet.packet->referenceCount++;
+ incoming_packets.push_back(packet);
+ // Destroy packet later
+ }
+ return false;
+ }
+ default:
+ return true;
+ }
+}
- event.peer->data = new_id;
-
- peer_map[*new_id] = event.peer;
-
- connection_status = CONNECTION_CONNECTED; // If connecting, this means it connected to something!
-
- emit_signal(SNAME("peer_connected"), *new_id);
-
- if (server) {
- // Do not notify other peers when server_relay is disabled.
- if (!server_relay) {
- break;
- }
-
- // Someone connected, notify all the peers available
- for (Map<int, ENetPeer *>::Element *E = peer_map.front(); E; E = E->next()) {
- if (E->key() == *new_id) {
- continue;
- }
- // Send existing peers to new peer
- ENetPacket *packet = enet_packet_create(nullptr, 8, ENET_PACKET_FLAG_RELIABLE);
- encode_uint32(SYSMSG_ADD_PEER, &packet->data[0]);
- encode_uint32(E->key(), &packet->data[4]);
- enet_peer_send(event.peer, SYSCH_CONFIG, packet);
- // Send the new peer to existing peers
- packet = enet_packet_create(nullptr, 8, ENET_PACKET_FLAG_RELIABLE);
- encode_uint32(SYSMSG_ADD_PEER, &packet->data[0]);
- encode_uint32(*new_id, &packet->data[4]);
- enet_peer_send(E->get(), SYSCH_CONFIG, packet);
- }
- } else {
- emit_signal(SNAME("connection_succeeded"));
+bool ENetMultiplayerPeer::_poll_mesh() {
+ for (const KeyValue<int, Ref<ENetPacketPeer>> &E : peers) {
+ if (!(E.value->is_active())) {
+ emit_signal(SNAME("peer_disconnected"), E.key);
+ peers.erase(E.key);
+ if (hosts.has(E.key)) {
+ hosts.erase(E.key);
+ }
+ }
+ }
+ bool should_stop = true;
+ for (KeyValue<int, Ref<ENetConnection>> &E : hosts) {
+ ENetConnection::Event event;
+ ENetConnection::EventType ret = E.value->service(0, event);
+ if (ret == ENetConnection::EVENT_ERROR) {
+ if (peers.has(E.key)) {
+ emit_signal(SNAME("peer_disconnected"), E.key);
+ peers.erase(E.key);
+ }
+ hosts.erase(E.key);
+ continue;
+ }
+ switch (ret) {
+ case ENetConnection::EVENT_CONNECT:
+ should_stop = false;
+ event.peer->reset();
+ break;
+ case ENetConnection::EVENT_DISCONNECT:
+ should_stop = false;
+ if (peers.has(E.key)) {
+ emit_signal(SNAME("peer_disconnected"), E.key);
+ peers.erase(E.key);
}
+ hosts.erase(E.key);
+ break;
+ case ENetConnection::EVENT_RECEIVE: {
+ should_stop = false;
+ if (event.packet->dataLength < 8) {
+ _destroy_unused(event.packet);
+ ERR_CONTINUE_MSG(true, "Invalid packet size");
+ }
+
+ Packet packet;
+ packet.packet = event.packet;
+ packet.from = E.key;
+ packet.channel = event.channel_id;
+ packet.packet->referenceCount++;
+ incoming_packets.push_back(packet);
} break;
- case ENET_EVENT_TYPE_DISCONNECT: {
- // Reset the peer's client information.
+ default:
+ break; // Nothing to do
+ }
+ }
+ return should_stop;
+}
- int *id = (int *)event.peer->data;
+void ENetMultiplayerPeer::poll() {
+ ERR_FAIL_COND_MSG(!_is_active(), "The multiplayer instance isn't currently active.");
- if (!id) {
- if (!server) {
- emit_signal(SNAME("connection_failed"));
- }
- // Never fully connected.
- break;
- }
+ _pop_current_packet();
- if (!server) {
- // Client just disconnected from server.
- emit_signal(SNAME("server_disconnected"));
- close_connection();
+ while (true) {
+ switch (active_mode) {
+ case MODE_CLIENT:
+ if (_poll_client()) {
return;
- } else if (server_relay) {
- // Server just received a client disconnect and is in relay mode, notify everyone else.
- for (Map<int, ENetPeer *>::Element *E = peer_map.front(); E; E = E->next()) {
- if (E->key() == *id) {
- continue;
- }
-
- ENetPacket *packet = enet_packet_create(nullptr, 8, ENET_PACKET_FLAG_RELIABLE);
- encode_uint32(SYSMSG_REMOVE_PEER, &packet->data[0]);
- encode_uint32(*id, &packet->data[4]);
- enet_peer_send(E->get(), SYSCH_CONFIG, packet);
- }
}
-
- emit_signal(SNAME("peer_disconnected"), *id);
- peer_map.erase(*id);
- memdelete(id);
- } break;
- case ENET_EVENT_TYPE_RECEIVE: {
- if (event.channelID == SYSCH_CONFIG) {
- // Some config message
- ERR_CONTINUE(event.packet->dataLength < 8);
-
- // Only server can send config messages
- ERR_CONTINUE(server);
-
- int msg = decode_uint32(&event.packet->data[0]);
- int id = decode_uint32(&event.packet->data[4]);
-
- switch (msg) {
- case SYSMSG_ADD_PEER: {
- peer_map[id] = nullptr;
- emit_signal(SNAME("peer_connected"), id);
-
- } break;
- case SYSMSG_REMOVE_PEER: {
- peer_map.erase(id);
- emit_signal(SNAME("peer_disconnected"), id);
- } break;
- }
-
- enet_packet_destroy(event.packet);
- } else if (event.channelID < channel_count) {
- Packet packet;
- packet.packet = event.packet;
-
- uint32_t *id = (uint32_t *)event.peer->data;
-
- ERR_CONTINUE(event.packet->dataLength < 8);
-
- uint32_t source = decode_uint32(&event.packet->data[0]);
- int target = decode_uint32(&event.packet->data[4]);
-
- packet.from = source;
- packet.channel = event.channelID;
-
- if (server) {
- // Someone is cheating and trying to fake the source!
- ERR_CONTINUE(source != *id);
-
- packet.from = *id;
-
- if (target == 1) {
- // To myself and only myself
- incoming_packets.push_back(packet);
- } else if (!server_relay) {
- // When relaying is disabled, other destinations will only be processed by the server.
- if (target == 0 || target < -1) {
- incoming_packets.push_back(packet);
- }
- continue;
- } else if (target == 0) {
- // Re-send to everyone but sender :|
-
- incoming_packets.push_back(packet);
- // And make copies for sending
- for (Map<int, ENetPeer *>::Element *E = peer_map.front(); E; E = E->next()) {
- if (uint32_t(E->key()) == source) { // Do not resend to self
- continue;
- }
-
- ENetPacket *packet2 = enet_packet_create(packet.packet->data, packet.packet->dataLength, packet.packet->flags);
-
- enet_peer_send(E->get(), event.channelID, packet2);
- }
-
- } else if (target < 0) {
- // To all but one
-
- // And make copies for sending
- for (Map<int, ENetPeer *>::Element *E = peer_map.front(); E; E = E->next()) {
- if (uint32_t(E->key()) == source || E->key() == -target) { // Do not resend to self, also do not send to excluded
- continue;
- }
-
- ENetPacket *packet2 = enet_packet_create(packet.packet->data, packet.packet->dataLength, packet.packet->flags);
-
- enet_peer_send(E->get(), event.channelID, packet2);
- }
-
- if (-target != 1) {
- // Server is not excluded
- incoming_packets.push_back(packet);
- } else {
- // Server is excluded, erase packet
- enet_packet_destroy(packet.packet);
- }
-
- } else {
- // To someone else, specifically
- ERR_CONTINUE(!peer_map.has(target));
- enet_peer_send(peer_map[target], event.channelID, packet.packet);
- }
- } else {
- incoming_packets.push_back(packet);
- }
-
- // Destroy packet later
- } else {
- ERR_CONTINUE(true);
+ break;
+ case MODE_SERVER:
+ if (_poll_server()) {
+ return;
}
-
- } break;
- case ENET_EVENT_TYPE_NONE: {
- // Do nothing
- } break;
+ break;
+ case MODE_MESH:
+ if (_poll_mesh()) {
+ return;
+ }
+ break;
+ default:
+ return;
}
}
}
bool ENetMultiplayerPeer::is_server() const {
- ERR_FAIL_COND_V_MSG(!active, false, "The multiplayer instance isn't currently active.");
-
- return server;
+ return active_mode == MODE_SERVER;
}
void ENetMultiplayerPeer::close_connection(uint32_t wait_usec) {
- ERR_FAIL_COND_MSG(!active, "The multiplayer instance isn't currently active.");
+ ERR_FAIL_COND_MSG(!_is_active(), "The multiplayer instance isn't currently active.");
_pop_current_packet();
bool peers_disconnected = false;
- for (Map<int, ENetPeer *>::Element *E = peer_map.front(); E; E = E->next()) {
- if (E->get()) {
- enet_peer_disconnect_now(E->get(), unique_id);
- int *id = (int *)(E->get()->data);
- memdelete(id);
+ for (KeyValue<int, Ref<ENetPacketPeer>> &E : peers) {
+ if (E.value.is_valid() && E.value->get_state() == ENetPacketPeer::STATE_CONNECTED) {
+ E.value->peer_disconnect_now(unique_id);
peers_disconnected = true;
}
}
if (peers_disconnected) {
- enet_host_flush(host);
+ for (KeyValue<int, Ref<ENetConnection>> &E : hosts) {
+ E.value->flush();
+ }
if (wait_usec > 0) {
OS::get_singleton()->delay_usec(wait_usec); // Wait for disconnection packets to send
}
}
- enet_host_destroy(host);
- active = false;
+ active_mode = MODE_NONE;
incoming_packets.clear();
- peer_map.clear();
- unique_id = 1; // Server is 1
+ peers.clear();
+ hosts.clear();
+ unique_id = 0;
connection_status = CONNECTION_DISCONNECTED;
}
-void ENetMultiplayerPeer::disconnect_peer(int p_peer, bool now) {
- ERR_FAIL_COND_MSG(!active, "The multiplayer instance isn't currently active.");
- ERR_FAIL_COND_MSG(!is_server(), "Can't disconnect a peer when not acting as a server.");
- ERR_FAIL_COND_MSG(!peer_map.has(p_peer), vformat("Peer ID %d not found in the list of peers.", p_peer));
-
- if (now) {
- int *id = (int *)peer_map[p_peer]->data;
- enet_peer_disconnect_now(peer_map[p_peer], 0);
-
- // enet_peer_disconnect_now doesn't generate ENET_EVENT_TYPE_DISCONNECT,
- // notify everyone else, send disconnect signal & remove from peer_map like in poll()
- if (server_relay) {
- for (Map<int, ENetPeer *>::Element *E = peer_map.front(); E; E = E->next()) {
- if (E->key() == p_peer) {
- continue;
- }
-
- ENetPacket *packet = enet_packet_create(nullptr, 8, ENET_PACKET_FLAG_RELIABLE);
- encode_uint32(SYSMSG_REMOVE_PEER, &packet->data[0]);
- encode_uint32(p_peer, &packet->data[4]);
- enet_peer_send(E->get(), SYSCH_CONFIG, packet);
- }
- }
-
- if (id) {
- memdelete(id);
- }
-
- emit_signal(SNAME("peer_disconnected"), p_peer);
- peer_map.erase(p_peer);
- } else {
- enet_peer_disconnect_later(peer_map[p_peer], 0);
- }
-}
-
int ENetMultiplayerPeer::get_available_packet_count() const {
return incoming_packets.size();
}
@@ -517,40 +442,30 @@ Error ENetMultiplayerPeer::get_packet(const uint8_t **r_buffer, int &r_buffer_si
}
Error ENetMultiplayerPeer::put_packet(const uint8_t *p_buffer, int p_buffer_size) {
- ERR_FAIL_COND_V_MSG(!active, ERR_UNCONFIGURED, "The multiplayer instance isn't currently active.");
+ ERR_FAIL_COND_V_MSG(!_is_active(), ERR_UNCONFIGURED, "The multiplayer instance isn't currently active.");
ERR_FAIL_COND_V_MSG(connection_status != CONNECTION_CONNECTED, ERR_UNCONFIGURED, "The multiplayer instance isn't currently connected to any server or client.");
+ ERR_FAIL_COND_V_MSG(target_peer != 0 && !peers.has(ABS(target_peer)), ERR_INVALID_PARAMETER, vformat("Invalid target peer: %d", target_peer));
+ ERR_FAIL_COND_V(active_mode == MODE_CLIENT && !peers.has(1), ERR_BUG);
int packet_flags = 0;
int channel = SYSCH_RELIABLE;
-
- switch (transfer_mode) {
- case TRANSFER_MODE_UNRELIABLE: {
- if (always_ordered) {
- packet_flags = 0;
- } else {
+ if (transfer_channel > 0) {
+ channel = SYSCH_MAX + transfer_channel - 1;
+ } else {
+ switch (transfer_mode) {
+ case TRANSFER_MODE_UNRELIABLE: {
packet_flags = ENET_PACKET_FLAG_UNSEQUENCED;
- }
- channel = SYSCH_UNRELIABLE;
- } break;
- case TRANSFER_MODE_UNRELIABLE_ORDERED: {
- packet_flags = 0;
- channel = SYSCH_UNRELIABLE;
- } break;
- case TRANSFER_MODE_RELIABLE: {
- packet_flags = ENET_PACKET_FLAG_RELIABLE;
- channel = SYSCH_RELIABLE;
- } break;
- }
-
- if (transfer_channel > SYSCH_CONFIG) {
- channel = transfer_channel;
- }
-
- Map<int, ENetPeer *>::Element *E = nullptr;
-
- if (target_peer != 0) {
- E = peer_map.find(ABS(target_peer));
- ERR_FAIL_COND_V_MSG(!E, ERR_INVALID_PARAMETER, vformat("Invalid target peer: %d", target_peer));
+ channel = SYSCH_UNRELIABLE;
+ } break;
+ case TRANSFER_MODE_UNRELIABLE_ORDERED: {
+ packet_flags = 0;
+ channel = SYSCH_UNRELIABLE;
+ } break;
+ case TRANSFER_MODE_RELIABLE: {
+ packet_flags = ENET_PACKET_FLAG_RELIABLE;
+ channel = SYSCH_RELIABLE;
+ } break;
+ }
}
ENetPacket *packet = enet_packet_create(nullptr, p_buffer_size + 8, packet_flags);
@@ -558,36 +473,50 @@ Error ENetMultiplayerPeer::put_packet(const uint8_t *p_buffer, int p_buffer_size
encode_uint32(target_peer, &packet->data[4]); // Dest ID
memcpy(&packet->data[8], p_buffer, p_buffer_size);
- if (server) {
+ if (is_server()) {
if (target_peer == 0) {
- enet_host_broadcast(host, channel, packet);
- } else if (target_peer < 0) {
- // Send to all but one
- // and make copies for sending
+ hosts[0]->broadcast(channel, packet);
+ } else if (target_peer < 0) {
+ // Send to all but one and make copies for sending.
int exclude = -target_peer;
-
- for (Map<int, ENetPeer *>::Element *F = peer_map.front(); F; F = F->next()) {
- if (F->key() == exclude) { // Exclude packet
+ for (KeyValue<int, Ref<ENetPacketPeer>> &E : peers) {
+ if (E.key == exclude) {
continue;
}
+ E.value->send(channel, packet);
+ }
+ _destroy_unused(packet);
+ } else {
+ peers[target_peer]->send(channel, packet);
+ }
+ ERR_FAIL_COND_V(!hosts.has(0), ERR_BUG);
+ hosts[0]->flush();
- ENetPacket *packet2 = enet_packet_create(packet->data, packet->dataLength, packet_flags);
+ } else if (active_mode == MODE_CLIENT) {
+ peers[1]->send(channel, packet); // Send to server for broadcast.
+ ERR_FAIL_COND_V(!hosts.has(0), ERR_BUG);
+ hosts[0]->flush();
- enet_peer_send(F->get(), channel, packet2);
+ } else {
+ if (target_peer <= 0) {
+ int exclude = ABS(target_peer);
+ for (KeyValue<int, Ref<ENetPacketPeer>> &E : peers) {
+ if (E.key == exclude) {
+ continue;
+ }
+ E.value->send(channel, packet);
+ ERR_CONTINUE(!hosts.has(E.key));
+ hosts[E.key]->flush();
}
-
- enet_packet_destroy(packet); // Original packet no longer needed
+ _destroy_unused(packet);
} else {
- enet_peer_send(E->get(), channel, packet);
+ peers[target_peer]->send(channel, packet);
+ ERR_FAIL_COND_V(!hosts.has(target_peer), ERR_BUG);
+ hosts[target_peer]->flush();
}
- } else {
- ERR_FAIL_COND_V(!peer_map.has(1), ERR_BUG);
- enet_peer_send(peer_map[1], channel, packet); // Send to server for broadcast
}
- enet_host_flush(host);
-
return OK;
}
@@ -597,7 +526,8 @@ int ENetMultiplayerPeer::get_max_packet_size() const {
void ENetMultiplayerPeer::_pop_current_packet() {
if (current_packet.packet) {
- enet_packet_destroy(current_packet.packet);
+ current_packet.packet->referenceCount--;
+ _destroy_unused(current_packet.packet);
current_packet.packet = nullptr;
current_packet.from = 0;
current_packet.channel = -1;
@@ -608,37 +538,18 @@ MultiplayerPeer::ConnectionStatus ENetMultiplayerPeer::get_connection_status() c
return connection_status;
}
-uint32_t ENetMultiplayerPeer::_gen_unique_id() const {
- uint32_t hash = 0;
-
- while (hash == 0 || hash == 1) {
- hash = hash_djb2_one_32(
- (uint32_t)OS::get_singleton()->get_ticks_usec());
- hash = hash_djb2_one_32(
- (uint32_t)OS::get_singleton()->get_unix_time(), hash);
- hash = hash_djb2_one_32(
- (uint32_t)OS::get_singleton()->get_user_data_dir().hash64(), hash);
- hash = hash_djb2_one_32(
- (uint32_t)((uint64_t)this), hash); // Rely on ASLR heap
- hash = hash_djb2_one_32(
- (uint32_t)((uint64_t)&hash), hash); // Rely on ASLR stack
-
- hash = hash & 0x7FFFFFFF; // Make it compatible with unsigned, since negative ID is used for exclusion
- }
-
- return hash;
-}
-
int ENetMultiplayerPeer::get_unique_id() const {
- ERR_FAIL_COND_V_MSG(!active, 0, "The multiplayer instance isn't currently active.");
+ ERR_FAIL_COND_V_MSG(!_is_active(), 0, "The multiplayer instance isn't currently active.");
return unique_id;
}
void ENetMultiplayerPeer::set_refuse_new_connections(bool p_enable) {
refuse_connections = p_enable;
#ifdef GODOT_ENET
- if (active) {
- enet_host_refuse_new_connections(host, p_enable);
+ if (_is_active()) {
+ for (KeyValue<int, Ref<ENetConnection>> &E : hosts) {
+ E.value->refuse_new_connections(p_enable);
+ }
}
#endif
}
@@ -647,244 +558,122 @@ bool ENetMultiplayerPeer::is_refusing_new_connections() const {
return refuse_connections;
}
-void ENetMultiplayerPeer::set_compression_mode(CompressionMode p_mode) {
- compression_mode = p_mode;
-}
+void ENetMultiplayerPeer::set_server_relay_enabled(bool p_enabled) {
+ ERR_FAIL_COND_MSG(_is_active(), "Server relaying can't be toggled while the multiplayer instance is active.");
-ENetMultiplayerPeer::CompressionMode ENetMultiplayerPeer::get_compression_mode() const {
- return compression_mode;
+ server_relay = p_enabled;
}
-size_t ENetMultiplayerPeer::enet_compress(void *context, const ENetBuffer *inBuffers, size_t inBufferCount, size_t inLimit, enet_uint8 *outData, size_t outLimit) {
- ENetMultiplayerPeer *enet = (ENetMultiplayerPeer *)(context);
-
- if (size_t(enet->src_compressor_mem.size()) < inLimit) {
- enet->src_compressor_mem.resize(inLimit);
- }
+bool ENetMultiplayerPeer::is_server_relay_enabled() const {
+ return server_relay;
+}
- int total = inLimit;
- int ofs = 0;
- while (total) {
- for (size_t i = 0; i < inBufferCount; i++) {
- int to_copy = MIN(total, int(inBuffers[i].dataLength));
- memcpy(&enet->src_compressor_mem.write[ofs], inBuffers[i].data, to_copy);
- ofs += to_copy;
- total -= to_copy;
- }
- }
+Ref<ENetConnection> ENetMultiplayerPeer::get_host() const {
+ ERR_FAIL_COND_V(!_is_active(), nullptr);
+ ERR_FAIL_COND_V(active_mode == MODE_MESH, nullptr);
+ return hosts[0];
+}
- Compression::Mode mode;
-
- switch (enet->compression_mode) {
- case COMPRESS_FASTLZ: {
- mode = Compression::MODE_FASTLZ;
- } break;
- case COMPRESS_ZLIB: {
- mode = Compression::MODE_DEFLATE;
- } break;
- case COMPRESS_ZSTD: {
- mode = Compression::MODE_ZSTD;
- } break;
- default: {
- ERR_FAIL_V_MSG(0, vformat("Invalid ENet compression mode: %d", enet->compression_mode));
- }
- }
+Ref<ENetPacketPeer> ENetMultiplayerPeer::get_peer(int p_id) const {
+ ERR_FAIL_COND_V(!_is_active(), nullptr);
+ ERR_FAIL_COND_V(!peers.has(p_id), nullptr);
+ ERR_FAIL_COND_V(active_mode == MODE_CLIENT && p_id != 1, nullptr);
+ return peers[p_id];
+}
- int req_size = Compression::get_max_compressed_buffer_size(ofs, mode);
- if (enet->dst_compressor_mem.size() < req_size) {
- enet->dst_compressor_mem.resize(req_size);
+void ENetMultiplayerPeer::_destroy_unused(ENetPacket *p_packet) {
+ if (p_packet->referenceCount == 0) {
+ enet_packet_destroy(p_packet);
}
- int ret = Compression::compress(enet->dst_compressor_mem.ptrw(), enet->src_compressor_mem.ptr(), ofs, mode);
+}
- if (ret < 0) {
- return 0;
- }
+void ENetMultiplayerPeer::_relay(int p_from, int p_to, enet_uint8 p_channel, ENetPacket *p_packet) {
+ if (p_to == 0) {
+ // Re-send to everyone but sender :|
+ for (KeyValue<int, Ref<ENetPacketPeer>> &E : peers) {
+ if (E.key == p_from) {
+ continue;
+ }
- if (ret > int(outLimit)) {
- return 0; // Do not bother
- }
+ E.value->send(p_channel, p_packet);
+ }
+ } else if (p_to < 0) {
+ // Re-send to everyone but excluded and sender.
+ for (KeyValue<int, Ref<ENetPacketPeer>> &E : peers) {
+ if (E.key == p_from || E.key == -p_to) { // Do not resend to self, also do not send to excluded
+ continue;
+ }
- memcpy(outData, enet->dst_compressor_mem.ptr(), ret);
-
- return ret;
-}
-
-size_t ENetMultiplayerPeer::enet_decompress(void *context, const enet_uint8 *inData, size_t inLimit, enet_uint8 *outData, size_t outLimit) {
- ENetMultiplayerPeer *enet = (ENetMultiplayerPeer *)(context);
- int ret = -1;
- switch (enet->compression_mode) {
- case COMPRESS_FASTLZ: {
- ret = Compression::decompress(outData, outLimit, inData, inLimit, Compression::MODE_FASTLZ);
- } break;
- case COMPRESS_ZLIB: {
- ret = Compression::decompress(outData, outLimit, inData, inLimit, Compression::MODE_DEFLATE);
- } break;
- case COMPRESS_ZSTD: {
- ret = Compression::decompress(outData, outLimit, inData, inLimit, Compression::MODE_ZSTD);
- } break;
- default: {
+ E.value->send(p_channel, p_packet);
}
- }
- if (ret < 0) {
- return 0;
} else {
- return ret;
+ // To someone else, specifically
+ ERR_FAIL_COND(!peers.has(p_to));
+ ENetPacket *packet = enet_packet_create(p_packet->data, p_packet->dataLength, p_packet->flags);
+ peers[p_to]->send(p_channel, packet);
}
}
-void ENetMultiplayerPeer::_setup_compressor() {
- switch (compression_mode) {
- case COMPRESS_NONE: {
- enet_host_compress(host, nullptr);
- } break;
- case COMPRESS_RANGE_CODER: {
- enet_host_compress_with_range_coder(host);
- } break;
- case COMPRESS_FASTLZ:
- case COMPRESS_ZLIB:
- case COMPRESS_ZSTD: {
- enet_host_compress(host, &enet_compressor);
- } break;
+void ENetMultiplayerPeer::_notify_peers(int p_id, bool p_connected) {
+ if (p_connected) {
+ ERR_FAIL_COND(!peers.has(p_id));
+ // Someone connected, notify all the peers available.
+ Ref<ENetPacketPeer> peer = peers[p_id];
+ ENetPacket *packet = enet_packet_create(nullptr, 8, ENET_PACKET_FLAG_RELIABLE);
+ encode_uint32(SYSMSG_ADD_PEER, &packet->data[0]);
+ encode_uint32(p_id, &packet->data[4]);
+ for (KeyValue<int, Ref<ENetPacketPeer>> &E : peers) {
+ if (E.key == p_id) {
+ continue;
+ }
+ // Send new peer to existing peer.
+ E.value->send(SYSCH_CONFIG, packet);
+ // Send existing peer to new peer.
+ // This packet will be automatically destroyed by ENet after send.
+ ENetPacket *packet2 = enet_packet_create(nullptr, 8, ENET_PACKET_FLAG_RELIABLE);
+ encode_uint32(SYSMSG_ADD_PEER, &packet2->data[0]);
+ encode_uint32(E.key, &packet2->data[4]);
+ peer->send(SYSCH_CONFIG, packet2);
+ }
+ _destroy_unused(packet);
+ } else {
+ // Server just received a client disconnect and is in relay mode, notify everyone else.
+ ENetPacket *packet = enet_packet_create(nullptr, 8, ENET_PACKET_FLAG_RELIABLE);
+ encode_uint32(SYSMSG_REMOVE_PEER, &packet->data[0]);
+ encode_uint32(p_id, &packet->data[4]);
+ for (KeyValue<int, Ref<ENetPacketPeer>> &E : peers) {
+ if (E.key == p_id) {
+ continue;
+ }
+ E.value->send(SYSCH_CONFIG, packet);
+ }
+ _destroy_unused(packet);
}
}
-void ENetMultiplayerPeer::enet_compressor_destroy(void *context) {
- // Nothing to do
-}
-
-IPAddress ENetMultiplayerPeer::get_peer_address(int p_peer_id) const {
- ERR_FAIL_COND_V_MSG(!peer_map.has(p_peer_id), IPAddress(), vformat("Peer ID %d not found in the list of peers.", p_peer_id));
- ERR_FAIL_COND_V_MSG(!is_server() && p_peer_id != 1, IPAddress(), "Can't get the address of peers other than the server (ID -1) when acting as a client.");
- ERR_FAIL_COND_V_MSG(peer_map[p_peer_id] == nullptr, IPAddress(), vformat("Peer ID %d found in the list of peers, but is null.", p_peer_id));
-
- IPAddress out;
-#ifdef GODOT_ENET
- out.set_ipv6((uint8_t *)&(peer_map[p_peer_id]->address.host));
-#else
- out.set_ipv4((uint8_t *)&(peer_map[p_peer_id]->address.host));
-#endif
-
- return out;
-}
-
-int ENetMultiplayerPeer::get_peer_port(int p_peer_id) const {
- ERR_FAIL_COND_V_MSG(!peer_map.has(p_peer_id), 0, vformat("Peer ID %d not found in the list of peers.", p_peer_id));
- ERR_FAIL_COND_V_MSG(!is_server() && p_peer_id != 1, 0, "Can't get the address of peers other than the server (ID -1) when acting as a client.");
- ERR_FAIL_COND_V_MSG(peer_map[p_peer_id] == nullptr, 0, vformat("Peer ID %d found in the list of peers, but is null.", p_peer_id));
-#ifdef GODOT_ENET
- return peer_map[p_peer_id]->address.port;
-#else
- return peer_map[p_peer_id]->address.port;
-#endif
-}
-
-int ENetMultiplayerPeer::get_local_port() const {
- ERR_FAIL_COND_V_MSG(!active || !host, 0, "The multiplayer instance isn't currently active.");
- return host->address.port;
-}
-
-void ENetMultiplayerPeer::set_peer_timeout(int p_peer_id, int p_timeout_limit, int p_timeout_min, int p_timeout_max) {
- ERR_FAIL_COND_MSG(!peer_map.has(p_peer_id), vformat("Peer ID %d not found in the list of peers.", p_peer_id));
- ERR_FAIL_COND_MSG(!is_server() && p_peer_id != 1, "Can't change the timeout of peers other then the server when acting as a client.");
- ERR_FAIL_COND_MSG(peer_map[p_peer_id] == nullptr, vformat("Peer ID %d found in the list of peers, but is null.", p_peer_id));
- ERR_FAIL_COND_MSG(p_timeout_limit > p_timeout_min || p_timeout_min > p_timeout_max, "Timeout limit must be less than minimum timeout, which itself must be less then maximum timeout");
- enet_peer_timeout(peer_map[p_peer_id], p_timeout_limit, p_timeout_min, p_timeout_max);
-}
-
-void ENetMultiplayerPeer::set_transfer_channel(int p_channel) {
- ERR_FAIL_COND_MSG(p_channel < -1 || p_channel >= channel_count, vformat("The transfer channel must be set between 0 and %d, inclusive (got %d).", channel_count - 1, p_channel));
- ERR_FAIL_COND_MSG(p_channel == SYSCH_CONFIG, vformat("The channel %d is reserved.", SYSCH_CONFIG));
- transfer_channel = p_channel;
-}
-
-int ENetMultiplayerPeer::get_transfer_channel() const {
- return transfer_channel;
-}
-
-void ENetMultiplayerPeer::set_channel_count(int p_channel) {
- ERR_FAIL_COND_MSG(active, "The channel count can't be set while the multiplayer instance is active.");
- ERR_FAIL_COND_MSG(p_channel < SYSCH_MAX, vformat("The channel count must be greater than or equal to %d to account for reserved channels (got %d).", SYSCH_MAX, p_channel));
- channel_count = p_channel;
-}
-
-int ENetMultiplayerPeer::get_channel_count() const {
- return channel_count;
-}
-
-void ENetMultiplayerPeer::set_always_ordered(bool p_ordered) {
- always_ordered = p_ordered;
-}
-
-bool ENetMultiplayerPeer::is_always_ordered() const {
- return always_ordered;
-}
-
-void ENetMultiplayerPeer::set_server_relay_enabled(bool p_enabled) {
- ERR_FAIL_COND_MSG(active, "Server relaying can't be toggled while the multiplayer instance is active.");
-
- server_relay = p_enabled;
-}
-
-bool ENetMultiplayerPeer::is_server_relay_enabled() const {
- return server_relay;
-}
-
void ENetMultiplayerPeer::_bind_methods() {
- ClassDB::bind_method(D_METHOD("create_server", "port", "max_clients", "in_bandwidth", "out_bandwidth"), &ENetMultiplayerPeer::create_server, DEFVAL(32), DEFVAL(0), DEFVAL(0));
- ClassDB::bind_method(D_METHOD("create_client", "address", "port", "in_bandwidth", "out_bandwidth", "local_port"), &ENetMultiplayerPeer::create_client, DEFVAL(0), DEFVAL(0), DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("create_server", "port", "max_clients", "max_channels", "in_bandwidth", "out_bandwidth"), &ENetMultiplayerPeer::create_server, DEFVAL(32), DEFVAL(0), DEFVAL(0), DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("create_client", "address", "port", "channel_count", "in_bandwidth", "out_bandwidth", "local_port"), &ENetMultiplayerPeer::create_client, DEFVAL(0), DEFVAL(0), DEFVAL(0), DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("create_mesh", "unique_id"), &ENetMultiplayerPeer::create_mesh);
+ ClassDB::bind_method(D_METHOD("add_mesh_peer", "peer_id", "host"), &ENetMultiplayerPeer::add_mesh_peer);
ClassDB::bind_method(D_METHOD("close_connection", "wait_usec"), &ENetMultiplayerPeer::close_connection, DEFVAL(100));
- ClassDB::bind_method(D_METHOD("disconnect_peer", "id", "now"), &ENetMultiplayerPeer::disconnect_peer, DEFVAL(false));
- ClassDB::bind_method(D_METHOD("set_compression_mode", "mode"), &ENetMultiplayerPeer::set_compression_mode);
- ClassDB::bind_method(D_METHOD("get_compression_mode"), &ENetMultiplayerPeer::get_compression_mode);
ClassDB::bind_method(D_METHOD("set_bind_ip", "ip"), &ENetMultiplayerPeer::set_bind_ip);
- ClassDB::bind_method(D_METHOD("set_dtls_enabled", "enabled"), &ENetMultiplayerPeer::set_dtls_enabled);
- ClassDB::bind_method(D_METHOD("is_dtls_enabled"), &ENetMultiplayerPeer::is_dtls_enabled);
- ClassDB::bind_method(D_METHOD("set_dtls_key", "key"), &ENetMultiplayerPeer::set_dtls_key);
- ClassDB::bind_method(D_METHOD("set_dtls_certificate", "certificate"), &ENetMultiplayerPeer::set_dtls_certificate);
- ClassDB::bind_method(D_METHOD("set_dtls_verify_enabled", "enabled"), &ENetMultiplayerPeer::set_dtls_verify_enabled);
- ClassDB::bind_method(D_METHOD("is_dtls_verify_enabled"), &ENetMultiplayerPeer::is_dtls_verify_enabled);
- ClassDB::bind_method(D_METHOD("get_peer_address", "id"), &ENetMultiplayerPeer::get_peer_address);
- ClassDB::bind_method(D_METHOD("get_peer_port", "id"), &ENetMultiplayerPeer::get_peer_port);
- ClassDB::bind_method(D_METHOD("get_local_port"), &ENetMultiplayerPeer::get_local_port);
- ClassDB::bind_method(D_METHOD("set_peer_timeout", "id", "timeout_limit", "timeout_min", "timeout_max"), &ENetMultiplayerPeer::set_peer_timeout);
-
- ClassDB::bind_method(D_METHOD("get_packet_channel"), &ENetMultiplayerPeer::get_packet_channel);
- ClassDB::bind_method(D_METHOD("get_last_packet_channel"), &ENetMultiplayerPeer::get_last_packet_channel);
- ClassDB::bind_method(D_METHOD("set_transfer_channel", "channel"), &ENetMultiplayerPeer::set_transfer_channel);
- ClassDB::bind_method(D_METHOD("get_transfer_channel"), &ENetMultiplayerPeer::get_transfer_channel);
- ClassDB::bind_method(D_METHOD("set_channel_count", "channels"), &ENetMultiplayerPeer::set_channel_count);
- ClassDB::bind_method(D_METHOD("get_channel_count"), &ENetMultiplayerPeer::get_channel_count);
- ClassDB::bind_method(D_METHOD("set_always_ordered", "ordered"), &ENetMultiplayerPeer::set_always_ordered);
- ClassDB::bind_method(D_METHOD("is_always_ordered"), &ENetMultiplayerPeer::is_always_ordered);
+
ClassDB::bind_method(D_METHOD("set_server_relay_enabled", "enabled"), &ENetMultiplayerPeer::set_server_relay_enabled);
ClassDB::bind_method(D_METHOD("is_server_relay_enabled"), &ENetMultiplayerPeer::is_server_relay_enabled);
+ ClassDB::bind_method(D_METHOD("get_host"), &ENetMultiplayerPeer::get_host);
+ ClassDB::bind_method(D_METHOD("get_peer", "id"), &ENetMultiplayerPeer::get_peer);
- ADD_PROPERTY(PropertyInfo(Variant::INT, "compression_mode", PROPERTY_HINT_ENUM, "None,Range Coder,FastLZ,ZLib,ZStd"), "set_compression_mode", "get_compression_mode");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "transfer_channel"), "set_transfer_channel", "get_transfer_channel");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "channel_count"), "set_channel_count", "get_channel_count");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "always_ordered"), "set_always_ordered", "is_always_ordered");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "server_relay"), "set_server_relay_enabled", "is_server_relay_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "dtls_verify"), "set_dtls_verify_enabled", "is_dtls_verify_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_dtls"), "set_dtls_enabled", "is_dtls_enabled");
-
- BIND_ENUM_CONSTANT(COMPRESS_NONE);
- BIND_ENUM_CONSTANT(COMPRESS_RANGE_CODER);
- BIND_ENUM_CONSTANT(COMPRESS_FASTLZ);
- BIND_ENUM_CONSTANT(COMPRESS_ZLIB);
- BIND_ENUM_CONSTANT(COMPRESS_ZSTD);
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "host", PROPERTY_HINT_RESOURCE_TYPE, "ENetConnection", PROPERTY_USAGE_NONE), "", "get_host");
}
ENetMultiplayerPeer::ENetMultiplayerPeer() {
- enet_compressor.context = this;
- enet_compressor.compress = enet_compress;
- enet_compressor.decompress = enet_decompress;
- enet_compressor.destroy = enet_compressor_destroy;
-
bind_ip = IPAddress("*");
}
ENetMultiplayerPeer::~ENetMultiplayerPeer() {
- if (active) {
+ if (_is_active()) {
close_connection();
}
}
@@ -896,31 +685,3 @@ void ENetMultiplayerPeer::set_bind_ip(const IPAddress &p_ip) {
bind_ip = p_ip;
}
-
-void ENetMultiplayerPeer::set_dtls_enabled(bool p_enabled) {
- ERR_FAIL_COND(active);
- dtls_enabled = p_enabled;
-}
-
-bool ENetMultiplayerPeer::is_dtls_enabled() const {
- return dtls_enabled;
-}
-
-void ENetMultiplayerPeer::set_dtls_verify_enabled(bool p_enabled) {
- ERR_FAIL_COND(active);
- dtls_verify = p_enabled;
-}
-
-bool ENetMultiplayerPeer::is_dtls_verify_enabled() const {
- return dtls_verify;
-}
-
-void ENetMultiplayerPeer::set_dtls_key(Ref<CryptoKey> p_key) {
- ERR_FAIL_COND(active);
- dtls_key = p_key;
-}
-
-void ENetMultiplayerPeer::set_dtls_certificate(Ref<X509Certificate> p_cert) {
- ERR_FAIL_COND(active);
- dtls_cert = p_cert;
-}
diff --git a/modules/enet/enet_multiplayer_peer.h b/modules/enet/enet_multiplayer_peer.h
index 63f2ec5870..78e280db7c 100644
--- a/modules/enet/enet_multiplayer_peer.h
+++ b/modules/enet/enet_multiplayer_peer.h
@@ -32,23 +32,14 @@
#define NETWORKED_MULTIPLAYER_ENET_H
#include "core/crypto/crypto.h"
-#include "core/io/compression.h"
#include "core/io/multiplayer_peer.h"
+#include "enet_connection.h"
#include <enet/enet.h>
class ENetMultiplayerPeer : public MultiplayerPeer {
GDCLASS(ENetMultiplayerPeer, MultiplayerPeer);
-public:
- enum CompressionMode {
- COMPRESS_NONE,
- COMPRESS_RANGE_CODER,
- COMPRESS_FASTLZ,
- COMPRESS_ZLIB,
- COMPRESS_ZSTD
- };
-
private:
enum {
SYSMSG_ADD_PEER,
@@ -56,33 +47,34 @@ private:
};
enum {
- SYSCH_CONFIG,
- SYSCH_RELIABLE,
- SYSCH_UNRELIABLE,
- SYSCH_MAX
+ SYSCH_CONFIG = 0,
+ SYSCH_RELIABLE = 1,
+ SYSCH_UNRELIABLE = 2,
+ SYSCH_MAX = 3
+ };
+
+ enum Mode {
+ MODE_NONE,
+ MODE_SERVER,
+ MODE_CLIENT,
+ MODE_MESH,
};
- bool active = false;
- bool server = false;
+ Mode active_mode = MODE_NONE;
uint32_t unique_id = 0;
int target_peer = 0;
+ int transfer_channel = 0;
TransferMode transfer_mode = TRANSFER_MODE_RELIABLE;
- int transfer_channel = -1;
- int channel_count = SYSCH_MAX;
- bool always_ordered = false;
-
- ENetEvent event;
- ENetPeer *peer = nullptr;
- ENetHost *host = nullptr;
bool refuse_connections = false;
bool server_relay = true;
ConnectionStatus connection_status = CONNECTION_DISCONNECTED;
- Map<int, ENetPeer *> peer_map;
+ Map<int, Ref<ENetConnection>> hosts;
+ Map<int, Ref<ENetPacketPeer>> peers;
struct Packet {
ENetPacket *packet = nullptr;
@@ -90,48 +82,38 @@ private:
int channel = 0;
};
- CompressionMode compression_mode = COMPRESS_RANGE_CODER;
-
List<Packet> incoming_packets;
Packet current_packet;
- uint32_t _gen_unique_id() const;
void _pop_current_packet();
-
- Vector<uint8_t> src_compressor_mem;
- Vector<uint8_t> dst_compressor_mem;
-
- ENetCompressor enet_compressor;
- static size_t enet_compress(void *context, const ENetBuffer *inBuffers, size_t inBufferCount, size_t inLimit, enet_uint8 *outData, size_t outLimit);
- static size_t enet_decompress(void *context, const enet_uint8 *inData, size_t inLimit, enet_uint8 *outData, size_t outLimit);
- static void enet_compressor_destroy(void *context);
- void _setup_compressor();
+ bool _poll_server();
+ bool _poll_client();
+ bool _poll_mesh();
+ void _relay(int p_from, int p_to, enet_uint8 p_channel, ENetPacket *p_packet);
+ void _notify_peers(int p_id, bool p_connected);
+ void _destroy_unused(ENetPacket *p_packet);
+ _FORCE_INLINE_ bool _is_active() const { return active_mode != MODE_NONE; }
IPAddress bind_ip;
- bool dtls_enabled = false;
- Ref<CryptoKey> dtls_key;
- Ref<X509Certificate> dtls_cert;
- bool dtls_verify = true;
-
protected:
static void _bind_methods();
public:
+ virtual void set_transfer_channel(int p_channel) override;
+ virtual int get_transfer_channel() const override;
+
virtual void set_transfer_mode(TransferMode p_mode) override;
virtual TransferMode get_transfer_mode() const override;
virtual void set_target_peer(int p_peer) override;
virtual int get_packet_peer() const override;
- virtual IPAddress get_peer_address(int p_peer_id) const;
- virtual int get_peer_port(int p_peer_id) const;
- virtual int get_local_port() const;
- void set_peer_timeout(int p_peer_id, int p_timeout_limit, int p_timeout_min, int p_timeout_max);
-
- Error create_server(int p_port, int p_max_clients = 32, int p_in_bandwidth = 0, int p_out_bandwidth = 0);
- Error create_client(const String &p_address, int p_port, int p_in_bandwidth = 0, int p_out_bandwidth = 0, int p_local_port = 0);
+ Error create_server(int p_port, int p_max_clients = 32, int p_max_channels = 0, int p_in_bandwidth = 0, int p_out_bandwidth = 0);
+ Error create_client(const String &p_address, int p_port, int p_channel_count = 0, int p_in_bandwidth = 0, int p_out_bandwidth = 0, int p_local_port = 0);
+ Error create_mesh(int p_id);
+ Error add_mesh_peer(int p_id, Ref<ENetConnection> p_host);
void close_connection(uint32_t wait_usec = 100);
@@ -154,32 +136,15 @@ public:
virtual int get_unique_id() const override;
- void set_compression_mode(CompressionMode p_mode);
- CompressionMode get_compression_mode() const;
-
- int get_packet_channel() const;
- int get_last_packet_channel() const;
- void set_transfer_channel(int p_channel);
- int get_transfer_channel() const;
- void set_channel_count(int p_channel);
- int get_channel_count() const;
- void set_always_ordered(bool p_ordered);
- bool is_always_ordered() const;
+ void set_bind_ip(const IPAddress &p_ip);
void set_server_relay_enabled(bool p_enabled);
bool is_server_relay_enabled() const;
+ Ref<ENetConnection> get_host() const;
+ Ref<ENetPacketPeer> get_peer(int p_id) const;
+
ENetMultiplayerPeer();
~ENetMultiplayerPeer();
-
- void set_bind_ip(const IPAddress &p_ip);
- void set_dtls_enabled(bool p_enabled);
- bool is_dtls_enabled() const;
- void set_dtls_verify_enabled(bool p_enabled);
- bool is_dtls_verify_enabled() const;
- void set_dtls_key(Ref<CryptoKey> p_key);
- void set_dtls_certificate(Ref<X509Certificate> p_cert);
};
-VARIANT_ENUM_CAST(ENetMultiplayerPeer::CompressionMode);
-
#endif // NETWORKED_MULTIPLAYER_ENET_H
diff --git a/modules/enet/enet_packet_peer.cpp b/modules/enet/enet_packet_peer.cpp
new file mode 100644
index 0000000000..d7d2ec9ebe
--- /dev/null
+++ b/modules/enet/enet_packet_peer.cpp
@@ -0,0 +1,263 @@
+/*************************************************************************/
+/* enet_packet_peer.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#include "enet_packet_peer.h"
+
+void ENetPacketPeer::peer_disconnect(int p_data) {
+ ERR_FAIL_COND(!peer);
+ enet_peer_disconnect(peer, p_data);
+}
+
+void ENetPacketPeer::peer_disconnect_later(int p_data) {
+ ERR_FAIL_COND(!peer);
+ enet_peer_disconnect_later(peer, p_data);
+}
+
+void ENetPacketPeer::peer_disconnect_now(int p_data) {
+ ERR_FAIL_COND(!peer);
+ enet_peer_disconnect_now(peer, p_data);
+ _on_disconnect();
+}
+
+void ENetPacketPeer::ping() {
+ ERR_FAIL_COND(!peer);
+ enet_peer_ping(peer);
+}
+
+void ENetPacketPeer::ping_interval(int p_interval) {
+ ERR_FAIL_COND(!peer);
+ enet_peer_ping_interval(peer, p_interval);
+}
+
+int ENetPacketPeer::send(uint8_t p_channel, ENetPacket *p_packet) {
+ ERR_FAIL_COND_V(peer == nullptr, -1);
+ ERR_FAIL_COND_V(p_packet == nullptr, -1);
+ ERR_FAIL_COND_V_MSG(p_channel >= peer->channelCount, -1, vformat("Unable to send packet on channel %d, max channels: %d", p_channel, (int)peer->channelCount));
+ return enet_peer_send(peer, p_channel, p_packet);
+}
+
+void ENetPacketPeer::reset() {
+ ERR_FAIL_COND_MSG(peer == nullptr, "Peer not connected");
+ enet_peer_reset(peer);
+ _on_disconnect();
+}
+
+void ENetPacketPeer::throttle_configure(int p_interval, int p_acceleration, int p_deceleration) {
+ ERR_FAIL_COND_MSG(peer == nullptr, "Peer not connected");
+ enet_peer_throttle_configure(peer, p_interval, p_acceleration, p_deceleration);
+}
+
+void ENetPacketPeer::set_timeout(int p_timeout, int p_timeout_min, int p_timeout_max) {
+ ERR_FAIL_COND_MSG(peer == nullptr, "Peer not connected");
+ ERR_FAIL_COND_MSG(p_timeout > p_timeout_min || p_timeout_min > p_timeout_max, "Timeout limit must be less than minimum timeout, which itself must be less then maximum timeout");
+ enet_peer_timeout(peer, p_timeout, p_timeout_min, p_timeout_max);
+}
+
+int ENetPacketPeer::get_max_packet_size() const {
+ return 1 << 24;
+}
+
+int ENetPacketPeer::get_available_packet_count() const {
+ return packet_queue.size();
+}
+
+Error ENetPacketPeer::get_packet(const uint8_t **r_buffer, int &r_buffer_size) {
+ ERR_FAIL_COND_V(!peer, ERR_UNCONFIGURED);
+ ERR_FAIL_COND_V(!packet_queue.size(), ERR_UNAVAILABLE);
+ if (last_packet) {
+ enet_packet_destroy(last_packet);
+ last_packet = nullptr;
+ }
+ last_packet = packet_queue.front()->get();
+ packet_queue.pop_front();
+ *r_buffer = (const uint8_t *)(last_packet->data);
+ r_buffer_size = last_packet->dataLength;
+ return OK;
+}
+
+Error ENetPacketPeer::put_packet(const uint8_t *p_buffer, int p_buffer_size) {
+ ERR_FAIL_COND_V(!peer, ERR_UNCONFIGURED);
+ ENetPacket *packet = enet_packet_create(p_buffer, p_buffer_size, ENET_PACKET_FLAG_RELIABLE);
+ return send(0, packet) < 0 ? FAILED : OK;
+}
+
+IPAddress ENetPacketPeer::get_remote_address() const {
+ ERR_FAIL_COND_V(!peer, IPAddress());
+ IPAddress out;
+#ifdef GODOT_ENET
+ out.set_ipv6((uint8_t *)&(peer->address.host));
+#else
+ out.set_ipv4((uint8_t *)&(peer->address.host));
+#endif
+ return out;
+}
+
+int ENetPacketPeer::get_remote_port() const {
+ ERR_FAIL_COND_V(!peer, 0);
+ return peer->address.port;
+}
+
+bool ENetPacketPeer::is_active() const {
+ return peer != nullptr;
+}
+
+double ENetPacketPeer::get_statistic(PeerStatistic p_stat) {
+ ERR_FAIL_COND_V(!peer, 0);
+ switch (p_stat) {
+ case PEER_PACKET_LOSS:
+ return peer->packetLoss;
+ case PEER_PACKET_LOSS_VARIANCE:
+ return peer->packetLossVariance;
+ case PEER_PACKET_LOSS_EPOCH:
+ return peer->packetLossEpoch;
+ case PEER_ROUND_TRIP_TIME:
+ return peer->roundTripTime;
+ case PEER_ROUND_TRIP_TIME_VARIANCE:
+ return peer->roundTripTimeVariance;
+ case PEER_LAST_ROUND_TRIP_TIME:
+ return peer->lastRoundTripTime;
+ case PEER_LAST_ROUND_TRIP_TIME_VARIANCE:
+ return peer->lastRoundTripTimeVariance;
+ case PEER_PACKET_THROTTLE:
+ return peer->packetThrottle;
+ case PEER_PACKET_THROTTLE_LIMIT:
+ return peer->packetThrottleLimit;
+ case PEER_PACKET_THROTTLE_COUNTER:
+ return peer->packetThrottleCounter;
+ case PEER_PACKET_THROTTLE_EPOCH:
+ return peer->packetThrottleEpoch;
+ case PEER_PACKET_THROTTLE_ACCELERATION:
+ return peer->packetThrottleAcceleration;
+ case PEER_PACKET_THROTTLE_DECELERATION:
+ return peer->packetThrottleDeceleration;
+ case PEER_PACKET_THROTTLE_INTERVAL:
+ return peer->packetThrottleInterval;
+ }
+ ERR_FAIL_V(0);
+}
+
+ENetPacketPeer::PeerState ENetPacketPeer::get_state() const {
+ if (!is_active()) {
+ return STATE_DISCONNECTED;
+ }
+ return (PeerState)peer->state;
+}
+
+int ENetPacketPeer::get_channels() const {
+ ERR_FAIL_COND_V_MSG(!peer, 0, "The ENetConnection instance isn't currently active.");
+ return peer->channelCount;
+}
+
+void ENetPacketPeer::_on_disconnect() {
+ if (peer) {
+ peer->data = nullptr;
+ }
+ peer = nullptr;
+}
+
+void ENetPacketPeer::_queue_packet(ENetPacket *p_packet) {
+ ERR_FAIL_COND(!peer);
+ packet_queue.push_back(p_packet);
+}
+
+Error ENetPacketPeer::_send(int p_channel, PackedByteArray p_packet, int p_flags) {
+ ERR_FAIL_COND_V_MSG(peer == nullptr, ERR_UNCONFIGURED, "Peer not connected");
+ ERR_FAIL_COND_V_MSG(p_channel < 0 || p_channel > (int)peer->channelCount, ERR_INVALID_PARAMETER, "Invalid channel");
+ ERR_FAIL_COND_V_MSG(p_flags & ~FLAG_ALLOWED, ERR_INVALID_PARAMETER, "Invalid flags");
+ ENetPacket *packet = enet_packet_create(p_packet.ptr(), p_packet.size(), p_flags);
+ return send(p_channel, packet) == 0 ? OK : FAILED;
+}
+
+void ENetPacketPeer::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("peer_disconnect", "data"), &ENetPacketPeer::peer_disconnect, DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("peer_disconnect_later", "data"), &ENetPacketPeer::peer_disconnect_later, DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("peer_disconnect_now", "data"), &ENetPacketPeer::peer_disconnect_now, DEFVAL(0));
+
+ ClassDB::bind_method(D_METHOD("ping"), &ENetPacketPeer::ping);
+ ClassDB::bind_method(D_METHOD("ping_interval", "ping_interval"), &ENetPacketPeer::ping_interval);
+ ClassDB::bind_method(D_METHOD("reset"), &ENetPacketPeer::reset);
+ ClassDB::bind_method(D_METHOD("send", "channel", "packet", "flags"), &ENetPacketPeer::_send);
+ ClassDB::bind_method(D_METHOD("throttle_configure", "interval", "acceleration", "deceleration"), &ENetPacketPeer::throttle_configure);
+ ClassDB::bind_method(D_METHOD("set_timeout", "timeout", "timeout_min", "timeout_max"), &ENetPacketPeer::set_timeout);
+ ClassDB::bind_method(D_METHOD("get_statistic", "statistic"), &ENetPacketPeer::get_statistic);
+ ClassDB::bind_method(D_METHOD("get_state"), &ENetPacketPeer::get_state);
+ ClassDB::bind_method(D_METHOD("get_channels"), &ENetPacketPeer::get_channels);
+ ClassDB::bind_method(D_METHOD("is_active"), &ENetPacketPeer::is_active);
+
+ BIND_ENUM_CONSTANT(STATE_DISCONNECTED);
+ BIND_ENUM_CONSTANT(STATE_CONNECTING);
+ BIND_ENUM_CONSTANT(STATE_ACKNOWLEDGING_CONNECT);
+ BIND_ENUM_CONSTANT(STATE_CONNECTION_PENDING);
+ BIND_ENUM_CONSTANT(STATE_CONNECTION_SUCCEEDED);
+ BIND_ENUM_CONSTANT(STATE_CONNECTED);
+ BIND_ENUM_CONSTANT(STATE_DISCONNECT_LATER);
+ BIND_ENUM_CONSTANT(STATE_DISCONNECTING);
+ BIND_ENUM_CONSTANT(STATE_ACKNOWLEDGING_DISCONNECT);
+ BIND_ENUM_CONSTANT(STATE_ZOMBIE);
+
+ BIND_ENUM_CONSTANT(PEER_PACKET_LOSS);
+ BIND_ENUM_CONSTANT(PEER_PACKET_LOSS_VARIANCE);
+ BIND_ENUM_CONSTANT(PEER_PACKET_LOSS_EPOCH);
+ BIND_ENUM_CONSTANT(PEER_ROUND_TRIP_TIME);
+ BIND_ENUM_CONSTANT(PEER_ROUND_TRIP_TIME_VARIANCE);
+ BIND_ENUM_CONSTANT(PEER_LAST_ROUND_TRIP_TIME);
+ BIND_ENUM_CONSTANT(PEER_LAST_ROUND_TRIP_TIME_VARIANCE);
+ BIND_ENUM_CONSTANT(PEER_PACKET_THROTTLE);
+ BIND_ENUM_CONSTANT(PEER_PACKET_THROTTLE_LIMIT);
+ BIND_ENUM_CONSTANT(PEER_PACKET_THROTTLE_COUNTER);
+ BIND_ENUM_CONSTANT(PEER_PACKET_THROTTLE_EPOCH);
+ BIND_ENUM_CONSTANT(PEER_PACKET_THROTTLE_ACCELERATION);
+ BIND_ENUM_CONSTANT(PEER_PACKET_THROTTLE_DECELERATION);
+ BIND_ENUM_CONSTANT(PEER_PACKET_THROTTLE_INTERVAL);
+
+ BIND_CONSTANT(PACKET_LOSS_SCALE);
+ BIND_CONSTANT(PACKET_THROTTLE_SCALE);
+
+ BIND_CONSTANT(FLAG_RELIABLE);
+ BIND_CONSTANT(FLAG_UNSEQUENCED);
+ BIND_CONSTANT(FLAG_UNRELIABLE_FRAGMENT);
+}
+
+ENetPacketPeer::ENetPacketPeer(ENetPeer *p_peer) {
+ peer = p_peer;
+ peer->data = this;
+}
+
+ENetPacketPeer::~ENetPacketPeer() {
+ _on_disconnect();
+ if (last_packet) {
+ enet_packet_destroy(last_packet);
+ last_packet = nullptr;
+ }
+ for (List<ENetPacket *>::Element *E = packet_queue.front(); E; E = E->next()) {
+ enet_packet_destroy(E->get());
+ }
+ packet_queue.clear();
+}
diff --git a/modules/enet/enet_packet_peer.h b/modules/enet/enet_packet_peer.h
new file mode 100644
index 0000000000..9af004de2f
--- /dev/null
+++ b/modules/enet/enet_packet_peer.h
@@ -0,0 +1,131 @@
+/*************************************************************************/
+/* enet_packet_peer.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the */
+/* "Software"), to deal in the Software without restriction, including */
+/* without limitation the rights to use, copy, modify, merge, publish, */
+/* distribute, sublicense, and/or sell copies of the Software, and to */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions: */
+/* */
+/* The above copyright notice and this permission notice shall be */
+/* included in all copies or substantial portions of the Software. */
+/* */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
+/*************************************************************************/
+
+#ifndef ENET_PACKET_PEER_H
+#define ENET_PACKET_PEER_H
+
+#include "core/io/packet_peer.h"
+
+#include <enet/enet.h>
+
+class ENetPacketPeer : public PacketPeer {
+ GDCLASS(ENetPacketPeer, PacketPeer);
+
+private:
+ ENetPeer *peer = nullptr;
+ List<ENetPacket *> packet_queue;
+ ENetPacket *last_packet = nullptr;
+
+ static void _bind_methods();
+ Error _send(int p_channel, PackedByteArray p_packet, int p_flags);
+
+protected:
+ friend class ENetConnection;
+ // Internally used by ENetConnection during service, destroy, etc.
+ void _on_disconnect();
+ void _queue_packet(ENetPacket *p_packet);
+
+public:
+ enum {
+ PACKET_THROTTLE_SCALE = ENET_PEER_PACKET_THROTTLE_SCALE,
+ PACKET_LOSS_SCALE = ENET_PEER_PACKET_LOSS_SCALE,
+ };
+
+ enum {
+ FLAG_RELIABLE = ENET_PACKET_FLAG_RELIABLE,
+ FLAG_UNSEQUENCED = ENET_PACKET_FLAG_UNSEQUENCED,
+ FLAG_UNRELIABLE_FRAGMENT = ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT,
+ FLAG_ALLOWED = ENET_PACKET_FLAG_RELIABLE | ENET_PACKET_FLAG_UNSEQUENCED | ENET_PACKET_FLAG_UNRELIABLE_FRAGMENT,
+ };
+
+ enum PeerState {
+ STATE_DISCONNECTED = ENET_PEER_STATE_DISCONNECTED,
+ STATE_CONNECTING = ENET_PEER_STATE_CONNECTING,
+ STATE_ACKNOWLEDGING_CONNECT = ENET_PEER_STATE_ACKNOWLEDGING_CONNECT,
+ STATE_CONNECTION_PENDING = ENET_PEER_STATE_CONNECTION_PENDING,
+ STATE_CONNECTION_SUCCEEDED = ENET_PEER_STATE_CONNECTION_SUCCEEDED,
+ STATE_CONNECTED = ENET_PEER_STATE_CONNECTED,
+ STATE_DISCONNECT_LATER = ENET_PEER_STATE_DISCONNECT_LATER,
+ STATE_DISCONNECTING = ENET_PEER_STATE_DISCONNECTING,
+ STATE_ACKNOWLEDGING_DISCONNECT = ENET_PEER_STATE_ACKNOWLEDGING_DISCONNECT,
+ STATE_ZOMBIE = ENET_PEER_STATE_ZOMBIE,
+ };
+
+ enum PeerStatistic {
+ PEER_PACKET_LOSS,
+ PEER_PACKET_LOSS_VARIANCE,
+ PEER_PACKET_LOSS_EPOCH,
+ PEER_ROUND_TRIP_TIME,
+ PEER_ROUND_TRIP_TIME_VARIANCE,
+ PEER_LAST_ROUND_TRIP_TIME,
+ PEER_LAST_ROUND_TRIP_TIME_VARIANCE,
+ PEER_PACKET_THROTTLE,
+ PEER_PACKET_THROTTLE_LIMIT,
+ PEER_PACKET_THROTTLE_COUNTER,
+ PEER_PACKET_THROTTLE_EPOCH,
+ PEER_PACKET_THROTTLE_ACCELERATION,
+ PEER_PACKET_THROTTLE_DECELERATION,
+ PEER_PACKET_THROTTLE_INTERVAL,
+ };
+
+ int get_max_packet_size() const override;
+ int get_available_packet_count() const override;
+ Error get_packet(const uint8_t **r_buffer, int &r_buffer_size) override; ///< buffer is GONE after next get_packet
+ Error put_packet(const uint8_t *p_buffer, int p_buffer_size) override;
+
+ void peer_disconnect(int p_data = 0);
+ void peer_disconnect_later(int p_data = 0);
+ void peer_disconnect_now(int p_data = 0);
+
+ void ping();
+ void ping_interval(int p_interval);
+ void reset();
+ int send(uint8_t p_channel, ENetPacket *p_packet);
+ void throttle_configure(int interval, int acceleration, int deceleration);
+ void set_timeout(int p_timeout, int p_timeout_min, int p_timeout_max);
+ double get_statistic(PeerStatistic p_stat);
+ PeerState get_state() const;
+ int get_channels() const;
+
+ // Extras
+ IPAddress get_remote_address() const;
+ int get_remote_port() const;
+
+ // Used by ENetMultiplayer (TODO use meta? If only they where StringNames)
+ bool is_active() const;
+
+ ENetPacketPeer(ENetPeer *p_peer);
+ ~ENetPacketPeer();
+};
+
+VARIANT_ENUM_CAST(ENetPacketPeer::PeerState);
+VARIANT_ENUM_CAST(ENetPacketPeer::PeerStatistic);
+
+#endif // ENET_PACKET_PEER_H
diff --git a/modules/enet/register_types.cpp b/modules/enet/register_types.cpp
index 38870316e4..7570f5b643 100644
--- a/modules/enet/register_types.cpp
+++ b/modules/enet/register_types.cpp
@@ -30,7 +30,9 @@
#include "register_types.h"
#include "core/error/error_macros.h"
+#include "enet_connection.h"
#include "enet_multiplayer_peer.h"
+#include "enet_packet_peer.h"
static bool enet_ok = false;
@@ -42,6 +44,8 @@ void register_enet_types() {
}
GDREGISTER_CLASS(ENetMultiplayerPeer);
+ GDREGISTER_VIRTUAL_CLASS(ENetPacketPeer);
+ GDREGISTER_CLASS(ENetConnection);
}
void unregister_enet_types() {
diff --git a/modules/fbx/fbx_parser/ByteSwapper.h b/modules/fbx/fbx_parser/ByteSwapper.h
index 5c16383974..08d38147d5 100644
--- a/modules/fbx/fbx_parser/ByteSwapper.h
+++ b/modules/fbx/fbx_parser/ByteSwapper.h
@@ -70,7 +70,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
*/
-/** @file Helper class tp perform various byte oder swappings
+/** @file Helper class tp perform various byte order swappings
(e.g. little to big endian) */
#ifndef BYTE_SWAPPER_H
#define BYTE_SWAPPER_H
diff --git a/modules/fbx/fbx_parser/FBXDocument.cpp b/modules/fbx/fbx_parser/FBXDocument.cpp
index 89c69d2ee8..92c62e68b5 100644
--- a/modules/fbx/fbx_parser/FBXDocument.cpp
+++ b/modules/fbx/fbx_parser/FBXDocument.cpp
@@ -198,7 +198,7 @@ ObjectPtr LazyObject::LoadObject() {
object.reset(new ModelLimbNode(id, element, doc, name));
} else if (strcmp(classtag.c_str(), "IKEffector") && strcmp(classtag.c_str(), "FKEffector")) {
- // FK and IK effectors are not supporte
+ // FK and IK effectors are not supported.
object.reset(new Model(id, element, doc, name));
}
} else if (!strncmp(obtype, "Material", length)) {
diff --git a/modules/gdnative/doc_classes/GDNative.xml b/modules/gdnative/doc_classes/GDNative.xml
index 4f1530598c..e4c5d34a2c 100644
--- a/modules/gdnative/doc_classes/GDNative.xml
+++ b/modules/gdnative/doc_classes/GDNative.xml
@@ -8,26 +8,20 @@
</tutorials>
<methods>
<method name="call_native">
- <return type="Variant">
- </return>
- <argument index="0" name="calling_type" type="StringName">
- </argument>
- <argument index="1" name="procedure_name" type="StringName">
- </argument>
- <argument index="2" name="arguments" type="Array">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="calling_type" type="StringName" />
+ <argument index="1" name="procedure_name" type="StringName" />
+ <argument index="2" name="arguments" type="Array" />
<description>
</description>
</method>
<method name="initialize">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
<method name="terminate">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
</description>
</method>
diff --git a/modules/gdnative/doc_classes/GDNativeLibrary.xml b/modules/gdnative/doc_classes/GDNativeLibrary.xml
index 05cda05f9f..f84d4e60f3 100644
--- a/modules/gdnative/doc_classes/GDNativeLibrary.xml
+++ b/modules/gdnative/doc_classes/GDNativeLibrary.xml
@@ -12,15 +12,13 @@
</tutorials>
<methods>
<method name="get_current_dependencies" qualifiers="const">
- <return type="PackedStringArray">
- </return>
+ <return type="PackedStringArray" />
<description>
Returns paths to all dependency libraries for the current platform and architecture.
</description>
</method>
<method name="get_current_library_path" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the path to the dynamic library file for the current platform and architecture.
</description>
diff --git a/modules/gdnative/doc_classes/NativeScript.xml b/modules/gdnative/doc_classes/NativeScript.xml
index f2e9cac6dc..397d12a3a9 100644
--- a/modules/gdnative/doc_classes/NativeScript.xml
+++ b/modules/gdnative/doc_classes/NativeScript.xml
@@ -8,42 +8,34 @@
</tutorials>
<methods>
<method name="get_class_documentation" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the documentation string that was previously set with [code]godot_nativescript_set_class_documentation[/code].
</description>
</method>
<method name="get_method_documentation" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="method" type="StringName">
- </argument>
+ <return type="String" />
+ <argument index="0" name="method" type="StringName" />
<description>
Returns the documentation string that was previously set with [code]godot_nativescript_set_method_documentation[/code].
</description>
</method>
<method name="get_property_documentation" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="path" type="StringName">
- </argument>
+ <return type="String" />
+ <argument index="0" name="path" type="StringName" />
<description>
Returns the documentation string that was previously set with [code]godot_nativescript_set_property_documentation[/code].
</description>
</method>
<method name="get_signal_documentation" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="signal_name" type="StringName">
- </argument>
+ <return type="String" />
+ <argument index="0" name="signal_name" type="StringName" />
<description>
Returns the documentation string that was previously set with [code]godot_nativescript_set_signal_documentation[/code].
</description>
</method>
<method name="new" qualifiers="vararg">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Constructs a new object of the base type with a script of this type already attached.
[i]Note[/i]: Any arguments passed to this function will be ignored and not passed to the native constructor function. This will change with in a future API extension.
diff --git a/modules/gdnative/doc_classes/PluginScript.xml b/modules/gdnative/doc_classes/PluginScript.xml
index 9616101090..8e28187482 100644
--- a/modules/gdnative/doc_classes/PluginScript.xml
+++ b/modules/gdnative/doc_classes/PluginScript.xml
@@ -8,8 +8,7 @@
</tutorials>
<methods>
<method name="new" qualifiers="vararg">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns a new instance of the script.
</description>
diff --git a/modules/gdnative/doc_classes/VideoStreamGDNative.xml b/modules/gdnative/doc_classes/VideoStreamGDNative.xml
index 153988bad8..8b1a3210df 100644
--- a/modules/gdnative/doc_classes/VideoStreamGDNative.xml
+++ b/modules/gdnative/doc_classes/VideoStreamGDNative.xml
@@ -11,17 +11,14 @@
</tutorials>
<methods>
<method name="get_file">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the video file handled by this [VideoStreamGDNative].
</description>
</method>
<method name="set_file">
- <return type="void">
- </return>
- <argument index="0" name="file" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="file" type="String" />
<description>
Sets the video file that this [VideoStreamGDNative] resource handles. The supported extensions depend on the GDNative plugins used to expose video formats.
</description>
diff --git a/modules/gdnative/gdnative.cpp b/modules/gdnative/gdnative.cpp
index 1ff591a87f..9445fac1c6 100644
--- a/modules/gdnative/gdnative.cpp
+++ b/modules/gdnative/gdnative.cpp
@@ -129,9 +129,7 @@ void GDNativeLibrary::_get_property_list(List<PropertyInfo> *p_list) const {
config_file->get_section_keys("entry", &entry_key_list);
}
- for (List<String>::Element *E = entry_key_list.front(); E; E = E->next()) {
- String key = E->get();
-
+ for (const String &key : entry_key_list) {
PropertyInfo prop;
prop.type = Variant::STRING;
@@ -147,9 +145,7 @@ void GDNativeLibrary::_get_property_list(List<PropertyInfo> *p_list) const {
config_file->get_section_keys("dependencies", &dependency_key_list);
}
- for (List<String>::Element *E = dependency_key_list.front(); E; E = E->next()) {
- String key = E->get();
-
+ for (const String &key : dependency_key_list) {
PropertyInfo prop;
prop.type = Variant::STRING;
@@ -175,9 +171,7 @@ void GDNativeLibrary::set_config_file(Ref<ConfigFile> p_config_file) {
p_config_file->get_section_keys("entry", &entry_keys);
}
- for (List<String>::Element *E = entry_keys.front(); E; E = E->next()) {
- String key = E->get();
-
+ for (const String &key : entry_keys) {
Vector<String> tags = key.split(".");
bool skip = false;
@@ -207,9 +201,7 @@ void GDNativeLibrary::set_config_file(Ref<ConfigFile> p_config_file) {
p_config_file->get_section_keys("dependencies", &dependency_keys);
}
- for (List<String>::Element *E = dependency_keys.front(); E; E = E->next()) {
- String key = E->get();
-
+ for (const String &key : dependency_keys) {
Vector<String> tags = key.split(".");
bool skip = false;
diff --git a/modules/gdnative/gdnative/variant.cpp b/modules/gdnative/gdnative/variant.cpp
index cfb57137bb..1d75ea206c 100644
--- a/modules/gdnative/gdnative/variant.cpp
+++ b/modules/gdnative/gdnative/variant.cpp
@@ -915,8 +915,8 @@ void GDAPI godot_variant_get_builtin_method_list(godot_variant_type p_type, godo
List<StringName> list;
Variant::get_builtin_method_list((Variant::Type)p_type, &list);
int i = 0;
- for (const List<StringName>::Element *E = list.front(); E; E = E->next()) {
- memnew_placement_custom(&r_list[i], StringName, StringName(E->get()));
+ for (const StringName &E : list) {
+ memnew_placement_custom(&r_list[i], StringName, StringName(E));
}
}
@@ -970,8 +970,8 @@ void GDAPI godot_variant_get_member_list(godot_variant_type p_type, godot_string
List<StringName> members;
Variant::get_member_list((Variant::Type)p_type, &members);
int i = 0;
- for (const List<StringName>::Element *E = members.front(); E; E = E->next()) {
- memnew_placement_custom(&r_list[i++], StringName, StringName(E->get()));
+ for (const StringName &E : members) {
+ memnew_placement_custom(&r_list[i++], StringName, StringName(E));
}
}
@@ -1075,8 +1075,8 @@ void GDAPI godot_variant_get_constants_list(godot_variant_type p_type, godot_str
List<StringName> constants;
int i = 0;
Variant::get_constants_for_type((Variant::Type)p_type, &constants);
- for (const List<StringName>::Element *E = constants.front(); E; E = E->next()) {
- memnew_placement_custom(&r_list[i++], StringName, StringName(E->get()));
+ for (const StringName &E : constants) {
+ memnew_placement_custom(&r_list[i++], StringName, StringName(E));
}
}
@@ -1227,8 +1227,8 @@ void GDAPI godot_variant_get_utility_function_list(godot_string_name *r_function
godot_string_name *func = r_functions;
Variant::get_utility_function_list(&functions);
- for (const List<StringName>::Element *E = functions.front(); E; E = E->next()) {
- memnew_placement_custom(func++, StringName, StringName(E->get()));
+ for (const StringName &E : functions) {
+ memnew_placement_custom(func++, StringName, StringName(E));
}
}
diff --git a/modules/gdnative/include/net/godot_net.h b/modules/gdnative/include/net/godot_net.h
index 94e7739ef9..3fb7b9e1cc 100644
--- a/modules/gdnative/include/net/godot_net.h
+++ b/modules/gdnative/include/net/godot_net.h
@@ -91,6 +91,8 @@ typedef struct {
godot_int (*get_max_packet_size)(const void *);
/* This is MultiplayerPeer */
+ void (*set_transfer_channel)(void *, godot_int);
+ godot_int (*get_transfer_channel)(void *);
void (*set_transfer_mode)(void *, godot_int);
godot_int (*get_transfer_mode)(const void *);
// 0 = broadcast, 1 = server, <0 = all but abs(value)
diff --git a/modules/gdnative/nativescript/api_generator.cpp b/modules/gdnative/nativescript/api_generator.cpp
index 477bc9f74d..df0f29277e 100644
--- a/modules/gdnative/nativescript/api_generator.cpp
+++ b/modules/gdnative/nativescript/api_generator.cpp
@@ -425,11 +425,11 @@ List<ClassAPI> generate_c_api_classes() {
List<EnumAPI> enums;
List<StringName> enum_names;
ClassDB::get_enum_list(class_name, &enum_names, true);
- for (List<StringName>::Element *E = enum_names.front(); E; E = E->next()) {
+ for (const StringName &E : enum_names) {
List<StringName> value_names;
EnumAPI enum_api;
- enum_api.name = E->get();
- ClassDB::get_enum_constants(class_name, E->get(), &value_names, true);
+ enum_api.name = E;
+ ClassDB::get_enum_constants(class_name, E, &value_names, true);
for (List<StringName>::Element *val_e = value_names.front(); val_e; val_e = val_e->next()) {
int int_val = ClassDB::get_integer_constant(class_name, val_e->get(), nullptr);
enum_api.values.push_back(Pair<int, String>(int_val, val_e->get()));
@@ -459,8 +459,8 @@ List<ClassAPI> generate_c_builtin_api_types() {
List<StringName> utility_functions;
Variant::get_utility_function_list(&utility_functions);
- for (const List<StringName>::Element *E = utility_functions.front(); E; E = E->next()) {
- const StringName &function_name = E->get();
+ for (const StringName &E : utility_functions) {
+ const StringName &function_name = E;
MethodAPI function_api;
function_api.method_name = function_name;
@@ -521,8 +521,8 @@ List<ClassAPI> generate_c_builtin_api_types() {
List<StringName> methods;
Variant::get_builtin_method_list(type, &methods);
- for (const List<StringName>::Element *E = methods.front(); E; E = E->next()) {
- const StringName &method_name = E->get();
+ for (const StringName &E : methods) {
+ const StringName &method_name = E;
MethodAPI method_api;
@@ -578,8 +578,8 @@ List<ClassAPI> generate_c_builtin_api_types() {
List<StringName> constants;
Variant::get_constants_for_type(type, &constants);
- for (const List<StringName>::Element *E = constants.front(); E; E = E->next()) {
- const StringName &constant_name = E->get();
+ for (const StringName &E : constants) {
+ const StringName &constant_name = E;
ConstantAPI constant_api;
constant_api.constant_name = constant_name;
@@ -593,8 +593,8 @@ List<ClassAPI> generate_c_builtin_api_types() {
List<StringName> members;
Variant::get_member_list(type, &members);
- for (const List<StringName>::Element *E = members.front(); E; E = E->next()) {
- const StringName &member_name = E->get();
+ for (const StringName &E : members) {
+ const StringName &member_name = E;
PropertyAPI member_api;
member_api.name = member_name;
diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp
index d7943827c2..f3a0e9603f 100644
--- a/modules/gdnative/nativescript/nativescript.cpp
+++ b/modules/gdnative/nativescript/nativescript.cpp
@@ -98,10 +98,10 @@ void NativeScript::_update_placeholder(PlaceHolderScriptInstance *p_placeholder)
List<PropertyInfo> info;
get_script_property_list(&info);
Map<StringName, Variant> values;
- for (List<PropertyInfo>::Element *E = info.front(); E; E = E->next()) {
+ for (const PropertyInfo &E : info) {
Variant value;
- get_property_default_value(E->get().name, value);
- values[E->get().name] = value;
+ get_property_default_value(E.name, value);
+ values[E.name] = value;
}
p_placeholder->update(info, values);
diff --git a/modules/gdnative/net/multiplayer_peer_gdnative.cpp b/modules/gdnative/net/multiplayer_peer_gdnative.cpp
index 8ceba0f339..9908ed4533 100644
--- a/modules/gdnative/net/multiplayer_peer_gdnative.cpp
+++ b/modules/gdnative/net/multiplayer_peer_gdnative.cpp
@@ -62,6 +62,16 @@ int MultiplayerPeerGDNative::get_available_packet_count() const {
}
/* MultiplayerPeer */
+void MultiplayerPeerGDNative::set_transfer_channel(int p_channel) {
+ ERR_FAIL_COND(interface == nullptr);
+ return interface->set_transfer_channel(interface->data, p_channel);
+}
+
+int MultiplayerPeerGDNative::get_transfer_channel() const {
+ ERR_FAIL_COND_V(interface == nullptr, 0);
+ return interface->get_transfer_channel(interface->data);
+}
+
void MultiplayerPeerGDNative::set_transfer_mode(TransferMode p_mode) {
ERR_FAIL_COND(interface == nullptr);
interface->set_transfer_mode(interface->data, (godot_int)p_mode);
@@ -113,6 +123,7 @@ MultiplayerPeer::ConnectionStatus MultiplayerPeerGDNative::get_connection_status
}
void MultiplayerPeerGDNative::_bind_methods() {
+ ADD_PROPERTY_DEFAULT("transfer_channel", 0);
ADD_PROPERTY_DEFAULT("transfer_mode", TRANSFER_MODE_UNRELIABLE);
ADD_PROPERTY_DEFAULT("refuse_new_connections", true);
}
diff --git a/modules/gdnative/net/multiplayer_peer_gdnative.h b/modules/gdnative/net/multiplayer_peer_gdnative.h
index 7c10ab77f7..ab084faae6 100644
--- a/modules/gdnative/net/multiplayer_peer_gdnative.h
+++ b/modules/gdnative/net/multiplayer_peer_gdnative.h
@@ -56,6 +56,8 @@ public:
virtual int get_available_packet_count() const override;
/* Specific to MultiplayerPeer */
+ virtual void set_transfer_channel(int p_channel) override;
+ virtual int get_transfer_channel() const override;
virtual void set_transfer_mode(TransferMode p_mode) override;
virtual TransferMode get_transfer_mode() const override;
virtual void set_target_peer(int p_peer_id) override;
diff --git a/modules/gdnative/register_types.cpp b/modules/gdnative/register_types.cpp
index 8e5ae29ed9..a41c4f7b19 100644
--- a/modules/gdnative/register_types.cpp
+++ b/modules/gdnative/register_types.cpp
@@ -79,9 +79,7 @@ void GDNativeExportPlugin::_export_file(const String &p_path, const String &p_ty
List<String> entry_keys;
config->get_section_keys("entry", &entry_keys);
- for (List<String>::Element *E = entry_keys.front(); E; E = E->next()) {
- String key = E->get();
-
+ for (const String &key : entry_keys) {
Vector<String> tags = key.split(".");
bool skip = false;
@@ -112,9 +110,7 @@ void GDNativeExportPlugin::_export_file(const String &p_path, const String &p_ty
List<String> dependency_keys;
config->get_section_keys("dependencies", &dependency_keys);
- for (List<String>::Element *E = dependency_keys.front(); E; E = E->next()) {
- String key = E->get();
-
+ for (const String &key : dependency_keys) {
Vector<String> tags = key.split(".");
bool skip = false;
@@ -149,9 +145,7 @@ void GDNativeExportPlugin::_export_file(const String &p_path, const String &p_ty
List<String> entry_keys;
config->get_section_keys("entry", &entry_keys);
- for (List<String>::Element *E = entry_keys.front(); E; E = E->next()) {
- String key = E->get();
-
+ for (const String &key : entry_keys) {
Vector<String> tags = key.split(".");
bool skip = false;
diff --git a/modules/gdnative/tests/test_variant.h b/modules/gdnative/tests/test_variant.h
index 2850036604..c506882283 100644
--- a/modules/gdnative/tests/test_variant.h
+++ b/modules/gdnative/tests/test_variant.h
@@ -191,8 +191,8 @@ TEST_CASE("[GDNative Variant] Get utility function list") {
godot_string_name *cur = c_list;
- for (const List<StringName>::Element *E = cpp_list.front(); E; E = E->next()) {
- const StringName &cpp_name = E->get();
+ for (const StringName &E : cpp_list) {
+ const StringName &cpp_name = E;
StringName *c_name = (StringName *)cur++;
CHECK(*c_name == cpp_name);
diff --git a/modules/gdscript/doc_classes/@GDScript.xml b/modules/gdscript/doc_classes/@GDScript.xml
index e68deb070d..51b3452a3a 100644
--- a/modules/gdscript/doc_classes/@GDScript.xml
+++ b/modules/gdscript/doc_classes/@GDScript.xml
@@ -11,16 +11,11 @@
</tutorials>
<methods>
<method name="Color8">
- <return type="Color">
- </return>
- <argument index="0" name="r8" type="int">
- </argument>
- <argument index="1" name="g8" type="int">
- </argument>
- <argument index="2" name="b8" type="int">
- </argument>
- <argument index="3" name="a8" type="int" default="255">
- </argument>
+ <return type="Color" />
+ <argument index="0" name="r8" type="int" />
+ <argument index="1" name="g8" type="int" />
+ <argument index="2" name="b8" type="int" />
+ <argument index="3" name="a8" type="int" default="255" />
<description>
Returns a color constructed from integer red, green, blue, and alpha channels. Each channel should have 8 bits of information ranging from 0 to 255.
[code]r8[/code] red channel
@@ -33,12 +28,9 @@
</description>
</method>
<method name="assert">
- <return type="void">
- </return>
- <argument index="0" name="condition" type="bool">
- </argument>
- <argument index="1" name="message" type="String" default="&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="condition" type="bool" />
+ <argument index="1" name="message" type="String" default="&quot;&quot;" />
<description>
Asserts that the [code]condition[/code] is [code]true[/code]. If the [code]condition[/code] is [code]false[/code], an error is generated. When running from the editor, the running project will also be paused until you resume it. This can be used as a stronger form of [method @GlobalScope.push_error] for reporting errors to project developers or add-on users.
[b]Note:[/b] For performance reasons, the code inside [method assert] is only executed in debug builds or when running the project from the editor. Don't include code that has side effects in an [method assert] call. Otherwise, the project will behave differently when exported in release mode.
@@ -54,10 +46,8 @@
</description>
</method>
<method name="char">
- <return type="String">
- </return>
- <argument index="0" name="char" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="char" type="int" />
<description>
Returns a character as a String of the given Unicode code point (which is compatible with ASCII code).
[codeblock]
@@ -68,12 +58,9 @@
</description>
</method>
<method name="convert">
- <return type="Variant">
- </return>
- <argument index="0" name="what" type="Variant">
- </argument>
- <argument index="1" name="type" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="what" type="Variant" />
+ <argument index="1" name="type" type="int" />
<description>
Converts from a type to another in the best way possible. The [code]type[/code] parameter uses the [enum Variant.Type] values.
[codeblock]
@@ -87,17 +74,14 @@
</description>
</method>
<method name="dict2inst">
- <return type="Object">
- </return>
- <argument index="0" name="dictionary" type="Dictionary">
- </argument>
+ <return type="Object" />
+ <argument index="0" name="dictionary" type="Dictionary" />
<description>
Converts a dictionary (previously created with [method inst2dict]) back to an instance. Useful for deserializing.
</description>
</method>
<method name="get_stack">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array of dictionaries representing the current call stack.
[codeblock]
@@ -117,10 +101,8 @@
</description>
</method>
<method name="inst2dict">
- <return type="Dictionary">
- </return>
- <argument index="0" name="instance" type="Object">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="instance" type="Object" />
<description>
Returns the passed instance converted to a dictionary (useful for serializing).
[codeblock]
@@ -138,10 +120,8 @@
</description>
</method>
<method name="len">
- <return type="int">
- </return>
- <argument index="0" name="var" type="Variant">
- </argument>
+ <return type="int" />
+ <argument index="0" name="var" type="Variant" />
<description>
Returns length of Variant [code]var[/code]. Length is the character count of String, element count of Array, size of Dictionary, etc.
[b]Note:[/b] Generates a fatal error if Variant can not provide a length.
@@ -152,10 +132,8 @@
</description>
</method>
<method name="load">
- <return type="Resource">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="Resource" />
+ <argument index="0" name="path" type="String" />
<description>
Loads a resource from the filesystem located at [code]path[/code]. The resource is loaded on the method call (unless it's referenced already elsewhere, e.g. in another script or in the scene), which might cause slight delay, especially when loading scenes. To avoid unnecessary delays when loading something multiple times, either store the resource in a variable or use [method preload].
[b]Note:[/b] Resource paths can be obtained by right-clicking on a resource in the FileSystem dock and choosing "Copy Path" or by dragging the file from the FileSystem dock into the script.
@@ -168,10 +146,8 @@
</description>
</method>
<method name="preload">
- <return type="Resource">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
+ <return type="Resource" />
+ <argument index="0" name="path" type="String" />
<description>
Returns a [Resource] from the filesystem located at [code]path[/code]. The resource is loaded during script parsing, i.e. is loaded with the script and [method preload] effectively acts as a reference to that resource. Note that the method requires a constant path. If you want to load a resource from a dynamic/variable path, use [method load].
[b]Note:[/b] Resource paths can be obtained by right clicking on a resource in the Assets Panel and choosing "Copy Path" or by dragging the file from the FileSystem dock into the script.
@@ -182,15 +158,13 @@
</description>
</method>
<method name="print_debug" qualifiers="vararg">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Like [method @GlobalScope.print], but prints only when used in debug mode.
</description>
</method>
<method name="print_stack">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Prints a stack track at code location, only works when running with debugger turned on.
Output in the console would look something like this:
@@ -200,8 +174,7 @@
</description>
</method>
<method name="range" qualifiers="vararg">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array with the given range. Range can be 1 argument N (0 to N-1), two arguments (initial, final-1) or three arguments (initial, final-1, increment).
[codeblock]
@@ -218,8 +191,7 @@
</description>
</method>
<method name="str" qualifiers="vararg">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Converts one or more arguments to string in the best way possible.
[codeblock]
@@ -231,10 +203,8 @@
</description>
</method>
<method name="type_exists">
- <return type="bool">
- </return>
- <argument index="0" name="type" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="type" type="StringName" />
<description>
</description>
</method>
diff --git a/modules/gdscript/doc_classes/GDScript.xml b/modules/gdscript/doc_classes/GDScript.xml
index 631a102130..72738f027a 100644
--- a/modules/gdscript/doc_classes/GDScript.xml
+++ b/modules/gdscript/doc_classes/GDScript.xml
@@ -12,15 +12,13 @@
</tutorials>
<methods>
<method name="get_as_byte_code" qualifiers="const">
- <return type="PackedByteArray">
- </return>
+ <return type="PackedByteArray" />
<description>
Returns byte code for the script source code.
</description>
</method>
<method name="new" qualifiers="vararg">
- <return type="Variant">
- </return>
+ <return type="Variant" />
<description>
Returns a new instance of the script.
For example:
diff --git a/modules/gdscript/editor/gdscript_highlighter.cpp b/modules/gdscript/editor/gdscript_highlighter.cpp
index 9a4c22f49f..ed8b0a4690 100644
--- a/modules/gdscript/editor/gdscript_highlighter.cpp
+++ b/modules/gdscript/editor/gdscript_highlighter.cpp
@@ -458,8 +458,8 @@ void GDScriptSyntaxHighlighter::_update_cache() {
const Color types_color = EDITOR_GET("text_editor/highlighting/engine_type_color");
List<StringName> types;
ClassDB::get_class_list(&types);
- for (List<StringName>::Element *E = types.front(); E; E = E->next()) {
- String n = E->get();
+ for (const StringName &E : types) {
+ String n = E;
if (n.begins_with("_")) {
n = n.substr(1, n.length());
}
@@ -470,8 +470,8 @@ void GDScriptSyntaxHighlighter::_update_cache() {
const Color usertype_color = EDITOR_GET("text_editor/highlighting/user_type_color");
List<StringName> global_classes;
ScriptServer::get_global_class_list(&global_classes);
- for (List<StringName>::Element *E = global_classes.front(); E; E = E->next()) {
- keywords[String(E->get())] = usertype_color;
+ for (const StringName &E : global_classes) {
+ keywords[String(E)] = usertype_color;
}
/* Autoloads. */
@@ -489,8 +489,8 @@ void GDScriptSyntaxHighlighter::_update_cache() {
const Color basetype_color = EDITOR_GET("text_editor/highlighting/base_type_color");
List<String> core_types;
gdscript->get_core_type_words(&core_types);
- for (List<String>::Element *E = core_types.front(); E; E = E->next()) {
- keywords[E->get()] = basetype_color;
+ for (const String &E : core_types) {
+ keywords[E] = basetype_color;
}
/* Reserved words. */
@@ -498,11 +498,11 @@ void GDScriptSyntaxHighlighter::_update_cache() {
const Color control_flow_keyword_color = EDITOR_GET("text_editor/highlighting/control_flow_keyword_color");
List<String> keyword_list;
gdscript->get_reserved_words(&keyword_list);
- for (List<String>::Element *E = keyword_list.front(); E; E = E->next()) {
- if (gdscript->is_control_flow_keyword(E->get())) {
- keywords[E->get()] = control_flow_keyword_color;
+ for (const String &E : keyword_list) {
+ if (gdscript->is_control_flow_keyword(E)) {
+ keywords[E] = control_flow_keyword_color;
} else {
- keywords[E->get()] = keyword_color;
+ keywords[E] = keyword_color;
}
}
@@ -510,8 +510,7 @@ void GDScriptSyntaxHighlighter::_update_cache() {
const Color comment_color = EDITOR_GET("text_editor/highlighting/comment_color");
List<String> comments;
gdscript->get_comment_delimiters(&comments);
- for (List<String>::Element *E = comments.front(); E; E = E->next()) {
- String comment = E->get();
+ for (const String &comment : comments) {
String beg = comment.get_slice(" ", 0);
String end = comment.get_slice_count(" ") > 1 ? comment.get_slice(" ", 1) : String();
add_color_region(beg, end, comment_color, end == "");
@@ -521,8 +520,7 @@ void GDScriptSyntaxHighlighter::_update_cache() {
const Color string_color = EDITOR_GET("text_editor/highlighting/string_color");
List<String> strings;
gdscript->get_string_delimiters(&strings);
- for (List<String>::Element *E = strings.front(); E; E = E->next()) {
- String string = E->get();
+ for (const String &string : strings) {
String beg = string.get_slice(" ", 0);
String end = string.get_slice_count(" ") > 1 ? string.get_slice(" ", 1) : String();
add_color_region(beg, end, string_color, end == "");
@@ -536,9 +534,9 @@ void GDScriptSyntaxHighlighter::_update_cache() {
if (instance_base != StringName()) {
List<PropertyInfo> plist;
ClassDB::get_property_list(instance_base, &plist);
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- String name = E->get().name;
- if (E->get().usage & PROPERTY_USAGE_CATEGORY || E->get().usage & PROPERTY_USAGE_GROUP || E->get().usage & PROPERTY_USAGE_SUBGROUP) {
+ for (const PropertyInfo &E : plist) {
+ String name = E.name;
+ if (E.usage & PROPERTY_USAGE_CATEGORY || E.usage & PROPERTY_USAGE_GROUP || E.usage & PROPERTY_USAGE_SUBGROUP) {
continue;
}
if (name.find("/") != -1) {
@@ -549,8 +547,8 @@ void GDScriptSyntaxHighlighter::_update_cache() {
List<String> clist;
ClassDB::get_integer_constant_list(instance_base, &clist);
- for (List<String>::Element *E = clist.front(); E; E = E->next()) {
- member_keywords[E->get()] = member_variable_color;
+ for (const String &E : clist) {
+ member_keywords[E] = member_variable_color;
}
}
}
diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp
index f7113674ec..8957b00a1b 100644
--- a/modules/gdscript/gdscript.cpp
+++ b/modules/gdscript/gdscript.cpp
@@ -291,8 +291,8 @@ void GDScript::_get_script_property_list(List<PropertyInfo> *r_list, bool p_incl
sptr = sptr->_base;
}
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- r_list->push_back(E->get());
+ for (const PropertyInfo &E : props) {
+ r_list->push_back(E);
}
}
@@ -401,8 +401,8 @@ void GDScript::_update_exports_values(Map<StringName, Variant> &values, List<Pro
values[E->key()] = E->get();
}
- for (List<PropertyInfo>::Element *E = members_cache.front(); E; E = E->next()) {
- propnames.push_back(E->get());
+ for (const PropertyInfo &E : members_cache) {
+ propnames.push_back(E);
}
}
@@ -861,8 +861,7 @@ Error GDScript::reload(bool p_keep_state) {
}
}
#ifdef DEBUG_ENABLED
- for (const List<GDScriptWarning>::Element *E = parser.get_warnings().front(); E; E = E->next()) {
- const GDScriptWarning &warning = E->get();
+ for (const GDScriptWarning &warning : parser.get_warnings()) {
if (EngineDebugger::is_active()) {
Vector<ScriptLanguage::StackInfo> si;
EngineDebugger::get_script_debugger()->send_error("", get_path(), warning.start_line, warning.get_name(), warning.get_message(), ERR_HANDLER_WARNING, si);
@@ -1445,8 +1444,8 @@ void GDScriptInstance::get_property_list(List<PropertyInfo> *p_properties) const
sptr = sptr->_base;
}
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- p_properties->push_back(E->get());
+ for (const PropertyInfo &E : props) {
+ p_properties->push_back(E);
}
}
@@ -1644,26 +1643,25 @@ void GDScriptLanguage::init() {
List<StringName> class_list;
ClassDB::get_class_list(&class_list);
- for (List<StringName>::Element *E = class_list.front(); E; E = E->next()) {
- StringName n = E->get();
+ for (const StringName &n : class_list) {
String s = String(n);
if (s.begins_with("_")) {
- n = s.substr(1, s.length());
+ s = s.substr(1, s.length());
}
- if (globals.has(n)) {
+ if (globals.has(s)) {
continue;
}
- Ref<GDScriptNativeClass> nc = memnew(GDScriptNativeClass(E->get()));
- _add_global(n, nc);
+ Ref<GDScriptNativeClass> nc = memnew(GDScriptNativeClass(n));
+ _add_global(s, nc);
}
//populate singletons
List<Engine::Singleton> singletons;
Engine::get_singleton()->get_singletons(&singletons);
- for (List<Engine::Singleton>::Element *E = singletons.front(); E; E = E->next()) {
- _add_global(E->get().name, E->get().ptr);
+ for (const Engine::Singleton &E : singletons) {
+ _add_global(E.name, E.ptr);
}
#ifdef TESTS_ENABLED
@@ -1806,10 +1804,10 @@ void GDScriptLanguage::reload_all_scripts() {
scripts.sort_custom<GDScriptDepSort>(); //update in inheritance dependency order
- for (List<Ref<GDScript>>::Element *E = scripts.front(); E; E = E->next()) {
- print_verbose("GDScript: Reloading: " + E->get()->get_path());
- E->get()->load_source_code(E->get()->get_path());
- E->get()->reload(true);
+ for (Ref<GDScript> &script : scripts) {
+ print_verbose("GDScript: Reloading: " + script->get_path());
+ script->load_source_code(script->get_path());
+ script->reload(true);
}
#endif
}
@@ -1838,21 +1836,21 @@ void GDScriptLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_so
scripts.sort_custom<GDScriptDepSort>(); //update in inheritance dependency order
- for (List<Ref<GDScript>>::Element *E = scripts.front(); E; E = E->next()) {
- bool reload = E->get() == p_script || to_reload.has(E->get()->get_base());
+ for (Ref<GDScript> &script : scripts) {
+ bool reload = script == p_script || to_reload.has(script->get_base());
if (!reload) {
continue;
}
- to_reload.insert(E->get(), Map<ObjectID, List<Pair<StringName, Variant>>>());
+ to_reload.insert(script, Map<ObjectID, List<Pair<StringName, Variant>>>());
if (!p_soft_reload) {
//save state and remove script from instances
- Map<ObjectID, List<Pair<StringName, Variant>>> &map = to_reload[E->get()];
+ Map<ObjectID, List<Pair<StringName, Variant>>> &map = to_reload[script];
- while (E->get()->instances.front()) {
- Object *obj = E->get()->instances.front()->get();
+ while (script->instances.front()) {
+ Object *obj = script->instances.front()->get();
//save instance info
List<Pair<StringName, Variant>> state;
if (obj->get_script_instance()) {
@@ -1865,8 +1863,8 @@ void GDScriptLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_so
//same thing for placeholders
#ifdef TOOLS_ENABLED
- while (E->get()->placeholders.size()) {
- Object *obj = E->get()->placeholders.front()->get()->get_owner();
+ while (script->placeholders.size()) {
+ Object *obj = script->placeholders.front()->get()->get_owner();
//save instance info
if (obj->get_script_instance()) {
@@ -1876,13 +1874,13 @@ void GDScriptLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_so
obj->set_script(Variant());
} else {
// no instance found. Let's remove it so we don't loop forever
- E->get()->placeholders.erase(E->get()->placeholders.front()->get());
+ script->placeholders.erase(script->placeholders.front()->get());
}
}
#endif
- for (Map<ObjectID, List<Pair<StringName, Variant>>>::Element *F = E->get()->pending_reload_state.front(); F; F = F->next()) {
+ for (Map<ObjectID, List<Pair<StringName, Variant>>>::Element *F = script->pending_reload_state.front(); F; F = F->next()) {
map[F->key()] = F->get(); //pending to reload, use this one instead
}
}
@@ -2025,8 +2023,8 @@ void GDScriptLanguage::get_reserved_words(List<String> *p_words) const {
List<StringName> functions;
GDScriptUtilityFunctions::get_function_list(&functions);
- for (const List<StringName>::Element *E = functions.front(); E; E = E->next()) {
- p_words->push_back(String(E->get()));
+ for (const StringName &E : functions) {
+ p_words->push_back(String(E));
}
}
@@ -2296,8 +2294,8 @@ void ResourceFormatLoaderGDScript::get_dependencies(const String &p_path, List<S
return;
}
- for (const List<String>::Element *E = parser.get_dependencies().front(); E; E = E->next()) {
- p_dependencies->push_back(E->get());
+ for (const String &E : parser.get_dependencies()) {
+ p_dependencies->push_back(E);
}
}
diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp
index e7fb33a6a7..ab37e54cf1 100644
--- a/modules/gdscript/gdscript_analyzer.cpp
+++ b/modules/gdscript/gdscript_analyzer.cpp
@@ -115,8 +115,8 @@ static GDScriptParser::DataType make_native_enum_type(const StringName &p_native
StringName real_native_name = GDScriptParser::get_real_class_name(p_native_class);
ClassDB::get_enum_constants(real_native_name, p_enum_name, &enum_values);
- for (const List<StringName>::Element *E = enum_values.front(); E != nullptr; E = E->next()) {
- type.enum_values[E->get()] = ClassDB::get_integer_constant(real_native_name, E->get());
+ for (const StringName &E : enum_values) {
+ type.enum_values[E] = ClassDB::get_integer_constant(real_native_name, E);
}
return type;
@@ -573,8 +573,8 @@ void GDScriptAnalyzer::resolve_class_interface(GDScriptParser::ClassNode *p_clas
member.variable->set_datatype(datatype);
// Apply annotations.
- for (List<GDScriptParser::AnnotationNode *>::Element *E = member.variable->annotations.front(); E; E = E->next()) {
- E->get()->apply(parser, member.variable);
+ for (GDScriptParser::AnnotationNode *&E : member.variable->annotations) {
+ E->apply(parser, member.variable);
}
} break;
case GDScriptParser::ClassNode::Member::CONSTANT: {
@@ -622,8 +622,8 @@ void GDScriptAnalyzer::resolve_class_interface(GDScriptParser::ClassNode *p_clas
member.constant->set_datatype(datatype);
// Apply annotations.
- for (List<GDScriptParser::AnnotationNode *>::Element *E = member.constant->annotations.front(); E; E = E->next()) {
- E->get()->apply(parser, member.constant);
+ for (GDScriptParser::AnnotationNode *&E : member.constant->annotations) {
+ E->apply(parser, member.constant);
}
} break;
case GDScriptParser::ClassNode::Member::SIGNAL: {
@@ -641,8 +641,8 @@ void GDScriptAnalyzer::resolve_class_interface(GDScriptParser::ClassNode *p_clas
member.signal->set_datatype(signal_type);
// Apply annotations.
- for (List<GDScriptParser::AnnotationNode *>::Element *E = member.signal->annotations.front(); E; E = E->next()) {
- E->get()->apply(parser, member.signal);
+ for (GDScriptParser::AnnotationNode *&E : member.signal->annotations) {
+ E->apply(parser, member.signal);
}
} break;
case GDScriptParser::ClassNode::Member::ENUM: {
@@ -688,8 +688,8 @@ void GDScriptAnalyzer::resolve_class_interface(GDScriptParser::ClassNode *p_clas
member.m_enum->set_datatype(enum_type);
// Apply annotations.
- for (List<GDScriptParser::AnnotationNode *>::Element *E = member.m_enum->annotations.front(); E; E = E->next()) {
- E->get()->apply(parser, member.m_enum);
+ for (GDScriptParser::AnnotationNode *&E : member.m_enum->annotations) {
+ E->apply(parser, member.m_enum);
}
} break;
case GDScriptParser::ClassNode::Member::FUNCTION:
@@ -761,8 +761,8 @@ void GDScriptAnalyzer::resolve_class_body(GDScriptParser::ClassNode *p_class) {
resolve_function_body(member.function);
// Apply annotations.
- for (List<GDScriptParser::AnnotationNode *>::Element *E = member.function->annotations.front(); E; E = E->next()) {
- E->get()->apply(parser, member.function);
+ for (GDScriptParser::AnnotationNode *&E : member.function->annotations) {
+ E->apply(parser, member.function);
}
}
@@ -1927,9 +1927,7 @@ void GDScriptAnalyzer::reduce_call(GDScriptParser::CallNode *p_call, bool is_awa
Variant::get_constructor_list(builtin_type, &constructors);
bool match = false;
- for (const List<MethodInfo>::Element *E = constructors.front(); E != nullptr; E = E->next()) {
- const MethodInfo &info = E->get();
-
+ for (const MethodInfo &info : constructors) {
if (p_call->arguments.size() < info.arguments.size() - info.default_arguments.size()) {
continue;
}
@@ -2326,8 +2324,7 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
Variant::construct(base.builtin_type, dummy, nullptr, 0, temp);
List<PropertyInfo> properties;
dummy.get_property_list(&properties);
- for (const List<PropertyInfo>::Element *E = properties.front(); E != nullptr; E = E->next()) {
- const PropertyInfo &prop = E->get();
+ for (const PropertyInfo &prop : properties) {
if (prop.name == name) {
p_identifier->set_datatype(type_from_property(prop));
return;
@@ -3125,8 +3122,8 @@ GDScriptParser::DataType GDScriptAnalyzer::type_from_variant(const Variant &p_va
GDScriptParser::ClassNode *found = ref->get_parser()->head;
// It should be okay to assume this exists, since we have a complete script already.
- for (const List<StringName>::Element *E = class_chain.front(); E; E = E->next()) {
- found = found->get_member(E->get()).m_class;
+ for (const StringName &E : class_chain) {
+ found = found->get_member(E).m_class;
}
result.class_type = found;
@@ -3222,9 +3219,9 @@ bool GDScriptAnalyzer::get_function_signature(GDScriptParser::Node *p_source, GD
List<MethodInfo> methods;
dummy.get_method_list(&methods);
- for (const List<MethodInfo>::Element *E = methods.front(); E != nullptr; E = E->next()) {
- if (E->get().name == p_function) {
- return function_signature_from_info(E->get(), r_return_type, r_par_types, r_default_arg_count, r_static, r_vararg);
+ for (const MethodInfo &E : methods) {
+ if (E.name == p_function) {
+ return function_signature_from_info(E, r_return_type, r_par_types, r_default_arg_count, r_static, r_vararg);
}
}
@@ -3321,8 +3318,8 @@ bool GDScriptAnalyzer::function_signature_from_info(const MethodInfo &p_info, GD
r_default_arg_count = p_info.default_arguments.size();
r_vararg = (p_info.flags & METHOD_FLAG_VARARG) != 0;
- for (const List<PropertyInfo>::Element *E = p_info.arguments.front(); E != nullptr; E = E->next()) {
- r_par_types.push_back(type_from_property(E->get()));
+ for (const PropertyInfo &E : p_info.arguments) {
+ r_par_types.push_back(type_from_property(E));
}
return true;
}
@@ -3330,8 +3327,8 @@ bool GDScriptAnalyzer::function_signature_from_info(const MethodInfo &p_info, GD
bool GDScriptAnalyzer::validate_call_arg(const MethodInfo &p_method, const GDScriptParser::CallNode *p_call) {
List<GDScriptParser::DataType> arg_types;
- for (const List<PropertyInfo>::Element *E = p_method.arguments.front(); E != nullptr; E = E->next()) {
- arg_types.push_back(type_from_property(E->get()));
+ for (const PropertyInfo &E : p_method.arguments) {
+ arg_types.push_back(type_from_property(E));
}
return validate_call_arg(arg_types, p_method.default_arguments.size(), (p_method.flags & METHOD_FLAG_VARARG) != 0, p_call);
@@ -3658,11 +3655,11 @@ Error GDScriptAnalyzer::resolve_program() {
List<String> parser_keys;
depended_parsers.get_key_list(&parser_keys);
- for (const List<String>::Element *E = parser_keys.front(); E != nullptr; E = E->next()) {
- if (depended_parsers[E->get()].is_null()) {
+ for (const String &E : parser_keys) {
+ if (depended_parsers[E].is_null()) {
return ERR_PARSE_ERROR;
}
- depended_parsers[E->get()]->raise_status(GDScriptParserRef::FULLY_SOLVED);
+ depended_parsers[E]->raise_status(GDScriptParserRef::FULLY_SOLVED);
}
return parser->errors.is_empty() ? OK : ERR_PARSE_ERROR;
}
diff --git a/modules/gdscript/gdscript_byte_codegen.cpp b/modules/gdscript/gdscript_byte_codegen.cpp
index 9ff5a342ec..5958326315 100644
--- a/modules/gdscript/gdscript_byte_codegen.cpp
+++ b/modules/gdscript/gdscript_byte_codegen.cpp
@@ -1459,8 +1459,8 @@ void GDScriptByteCodeGenerator::write_endfor() {
}
// Patch break statements.
- for (const List<int>::Element *E = current_breaks_to_patch.back()->get().front(); E; E = E->next()) {
- patch_jump(E->get());
+ for (const int &E : current_breaks_to_patch.back()->get()) {
+ patch_jump(E);
}
current_breaks_to_patch.pop_back();
@@ -1494,8 +1494,8 @@ void GDScriptByteCodeGenerator::write_endwhile() {
while_jmp_addrs.pop_back();
// Patch break statements.
- for (const List<int>::Element *E = current_breaks_to_patch.back()->get().front(); E; E = E->next()) {
- patch_jump(E->get());
+ for (const int &E : current_breaks_to_patch.back()->get()) {
+ patch_jump(E);
}
current_breaks_to_patch.pop_back();
}
@@ -1506,8 +1506,8 @@ void GDScriptByteCodeGenerator::start_match() {
void GDScriptByteCodeGenerator::start_match_branch() {
// Patch continue statements.
- for (const List<int>::Element *E = match_continues_to_patch.back()->get().front(); E; E = E->next()) {
- patch_jump(E->get());
+ for (const int &E : match_continues_to_patch.back()->get()) {
+ patch_jump(E);
}
match_continues_to_patch.pop_back();
// Start a new list for next branch.
@@ -1516,8 +1516,8 @@ void GDScriptByteCodeGenerator::start_match_branch() {
void GDScriptByteCodeGenerator::end_match() {
// Patch continue statements.
- for (const List<int>::Element *E = match_continues_to_patch.back()->get().front(); E; E = E->next()) {
- patch_jump(E->get());
+ for (const int &E : match_continues_to_patch.back()->get()) {
+ patch_jump(E);
}
match_continues_to_patch.pop_back();
}
diff --git a/modules/gdscript/gdscript_compiler.cpp b/modules/gdscript/gdscript_compiler.cpp
index fbe791a109..7c9d08b782 100644
--- a/modules/gdscript/gdscript_compiler.cpp
+++ b/modules/gdscript/gdscript_compiler.cpp
@@ -981,8 +981,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
assigned = prev_base;
// Set back the values into their bases.
- for (List<ChainInfo>::Element *E = set_chain.front(); E; E = E->next()) {
- const ChainInfo &info = E->get();
+ for (const ChainInfo &info : set_chain) {
if (!info.is_named) {
gen->write_set(info.base, info.key, assigned);
if (info.key.mode == GDScriptCodeGenerator::Address::TEMPORARY) {
diff --git a/modules/gdscript/gdscript_editor.cpp b/modules/gdscript/gdscript_editor.cpp
index 79023df284..2e570d5a5b 100644
--- a/modules/gdscript/gdscript_editor.cpp
+++ b/modules/gdscript/gdscript_editor.cpp
@@ -141,8 +141,8 @@ bool GDScriptLanguage::validate(const String &p_script, const String &p_path, Li
}
#ifdef DEBUG_ENABLED
if (r_warnings) {
- for (const List<GDScriptWarning>::Element *E = parser.get_warnings().front(); E; E = E->next()) {
- const GDScriptWarning &warn = E->get();
+ for (const GDScriptWarning &E : parser.get_warnings()) {
+ const GDScriptWarning &warn = E;
ScriptLanguage::Warning w;
w.start_line = warn.start_line;
w.end_line = warn.end_line;
@@ -157,8 +157,8 @@ bool GDScriptLanguage::validate(const String &p_script, const String &p_path, Li
#endif
if (err) {
if (r_errors) {
- for (const List<GDScriptParser::ParserError>::Element *E = parser.get_errors().front(); E; E = E->next()) {
- const GDScriptParser::ParserError &pe = E->get();
+ for (const GDScriptParser::ParserError &E : parser.get_errors()) {
+ const GDScriptParser::ParserError &pe = E;
ScriptLanguage::ScriptError e;
e.line = pe.line;
e.column = pe.column;
@@ -319,9 +319,9 @@ void GDScriptLanguage::debug_get_stack_level_locals(int p_level, List<String> *p
List<Pair<StringName, int>> locals;
f->debug_get_stack_member_state(*_call_stack[l].line, &locals);
- for (List<Pair<StringName, int>>::Element *E = locals.front(); E; E = E->next()) {
- p_locals->push_back(E->get().first);
- p_values->push_back(_call_stack[l].stack[E->get().second]);
+ for (const Pair<StringName, int> &E : locals) {
+ p_locals->push_back(E.first);
+ p_values->push_back(_call_stack[l].stack[E.second]);
}
}
@@ -421,8 +421,8 @@ void GDScriptLanguage::get_public_functions(List<MethodInfo> *p_functions) const
List<StringName> functions;
GDScriptUtilityFunctions::get_function_list(&functions);
- for (const List<StringName>::Element *E = functions.front(); E; E = E->next()) {
- p_functions->push_back(GDScriptUtilityFunctions::get_function_info(E->get()));
+ for (const StringName &E : functions) {
+ p_functions->push_back(GDScriptUtilityFunctions::get_function_info(E));
}
// Not really "functions", but show in documentation.
@@ -548,7 +548,7 @@ static String _make_arguments_hint(const MethodInfo &p_info, int p_arg_idx, bool
int def_args = p_info.arguments.size() - p_info.default_arguments.size();
int i = 0;
- for (const List<PropertyInfo>::Element *E = p_info.arguments.front(); E; E = E->next()) {
+ for (const PropertyInfo &E : p_info.arguments) {
if (i > 0) {
arghint += ", ";
}
@@ -556,7 +556,7 @@ static String _make_arguments_hint(const MethodInfo &p_info, int p_arg_idx, bool
if (i == p_arg_idx) {
arghint += String::chr(0xFFFF);
}
- arghint += E->get().name + ": " + _get_visual_datatype(E->get(), true);
+ arghint += E.name + ": " + _get_visual_datatype(E, true);
if (i - def_args >= 0) {
arghint += String(" = ") + p_info.default_arguments[i - def_args].get_construct_string();
@@ -662,11 +662,11 @@ static void _find_annotation_arguments(const GDScriptParser::AnnotationNode *p_a
r_result.insert(node.display, node);
List<StringName> node_types;
ClassDB::get_inheriters_from_class("Node", &node_types);
- for (const List<StringName>::Element *E = node_types.front(); E != nullptr; E = E->next()) {
- if (!ClassDB::is_class_exposed(E->get())) {
+ for (const StringName &E : node_types) {
+ if (!ClassDB::is_class_exposed(E)) {
continue;
}
- ScriptCodeCompletionOption option(E->get(), ScriptCodeCompletionOption::KIND_CLASS);
+ ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_CLASS);
r_result.insert(option.display, option);
}
}
@@ -675,9 +675,9 @@ static void _find_annotation_arguments(const GDScriptParser::AnnotationNode *p_a
static void _list_available_types(bool p_inherit_only, GDScriptParser::CompletionContext &p_context, Map<String, ScriptCodeCompletionOption> &r_result) {
List<StringName> native_types;
ClassDB::get_class_list(&native_types);
- for (const List<StringName>::Element *E = native_types.front(); E != nullptr; E = E->next()) {
- if (ClassDB::is_class_exposed(E->get()) && !Engine::get_singleton()->has_singleton(E->get())) {
- ScriptCodeCompletionOption option(E->get(), ScriptCodeCompletionOption::KIND_CLASS);
+ for (const StringName &E : native_types) {
+ if (ClassDB::is_class_exposed(E) && !Engine::get_singleton()->has_singleton(E)) {
+ ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_CLASS);
r_result.insert(option.display, option);
}
}
@@ -687,8 +687,8 @@ static void _list_available_types(bool p_inherit_only, GDScriptParser::Completio
// Native enums from base class
List<StringName> enums;
ClassDB::get_enum_list(p_context.current_class->base_type.native_type, &enums);
- for (const List<StringName>::Element *E = enums.front(); E != nullptr; E = E->next()) {
- ScriptCodeCompletionOption option(E->get(), ScriptCodeCompletionOption::KIND_ENUM);
+ for (const StringName &E : enums) {
+ ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_ENUM);
r_result.insert(option.display, option);
}
}
@@ -725,8 +725,8 @@ static void _list_available_types(bool p_inherit_only, GDScriptParser::Completio
// Global scripts
List<StringName> global_classes;
ScriptServer::get_global_class_list(&global_classes);
- for (const List<StringName>::Element *E = global_classes.front(); E != nullptr; E = E->next()) {
- ScriptCodeCompletionOption option(E->get(), ScriptCodeCompletionOption::KIND_CLASS);
+ for (const StringName &E : global_classes) {
+ ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_CLASS);
r_result.insert(option.display, option);
}
@@ -865,8 +865,8 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
if (!_static) {
List<PropertyInfo> members;
scr->get_script_property_list(&members);
- for (List<PropertyInfo>::Element *E = members.front(); E; E = E->next()) {
- ScriptCodeCompletionOption option(E->get().name, ScriptCodeCompletionOption::KIND_MEMBER);
+ for (const PropertyInfo &E : members) {
+ ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_MEMBER);
r_result.insert(option.display, option);
}
}
@@ -879,20 +879,20 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
List<MethodInfo> signals;
scr->get_script_signal_list(&signals);
- for (List<MethodInfo>::Element *E = signals.front(); E; E = E->next()) {
- ScriptCodeCompletionOption option(E->get().name, ScriptCodeCompletionOption::KIND_SIGNAL);
+ for (const MethodInfo &E : signals) {
+ ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_SIGNAL);
r_result.insert(option.display, option);
}
}
List<MethodInfo> methods;
scr->get_script_method_list(&methods);
- for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
- if (E->get().name.begins_with("@")) {
+ for (const MethodInfo &E : methods) {
+ if (E.name.begins_with("@")) {
continue;
}
- ScriptCodeCompletionOption option(E->get().name, ScriptCodeCompletionOption::KIND_FUNCTION);
- if (E->get().arguments.size()) {
+ ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_FUNCTION);
+ if (E.arguments.size()) {
option.insert_text += "(";
} else {
option.insert_text += "()";
@@ -920,22 +920,22 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
if (!p_only_functions) {
List<String> constants;
ClassDB::get_integer_constant_list(type, &constants);
- for (List<String>::Element *E = constants.front(); E; E = E->next()) {
- ScriptCodeCompletionOption option(E->get(), ScriptCodeCompletionOption::KIND_CONSTANT);
+ for (const String &E : constants) {
+ ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_CONSTANT);
r_result.insert(option.display, option);
}
if (!_static || Engine::get_singleton()->has_singleton(type)) {
List<PropertyInfo> pinfo;
ClassDB::get_property_list(type, &pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (E->get().usage & (PROPERTY_USAGE_GROUP | PROPERTY_USAGE_CATEGORY)) {
+ for (const PropertyInfo &E : pinfo) {
+ if (E.usage & (PROPERTY_USAGE_GROUP | PROPERTY_USAGE_CATEGORY)) {
continue;
}
- if (E->get().name.find("/") != -1) {
+ if (E.name.find("/") != -1) {
continue;
}
- ScriptCodeCompletionOption option(E->get().name, ScriptCodeCompletionOption::KIND_MEMBER);
+ ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_MEMBER);
r_result.insert(option.display, option);
}
}
@@ -945,12 +945,12 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
List<MethodInfo> methods;
bool is_autocompleting_getters = GLOBAL_GET("debug/gdscript/completion/autocomplete_setters_and_getters").booleanize();
ClassDB::get_method_list(type, &methods, false, !is_autocompleting_getters);
- for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
- if (E->get().name.begins_with("_")) {
+ for (const MethodInfo &E : methods) {
+ if (E.name.begins_with("_")) {
continue;
}
- ScriptCodeCompletionOption option(E->get().name, ScriptCodeCompletionOption::KIND_FUNCTION);
- if (E->get().arguments.size()) {
+ ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_FUNCTION);
+ if (E.arguments.size()) {
option.insert_text += "(";
} else {
option.insert_text += "()";
@@ -977,9 +977,9 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
tmp.get_property_list(&members);
}
- for (List<PropertyInfo>::Element *E = members.front(); E; E = E->next()) {
- if (String(E->get().name).find("/") == -1) {
- ScriptCodeCompletionOption option(E->get().name, ScriptCodeCompletionOption::KIND_MEMBER);
+ for (const PropertyInfo &E : members) {
+ if (String(E.name).find("/") == -1) {
+ ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_MEMBER);
r_result.insert(option.display, option);
}
}
@@ -987,9 +987,9 @@ static void _find_identifiers_in_base(const GDScriptCompletionIdentifier &p_base
List<MethodInfo> methods;
tmp.get_method_list(&methods);
- for (const List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
- ScriptCodeCompletionOption option(E->get().name, ScriptCodeCompletionOption::KIND_FUNCTION);
- if (E->get().arguments.size()) {
+ for (const MethodInfo &E : methods) {
+ ScriptCodeCompletionOption option(E.name, ScriptCodeCompletionOption::KIND_FUNCTION);
+ if (E.arguments.size()) {
option.insert_text += "(";
} else {
option.insert_text += "()";
@@ -1019,9 +1019,9 @@ static void _find_identifiers(GDScriptParser::CompletionContext &p_context, bool
List<StringName> functions;
GDScriptUtilityFunctions::get_function_list(&functions);
- for (const List<StringName>::Element *E = functions.front(); E; E = E->next()) {
- MethodInfo function = GDScriptUtilityFunctions::get_function_info(E->get());
- ScriptCodeCompletionOption option(String(E->get()), ScriptCodeCompletionOption::KIND_FUNCTION);
+ for (const StringName &E : functions) {
+ MethodInfo function = GDScriptUtilityFunctions::get_function_info(E);
+ ScriptCodeCompletionOption option(String(E), ScriptCodeCompletionOption::KIND_FUNCTION);
if (function.arguments.size() || (function.flags & METHOD_FLAG_VARARG)) {
option.insert_text += "(";
} else {
@@ -1768,9 +1768,9 @@ static bool _guess_identifier_type(GDScriptParser::CompletionContext &p_context,
StringName real_native = GDScriptParser::get_real_class_name(base_type.native_type);
MethodInfo info;
if (ClassDB::get_method_info(real_native, p_context.current_function->identifier->name, &info)) {
- for (const List<PropertyInfo>::Element *E = info.arguments.front(); E; E = E->next()) {
- if (E->get().name == p_identifier) {
- r_type = _type_from_property(E->get());
+ for (const PropertyInfo &E : info.arguments) {
+ if (E.name == p_identifier) {
+ r_type = _type_from_property(E);
return true;
}
}
@@ -1932,8 +1932,7 @@ static bool _guess_identifier_type_from_base(GDScriptParser::CompletionContext &
if (!is_static) {
List<PropertyInfo> members;
scr->get_script_property_list(&members);
- for (const List<PropertyInfo>::Element *E = members.front(); E; E = E->next()) {
- const PropertyInfo &prop = E->get();
+ for (const PropertyInfo &prop : members) {
if (prop.name == p_identifier) {
r_type = _type_from_property(prop);
return true;
@@ -2096,8 +2095,7 @@ static bool _guess_method_return_type_from_base(GDScriptParser::CompletionContex
if (scr.is_valid()) {
List<MethodInfo> methods;
scr->get_script_method_list(&methods);
- for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
- MethodInfo &mi = E->get();
+ for (const MethodInfo &mi : methods) {
if (mi.name == p_method) {
r_type = _type_from_property(mi.return_val);
return true;
@@ -2137,8 +2135,7 @@ static bool _guess_method_return_type_from_base(GDScriptParser::CompletionContex
List<MethodInfo> methods;
tmp.get_method_list(&methods);
- for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
- MethodInfo &mi = E->get();
+ for (const MethodInfo &mi : methods) {
if (mi.name == p_method) {
r_type = _type_from_property(mi.return_val);
return true;
@@ -2183,8 +2180,8 @@ static void _find_enumeration_candidates(GDScriptParser::CompletionContext &p_co
List<StringName> enum_constants;
ClassDB::get_enum_constants(class_name, enum_name, &enum_constants);
- for (List<StringName>::Element *E = enum_constants.front(); E; E = E->next()) {
- String candidate = class_name + "." + E->get();
+ for (const StringName &E : enum_constants) {
+ String candidate = class_name + "." + E;
ScriptCodeCompletionOption option(candidate, ScriptCodeCompletionOption::KIND_ENUM);
r_result.insert(option.display, option);
}
@@ -2228,8 +2225,8 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
if (obj) {
List<String> options;
obj->get_argument_options(p_method, p_argidx, &options);
- for (List<String>::Element *F = options.front(); F; F = F->next()) {
- ScriptCodeCompletionOption option(F->get(), ScriptCodeCompletionOption::KIND_FUNCTION);
+ for (const String &F : options) {
+ ScriptCodeCompletionOption option(F, ScriptCodeCompletionOption::KIND_FUNCTION);
r_result.insert(option.display, option);
}
}
@@ -2250,8 +2247,8 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
List<PropertyInfo> props;
ProjectSettings::get_singleton()->get_property_list(&props);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- String s = E->get().name;
+ for (const PropertyInfo &E : props) {
+ String s = E.name;
if (!s.begins_with("autoload/")) {
continue;
}
@@ -2266,8 +2263,8 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
// Get input actions
List<PropertyInfo> props;
ProjectSettings::get_singleton()->get_property_list(&props);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- String s = E->get().name;
+ for (const PropertyInfo &E : props) {
+ String s = E.name;
if (!s.begins_with("input/")) {
continue;
}
@@ -2291,9 +2288,9 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
List<MethodInfo> methods;
base.get_method_list(&methods);
- for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
- if (E->get().name == p_method) {
- r_arghint = _make_arguments_hint(E->get(), p_argidx);
+ for (const MethodInfo &E : methods) {
+ if (E.name == p_method) {
+ r_arghint = _make_arguments_hint(E, p_argidx);
return;
}
}
@@ -2340,14 +2337,14 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
Variant::get_constructor_list(GDScriptParser::get_builtin_type(call->function_name), &constructors);
int i = 0;
- for (List<MethodInfo>::Element *E = constructors.front(); E; E = E->next()) {
- if (p_argidx >= E->get().arguments.size()) {
+ for (const MethodInfo &E : constructors) {
+ if (p_argidx >= E.arguments.size()) {
continue;
}
if (i > 0) {
r_arghint += "\n";
}
- r_arghint += _make_arguments_hint(E->get(), p_argidx);
+ r_arghint += _make_arguments_hint(E, p_argidx);
i++;
}
return;
@@ -2406,9 +2403,9 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
case GDScriptParser::COMPLETION_ANNOTATION: {
List<MethodInfo> annotations;
parser.get_annotation_list(&annotations);
- for (const List<MethodInfo>::Element *E = annotations.front(); E != nullptr; E = E->next()) {
- ScriptCodeCompletionOption option(E->get().name.substr(1), ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
- if (E->get().arguments.size() > 0) {
+ for (const MethodInfo &E : annotations) {
+ ScriptCodeCompletionOption option(E.name.substr(1), ScriptCodeCompletionOption::KIND_PLAIN_TEXT);
+ if (E.arguments.size() > 0) {
option.insert_text += "(";
}
options.insert(option.display, option);
@@ -2426,10 +2423,10 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
case GDScriptParser::COMPLETION_BUILT_IN_TYPE_CONSTANT: {
List<StringName> constants;
Variant::get_constants_for_type(completion_context.builtin_type, &constants);
- for (const List<StringName>::Element *E = constants.front(); E != nullptr; E = E->next()) {
- ScriptCodeCompletionOption option(E->get(), ScriptCodeCompletionOption::KIND_CONSTANT);
+ for (const StringName &E : constants) {
+ ScriptCodeCompletionOption option(E, ScriptCodeCompletionOption::KIND_CONSTANT);
bool valid = false;
- Variant default_value = Variant::get_constant_value(completion_context.builtin_type, E->get(), &valid);
+ Variant default_value = Variant::get_constant_value(completion_context.builtin_type, E, &valid);
if (valid) {
option.default_value = default_value;
}
@@ -2606,8 +2603,7 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
List<MethodInfo> virtual_methods;
ClassDB::get_virtual_methods(class_name, &virtual_methods);
- for (List<MethodInfo>::Element *E = virtual_methods.front(); E; E = E->next()) {
- MethodInfo &mi = E->get();
+ for (const MethodInfo &mi : virtual_methods) {
String method_hint = mi.name;
if (method_hint.find(":") != -1) {
method_hint = method_hint.get_slice(":", 0);
@@ -2656,8 +2652,8 @@ static void _find_call_arguments(GDScriptParser::CompletionContext &p_context, c
List<String> opts;
p_owner->get_argument_options("get_node", 0, &opts);
- for (List<String>::Element *E = opts.front(); E; E = E->next()) {
- String opt = E->get().strip_edges();
+ for (const String &E : opts) {
+ String opt = E.strip_edges();
if (opt.is_quoted()) {
r_forced = true;
String idopt = opt.unquote();
@@ -2799,6 +2795,7 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
if (base_type.class_type->has_member(p_symbol)) {
r_result.type = ScriptLanguage::LookupResult::RESULT_SCRIPT_LOCATION;
r_result.location = base_type.class_type->get_member(p_symbol).get_line();
+ r_result.class_path = base_type.script_path;
return OK;
}
base_type = base_type.class_type->base_type;
@@ -2841,8 +2838,8 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
List<MethodInfo> virtual_methods;
ClassDB::get_virtual_methods(class_name, &virtual_methods, true);
- for (List<MethodInfo>::Element *E = virtual_methods.front(); E; E = E->next()) {
- if (E->get().name == p_symbol) {
+ for (const MethodInfo &E : virtual_methods) {
+ if (E.name == p_symbol) {
r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_METHOD;
r_result.class_name = base_type.native_type;
r_result.class_member = p_symbol;
@@ -2860,8 +2857,8 @@ static Error _lookup_symbol_from_base(const GDScriptParser::DataType &p_base, co
List<String> constants;
ClassDB::get_integer_constant_list(class_name, &constants, true);
- for (List<String>::Element *E = constants.front(); E; E = E->next()) {
- if (E->get() == p_symbol) {
+ for (const String &E : constants) {
+ if (E == p_symbol) {
r_result.type = ScriptLanguage::LookupResult::RESULT_CLASS_CONSTANT;
r_result.class_name = base_type.native_type;
r_result.class_member = p_symbol;
diff --git a/modules/gdscript/gdscript_function.cpp b/modules/gdscript/gdscript_function.cpp
index f300d5a2c9..876c508689 100644
--- a/modules/gdscript/gdscript_function.cpp
+++ b/modules/gdscript/gdscript_function.cpp
@@ -94,8 +94,7 @@ struct _GDFKCS {
void GDScriptFunction::debug_get_stack_member_state(int p_line, List<Pair<StringName, int>> *r_stackvars) const {
int oc = 0;
Map<StringName, _GDFKC> sdmap;
- for (const List<StackDebug>::Element *E = stack_debug.front(); E; E = E->next()) {
- const StackDebug &sd = E->get();
+ for (const StackDebug &sd : stack_debug) {
if (sd.line > p_line) {
break;
}
@@ -131,10 +130,10 @@ void GDScriptFunction::debug_get_stack_member_state(int p_line, List<Pair<String
stackpositions.sort();
- for (List<_GDFKCS>::Element *E = stackpositions.front(); E; E = E->next()) {
+ for (_GDFKCS &E : stackpositions) {
Pair<StringName, int> p;
- p.first = E->get().id;
- p.second = E->get().pos;
+ p.first = E.id;
+ p.second = E.pos;
r_stackvars->push_back(p);
}
}
diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp
index e103d86b15..466ddb4b10 100644
--- a/modules/gdscript/gdscript_parser.cpp
+++ b/modules/gdscript/gdscript_parser.cpp
@@ -136,8 +136,8 @@ void GDScriptParser::cleanup() {
void GDScriptParser::get_annotation_list(List<MethodInfo> *r_annotations) const {
List<StringName> keys;
valid_annotations.get_key_list(&keys);
- for (const List<StringName>::Element *E = keys.front(); E != nullptr; E = E->next()) {
- r_annotations->push_back(valid_annotations[E->get()].info);
+ for (const StringName &E : keys) {
+ r_annotations->push_back(valid_annotations[E].info);
}
}
@@ -248,7 +248,7 @@ void GDScriptParser::push_warning(const Node *p_source, GDScriptWarning::Code p_
warning.rightmost_column = p_source->rightmost_column;
List<GDScriptWarning>::Element *before = nullptr;
- for (List<GDScriptWarning>::Element *E = warnings.front(); E != nullptr; E = E->next()) {
+ for (List<GDScriptWarning>::Element *E = warnings.front(); E; E = E->next()) {
if (E->get().start_line > warning.start_line) {
break;
}
@@ -1332,8 +1332,7 @@ GDScriptParser::AnnotationNode *GDScriptParser::parse_annotation(uint32_t p_vali
}
void GDScriptParser::clear_unused_annotations() {
- for (const List<AnnotationNode *>::Element *E = annotation_stack.front(); E != nullptr; E = E->next()) {
- AnnotationNode *annotation = E->get();
+ for (const AnnotationNode *annotation : annotation_stack) {
push_error(vformat(R"(Annotation "%s" does not precedes a valid target, so it will have no effect.)", annotation->name), annotation);
}
@@ -1796,8 +1795,8 @@ GDScriptParser::MatchBranchNode *GDScriptParser::parse_match_branch() {
List<StringName> binds;
branch->patterns[0]->binds.get_key_list(&binds);
- for (List<StringName>::Element *E = binds.front(); E != nullptr; E = E->next()) {
- SuiteNode::Local local(branch->patterns[0]->binds[E->get()], current_function);
+ for (const StringName &E : binds) {
+ SuiteNode::Local local(branch->patterns[0]->binds[E], current_function);
suite->add_local(local);
}
}
@@ -3618,7 +3617,7 @@ void GDScriptParser::TreePrinter::push_text(const String &p_text) {
printed += p_text;
}
-void GDScriptParser::TreePrinter::print_annotation(AnnotationNode *p_annotation) {
+void GDScriptParser::TreePrinter::print_annotation(const AnnotationNode *p_annotation) {
push_text(p_annotation->name);
push_text(" (");
for (int i = 0; i < p_annotation->arguments.size(); i++) {
@@ -3993,8 +3992,8 @@ void GDScriptParser::TreePrinter::print_for(ForNode *p_for) {
}
void GDScriptParser::TreePrinter::print_function(FunctionNode *p_function, const String &p_context) {
- for (const List<AnnotationNode *>::Element *E = p_function->annotations.front(); E != nullptr; E = E->next()) {
- print_annotation(E->get());
+ for (const AnnotationNode *E : p_function->annotations) {
+ print_annotation(E);
}
push_text(p_context);
push_text(" ");
@@ -4333,8 +4332,8 @@ void GDScriptParser::TreePrinter::print_unary_op(UnaryOpNode *p_unary_op) {
}
void GDScriptParser::TreePrinter::print_variable(VariableNode *p_variable) {
- for (const List<AnnotationNode *>::Element *E = p_variable->annotations.front(); E != nullptr; E = E->next()) {
- print_annotation(E->get());
+ for (const AnnotationNode *E : p_variable->annotations) {
+ print_annotation(E);
}
push_text("Variable ");
diff --git a/modules/gdscript/gdscript_parser.h b/modules/gdscript/gdscript_parser.h
index 043d87c705..6a227a55e5 100644
--- a/modules/gdscript/gdscript_parser.h
+++ b/modules/gdscript/gdscript_parser.h
@@ -1431,7 +1431,7 @@ public:
void push_line(const String &p_line = String());
void push_text(const String &p_text);
- void print_annotation(AnnotationNode *p_annotation);
+ void print_annotation(const AnnotationNode *p_annotation);
void print_array(ArrayNode *p_array);
void print_assert(AssertNode *p_assert);
void print_assignment(AssignmentNode *p_assignment);
diff --git a/modules/gdscript/gdscript_utility_functions.cpp b/modules/gdscript/gdscript_utility_functions.cpp
index 64c629662c..62531473c3 100644
--- a/modules/gdscript/gdscript_utility_functions.cpp
+++ b/modules/gdscript/gdscript_utility_functions.cpp
@@ -706,8 +706,8 @@ bool GDScriptUtilityFunctions::function_exists(const StringName &p_function) {
}
void GDScriptUtilityFunctions::get_function_list(List<StringName> *r_functions) {
- for (const List<StringName>::Element *E = utility_function_name_table.front(); E; E = E->next()) {
- r_functions->push_back(E->get());
+ for (const StringName &E : utility_function_name_table) {
+ r_functions->push_back(E);
}
}
diff --git a/modules/gdscript/language_server/gdscript_extend_parser.cpp b/modules/gdscript/language_server/gdscript_extend_parser.cpp
index e9a7bf3830..d106b3b541 100644
--- a/modules/gdscript/language_server/gdscript_extend_parser.cpp
+++ b/modules/gdscript/language_server/gdscript_extend_parser.cpp
@@ -39,8 +39,7 @@ void ExtendGDScriptParser::update_diagnostics() {
diagnostics.clear();
const List<ParserError> &errors = get_errors();
- for (const List<ParserError>::Element *E = errors.front(); E != nullptr; E = E->next()) {
- const ParserError &error = E->get();
+ for (const ParserError &error : errors) {
lsp::Diagnostic diagnostic;
diagnostic.severity = lsp::DiagnosticSeverity::Error;
diagnostic.message = error.message;
@@ -61,8 +60,7 @@ void ExtendGDScriptParser::update_diagnostics() {
}
const List<GDScriptWarning> &warnings = get_warnings();
- for (const List<GDScriptWarning>::Element *E = warnings.front(); E; E = E->next()) {
- const GDScriptWarning &warning = E->get();
+ for (const GDScriptWarning &warning : warnings) {
lsp::Diagnostic diagnostic;
diagnostic.severity = lsp::DiagnosticSeverity::Warning;
diagnostic.message = "(" + warning.get_name() + "): " + warning.get_message();
@@ -152,9 +150,9 @@ void ExtendGDScriptParser::parse_class_symbol(const GDScriptParser::ClassNode *p
}
r_symbol.kind = lsp::SymbolKind::Class;
r_symbol.deprecated = false;
- r_symbol.range.start.line = LINE_NUMBER_TO_INDEX(p_class->start_line);
- r_symbol.range.start.character = LINE_NUMBER_TO_INDEX(p_class->start_column);
- r_symbol.range.end.line = LINE_NUMBER_TO_INDEX(p_class->end_line);
+ r_symbol.range.start.line = p_class->start_line;
+ r_symbol.range.start.character = p_class->start_column;
+ r_symbol.range.end.line = lines.size();
r_symbol.selectionRange.start.line = r_symbol.range.start.line;
r_symbol.detail = "class " + r_symbol.name;
bool is_root_class = &r_symbol == &class_symbol;
@@ -167,7 +165,7 @@ void ExtendGDScriptParser::parse_class_symbol(const GDScriptParser::ClassNode *p
case ClassNode::Member::VARIABLE: {
lsp::DocumentSymbol symbol;
symbol.name = m.variable->identifier->name;
- symbol.kind = lsp::SymbolKind::Variable;
+ symbol.kind = m.variable->property == VariableNode::PropertyStyle::PROP_NONE ? lsp::SymbolKind::Variable : lsp::SymbolKind::Property;
symbol.deprecated = false;
symbol.range.start.line = LINE_NUMBER_TO_INDEX(m.variable->start_line);
symbol.range.start.character = LINE_NUMBER_TO_INDEX(m.variable->start_column);
@@ -319,7 +317,7 @@ void ExtendGDScriptParser::parse_function_symbol(const GDScriptParser::FunctionN
const String uri = get_uri();
r_symbol.name = p_func->identifier->name;
- r_symbol.kind = lsp::SymbolKind::Function;
+ r_symbol.kind = p_func->is_static ? lsp::SymbolKind::Function : lsp::SymbolKind::Method;
r_symbol.detail = "func " + String(p_func->identifier->name) + "(";
r_symbol.deprecated = false;
r_symbol.range.start.line = LINE_NUMBER_TO_INDEX(p_func->start_line);
@@ -467,8 +465,8 @@ String ExtendGDScriptParser::parse_documentation(int p_line, bool p_docs_down) {
}
String doc;
- for (List<String>::Element *E = doc_lines.front(); E; E = E->next()) {
- doc += E->get() + "\n";
+ for (const String &E : doc_lines) {
+ doc += E + "\n";
}
return doc;
}
diff --git a/modules/gdscript/language_server/gdscript_language_protocol.cpp b/modules/gdscript/language_server/gdscript_language_protocol.cpp
index 0d1f98778e..b6c48468f5 100644
--- a/modules/gdscript/language_server/gdscript_language_protocol.cpp
+++ b/modules/gdscript/language_server/gdscript_language_protocol.cpp
@@ -128,13 +128,13 @@ Error GDScriptLanguageProtocol::on_client_connected() {
peer->connection = tcp_peer;
clients.set(next_client_id, peer);
next_client_id++;
- EditorNode::get_log()->add_message("Connection Taken", EditorLog::MSG_TYPE_EDITOR);
+ EditorNode::get_log()->add_message("[LSP] Connection Taken", EditorLog::MSG_TYPE_EDITOR);
return OK;
}
void GDScriptLanguageProtocol::on_client_disconnected(const int &p_client_id) {
clients.erase(p_client_id);
- EditorNode::get_log()->add_message("Disconnected", EditorLog::MSG_TYPE_EDITOR);
+ EditorNode::get_log()->add_message("[LSP] Disconnected", EditorLog::MSG_TYPE_EDITOR);
}
String GDScriptLanguageProtocol::process_message(const String &p_text) {
diff --git a/modules/gdscript/language_server/gdscript_text_document.cpp b/modules/gdscript/language_server/gdscript_text_document.cpp
index 55aff618aa..c0013ac23a 100644
--- a/modules/gdscript/language_server/gdscript_text_document.cpp
+++ b/modules/gdscript/language_server/gdscript_text_document.cpp
@@ -42,10 +42,12 @@ void GDScriptTextDocument::_bind_methods() {
ClassDB::bind_method(D_METHOD("didOpen"), &GDScriptTextDocument::didOpen);
ClassDB::bind_method(D_METHOD("didClose"), &GDScriptTextDocument::didClose);
ClassDB::bind_method(D_METHOD("didChange"), &GDScriptTextDocument::didChange);
+ ClassDB::bind_method(D_METHOD("didSave"), &GDScriptTextDocument::didSave);
ClassDB::bind_method(D_METHOD("nativeSymbol"), &GDScriptTextDocument::nativeSymbol);
ClassDB::bind_method(D_METHOD("documentSymbol"), &GDScriptTextDocument::documentSymbol);
ClassDB::bind_method(D_METHOD("completion"), &GDScriptTextDocument::completion);
ClassDB::bind_method(D_METHOD("resolve"), &GDScriptTextDocument::resolve);
+ ClassDB::bind_method(D_METHOD("rename"), &GDScriptTextDocument::rename);
ClassDB::bind_method(D_METHOD("foldingRange"), &GDScriptTextDocument::foldingRange);
ClassDB::bind_method(D_METHOD("codeLens"), &GDScriptTextDocument::codeLens);
ClassDB::bind_method(D_METHOD("documentLink"), &GDScriptTextDocument::documentLink);
@@ -79,6 +81,20 @@ void GDScriptTextDocument::didChange(const Variant &p_param) {
sync_script_content(doc.uri, doc.text);
}
+void GDScriptTextDocument::didSave(const Variant &p_param) {
+ lsp::TextDocumentItem doc = load_document_item(p_param);
+ Dictionary dict = p_param;
+ String text = dict["text"];
+
+ sync_script_content(doc.uri, text);
+
+ /*String path = GDScriptLanguageProtocol::get_singleton()->get_workspace()->get_file_path(doc.uri);
+
+ Ref<GDScript> script = ResourceLoader::load(path);
+ script->load_source_code(path);
+ script->reload(true);*/
+}
+
lsp::TextDocumentItem GDScriptTextDocument::load_document_item(const Variant &p_param) {
lsp::TextDocumentItem doc;
Dictionary params = p_param;
@@ -157,8 +173,7 @@ Array GDScriptTextDocument::completion(const Dictionary &p_params) {
int i = 0;
arr.resize(options.size());
- for (const List<ScriptCodeCompletionOption>::Element *E = options.front(); E; E = E->next()) {
- const ScriptCodeCompletionOption &option = E->get();
+ for (const ScriptCodeCompletionOption &option : options) {
lsp::CompletionItem item;
item.label = option.display;
item.data = request_data;
@@ -216,6 +231,14 @@ Array GDScriptTextDocument::completion(const Dictionary &p_params) {
return arr;
}
+Dictionary GDScriptTextDocument::rename(const Dictionary &p_params) {
+ lsp::TextDocumentPositionParams params;
+ params.load(p_params);
+ String new_name = p_params["newName"];
+
+ return GDScriptLanguageProtocol::get_singleton()->get_workspace()->rename(params, new_name);
+}
+
Dictionary GDScriptTextDocument::resolve(const Dictionary &p_params) {
lsp::CompletionItem item;
item.load(p_params);
@@ -294,8 +317,8 @@ Array GDScriptTextDocument::documentLink(const Dictionary &p_params) {
List<lsp::DocumentLink> links;
GDScriptLanguageProtocol::get_singleton()->get_workspace()->resolve_document_links(params.textDocument.uri, links);
- for (const List<lsp::DocumentLink>::Element *E = links.front(); E; E = E->next()) {
- ret.push_back(E->get().to_json());
+ for (const lsp::DocumentLink &E : links) {
+ ret.push_back(E.to_json());
}
return ret;
}
@@ -322,8 +345,8 @@ Variant GDScriptTextDocument::hover(const Dictionary &p_params) {
Array contents;
List<const lsp::DocumentSymbol *> list;
GDScriptLanguageProtocol::get_singleton()->get_workspace()->resolve_related_symbols(params, list);
- for (List<const lsp::DocumentSymbol *>::Element *E = list.front(); E; E = E->next()) {
- if (const lsp::DocumentSymbol *s = E->get()) {
+ for (const lsp::DocumentSymbol *&E : list) {
+ if (const lsp::DocumentSymbol *s = E) {
contents.push_back(s->render().value);
}
}
@@ -406,7 +429,11 @@ GDScriptTextDocument::~GDScriptTextDocument() {
void GDScriptTextDocument::sync_script_content(const String &p_path, const String &p_content) {
String path = GDScriptLanguageProtocol::get_singleton()->get_workspace()->get_file_path(p_path);
GDScriptLanguageProtocol::get_singleton()->get_workspace()->parse_script(path, p_content);
+
EditorFileSystem::get_singleton()->update_file(path);
+ Ref<GDScript> script = ResourceLoader::load(path);
+ script->load_source_code(path);
+ script->reload(true);
}
void GDScriptTextDocument::show_native_symbol_in_editor(const String &p_symbol_id) {
@@ -430,8 +457,8 @@ Array GDScriptTextDocument::find_symbols(const lsp::TextDocumentPositionParams &
} else if (GDScriptLanguageProtocol::get_singleton()->is_smart_resolve_enabled()) {
List<const lsp::DocumentSymbol *> list;
GDScriptLanguageProtocol::get_singleton()->get_workspace()->resolve_related_symbols(p_location, list);
- for (List<const lsp::DocumentSymbol *>::Element *E = list.front(); E; E = E->next()) {
- if (const lsp::DocumentSymbol *s = E->get()) {
+ for (const lsp::DocumentSymbol *&E : list) {
+ if (const lsp::DocumentSymbol *s = E) {
if (!s->uri.is_empty()) {
lsp::Location location;
location.uri = s->uri;
diff --git a/modules/gdscript/language_server/gdscript_text_document.h b/modules/gdscript/language_server/gdscript_text_document.h
index e2987f779c..9021c84a3f 100644
--- a/modules/gdscript/language_server/gdscript_text_document.h
+++ b/modules/gdscript/language_server/gdscript_text_document.h
@@ -45,6 +45,7 @@ protected:
void didOpen(const Variant &p_param);
void didClose(const Variant &p_param);
void didChange(const Variant &p_param);
+ void didSave(const Variant &p_param);
void sync_script_content(const String &p_path, const String &p_content);
void show_native_symbol_in_editor(const String &p_symbol_id);
@@ -61,6 +62,7 @@ public:
Array documentSymbol(const Dictionary &p_params);
Array completion(const Dictionary &p_params);
Dictionary resolve(const Dictionary &p_params);
+ Dictionary rename(const Dictionary &p_params);
Array foldingRange(const Dictionary &p_params);
Array codeLens(const Dictionary &p_params);
Array documentLink(const Dictionary &p_params);
diff --git a/modules/gdscript/language_server/gdscript_workspace.cpp b/modules/gdscript/language_server/gdscript_workspace.cpp
index 1915c92cbf..148aeec47a 100644
--- a/modules/gdscript/language_server/gdscript_workspace.cpp
+++ b/modules/gdscript/language_server/gdscript_workspace.cpp
@@ -116,11 +116,40 @@ const lsp::DocumentSymbol *GDScriptWorkspace::get_script_symbol(const String &p_
return nullptr;
}
+const lsp::DocumentSymbol *GDScriptWorkspace::get_parameter_symbol(const lsp::DocumentSymbol *p_parent, const String &symbol_identifier) {
+ for (int i = 0; i < p_parent->children.size(); ++i) {
+ const lsp::DocumentSymbol *parameter_symbol = &p_parent->children[i];
+ if (!parameter_symbol->detail.is_empty() && parameter_symbol->name == symbol_identifier) {
+ return parameter_symbol;
+ }
+ }
+
+ return nullptr;
+}
+
+const lsp::DocumentSymbol *GDScriptWorkspace::get_local_symbol(const ExtendGDScriptParser *p_parser, const String &p_symbol_identifier) {
+ const lsp::DocumentSymbol *class_symbol = &p_parser->get_symbols();
+
+ for (int i = 0; i < class_symbol->children.size(); ++i) {
+ if (class_symbol->children[i].kind == lsp::SymbolKind::Function || class_symbol->children[i].kind == lsp::SymbolKind::Class) {
+ const lsp::DocumentSymbol *function_symbol = &class_symbol->children[i];
+
+ for (int l = 0; l < function_symbol->children.size(); ++l) {
+ const lsp::DocumentSymbol *local = &function_symbol->children[l];
+ if (!local->detail.is_empty() && local->name == p_symbol_identifier) {
+ return local;
+ }
+ }
+ }
+ }
+
+ return nullptr;
+}
+
void GDScriptWorkspace::reload_all_workspace_scripts() {
List<String> paths;
list_script_files("res://", paths);
- for (List<String>::Element *E = paths.front(); E; E = E->next()) {
- const String &path = E->get();
+ for (const String &path : paths) {
Error err;
String content = FileAccess::get_file_as_string(path, &err);
ERR_CONTINUE(err != OK);
@@ -232,18 +261,13 @@ Error GDScriptWorkspace::initialize() {
class_symbol.children.push_back(symbol);
}
- Vector<DocData::PropertyDoc> properties;
- properties.append_array(class_data.properties);
- const int theme_prop_start_idx = properties.size();
- properties.append_array(class_data.theme_properties);
-
for (int i = 0; i < class_data.properties.size(); i++) {
const DocData::PropertyDoc &data = class_data.properties[i];
lsp::DocumentSymbol symbol;
symbol.name = data.name;
symbol.native_class = class_name;
symbol.kind = lsp::SymbolKind::Property;
- symbol.detail = String(i >= theme_prop_start_idx ? "<Theme> var" : "var") + " " + class_name + "." + data.name;
+ symbol.detail = "var " + class_name + "." + data.name;
if (data.enumeration.length()) {
symbol.detail += ": " + data.enumeration;
} else {
@@ -253,6 +277,17 @@ Error GDScriptWorkspace::initialize() {
class_symbol.children.push_back(symbol);
}
+ for (int i = 0; i < class_data.theme_properties.size(); i++) {
+ const DocData::ThemeItemDoc &data = class_data.theme_properties[i];
+ lsp::DocumentSymbol symbol;
+ symbol.name = data.name;
+ symbol.native_class = class_name;
+ symbol.kind = lsp::SymbolKind::Property;
+ symbol.detail = "<Theme> var " + class_name + "." + data.name + ": " + data.type;
+ symbol.documentation = data.description;
+ class_symbol.children.push_back(symbol);
+ }
+
Vector<DocData::MethodDoc> methods_signals;
methods_signals.append_array(class_data.methods);
const int signal_start_idx = methods_signals.size();
@@ -351,6 +386,50 @@ Error GDScriptWorkspace::parse_script(const String &p_path, const String &p_cont
return err;
}
+Dictionary GDScriptWorkspace::rename(const lsp::TextDocumentPositionParams &p_doc_pos, const String &new_name) {
+ Error err;
+ String path = get_file_path(p_doc_pos.textDocument.uri);
+
+ lsp::WorkspaceEdit edit;
+
+ List<String> paths;
+ list_script_files("res://", paths);
+
+ const lsp::DocumentSymbol *reference_symbol = resolve_symbol(p_doc_pos);
+ if (reference_symbol) {
+ String identifier = reference_symbol->name;
+
+ for (List<String>::Element *PE = paths.front(); PE; PE = PE->next()) {
+ PackedStringArray content = FileAccess::get_file_as_string(PE->get(), &err).split("\n");
+ for (int i = 0; i < content.size(); ++i) {
+ String line = content[i];
+
+ int character = line.find(identifier);
+ while (character > -1) {
+ lsp::TextDocumentPositionParams params;
+
+ lsp::TextDocumentIdentifier text_doc;
+ text_doc.uri = get_file_uri(PE->get());
+
+ params.textDocument = text_doc;
+ params.position.line = i;
+ params.position.character = character;
+
+ const lsp::DocumentSymbol *other_symbol = resolve_symbol(params);
+
+ if (other_symbol == reference_symbol) {
+ edit.add_change(text_doc.uri, i, character, character + identifier.length(), new_name);
+ }
+
+ character = line.find(identifier, character + 1);
+ }
+ }
+ }
+ }
+
+ return edit.to_json();
+}
+
Error GDScriptWorkspace::parse_local_script(const String &p_path) {
Error err;
String content = FileAccess::get_file_as_string(p_path, &err);
@@ -479,10 +558,16 @@ const lsp::DocumentSymbol *GDScriptWorkspace::resolve_symbol(const lsp::TextDocu
String target_script_path = path;
if (!ret.script.is_null()) {
target_script_path = ret.script->get_path();
+ } else if (!ret.class_path.is_empty()) {
+ target_script_path = ret.class_path;
}
if (const ExtendGDScriptParser *target_parser = get_parse_result(target_script_path)) {
symbol = target_parser->get_symbol_defined_at_line(LINE_NUMBER_TO_INDEX(ret.location));
+
+ if (symbol && symbol->kind == lsp::SymbolKind::Function && symbol->name != symbol_identifier) {
+ symbol = get_parameter_symbol(symbol, symbol_identifier);
+ }
}
} else {
@@ -494,6 +579,10 @@ const lsp::DocumentSymbol *GDScriptWorkspace::resolve_symbol(const lsp::TextDocu
}
} else {
symbol = parser->get_member_symbol(symbol_identifier);
+
+ if (!symbol) {
+ symbol = get_local_symbol(parser, symbol_identifier);
+ }
}
}
}
@@ -559,8 +648,8 @@ const lsp::DocumentSymbol *GDScriptWorkspace::resolve_native_symbol(const lsp::N
void GDScriptWorkspace::resolve_document_links(const String &p_uri, List<lsp::DocumentLink> &r_list) {
if (const ExtendGDScriptParser *parser = get_parse_successed_script(get_file_path(p_uri))) {
const List<lsp::DocumentLink> &links = parser->get_document_links();
- for (const List<lsp::DocumentLink>::Element *E = links.front(); E; E = E->next()) {
- r_list.push_back(E->get());
+ for (const lsp::DocumentLink &E : links) {
+ r_list.push_back(E);
}
}
}
@@ -587,8 +676,7 @@ Error GDScriptWorkspace::resolve_signature(const lsp::TextDocumentPositionParams
GDScriptLanguageProtocol::get_singleton()->get_workspace()->resolve_related_symbols(text_pos, symbols);
}
- for (List<const lsp::DocumentSymbol *>::Element *E = symbols.front(); E; E = E->next()) {
- const lsp::DocumentSymbol *symbol = E->get();
+ for (const lsp::DocumentSymbol *const &symbol : symbols) {
if (symbol->kind == lsp::SymbolKind::Method || symbol->kind == lsp::SymbolKind::Function) {
lsp::SignatureInformation signature_info;
signature_info.label = symbol->detail;
diff --git a/modules/gdscript/language_server/gdscript_workspace.h b/modules/gdscript/language_server/gdscript_workspace.h
index 8b166a873c..9496677449 100644
--- a/modules/gdscript/language_server/gdscript_workspace.h
+++ b/modules/gdscript/language_server/gdscript_workspace.h
@@ -52,6 +52,8 @@ protected:
const lsp::DocumentSymbol *get_native_symbol(const String &p_class, const String &p_member = "") const;
const lsp::DocumentSymbol *get_script_symbol(const String &p_path) const;
+ const lsp::DocumentSymbol *get_parameter_symbol(const lsp::DocumentSymbol *p_parent, const String &symbol_identifier);
+ const lsp::DocumentSymbol *get_local_symbol(const ExtendGDScriptParser *p_parser, const String &p_symbol_identifier);
void reload_all_workspace_scripts();
@@ -90,6 +92,7 @@ public:
Dictionary generate_script_api(const String &p_path);
Error resolve_signature(const lsp::TextDocumentPositionParams &p_doc_pos, lsp::SignatureHelp &r_signature);
void did_delete_files(const Dictionary &p_params);
+ Dictionary rename(const lsp::TextDocumentPositionParams &p_doc_pos, const String &new_name);
GDScriptWorkspace();
~GDScriptWorkspace();
diff --git a/modules/gdscript/language_server/lsp.hpp b/modules/gdscript/language_server/lsp.hpp
index a7dcfdb22d..9ac6c6bd4e 100644
--- a/modules/gdscript/language_server/lsp.hpp
+++ b/modules/gdscript/language_server/lsp.hpp
@@ -255,6 +255,62 @@ struct TextEdit {
};
/**
+ * The edits to be applied.
+ */
+struct WorkspaceEdit {
+ /**
+ * Holds changes to existing resources.
+ */
+ Map<String, Vector<TextEdit>> changes;
+
+ _FORCE_INLINE_ Dictionary to_json() const {
+ Dictionary dict;
+
+ Dictionary out_changes;
+ for (Map<String, Vector<TextEdit>>::Element *E = changes.front(); E; E = E->next()) {
+ Array edits;
+ for (int i = 0; i < E->get().size(); ++i) {
+ Dictionary text_edit;
+ text_edit["range"] = E->get()[i].range.to_json();
+ text_edit["newText"] = E->get()[i].newText;
+ edits.push_back(text_edit);
+ }
+ out_changes[E->key()] = edits;
+ }
+ dict["changes"] = out_changes;
+
+ return dict;
+ }
+
+ _FORCE_INLINE_ void add_change(const String &uri, const int &line, const int &start_character, const int &end_character, const String &new_text) {
+ if (Map<String, Vector<TextEdit>>::Element *E = changes.find(uri)) {
+ Vector<TextEdit> edit_list = E->value();
+ for (int i = 0; i < edit_list.size(); ++i) {
+ TextEdit edit = edit_list[i];
+ if (edit.range.start.character == start_character) {
+ return;
+ }
+ }
+ }
+
+ TextEdit new_edit;
+ new_edit.newText = new_text;
+ new_edit.range.start.line = line;
+ new_edit.range.start.character = start_character;
+ new_edit.range.end.line = line;
+ new_edit.range.end.character = end_character;
+
+ if (Map<String, Vector<TextEdit>>::Element *E = changes.find(uri)) {
+ E->value().push_back(new_edit);
+ } else {
+ Vector<TextEdit> edit_list;
+ edit_list.push_back(new_edit);
+ changes.insert(uri, edit_list);
+ }
+ }
+};
+
+/**
* Represents a reference to a command.
* Provides a title which will be used to represent a command in the UI.
* Commands are identified by a string identifier.
@@ -486,7 +542,7 @@ struct TextDocumentSyncOptions {
* If present save notifications are sent to the server. If omitted the notification should not be
* sent.
*/
- bool save = false;
+ SaveOptions save;
Dictionary to_json() {
Dictionary dict;
@@ -494,7 +550,7 @@ struct TextDocumentSyncOptions {
dict["willSave"] = willSave;
dict["openClose"] = openClose;
dict["change"] = change;
- dict["save"] = save;
+ dict["save"] = save.to_json();
return dict;
}
};
@@ -1018,32 +1074,32 @@ struct CompletionList {
* A symbol kind.
*/
namespace SymbolKind {
-static const int File = 0;
-static const int Module = 1;
-static const int Namespace = 2;
-static const int Package = 3;
-static const int Class = 4;
-static const int Method = 5;
-static const int Property = 6;
-static const int Field = 7;
-static const int Constructor = 8;
-static const int Enum = 9;
-static const int Interface = 10;
-static const int Function = 11;
-static const int Variable = 12;
-static const int Constant = 13;
-static const int String = 14;
-static const int Number = 15;
-static const int Boolean = 16;
-static const int Array = 17;
-static const int Object = 18;
-static const int Key = 19;
-static const int Null = 20;
-static const int EnumMember = 21;
-static const int Struct = 22;
-static const int Event = 23;
-static const int Operator = 24;
-static const int TypeParameter = 25;
+static const int File = 1;
+static const int Module = 2;
+static const int Namespace = 3;
+static const int Package = 4;
+static const int Class = 5;
+static const int Method = 6;
+static const int Property = 7;
+static const int Field = 8;
+static const int Constructor = 9;
+static const int Enum = 10;
+static const int Interface = 11;
+static const int Function = 12;
+static const int Variable = 13;
+static const int Constant = 14;
+static const int String = 15;
+static const int Number = 16;
+static const int Boolean = 17;
+static const int Array = 18;
+static const int Object = 19;
+static const int Key = 20;
+static const int Null = 21;
+static const int EnumMember = 22;
+static const int Struct = 23;
+static const int Event = 24;
+static const int Operator = 25;
+static const int TypeParameter = 26;
}; // namespace SymbolKind
/**
diff --git a/modules/gdscript/tests/gdscript_test_runner.cpp b/modules/gdscript/tests/gdscript_test_runner.cpp
index b7faebb4ef..03a48bf071 100644
--- a/modules/gdscript/tests/gdscript_test_runner.cpp
+++ b/modules/gdscript/tests/gdscript_test_runner.cpp
@@ -295,7 +295,7 @@ void GDScriptTestRunner::handle_cmdline() {
String test_cmd = "--gdscript-test";
String gen_cmd = "--gdscript-generate-tests";
- for (List<String>::Element *E = cmdline_args.front(); E != nullptr; E = E->next()) {
+ for (List<String>::Element *E = cmdline_args.front(); E; E = E->next()) {
String &cmd = E->get();
if (cmd == test_cmd || cmd == gen_cmd) {
if (E->next() == nullptr) {
@@ -440,8 +440,8 @@ GDScriptTest::TestResult GDScriptTest::execute_test_code(bool p_is_generating) {
result.output = get_text_for_status(result.status) + "\n";
const List<GDScriptParser::ParserError> &errors = parser.get_errors();
- for (const List<GDScriptParser::ParserError>::Element *E = errors.front(); E; E = E->next()) {
- result.output += E->get().message + "\n"; // TODO: line, column?
+ for (const GDScriptParser::ParserError &E : errors) {
+ result.output += E.message + "\n"; // TODO: line, column?
break; // Only the first error since the following might be cascading.
}
if (!p_is_generating) {
@@ -459,8 +459,8 @@ GDScriptTest::TestResult GDScriptTest::execute_test_code(bool p_is_generating) {
result.output = get_text_for_status(result.status) + "\n";
const List<GDScriptParser::ParserError> &errors = parser.get_errors();
- for (const List<GDScriptParser::ParserError>::Element *E = errors.front(); E; E = E->next()) {
- result.output += E->get().message + "\n"; // TODO: line, column?
+ for (const GDScriptParser::ParserError &E : errors) {
+ result.output += E.message + "\n"; // TODO: line, column?
break; // Only the first error since the following might be cascading.
}
if (!p_is_generating) {
@@ -470,8 +470,8 @@ GDScriptTest::TestResult GDScriptTest::execute_test_code(bool p_is_generating) {
}
StringBuilder warning_string;
- for (const List<GDScriptWarning>::Element *E = parser.get_warnings().front(); E != nullptr; E = E->next()) {
- const GDScriptWarning warning = E->get();
+ for (const GDScriptWarning &E : parser.get_warnings()) {
+ const GDScriptWarning warning = E;
warning_string.append(">> WARNING");
warning_string.append("\n>> Line: ");
warning_string.append(itos(warning.start_line));
diff --git a/modules/gdscript/tests/test_gdscript.cpp b/modules/gdscript/tests/test_gdscript.cpp
index 7aa5895981..52e9d92223 100644
--- a/modules/gdscript/tests/test_gdscript.cpp
+++ b/modules/gdscript/tests/test_gdscript.cpp
@@ -113,8 +113,7 @@ static void test_parser(const String &p_code, const String &p_script_path, const
if (err != OK) {
const List<GDScriptParser::ParserError> &errors = parser.get_errors();
- for (const List<GDScriptParser::ParserError>::Element *E = errors.front(); E != nullptr; E = E->next()) {
- const GDScriptParser::ParserError &error = E->get();
+ for (const GDScriptParser::ParserError &error : errors) {
print_line(vformat("%02d:%02d: %s", error.line, error.column, error.message));
}
}
@@ -124,8 +123,7 @@ static void test_parser(const String &p_code, const String &p_script_path, const
if (err != OK) {
const List<GDScriptParser::ParserError> &errors = parser.get_errors();
- for (const List<GDScriptParser::ParserError>::Element *E = errors.front(); E != nullptr; E = E->next()) {
- const GDScriptParser::ParserError &error = E->get();
+ for (const GDScriptParser::ParserError &error : errors) {
print_line(vformat("%02d:%02d: %s", error.line, error.column, error.message));
}
}
@@ -143,8 +141,7 @@ static void test_compiler(const String &p_code, const String &p_script_path, con
if (err != OK) {
print_line("Error in parser:");
const List<GDScriptParser::ParserError> &errors = parser.get_errors();
- for (const List<GDScriptParser::ParserError>::Element *E = errors.front(); E != nullptr; E = E->next()) {
- const GDScriptParser::ParserError &error = E->get();
+ for (const GDScriptParser::ParserError &error : errors) {
print_line(vformat("%02d:%02d: %s", error.line, error.column, error.message));
}
return;
@@ -156,8 +153,7 @@ static void test_compiler(const String &p_code, const String &p_script_path, con
if (err != OK) {
print_line("Error in analyzer:");
const List<GDScriptParser::ParserError> &errors = parser.get_errors();
- for (const List<GDScriptParser::ParserError>::Element *E = errors.front(); E != nullptr; E = E->next()) {
- const GDScriptParser::ParserError &error = E->get();
+ for (const GDScriptParser::ParserError &error : errors) {
print_line(vformat("%02d:%02d: %s", error.line, error.column, error.message));
}
return;
diff --git a/modules/glslang/register_types.cpp b/modules/glslang/register_types.cpp
index 730c6b89f7..dd545ff431 100644
--- a/modules/glslang/register_types.cpp
+++ b/modules/glslang/register_types.cpp
@@ -193,7 +193,7 @@ void preregister_glslang_types() {
// initialize in case it's not initialized. This is done once per thread
// and it's safe to call multiple times
glslang::InitializeProcess();
- RenderingDevice::shader_set_compile_function(_compile_shader_glsl);
+ RenderingDevice::shader_set_compile_to_spirv_function(_compile_shader_glsl);
RenderingDevice::shader_set_get_cache_key_function(_get_cache_key_function_glsl);
}
diff --git a/modules/gltf/doc_classes/GLTFSkeleton.xml b/modules/gltf/doc_classes/GLTFSkeleton.xml
index 40563c9ac6..6e83cec252 100644
--- a/modules/gltf/doc_classes/GLTFSkeleton.xml
+++ b/modules/gltf/doc_classes/GLTFSkeleton.xml
@@ -8,50 +8,40 @@
</tutorials>
<methods>
<method name="get_bone_attachment">
- <return type="BoneAttachment3D">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="BoneAttachment3D" />
+ <argument index="0" name="idx" type="int" />
<description>
</description>
</method>
<method name="get_bone_attachment_count">
- <return type="int">
- </return>
+ <return type="int" />
<description>
</description>
</method>
<method name="get_godot_bone_node">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
</description>
</method>
<method name="get_godot_skeleton">
- <return type="Skeleton3D">
- </return>
+ <return type="Skeleton3D" />
<description>
</description>
</method>
<method name="get_unique_names">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="set_godot_bone_node">
- <return type="void">
- </return>
- <argument index="0" name="godot_bone_node" type="Dictionary">
- </argument>
+ <return type="void" />
+ <argument index="0" name="godot_bone_node" type="Dictionary" />
<description>
</description>
</method>
<method name="set_unique_names">
- <return type="void">
- </return>
- <argument index="0" name="unique_names" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="unique_names" type="Array" />
<description>
</description>
</method>
diff --git a/modules/gltf/doc_classes/GLTFSkin.xml b/modules/gltf/doc_classes/GLTFSkin.xml
index e20e127e52..107ca960cd 100644
--- a/modules/gltf/doc_classes/GLTFSkin.xml
+++ b/modules/gltf/doc_classes/GLTFSkin.xml
@@ -8,44 +8,35 @@
</tutorials>
<methods>
<method name="get_inverse_binds">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_joint_i_to_bone_i">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
</description>
</method>
<method name="get_joint_i_to_name">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
</description>
</method>
<method name="set_inverse_binds">
- <return type="void">
- </return>
- <argument index="0" name="inverse_binds" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="inverse_binds" type="Array" />
<description>
</description>
</method>
<method name="set_joint_i_to_bone_i">
- <return type="void">
- </return>
- <argument index="0" name="joint_i_to_bone_i" type="Dictionary">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_i_to_bone_i" type="Dictionary" />
<description>
</description>
</method>
<method name="set_joint_i_to_name">
- <return type="void">
- </return>
- <argument index="0" name="joint_i_to_name" type="Dictionary">
- </argument>
+ <return type="void" />
+ <argument index="0" name="joint_i_to_name" type="Dictionary" />
<description>
</description>
</method>
diff --git a/modules/gltf/doc_classes/GLTFState.xml b/modules/gltf/doc_classes/GLTFState.xml
index a7b5b7b43e..ae976fc04c 100644
--- a/modules/gltf/doc_classes/GLTFState.xml
+++ b/modules/gltf/doc_classes/GLTFState.xml
@@ -8,236 +8,185 @@
</tutorials>
<methods>
<method name="get_accessors">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_animation_player">
- <return type="AnimationPlayer">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="AnimationPlayer" />
+ <argument index="0" name="idx" type="int" />
<description>
</description>
</method>
<method name="get_animation_players_count">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
</description>
</method>
<method name="get_animations">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_buffer_views">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_cameras">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_images">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_lights">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_materials">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_meshes">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_nodes">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_scene_node">
- <return type="Node">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="idx" type="int" />
<description>
</description>
</method>
<method name="get_skeleton_to_node">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
</description>
</method>
<method name="get_skeletons">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_skins">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_textures">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_unique_animation_names">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="get_unique_names">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
</description>
</method>
<method name="set_accessors">
- <return type="void">
- </return>
- <argument index="0" name="accessors" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="accessors" type="Array" />
<description>
</description>
</method>
<method name="set_animations">
- <return type="void">
- </return>
- <argument index="0" name="animations" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="animations" type="Array" />
<description>
</description>
</method>
<method name="set_buffer_views">
- <return type="void">
- </return>
- <argument index="0" name="buffer_views" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="buffer_views" type="Array" />
<description>
</description>
</method>
<method name="set_cameras">
- <return type="void">
- </return>
- <argument index="0" name="cameras" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="cameras" type="Array" />
<description>
</description>
</method>
<method name="set_images">
- <return type="void">
- </return>
- <argument index="0" name="images" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="images" type="Array" />
<description>
</description>
</method>
<method name="set_lights">
- <return type="void">
- </return>
- <argument index="0" name="lights" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="lights" type="Array" />
<description>
</description>
</method>
<method name="set_materials">
- <return type="void">
- </return>
- <argument index="0" name="materials" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="materials" type="Array" />
<description>
</description>
</method>
<method name="set_meshes">
- <return type="void">
- </return>
- <argument index="0" name="meshes" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="meshes" type="Array" />
<description>
</description>
</method>
<method name="set_nodes">
- <return type="void">
- </return>
- <argument index="0" name="nodes" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="nodes" type="Array" />
<description>
</description>
</method>
<method name="set_skeleton_to_node">
- <return type="void">
- </return>
- <argument index="0" name="skeleton_to_node" type="Dictionary">
- </argument>
+ <return type="void" />
+ <argument index="0" name="skeleton_to_node" type="Dictionary" />
<description>
</description>
</method>
<method name="set_skeletons">
- <return type="void">
- </return>
- <argument index="0" name="skeletons" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="skeletons" type="Array" />
<description>
</description>
</method>
<method name="set_skins">
- <return type="void">
- </return>
- <argument index="0" name="skins" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="skins" type="Array" />
<description>
</description>
</method>
<method name="set_textures">
- <return type="void">
- </return>
- <argument index="0" name="textures" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="textures" type="Array" />
<description>
</description>
</method>
<method name="set_unique_animation_names">
- <return type="void">
- </return>
- <argument index="0" name="unique_animation_names" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="unique_animation_names" type="Array" />
<description>
</description>
</method>
<method name="set_unique_names">
- <return type="void">
- </return>
- <argument index="0" name="unique_names" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="unique_names" type="Array" />
<description>
</description>
</method>
diff --git a/modules/gltf/doc_classes/PackedSceneGLTF.xml b/modules/gltf/doc_classes/PackedSceneGLTF.xml
index a22111e9b7..d0136c6402 100644
--- a/modules/gltf/doc_classes/PackedSceneGLTF.xml
+++ b/modules/gltf/doc_classes/PackedSceneGLTF.xml
@@ -8,44 +8,29 @@
</tutorials>
<methods>
<method name="export_gltf">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="node" type="Node">
- </argument>
- <argument index="1" name="path" type="String">
- </argument>
- <argument index="2" name="flags" type="int" default="0">
- </argument>
- <argument index="3" name="bake_fps" type="float" default="1000.0">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="node" type="Node" />
+ <argument index="1" name="path" type="String" />
+ <argument index="2" name="flags" type="int" default="0" />
+ <argument index="3" name="bake_fps" type="float" default="1000.0" />
<description>
</description>
</method>
<method name="import_gltf_scene">
- <return type="Node">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="flags" type="int" default="0">
- </argument>
- <argument index="2" name="bake_fps" type="float" default="1000.0">
- </argument>
- <argument index="3" name="state" type="GLTFState" default="null">
- </argument>
+ <return type="Node" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="flags" type="int" default="0" />
+ <argument index="2" name="bake_fps" type="float" default="1000.0" />
+ <argument index="3" name="state" type="GLTFState" default="null" />
<description>
</description>
</method>
<method name="pack_gltf">
- <return type="void">
- </return>
- <argument index="0" name="path" type="String">
- </argument>
- <argument index="1" name="flags" type="int" default="0">
- </argument>
- <argument index="2" name="bake_fps" type="float" default="1000.0">
- </argument>
- <argument index="3" name="state" type="GLTFState" default="null">
- </argument>
+ <return type="void" />
+ <argument index="0" name="path" type="String" />
+ <argument index="1" name="flags" type="int" default="0" />
+ <argument index="2" name="bake_fps" type="float" default="1000.0" />
+ <argument index="3" name="state" type="GLTFState" default="null" />
<description>
</description>
</method>
diff --git a/modules/gltf/gltf_document.cpp b/modules/gltf/gltf_document.cpp
index 09bae884b9..be44f66423 100644
--- a/modules/gltf/gltf_document.cpp
+++ b/modules/gltf/gltf_document.cpp
@@ -2796,7 +2796,7 @@ Error GLTFDocument::_parse_meshes(Ref<GLTFState> state) {
mat = mat3d;
}
- import_mesh->add_surface(primitive, array, morphs, Dictionary(), mat, mat->get_name());
+ import_mesh->add_surface(primitive, array, morphs, Dictionary(), mat, mat.is_valid() ? mat->get_name() : String());
}
Vector<float> blend_weights;
@@ -3002,24 +3002,31 @@ Error GLTFDocument::_parse_images(Ref<GLTFState> state, const String &p_base_pat
Ref<Image> img;
+ // First we honor the mime types if they were defined.
if (mimetype == "image/png") { // Load buffer as PNG.
ERR_FAIL_COND_V(Image::_png_mem_loader_func == nullptr, ERR_UNAVAILABLE);
img = Image::_png_mem_loader_func(data_ptr, data_size);
} else if (mimetype == "image/jpeg") { // Loader buffer as JPEG.
ERR_FAIL_COND_V(Image::_jpg_mem_loader_func == nullptr, ERR_UNAVAILABLE);
img = Image::_jpg_mem_loader_func(data_ptr, data_size);
- } else {
- // We can land here if we got an URI with base64-encoded data with application/* MIME type,
- // and the optional mimeType property was not defined to tell us how to handle this data (or was invalid).
- // So let's try PNG first, then JPEG.
+ }
+
+ // If we didn't pass the above tests, we attempt loading as PNG and then
+ // JPEG directly.
+ // This covers URIs with base64-encoded data with application/* type but
+ // no optional mimeType property, or bufferViews with a bogus mimeType
+ // (e.g. `image/jpeg` but the data is actually PNG).
+ // That's not *exactly* what the spec mandates but this lets us be
+ // lenient with bogus glb files which do exist in production.
+ if (img.is_null()) { // Try PNG first.
ERR_FAIL_COND_V(Image::_png_mem_loader_func == nullptr, ERR_UNAVAILABLE);
img = Image::_png_mem_loader_func(data_ptr, data_size);
- if (img.is_null()) {
- ERR_FAIL_COND_V(Image::_jpg_mem_loader_func == nullptr, ERR_UNAVAILABLE);
- img = Image::_jpg_mem_loader_func(data_ptr, data_size);
- }
}
-
+ if (img.is_null()) { // And then JPEG.
+ ERR_FAIL_COND_V(Image::_jpg_mem_loader_func == nullptr, ERR_UNAVAILABLE);
+ img = Image::_jpg_mem_loader_func(data_ptr, data_size);
+ }
+ // Now we've done our best, fix your scenes.
if (img.is_null()) {
ERR_PRINT(vformat("glTF: Couldn't load image index '%d' with its given mimetype: %s.", i, mimetype));
state->images.push_back(Ref<Texture2D>());
@@ -5531,7 +5538,10 @@ struct EditorSceneImporterGLTFInterpolate<Quaternion> {
template <class T>
T GLTFDocument::_interpolate_track(const Vector<float> &p_times, const Vector<T> &p_values, const float p_time, const GLTFAnimation::Interpolation p_interp) {
ERR_FAIL_COND_V(!p_values.size(), T());
- ERR_FAIL_COND_V(p_times.size() != p_values.size(), p_values[0]);
+ if (p_times.size() != p_values.size()) {
+ ERR_PRINT_ONCE("The interpolated values are not corresponding to its times.");
+ return p_values[0];
+ }
//could use binary search, worth it?
int idx = -1;
for (int i = 0; i < p_times.size(); i++) {
diff --git a/modules/gridmap/doc_classes/GridMap.xml b/modules/gridmap/doc_classes/GridMap.xml
index a2c8e8eabf..8ea7384658 100644
--- a/modules/gridmap/doc_classes/GridMap.xml
+++ b/modules/gridmap/doc_classes/GridMap.xml
@@ -17,119 +17,93 @@
</tutorials>
<methods>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clear all cells.
</description>
</method>
<method name="clear_baked_meshes">
- <return type="void">
- </return>
+ <return type="void" />
<description>
</description>
</method>
<method name="get_bake_mesh_instance">
- <return type="RID">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="RID" />
+ <argument index="0" name="idx" type="int" />
<description>
</description>
</method>
<method name="get_bake_meshes">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array of [ArrayMesh]es and [Transform3D] references of all bake meshes that exist within the current GridMap.
</description>
</method>
<method name="get_cell_item" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="position" type="Vector3i">
- </argument>
+ <return type="int" />
+ <argument index="0" name="position" type="Vector3i" />
<description>
The [MeshLibrary] item index located at the given grid coordinates. If the cell is empty, [constant INVALID_CELL_ITEM] will be returned.
</description>
</method>
<method name="get_cell_item_orientation" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="position" type="Vector3i">
- </argument>
+ <return type="int" />
+ <argument index="0" name="position" type="Vector3i" />
<description>
The orientation of the cell at the given grid coordinates. [code]-1[/code] is returned if the cell is empty.
</description>
</method>
<method name="get_collision_layer_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns an individual bit on the [member collision_layer].
</description>
</method>
<method name="get_collision_mask_bit" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="bit" type="int" />
<description>
Returns an individual bit on the [member collision_mask].
</description>
</method>
<method name="get_meshes">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array of [Transform3D] and [Mesh] references corresponding to the non-empty cells in the grid. The transforms are specified in world space.
</description>
</method>
<method name="get_used_cells" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array of [Vector3] with the non-empty cell coordinates in the grid map.
</description>
</method>
<method name="make_baked_meshes">
- <return type="void">
- </return>
- <argument index="0" name="gen_lightmap_uv" type="bool" default="false">
- </argument>
- <argument index="1" name="lightmap_uv_texel_size" type="float" default="0.1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="gen_lightmap_uv" type="bool" default="false" />
+ <argument index="1" name="lightmap_uv_texel_size" type="float" default="0.1" />
<description>
</description>
</method>
<method name="map_to_world" qualifiers="const">
- <return type="Vector3">
- </return>
- <argument index="0" name="map_position" type="Vector3i">
- </argument>
+ <return type="Vector3" />
+ <argument index="0" name="map_position" type="Vector3i" />
<description>
Returns the position of a grid cell in the GridMap's local coordinate space.
</description>
</method>
<method name="resource_changed">
- <return type="void">
- </return>
- <argument index="0" name="resource" type="Resource">
- </argument>
+ <return type="void" />
+ <argument index="0" name="resource" type="Resource" />
<description>
</description>
</method>
<method name="set_cell_item">
- <return type="void">
- </return>
- <argument index="0" name="position" type="Vector3i">
- </argument>
- <argument index="1" name="item" type="int">
- </argument>
- <argument index="2" name="orientation" type="int" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="position" type="Vector3i" />
+ <argument index="1" name="item" type="int" />
+ <argument index="2" name="orientation" type="int" default="0" />
<description>
Sets the mesh index for the cell referenced by its grid coordinates.
A negative item index such as [constant INVALID_CELL_ITEM] will clear the cell.
@@ -137,46 +111,33 @@
</description>
</method>
<method name="set_clip">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <argument index="1" name="clipabove" type="bool" default="true">
- </argument>
- <argument index="2" name="floor" type="int" default="0">
- </argument>
- <argument index="3" name="axis" type="int" enum="Vector3.Axis" default="0">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enabled" type="bool" />
+ <argument index="1" name="clipabove" type="bool" default="true" />
+ <argument index="2" name="floor" type="int" default="0" />
+ <argument index="3" name="axis" type="int" enum="Vector3.Axis" default="0" />
<description>
</description>
</method>
<method name="set_collision_layer_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
Sets an individual bit on the [member collision_layer].
</description>
</method>
<method name="set_collision_mask_bit">
- <return type="void">
- </return>
- <argument index="0" name="bit" type="int">
- </argument>
- <argument index="1" name="value" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="bit" type="int" />
+ <argument index="1" name="value" type="bool" />
<description>
Sets an individual bit on the [member collision_mask].
</description>
</method>
<method name="world_to_map" qualifiers="const">
- <return type="Vector3i">
- </return>
- <argument index="0" name="world_position" type="Vector3">
- </argument>
+ <return type="Vector3i" />
+ <argument index="0" name="world_position" type="Vector3" />
<description>
Returns the coordinates of the grid cell containing the given point.
[code]pos[/code] should be in the GridMap's local coordinate space.
@@ -223,8 +184,7 @@
</members>
<signals>
<signal name="cell_size_changed">
- <argument index="0" name="cell_size" type="Vector3">
- </argument>
+ <argument index="0" name="cell_size" type="Vector3" />
<description>
Emitted when [member cell_size] changes.
</description>
diff --git a/modules/gridmap/grid_map.cpp b/modules/gridmap/grid_map.cpp
index 0cd41133f1..fea513c820 100644
--- a/modules/gridmap/grid_map.cpp
+++ b/modules/gridmap/grid_map.cpp
@@ -519,14 +519,14 @@ bool GridMap::_octant_update(const OctantKey &p_key) {
RS::get_singleton()->multimesh_set_mesh(mm, mesh_library->get_item_mesh(E->key())->get_rid());
int idx = 0;
- for (List<Pair<Transform3D, IndexKey>>::Element *F = E->get().front(); F; F = F->next()) {
- RS::get_singleton()->multimesh_instance_set_transform(mm, idx, F->get().first);
+ for (const Pair<Transform3D, IndexKey> &F : E->get()) {
+ RS::get_singleton()->multimesh_instance_set_transform(mm, idx, F.first);
#ifdef TOOLS_ENABLED
Octant::MultimeshInstance::Item it;
it.index = idx;
- it.transform = F->get().first;
- it.key = F->get().second;
+ it.transform = F.first;
+ it.key = F.second;
mmi.items.push_back(it);
#endif
diff --git a/modules/gridmap/grid_map_editor_plugin.cpp b/modules/gridmap/grid_map_editor_plugin.cpp
index 046f8c0adb..f101c43e89 100644
--- a/modules/gridmap/grid_map_editor_plugin.cpp
+++ b/modules/gridmap/grid_map_editor_plugin.cpp
@@ -497,8 +497,8 @@ void GridMapEditor::_fill_selection() {
}
void GridMapEditor::_clear_clipboard_data() {
- for (List<ClipboardItem>::Element *E = clipboard_items.front(); E; E = E->next()) {
- RenderingServer::get_singleton()->free(E->get().instance);
+ for (const ClipboardItem &E : clipboard_items) {
+ RenderingServer::get_singleton()->free(E.instance);
}
clipboard_items.clear();
@@ -552,9 +552,7 @@ void GridMapEditor::_update_paste_indicator() {
RenderingServer::get_singleton()->instance_set_transform(paste_instance, node->get_global_transform() * xf);
- for (List<ClipboardItem>::Element *E = clipboard_items.front(); E; E = E->next()) {
- ClipboardItem &item = E->get();
-
+ for (const ClipboardItem &item : clipboard_items) {
xf = Transform3D();
xf.origin = (paste_indicator.begin + (paste_indicator.current - paste_indicator.click) + center) * node->get_cell_size();
xf.basis = rot * xf.basis;
@@ -578,9 +576,7 @@ void GridMapEditor::_do_paste() {
Vector3 ofs = paste_indicator.current - paste_indicator.click;
undo_redo->create_action(TTR("GridMap Paste Selection"));
- for (List<ClipboardItem>::Element *E = clipboard_items.front(); E; E = E->next()) {
- ClipboardItem &item = E->get();
-
+ for (const ClipboardItem &item : clipboard_items) {
Vector3 position = rot.xform(item.grid_offset) + paste_indicator.begin + ofs;
Basis orm;
@@ -663,8 +659,7 @@ bool GridMapEditor::forward_spatial_input_event(Camera3D *p_camera, const Ref<In
if ((mb->get_button_index() == MOUSE_BUTTON_RIGHT && input_action == INPUT_ERASE) || (mb->get_button_index() == MOUSE_BUTTON_LEFT && input_action == INPUT_PAINT)) {
if (set_items.size()) {
undo_redo->create_action(TTR("GridMap Paint"));
- for (List<SetItem>::Element *E = set_items.front(); E; E = E->next()) {
- const SetItem &si = E->get();
+ for (const SetItem &si : set_items) {
undo_redo->add_do_method(node, "set_cell_item", si.position, si.new_value, si.new_orientation);
}
for (List<SetItem>::Element *E = set_items.back(); E; E = E->prev()) {
@@ -680,7 +675,7 @@ bool GridMapEditor::forward_spatial_input_event(Camera3D *p_camera, const Ref<In
}
if (mb->get_button_index() == MOUSE_BUTTON_LEFT && input_action == INPUT_SELECT) {
- undo_redo->create_action("GridMap Selection");
+ undo_redo->create_action(TTR("GridMap Selection"));
undo_redo->add_do_method(this, "_set_selection", selection.active, selection.begin, selection.end);
undo_redo->add_undo_method(this, "_set_selection", last_selection.active, last_selection.begin, last_selection.end);
undo_redo->commit_action();
@@ -869,8 +864,8 @@ void GridMapEditor::update_palette() {
int item = 0;
- for (List<_CGMEItemSort>::Element *E = il.front(); E; E = E->next()) {
- int id = E->get().id;
+ for (_CGMEItemSort &E : il) {
+ int id = E.id;
String name = mesh_library->get_item_name(id);
Ref<Texture2D> preview = mesh_library->get_item_preview(id);
diff --git a/modules/lightmapper_rd/lightmapper_rd.cpp b/modules/lightmapper_rd/lightmapper_rd.cpp
index b75cf6502e..fe941e25e7 100644
--- a/modules/lightmapper_rd/lightmapper_rd.cpp
+++ b/modules/lightmapper_rd/lightmapper_rd.cpp
@@ -794,7 +794,7 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
}
ERR_FAIL_COND_V(err != OK, BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES);
- RID rasterize_shader = rd->shader_create_from_bytecode(raster_shader->get_bytecode());
+ RID rasterize_shader = rd->shader_create_from_spirv(raster_shader->get_spirv_stages());
ERR_FAIL_COND_V(rasterize_shader.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); //this is a bug check, though, should not happen
@@ -945,27 +945,27 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
ERR_FAIL_COND_V(err != OK, BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES);
// Unoccluder
- RID compute_shader_unocclude = rd->shader_create_from_bytecode(compute_shader->get_bytecode("unocclude"));
+ RID compute_shader_unocclude = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("unocclude"));
ERR_FAIL_COND_V(compute_shader_unocclude.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); // internal check, should not happen
RID compute_shader_unocclude_pipeline = rd->compute_pipeline_create(compute_shader_unocclude);
// Direct light
- RID compute_shader_primary = rd->shader_create_from_bytecode(compute_shader->get_bytecode("primary"));
+ RID compute_shader_primary = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("primary"));
ERR_FAIL_COND_V(compute_shader_primary.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); // internal check, should not happen
RID compute_shader_primary_pipeline = rd->compute_pipeline_create(compute_shader_primary);
// Indirect light
- RID compute_shader_secondary = rd->shader_create_from_bytecode(compute_shader->get_bytecode("secondary"));
+ RID compute_shader_secondary = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("secondary"));
ERR_FAIL_COND_V(compute_shader_secondary.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); //internal check, should not happen
RID compute_shader_secondary_pipeline = rd->compute_pipeline_create(compute_shader_secondary);
// Dilate
- RID compute_shader_dilate = rd->shader_create_from_bytecode(compute_shader->get_bytecode("dilate"));
+ RID compute_shader_dilate = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("dilate"));
ERR_FAIL_COND_V(compute_shader_dilate.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); //internal check, should not happen
RID compute_shader_dilate_pipeline = rd->compute_pipeline_create(compute_shader_dilate);
// Light probes
- RID compute_shader_light_probes = rd->shader_create_from_bytecode(compute_shader->get_bytecode("light_probes"));
+ RID compute_shader_light_probes = rd->shader_create_from_spirv(compute_shader->get_spirv_stages("light_probes"));
ERR_FAIL_COND_V(compute_shader_light_probes.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES); //internal check, should not happen
RID compute_shader_light_probes_pipeline = rd->compute_pipeline_create(compute_shader_light_probes);
@@ -1506,11 +1506,11 @@ LightmapperRD::BakeError LightmapperRD::bake(BakeQuality p_quality, bool p_use_d
}
ERR_FAIL_COND_V(err != OK, BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES);
- RID blendseams_line_raster_shader = rd->shader_create_from_bytecode(blendseams_shader->get_bytecode("lines"));
+ RID blendseams_line_raster_shader = rd->shader_create_from_spirv(blendseams_shader->get_spirv_stages("lines"));
ERR_FAIL_COND_V(blendseams_line_raster_shader.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES);
- RID blendseams_triangle_raster_shader = rd->shader_create_from_bytecode(blendseams_shader->get_bytecode("triangles"));
+ RID blendseams_triangle_raster_shader = rd->shader_create_from_spirv(blendseams_shader->get_spirv_stages("triangles"));
ERR_FAIL_COND_V(blendseams_triangle_raster_shader.is_null(), BAKE_ERROR_LIGHTMAP_CANT_PRE_BAKE_MESHES);
diff --git a/modules/mono/.editorconfig b/modules/mono/.editorconfig
new file mode 100644
index 0000000000..c9dcd7724e
--- /dev/null
+++ b/modules/mono/.editorconfig
@@ -0,0 +1,14 @@
+[*.sln]
+indent_style = tab
+
+[*.{csproj,props,targets,nuspec,resx}]
+indent_style = space
+indent_size = 2
+
+[*.cs]
+indent_style = space
+indent_size = 4
+insert_final_newline = true
+trim_trailing_whitespace = true
+max_line_length = 120
+csharp_indent_case_contents_when_block = false
diff --git a/modules/mono/class_db_api_json.cpp b/modules/mono/class_db_api_json.cpp
index 25193a1352..0da06131af 100644
--- a/modules/mono/class_db_api_json.cpp
+++ b/modules/mono/class_db_api_json.cpp
@@ -50,8 +50,8 @@ void class_db_api_to_json(const String &p_output_file, ClassDB::APIType p_api) {
//must be alphabetically sorted for hash to compute
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- ClassDB::ClassInfo *t = ClassDB::classes.getptr(E->get());
+ for (const StringName &E : names) {
+ ClassDB::ClassInfo *t = ClassDB::classes.getptr(E);
ERR_FAIL_COND(!t);
if (t->api != p_api || !t->exposed) {
continue;
@@ -84,11 +84,11 @@ void class_db_api_to_json(const String &p_output_file, ClassDB::APIType p_api) {
Array methods;
- for (List<StringName>::Element *F = snames.front(); F; F = F->next()) {
+ for (const StringName &F : snames) {
Dictionary method_dict;
methods.push_back(method_dict);
- MethodBind *mb = t->method_map[F->get()];
+ MethodBind *mb = t->method_map[F];
method_dict["name"] = mb->get_name();
method_dict["argument_count"] = mb->get_argument_count();
method_dict["return_type"] = mb->get_argument_type(-1);
@@ -141,12 +141,12 @@ void class_db_api_to_json(const String &p_output_file, ClassDB::APIType p_api) {
Array constants;
- for (List<StringName>::Element *F = snames.front(); F; F = F->next()) {
+ for (const StringName &F : snames) {
Dictionary constant_dict;
constants.push_back(constant_dict);
- constant_dict["name"] = F->get();
- constant_dict["value"] = t->constant_map[F->get()];
+ constant_dict["name"] = F;
+ constant_dict["value"] = t->constant_map[F];
}
if (!constants.is_empty()) {
@@ -168,12 +168,12 @@ void class_db_api_to_json(const String &p_output_file, ClassDB::APIType p_api) {
Array signals;
- for (List<StringName>::Element *F = snames.front(); F; F = F->next()) {
+ for (const StringName &F : snames) {
Dictionary signal_dict;
signals.push_back(signal_dict);
- MethodInfo &mi = t->signal_map[F->get()];
- signal_dict["name"] = F->get();
+ MethodInfo &mi = t->signal_map[F];
+ signal_dict["name"] = F;
Array arguments;
signal_dict["arguments"] = arguments;
@@ -203,13 +203,13 @@ void class_db_api_to_json(const String &p_output_file, ClassDB::APIType p_api) {
Array properties;
- for (List<StringName>::Element *F = snames.front(); F; F = F->next()) {
+ for (const StringName &F : snames) {
Dictionary property_dict;
properties.push_back(property_dict);
- ClassDB::PropertySetGet *psg = t->property_setget.getptr(F->get());
+ ClassDB::PropertySetGet *psg = t->property_setget.getptr(F);
- property_dict["name"] = F->get();
+ property_dict["name"] = F;
property_dict["setter"] = psg->setter;
property_dict["getter"] = psg->getter;
}
@@ -222,15 +222,15 @@ void class_db_api_to_json(const String &p_output_file, ClassDB::APIType p_api) {
Array property_list;
//property list
- for (List<PropertyInfo>::Element *F = t->property_list.front(); F; F = F->next()) {
+ for (const PropertyInfo &F : t->property_list) {
Dictionary property_dict;
property_list.push_back(property_dict);
- property_dict["name"] = F->get().name;
- property_dict["type"] = F->get().type;
- property_dict["hint"] = F->get().hint;
- property_dict["hint_string"] = F->get().hint_string;
- property_dict["usage"] = F->get().usage;
+ property_dict["name"] = F.name;
+ property_dict["type"] = F.type;
+ property_dict["hint"] = F.hint;
+ property_dict["hint_string"] = F.hint_string;
+ property_dict["usage"] = F.usage;
}
if (!property_list.is_empty()) {
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index 80675feb3b..520262c0eb 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -145,8 +145,8 @@ void CSharpLanguage::finalize() {
finalizing = true;
// Make sure all script binding gchandles are released before finalizing GDMono
- for (Map<Object *, CSharpScriptBinding>::Element *E = script_bindings.front(); E; E = E->next()) {
- CSharpScriptBinding &script_binding = E->value();
+ for (KeyValue<Object *, CSharpScriptBinding> &E : script_bindings) {
+ CSharpScriptBinding &script_binding = E.value;
if (!script_binding.gchandle.is_released()) {
script_binding.gchandle.release();
@@ -163,8 +163,8 @@ void CSharpLanguage::finalize() {
script_bindings.clear();
#ifdef DEBUG_ENABLED
- for (Map<ObjectID, int>::Element *E = unsafe_object_references.front(); E; E = E->next()) {
- const ObjectID &id = E->key();
+ for (const KeyValue<ObjectID, int> &E : unsafe_object_references) {
+ const ObjectID &id = E.key;
Object *obj = ObjectDB::get_instance(id);
if (obj) {
@@ -864,8 +864,8 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
// We need to keep reference instances alive during reloading
List<Ref<RefCounted>> rc_instances;
- for (Map<Object *, CSharpScriptBinding>::Element *E = script_bindings.front(); E; E = E->next()) {
- CSharpScriptBinding &script_binding = E->value();
+ for (const KeyValue<Object *, CSharpScriptBinding> &E : script_bindings) {
+ const CSharpScriptBinding &script_binding = E.value;
RefCounted *rc = Object::cast_to<RefCounted>(script_binding.owner);
if (rc) {
rc_instances.push_back(Ref<RefCounted>(rc));
@@ -874,8 +874,13 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
// As scripts are going to be reloaded, must proceed without locking here
- for (List<Ref<CSharpScript>>::Element *E = scripts.front(); E; E = E->next()) {
- Ref<CSharpScript> &script = E->get();
+ for (Ref<CSharpScript> &script : scripts) {
+ // If someone removes a script from a node, deletes the script, builds, adds a script to the
+ // same node, then builds again, the script might have no path and also no script_class. In
+ // that case, we can't (and don't need to) reload it.
+ if (script->get_path().is_empty() && !script->script_class) {
+ continue;
+ }
to_reload.push_back(script);
@@ -887,8 +892,7 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
// Script::instances are deleted during managed object disposal, which happens on domain finalize.
// Only placeholders are kept. Therefore we need to keep a copy before that happens.
- for (Set<Object *>::Element *F = script->instances.front(); F; F = F->next()) {
- Object *obj = F->get();
+ for (Object *&obj : script->instances) {
script->pending_reload_instances.insert(obj->get_instance_id());
RefCounted *rc = Object::cast_to<RefCounted>(obj);
@@ -898,8 +902,8 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
}
#ifdef TOOLS_ENABLED
- for (Set<PlaceHolderScriptInstance *>::Element *F = script->placeholders.front(); F; F = F->next()) {
- Object *obj = F->get()->get_owner();
+ for (PlaceHolderScriptInstance *&script_instance : script->placeholders) {
+ Object *obj = script_instance->get_owner();
script->pending_reload_instances.insert(obj->get_instance_id());
RefCounted *rc = Object::cast_to<RefCounted>(obj);
@@ -912,9 +916,7 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
// Save state and remove script from instances
Map<ObjectID, CSharpScript::StateBackup> &owners_map = script->pending_reload_state;
- for (Set<Object *>::Element *F = script->instances.front(); F; F = F->next()) {
- Object *obj = F->get();
-
+ for (Object *&obj : script->instances) {
ERR_CONTINUE(!obj->get_script_instance());
CSharpInstance *csi = static_cast<CSharpInstance *>(obj->get_script_instance());
@@ -936,9 +938,7 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
}
// After the state of all instances is saved, clear scripts and script instances
- for (List<Ref<CSharpScript>>::Element *E = scripts.front(); E; E = E->next()) {
- Ref<CSharpScript> &script = E->get();
-
+ for (Ref<CSharpScript> &script : scripts) {
while (script->instances.front()) {
Object *obj = script->instances.front()->get();
obj->set_script(REF()); // Remove script and existing script instances (placeholder are not removed before domain reload)
@@ -951,11 +951,9 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
if (gdmono->reload_scripts_domain() != OK) {
// Failed to reload the scripts domain
// Make sure to add the scripts back to their owners before returning
- for (List<Ref<CSharpScript>>::Element *E = to_reload.front(); E; E = E->next()) {
- Ref<CSharpScript> scr = E->get();
-
- for (const Map<ObjectID, CSharpScript::StateBackup>::Element *F = scr->pending_reload_state.front(); F; F = F->next()) {
- Object *obj = ObjectDB::get_instance(F->key());
+ for (Ref<CSharpScript> &scr : to_reload) {
+ for (const KeyValue<ObjectID, CSharpScript::StateBackup> &F : scr->pending_reload_state) {
+ Object *obj = ObjectDB::get_instance(F.key);
if (!obj) {
continue;
@@ -975,8 +973,8 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
#endif
// Restore Variant properties state, it will be kept by the placeholder until the next script reloading
- for (List<Pair<StringName, Variant>>::Element *G = scr->pending_reload_state[obj_id].properties.front(); G; G = G->next()) {
- placeholder->property_set_fallback(G->get().first, G->get().second, nullptr);
+ for (const Pair<StringName, Variant> &G : scr->pending_reload_state[obj_id].properties) {
+ placeholder->property_set_fallback(G.first, G.second, nullptr);
}
scr->pending_reload_state.erase(obj_id);
@@ -988,9 +986,7 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
List<Ref<CSharpScript>> to_reload_state;
- for (List<Ref<CSharpScript>>::Element *E = to_reload.front(); E; E = E->next()) {
- Ref<CSharpScript> script = E->get();
-
+ for (Ref<CSharpScript> &script : to_reload) {
#ifdef TOOLS_ENABLED
script->exports_invalidated = true;
#endif
@@ -1043,8 +1039,7 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
StringName native_name = NATIVE_GDMONOCLASS_NAME(script->native);
{
- for (Set<ObjectID>::Element *F = script->pending_reload_instances.front(); F; F = F->next()) {
- ObjectID obj_id = F->get();
+ for (const ObjectID &obj_id : script->pending_reload_instances) {
Object *obj = ObjectDB::get_instance(obj_id);
if (!obj) {
@@ -1095,11 +1090,8 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
to_reload_state.push_back(script);
}
- for (List<Ref<CSharpScript>>::Element *E = to_reload_state.front(); E; E = E->next()) {
- Ref<CSharpScript> script = E->get();
-
- for (Set<ObjectID>::Element *F = script->pending_reload_instances.front(); F; F = F->next()) {
- ObjectID obj_id = F->get();
+ for (Ref<CSharpScript> &script : to_reload_state) {
+ for (const ObjectID &obj_id : script->pending_reload_instances) {
Object *obj = ObjectDB::get_instance(obj_id);
if (!obj) {
@@ -1113,16 +1105,16 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
CSharpScript::StateBackup &state_backup = script->pending_reload_state[obj_id];
- for (List<Pair<StringName, Variant>>::Element *G = state_backup.properties.front(); G; G = G->next()) {
- obj->get_script_instance()->set(G->get().first, G->get().second);
+ for (const Pair<StringName, Variant> &G : state_backup.properties) {
+ obj->get_script_instance()->set(G.first, G.second);
}
CSharpInstance *csi = CAST_CSHARP_INSTANCE(obj->get_script_instance());
if (csi) {
- for (List<Pair<StringName, Array>>::Element *G = state_backup.event_signals.front(); G; G = G->next()) {
- const StringName &name = G->get().first;
- const Array &serialized_data = G->get().second;
+ for (const Pair<StringName, Array> &G : state_backup.event_signals) {
+ const StringName &name = G.first;
+ const Array &serialized_data = G.second;
Map<StringName, CSharpScript::EventSignal>::Element *match = script->event_signals.find(name);
@@ -1166,9 +1158,9 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
{
MutexLock lock(ManagedCallable::instances_mutex);
- for (Map<ManagedCallable *, Array>::Element *elem = ManagedCallable::instances_pending_reload.front(); elem; elem = elem->next()) {
- ManagedCallable *managed_callable = elem->key();
- const Array &serialized_data = elem->value();
+ for (const KeyValue<ManagedCallable *, Array> &elem : ManagedCallable::instances_pending_reload) {
+ ManagedCallable *managed_callable = elem.key;
+ const Array &serialized_data = elem.value;
MonoObject *managed_serialized_data = GDMonoMarshal::variant_to_mono_object(serialized_data);
MonoDelegate *delegate = nullptr;
@@ -1312,8 +1304,8 @@ bool CSharpLanguage::debug_break(const String &p_error, bool p_allow_continue) {
}
void CSharpLanguage::_on_scripts_domain_unloaded() {
- for (Map<Object *, CSharpScriptBinding>::Element *E = script_bindings.front(); E; E = E->next()) {
- CSharpScriptBinding &script_binding = E->value();
+ for (KeyValue<Object *, CSharpScriptBinding> &E : script_bindings) {
+ CSharpScriptBinding &script_binding = E.value;
script_binding.gchandle.release();
script_binding.inited = false;
}
@@ -1738,12 +1730,12 @@ bool CSharpInstance::get(const StringName &p_name, Variant &r_ret) const {
}
void CSharpInstance::get_properties_state_for_reloading(List<Pair<StringName, Variant>> &r_state) {
- List<PropertyInfo> pinfo;
- get_property_list(&pinfo);
+ List<PropertyInfo> property_list;
+ get_property_list(&property_list);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
+ for (const PropertyInfo &prop_info : property_list) {
Pair<StringName, Variant> state_pair;
- state_pair.first = E->get().name;
+ state_pair.first = prop_info.name;
ManagedType managedType;
@@ -1766,8 +1758,8 @@ void CSharpInstance::get_event_signals_state_for_reloading(List<Pair<StringName,
MonoObject *owner_managed = get_mono_object();
ERR_FAIL_NULL(owner_managed);
- for (const Map<StringName, CSharpScript::EventSignal>::Element *E = script->event_signals.front(); E; E = E->next()) {
- const CSharpScript::EventSignal &event_signal = E->value();
+ for (const KeyValue<StringName, CSharpScript::EventSignal> &E : script->event_signals) {
+ const CSharpScript::EventSignal &event_signal = E.value;
MonoDelegate *delegate_field_value = (MonoDelegate *)event_signal.field->get_value(owner_managed);
if (!delegate_field_value) {
@@ -1794,8 +1786,8 @@ void CSharpInstance::get_event_signals_state_for_reloading(List<Pair<StringName,
}
void CSharpInstance::get_property_list(List<PropertyInfo> *p_properties) const {
- for (Map<StringName, PropertyInfo>::Element *E = script->member_info.front(); E; E = E->next()) {
- p_properties->push_back(E->value());
+ for (const KeyValue<StringName, PropertyInfo> &E : script->member_info) {
+ p_properties->push_back(E.value);
}
// Call _get_property_list
@@ -2034,8 +2026,8 @@ void CSharpInstance::mono_object_disposed_baseref(MonoObject *p_obj, bool p_is_f
}
void CSharpInstance::connect_event_signals() {
- for (const Map<StringName, CSharpScript::EventSignal>::Element *E = script->event_signals.front(); E; E = E->next()) {
- const CSharpScript::EventSignal &event_signal = E->value();
+ for (const KeyValue<StringName, CSharpScript::EventSignal> &E : script->event_signals) {
+ const CSharpScript::EventSignal &event_signal = E.value;
StringName signal_name = event_signal.field->get_name();
@@ -2049,8 +2041,7 @@ void CSharpInstance::connect_event_signals() {
}
void CSharpInstance::disconnect_event_signals() {
- for (const List<Callable>::Element *E = connected_event_signals.front(); E; E = E->next()) {
- const Callable &callable = E->get();
+ for (const Callable &callable : connected_event_signals) {
const EventSignalCallable *event_signal_callable = static_cast<const EventSignalCallable *>(callable.get_custom());
owner->disconnect(event_signal_callable->get_signal(), callable);
}
@@ -2320,12 +2311,12 @@ void CSharpScript::_update_exports_values(Map<StringName, Variant> &values, List
base_cache->_update_exports_values(values, propnames);
}
- for (Map<StringName, Variant>::Element *E = exported_members_defval_cache.front(); E; E = E->next()) {
- values[E->key()] = E->get();
+ for (const KeyValue<StringName, Variant> &E : exported_members_defval_cache) {
+ values[E.key] = E.value;
}
- for (List<PropertyInfo>::Element *E = exported_members_cache.front(); E; E = E->next()) {
- propnames.push_back(E->get());
+ for (const PropertyInfo &prop_info : exported_members_cache) {
+ propnames.push_back(prop_info);
}
}
@@ -2556,8 +2547,8 @@ bool CSharpScript::_update_exports(PlaceHolderScriptInstance *p_instance_to_upda
_update_exports_values(values, propnames);
if (changed) {
- for (Set<PlaceHolderScriptInstance *>::Element *E = placeholders.front(); E; E = E->next()) {
- E->get()->update(propnames, values);
+ for (PlaceHolderScriptInstance *&script_instance : placeholders) {
+ script_instance->update(propnames, values);
}
} else {
p_instance_to_update->update(propnames, values);
@@ -3389,11 +3380,11 @@ bool CSharpScript::has_script_signal(const StringName &p_signal) const {
}
void CSharpScript::get_script_signal_list(List<MethodInfo> *r_signals) const {
- for (const Map<StringName, Vector<SignalParameter>>::Element *E = _signals.front(); E; E = E->next()) {
+ for (const KeyValue<StringName, Vector<SignalParameter>> &E : _signals) {
MethodInfo mi;
- mi.name = E->key();
+ mi.name = E.key;
- const Vector<SignalParameter> &params = E->value();
+ const Vector<SignalParameter> &params = E.value;
for (int i = 0; i < params.size(); i++) {
const SignalParameter &param = params[i];
@@ -3408,11 +3399,11 @@ void CSharpScript::get_script_signal_list(List<MethodInfo> *r_signals) const {
r_signals->push_back(mi);
}
- for (const Map<StringName, EventSignal>::Element *E = event_signals.front(); E; E = E->next()) {
+ for (const KeyValue<StringName, EventSignal> &E : event_signals) {
MethodInfo mi;
- mi.name = E->key();
+ mi.name = E.key;
- const EventSignal &event_signal = E->value();
+ const EventSignal &event_signal = E.value;
const Vector<SignalParameter> &params = event_signal.parameters;
for (int i = 0; i < params.size(); i++) {
const SignalParameter &param = params[i];
@@ -3452,8 +3443,8 @@ Ref<Script> CSharpScript::get_base_script() const {
}
void CSharpScript::get_script_property_list(List<PropertyInfo> *p_list) const {
- for (Map<StringName, PropertyInfo>::Element *E = member_info.front(); E; E = E->next()) {
- p_list->push_back(E->value());
+ for (const KeyValue<StringName, PropertyInfo> &E : member_info) {
+ p_list->push_back(E.value);
}
}
@@ -3536,8 +3527,8 @@ CSharpScript::~CSharpScript() {
void CSharpScript::get_members(Set<StringName> *p_members) {
#if defined(TOOLS_ENABLED) || defined(DEBUG_ENABLED)
if (p_members) {
- for (Set<StringName>::Element *E = exported_members_names.front(); E; E = E->next()) {
- p_members->insert(E->get());
+ for (const StringName &member_name : exported_members_names) {
+ p_members->insert(member_name);
}
}
#endif
diff --git a/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/Godot.SourceGenerators.csproj b/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/Godot.SourceGenerators.csproj
index 224d7e5b5a..11d8e0f72b 100644
--- a/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/Godot.SourceGenerators.csproj
+++ b/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/Godot.SourceGenerators.csproj
@@ -15,8 +15,9 @@
<PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
- <GeneratePackageOnBuild>true</GeneratePackageOnBuild> <!-- Generates a package at build -->
- <IncludeBuildOutput>false</IncludeBuildOutput> <!-- Do not include the generator as a lib dependency -->
+ <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
+ <!-- Do not include the generator as a lib dependency -->
+ <IncludeBuildOutput>false</IncludeBuildOutput>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.8.0" PrivateAssets="all" />
diff --git a/modules/mono/editor/GodotTools/.gitignore b/modules/mono/editor/GodotTools/.gitignore
index 48e2f914d8..a41d1c89b5 100644
--- a/modules/mono/editor/GodotTools/.gitignore
+++ b/modules/mono/editor/GodotTools/.gitignore
@@ -353,4 +353,3 @@ healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
-
diff --git a/modules/mono/editor/GodotTools/GodotTools.IdeMessaging.CLI/Program.cs b/modules/mono/editor/GodotTools/GodotTools.IdeMessaging.CLI/Program.cs
index 4db71500da..450c4bf0cb 100644
--- a/modules/mono/editor/GodotTools/GodotTools.IdeMessaging.CLI/Program.cs
+++ b/modules/mono/editor/GodotTools/GodotTools.IdeMessaging.CLI/Program.cs
@@ -113,8 +113,7 @@ namespace GodotTools.IdeMessaging.CLI
}
}
- ExitMainLoop:
-
+ ExitMainLoop:
await forwarder.WriteLineToOutput("Event=Quit");
}
diff --git a/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/DotNetSolution.cs b/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/DotNetSolution.cs
index cc0da44a13..284e94810a 100644
--- a/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/DotNetSolution.cs
+++ b/modules/mono/editor/GodotTools/GodotTools.ProjectEditor/DotNetSolution.cs
@@ -150,8 +150,8 @@ EndProject";
{"Tools|Any CPU", "ExportRelease|Any CPU"}
};
- var regex = new Regex(string.Join("|",dict.Keys.Select(Regex.Escape)));
- var result = regex.Replace(input,m => dict[m.Value]);
+ var regex = new Regex(string.Join("|", dict.Keys.Select(Regex.Escape)));
+ var result = regex.Replace(input, m => dict[m.Value]);
if (result != input)
{
diff --git a/modules/mono/editor/GodotTools/GodotTools/Build/MSBuildPanel.cs b/modules/mono/editor/GodotTools/GodotTools/Build/MSBuildPanel.cs
index ed69c2b833..897f1b2822 100644
--- a/modules/mono/editor/GodotTools/GodotTools/Build/MSBuildPanel.cs
+++ b/modules/mono/editor/GodotTools/GodotTools/Build/MSBuildPanel.cs
@@ -11,6 +11,7 @@ namespace GodotTools.Build
{
public BuildOutputView BuildOutputView { get; private set; }
+ private MenuButton buildMenuBtn;
private Button errorsBtn;
private Button warningsBtn;
private Button viewLogBtn;
@@ -131,7 +132,7 @@ namespace GodotTools.Build
var toolBarHBox = new HBoxContainer {SizeFlagsHorizontal = (int)SizeFlags.ExpandFill};
AddChild(toolBarHBox);
- var buildMenuBtn = new MenuButton {Text = "Build", Icon = GetThemeIcon("Play", "EditorIcons")};
+ buildMenuBtn = new MenuButton {Text = "Build", Icon = GetThemeIcon("Play", "EditorIcons")};
toolBarHBox.AddChild(buildMenuBtn);
var buildMenu = buildMenuBtn.GetPopup();
@@ -177,5 +178,16 @@ namespace GodotTools.Build
BuildOutputView = new BuildOutputView();
AddChild(BuildOutputView);
}
+
+ public override void _Notification(int what)
+ {
+ base._Notification(what);
+
+ if (what == NotificationThemeChanged) {
+ buildMenuBtn.Icon = GetThemeIcon("Play", "EditorIcons");
+ errorsBtn.Icon = GetThemeIcon("StatusError", "EditorIcons");
+ warningsBtn.Icon = GetThemeIcon("NodeWarning", "EditorIcons");
+ }
+ }
}
}
diff --git a/modules/mono/editor/GodotTools/GodotTools/Export/AotBuilder.cs b/modules/mono/editor/GodotTools/GodotTools/Export/AotBuilder.cs
index 5bb8d444c2..f69307104f 100644
--- a/modules/mono/editor/GodotTools/GodotTools/Export/AotBuilder.cs
+++ b/modules/mono/editor/GodotTools/GodotTools/Export/AotBuilder.cs
@@ -577,27 +577,27 @@ MONO_AOT_MODE_LAST = 1000,
{
case OS.Platforms.Windows:
case OS.Platforms.UWP:
- {
- string arch = bits == "64" ? "x86_64" : "i686";
- return $"windows-{arch}";
- }
+ {
+ string arch = bits == "64" ? "x86_64" : "i686";
+ return $"windows-{arch}";
+ }
case OS.Platforms.MacOS:
- {
- Debug.Assert(bits == null || bits == "64");
- string arch = "x86_64";
- return $"{platform}-{arch}";
- }
+ {
+ Debug.Assert(bits == null || bits == "64");
+ string arch = "x86_64";
+ return $"{platform}-{arch}";
+ }
case OS.Platforms.LinuxBSD:
case OS.Platforms.Server:
- {
- string arch = bits == "64" ? "x86_64" : "i686";
- return $"linux-{arch}";
- }
+ {
+ string arch = bits == "64" ? "x86_64" : "i686";
+ return $"linux-{arch}";
+ }
case OS.Platforms.Haiku:
- {
- string arch = bits == "64" ? "x86_64" : "i686";
- return $"{platform}-{arch}";
- }
+ {
+ string arch = bits == "64" ? "x86_64" : "i686";
+ return $"{platform}-{arch}";
+ }
default:
throw new NotSupportedException($"Platform not supported: {platform}");
}
diff --git a/modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs b/modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs
index 270be8b6bf..0b5aa72a81 100644
--- a/modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs
+++ b/modules/mono/editor/GodotTools/GodotTools/Export/ExportPlugin.cs
@@ -76,9 +76,9 @@ namespace GodotTools.Export
GlobalDef("mono/export/aot/use_interpreter", true);
// --aot or --aot=opt1,opt2 (use 'mono --aot=help AuxAssembly.dll' to list AOT options)
- GlobalDef("mono/export/aot/extra_aot_options", new string[] { });
+ GlobalDef("mono/export/aot/extra_aot_options", Array.Empty<string>());
// --optimize/-O=opt1,opt2 (use 'mono --list-opt'' to list optimize options)
- GlobalDef("mono/export/aot/extra_optimizer_options", new string[] { });
+ GlobalDef("mono/export/aot/extra_optimizer_options", Array.Empty<string>());
GlobalDef("mono/export/aot/android_toolchain_path", "");
}
@@ -188,7 +188,7 @@ namespace GodotTools.Export
// However, at least in the case of 'WebAssembly.Net.Http' for some reason the BCL assemblies
// reference a different version even though the assembly is the same, for some weird reason.
- var wasmFrameworkAssemblies = new[] {"WebAssembly.Bindings", "WebAssembly.Net.WebSockets"};
+ var wasmFrameworkAssemblies = new[] { "WebAssembly.Bindings", "WebAssembly.Net.WebSockets" };
foreach (string thisWasmFrameworkAssemblyName in wasmFrameworkAssemblies)
{
@@ -298,8 +298,8 @@ namespace GodotTools.Export
LLVMOutputPath = "",
FullAot = platform == OS.Platforms.iOS || (bool)(ProjectSettings.GetSetting("mono/export/aot/full_aot") ?? false),
UseInterpreter = (bool)ProjectSettings.GetSetting("mono/export/aot/use_interpreter"),
- ExtraAotOptions = (string[])ProjectSettings.GetSetting("mono/export/aot/extra_aot_options") ?? new string[] { },
- ExtraOptimizerOptions = (string[])ProjectSettings.GetSetting("mono/export/aot/extra_optimizer_options") ?? new string[] { },
+ ExtraAotOptions = (string[])ProjectSettings.GetSetting("mono/export/aot/extra_aot_options") ?? Array.Empty<string>(),
+ ExtraOptimizerOptions = (string[])ProjectSettings.GetSetting("mono/export/aot/extra_optimizer_options") ?? Array.Empty<string>(),
ToolchainPath = aotToolchainPath
};
@@ -381,7 +381,7 @@ namespace GodotTools.Export
private static bool PlatformHasTemplateDir(string platform)
{
// OSX export templates are contained in a zip, so we place our custom template inside it and let Godot do the rest.
- return !new[] {OS.Platforms.MacOS, OS.Platforms.Android, OS.Platforms.iOS, OS.Platforms.HTML5}.Contains(platform);
+ return !new[] { OS.Platforms.MacOS, OS.Platforms.Android, OS.Platforms.iOS, OS.Platforms.HTML5 }.Contains(platform);
}
private static bool DeterminePlatformFromFeatures(IEnumerable<string> features, out string platform)
@@ -430,7 +430,7 @@ namespace GodotTools.Export
/// </summary>
private static bool PlatformRequiresCustomBcl(string platform)
{
- if (new[] {OS.Platforms.Android, OS.Platforms.iOS, OS.Platforms.HTML5}.Contains(platform))
+ if (new[] { OS.Platforms.Android, OS.Platforms.iOS, OS.Platforms.HTML5 }.Contains(platform))
return true;
// The 'net_4_x' BCL is not compatible between Windows and the other platforms.
diff --git a/modules/mono/editor/GodotTools/GodotTools/GodotTools.csproj b/modules/mono/editor/GodotTools/GodotTools/GodotTools.csproj
index 3f14629b11..b9aa760f4d 100644
--- a/modules/mono/editor/GodotTools/GodotTools/GodotTools.csproj
+++ b/modules/mono/editor/GodotTools/GodotTools/GodotTools.csproj
@@ -3,7 +3,8 @@
<ProjectGuid>{27B00618-A6F2-4828-B922-05CAEB08C286}</ProjectGuid>
<TargetFramework>net472</TargetFramework>
<LangVersion>7.2</LangVersion>
- <GodotApiConfiguration>Debug</GodotApiConfiguration> <!-- The Godot editor uses the Debug Godot API assemblies -->
+ <!-- The Godot editor uses the Debug Godot API assemblies -->
+ <GodotApiConfiguration>Debug</GodotApiConfiguration>
<GodotSourceRootPath>$(SolutionDir)/../../../../</GodotSourceRootPath>
<GodotOutputDataDir>$(GodotSourceRootPath)/bin/GodotSharp</GodotOutputDataDir>
<GodotApiAssembliesDir>$(GodotOutputDataDir)/Api/$(GodotApiConfiguration)</GodotApiAssembliesDir>
diff --git a/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathLocator.cs b/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathLocator.cs
index 94fc5da425..821532f759 100644
--- a/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathLocator.cs
+++ b/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathLocator.cs
@@ -47,7 +47,7 @@ namespace GodotTools.Ides.Rider
GD.PushWarning(e.Message);
}
- return new RiderInfo[0];
+ return Array.Empty<RiderInfo>();
}
private static RiderInfo[] CollectAllRiderPathsLinux()
@@ -249,7 +249,7 @@ namespace GodotTools.Ides.Rider
bool isMac)
{
if (!Directory.Exists(toolboxRiderRootPath))
- return new string[0];
+ return Array.Empty<string>();
var channelDirs = Directory.GetDirectories(toolboxRiderRootPath);
var paths = channelDirs.SelectMany(channelDir =>
@@ -295,7 +295,7 @@ namespace GodotTools.Ides.Rider
Logger.Warn($"Failed to get RiderPath from {channelDir}", e);
}
- return new string[0];
+ return Array.Empty<string>();
})
.Where(c => !string.IsNullOrEmpty(c))
.ToArray();
@@ -306,7 +306,7 @@ namespace GodotTools.Ides.Rider
{
var folder = new DirectoryInfo(Path.Combine(buildDir, dirName));
if (!folder.Exists)
- return new string[0];
+ return Array.Empty<string>();
if (!isMac)
return new[] { Path.Combine(folder.FullName, searchPattern) }.Where(File.Exists).ToArray();
diff --git a/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathManager.cs b/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathManager.cs
index ed25cdaa63..60dd565ef2 100644
--- a/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathManager.cs
+++ b/modules/mono/editor/GodotTools/GodotTools/Ides/Rider/RiderPathManager.cs
@@ -57,7 +57,7 @@ namespace GodotTools.Ides.Rider
public static bool IsExternalEditorSetToRider(EditorSettings editorSettings)
{
- return editorSettings.HasSetting(EditorPathSettingName) && IsRider((string) editorSettings.GetSetting(EditorPathSettingName));
+ return editorSettings.HasSetting(EditorPathSettingName) && IsRider((string)editorSettings.GetSetting(EditorPathSettingName));
}
public static bool IsRider(string path)
diff --git a/modules/mono/editor/GodotTools/GodotTools/Utils/OS.cs b/modules/mono/editor/GodotTools/GodotTools/Utils/OS.cs
index e745966435..4624439665 100644
--- a/modules/mono/editor/GodotTools/GodotTools/Utils/OS.cs
+++ b/modules/mono/editor/GodotTools/GodotTools/Utils/OS.cs
@@ -74,10 +74,10 @@ namespace GodotTools.Utils
}
private static readonly IEnumerable<string> LinuxBSDPlatforms =
- new[] {Names.Linux, Names.FreeBSD, Names.NetBSD, Names.BSD};
+ new[] { Names.Linux, Names.FreeBSD, Names.NetBSD, Names.BSD };
private static readonly IEnumerable<string> UnixLikePlatforms =
- new[] {Names.MacOS, Names.Server, Names.Haiku, Names.Android, Names.iOS}
+ new[] { Names.MacOS, Names.Server, Names.Haiku, Names.Android, Names.iOS }
.Concat(LinuxBSDPlatforms).ToArray();
private static readonly Lazy<bool> _isWindows = new Lazy<bool>(() => IsOS(Names.Windows));
@@ -111,13 +111,22 @@ namespace GodotTools.Utils
private static string PathWhichWindows([NotNull] string name)
{
- string[] windowsExts = Environment.GetEnvironmentVariable("PATHEXT")?.Split(PathSep) ?? new string[] { };
+ string[] windowsExts = Environment.GetEnvironmentVariable("PATHEXT")?.Split(PathSep) ?? Array.Empty<string>();
string[] pathDirs = Environment.GetEnvironmentVariable("PATH")?.Split(PathSep);
+ char[] invalidPathChars = Path.GetInvalidPathChars();
var searchDirs = new List<string>();
if (pathDirs != null)
- searchDirs.AddRange(pathDirs);
+ {
+ foreach (var pathDir in pathDirs)
+ {
+ if (pathDir.IndexOfAny(invalidPathChars) != -1)
+ continue;
+
+ searchDirs.Add(pathDir);
+ }
+ }
string nameExt = Path.GetExtension(name);
bool hasPathExt = !string.IsNullOrEmpty(nameExt) && windowsExts.Contains(nameExt, StringComparer.OrdinalIgnoreCase);
@@ -128,20 +137,29 @@ namespace GodotTools.Utils
return searchDirs.Select(dir => Path.Combine(dir, name)).FirstOrDefault(File.Exists);
return (from dir in searchDirs
- select Path.Combine(dir, name)
+ select Path.Combine(dir, name)
into path
- from ext in windowsExts
- select path + ext).FirstOrDefault(File.Exists);
+ from ext in windowsExts
+ select path + ext).FirstOrDefault(File.Exists);
}
private static string PathWhichUnix([NotNull] string name)
{
string[] pathDirs = Environment.GetEnvironmentVariable("PATH")?.Split(PathSep);
+ char[] invalidPathChars = Path.GetInvalidPathChars();
var searchDirs = new List<string>();
if (pathDirs != null)
- searchDirs.AddRange(pathDirs);
+ {
+ foreach (var pathDir in pathDirs)
+ {
+ if (pathDir.IndexOfAny(invalidPathChars) != -1)
+ continue;
+
+ searchDirs.Add(pathDir);
+ }
+ }
searchDirs.Add(System.IO.Directory.GetCurrentDirectory()); // last in the list
@@ -196,7 +214,7 @@ namespace GodotTools.Utils
startInfo.UseShellExecute = false;
- using (var process = new Process {StartInfo = startInfo})
+ using (var process = new Process { StartInfo = startInfo })
{
process.Start();
process.WaitForExit();
diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp
index 620b031ddb..632f7d61cc 100644
--- a/modules/mono/editor/bindings_generator.cpp
+++ b/modules/mono/editor/bindings_generator.cpp
@@ -416,8 +416,8 @@ String BindingsGenerator::bbcode_to_xml(const String &p_bbcode, const TypeInterf
// Try to find as global enum constant
const EnumInterface *target_ienum = nullptr;
- for (const List<EnumInterface>::Element *E = global_enums.front(); E; E = E->next()) {
- target_ienum = &E->get();
+ for (const EnumInterface &ienum : global_enums) {
+ target_ienum = &ienum;
target_iconst = find_constant_by_name(target_name, target_ienum->constants);
if (target_iconst) {
break;
@@ -455,8 +455,8 @@ String BindingsGenerator::bbcode_to_xml(const String &p_bbcode, const TypeInterf
// Try to find as enum constant in the current class
const EnumInterface *target_ienum = nullptr;
- for (const List<EnumInterface>::Element *E = target_itype->enums.front(); E; E = E->next()) {
- target_ienum = &E->get();
+ for (const EnumInterface &ienum : target_itype->enums) {
+ target_ienum = &ienum;
target_iconst = find_constant_by_name(target_name, target_ienum->constants);
if (target_iconst) {
break;
@@ -655,9 +655,7 @@ int BindingsGenerator::_determine_enum_prefix(const EnumInterface &p_ienum) {
return 0;
}
- for (const List<ConstantInterface>::Element *E = p_ienum.constants.front()->next(); E; E = E->next()) {
- const ConstantInterface &iconstant = E->get();
-
+ for (const ConstantInterface &iconstant : p_ienum.constants) {
Vector<String> parts = iconstant.name.split("_", /* p_allow_empty: */ true);
int i;
@@ -682,12 +680,10 @@ int BindingsGenerator::_determine_enum_prefix(const EnumInterface &p_ienum) {
void BindingsGenerator::_apply_prefix_to_enum_constants(BindingsGenerator::EnumInterface &p_ienum, int p_prefix_length) {
if (p_prefix_length > 0) {
- for (List<ConstantInterface>::Element *E = p_ienum.constants.front(); E; E = E->next()) {
+ for (ConstantInterface &iconstant : p_ienum.constants) {
int curr_prefix_length = p_prefix_length;
- ConstantInterface &curr_const = E->get();
-
- String constant_name = curr_const.name;
+ String constant_name = iconstant.name;
Vector<String> parts = constant_name.split("_", /* p_allow_empty: */ true);
@@ -713,15 +709,13 @@ void BindingsGenerator::_apply_prefix_to_enum_constants(BindingsGenerator::EnumI
constant_name += parts[i];
}
- curr_const.proxy_name = snake_to_pascal_case(constant_name, true);
+ iconstant.proxy_name = snake_to_pascal_case(constant_name, true);
}
}
}
void BindingsGenerator::_generate_method_icalls(const TypeInterface &p_itype) {
- for (const List<MethodInterface>::Element *E = p_itype.methods.front(); E; E = E->next()) {
- const MethodInterface &imethod = E->get();
-
+ for (const MethodInterface &imethod : p_itype.methods) {
if (imethod.is_virtual) {
continue;
}
@@ -735,8 +729,8 @@ void BindingsGenerator::_generate_method_icalls(const TypeInterface &p_itype) {
// Get arguments information
int i = 0;
- for (const List<ArgumentInterface>::Element *F = imethod.arguments.front(); F; F = F->next()) {
- const TypeInterface *arg_type = _get_type_or_placeholder(F->get().type);
+ for (const ArgumentInterface &iarg : imethod.arguments) {
+ const TypeInterface *arg_type = _get_type_or_placeholder(iarg.type);
im_sig += ", ";
im_sig += arg_type->im_type_in;
@@ -776,10 +770,10 @@ void BindingsGenerator::_generate_method_icalls(const TypeInterface &p_itype) {
if (p_itype.api_type != ClassDB::API_EDITOR) {
match->get().editor_only = false;
}
- method_icalls_map.insert(&E->get(), &match->get());
+ method_icalls_map.insert(&imethod, &match->get());
} else {
List<InternalCall>::Element *added = method_icalls.push_back(im_icall);
- method_icalls_map.insert(&E->get(), &added->get());
+ method_icalls_map.insert(&imethod, &added->get());
}
}
}
@@ -859,9 +853,7 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) {
p_output.append("namespace " BINDINGS_NAMESPACE "\n" OPEN_BLOCK);
p_output.append(INDENT1 "public static partial class " BINDINGS_GLOBAL_SCOPE_CLASS "\n" INDENT1 "{");
- for (const List<ConstantInterface>::Element *E = global_constants.front(); E; E = E->next()) {
- const ConstantInterface &iconstant = E->get();
-
+ for (const ConstantInterface &iconstant : global_constants) {
if (iconstant.const_doc && iconstant.const_doc->description.size()) {
String xml_summary = bbcode_to_xml(fix_doc_description(iconstant.const_doc->description), nullptr);
Vector<String> summary_lines = xml_summary.length() ? xml_summary.split("\n") : Vector<String>();
@@ -894,9 +886,7 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) {
// Enums
- for (List<EnumInterface>::Element *E = global_enums.front(); E; E = E->next()) {
- const EnumInterface &ienum = E->get();
-
+ for (const EnumInterface &ienum : global_enums) {
CRASH_COND(ienum.constants.is_empty());
String enum_proxy_name = ienum.cname.operator String();
@@ -921,9 +911,8 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) {
p_output.append(enum_proxy_name);
p_output.append("\n" INDENT1 OPEN_BLOCK);
- for (const List<ConstantInterface>::Element *F = ienum.constants.front(); F; F = F->next()) {
- const ConstantInterface &iconstant = F->get();
-
+ const ConstantInterface &last = ienum.constants.back()->get();
+ for (const ConstantInterface &iconstant : ienum.constants) {
if (iconstant.const_doc && iconstant.const_doc->description.size()) {
String xml_summary = bbcode_to_xml(fix_doc_description(iconstant.const_doc->description), nullptr);
Vector<String> summary_lines = xml_summary.length() ? xml_summary.split("\n") : Vector<String>();
@@ -945,7 +934,7 @@ void BindingsGenerator::_generate_global_constants(StringBuilder &p_output) {
p_output.append(iconstant.proxy_name);
p_output.append(" = ");
p_output.append(itos(iconstant.value));
- p_output.append(F != ienum.constants.back() ? ",\n" : "\n");
+ p_output.append(&iconstant != &last ? ",\n" : "\n");
}
p_output.append(INDENT1 CLOSE_BLOCK);
@@ -1053,11 +1042,11 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_proj_dir) {
cs_icalls_content.append(m_icall.im_sig + ");\n"); \
}
- for (const List<InternalCall>::Element *E = core_custom_icalls.front(); E; E = E->next()) {
- ADD_INTERNAL_CALL(E->get());
+ for (const InternalCall &internal_call : core_custom_icalls) {
+ ADD_INTERNAL_CALL(internal_call);
}
- for (const List<InternalCall>::Element *E = method_icalls.front(); E; E = E->next()) {
- ADD_INTERNAL_CALL(E->get());
+ for (const InternalCall &internal_call : method_icalls) {
+ ADD_INTERNAL_CALL(internal_call);
}
#undef ADD_INTERNAL_CALL
@@ -1161,11 +1150,11 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_proj_dir) {
cs_icalls_content.append(m_icall.im_sig + ");\n"); \
}
- for (const List<InternalCall>::Element *E = editor_custom_icalls.front(); E; E = E->next()) {
- ADD_INTERNAL_CALL(E->get());
+ for (const InternalCall &internal_call : editor_custom_icalls) {
+ ADD_INTERNAL_CALL(internal_call);
}
- for (const List<InternalCall>::Element *E = method_icalls.front(); E; E = E->next()) {
- ADD_INTERNAL_CALL(E->get());
+ for (const InternalCall &internal_call : method_icalls) {
+ ADD_INTERNAL_CALL(internal_call);
}
#undef ADD_INTERNAL_CALL
@@ -1327,9 +1316,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
// Add constants
- for (const List<ConstantInterface>::Element *E = itype.constants.front(); E; E = E->next()) {
- const ConstantInterface &iconstant = E->get();
-
+ for (const ConstantInterface &iconstant : itype.constants) {
if (iconstant.const_doc && iconstant.const_doc->description.size()) {
String xml_summary = bbcode_to_xml(fix_doc_description(iconstant.const_doc->description), &itype);
Vector<String> summary_lines = xml_summary.length() ? xml_summary.split("\n") : Vector<String>();
@@ -1360,18 +1347,15 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
// Add enums
- for (const List<EnumInterface>::Element *E = itype.enums.front(); E; E = E->next()) {
- const EnumInterface &ienum = E->get();
-
+ for (const EnumInterface &ienum : itype.enums) {
ERR_FAIL_COND_V(ienum.constants.is_empty(), ERR_BUG);
output.append(MEMBER_BEGIN "public enum ");
output.append(ienum.cname.operator String());
output.append(MEMBER_BEGIN OPEN_BLOCK);
- for (const List<ConstantInterface>::Element *F = ienum.constants.front(); F; F = F->next()) {
- const ConstantInterface &iconstant = F->get();
-
+ const ConstantInterface &last = ienum.constants.back()->get();
+ for (const ConstantInterface &iconstant : ienum.constants) {
if (iconstant.const_doc && iconstant.const_doc->description.size()) {
String xml_summary = bbcode_to_xml(fix_doc_description(iconstant.const_doc->description), &itype);
Vector<String> summary_lines = xml_summary.length() ? xml_summary.split("\n") : Vector<String>();
@@ -1393,7 +1377,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
output.append(iconstant.proxy_name);
output.append(" = ");
output.append(itos(iconstant.value));
- output.append(F != ienum.constants.back() ? ",\n" : "\n");
+ output.append(&iconstant != &last ? ",\n" : "\n");
}
output.append(INDENT2 CLOSE_BLOCK);
@@ -1401,8 +1385,7 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
// Add properties
- for (const List<PropertyInterface>::Element *E = itype.properties.front(); E; E = E->next()) {
- const PropertyInterface &iprop = E->get();
+ for (const PropertyInterface &iprop : itype.properties) {
Error prop_err = _generate_cs_property(itype, iprop, output);
ERR_FAIL_COND_V_MSG(prop_err != OK, prop_err,
"Failed to generate property '" + iprop.cname.operator String() +
@@ -1463,15 +1446,13 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
}
int method_bind_count = 0;
- for (const List<MethodInterface>::Element *E = itype.methods.front(); E; E = E->next()) {
- const MethodInterface &imethod = E->get();
+ for (const MethodInterface &imethod : itype.methods) {
Error method_err = _generate_cs_method(itype, imethod, method_bind_count, output);
ERR_FAIL_COND_V_MSG(method_err != OK, method_err,
"Failed to generate method '" + imethod.name + "' for class '" + itype.name + "'.");
}
- for (const List<SignalInterface>::Element *E = itype.signals_.front(); E; E = E->next()) {
- const SignalInterface &isignal = E->get();
+ for (const SignalInterface &isignal : itype.signals_) {
Error method_err = _generate_cs_signal(itype, isignal, output);
ERR_FAIL_COND_V_MSG(method_err != OK, method_err,
"Failed to generate signal '" + isignal.name + "' for class '" + itype.name + "'.");
@@ -1678,8 +1659,8 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
StringBuilder default_args_doc;
// Retrieve information from the arguments
- for (const List<ArgumentInterface>::Element *F = p_imethod.arguments.front(); F; F = F->next()) {
- const ArgumentInterface &iarg = F->get();
+ const ArgumentInterface &first = p_imethod.arguments.front()->get();
+ for (const ArgumentInterface &iarg : p_imethod.arguments) {
const TypeInterface *arg_type = _get_type_or_placeholder(iarg.type);
ERR_FAIL_COND_V_MSG(arg_type->is_singleton, ERR_BUG,
@@ -1699,7 +1680,7 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
// Add the current arguments to the signature
// If the argument has a default value which is not a constant, we will make it Nullable
{
- if (F != p_imethod.arguments.front()) {
+ if (&iarg != &first) {
arguments_sig += ", ";
}
@@ -1754,7 +1735,12 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
cs_in_statements += " : ";
}
- String def_arg = sformat(iarg.default_argument, arg_type->cs_type);
+ String cs_type = arg_type->cs_type;
+ if (cs_type.ends_with("[]")) {
+ cs_type = cs_type.substr(0, cs_type.length() - 2);
+ }
+
+ String def_arg = sformat(iarg.default_argument, cs_type);
cs_in_statements += def_arg;
cs_in_statements += ";\n" INDENT3;
@@ -1763,8 +1749,10 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
// Apparently the name attribute must not include the @
String param_tag_name = iarg.name.begins_with("@") ? iarg.name.substr(1, iarg.name.length()) : iarg.name;
+ // Escape < and > in the attribute default value
+ String param_def_arg = def_arg.replacen("<", "&lt;").replacen(">", "&gt;");
- default_args_doc.append(MEMBER_BEGIN "/// <param name=\"" + param_tag_name + "\">If the parameter is null, then the default value is " + def_arg + "</param>");
+ default_args_doc.append(MEMBER_BEGIN "/// <param name=\"" + param_tag_name + "\">If the parameter is null, then the default value is " + param_def_arg + "</param>");
} else {
icall_params += arg_type->cs_in.is_empty() ? iarg.name : sformat(arg_type->cs_in, iarg.name);
}
@@ -1855,9 +1843,9 @@ Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterf
p_output.append(p_imethod.name);
p_output.append("\"");
- for (const List<ArgumentInterface>::Element *F = p_imethod.arguments.front(); F; F = F->next()) {
+ for (const ArgumentInterface &iarg : p_imethod.arguments) {
p_output.append(", ");
- p_output.append(F->get().name);
+ p_output.append(iarg.name);
}
p_output.append(");\n" CLOSE_BLOCK_L2);
@@ -1899,8 +1887,8 @@ Error BindingsGenerator::_generate_cs_signal(const BindingsGenerator::TypeInterf
String arguments_sig;
// Retrieve information from the arguments
- for (const List<ArgumentInterface>::Element *F = p_isignal.arguments.front(); F; F = F->next()) {
- const ArgumentInterface &iarg = F->get();
+ const ArgumentInterface &first = p_isignal.arguments.front()->get();
+ for (const ArgumentInterface &iarg : p_isignal.arguments) {
const TypeInterface *arg_type = _get_type_or_placeholder(iarg.type);
ERR_FAIL_COND_V_MSG(arg_type->is_singleton, ERR_BUG,
@@ -1914,7 +1902,7 @@ Error BindingsGenerator::_generate_cs_signal(const BindingsGenerator::TypeInterf
// Add the current arguments to the signature
- if (F != p_isignal.arguments.front()) {
+ if (&iarg != &first) {
arguments_sig += ", ";
}
@@ -2042,8 +2030,7 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) {
String ctor_method(ICALL_PREFIX + itype.proxy_name + "_Ctor"); // Used only for derived types
- for (const List<MethodInterface>::Element *E = itype.methods.front(); E; E = E->next()) {
- const MethodInterface &imethod = E->get();
+ for (const MethodInterface &imethod : itype.methods) {
Error method_err = _generate_glue_method(itype, imethod, output);
ERR_FAIL_COND_V_MSG(method_err != OK, method_err,
"Failed to generate method '" + imethod.name + "' for class '" + itype.name + "'.");
@@ -2114,20 +2101,20 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) {
}
bool tools_sequence = false;
- for (const List<InternalCall>::Element *E = core_custom_icalls.front(); E; E = E->next()) {
+ for (const InternalCall &internal_call : core_custom_icalls) {
if (tools_sequence) {
- if (!E->get().editor_only) {
+ if (!internal_call.editor_only) {
tools_sequence = false;
output.append("#endif\n");
}
} else {
- if (E->get().editor_only) {
+ if (internal_call.editor_only) {
output.append("#ifdef TOOLS_ENABLED\n");
tools_sequence = true;
}
}
- ADD_INTERNAL_CALL_REGISTRATION(E->get());
+ ADD_INTERNAL_CALL_REGISTRATION(internal_call);
}
if (tools_sequence) {
@@ -2136,24 +2123,24 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) {
}
output.append("#ifdef TOOLS_ENABLED\n");
- for (const List<InternalCall>::Element *E = editor_custom_icalls.front(); E; E = E->next())
- ADD_INTERNAL_CALL_REGISTRATION(E->get());
+ for (const InternalCall &internal_call : editor_custom_icalls)
+ ADD_INTERNAL_CALL_REGISTRATION(internal_call);
output.append("#endif // TOOLS_ENABLED\n");
- for (const List<InternalCall>::Element *E = method_icalls.front(); E; E = E->next()) {
+ for (const InternalCall &internal_call : method_icalls) {
if (tools_sequence) {
- if (!E->get().editor_only) {
+ if (!internal_call.editor_only) {
tools_sequence = false;
output.append("#endif\n");
}
} else {
- if (E->get().editor_only) {
+ if (internal_call.editor_only) {
output.append("#ifdef TOOLS_ENABLED\n");
tools_sequence = true;
}
}
- ADD_INTERNAL_CALL_REGISTRATION(E->get());
+ ADD_INTERNAL_CALL_REGISTRATION(internal_call);
}
if (tools_sequence) {
@@ -2209,8 +2196,7 @@ Error BindingsGenerator::_generate_glue_method(const BindingsGenerator::TypeInte
// Get arguments information
int i = 0;
- for (const List<ArgumentInterface>::Element *F = p_imethod.arguments.front(); F; F = F->next()) {
- const ArgumentInterface &iarg = F->get();
+ for (const ArgumentInterface &iarg : p_imethod.arguments) {
const TypeInterface *arg_type = _get_type_or_placeholder(iarg.type);
String c_param_name = "arg" + itos(i + 1);
@@ -2623,9 +2609,7 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
Map<StringName, StringName> accessor_methods;
- for (const List<PropertyInfo>::Element *E = property_list.front(); E; E = E->next()) {
- const PropertyInfo &property = E->get();
-
+ for (const PropertyInfo &property : property_list) {
if (property.usage & PROPERTY_USAGE_GROUP || property.usage & PROPERTY_USAGE_SUBGROUP || property.usage & PROPERTY_USAGE_CATEGORY) {
continue;
}
@@ -2684,9 +2668,7 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
ClassDB::get_method_list(type_cname, &method_list, true);
method_list.sort();
- for (List<MethodInfo>::Element *E = method_list.front(); E; E = E->next()) {
- const MethodInfo &method_info = E->get();
-
+ for (const MethodInfo &method_info : method_list) {
int argc = method_info.arguments.size();
if (method_info.name.is_empty()) {
@@ -2840,9 +2822,7 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
// Classes starting with an underscore are ignored unless they're used as a property setter or getter
if (!imethod.is_virtual && imethod.name[0] == '_') {
- for (const List<PropertyInterface>::Element *F = itype.properties.front(); F; F = F->next()) {
- const PropertyInterface &iprop = F->get();
-
+ for (const PropertyInterface &iprop : itype.properties) {
if (iprop.setter == imethod.name || iprop.getter == imethod.name) {
imethod.is_internal = true;
itype.methods.push_back(imethod);
@@ -2952,8 +2932,7 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
}
EnumInterface ienum(enum_proxy_cname);
const List<StringName> &enum_constants = enum_map.get(*k);
- for (const List<StringName>::Element *E = enum_constants.front(); E; E = E->next()) {
- const StringName &constant_cname = E->get();
+ for (const StringName &constant_cname : enum_constants) {
String constant_name = constant_cname.operator String();
int *value = class_info->constant_map.getptr(constant_cname);
ERR_FAIL_NULL_V(value, false);
@@ -2989,9 +2968,8 @@ bool BindingsGenerator::_populate_object_type_interfaces() {
enum_types.insert(enum_itype.cname, enum_itype);
}
- for (const List<String>::Element *E = constants.front(); E; E = E->next()) {
- const String &constant_name = E->get();
- int *value = class_info->constant_map.getptr(StringName(E->get()));
+ for (const String &constant_name : constants) {
+ int *value = class_info->constant_map.getptr(StringName(constant_name));
ERR_FAIL_NULL_V(value, false);
ConstantInterface iconstant(constant_name, snake_to_pascal_case(constant_name, true), *value);
@@ -3099,6 +3077,9 @@ bool BindingsGenerator::_arg_default_value_from_variant(const Variant &p_val, Ar
r_iarg.default_argument = "null";
break;
case Variant::ARRAY:
+ r_iarg.default_argument = "new %s { }";
+ r_iarg.def_param_mode = ArgumentInterface::NULLABLE_REF;
+ break;
case Variant::PACKED_BYTE_ARRAY:
case Variant::PACKED_INT32_ARRAY:
case Variant::PACKED_INT64_ARRAY:
@@ -3108,7 +3089,7 @@ bool BindingsGenerator::_arg_default_value_from_variant(const Variant &p_val, Ar
case Variant::PACKED_VECTOR2_ARRAY:
case Variant::PACKED_VECTOR3_ARRAY:
case Variant::PACKED_COLOR_ARRAY:
- r_iarg.default_argument = "new %s {}";
+ r_iarg.default_argument = "Array.Empty<%s>()";
r_iarg.def_param_mode = ArgumentInterface::NULLABLE_REF;
break;
case Variant::TRANSFORM2D: {
@@ -3539,9 +3520,7 @@ void BindingsGenerator::_populate_global_constants() {
}
}
- for (List<EnumInterface>::Element *E = global_enums.front(); E; E = E->next()) {
- EnumInterface &ienum = E->get();
-
+ for (EnumInterface &ienum : global_enums) {
TypeInterface enum_itype;
enum_itype.is_enum = true;
enum_itype.name = ienum.cname.operator String();
@@ -3571,13 +3550,13 @@ void BindingsGenerator::_populate_global_constants() {
hardcoded_enums.push_back("Vector2i.Axis");
hardcoded_enums.push_back("Vector3.Axis");
hardcoded_enums.push_back("Vector3i.Axis");
- for (List<StringName>::Element *E = hardcoded_enums.front(); E; E = E->next()) {
+ for (const StringName &enum_cname : hardcoded_enums) {
// These enums are not generated and must be written manually (e.g.: Vector3.Axis)
// Here, we assume core types do not begin with underscore
TypeInterface enum_itype;
enum_itype.is_enum = true;
- enum_itype.name = E->get().operator String();
- enum_itype.cname = E->get();
+ enum_itype.name = enum_cname.operator String();
+ enum_itype.cname = enum_cname;
enum_itype.proxy_name = enum_itype.name;
TypeInterface::postsetup_enum_type(enum_itype);
enum_types.insert(enum_itype.cname, enum_itype);
diff --git a/modules/mono/editor/bindings_generator.h b/modules/mono/editor/bindings_generator.h
index 48c0e02723..a649181b20 100644
--- a/modules/mono/editor/bindings_generator.h
+++ b/modules/mono/editor/bindings_generator.h
@@ -357,9 +357,9 @@ class BindingsGenerator {
List<SignalInterface> signals_;
const MethodInterface *find_method_by_name(const StringName &p_cname) const {
- for (const List<MethodInterface>::Element *E = methods.front(); E; E = E->next()) {
- if (E->get().cname == p_cname) {
- return &E->get();
+ for (const MethodInterface &E : methods) {
+ if (E.cname == p_cname) {
+ return &E;
}
}
@@ -367,9 +367,9 @@ class BindingsGenerator {
}
const PropertyInterface *find_property_by_name(const StringName &p_cname) const {
- for (const List<PropertyInterface>::Element *E = properties.front(); E; E = E->next()) {
- if (E->get().cname == p_cname) {
- return &E->get();
+ for (const PropertyInterface &E : properties) {
+ if (E.cname == p_cname) {
+ return &E;
}
}
@@ -377,9 +377,9 @@ class BindingsGenerator {
}
const PropertyInterface *find_property_by_proxy_name(const String &p_proxy_name) const {
- for (const List<PropertyInterface>::Element *E = properties.front(); E; E = E->next()) {
- if (E->get().proxy_name == p_proxy_name) {
- return &E->get();
+ for (const PropertyInterface &E : properties) {
+ if (E.proxy_name == p_proxy_name) {
+ return &E;
}
}
@@ -387,9 +387,9 @@ class BindingsGenerator {
}
const MethodInterface *find_method_by_proxy_name(const String &p_proxy_name) const {
- for (const List<MethodInterface>::Element *E = methods.front(); E; E = E->next()) {
- if (E->get().proxy_name == p_proxy_name) {
- return &E->get();
+ for (const MethodInterface &E : methods) {
+ if (E.proxy_name == p_proxy_name) {
+ return &E;
}
}
@@ -613,9 +613,9 @@ class BindingsGenerator {
}
const ConstantInterface *find_constant_by_name(const String &p_name, const List<ConstantInterface> &p_constants) const {
- for (const List<ConstantInterface>::Element *E = p_constants.front(); E; E = E->next()) {
- if (E->get().name == p_name) {
- return &E->get();
+ for (const ConstantInterface &E : p_constants) {
+ if (E.name == p_name) {
+ return &E;
}
}
diff --git a/modules/mono/editor/code_completion.cpp b/modules/mono/editor/code_completion.cpp
index bbfba83e6f..b7b36a92d8 100644
--- a/modules/mono/editor/code_completion.cpp
+++ b/modules/mono/editor/code_completion.cpp
@@ -109,9 +109,7 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr
List<PropertyInfo> project_props;
ProjectSettings::get_singleton()->get_property_list(&project_props);
- for (List<PropertyInfo>::Element *E = project_props.front(); E; E = E->next()) {
- const PropertyInfo &prop = E->get();
-
+ for (const PropertyInfo &prop : project_props) {
if (!prop.name.begins_with("input/")) {
continue;
}
@@ -125,8 +123,8 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr
// AutoLoads
Map<StringName, ProjectSettings::AutoloadInfo> autoloads = ProjectSettings::get_singleton()->get_autoload_list();
- for (Map<StringName, ProjectSettings::AutoloadInfo>::Element *E = autoloads.front(); E; E = E->next()) {
- const ProjectSettings::AutoloadInfo &info = E->value();
+ for (const KeyValue<StringName, ProjectSettings::AutoloadInfo> &E : autoloads) {
+ const ProjectSettings::AutoloadInfo &info = E.value;
suggestions.push_back(quoted("/root/" + String(info.name)));
}
}
@@ -187,8 +185,8 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr
ClassDB::get_signal_list(native, &signals, /* p_no_inheritance: */ false);
}
- for (List<MethodInfo>::Element *E = signals.front(); E; E = E->next()) {
- const String &signal = E->get().name;
+ for (const MethodInfo &E : signals) {
+ const String &signal = E.name;
suggestions.push_back(quoted(signal));
}
} break;
@@ -199,8 +197,8 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr
List<StringName> sn;
Theme::get_default()->get_color_list(base->get_class(), &sn);
- for (List<StringName>::Element *E = sn.front(); E; E = E->next()) {
- suggestions.push_back(quoted(E->get()));
+ for (const StringName &E : sn) {
+ suggestions.push_back(quoted(E));
}
}
} break;
@@ -211,8 +209,8 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr
List<StringName> sn;
Theme::get_default()->get_constant_list(base->get_class(), &sn);
- for (List<StringName>::Element *E = sn.front(); E; E = E->next()) {
- suggestions.push_back(quoted(E->get()));
+ for (const StringName &E : sn) {
+ suggestions.push_back(quoted(E));
}
}
} break;
@@ -223,8 +221,8 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr
List<StringName> sn;
Theme::get_default()->get_font_list(base->get_class(), &sn);
- for (List<StringName>::Element *E = sn.front(); E; E = E->next()) {
- suggestions.push_back(quoted(E->get()));
+ for (const StringName &E : sn) {
+ suggestions.push_back(quoted(E));
}
}
} break;
@@ -235,8 +233,8 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr
List<StringName> sn;
Theme::get_default()->get_font_size_list(base->get_class(), &sn);
- for (List<StringName>::Element *E = sn.front(); E; E = E->next()) {
- suggestions.push_back(quoted(E->get()));
+ for (const StringName &E : sn) {
+ suggestions.push_back(quoted(E));
}
}
} break;
@@ -247,8 +245,8 @@ PackedStringArray get_code_completion(CompletionKind p_kind, const String &p_scr
List<StringName> sn;
Theme::get_default()->get_stylebox_list(base->get_class(), &sn);
- for (List<StringName>::Element *E = sn.front(); E; E = E->next()) {
- suggestions.push_back(quoted(E->get()));
+ for (const StringName &E : sn) {
+ suggestions.push_back(quoted(E));
}
}
} break;
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/AABB.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/AABB.cs
index 2b641a8937..1a3b81487f 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/AABB.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/AABB.cs
@@ -1,16 +1,10 @@
-// file: core/math/aabb.h
-// commit: 7ad14e7a3e6f87ddc450f7e34621eb5200808451
-// file: core/math/aabb.cpp
-// commit: bd282ff43f23fe845f29a3e25c8efc01bd65ffb0
-// file: core/variant_call.cpp
-// commit: 5ad9be4c24e9d7dc5672fdc42cea896622fe5685
-using System;
-using System.Runtime.InteropServices;
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
+using System.Runtime.InteropServices;
namespace Godot
{
@@ -676,20 +670,12 @@ namespace Godot
public override string ToString()
{
- return String.Format("{0}, {1}", new object[]
- {
- _position.ToString(),
- _size.ToString()
- });
+ return $"{_position}, {_size}";
}
public string ToString(string format)
{
- return String.Format("{0}, {1}", new object[]
- {
- _position.ToString(format),
- _size.ToString(format)
- });
+ return $"{_position.ToString(format)}, {_size.ToString(format)}";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Array.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Array.cs
index ce613f7ef9..f52a767018 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Array.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Array.cs
@@ -25,16 +25,30 @@ namespace Godot.Collections
}
}
+ /// <summary>
+ /// Wrapper around Godot's Array class, an array of Variant
+ /// typed elements allocated in the engine in C++. Useful when
+ /// interfacing with the engine. Otherwise prefer .NET collections
+ /// such as <see cref="System.Array"/> or <see cref="List{T}"/>.
+ /// </summary>
public class Array : IList, IDisposable
{
ArraySafeHandle safeHandle;
bool disposed = false;
+ /// <summary>
+ /// Constructs a new empty <see cref="Array"/>.
+ /// </summary>
public Array()
{
safeHandle = new ArraySafeHandle(godot_icall_Array_Ctor());
}
+ /// <summary>
+ /// Constructs a new <see cref="Array"/> from the given collection's elements.
+ /// </summary>
+ /// <param name="collection">The collection of elements to construct from.</param>
+ /// <returns>A new Godot Array.</returns>
public Array(IEnumerable collection) : this()
{
if (collection == null)
@@ -44,6 +58,11 @@ namespace Godot.Collections
Add(element);
}
+ /// <summary>
+ /// Constructs a new <see cref="Array"/> from the given objects.
+ /// </summary>
+ /// <param name="array">The objects to put in the new array.</param>
+ /// <returns>A new Godot Array.</returns>
public Array(params object[] array) : this()
{
if (array == null)
@@ -71,21 +90,40 @@ namespace Godot.Collections
return safeHandle.DangerousGetHandle();
}
+ /// <summary>
+ /// Duplicates this <see cref="Array"/>.
+ /// </summary>
+ /// <param name="deep">If true, performs a deep copy.</param>
+ /// <returns>A new Godot Array.</returns>
public Array Duplicate(bool deep = false)
{
return new Array(godot_icall_Array_Duplicate(GetPtr(), deep));
}
+ /// <summary>
+ /// Resizes this <see cref="Array"/> to the given size.
+ /// </summary>
+ /// <param name="newSize">The new size of the array.</param>
+ /// <returns><see cref="Error.Ok"/> if successful, or an error code.</returns>
public Error Resize(int newSize)
{
return godot_icall_Array_Resize(GetPtr(), newSize);
}
+ /// <summary>
+ /// Shuffles the contents of this <see cref="Array"/> into a random order.
+ /// </summary>
public void Shuffle()
{
godot_icall_Array_Shuffle(GetPtr());
}
+ /// <summary>
+ /// Concatenates these two <see cref="Array"/>s.
+ /// </summary>
+ /// <param name="left">The first array.</param>
+ /// <param name="right">The second array.</param>
+ /// <returns>A new Godot Array with the contents of both arrays.</returns>
public static Array operator +(Array left, Array right)
{
return new Array(godot_icall_Array_Concatenate(left.GetPtr(), right.GetPtr()));
@@ -93,6 +131,9 @@ namespace Godot.Collections
// IDisposable
+ /// <summary>
+ /// Disposes of this <see cref="Array"/>.
+ /// </summary>
public void Dispose()
{
if (disposed)
@@ -109,38 +150,90 @@ namespace Godot.Collections
// IList
- public bool IsReadOnly => false;
+ bool IList.IsReadOnly => false;
- public bool IsFixedSize => false;
+ bool IList.IsFixedSize => false;
+ /// <summary>
+ /// Returns the object at the given index.
+ /// </summary>
+ /// <value>The object at the given index.</value>
public object this[int index]
{
get => godot_icall_Array_At(GetPtr(), index);
set => godot_icall_Array_SetAt(GetPtr(), index, value);
}
+ /// <summary>
+ /// Adds an object to the end of this <see cref="Array"/>.
+ /// This is the same as `append` or `push_back` in GDScript.
+ /// </summary>
+ /// <param name="value">The object to add.</param>
+ /// <returns>The new size after adding the object.</returns>
public int Add(object value) => godot_icall_Array_Add(GetPtr(), value);
+ /// <summary>
+ /// Checks if this <see cref="Array"/> contains the given object.
+ /// </summary>
+ /// <param name="value">The item to look for.</param>
+ /// <returns>Whether or not this array contains the given object.</returns>
public bool Contains(object value) => godot_icall_Array_Contains(GetPtr(), value);
+ /// <summary>
+ /// Erases all items from this <see cref="Array"/>.
+ /// </summary>
public void Clear() => godot_icall_Array_Clear(GetPtr());
+ /// <summary>
+ /// Searches this <see cref="Array"/> for an object
+ /// and returns its index or -1 if not found.
+ /// </summary>
+ /// <param name="value">The object to search for.</param>
+ /// <returns>The index of the object, or -1 if not found.</returns>
public int IndexOf(object value) => godot_icall_Array_IndexOf(GetPtr(), value);
+ /// <summary>
+ /// Inserts a new object at a given position in the array.
+ /// The position must be a valid position of an existing item,
+ /// or the position at the end of the array.
+ /// Existing items will be moved to the right.
+ /// </summary>
+ /// <param name="index">The index to insert at.</param>
+ /// <param name="value">The object to insert.</param>
public void Insert(int index, object value) => godot_icall_Array_Insert(GetPtr(), index, value);
+ /// <summary>
+ /// Removes the first occurrence of the specified value
+ /// from this <see cref="Array"/>.
+ /// </summary>
+ /// <param name="value">The value to remove.</param>
public void Remove(object value) => godot_icall_Array_Remove(GetPtr(), value);
+ /// <summary>
+ /// Removes an element from this <see cref="Array"/> by index.
+ /// </summary>
+ /// <param name="index">The index of the element to remove.</param>
public void RemoveAt(int index) => godot_icall_Array_RemoveAt(GetPtr(), index);
// ICollection
+ /// <summary>
+ /// Returns the number of elements in this <see cref="Array"/>.
+ /// This is also known as the size or length of the array.
+ /// </summary>
+ /// <returns>The number of elements.</returns>
public int Count => godot_icall_Array_Count(GetPtr());
- public object SyncRoot => this;
+ object ICollection.SyncRoot => this;
- public bool IsSynchronized => false;
+ bool ICollection.IsSynchronized => false;
+ /// <summary>
+ /// Copies the elements of this <see cref="Array"/> to the given
+ /// untyped C# array, starting at the given index.
+ /// </summary>
+ /// <param name="array">The array to copy to.</param>
+ /// <param name="index">The index to start at.</param>
public void CopyTo(System.Array array, int index)
{
if (array == null)
@@ -155,6 +248,10 @@ namespace Godot.Collections
// IEnumerable
+ /// <summary>
+ /// Gets an enumerator for this <see cref="Array"/>.
+ /// </summary>
+ /// <returns>An enumerator.</returns>
public IEnumerator GetEnumerator()
{
int count = Count;
@@ -165,6 +262,10 @@ namespace Godot.Collections
}
}
+ /// <summary>
+ /// Converts this <see cref="Array"/> to a string.
+ /// </summary>
+ /// <returns>A string representation of this array.</returns>
public override string ToString()
{
return godot_icall_Array_ToString(GetPtr());
@@ -234,6 +335,13 @@ namespace Godot.Collections
internal extern static string godot_icall_Array_ToString(IntPtr ptr);
}
+ /// <summary>
+ /// Typed wrapper around Godot's Array class, an array of Variant
+ /// typed elements allocated in the engine in C++. Useful when
+ /// interfacing with the engine. Otherwise prefer .NET collections
+ /// such as arrays or <see cref="List{T}"/>.
+ /// </summary>
+ /// <typeparam name="T">The type of the array.</typeparam>
public class Array<T> : IList<T>, ICollection<T>, IEnumerable<T>
{
Array objectArray;
@@ -246,11 +354,19 @@ namespace Godot.Collections
Array.godot_icall_Array_Generic_GetElementTypeInfo(typeof(T), out elemTypeEncoding, out elemTypeClass);
}
+ /// <summary>
+ /// Constructs a new empty <see cref="Array{T}"/>.
+ /// </summary>
public Array()
{
objectArray = new Array();
}
+ /// <summary>
+ /// Constructs a new <see cref="Array{T}"/> from the given collection's elements.
+ /// </summary>
+ /// <param name="collection">The collection of elements to construct from.</param>
+ /// <returns>A new Godot Array.</returns>
public Array(IEnumerable<T> collection)
{
if (collection == null)
@@ -259,6 +375,11 @@ namespace Godot.Collections
objectArray = new Array(collection);
}
+ /// <summary>
+ /// Constructs a new <see cref="Array{T}"/> from the given items.
+ /// </summary>
+ /// <param name="array">The items to put in the new array.</param>
+ /// <returns>A new Godot Array.</returns>
public Array(params T[] array) : this()
{
if (array == null)
@@ -268,6 +389,10 @@ namespace Godot.Collections
objectArray = new Array(array);
}
+ /// <summary>
+ /// Constructs a typed <see cref="Array{T}"/> from an untyped <see cref="Array"/>.
+ /// </summary>
+ /// <param name="array">The untyped array to construct from.</param>
public Array(Array array)
{
objectArray = array;
@@ -288,26 +413,49 @@ namespace Godot.Collections
return objectArray.GetPtr();
}
+ /// <summary>
+ /// Converts this typed <see cref="Array{T}"/> to an untyped <see cref="Array"/>.
+ /// </summary>
+ /// <param name="from">The typed array to convert.</param>
public static explicit operator Array(Array<T> from)
{
return from.objectArray;
}
+ /// <summary>
+ /// Duplicates this <see cref="Array{T}"/>.
+ /// </summary>
+ /// <param name="deep">If true, performs a deep copy.</param>
+ /// <returns>A new Godot Array.</returns>
public Array<T> Duplicate(bool deep = false)
{
return new Array<T>(objectArray.Duplicate(deep));
}
+ /// <summary>
+ /// Resizes this <see cref="Array{T}"/> to the given size.
+ /// </summary>
+ /// <param name="newSize">The new size of the array.</param>
+ /// <returns><see cref="Error.Ok"/> if successful, or an error code.</returns>
public Error Resize(int newSize)
{
return objectArray.Resize(newSize);
}
+ /// <summary>
+ /// Shuffles the contents of this <see cref="Array{T}"/> into a random order.
+ /// </summary>
public void Shuffle()
{
objectArray.Shuffle();
}
+ /// <summary>
+ /// Concatenates these two <see cref="Array{T}"/>s.
+ /// </summary>
+ /// <param name="left">The first array.</param>
+ /// <param name="right">The second array.</param>
+ /// <returns>A new Godot Array with the contents of both arrays.</returns>
public static Array<T> operator +(Array<T> left, Array<T> right)
{
return new Array<T>(left.objectArray + right.objectArray);
@@ -315,22 +463,44 @@ namespace Godot.Collections
// IList<T>
+ /// <summary>
+ /// Returns the value at the given index.
+ /// </summary>
+ /// <value>The value at the given index.</value>
public T this[int index]
{
get { return (T)Array.godot_icall_Array_At_Generic(GetPtr(), index, elemTypeEncoding, elemTypeClass); }
set { objectArray[index] = value; }
}
+ /// <summary>
+ /// Searches this <see cref="Array{T}"/> for an item
+ /// and returns its index or -1 if not found.
+ /// </summary>
+ /// <param name="item">The item to search for.</param>
+ /// <returns>The index of the item, or -1 if not found.</returns>
public int IndexOf(T item)
{
return objectArray.IndexOf(item);
}
+ /// <summary>
+ /// Inserts a new item at a given position in the <see cref="Array{T}"/>.
+ /// The position must be a valid position of an existing item,
+ /// or the position at the end of the array.
+ /// Existing items will be moved to the right.
+ /// </summary>
+ /// <param name="index">The index to insert at.</param>
+ /// <param name="item">The item to insert.</param>
public void Insert(int index, T item)
{
objectArray.Insert(index, item);
}
+ /// <summary>
+ /// Removes an element from this <see cref="Array{T}"/> by index.
+ /// </summary>
+ /// <param name="index">The index of the element to remove.</param>
public void RemoveAt(int index)
{
objectArray.RemoveAt(index);
@@ -338,31 +508,53 @@ namespace Godot.Collections
// ICollection<T>
+ /// <summary>
+ /// Returns the number of elements in this <see cref="Array{T}"/>.
+ /// This is also known as the size or length of the array.
+ /// </summary>
+ /// <returns>The number of elements.</returns>
public int Count
{
get { return objectArray.Count; }
}
- public bool IsReadOnly
- {
- get { return objectArray.IsReadOnly; }
- }
+ bool ICollection<T>.IsReadOnly => false;
+ /// <summary>
+ /// Adds an item to the end of this <see cref="Array{T}"/>.
+ /// This is the same as `append` or `push_back` in GDScript.
+ /// </summary>
+ /// <param name="item">The item to add.</param>
+ /// <returns>The new size after adding the item.</returns>
public void Add(T item)
{
objectArray.Add(item);
}
+ /// <summary>
+ /// Erases all items from this <see cref="Array{T}"/>.
+ /// </summary>
public void Clear()
{
objectArray.Clear();
}
+ /// <summary>
+ /// Checks if this <see cref="Array{T}"/> contains the given item.
+ /// </summary>
+ /// <param name="item">The item to look for.</param>
+ /// <returns>Whether or not this array contains the given item.</returns>
public bool Contains(T item)
{
return objectArray.Contains(item);
}
+ /// <summary>
+ /// Copies the elements of this <see cref="Array{T}"/> to the given
+ /// C# array, starting at the given index.
+ /// </summary>
+ /// <param name="array">The C# array to copy to.</param>
+ /// <param name="arrayIndex">The index to start at.</param>
public void CopyTo(T[] array, int arrayIndex)
{
if (array == null)
@@ -386,6 +578,12 @@ namespace Godot.Collections
}
}
+ /// <summary>
+ /// Removes the first occurrence of the specified value
+ /// from this <see cref="Array{T}"/>.
+ /// </summary>
+ /// <param name="item">The value to remove.</param>
+ /// <returns>A bool indicating success or failure.</returns>
public bool Remove(T item)
{
return Array.godot_icall_Array_Remove(GetPtr(), item);
@@ -393,6 +591,10 @@ namespace Godot.Collections
// IEnumerable<T>
+ /// <summary>
+ /// Gets an enumerator for this <see cref="Array{T}"/>.
+ /// </summary>
+ /// <returns>An enumerator.</returns>
public IEnumerator<T> GetEnumerator()
{
int count = objectArray.Count;
@@ -408,6 +610,10 @@ namespace Godot.Collections
return GetEnumerator();
}
+ /// <summary>
+ /// Converts this <see cref="Array{T}"/> to a string.
+ /// </summary>
+ /// <returns>A string representation of this array.</returns>
public override string ToString() => objectArray.ToString();
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Basis.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Basis.cs
index 5dbf5d5657..8271b43b48 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Basis.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Basis.cs
@@ -1,10 +1,10 @@
-using System;
-using System.Runtime.InteropServices;
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
+using System.Runtime.InteropServices;
namespace Godot
{
@@ -863,16 +863,12 @@ namespace Godot
public override string ToString()
{
- return "[X: " + x.ToString() +
- ", Y: " + y.ToString() +
- ", Z: " + z.ToString() + "]";
+ return $"[X: {x}, Y: {y}, Z: {z}]";
}
public string ToString(string format)
{
- return "[X: " + x.ToString(format) +
- ", Y: " + y.ToString(format) +
- ", Z: " + z.ToString(format) + "]";
+ return $"[X: {x.ToString(format)}, Y: {y.ToString(format)}, Z: {z.ToString(format)}]";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs
index 155ffcff32..b9a98ba9c7 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Color.cs
@@ -1010,12 +1010,12 @@ namespace Godot
public override string ToString()
{
- return String.Format("({0}, {1}, {2}, {3})", r.ToString(), g.ToString(), b.ToString(), a.ToString());
+ return $"({r}, {g}, {b}, {a})";
}
public string ToString(string format)
{
- return String.Format("({0}, {1}, {2}, {3})", r.ToString(format), g.ToString(format), b.ToString(format), a.ToString(format));
+ return $"({r.ToString(format)}, {g.ToString(format)}, {b.ToString(format)}, {a.ToString(format)})";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Colors.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Colors.cs
index 4bb727bd35..d64c8b563e 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Colors.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Colors.cs
@@ -1,4 +1,3 @@
-using System;
using System.Collections.Generic;
namespace Godot
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/DelegateUtils.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/DelegateUtils.cs
index 785e87a043..1dca9e6ea7 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/DelegateUtils.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/DelegateUtils.cs
@@ -61,7 +61,7 @@ namespace Godot
using (var stream = new MemoryStream())
using (var writer = new BinaryWriter(stream))
{
- writer.Write((ulong) TargetKind.Static);
+ writer.Write((ulong)TargetKind.Static);
SerializeType(writer, @delegate.GetType());
@@ -77,8 +77,8 @@ namespace Godot
using (var stream = new MemoryStream())
using (var writer = new BinaryWriter(stream))
{
- writer.Write((ulong) TargetKind.GodotObject);
- writer.Write((ulong) godotObject.GetInstanceId());
+ writer.Write((ulong)TargetKind.GodotObject);
+ writer.Write((ulong)godotObject.GetInstanceId());
SerializeType(writer, @delegate.GetType());
@@ -100,7 +100,7 @@ namespace Godot
using (var stream = new MemoryStream())
using (var writer = new BinaryWriter(stream))
{
- writer.Write((ulong) TargetKind.CompilerGenerated);
+ writer.Write((ulong)TargetKind.CompilerGenerated);
SerializeType(writer, targetType);
SerializeType(writer, @delegate.GetType());
@@ -149,14 +149,14 @@ namespace Godot
int flags = 0;
if (methodInfo.IsPublic)
- flags |= (int) BindingFlags.Public;
+ flags |= (int)BindingFlags.Public;
else
- flags |= (int) BindingFlags.NonPublic;
+ flags |= (int)BindingFlags.NonPublic;
if (methodInfo.IsStatic)
- flags |= (int) BindingFlags.Static;
+ flags |= (int)BindingFlags.Static;
else
- flags |= (int) BindingFlags.Instance;
+ flags |= (int)BindingFlags.Instance;
writer.Write(flags);
@@ -238,7 +238,7 @@ namespace Godot
}
else
{
- if (TryDeserializeSingleDelegate((byte[]) elem, out Delegate oneDelegate))
+ if (TryDeserializeSingleDelegate((byte[])elem, out Delegate oneDelegate))
delegates.Add(oneDelegate);
}
}
@@ -257,7 +257,7 @@ namespace Godot
using (var stream = new MemoryStream(buffer, writable: false))
using (var reader = new BinaryReader(stream))
{
- var targetKind = (TargetKind) reader.ReadUInt64();
+ var targetKind = (TargetKind)reader.ReadUInt64();
switch (targetKind)
{
@@ -353,11 +353,11 @@ namespace Godot
parameterTypes[i] = parameterType;
}
- methodInfo = declaringType.GetMethod(methodName, (BindingFlags) flags, null, parameterTypes, null);
+ methodInfo = declaringType.GetMethod(methodName, (BindingFlags)flags, null, parameterTypes, null);
return methodInfo != null && methodInfo.ReturnType == returnType;
}
- methodInfo = declaringType.GetMethod(methodName, (BindingFlags) flags);
+ methodInfo = declaringType.GetMethod(methodName, (BindingFlags)flags);
return methodInfo != null && methodInfo.ReturnType == returnType;
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/DynamicObject.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/DynamicObject.cs
index c4c911b863..0c21bcaa3f 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/DynamicObject.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/DynamicObject.cs
@@ -1,4 +1,3 @@
-
using System;
using System.Collections.Generic;
using System.Dynamic;
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/GD.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/GD.cs
index 6699c5992c..a6f7a80d64 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/GD.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/GD.cs
@@ -1,12 +1,11 @@
-using System;
-using System.Collections.Generic;
-using System.Runtime.CompilerServices;
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
-
#endif
+using System;
+using System.Collections.Generic;
+using System.Runtime.CompilerServices;
// TODO: Add comments describing what this class does. It is not obvious.
@@ -26,17 +25,17 @@ namespace Godot
public static real_t Db2Linear(real_t db)
{
- return (real_t) Math.Exp(db * 0.11512925464970228420089957273422);
+ return (real_t)Math.Exp(db * 0.11512925464970228420089957273422);
}
- public static real_t DecTime(real_t value, real_t amount, real_t step)
+ private static object[] GetPrintParams(object[] parameters)
{
- real_t sgn = Mathf.Sign(value);
- real_t val = Mathf.Abs(value);
- val -= amount * step;
- if (val < 0)
- val = 0;
- return val * sgn;
+ if (parameters == null)
+ {
+ return new[] { "null" };
+ }
+
+ return Array.ConvertAll(parameters, x => x?.ToString() ?? "null");
}
public static int Hash(object var)
@@ -51,7 +50,7 @@ namespace Godot
public static real_t Linear2Db(real_t linear)
{
- return (real_t) (Math.Log(linear) * 8.6858896380650365530225783783321);
+ return (real_t)(Math.Log(linear) * 8.6858896380650365530225783783321);
}
public static Resource Load(string path)
@@ -76,7 +75,7 @@ namespace Godot
public static void Print(params object[] what)
{
- godot_icall_GD_print(Array.ConvertAll(what ?? new object[]{"null"}, x => x != null ? x.ToString() : "null"));
+ godot_icall_GD_print(GetPrintParams(what));
}
public static void PrintStack()
@@ -86,22 +85,22 @@ namespace Godot
public static void PrintErr(params object[] what)
{
- godot_icall_GD_printerr(Array.ConvertAll(what ?? new object[]{"null"}, x => x != null ? x.ToString() : "null"));
+ godot_icall_GD_printerr(GetPrintParams(what));
}
public static void PrintRaw(params object[] what)
{
- godot_icall_GD_printraw(Array.ConvertAll(what ?? new object[]{"null"}, x => x != null ? x.ToString() : "null"));
+ godot_icall_GD_printraw(GetPrintParams(what));
}
public static void PrintS(params object[] what)
{
- godot_icall_GD_prints(Array.ConvertAll(what ?? new object[]{"null"}, x => x != null ? x.ToString() : "null"));
+ godot_icall_GD_prints(GetPrintParams(what));
}
public static void PrintT(params object[] what)
{
- godot_icall_GD_printt(Array.ConvertAll(what ?? new object[]{"null"}, x => x != null ? x.ToString() : "null"));
+ godot_icall_GD_printt(GetPrintParams(what));
}
public static float Randf()
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTraceListener.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTraceListener.cs
index f1a00ae0fa..a566b53659 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTraceListener.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotTraceListener.cs
@@ -1,4 +1,3 @@
-using System;
using System.Diagnostics;
namespace Godot
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotUnhandledExceptionEvent.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotUnhandledExceptionEvent.cs
index 702a6c76ba..729529d093 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotUnhandledExceptionEvent.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/GodotUnhandledExceptionEvent.cs
@@ -1,8 +1,4 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace Godot
{
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs
index c59d083080..f508211f68 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/MarshalUtils.cs
@@ -1,12 +1,8 @@
using System;
-using System.Collections;
using System.Collections.Generic;
namespace Godot
{
- using Array = Godot.Collections.Array;
- using Dictionary = Godot.Collections.Dictionary;
-
static class MarshalUtils
{
/// <summary>
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs
index c3f372d415..213f84ad73 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Mathf.cs
@@ -1,9 +1,9 @@
-using System;
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
namespace Godot
{
@@ -14,13 +14,15 @@ namespace Godot
/// <summary>
/// The circle constant, the circumference of the unit circle in radians.
/// </summary>
- public const real_t Tau = (real_t) 6.2831853071795864769252867666M; // 6.2831855f and 6.28318530717959
+ // 6.2831855f and 6.28318530717959
+ public const real_t Tau = (real_t)6.2831853071795864769252867666M;
/// <summary>
/// Constant that represents how many times the diameter of a circle
/// fits around its perimeter. This is equivalent to `Mathf.Tau / 2`.
/// </summary>
- public const real_t Pi = (real_t) 3.1415926535897932384626433833M; // 3.1415927f and 3.14159265358979
+ // 3.1415927f and 3.14159265358979
+ public const real_t Pi = (real_t)3.1415926535897932384626433833M;
/// <summary>
/// Positive infinity. For negative infinity, use `-Mathf.Inf`.
@@ -34,8 +36,10 @@ namespace Godot
/// </summary>
public const real_t NaN = real_t.NaN;
- private const real_t Deg2RadConst = (real_t) 0.0174532925199432957692369077M; // 0.0174532924f and 0.0174532925199433
- private const real_t Rad2DegConst = (real_t) 57.295779513082320876798154814M; // 57.29578f and 57.2957795130823
+ // 0.0174532924f and 0.0174532925199433
+ private const real_t Deg2RadConst = (real_t)0.0174532925199432957692369077M;
+ // 57.29578f and 57.2957795130823
+ private const real_t Rad2DegConst = (real_t)57.295779513082320876798154814M;
/// <summary>
/// Returns the absolute value of `s` (i.e. positive value).
@@ -515,7 +519,8 @@ namespace Godot
/// <returns>One of three possible values: `1`, `-1`, or `0`.</returns>
public static int Sign(int s)
{
- if (s == 0) return 0;
+ if (s == 0)
+ return 0;
return s < 0 ? -1 : 1;
}
@@ -526,7 +531,8 @@ namespace Godot
/// <returns>One of three possible values: `1`, `-1`, or `0`.</returns>
public static int Sign(real_t s)
{
- if (s == 0) return 0;
+ if (s == 0)
+ return 0;
return s < 0 ? -1 : 1;
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/MathfEx.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/MathfEx.cs
index c2f4701b5f..0888e33090 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/MathfEx.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/MathfEx.cs
@@ -1,10 +1,9 @@
-using System;
-
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
namespace Godot
{
@@ -15,12 +14,12 @@ namespace Godot
/// <summary>
/// The natural number `e`.
/// </summary>
- public const real_t E = (real_t) 2.7182818284590452353602874714M; // 2.7182817f and 2.718281828459045
+ public const real_t E = (real_t)2.7182818284590452353602874714M; // 2.7182817f and 2.718281828459045
/// <summary>
/// The square root of 2.
/// </summary>
- public const real_t Sqrt2 = (real_t) 1.4142135623730950488016887242M; // 1.4142136f and 1.414213562373095
+ public const real_t Sqrt2 = (real_t)1.4142135623730950488016887242M; // 1.4142136f and 1.414213562373095
/// <summary>
/// A very small number used for float comparison with error tolerance.
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Plane.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Plane.cs
index ad6ca51e8b..6972102730 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Plane.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Plane.cs
@@ -1,10 +1,10 @@
-using System;
-using System.Runtime.InteropServices;
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
+using System.Runtime.InteropServices;
namespace Godot
{
@@ -177,7 +177,7 @@ namespace Godot
return null;
}
- return from + dir * -dist;
+ return from - (dir * dist);
}
/// <summary>
@@ -206,7 +206,7 @@ namespace Godot
return null;
}
- return begin + segment * -dist;
+ return begin - (segment * dist);
}
/// <summary>
@@ -355,20 +355,12 @@ namespace Godot
public override string ToString()
{
- return String.Format("{0}, {1}", new object[]
- {
- _normal.ToString(),
- D.ToString()
- });
+ return $"{_normal}, {D}";
}
public string ToString(string format)
{
- return String.Format("{0}, {1}", new object[]
- {
- _normal.ToString(format),
- D.ToString(format)
- });
+ return $"{_normal.ToString(format)}, {D.ToString(format)}";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Quaternion.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Quaternion.cs
index 817103994a..0fed55cc30 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Quaternion.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Quaternion.cs
@@ -1,10 +1,10 @@
-using System;
-using System.Runtime.InteropServices;
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
+using System.Runtime.InteropServices;
namespace Godot
{
@@ -547,12 +547,12 @@ namespace Godot
public override string ToString()
{
- return String.Format("({0}, {1}, {2}, {3})", x.ToString(), y.ToString(), z.ToString(), w.ToString());
+ return $"({x}, {y}, {z}, {w})";
}
public string ToString(string format)
{
- return String.Format("({0}, {1}, {2}, {3})", x.ToString(format), y.ToString(format), z.ToString(format), w.ToString(format));
+ return $"({x.ToString(format)}, {y.ToString(format)}, {z.ToString(format)}, {w.ToString(format)})";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2.cs
index 612fb64a3d..dec69c7f94 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2.cs
@@ -1,10 +1,10 @@
-using System;
-using System.Runtime.InteropServices;
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
+using System.Runtime.InteropServices;
namespace Godot
{
@@ -405,20 +405,12 @@ namespace Godot
public override string ToString()
{
- return String.Format("{0}, {1}", new object[]
- {
- _position.ToString(),
- _size.ToString()
- });
+ return $"{_position}, {_size}";
}
public string ToString(string format)
{
- return String.Format("{0}, {1}", new object[]
- {
- _position.ToString(format),
- _size.ToString(format)
- });
+ return $"{_position.ToString(format)}, {_size.ToString(format)}";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2i.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2i.cs
index c27af74866..7fb6614d2c 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2i.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Rect2i.cs
@@ -383,20 +383,12 @@ namespace Godot
public override string ToString()
{
- return String.Format("{0}, {1}", new object[]
- {
- _position.ToString(),
- _size.ToString()
- });
+ return $"{_position}, {_size}";
}
public string ToString(string format)
{
- return String.Format("{0}, {1}", new object[]
- {
- _position.ToString(format),
- _size.ToString(format)
- });
+ return $"{_position.ToString(format)}, {_size.ToString(format)}";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/StringExtensions.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/StringExtensions.cs
index 98efa89ef0..d9665cbf2b 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/StringExtensions.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/StringExtensions.cs
@@ -61,9 +61,9 @@ namespace Godot
return string.Empty;
}
- // <summary>
- // If the string is a path to a file, return the path to the file without the extension.
- // </summary>
+ /// <summary>
+ /// If the string is a path to a file, return the path to the file without the extension.
+ /// </summary>
public static string BaseName(this string instance)
{
int index = instance.LastIndexOf('.');
@@ -74,17 +74,17 @@ namespace Godot
return instance;
}
- // <summary>
- // Return true if the strings begins with the given string.
- // </summary>
+ /// <summary>
+ /// Return <see langword="true"/> if the strings begins with the given string.
+ /// </summary>
public static bool BeginsWith(this string instance, string text)
{
return instance.StartsWith(text);
}
- // <summary>
- // Return the bigrams (pairs of consecutive letters) of this string.
- // </summary>
+ /// <summary>
+ /// Return the bigrams (pairs of consecutive letters) of this string.
+ /// </summary>
public static string[] Bigrams(this string instance)
{
var b = new string[instance.Length - 1];
@@ -124,12 +124,12 @@ namespace Godot
instance = instance.Substring(2);
}
- return sign * Convert.ToInt32(instance, 2);;
+ return sign * Convert.ToInt32(instance, 2);
}
- // <summary>
- // Return the amount of substrings in string.
- // </summary>
+ /// <summary>
+ /// Return the amount of substrings in string.
+ /// </summary>
public static int Count(this string instance, string what, bool caseSensitive = true, int from = 0, int to = 0)
{
if (what.Length == 0)
@@ -187,9 +187,9 @@ namespace Godot
return c;
}
- // <summary>
- // Return a copy of the string with special characters escaped using the C language standard.
- // </summary>
+ /// <summary>
+ /// Return a copy of the string with special characters escaped using the C language standard.
+ /// </summary>
public static string CEscape(this string instance)
{
var sb = new StringBuilder(string.Copy(instance));
@@ -209,9 +209,10 @@ namespace Godot
return sb.ToString();
}
- // <summary>
- // Return a copy of the string with escaped characters replaced by their meanings according to the C language standard.
- // </summary>
+ /// <summary>
+ /// Return a copy of the string with escaped characters replaced by their meanings
+ /// according to the C language standard.
+ /// </summary>
public static string CUnescape(this string instance)
{
var sb = new StringBuilder(string.Copy(instance));
@@ -231,9 +232,12 @@ namespace Godot
return sb.ToString();
}
- // <summary>
- // Change the case of some letters. Replace underscores with spaces, convert all letters to lowercase then capitalize first and every letter following the space character. For [code]capitalize camelCase mixed_with_underscores[/code] it will return [code]Capitalize Camelcase Mixed With Underscores[/code].
- // </summary>
+ /// <summary>
+ /// Change the case of some letters. Replace underscores with spaces, convert all letters
+ /// to lowercase then capitalize first and every letter following the space character.
+ /// For <c>capitalize camelCase mixed_with_underscores</c> it will return
+ /// <c>Capitalize Camelcase Mixed With Underscores</c>.
+ /// </summary>
public static string Capitalize(this string instance)
{
string aux = instance.Replace("_", " ").ToLower();
@@ -254,17 +258,17 @@ namespace Godot
return cap;
}
- // <summary>
- // Perform a case-sensitive comparison to another string, return -1 if less, 0 if equal and +1 if greater.
- // </summary>
+ /// <summary>
+ /// Perform a case-sensitive comparison to another string, return -1 if less, 0 if equal and +1 if greater.
+ /// </summary>
public static int CasecmpTo(this string instance, string to)
{
return instance.CompareTo(to, caseSensitive: true);
}
- // <summary>
- // Perform a comparison to another string, return -1 if less, 0 if equal and +1 if greater.
- // </summary>
+ /// <summary>
+ /// Perform a comparison to another string, return -1 if less, 0 if equal and +1 if greater.
+ /// </summary>
public static int CompareTo(this string instance, string to, bool caseSensitive = true)
{
if (string.IsNullOrEmpty(instance))
@@ -316,25 +320,25 @@ namespace Godot
}
}
- // <summary>
- // Return true if the strings ends with the given string.
- // </summary>
+ /// <summary>
+ /// Return <see langword="true"/> if the strings ends with the given string.
+ /// </summary>
public static bool EndsWith(this string instance, string text)
{
return instance.EndsWith(text);
}
- // <summary>
- // Erase [code]chars[/code] characters from the string starting from [code]pos[/code].
- // </summary>
+ /// <summary>
+ /// Erase <paramref name="chars"/> characters from the string starting from <paramref name="pos"/>.
+ /// </summary>
public static void Erase(this StringBuilder instance, int pos, int chars)
{
instance.Remove(pos, chars);
}
- // <summary>
- // If the string is a path to a file, return the extension.
- // </summary>
+ /// <summary>
+ /// If the string is a path to a file, return the extension.
+ /// </summary>
public static string Extension(this string instance)
{
int pos = instance.FindLast(".");
@@ -345,14 +349,18 @@ namespace Godot
return instance.Substring(pos + 1);
}
- /// <summary>Find the first occurrence of a substring. Optionally, the search starting position can be passed.</summary>
+ /// <summary>
+ /// Find the first occurrence of a substring. Optionally, the search starting position can be passed.
+ /// </summary>
/// <returns>The starting position of the substring, or -1 if not found.</returns>
public static int Find(this string instance, string what, int from = 0, bool caseSensitive = true)
{
return instance.IndexOf(what, from, caseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase);
}
- /// <summary>Find the first occurrence of a char. Optionally, the search starting position can be passed.</summary>
+ /// <summary>
+ /// Find the first occurrence of a char. Optionally, the search starting position can be passed.
+ /// </summary>
/// <returns>The first instance of the char, or -1 if not found.</returns>
public static int Find(this string instance, char what, int from = 0, bool caseSensitive = true)
{
@@ -375,16 +383,19 @@ namespace Godot
return instance.LastIndexOf(what, from, caseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase);
}
- /// <summary>Find the first occurrence of a substring but search as case-insensitive. Optionally, the search starting position can be passed.</summary>
+ /// <summary>
+ /// Find the first occurrence of a substring but search as case-insensitive.
+ /// Optionally, the search starting position can be passed.
+ /// </summary>
/// <returns>The starting position of the substring, or -1 if not found.</returns>
public static int FindN(this string instance, string what, int from = 0)
{
return instance.IndexOf(what, from, StringComparison.OrdinalIgnoreCase);
}
- // <summary>
- // If the string is a path to a file, return the base directory.
- // </summary>
+ /// <summary>
+ /// If the string is a path to a file, return the base directory.
+ /// </summary>
public static string GetBaseDir(this string instance)
{
int basepos = instance.Find("://");
@@ -419,9 +430,9 @@ namespace Godot
return @base + rs.Substr(0, sep);
}
- // <summary>
- // If the string is a path to a file, return the file and ignore the base directory.
- // </summary>
+ /// <summary>
+ /// If the string is a path to a file, return the file and ignore the base directory.
+ /// </summary>
public static string GetFile(this string instance)
{
int sep = Mathf.Max(instance.FindLast("/"), instance.FindLast("\\"));
@@ -461,14 +472,14 @@ namespace Godot
return Encoding.UTF8.GetString(bytes);
}
- // <summary>
- // Hash the string and return a 32 bits unsigned integer.
- // </summary>
+ /// <summary>
+ /// Hash the string and return a 32 bits unsigned integer.
+ /// </summary>
public static uint Hash(this string instance)
{
uint hash = 5381;
- foreach(uint c in instance)
+ foreach (uint c in instance)
{
hash = (hash << 5) + hash + c; // hash * 33 + c
}
@@ -553,17 +564,17 @@ namespace Godot
return sign * int.Parse(instance, NumberStyles.HexNumber);
}
- // <summary>
- // Insert a substring at a given position.
- // </summary>
+ /// <summary>
+ /// Insert a substring at a given position.
+ /// </summary>
public static string Insert(this string instance, int pos, string what)
{
return instance.Insert(pos, what);
}
- // <summary>
- // If the string is a path to a file or directory, return true if the path is absolute.
- // </summary>
+ /// <summary>
+ /// If the string is a path to a file or directory, return <see langword="true"/> if the path is absolute.
+ /// </summary>
public static bool IsAbsPath(this string instance)
{
if (string.IsNullOrEmpty(instance))
@@ -574,17 +585,17 @@ namespace Godot
return instance[0] == '/' || instance[0] == '\\';
}
- // <summary>
- // If the string is a path to a file or directory, return true if the path is relative.
- // </summary>
+ /// <summary>
+ /// If the string is a path to a file or directory, return <see langword="true"/> if the path is relative.
+ /// </summary>
public static bool IsRelPath(this string instance)
{
return !IsAbsPath(instance);
}
- // <summary>
- // Check whether this string is a subsequence of the given string.
- // </summary>
+ /// <summary>
+ /// Check whether this string is a subsequence of the given string.
+ /// </summary>
public static bool IsSubsequenceOf(this string instance, string text, bool caseSensitive = true)
{
int len = instance.Length;
@@ -625,34 +636,36 @@ namespace Godot
return false;
}
- // <summary>
- // Check whether this string is a subsequence of the given string, ignoring case differences.
- // </summary>
+ /// <summary>
+ /// Check whether this string is a subsequence of the given string, ignoring case differences.
+ /// </summary>
public static bool IsSubsequenceOfI(this string instance, string text)
{
return instance.IsSubsequenceOf(text, caseSensitive: false);
}
- // <summary>
- // Check whether the string contains a valid float.
- // </summary>
+ /// <summary>
+ /// Check whether the string contains a valid <see langword="float"/>.
+ /// </summary>
public static bool IsValidFloat(this string instance)
{
float f;
return float.TryParse(instance, out f);
}
- // <summary>
- // Check whether the string contains a valid color in HTML notation.
- // </summary>
+ /// <summary>
+ /// Check whether the string contains a valid color in HTML notation.
+ /// </summary>
public static bool IsValidHtmlColor(this string instance)
{
return Color.HtmlIsValid(instance);
}
- // <summary>
- // Check whether the string is a valid identifier. As is common in programming languages, a valid identifier may contain only letters, digits and underscores (_) and the first character may not be a digit.
- // </summary>
+ /// <summary>
+ /// Check whether the string is a valid identifier. As is common in
+ /// programming languages, a valid identifier may contain only letters,
+ /// digits and underscores (_) and the first character may not be a digit.
+ /// </summary>
public static bool IsValidIdentifier(this string instance)
{
int len = instance.Length;
@@ -680,18 +693,18 @@ namespace Godot
return true;
}
- // <summary>
- // Check whether the string contains a valid integer.
- // </summary>
+ /// <summary>
+ /// Check whether the string contains a valid integer.
+ /// </summary>
public static bool IsValidInteger(this string instance)
{
int f;
return int.TryParse(instance, out f);
}
- // <summary>
- // Check whether the string contains a valid IP address.
- // </summary>
+ /// <summary>
+ /// Check whether the string contains a valid IP address.
+ /// </summary>
public static bool IsValidIPAddress(this string instance)
{
// TODO: Support IPv6 addresses
@@ -714,9 +727,9 @@ namespace Godot
return true;
}
- // <summary>
- // Return a copy of the string with special characters escaped using the JSON standard.
- // </summary>
+ /// <summary>
+ /// Return a copy of the string with special characters escaped using the JSON standard.
+ /// </summary>
public static string JSONEscape(this string instance)
{
var sb = new StringBuilder(string.Copy(instance));
@@ -733,9 +746,9 @@ namespace Godot
return sb.ToString();
}
- // <summary>
- // Return an amount of characters from the left of the string.
- // </summary>
+ /// <summary>
+ /// Return an amount of characters from the left of the string.
+ /// </summary>
public static string Left(this string instance, int pos)
{
if (pos <= 0)
@@ -783,7 +796,8 @@ namespace Godot
}
/// <summary>
- /// Do a simple expression match, where '*' matches zero or more arbitrary characters and '?' matches any single character except '.'.
+ /// Do a simple expression match, where '*' matches zero or more
+ /// arbitrary characters and '?' matches any single character except '.'.
/// </summary>
private static bool ExprMatch(this string instance, string expr, bool caseSensitive)
{
@@ -798,13 +812,17 @@ namespace Godot
case '?':
return instance.Length > 0 && instance[0] != '.' && ExprMatch(instance.Substring(1), expr.Substring(1), caseSensitive);
default:
- if (instance.Length == 0) return false;
- return (caseSensitive ? instance[0] == expr[0] : char.ToUpper(instance[0]) == char.ToUpper(expr[0])) && ExprMatch(instance.Substring(1), expr.Substring(1), caseSensitive);
+ if (instance.Length == 0)
+ return false;
+ if (caseSensitive)
+ return instance[0] == expr[0];
+ return (char.ToUpper(instance[0]) == char.ToUpper(expr[0])) && ExprMatch(instance.Substring(1), expr.Substring(1), caseSensitive);
}
}
/// <summary>
- /// Do a simple case sensitive expression match, using ? and * wildcards (see [method expr_match]).
+ /// Do a simple case sensitive expression match, using ? and * wildcards
+ /// (see <see cref="ExprMatch(string, string, bool)"/>).
/// </summary>
public static bool Match(this string instance, string expr, bool caseSensitive = true)
{
@@ -815,7 +833,8 @@ namespace Godot
}
/// <summary>
- /// Do a simple case insensitive expression match, using ? and * wildcards (see [method expr_match]).
+ /// Do a simple case insensitive expression match, using ? and * wildcards
+ /// (see <see cref="ExprMatch(string, string, bool)"/>).
/// </summary>
public static bool MatchN(this string instance, string expr)
{
@@ -825,9 +844,9 @@ namespace Godot
return instance.ExprMatch(expr, caseSensitive: false);
}
- // <summary>
- // Return the MD5 hash of the string as an array of bytes.
- // </summary>
+ /// <summary>
+ /// Return the MD5 hash of the string as an array of bytes.
+ /// </summary>
public static byte[] MD5Buffer(this string instance)
{
return godot_icall_String_md5_buffer(instance);
@@ -836,9 +855,9 @@ namespace Godot
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern static byte[] godot_icall_String_md5_buffer(string str);
- // <summary>
- // Return the MD5 hash of the string as a string.
- // </summary>
+ /// <summary>
+ /// Return the MD5 hash of the string as a string.
+ /// </summary>
public static string MD5Text(this string instance)
{
return godot_icall_String_md5_text(instance);
@@ -847,25 +866,25 @@ namespace Godot
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern static string godot_icall_String_md5_text(string str);
- // <summary>
- // Perform a case-insensitive comparison to another string, return -1 if less, 0 if equal and +1 if greater.
- // </summary>
+ /// <summary>
+ /// Perform a case-insensitive comparison to another string, return -1 if less, 0 if equal and +1 if greater.
+ /// </summary>
public static int NocasecmpTo(this string instance, string to)
{
return instance.CompareTo(to, caseSensitive: false);
}
- // <summary>
- // Return the character code at position [code]at[/code].
- // </summary>
+ /// <summary>
+ /// Return the character code at position <paramref name="at"/>.
+ /// </summary>
public static int OrdAt(this string instance, int at)
{
return instance[at];
}
- // <summary>
- // Format a number to have an exact number of [code]digits[/code] after the decimal point.
- // </summary>
+ /// <summary>
+ /// Format a number to have an exact number of <paramref name="digits"/> after the decimal point.
+ /// </summary>
public static string PadDecimals(this string instance, int digits)
{
int c = instance.Find(".");
@@ -899,9 +918,9 @@ namespace Godot
return instance;
}
- // <summary>
- // Format a number to have an exact number of [code]digits[/code] before the decimal point.
- // </summary>
+ /// <summary>
+ /// Format a number to have an exact number of <paramref name="digits"/> before the decimal point.
+ /// </summary>
public static string PadZeros(this string instance, int digits)
{
string s = instance;
@@ -932,9 +951,10 @@ namespace Godot
return s;
}
- // <summary>
- // If the string is a path, this concatenates [code]file[/code] at the end of the string as a subpath. E.g. [code]"this/is".plus_file("path") == "this/is/path"[/code].
- // </summary>
+ /// <summary>
+ /// If the string is a path, this concatenates <paramref name="file"/> at the end of the string as a subpath.
+ /// E.g. <c>"this/is".PlusFile("path") == "this/is/path"</c>.
+ /// </summary>
public static string PlusFile(this string instance, string file)
{
if (instance.Length > 0 && instance[instance.Length - 1] == '/')
@@ -942,25 +962,25 @@ namespace Godot
return instance + "/" + file;
}
- // <summary>
- // Replace occurrences of a substring for different ones inside the string.
- // </summary>
+ /// <summary>
+ /// Replace occurrences of a substring for different ones inside the string.
+ /// </summary>
public static string Replace(this string instance, string what, string forwhat)
{
return instance.Replace(what, forwhat);
}
- // <summary>
- // Replace occurrences of a substring for different ones inside the string, but search case-insensitive.
- // </summary>
+ /// <summary>
+ /// Replace occurrences of a substring for different ones inside the string, but search case-insensitive.
+ /// </summary>
public static string ReplaceN(this string instance, string what, string forwhat)
{
return Regex.Replace(instance, what, forwhat, RegexOptions.IgnoreCase);
}
- // <summary>
- // Perform a search for a substring, but start from the end of the string instead of the beginning.
- // </summary>
+ /// <summary>
+ /// Perform a search for a substring, but start from the end of the string instead of the beginning.
+ /// </summary>
public static int RFind(this string instance, string what, int from = -1)
{
return godot_icall_String_rfind(instance, what, from);
@@ -969,9 +989,10 @@ namespace Godot
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern static int godot_icall_String_rfind(string str, string what, int from);
- // <summary>
- // Perform a search for a substring, but start from the end of the string instead of the beginning. Also search case-insensitive.
- // </summary>
+ /// <summary>
+ /// Perform a search for a substring, but start from the end of the string instead of the beginning.
+ /// Also search case-insensitive.
+ /// </summary>
public static int RFindN(this string instance, string what, int from = -1)
{
return godot_icall_String_rfindn(instance, what, from);
@@ -980,9 +1001,9 @@ namespace Godot
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern static int godot_icall_String_rfindn(string str, string what, int from);
- // <summary>
- // Return the right side of the string from a given position.
- // </summary>
+ /// <summary>
+ /// Return the right side of the string from a given position.
+ /// </summary>
public static string Right(this string instance, int pos)
{
if (pos >= instance.Length)
@@ -1029,9 +1050,9 @@ namespace Godot
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern static byte[] godot_icall_String_sha256_buffer(string str);
- // <summary>
- // Return the SHA-256 hash of the string as a string.
- // </summary>
+ /// <summary>
+ /// Return the SHA-256 hash of the string as a string.
+ /// </summary>
public static string SHA256Text(this string instance)
{
return godot_icall_String_sha256_text(instance);
@@ -1040,9 +1061,10 @@ namespace Godot
[MethodImpl(MethodImplOptions.InternalCall)]
internal extern static string godot_icall_String_sha256_text(string str);
- // <summary>
- // Return the similarity index of the text compared to this string. 1 means totally similar and 0 means totally dissimilar.
- // </summary>
+ /// <summary>
+ /// Return the similarity index of the text compared to this string.
+ /// 1 means totally similar and 0 means totally dissimilar.
+ /// </summary>
public static float Similarity(this string instance, string text)
{
if (instance == text)
@@ -1080,17 +1102,19 @@ namespace Godot
return 2.0f * inter / sum;
}
- // <summary>
- // Split the string by a divisor string, return an array of the substrings. Example "One,Two,Three" will return ["One","Two","Three"] if split by ",".
- // </summary>
+ /// <summary>
+ /// Split the string by a divisor string, return an array of the substrings.
+ /// Example "One,Two,Three" will return ["One","Two","Three"] if split by ",".
+ /// </summary>
public static string[] Split(this string instance, string divisor, bool allowEmpty = true)
{
- return instance.Split(new[] { divisor }, StringSplitOptions.RemoveEmptyEntries);
+ return instance.Split(new[] { divisor }, allowEmpty ? StringSplitOptions.None : StringSplitOptions.RemoveEmptyEntries);
}
- // <summary>
- // Split the string in floats by using a divisor string, return an array of the substrings. Example "1,2.5,3" will return [1,2.5,3] if split by ",".
- // </summary>
+ /// <summary>
+ /// Split the string in floats by using a divisor string, return an array of the substrings.
+ /// Example "1,2.5,3" will return [1,2.5,3] if split by ",".
+ /// </summary>
public static float[] SplitFloats(this string instance, string divisor, bool allowEmpty = true)
{
var ret = new List<float>();
@@ -1122,9 +1146,10 @@ namespace Godot
(char)30, (char)31, (char)32
};
- // <summary>
- // Return a copy of the string stripped of any non-printable character at the beginning and the end. The optional arguments are used to toggle stripping on the left and right edges respectively.
- // </summary>
+ /// <summary>
+ /// Return a copy of the string stripped of any non-printable character at the beginning and the end.
+ /// The optional arguments are used to toggle stripping on the left and right edges respectively.
+ /// </summary>
public static string StripEdges(this string instance, bool left = true, bool right = true)
{
if (left)
@@ -1137,58 +1162,62 @@ namespace Godot
return instance.TrimEnd(_nonPrintable);
}
- // <summary>
- // Return part of the string from the position [code]from[/code], with length [code]len[/code].
- // </summary>
+ /// <summary>
+ /// Return part of the string from the position <paramref name="from"/>, with length <paramref name="len"/>.
+ /// </summary>
public static string Substr(this string instance, int from, int len)
{
int max = instance.Length - from;
return instance.Substring(from, len > max ? max : len);
}
- // <summary>
- // Convert the String (which is a character array) to PackedByteArray (which is an array of bytes). The conversion is speeded up in comparison to to_utf8() with the assumption that all the characters the String contains are only ASCII characters.
- // </summary>
+ /// <summary>
+ /// Convert the String (which is a character array) to PackedByteArray (which is an array of bytes).
+ /// The conversion is speeded up in comparison to <see cref="ToUTF8(string)"/> with the assumption
+ /// that all the characters the String contains are only ASCII characters.
+ /// </summary>
public static byte[] ToAscii(this string instance)
{
return Encoding.ASCII.GetBytes(instance);
}
- // <summary>
- // Convert a string, containing a decimal number, into a [code]float[/code].
- // </summary>
+ /// <summary>
+ /// Convert a string, containing a decimal number, into a <see langword="float" />.
+ /// </summary>
public static float ToFloat(this string instance)
{
return float.Parse(instance);
}
- // <summary>
- // Convert a string, containing an integer number, into an [code]int[/code].
- // </summary>
+ /// <summary>
+ /// Convert a string, containing an integer number, into an <see langword="int" />.
+ /// </summary>
public static int ToInt(this string instance)
{
return int.Parse(instance);
}
- // <summary>
- // Return the string converted to lowercase.
- // </summary>
+ /// <summary>
+ /// Return the string converted to lowercase.
+ /// </summary>
public static string ToLower(this string instance)
{
return instance.ToLower();
}
- // <summary>
- // Return the string converted to uppercase.
- // </summary>
+ /// <summary>
+ /// Return the string converted to uppercase.
+ /// </summary>
public static string ToUpper(this string instance)
{
return instance.ToUpper();
}
- // <summary>
- // Convert the String (which is an array of characters) to PackedByteArray (which is an array of bytes). The conversion is a bit slower than to_ascii(), but supports all UTF-8 characters. Therefore, you should prefer this function over to_ascii().
- // </summary>
+ /// <summary>
+ /// Convert the String (which is an array of characters) to PackedByteArray (which is an array of bytes).
+ /// The conversion is a bit slower than <see cref="ToAscii(string)"/>, but supports all UTF-8 characters.
+ /// Therefore, you should prefer this function over <see cref="ToAscii(string)"/>.
+ /// </summary>
public static byte[] ToUTF8(this string instance)
{
return Encoding.UTF8.GetBytes(instance);
@@ -1221,17 +1250,18 @@ namespace Godot
return Uri.EscapeDataString(instance);
}
- // <summary>
- // Return a copy of the string with special characters escaped using the XML standard.
- // </summary>
+ /// <summary>
+ /// Return a copy of the string with special characters escaped using the XML standard.
+ /// </summary>
public static string XMLEscape(this string instance)
{
return SecurityElement.Escape(instance);
}
- // <summary>
- // Return a copy of the string with escaped characters replaced by their meanings according to the XML standard.
- // </summary>
+ /// <summary>
+ /// Return a copy of the string with escaped characters replaced by their meanings
+ /// according to the XML standard.
+ /// </summary>
public static string XMLUnescape(this string instance)
{
return SecurityElement.FromString(instance).Text;
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform2D.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform2D.cs
index fe93592667..62a6fe6959 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform2D.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform2D.cs
@@ -1,10 +1,10 @@
-using System;
-using System.Runtime.InteropServices;
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
+using System.Runtime.InteropServices;
namespace Godot
{
@@ -492,16 +492,12 @@ namespace Godot
public override string ToString()
{
- return "[X: " + x.ToString() +
- ", Y: " + y.ToString() +
- ", O: " + origin.ToString() + "]";
+ return $"[X: {x}, Y: {y}, O: {origin}]";
}
public string ToString(string format)
{
- return "[X: " + x.ToString(format) +
- ", Y: " + y.ToString(format) +
- ", O: " + origin.ToString(format) + "]";
+ return $"[X: {x.ToString(format)}, Y: {y.ToString(format)}, O: {origin.ToString(format)}]";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform3D.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform3D.cs
index 26b1a9e8b2..1b717fb4ae 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform3D.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Transform3D.cs
@@ -1,10 +1,10 @@
-using System;
-using System.Runtime.InteropServices;
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
+using System.Runtime.InteropServices;
namespace Godot
{
@@ -393,18 +393,12 @@ namespace Godot
public override string ToString()
{
- return "[X: " + basis.x.ToString() +
- ", Y: " + basis.y.ToString() +
- ", Z: " + basis.z.ToString() +
- ", O: " + origin.ToString() + "]";
+ return $"[X: {basis.x}, Y: {basis.y}, Z: {basis.z}, O: {origin}]";
}
public string ToString(string format)
{
- return "[X: " + basis.x.ToString(format) +
- ", Y: " + basis.y.ToString(format) +
- ", Z: " + basis.z.ToString(format) +
- ", O: " + origin.ToString(format) + "]";
+ return $"[X: {basis.x.ToString(format)}, Y: {basis.y.ToString(format)}, Z: {basis.z.ToString(format)}, O: {origin.ToString(format)}]";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2.cs
index af053bd263..8bb5e90a68 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2.cs
@@ -1,16 +1,10 @@
-// file: core/math/math_2d.h
-// commit: 7ad14e7a3e6f87ddc450f7e34621eb5200808451
-// file: core/math/math_2d.cpp
-// commit: 7ad14e7a3e6f87ddc450f7e34621eb5200808451
-// file: core/variant_call.cpp
-// commit: 5ad9be4c24e9d7dc5672fdc42cea896622fe5685
-using System;
-using System.Runtime.InteropServices;
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
+using System.Runtime.InteropServices;
namespace Godot
{
@@ -757,20 +751,12 @@ namespace Godot
public override string ToString()
{
- return String.Format("({0}, {1})", new object[]
- {
- x.ToString(),
- y.ToString()
- });
+ return $"({x}, {y})";
}
public string ToString(string format)
{
- return String.Format("({0}, {1})", new object[]
- {
- x.ToString(format),
- y.ToString(format)
- });
+ return $"({x.ToString(format)}, {y.ToString(format)})";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2i.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2i.cs
index 9068593fd8..959f262f52 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2i.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector2i.cs
@@ -1,11 +1,10 @@
-using System;
-using System.Runtime.InteropServices;
-
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
+using System.Runtime.InteropServices;
namespace Godot
{
@@ -509,20 +508,12 @@ namespace Godot
public override string ToString()
{
- return String.Format("({0}, {1})", new object[]
- {
- this.x.ToString(),
- this.y.ToString()
- });
+ return $"({x}, {y})";
}
public string ToString(string format)
{
- return String.Format("({0}, {1})", new object[]
- {
- this.x.ToString(format),
- this.y.ToString(format)
- });
+ return $"({x.ToString(format)}, {y.ToString(format)})";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3.cs
index 31a9af2d9e..bdf64159e9 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3.cs
@@ -1,16 +1,10 @@
-// file: core/math/vector3.h
-// commit: bd282ff43f23fe845f29a3e25c8efc01bd65ffb0
-// file: core/math/vector3.cpp
-// commit: 7ad14e7a3e6f87ddc450f7e34621eb5200808451
-// file: core/variant_call.cpp
-// commit: 5ad9be4c24e9d7dc5672fdc42cea896622fe5685
-using System;
-using System.Runtime.InteropServices;
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
+using System.Runtime.InteropServices;
namespace Godot
{
@@ -851,22 +845,12 @@ namespace Godot
public override string ToString()
{
- return String.Format("({0}, {1}, {2})", new object[]
- {
- x.ToString(),
- y.ToString(),
- z.ToString()
- });
+ return $"({x}, {y}, {z})";
}
public string ToString(string format)
{
- return String.Format("({0}, {1}, {2})", new object[]
- {
- x.ToString(format),
- y.ToString(format),
- z.ToString(format)
- });
+ return $"({x.ToString(format)}, {y.ToString(format)}, {z.ToString(format)})";
}
}
}
diff --git a/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3i.cs b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3i.cs
index e727afa3ff..c96a7cf1b0 100644
--- a/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3i.cs
+++ b/modules/mono/glue/GodotSharp/GodotSharp/Core/Vector3i.cs
@@ -1,11 +1,10 @@
-using System;
-using System.Runtime.InteropServices;
-
#if REAL_T_IS_DOUBLE
using real_t = System.Double;
#else
using real_t = System.Single;
#endif
+using System;
+using System.Runtime.InteropServices;
namespace Godot
{
@@ -512,22 +511,12 @@ namespace Godot
public override string ToString()
{
- return String.Format("({0}, {1}, {2})", new object[]
- {
- this.x.ToString(),
- this.y.ToString(),
- this.z.ToString()
- });
+ return $"({x}, {y}, {z})";
}
public string ToString(string format)
{
- return String.Format("({0}, {1}, {2})", new object[]
- {
- this.x.ToString(format),
- this.y.ToString(format),
- this.z.ToString(format)
- });
+ return $"({x.ToString(format)}, {y.ToString(format)}, {z.ToString(format)})";
}
}
}
diff --git a/modules/mono/glue/base_object_glue.cpp b/modules/mono/glue/base_object_glue.cpp
index 2d04cedb9b..a99dff8432 100644
--- a/modules/mono/glue/base_object_glue.cpp
+++ b/modules/mono/glue/base_object_glue.cpp
@@ -177,8 +177,8 @@ MonoArray *godot_icall_DynamicGodotObject_SetMemberList(Object *p_ptr) {
MonoArray *result = mono_array_new(mono_domain_get(), CACHED_CLASS_RAW(String), property_list.size());
int i = 0;
- for (List<PropertyInfo>::Element *E = property_list.front(); E; E = E->next()) {
- MonoString *boxed = GDMonoMarshal::mono_string_from_godot(E->get().name);
+ for (const PropertyInfo &E : property_list) {
+ MonoString *boxed = GDMonoMarshal::mono_string_from_godot(E.name);
mono_array_setref(result, i, boxed);
i++;
}
diff --git a/modules/mono/mono_gd/gd_mono.cpp b/modules/mono/mono_gd/gd_mono.cpp
index 02d875f669..299344bb93 100644
--- a/modules/mono/mono_gd/gd_mono.cpp
+++ b/modules/mono/mono_gd/gd_mono.cpp
@@ -100,8 +100,8 @@ void gd_mono_setup_runtime_main_args() {
main_args.write[0] = execpath.ptrw();
int i = 1;
- for (List<String>::Element *E = cmdline_args.front(); E; E = E->next()) {
- CharString &stored = cmdline_args_utf8.push_back(E->get().utf8())->get();
+ for (const String &E : cmdline_args) {
+ CharString &stored = cmdline_args_utf8.push_back(E.utf8())->get();
main_args.write[i] = stored.ptrw();
i++;
}
diff --git a/modules/mono/mono_gd/gd_mono_assembly.cpp b/modules/mono/mono_gd/gd_mono_assembly.cpp
index 67d6f3ef29..67f38bf127 100644
--- a/modules/mono/mono_gd/gd_mono_assembly.cpp
+++ b/modules/mono/mono_gd/gd_mono_assembly.cpp
@@ -330,8 +330,8 @@ no_pdb:
void GDMonoAssembly::unload() {
ERR_FAIL_NULL(image); // Should not be called if already unloaded
- for (Map<MonoClass *, GDMonoClass *>::Element *E = cached_raw.front(); E; E = E->next()) {
- memdelete(E->value());
+ for (const KeyValue<MonoClass *, GDMonoClass *> &E : cached_raw) {
+ memdelete(E.value);
}
cached_classes.clear();
diff --git a/modules/mono/mono_gd/gd_mono_class.cpp b/modules/mono/mono_gd/gd_mono_class.cpp
index f9fddd931b..27b4ac7fa7 100644
--- a/modules/mono/mono_gd/gd_mono_class.cpp
+++ b/modules/mono/mono_gd/gd_mono_class.cpp
@@ -522,12 +522,12 @@ GDMonoClass::~GDMonoClass() {
mono_custom_attrs_free(attributes);
}
- for (Map<StringName, GDMonoField *>::Element *E = fields.front(); E; E = E->next()) {
- memdelete(E->value());
+ for (const KeyValue<StringName, GDMonoField *> &E : fields) {
+ memdelete(E.value);
}
- for (Map<StringName, GDMonoProperty *>::Element *E = properties.front(); E; E = E->next()) {
- memdelete(E->value());
+ for (const KeyValue<StringName, GDMonoProperty *> &E : properties) {
+ memdelete(E.value);
}
{
diff --git a/modules/navigation/navigation_mesh_editor_plugin.cpp b/modules/navigation/navigation_mesh_editor_plugin.cpp
index 8f4203e260..587e56f593 100644
--- a/modules/navigation/navigation_mesh_editor_plugin.cpp
+++ b/modules/navigation/navigation_mesh_editor_plugin.cpp
@@ -65,7 +65,7 @@ void NavigationMeshEditor::_bake_pressed() {
NavigationMeshGenerator::get_singleton()->clear(node->get_navigation_mesh());
NavigationMeshGenerator::get_singleton()->bake(node->get_navigation_mesh(), node);
- node->update_gizmo();
+ node->update_gizmos();
}
void NavigationMeshEditor::_clear_pressed() {
@@ -77,7 +77,7 @@ void NavigationMeshEditor::_clear_pressed() {
bake_info->set_text("");
if (node) {
- node->update_gizmo();
+ node->update_gizmos();
}
}
diff --git a/modules/navigation/navigation_mesh_generator.cpp b/modules/navigation/navigation_mesh_generator.cpp
index 7aeb9e1858..41cd75fd22 100644
--- a/modules/navigation/navigation_mesh_generator.cpp
+++ b/modules/navigation/navigation_mesh_generator.cpp
@@ -514,11 +514,11 @@ void NavigationMeshGenerator::bake(Ref<NavigationMesh> p_nav_mesh, Node *p_node)
}
Transform3D navmesh_xform = Object::cast_to<Node3D>(p_node)->get_transform().affine_inverse();
- for (const List<Node *>::Element *E = parse_nodes.front(); E; E = E->next()) {
+ for (Node *E : parse_nodes) {
int geometry_type = p_nav_mesh->get_parsed_geometry_type();
uint32_t collision_mask = p_nav_mesh->get_collision_mask();
bool recurse_children = p_nav_mesh->get_source_geometry_mode() != NavigationMesh::SOURCE_GEOMETRY_GROUPS_EXPLICIT;
- _parse_geometry(navmesh_xform, E->get(), vertices, indices, geometry_type, collision_mask, recurse_children);
+ _parse_geometry(navmesh_xform, E, vertices, indices, geometry_type, collision_mask, recurse_children);
}
if (vertices.size() > 0 && indices.size() > 0) {
diff --git a/modules/opensimplex/doc_classes/OpenSimplexNoise.xml b/modules/opensimplex/doc_classes/OpenSimplexNoise.xml
index 4d45e41cc3..c470f3e1ab 100644
--- a/modules/opensimplex/doc_classes/OpenSimplexNoise.xml
+++ b/modules/opensimplex/doc_classes/OpenSimplexNoise.xml
@@ -25,90 +25,66 @@
</tutorials>
<methods>
<method name="get_image" qualifiers="const">
- <return type="Image">
- </return>
- <argument index="0" name="width" type="int">
- </argument>
- <argument index="1" name="height" type="int">
- </argument>
- <argument index="2" name="noise_offset" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="Image" />
+ <argument index="0" name="width" type="int" />
+ <argument index="1" name="height" type="int" />
+ <argument index="2" name="noise_offset" type="Vector2" default="Vector2(0, 0)" />
<description>
Generate a noise image in [constant Image.FORMAT_L8] format with the requested [code]width[/code] and [code]height[/code], based on the current noise parameters. If [code]noise_offset[/code] is specified, then the offset value is used as the coordinates of the top-left corner of the generated noise.
</description>
</method>
<method name="get_noise_1d" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
<description>
Returns the 1D noise value [code][-1,1][/code] at the given x-coordinate.
[b]Note:[/b] This method actually returns the 2D noise value [code][-1,1][/code] with fixed y-coordinate value 0.0.
</description>
</method>
<method name="get_noise_2d" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="y" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
<description>
Returns the 2D noise value [code][-1,1][/code] at the given position.
</description>
</method>
<method name="get_noise_2dv" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="pos" type="Vector2">
- </argument>
+ <return type="float" />
+ <argument index="0" name="pos" type="Vector2" />
<description>
Returns the 2D noise value [code][-1,1][/code] at the given position.
</description>
</method>
<method name="get_noise_3d" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="y" type="float">
- </argument>
- <argument index="2" name="z" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
+ <argument index="2" name="z" type="float" />
<description>
Returns the 3D noise value [code][-1,1][/code] at the given position.
</description>
</method>
<method name="get_noise_3dv" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="pos" type="Vector3">
- </argument>
+ <return type="float" />
+ <argument index="0" name="pos" type="Vector3" />
<description>
Returns the 3D noise value [code][-1,1][/code] at the given position.
</description>
</method>
<method name="get_noise_4d" qualifiers="const">
- <return type="float">
- </return>
- <argument index="0" name="x" type="float">
- </argument>
- <argument index="1" name="y" type="float">
- </argument>
- <argument index="2" name="z" type="float">
- </argument>
- <argument index="3" name="w" type="float">
- </argument>
+ <return type="float" />
+ <argument index="0" name="x" type="float" />
+ <argument index="1" name="y" type="float" />
+ <argument index="2" name="z" type="float" />
+ <argument index="3" name="w" type="float" />
<description>
Returns the 4D noise value [code][-1,1][/code] at the given position.
</description>
</method>
<method name="get_seamless_image" qualifiers="const">
- <return type="Image">
- </return>
- <argument index="0" name="size" type="int">
- </argument>
+ <return type="Image" />
+ <argument index="0" name="size" type="int" />
<description>
Generate a tileable noise image in [constant Image.FORMAT_L8] format, based on the current noise parameters. Generated seamless images are always square ([code]size[/code] × [code]size[/code]).
[b]Note:[/b] Seamless noise has a lower contrast compared to non-seamless noise. This is due to the way noise uses higher dimensions for generating seamless noise.
diff --git a/modules/regex/doc_classes/RegEx.xml b/modules/regex/doc_classes/RegEx.xml
index 7f5a0dfecb..9c84974ff6 100644
--- a/modules/regex/doc_classes/RegEx.xml
+++ b/modules/regex/doc_classes/RegEx.xml
@@ -50,88 +50,67 @@
</tutorials>
<methods>
<method name="clear">
- <return type="void">
- </return>
+ <return type="void" />
<description>
This method resets the state of the object, as if it was freshly created. Namely, it unassigns the regular expression of this object.
</description>
</method>
<method name="compile">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="pattern" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="pattern" type="String" />
<description>
Compiles and assign the search pattern to use. Returns [constant OK] if the compilation is successful. If an error is encountered, details are printed to standard output and an error is returned.
</description>
</method>
<method name="get_group_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of capturing groups in compiled pattern.
</description>
</method>
<method name="get_names" qualifiers="const">
- <return type="Array">
- </return>
+ <return type="Array" />
<description>
Returns an array of names of named capturing groups in the compiled pattern. They are ordered by appearance.
</description>
</method>
<method name="get_pattern" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the original search pattern that was compiled.
</description>
</method>
<method name="is_valid" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether this object has a valid search pattern assigned.
</description>
</method>
<method name="search" qualifiers="const">
- <return type="RegExMatch">
- </return>
- <argument index="0" name="subject" type="String">
- </argument>
- <argument index="1" name="offset" type="int" default="0">
- </argument>
- <argument index="2" name="end" type="int" default="-1">
- </argument>
+ <return type="RegExMatch" />
+ <argument index="0" name="subject" type="String" />
+ <argument index="1" name="offset" type="int" default="0" />
+ <argument index="2" name="end" type="int" default="-1" />
<description>
Searches the text for the compiled pattern. Returns a [RegExMatch] container of the first matching result if found, otherwise [code]null[/code]. The region to search within can be specified without modifying where the start and end anchor would be.
</description>
</method>
<method name="search_all" qualifiers="const">
- <return type="Array">
- </return>
- <argument index="0" name="subject" type="String">
- </argument>
- <argument index="1" name="offset" type="int" default="0">
- </argument>
- <argument index="2" name="end" type="int" default="-1">
- </argument>
+ <return type="Array" />
+ <argument index="0" name="subject" type="String" />
+ <argument index="1" name="offset" type="int" default="0" />
+ <argument index="2" name="end" type="int" default="-1" />
<description>
Searches the text for the compiled pattern. Returns an array of [RegExMatch] containers for each non-overlapping result. If no results were found, an empty array is returned instead. The region to search within can be specified without modifying where the start and end anchor would be.
</description>
</method>
<method name="sub" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="subject" type="String">
- </argument>
- <argument index="1" name="replacement" type="String">
- </argument>
- <argument index="2" name="all" type="bool" default="false">
- </argument>
- <argument index="3" name="offset" type="int" default="0">
- </argument>
- <argument index="4" name="end" type="int" default="-1">
- </argument>
+ <return type="String" />
+ <argument index="0" name="subject" type="String" />
+ <argument index="1" name="replacement" type="String" />
+ <argument index="2" name="all" type="bool" default="false" />
+ <argument index="3" name="offset" type="int" default="0" />
+ <argument index="4" name="end" type="int" default="-1" />
<description>
Searches the text for the compiled pattern and replaces it with the specified string. Escapes and backreferences such as [code]$1[/code] and [code]$name[/code] are expanded and resolved. By default, only the first instance is replaced, but it can be changed for all instances (global replacement). The region to search within can be specified without modifying where the start and end anchor would be.
</description>
diff --git a/modules/regex/doc_classes/RegExMatch.xml b/modules/regex/doc_classes/RegExMatch.xml
index 492519d3d9..3cde2836cc 100644
--- a/modules/regex/doc_classes/RegExMatch.xml
+++ b/modules/regex/doc_classes/RegExMatch.xml
@@ -10,37 +10,30 @@
</tutorials>
<methods>
<method name="get_end" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="Variant" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="Variant" default="0" />
<description>
Returns the end position of the match within the source string. The end position of capturing groups can be retrieved by providing its group number as an integer or its string name (if it's a named group). The default value of 0 refers to the whole pattern.
Returns -1 if the group did not match or doesn't exist.
</description>
</method>
<method name="get_group_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of capturing groups.
</description>
</method>
<method name="get_start" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="Variant" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="Variant" default="0" />
<description>
Returns the starting position of the match within the source string. The starting position of capturing groups can be retrieved by providing its group number as an integer or its string name (if it's a named group). The default value of 0 refers to the whole pattern.
Returns -1 if the group did not match or doesn't exist.
</description>
</method>
<method name="get_string" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="name" type="Variant" default="0">
- </argument>
+ <return type="String" />
+ <argument index="0" name="name" type="Variant" default="0" />
<description>
Returns the substring of the match from the source string. Capturing groups can be retrieved by providing its group number as an integer or its string name (if it's a named group). The default value of 0 refers to the whole pattern.
Returns an empty string if the group did not match or doesn't exist.
diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp
index 2513039e8e..fa4888f843 100644
--- a/modules/text_server_adv/text_server_adv.cpp
+++ b/modules/text_server_adv/text_server_adv.cpp
@@ -927,14 +927,14 @@ void TextServerAdvanced::font_set_oversampling(float p_oversampling) {
oversampling = p_oversampling;
List<RID> fonts;
font_owner.get_owned_list(&fonts);
- for (List<RID>::Element *E = fonts.front(); E; E = E->next()) {
- font_owner.getornull(E->get())->clear_cache();
+ for (const RID &E : fonts) {
+ font_owner.getornull(E)->clear_cache();
}
List<RID> text_bufs;
shaped_owner.get_owned_list(&text_bufs);
- for (List<RID>::Element *E = text_bufs.front(); E; E = E->next()) {
- invalidate(shaped_owner.getornull(E->get()));
+ for (const RID &E : text_bufs) {
+ invalidate(shaped_owner.getornull(E));
}
}
}
diff --git a/modules/text_server_fb/text_server_fb.cpp b/modules/text_server_fb/text_server_fb.cpp
index 9ad7dabbcc..004cbc2bb3 100644
--- a/modules/text_server_fb/text_server_fb.cpp
+++ b/modules/text_server_fb/text_server_fb.cpp
@@ -473,8 +473,8 @@ void TextServerFallback::font_set_oversampling(float p_oversampling) {
oversampling = p_oversampling;
List<RID> fonts;
font_owner.get_owned_list(&fonts);
- for (List<RID>::Element *E = fonts.front(); E; E = E->next()) {
- font_owner.getornull(E->get())->clear_cache();
+ for (const RID &E : fonts) {
+ font_owner.getornull(E)->clear_cache();
}
}
}
diff --git a/modules/theora/doc_classes/VideoStreamTheora.xml b/modules/theora/doc_classes/VideoStreamTheora.xml
index cb8852d5ef..e7bf9b202d 100644
--- a/modules/theora/doc_classes/VideoStreamTheora.xml
+++ b/modules/theora/doc_classes/VideoStreamTheora.xml
@@ -11,17 +11,14 @@
</tutorials>
<methods>
<method name="get_file">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the Ogg Theora video file handled by this [VideoStreamTheora].
</description>
</method>
<method name="set_file">
- <return type="void">
- </return>
- <argument index="0" name="file" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="file" type="String" />
<description>
Sets the Ogg Theora video file that this [VideoStreamTheora] resource handles. The [code]file[/code] name should have the [code].ogv[/code] extension.
</description>
diff --git a/modules/upnp/doc_classes/UPNP.xml b/modules/upnp/doc_classes/UPNP.xml
index 09a2c8a88c..5b1d9dbfd1 100644
--- a/modules/upnp/doc_classes/UPNP.xml
+++ b/modules/upnp/doc_classes/UPNP.xml
@@ -21,27 +21,19 @@
</tutorials>
<methods>
<method name="add_device">
- <return type="void">
- </return>
- <argument index="0" name="device" type="UPNPDevice">
- </argument>
+ <return type="void" />
+ <argument index="0" name="device" type="UPNPDevice" />
<description>
Adds the given [UPNPDevice] to the list of discovered devices.
</description>
</method>
<method name="add_port_mapping" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
- <argument index="1" name="port_internal" type="int" default="0">
- </argument>
- <argument index="2" name="desc" type="String" default="&quot;&quot;">
- </argument>
- <argument index="3" name="proto" type="String" default="&quot;UDP&quot;">
- </argument>
- <argument index="4" name="duration" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="port" type="int" />
+ <argument index="1" name="port_internal" type="int" default="0" />
+ <argument index="2" name="desc" type="String" default="&quot;&quot;" />
+ <argument index="3" name="proto" type="String" default="&quot;UDP&quot;" />
+ <argument index="4" name="duration" type="int" default="0" />
<description>
Adds a mapping to forward the external [code]port[/code] (between 1 and 65535) on the default gateway (see [method get_gateway]) to the [code]internal_port[/code] on the local machine for the given protocol [code]proto[/code] (either [code]TCP[/code] or [code]UDP[/code], with UDP being the default). If a port mapping for the given port and protocol combination already exists on that gateway device, this method tries to overwrite it. If that is not desired, you can retrieve the gateway manually with [method get_gateway] and call [method add_port_mapping] on it, if any.
If [code]internal_port[/code] is [code]0[/code] (the default), the same port number is used for both the external and the internal port (the [code]port[/code] value).
@@ -50,32 +42,24 @@
</description>
</method>
<method name="clear_devices">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Clears the list of discovered devices.
</description>
</method>
<method name="delete_port_mapping" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
- <argument index="1" name="proto" type="String" default="&quot;UDP&quot;">
- </argument>
+ <return type="int" />
+ <argument index="0" name="port" type="int" />
+ <argument index="1" name="proto" type="String" default="&quot;UDP&quot;" />
<description>
Deletes the port mapping for the given port and protocol combination on the default gateway (see [method get_gateway]) if one exists. [code]port[/code] must be a valid port between 1 and 65535, [code]proto[/code] can be either [code]TCP[/code] or [code]UDP[/code]. See [enum UPNPResult] for possible return values.
</description>
</method>
<method name="discover">
- <return type="int">
- </return>
- <argument index="0" name="timeout" type="int" default="2000">
- </argument>
- <argument index="1" name="ttl" type="int" default="2">
- </argument>
- <argument index="2" name="device_filter" type="String" default="&quot;InternetGatewayDevice&quot;">
- </argument>
+ <return type="int" />
+ <argument index="0" name="timeout" type="int" default="2000" />
+ <argument index="1" name="ttl" type="int" default="2" />
+ <argument index="2" name="device_filter" type="String" default="&quot;InternetGatewayDevice&quot;" />
<description>
Discovers local [UPNPDevice]s. Clears the list of previously discovered devices.
Filters for IGD (InternetGatewayDevice) type devices by default, as those manage port forwarding. [code]timeout[/code] is the time to wait for responses in milliseconds. [code]ttl[/code] is the time-to-live; only touch this if you know what you're doing.
@@ -83,51 +67,41 @@
</description>
</method>
<method name="get_device" qualifiers="const">
- <return type="UPNPDevice">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="UPNPDevice" />
+ <argument index="0" name="index" type="int" />
<description>
Returns the [UPNPDevice] at the given [code]index[/code].
</description>
</method>
<method name="get_device_count" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of discovered [UPNPDevice]s.
</description>
</method>
<method name="get_gateway" qualifiers="const">
- <return type="UPNPDevice">
- </return>
+ <return type="UPNPDevice" />
<description>
Returns the default gateway. That is the first discovered [UPNPDevice] that is also a valid IGD (InternetGatewayDevice).
</description>
</method>
<method name="query_external_address" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the external [IP] address of the default gateway (see [method get_gateway]) as string. Returns an empty string on error.
</description>
</method>
<method name="remove_device">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes the device at [code]index[/code] from the list of discovered devices.
</description>
</method>
<method name="set_device">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="device" type="UPNPDevice">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="device" type="UPNPDevice" />
<description>
Sets the device at [code]index[/code] from the list of discovered devices to [code]device[/code].
</description>
diff --git a/modules/upnp/doc_classes/UPNPDevice.xml b/modules/upnp/doc_classes/UPNPDevice.xml
index f7b5386d86..b7c2ff7dd7 100644
--- a/modules/upnp/doc_classes/UPNPDevice.xml
+++ b/modules/upnp/doc_classes/UPNPDevice.xml
@@ -10,43 +10,32 @@
</tutorials>
<methods>
<method name="add_port_mapping" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
- <argument index="1" name="port_internal" type="int" default="0">
- </argument>
- <argument index="2" name="desc" type="String" default="&quot;&quot;">
- </argument>
- <argument index="3" name="proto" type="String" default="&quot;UDP&quot;">
- </argument>
- <argument index="4" name="duration" type="int" default="0">
- </argument>
+ <return type="int" />
+ <argument index="0" name="port" type="int" />
+ <argument index="1" name="port_internal" type="int" default="0" />
+ <argument index="2" name="desc" type="String" default="&quot;&quot;" />
+ <argument index="3" name="proto" type="String" default="&quot;UDP&quot;" />
+ <argument index="4" name="duration" type="int" default="0" />
<description>
Adds a port mapping to forward the given external port on this [UPNPDevice] for the given protocol to the local machine. See [method UPNP.add_port_mapping].
</description>
</method>
<method name="delete_port_mapping" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
- <argument index="1" name="proto" type="String" default="&quot;UDP&quot;">
- </argument>
+ <return type="int" />
+ <argument index="0" name="port" type="int" />
+ <argument index="1" name="proto" type="String" default="&quot;UDP&quot;" />
<description>
Deletes the port mapping identified by the given port and protocol combination on this device. See [method UPNP.delete_port_mapping].
</description>
</method>
<method name="is_valid_gateway" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this is a valid IGD (InternetGatewayDevice) which potentially supports port forwarding.
</description>
</method>
<method name="query_external_address" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the external IP address of this [UPNPDevice] or an empty string.
</description>
diff --git a/modules/visual_script/doc_classes/VisualScript.xml b/modules/visual_script/doc_classes/VisualScript.xml
index 9d51bd86a2..2327fc0009 100644
--- a/modules/visual_script/doc_classes/VisualScript.xml
+++ b/modules/visual_script/doc_classes/VisualScript.xml
@@ -13,456 +13,334 @@
</tutorials>
<methods>
<method name="add_custom_signal">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Add a custom signal with the specified name to the VisualScript.
</description>
</method>
<method name="add_function">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="func_node_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="func_node_id" type="int" />
<description>
Add a function with the specified name to the VisualScript, and assign the root [VisualScriptFunction] node's id as [code]func_node_id[/code].
</description>
</method>
<method name="add_node">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="node" type="VisualScriptNode">
- </argument>
- <argument index="2" name="position" type="Vector2" default="Vector2(0, 0)">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="node" type="VisualScriptNode" />
+ <argument index="2" name="position" type="Vector2" default="Vector2(0, 0)" />
<description>
Add a node to the VisualScript.
</description>
</method>
<method name="add_variable">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="default_value" type="Variant" default="null">
- </argument>
- <argument index="2" name="export" type="bool" default="false">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="default_value" type="Variant" default="null" />
+ <argument index="2" name="export" type="bool" default="false" />
<description>
Add a variable to the VisualScript, optionally giving it a default value or marking it as exported.
</description>
</method>
<method name="custom_signal_add_argument">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="type" type="int" enum="Variant.Type">
- </argument>
- <argument index="2" name="argname" type="String">
- </argument>
- <argument index="3" name="index" type="int" default="-1">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="type" type="int" enum="Variant.Type" />
+ <argument index="2" name="argname" type="String" />
+ <argument index="3" name="index" type="int" default="-1" />
<description>
Add an argument to a custom signal added with [method add_custom_signal].
</description>
</method>
<method name="custom_signal_get_argument_count" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="StringName" />
<description>
Get the count of a custom signal's arguments.
</description>
</method>
<method name="custom_signal_get_argument_name" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="argidx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="argidx" type="int" />
<description>
Get the name of a custom signal's argument.
</description>
</method>
<method name="custom_signal_get_argument_type" qualifiers="const">
- <return type="int" enum="Variant.Type">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="argidx" type="int">
- </argument>
+ <return type="int" enum="Variant.Type" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="argidx" type="int" />
<description>
Get the type of a custom signal's argument.
</description>
</method>
<method name="custom_signal_remove_argument">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="argidx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="argidx" type="int" />
<description>
Remove a specific custom signal's argument.
</description>
</method>
<method name="custom_signal_set_argument_name">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="argidx" type="int">
- </argument>
- <argument index="2" name="argname" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="argidx" type="int" />
+ <argument index="2" name="argname" type="String" />
<description>
Rename a custom signal's argument.
</description>
</method>
<method name="custom_signal_set_argument_type">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="argidx" type="int">
- </argument>
- <argument index="2" name="type" type="int" enum="Variant.Type">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="argidx" type="int" />
+ <argument index="2" name="type" type="int" enum="Variant.Type" />
<description>
Change the type of a custom signal's argument.
</description>
</method>
<method name="custom_signal_swap_argument">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="argidx" type="int">
- </argument>
- <argument index="2" name="withidx" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="argidx" type="int" />
+ <argument index="2" name="withidx" type="int" />
<description>
Swap two of the arguments of a custom signal.
</description>
</method>
<method name="data_connect">
- <return type="void">
- </return>
- <argument index="0" name="from_node" type="int">
- </argument>
- <argument index="1" name="from_port" type="int">
- </argument>
- <argument index="2" name="to_node" type="int">
- </argument>
- <argument index="3" name="to_port" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_node" type="int" />
+ <argument index="1" name="from_port" type="int" />
+ <argument index="2" name="to_node" type="int" />
+ <argument index="3" name="to_port" type="int" />
<description>
Connect two data ports. The value of [code]from_node[/code]'s [code]from_port[/code] would be fed into [code]to_node[/code]'s [code]to_port[/code].
</description>
</method>
<method name="data_disconnect">
- <return type="void">
- </return>
- <argument index="0" name="from_node" type="int">
- </argument>
- <argument index="1" name="from_port" type="int">
- </argument>
- <argument index="2" name="to_node" type="int">
- </argument>
- <argument index="3" name="to_port" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_node" type="int" />
+ <argument index="1" name="from_port" type="int" />
+ <argument index="2" name="to_node" type="int" />
+ <argument index="3" name="to_port" type="int" />
<description>
Disconnect two data ports previously connected with [method data_connect].
</description>
</method>
<method name="get_function_node_id" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="int" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns the id of a function's entry point node.
</description>
</method>
<method name="get_node" qualifiers="const">
- <return type="VisualScriptNode">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="VisualScriptNode" />
+ <argument index="0" name="id" type="int" />
<description>
Returns a node given its id.
</description>
</method>
<method name="get_node_position" qualifiers="const">
- <return type="Vector2">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="Vector2" />
+ <argument index="0" name="id" type="int" />
<description>
Returns a node's position in pixels.
</description>
</method>
<method name="get_scroll" qualifiers="const">
- <return type="Vector2">
- </return>
+ <return type="Vector2" />
<description>
Returns the current position of the center of the screen.
</description>
</method>
<method name="get_variable_default_value" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns the default (initial) value of a variable.
</description>
</method>
<method name="get_variable_export" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns whether a variable is exported.
</description>
</method>
<method name="get_variable_info" qualifiers="const">
- <return type="Dictionary">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns the information for a given variable as a dictionary. The information includes its name, type, hint and usage.
</description>
</method>
<method name="has_custom_signal" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns whether a signal exists with the specified name.
</description>
</method>
<method name="has_data_connection" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="from_node" type="int">
- </argument>
- <argument index="1" name="from_port" type="int">
- </argument>
- <argument index="2" name="to_node" type="int">
- </argument>
- <argument index="3" name="to_port" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="from_node" type="int" />
+ <argument index="1" name="from_port" type="int" />
+ <argument index="2" name="to_node" type="int" />
+ <argument index="3" name="to_port" type="int" />
<description>
Returns whether the specified data ports are connected.
</description>
</method>
<method name="has_function" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns whether a function exists with the specified name.
</description>
</method>
<method name="has_node" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
Returns whether a node exists with the given id.
</description>
</method>
<method name="has_sequence_connection" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="from_node" type="int">
- </argument>
- <argument index="1" name="from_output" type="int">
- </argument>
- <argument index="2" name="to_node" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="from_node" type="int" />
+ <argument index="1" name="from_output" type="int" />
+ <argument index="2" name="to_node" type="int" />
<description>
Returns whether the specified sequence ports are connected.
</description>
</method>
<method name="has_variable" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="name" type="StringName" />
<description>
Returns whether a variable exists with the specified name.
</description>
</method>
<method name="remove_custom_signal">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Remove a custom signal with the given name.
</description>
</method>
<method name="remove_function">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Remove a specific function and its nodes from the script.
</description>
</method>
<method name="remove_node">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
<description>
Remove the node with the specified id.
</description>
</method>
<method name="remove_variable">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
<description>
Remove a variable with the given name.
</description>
</method>
<method name="rename_custom_signal">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="new_name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="new_name" type="StringName" />
<description>
Change the name of a custom signal.
</description>
</method>
<method name="rename_function">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="new_name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="new_name" type="StringName" />
<description>
Change the name of a function.
</description>
</method>
<method name="rename_variable">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="new_name" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="new_name" type="StringName" />
<description>
Change the name of a variable.
</description>
</method>
<method name="sequence_connect">
- <return type="void">
- </return>
- <argument index="0" name="from_node" type="int">
- </argument>
- <argument index="1" name="from_output" type="int">
- </argument>
- <argument index="2" name="to_node" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_node" type="int" />
+ <argument index="1" name="from_output" type="int" />
+ <argument index="2" name="to_node" type="int" />
<description>
Connect two sequence ports. The execution will flow from of [code]from_node[/code]'s [code]from_output[/code] into [code]to_node[/code].
Unlike [method data_connect], there isn't a [code]to_port[/code], since the target node can have only one sequence port.
</description>
</method>
<method name="sequence_disconnect">
- <return type="void">
- </return>
- <argument index="0" name="from_node" type="int">
- </argument>
- <argument index="1" name="from_output" type="int">
- </argument>
- <argument index="2" name="to_node" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="from_node" type="int" />
+ <argument index="1" name="from_output" type="int" />
+ <argument index="2" name="to_node" type="int" />
<description>
Disconnect two sequence ports previously connected with [method sequence_connect].
</description>
</method>
<method name="set_instance_base_type">
- <return type="void">
- </return>
- <argument index="0" name="type" type="StringName">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="StringName" />
<description>
Set the base type of the script.
</description>
</method>
<method name="set_node_position">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="position" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="position" type="Vector2" />
<description>
Set the node position in the VisualScript graph.
</description>
</method>
<method name="set_scroll">
- <return type="void">
- </return>
- <argument index="0" name="ofs" type="Vector2">
- </argument>
+ <return type="void" />
+ <argument index="0" name="ofs" type="Vector2" />
<description>
Set the screen center to the given position.
</description>
</method>
<method name="set_variable_default_value">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="value" type="Variant" />
<description>
Change the default (initial) value of a variable.
</description>
</method>
<method name="set_variable_export">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="enable" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="enable" type="bool" />
<description>
Change whether a variable is exported.
</description>
</method>
<method name="set_variable_info">
- <return type="void">
- </return>
- <argument index="0" name="name" type="StringName">
- </argument>
- <argument index="1" name="value" type="Dictionary">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="StringName" />
+ <argument index="1" name="value" type="Dictionary" />
<description>
Set a variable's info, using the same format as [method get_variable_info].
</description>
@@ -470,8 +348,7 @@
</methods>
<signals>
<signal name="node_ports_changed">
- <argument index="0" name="id" type="int">
- </argument>
+ <argument index="0" name="id" type="int" />
<description>
Emitted when the ports of a node are changed.
</description>
diff --git a/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml b/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml
index 219ffd01d3..195d766c1d 100644
--- a/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml
+++ b/modules/visual_script/doc_classes/VisualScriptBuiltinFunc.xml
@@ -105,117 +105,114 @@
<constant name="MATH_MOVE_TOWARD" value="29" enum="BuiltinFunc">
Moves the number toward a value, based on the third input.
</constant>
- <constant name="MATH_DECTIME" value="30" enum="BuiltinFunc">
- Return the result of [code]value[/code] decreased by [code]step[/code] * [code]amount[/code].
- </constant>
- <constant name="MATH_RANDOMIZE" value="31" enum="BuiltinFunc">
+ <constant name="MATH_RANDOMIZE" value="30" enum="BuiltinFunc">
Randomize the seed (or the internal state) of the random number generator. Current implementation reseeds using a number based on time.
</constant>
- <constant name="MATH_RANDI" value="32" enum="BuiltinFunc">
+ <constant name="MATH_RANDI" value="31" enum="BuiltinFunc">
Return a random 32 bits integer value. To obtain a random value between 0 to N (where N is smaller than 2^32 - 1), you can use it with the remainder function.
</constant>
- <constant name="MATH_RANDF" value="33" enum="BuiltinFunc">
+ <constant name="MATH_RANDF" value="32" enum="BuiltinFunc">
Return a random floating-point value between 0 and 1. To obtain a random value between 0 to N, you can use it with multiplication.
</constant>
- <constant name="MATH_RANDF_RANGE" value="34" enum="BuiltinFunc">
+ <constant name="MATH_RANDF_RANGE" value="33" enum="BuiltinFunc">
Return a random floating-point value between the two inputs.
</constant>
- <constant name="MATH_RANDI_RANGE" value="35" enum="BuiltinFunc">
+ <constant name="MATH_RANDI_RANGE" value="34" enum="BuiltinFunc">
Return a random 32-bit integer value between the two inputs.
</constant>
- <constant name="MATH_SEED" value="36" enum="BuiltinFunc">
+ <constant name="MATH_SEED" value="35" enum="BuiltinFunc">
Set the seed for the random number generator.
</constant>
- <constant name="MATH_RANDSEED" value="37" enum="BuiltinFunc">
+ <constant name="MATH_RANDSEED" value="36" enum="BuiltinFunc">
Return a random value from the given seed, along with the new seed.
</constant>
- <constant name="MATH_DEG2RAD" value="38" enum="BuiltinFunc">
+ <constant name="MATH_DEG2RAD" value="37" enum="BuiltinFunc">
Convert the input from degrees to radians.
</constant>
- <constant name="MATH_RAD2DEG" value="39" enum="BuiltinFunc">
+ <constant name="MATH_RAD2DEG" value="38" enum="BuiltinFunc">
Convert the input from radians to degrees.
</constant>
- <constant name="MATH_LINEAR2DB" value="40" enum="BuiltinFunc">
+ <constant name="MATH_LINEAR2DB" value="39" enum="BuiltinFunc">
Convert the input from linear volume to decibel volume.
</constant>
- <constant name="MATH_DB2LINEAR" value="41" enum="BuiltinFunc">
+ <constant name="MATH_DB2LINEAR" value="40" enum="BuiltinFunc">
Convert the input from decibel volume to linear volume.
</constant>
- <constant name="MATH_POLAR2CARTESIAN" value="42" enum="BuiltinFunc">
+ <constant name="MATH_POLAR2CARTESIAN" value="41" enum="BuiltinFunc">
Converts a 2D point expressed in the polar coordinate system (a distance from the origin [code]r[/code] and an angle [code]th[/code]) to the cartesian coordinate system (X and Y axis).
</constant>
- <constant name="MATH_CARTESIAN2POLAR" value="43" enum="BuiltinFunc">
+ <constant name="MATH_CARTESIAN2POLAR" value="42" enum="BuiltinFunc">
Converts a 2D point expressed in the cartesian coordinate system (X and Y axis) to the polar coordinate system (a distance from the origin and an angle).
</constant>
- <constant name="MATH_WRAP" value="44" enum="BuiltinFunc">
+ <constant name="MATH_WRAP" value="43" enum="BuiltinFunc">
</constant>
- <constant name="MATH_WRAPF" value="45" enum="BuiltinFunc">
+ <constant name="MATH_WRAPF" value="44" enum="BuiltinFunc">
</constant>
- <constant name="LOGIC_MAX" value="46" enum="BuiltinFunc">
+ <constant name="LOGIC_MAX" value="45" enum="BuiltinFunc">
Return the greater of the two numbers, also known as their maximum.
</constant>
- <constant name="LOGIC_MIN" value="47" enum="BuiltinFunc">
+ <constant name="LOGIC_MIN" value="46" enum="BuiltinFunc">
Return the lesser of the two numbers, also known as their minimum.
</constant>
- <constant name="LOGIC_CLAMP" value="48" enum="BuiltinFunc">
+ <constant name="LOGIC_CLAMP" value="47" enum="BuiltinFunc">
Return the input clamped inside the given range, ensuring the result is never outside it. Equivalent to [code]min(max(input, range_low), range_high)[/code].
</constant>
- <constant name="LOGIC_NEAREST_PO2" value="49" enum="BuiltinFunc">
+ <constant name="LOGIC_NEAREST_PO2" value="48" enum="BuiltinFunc">
Return the nearest power of 2 to the input.
</constant>
- <constant name="OBJ_WEAKREF" value="50" enum="BuiltinFunc">
+ <constant name="OBJ_WEAKREF" value="49" enum="BuiltinFunc">
Create a [WeakRef] from the input.
</constant>
- <constant name="TYPE_CONVERT" value="51" enum="BuiltinFunc">
+ <constant name="TYPE_CONVERT" value="50" enum="BuiltinFunc">
Convert between types.
</constant>
- <constant name="TYPE_OF" value="52" enum="BuiltinFunc">
+ <constant name="TYPE_OF" value="51" enum="BuiltinFunc">
Return the type of the input as an integer. Check [enum Variant.Type] for the integers that might be returned.
</constant>
- <constant name="TYPE_EXISTS" value="53" enum="BuiltinFunc">
+ <constant name="TYPE_EXISTS" value="52" enum="BuiltinFunc">
Checks if a type is registered in the [ClassDB].
</constant>
- <constant name="TEXT_CHAR" value="54" enum="BuiltinFunc">
+ <constant name="TEXT_CHAR" value="53" enum="BuiltinFunc">
Return a character with the given ascii value.
</constant>
- <constant name="TEXT_STR" value="55" enum="BuiltinFunc">
+ <constant name="TEXT_STR" value="54" enum="BuiltinFunc">
Convert the input to a string.
</constant>
- <constant name="TEXT_PRINT" value="56" enum="BuiltinFunc">
+ <constant name="TEXT_PRINT" value="55" enum="BuiltinFunc">
Print the given string to the output window.
</constant>
- <constant name="TEXT_PRINTERR" value="57" enum="BuiltinFunc">
+ <constant name="TEXT_PRINTERR" value="56" enum="BuiltinFunc">
Print the given string to the standard error output.
</constant>
- <constant name="TEXT_PRINTRAW" value="58" enum="BuiltinFunc">
+ <constant name="TEXT_PRINTRAW" value="57" enum="BuiltinFunc">
Print the given string to the standard output, without adding a newline.
</constant>
- <constant name="VAR_TO_STR" value="59" enum="BuiltinFunc">
+ <constant name="VAR_TO_STR" value="58" enum="BuiltinFunc">
Serialize a [Variant] to a string.
</constant>
- <constant name="STR_TO_VAR" value="60" enum="BuiltinFunc">
+ <constant name="STR_TO_VAR" value="59" enum="BuiltinFunc">
Deserialize a [Variant] from a string serialized using [constant VAR_TO_STR].
</constant>
- <constant name="VAR_TO_BYTES" value="61" enum="BuiltinFunc">
+ <constant name="VAR_TO_BYTES" value="60" enum="BuiltinFunc">
Serialize a [Variant] to a [PackedByteArray].
</constant>
- <constant name="BYTES_TO_VAR" value="62" enum="BuiltinFunc">
+ <constant name="BYTES_TO_VAR" value="61" enum="BuiltinFunc">
Deserialize a [Variant] from a [PackedByteArray] serialized using [constant VAR_TO_BYTES].
</constant>
- <constant name="MATH_SMOOTHSTEP" value="63" enum="BuiltinFunc">
+ <constant name="MATH_SMOOTHSTEP" value="62" enum="BuiltinFunc">
Return a number smoothly interpolated between the first two inputs, based on the third input. Similar to [constant MATH_LERP], but interpolates faster at the beginning and slower at the end. Using Hermite interpolation formula:
[codeblock]
var t = clamp((weight - from) / (to - from), 0.0, 1.0)
return t * t * (3.0 - 2.0 * t)
[/codeblock]
</constant>
- <constant name="MATH_POSMOD" value="64" enum="BuiltinFunc">
+ <constant name="MATH_POSMOD" value="63" enum="BuiltinFunc">
</constant>
- <constant name="MATH_LERP_ANGLE" value="65" enum="BuiltinFunc">
+ <constant name="MATH_LERP_ANGLE" value="64" enum="BuiltinFunc">
</constant>
- <constant name="TEXT_ORD" value="66" enum="BuiltinFunc">
+ <constant name="TEXT_ORD" value="65" enum="BuiltinFunc">
</constant>
- <constant name="FUNC_MAX" value="67" enum="BuiltinFunc">
+ <constant name="FUNC_MAX" value="66" enum="BuiltinFunc">
Represents the size of the [enum BuiltinFunc] enum.
</constant>
</constants>
diff --git a/modules/visual_script/doc_classes/VisualScriptConstructor.xml b/modules/visual_script/doc_classes/VisualScriptConstructor.xml
index 2f162e78b6..4743594ec3 100644
--- a/modules/visual_script/doc_classes/VisualScriptConstructor.xml
+++ b/modules/visual_script/doc_classes/VisualScriptConstructor.xml
@@ -10,30 +10,24 @@
</tutorials>
<methods>
<method name="get_constructor" qualifiers="const">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
</description>
</method>
<method name="get_constructor_type" qualifiers="const">
- <return type="int" enum="Variant.Type">
- </return>
+ <return type="int" enum="Variant.Type" />
<description>
</description>
</method>
<method name="set_constructor">
- <return type="void">
- </return>
- <argument index="0" name="constructor" type="Dictionary">
- </argument>
+ <return type="void" />
+ <argument index="0" name="constructor" type="Dictionary" />
<description>
</description>
</method>
<method name="set_constructor_type">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int" enum="Variant.Type">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="Variant.Type" />
<description>
</description>
</method>
diff --git a/modules/visual_script/doc_classes/VisualScriptCustomNode.xml b/modules/visual_script/doc_classes/VisualScriptCustomNode.xml
index ba4eba26fd..8aa34f8cae 100644
--- a/modules/visual_script/doc_classes/VisualScriptCustomNode.xml
+++ b/modules/visual_script/doc_classes/VisualScriptCustomNode.xml
@@ -10,153 +10,122 @@
</tutorials>
<methods>
<method name="_get_caption" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Return the node's title.
</description>
</method>
<method name="_get_category" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Return the node's category.
</description>
</method>
<method name="_get_input_value_port_count" qualifiers="virtual">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Return the count of input value ports.
</description>
</method>
<method name="_get_input_value_port_hint" qualifiers="virtual">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Return the specified input port's hint. See the [enum @GlobalScope.PropertyHint] hints.
</description>
</method>
<method name="_get_input_value_port_hint_string" qualifiers="virtual">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Return the specified input port's hint string.
</description>
</method>
<method name="_get_input_value_port_name" qualifiers="virtual">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Return the specified input port's name.
</description>
</method>
<method name="_get_input_value_port_type" qualifiers="virtual">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Return the specified input port's type. See the [enum Variant.Type] values.
</description>
</method>
<method name="_get_output_sequence_port_count" qualifiers="virtual">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Return the amount of output [b]sequence[/b] ports.
</description>
</method>
<method name="_get_output_sequence_port_text" qualifiers="virtual">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Return the specified [b]sequence[/b] output's name.
</description>
</method>
<method name="_get_output_value_port_count" qualifiers="virtual">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Return the amount of output value ports.
</description>
</method>
<method name="_get_output_value_port_hint" qualifiers="virtual">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Return the specified output port's hint. See the [enum @GlobalScope.PropertyHint] hints.
</description>
</method>
<method name="_get_output_value_port_hint_string" qualifiers="virtual">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Return the specified output port's hint string.
</description>
</method>
<method name="_get_output_value_port_name" qualifiers="virtual">
- <return type="String">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="idx" type="int" />
<description>
Return the specified output port's name.
</description>
</method>
<method name="_get_output_value_port_type" qualifiers="virtual">
- <return type="int">
- </return>
- <argument index="0" name="idx" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="idx" type="int" />
<description>
Return the specified output port's type. See the [enum Variant.Type] values.
</description>
</method>
<method name="_get_text" qualifiers="virtual">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Return the custom node's text, which is shown right next to the input [b]sequence[/b] port (if there is none, on the place that is usually taken by it).
</description>
</method>
<method name="_get_working_memory_size" qualifiers="virtual">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Return the size of the custom node's working memory. See [method _step] for more details.
</description>
</method>
<method name="_has_input_sequence_port" qualifiers="virtual">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Return whether the custom node has an input [b]sequence[/b] port.
</description>
</method>
<method name="_step" qualifiers="virtual">
- <return type="Variant">
- </return>
- <argument index="0" name="inputs" type="Array">
- </argument>
- <argument index="1" name="outputs" type="Array">
- </argument>
- <argument index="2" name="start_mode" type="int">
- </argument>
- <argument index="3" name="working_mem" type="Array">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="inputs" type="Array" />
+ <argument index="1" name="outputs" type="Array" />
+ <argument index="2" name="start_mode" type="int" />
+ <argument index="3" name="working_mem" type="Array" />
<description>
Execute the custom node's logic, returning the index of the output sequence port to use or a [String] when there is an error.
The [code]inputs[/code] array contains the values of the input ports.
diff --git a/modules/visual_script/doc_classes/VisualScriptEditor.xml b/modules/visual_script/doc_classes/VisualScriptEditor.xml
index 186cd21239..9ea889c77b 100644
--- a/modules/visual_script/doc_classes/VisualScriptEditor.xml
+++ b/modules/visual_script/doc_classes/VisualScriptEditor.xml
@@ -8,25 +8,18 @@
</tutorials>
<methods>
<method name="add_custom_node">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="category" type="String">
- </argument>
- <argument index="2" name="script" type="Script">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="category" type="String" />
+ <argument index="2" name="script" type="Script" />
<description>
Add a custom Visual Script node to the editor. It'll be placed under "Custom Nodes" with the [code]category[/code] as the parameter.
</description>
</method>
<method name="remove_custom_node">
- <return type="void">
- </return>
- <argument index="0" name="name" type="String">
- </argument>
- <argument index="1" name="category" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="name" type="String" />
+ <argument index="1" name="category" type="String" />
<description>
Remove a custom Visual Script node from the editor. Custom nodes already placed on scripts won't be removed.
</description>
diff --git a/modules/visual_script/doc_classes/VisualScriptFunctionState.xml b/modules/visual_script/doc_classes/VisualScriptFunctionState.xml
index 54a02bf270..18c3826df8 100644
--- a/modules/visual_script/doc_classes/VisualScriptFunctionState.xml
+++ b/modules/visual_script/doc_classes/VisualScriptFunctionState.xml
@@ -10,30 +10,23 @@
</tutorials>
<methods>
<method name="connect_to_signal">
- <return type="void">
- </return>
- <argument index="0" name="obj" type="Object">
- </argument>
- <argument index="1" name="signals" type="String">
- </argument>
- <argument index="2" name="args" type="Array">
- </argument>
+ <return type="void" />
+ <argument index="0" name="obj" type="Object" />
+ <argument index="1" name="signals" type="String" />
+ <argument index="2" name="args" type="Array" />
<description>
Connects this [VisualScriptFunctionState] to a signal in the given object to automatically resume when it's emitted.
</description>
</method>
<method name="is_valid" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns whether the function state is valid.
</description>
</method>
<method name="resume">
- <return type="Variant">
- </return>
- <argument index="0" name="args" type="Array" default="[]">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="args" type="Array" default="[]" />
<description>
Resumes the function to run from the point it was yielded.
</description>
diff --git a/modules/visual_script/doc_classes/VisualScriptLists.xml b/modules/visual_script/doc_classes/VisualScriptLists.xml
index 671c427228..d5bff1341a 100644
--- a/modules/visual_script/doc_classes/VisualScriptLists.xml
+++ b/modules/visual_script/doc_classes/VisualScriptLists.xml
@@ -10,89 +10,65 @@
</tutorials>
<methods>
<method name="add_input_data_port">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int" enum="Variant.Type">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
- <argument index="2" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="Variant.Type" />
+ <argument index="1" name="name" type="String" />
+ <argument index="2" name="index" type="int" />
<description>
Adds an input port to the Visual Script node.
</description>
</method>
<method name="add_output_data_port">
- <return type="void">
- </return>
- <argument index="0" name="type" type="int" enum="Variant.Type">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
- <argument index="2" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="type" type="int" enum="Variant.Type" />
+ <argument index="1" name="name" type="String" />
+ <argument index="2" name="index" type="int" />
<description>
Adds an output port to the Visual Script node.
</description>
</method>
<method name="remove_input_data_port">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an input port from the Visual Script node.
</description>
</method>
<method name="remove_output_data_port">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
<description>
Removes an output port from the Visual Script node.
</description>
</method>
<method name="set_input_data_port_name">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="name" type="String" />
<description>
Sets the name of an input port.
</description>
</method>
<method name="set_input_data_port_type">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="type" type="int" enum="Variant.Type">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="type" type="int" enum="Variant.Type" />
<description>
Sets the type of an input port.
</description>
</method>
<method name="set_output_data_port_name">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="name" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="name" type="String" />
<description>
Sets the name of an output port.
</description>
</method>
<method name="set_output_data_port_type">
- <return type="void">
- </return>
- <argument index="0" name="index" type="int">
- </argument>
- <argument index="1" name="type" type="int" enum="Variant.Type">
- </argument>
+ <return type="void" />
+ <argument index="0" name="index" type="int" />
+ <argument index="1" name="type" type="int" enum="Variant.Type" />
<description>
Sets the type of an output port.
</description>
diff --git a/modules/visual_script/doc_classes/VisualScriptNode.xml b/modules/visual_script/doc_classes/VisualScriptNode.xml
index 82a023f3e4..23574a5ea8 100644
--- a/modules/visual_script/doc_classes/VisualScriptNode.xml
+++ b/modules/visual_script/doc_classes/VisualScriptNode.xml
@@ -10,35 +10,28 @@
</tutorials>
<methods>
<method name="get_default_input_value" qualifiers="const">
- <return type="Variant">
- </return>
- <argument index="0" name="port_idx" type="int">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="port_idx" type="int" />
<description>
Returns the default value of a given port. The default value is used when nothing is connected to the port.
</description>
</method>
<method name="get_visual_script" qualifiers="const">
- <return type="VisualScript">
- </return>
+ <return type="VisualScript" />
<description>
Returns the [VisualScript] instance the node is bound to.
</description>
</method>
<method name="ports_changed_notify">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Notify that the node's ports have changed. Usually used in conjunction with [VisualScriptCustomNode] .
</description>
</method>
<method name="set_default_input_value">
- <return type="void">
- </return>
- <argument index="0" name="port_idx" type="int">
- </argument>
- <argument index="1" name="value" type="Variant">
- </argument>
+ <return type="void" />
+ <argument index="0" name="port_idx" type="int" />
+ <argument index="1" name="value" type="Variant" />
<description>
Change the default value of a given port.
</description>
diff --git a/modules/visual_script/doc_classes/VisualScriptSubCall.xml b/modules/visual_script/doc_classes/VisualScriptSubCall.xml
index 89a10edde4..374e7d0f35 100644
--- a/modules/visual_script/doc_classes/VisualScriptSubCall.xml
+++ b/modules/visual_script/doc_classes/VisualScriptSubCall.xml
@@ -10,10 +10,8 @@
</tutorials>
<methods>
<method name="_subcall" qualifiers="virtual">
- <return type="Variant">
- </return>
- <argument index="0" name="arguments" type="Variant">
- </argument>
+ <return type="Variant" />
+ <argument index="0" name="arguments" type="Variant" />
<description>
Called by this node.
</description>
diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp
index 0de39512ae..86793af77f 100644
--- a/modules/visual_script/visual_script.cpp
+++ b/modules/visual_script/visual_script.cpp
@@ -271,6 +271,7 @@ void VisualScript::_node_ports_changed(int p_id) {
void VisualScript::add_node(int p_id, const Ref<VisualScriptNode> &p_node, const Point2 &p_pos) {
ERR_FAIL_COND(instances.size());
ERR_FAIL_COND(nodes.has(p_id)); // ID can exist only one in script.
+ ERR_FAIL_COND(p_node.is_null());
NodeData nd;
nd.node = p_node;
@@ -588,14 +589,14 @@ void VisualScript::rename_variable(const StringName &p_name, const StringName &p
variables.erase(p_name);
List<int> ids;
get_node_list(&ids);
- for (List<int>::Element *E = ids.front(); E; E = E->next()) {
- Ref<VisualScriptVariableGet> nodeget = get_node(E->get());
+ for (int &E : ids) {
+ Ref<VisualScriptVariableGet> nodeget = get_node(E);
if (nodeget.is_valid()) {
if (nodeget->get_variable() == p_name) {
nodeget->set_variable(p_new_name);
}
} else {
- Ref<VisualScriptVariableSet> nodeset = get_node(E->get());
+ Ref<VisualScriptVariableSet> nodeset = get_node(E);
if (nodeset.is_valid()) {
if (nodeset->get_variable() == p_name) {
nodeset->set_variable(p_new_name);
@@ -715,9 +716,9 @@ int VisualScript::get_available_id() const {
List<int> nds;
nodes.get_key_list(&nds);
int max = -1;
- for (const List<int>::Element *E = nds.front(); E; E = E->next()) {
- if (E->get() > max) {
- max = E->get();
+ for (const int &E : nds) {
+ if (E > max) {
+ max = E;
}
}
return (max + 1);
@@ -752,15 +753,15 @@ void VisualScript::_update_placeholders() {
List<StringName> keys;
variables.get_key_list(&keys);
- for (List<StringName>::Element *E = keys.front(); E; E = E->next()) {
- if (!variables[E->get()]._export) {
+ for (const StringName &E : keys) {
+ if (!variables[E]._export) {
continue;
}
- PropertyInfo p = variables[E->get()].info;
- p.name = String(E->get());
+ PropertyInfo p = variables[E].info;
+ p.name = String(E);
pinfo.push_back(p);
- values[p.name] = variables[E->get()].default_value;
+ values[p.name] = variables[E].default_value;
}
for (Set<PlaceHolderScriptInstance *>::Element *E = placeholders.front(); E; E = E->next()) {
@@ -783,15 +784,15 @@ ScriptInstance *VisualScript::instance_create(Object *p_this) {
List<StringName> keys;
variables.get_key_list(&keys);
- for (const List<StringName>::Element *E = keys.front(); E; E = E->next()) {
- if (!variables[E->get()]._export) {
+ for (const StringName &E : keys) {
+ if (!variables[E]._export) {
continue;
}
- PropertyInfo p = variables[E->get()].info;
- p.name = String(E->get());
+ PropertyInfo p = variables[E].info;
+ p.name = String(E);
pinfo.push_back(p);
- values[p.name] = variables[E->get()].default_value;
+ values[p.name] = variables[E].default_value;
}
sins->update(pinfo, values);
@@ -874,11 +875,11 @@ void VisualScript::get_script_method_list(List<MethodInfo> *p_list) const {
List<StringName> funcs;
functions.get_key_list(&funcs);
- for (List<StringName>::Element *E = funcs.front(); E; E = E->next()) {
+ for (const StringName &E : funcs) {
MethodInfo mi;
- mi.name = E->get();
- if (functions[E->get()].func_id >= 0) {
- Ref<VisualScriptFunction> func = nodes[functions[E->get()].func_id].node;
+ mi.name = E;
+ if (functions[E].func_id >= 0) {
+ Ref<VisualScriptFunction> func = nodes[functions[E].func_id].node;
if (func.is_valid()) {
for (int i = 0; i < func->get_argument_count(); i++) {
PropertyInfo arg;
@@ -928,10 +929,10 @@ void VisualScript::get_script_property_list(List<PropertyInfo> *p_list) const {
List<StringName> vars;
get_variable_list(&vars);
- for (List<StringName>::Element *E = vars.front(); E; E = E->next()) {
- //if (!variables[E->get()]._export)
+ for (const StringName &E : vars) {
+ //if (!variables[E]._export)
// continue;
- PropertyInfo pi = variables[E->get()].info;
+ PropertyInfo pi = variables[E].info;
pi.usage |= PROPERTY_USAGE_SCRIPT_VARIABLE;
p_list->push_back(pi);
}
@@ -945,8 +946,8 @@ int VisualScript::get_member_line(const StringName &p_member) const {
bool VisualScript::are_subnodes_edited() const {
List<int> keys;
nodes.get_key_list(&keys);
- for (const List<int>::Element *F = keys.front(); F; F = F->next()) {
- if (nodes[F->get()].node->is_edited()) {
+ for (const int &F : keys) {
+ if (nodes[F].node->is_edited()) {
return true;
}
}
@@ -1017,13 +1018,13 @@ void VisualScript::_set_data(const Dictionary &p_data) {
rpc_functions.clear();
List<StringName> fns;
functions.get_key_list(&fns);
- for (const List<StringName>::Element *E = fns.front(); E; E = E->next()) {
- if (functions[E->get()].func_id >= 0 && nodes.has(functions[E->get()].func_id)) {
- Ref<VisualScriptFunction> vsf = nodes[functions[E->get()].func_id].node;
+ for (const StringName &E : fns) {
+ if (functions[E].func_id >= 0 && nodes.has(functions[E].func_id)) {
+ Ref<VisualScriptFunction> vsf = nodes[functions[E].func_id].node;
if (vsf.is_valid()) {
if (vsf->get_rpc_mode() != MultiplayerAPI::RPC_MODE_DISABLED) {
MultiplayerAPI::RPCConfig nd;
- nd.name = E->get();
+ nd.name = E;
nd.rpc_mode = vsf->get_rpc_mode();
nd.transfer_mode = MultiplayerPeer::TRANSFER_MODE_RELIABLE; // TODO
if (rpc_functions.find(nd) == -1) {
@@ -1045,11 +1046,11 @@ Dictionary VisualScript::_get_data() const {
Array vars;
List<StringName> var_names;
variables.get_key_list(&var_names);
- for (const List<StringName>::Element *E = var_names.front(); E; E = E->next()) {
- Dictionary var = _get_variable_info(E->get());
- var["name"] = E->get(); // Make sure it's the right one.
- var["default_value"] = variables[E->get()].default_value;
- var["export"] = variables[E->get()]._export;
+ for (const StringName &E : var_names) {
+ Dictionary var = _get_variable_info(E);
+ var["name"] = E; // Make sure it's the right one.
+ var["default_value"] = variables[E].default_value;
+ var["export"] = variables[E]._export;
vars.push_back(var);
}
d["variables"] = vars;
@@ -1073,10 +1074,10 @@ Dictionary VisualScript::_get_data() const {
Array funcs;
List<StringName> func_names;
functions.get_key_list(&func_names);
- for (const List<StringName>::Element *E = func_names.front(); E; E = E->next()) {
+ for (const StringName &E : func_names) {
Dictionary func;
- func["name"] = E->get();
- func["function_id"] = functions[E->get()].func_id;
+ func["name"] = E;
+ func["function_id"] = functions[E].func_id;
funcs.push_back(func);
}
d["functions"] = funcs;
@@ -1084,10 +1085,10 @@ Dictionary VisualScript::_get_data() const {
Array nds;
List<int> node_ids;
nodes.get_key_list(&node_ids);
- for (const List<int>::Element *F = node_ids.front(); F; F = F->next()) {
- nds.push_back(F->get());
- nds.push_back(nodes[F->get()].pos);
- nds.push_back(nodes[F->get()].node);
+ for (const int &F : node_ids) {
+ nds.push_back(F);
+ nds.push_back(nodes[F].pos);
+ nds.push_back(nodes[F].node);
}
d["nodes"] = nds;
@@ -1202,8 +1203,8 @@ VisualScript::~VisualScript() {
// Remove all nodes and stuff that hold data refs.
List<int> nds;
nodes.get_key_list(&nds);
- for (const List<int>::Element *E = nds.front(); E; E = E->next()) {
- remove_node(E->get());
+ for (const int &E : nds) {
+ remove_node(E);
}
}
@@ -1233,12 +1234,12 @@ bool VisualScriptInstance::get(const StringName &p_name, Variant &r_ret) const {
void VisualScriptInstance::get_property_list(List<PropertyInfo> *p_properties) const {
List<StringName> vars;
script->variables.get_key_list(&vars);
- for (const List<StringName>::Element *E = vars.front(); E; E = E->next()) {
- if (!script->variables[E->get()]._export) {
+ for (const StringName &E : vars) {
+ if (!script->variables[E]._export) {
continue;
}
- PropertyInfo p = script->variables[E->get()].info;
- p.name = String(E->get());
+ PropertyInfo p = script->variables[E].info;
+ p.name = String(E);
p.usage |= PROPERTY_USAGE_SCRIPT_VARIABLE;
p_properties->push_back(p);
}
@@ -1262,11 +1263,11 @@ Variant::Type VisualScriptInstance::get_property_type(const StringName &p_name,
void VisualScriptInstance::get_method_list(List<MethodInfo> *p_list) const {
List<StringName> fns;
script->functions.get_key_list(&fns);
- for (const List<StringName>::Element *E = fns.front(); E; E = E->next()) {
+ for (const StringName &E : fns) {
MethodInfo mi;
- mi.name = E->get();
- if (script->functions[E->get()].func_id >= 0 && script->nodes.has(script->functions[E->get()].func_id)) {
- Ref<VisualScriptFunction> vsf = script->nodes[script->functions[E->get()].func_id].node;
+ mi.name = E;
+ if (script->functions[E].func_id >= 0 && script->nodes.has(script->functions[E].func_id)) {
+ Ref<VisualScriptFunction> vsf = script->nodes[script->functions[E].func_id].node;
if (vsf.is_valid()) {
for (int i = 0; i < vsf->get_argument_count(); i++) {
PropertyInfo arg;
@@ -1868,8 +1869,8 @@ void VisualScriptInstance::create(const Ref<VisualScript> &p_script, Object *p_o
{
List<StringName> keys;
script->variables.get_key_list(&keys);
- for (const List<StringName>::Element *E = keys.front(); E; E = E->next()) {
- variables[E->get()] = script->variables[E->get()].default_value;
+ for (const StringName &E : keys) {
+ variables[E] = script->variables[E].default_value;
}
}
@@ -1877,8 +1878,8 @@ void VisualScriptInstance::create(const Ref<VisualScript> &p_script, Object *p_o
{
List<StringName> keys;
script->functions.get_key_list(&keys);
- for (const List<StringName>::Element *E = keys.front(); E; E = E->next()) {
- const VisualScript::Function vsfn = p_script->functions[E->get()];
+ for (const StringName &E : keys) {
+ const VisualScript::Function vsfn = p_script->functions[E];
Function function;
function.node = vsfn.func_id;
function.max_stack = 0;
@@ -1889,7 +1890,7 @@ void VisualScriptInstance::create(const Ref<VisualScript> &p_script, Object *p_o
Map<StringName, int> local_var_indices;
if (function.node < 0) {
- VisualScriptLanguage::singleton->debug_break_parse(get_script()->get_path(), 0, "No start node in function: " + String(E->get()));
+ VisualScriptLanguage::singleton->debug_break_parse(get_script()->get_path(), 0, "No start node in function: " + String(E));
ERR_CONTINUE(function.node < 0);
}
@@ -1897,7 +1898,7 @@ void VisualScriptInstance::create(const Ref<VisualScript> &p_script, Object *p_o
Ref<VisualScriptFunction> func_node = script->get_node(vsfn.func_id);
if (func_node.is_null()) {
- VisualScriptLanguage::singleton->debug_break_parse(get_script()->get_path(), 0, "No VisualScriptFunction typed start node in function: " + String(E->get()));
+ VisualScriptLanguage::singleton->debug_break_parse(get_script()->get_path(), 0, "No VisualScriptFunction typed start node in function: " + String(E));
}
ERR_CONTINUE(!func_node.is_valid());
@@ -1938,12 +1939,12 @@ void VisualScriptInstance::create(const Ref<VisualScript> &p_script, Object *p_o
while (!nd_queue.is_empty()) {
int ky = nd_queue.front()->get();
dc_lut[ky].get_key_list(&dc_keys);
- for (const List<int>::Element *F = dc_keys.front(); F; F = F->next()) {
+ for (const int &F : dc_keys) {
VisualScript::DataConnection dc;
- dc.from_node = dc_lut[ky][F->get()].first;
- dc.from_port = dc_lut[ky][F->get()].second;
+ dc.from_node = dc_lut[ky][F].first;
+ dc.from_port = dc_lut[ky][F].second;
dc.to_node = ky;
- dc.to_port = F->get();
+ dc.to_port = F;
dataconns.insert(dc);
nd_queue.push_back(dc.from_node);
node_ids.insert(dc.from_node);
@@ -2093,7 +2094,7 @@ void VisualScriptInstance::create(const Ref<VisualScript> &p_script, Object *p_o
}
}
- functions[E->get()] = function;
+ functions[E] = function;
}
}
}
@@ -2467,10 +2468,10 @@ void VisualScriptLanguage::debug_get_stack_level_members(int p_level, List<Strin
List<StringName> vars;
vs->get_variable_list(&vars);
- for (List<StringName>::Element *E = vars.front(); E; E = E->next()) {
+ for (const StringName &E : vars) {
Variant v;
- if (_call_stack[l].instance->get_variable(E->get(), &v)) {
- p_members->push_back("variables/" + E->get());
+ if (_call_stack[l].instance->get_variable(E, &v)) {
+ p_members->push_back("variables/" + E);
p_values->push_back(v);
}
}
diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp
index f17ad62531..c61c3ae272 100644
--- a/modules/visual_script/visual_script_builtin_funcs.cpp
+++ b/modules/visual_script/visual_script_builtin_funcs.cpp
@@ -68,7 +68,6 @@ const char *VisualScriptBuiltinFunc::func_name[VisualScriptBuiltinFunc::FUNC_MAX
"inverse_lerp",
"range_lerp",
"move_toward",
- "dectime",
"randomize",
"randi",
"randf",
@@ -206,7 +205,6 @@ int VisualScriptBuiltinFunc::get_func_argument_count(BuiltinFunc p_func) {
case MATH_INVERSE_LERP:
case MATH_SMOOTHSTEP:
case MATH_MOVE_TOWARD:
- case MATH_DECTIME:
case MATH_WRAP:
case MATH_WRAPF:
case LOGIC_CLAMP:
@@ -349,15 +347,6 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
return PropertyInfo(Variant::FLOAT, "delta");
}
} break;
- case MATH_DECTIME: {
- if (p_idx == 0) {
- return PropertyInfo(Variant::FLOAT, "value");
- } else if (p_idx == 1) {
- return PropertyInfo(Variant::FLOAT, "amount");
- } else {
- return PropertyInfo(Variant::FLOAT, "step");
- }
- } break;
case MATH_RANDOMIZE:
case MATH_RANDI:
case MATH_RANDF: {
@@ -536,10 +525,6 @@ PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) cons
case MATH_RANGE_LERP:
case MATH_SMOOTHSTEP:
case MATH_MOVE_TOWARD:
- case MATH_DECTIME: {
- t = Variant::FLOAT;
-
- } break;
case MATH_RANDOMIZE: {
} break;
case MATH_RANDI: {
@@ -837,12 +822,6 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
VALIDATE_ARG_NUM(2);
*r_return = Math::move_toward((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
} break;
- case VisualScriptBuiltinFunc::MATH_DECTIME: {
- VALIDATE_ARG_NUM(0);
- VALIDATE_ARG_NUM(1);
- VALIDATE_ARG_NUM(2);
- *r_return = Math::dectime((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
- } break;
case VisualScriptBuiltinFunc::MATH_RANDOMIZE: {
Math::randomize();
@@ -1239,7 +1218,6 @@ void VisualScriptBuiltinFunc::_bind_methods() {
BIND_ENUM_CONSTANT(MATH_INVERSE_LERP);
BIND_ENUM_CONSTANT(MATH_RANGE_LERP);
BIND_ENUM_CONSTANT(MATH_MOVE_TOWARD);
- BIND_ENUM_CONSTANT(MATH_DECTIME);
BIND_ENUM_CONSTANT(MATH_RANDOMIZE);
BIND_ENUM_CONSTANT(MATH_RANDI);
BIND_ENUM_CONSTANT(MATH_RANDF);
@@ -1330,7 +1308,6 @@ void register_visual_script_builtin_func_node() {
VisualScriptLanguage::singleton->add_register_func("functions/built_in/range_lerp", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANGE_LERP>);
VisualScriptLanguage::singleton->add_register_func("functions/built_in/smoothstep", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SMOOTHSTEP>);
VisualScriptLanguage::singleton->add_register_func("functions/built_in/move_toward", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_MOVE_TOWARD>);
- VisualScriptLanguage::singleton->add_register_func("functions/built_in/dectime", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DECTIME>);
VisualScriptLanguage::singleton->add_register_func("functions/built_in/randomize", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDOMIZE>);
VisualScriptLanguage::singleton->add_register_func("functions/built_in/randi", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDI>);
VisualScriptLanguage::singleton->add_register_func("functions/built_in/randf", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDF>);
diff --git a/modules/visual_script/visual_script_builtin_funcs.h b/modules/visual_script/visual_script_builtin_funcs.h
index 7196d4b46a..f59a7a0f0c 100644
--- a/modules/visual_script/visual_script_builtin_funcs.h
+++ b/modules/visual_script/visual_script_builtin_funcs.h
@@ -68,7 +68,6 @@ public:
MATH_INVERSE_LERP,
MATH_RANGE_LERP,
MATH_MOVE_TOWARD,
- MATH_DECTIME,
MATH_RANDOMIZE,
MATH_RANDI,
MATH_RANDF,
diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp
index ed0583a133..a802e8022d 100644
--- a/modules/visual_script/visual_script_editor.cpp
+++ b/modules/visual_script/visual_script_editor.cpp
@@ -561,18 +561,16 @@ void VisualScriptEditor::_update_graph_connections() {
List<VisualScript::SequenceConnection> sequence_conns;
script->get_sequence_connection_list(&sequence_conns);
- for (List<VisualScript::SequenceConnection>::Element *E = sequence_conns.front(); E; E = E->next()) {
- graph->connect_node(itos(E->get().from_node), E->get().from_output, itos(E->get().to_node), 0);
+ for (const VisualScript::SequenceConnection &E : sequence_conns) {
+ graph->connect_node(itos(E.from_node), E.from_output, itos(E.to_node), 0);
}
List<VisualScript::DataConnection> data_conns;
script->get_data_connection_list(&data_conns);
- for (List<VisualScript::DataConnection>::Element *E = data_conns.front(); E; E = E->next()) {
- VisualScript::DataConnection dc = E->get();
-
- Ref<VisualScriptNode> from_node = script->get_node(E->get().from_node);
- Ref<VisualScriptNode> to_node = script->get_node(E->get().to_node);
+ for (VisualScript::DataConnection &dc : data_conns) {
+ Ref<VisualScriptNode> from_node = script->get_node(dc.from_node);
+ Ref<VisualScriptNode> to_node = script->get_node(dc.to_node);
if (to_node->has_input_sequence_port()) {
dc.to_port++;
@@ -580,7 +578,7 @@ void VisualScriptEditor::_update_graph_connections() {
dc.from_port += from_node->get_output_sequence_port_count();
- graph->connect_node(itos(E->get().from_node), dc.from_port, itos(E->get().to_node), dc.to_port);
+ graph->connect_node(itos(dc.from_node), dc.from_port, itos(dc.to_node), dc.to_port);
}
}
@@ -656,27 +654,27 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
script->get_node_list(&ids);
StringName editor_icons = "EditorIcons";
- for (List<int>::Element *E = ids.front(); E; E = E->next()) {
- if (p_only_id >= 0 && p_only_id != E->get()) {
+ for (int &E : ids) {
+ if (p_only_id >= 0 && p_only_id != E) {
continue;
}
- Ref<VisualScriptNode> node = script->get_node(E->get());
- Vector2 pos = script->get_node_position(E->get());
+ Ref<VisualScriptNode> node = script->get_node(E);
+ Vector2 pos = script->get_node_position(E);
GraphNode *gnode = memnew(GraphNode);
gnode->set_title(node->get_caption());
gnode->set_position_offset(pos * EDSCALE);
- if (error_line == E->get()) {
+ if (error_line == E) {
gnode->set_overlay(GraphNode::OVERLAY_POSITION);
} else if (node->is_breakpoint()) {
gnode->set_overlay(GraphNode::OVERLAY_BREAKPOINT);
}
gnode->set_meta("__vnode", node);
- gnode->set_name(itos(E->get()));
- gnode->connect("dragged", callable_mp(this, &VisualScriptEditor::_node_moved), varray(E->get()));
- gnode->connect("close_request", callable_mp(this, &VisualScriptEditor::_remove_node), varray(E->get()), CONNECT_DEFERRED);
+ gnode->set_name(itos(E));
+ gnode->connect("dragged", callable_mp(this, &VisualScriptEditor::_node_moved), varray(E));
+ gnode->connect("close_request", callable_mp(this, &VisualScriptEditor::_remove_node), varray(E), CONNECT_DEFERRED);
{
Ref<VisualScriptFunction> v = node;
@@ -696,7 +694,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
Button *btn = memnew(Button);
btn->set_text(TTR("Add Input Port"));
hbnc->add_child(btn);
- btn->connect("pressed", callable_mp(this, &VisualScriptEditor::_add_input_port), varray(E->get()), CONNECT_DEFERRED);
+ btn->connect("pressed", callable_mp(this, &VisualScriptEditor::_add_input_port), varray(E), CONNECT_DEFERRED);
}
if (nd_list->is_output_port_editable()) {
if (nd_list->is_input_port_editable()) {
@@ -706,7 +704,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
Button *btn = memnew(Button);
btn->set_text(TTR("Add Output Port"));
hbnc->add_child(btn);
- btn->connect("pressed", callable_mp(this, &VisualScriptEditor::_add_output_port), varray(E->get()), CONNECT_DEFERRED);
+ btn->connect("pressed", callable_mp(this, &VisualScriptEditor::_add_output_port), varray(E), CONNECT_DEFERRED);
}
gnode->add_child(hbnc);
} else if (Object::cast_to<VisualScriptExpression>(node.ptr())) {
@@ -716,7 +714,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
line_edit->set_expand_to_text_length_enabled(true);
line_edit->add_theme_font_override("font", get_theme_font(SNAME("source"), SNAME("EditorFonts")));
gnode->add_child(line_edit);
- line_edit->connect("text_changed", callable_mp(this, &VisualScriptEditor::_expression_text_changed), varray(E->get()));
+ line_edit->connect("text_changed", callable_mp(this, &VisualScriptEditor::_expression_text_changed), varray(E));
} else {
String text = node->get_text();
if (!text.is_empty()) {
@@ -732,7 +730,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
gnode->set_comment(true);
gnode->set_resizable(true);
gnode->set_custom_minimum_size(vsc->get_size() * EDSCALE);
- gnode->connect("resize_request", callable_mp(this, &VisualScriptEditor::_comment_node_resized), varray(E->get()));
+ gnode->connect("resize_request", callable_mp(this, &VisualScriptEditor::_comment_node_resized), varray(E));
}
if (node_styles.has(node->get_category())) {
@@ -835,8 +833,8 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
name_box->set_custom_minimum_size(Size2(60 * EDSCALE, 0));
name_box->set_text(left_name);
name_box->set_expand_to_text_length_enabled(true);
- name_box->connect("resized", callable_mp(this, &VisualScriptEditor::_update_node_size), varray(E->get()));
- name_box->connect("focus_exited", callable_mp(this, &VisualScriptEditor::_port_name_focus_out), varray(name_box, E->get(), i, true));
+ name_box->connect("resized", callable_mp(this, &VisualScriptEditor::_update_node_size), varray(E));
+ name_box->connect("focus_exited", callable_mp(this, &VisualScriptEditor::_port_name_focus_out), varray(name_box, E, i, true));
} else {
hbc->add_child(memnew(Label(left_name)));
}
@@ -849,18 +847,18 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
opbtn->select(left_type);
opbtn->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
hbc->add_child(opbtn);
- opbtn->connect("item_selected", callable_mp(this, &VisualScriptEditor::_change_port_type), varray(E->get(), i, true), CONNECT_DEFERRED);
+ opbtn->connect("item_selected", callable_mp(this, &VisualScriptEditor::_change_port_type), varray(E, i, true), CONNECT_DEFERRED);
}
Button *rmbtn = memnew(Button);
rmbtn->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")));
hbc->add_child(rmbtn);
- rmbtn->connect("pressed", callable_mp(this, &VisualScriptEditor::_remove_input_port), varray(E->get(), i), CONNECT_DEFERRED);
+ rmbtn->connect("pressed", callable_mp(this, &VisualScriptEditor::_remove_input_port), varray(E, i), CONNECT_DEFERRED);
} else {
hbc->add_child(memnew(Label(left_name)));
}
- if (left_type != Variant::NIL && !script->is_input_value_port_connected(E->get(), i)) {
+ if (left_type != Variant::NIL && !script->is_input_value_port_connected(E, i)) {
PropertyInfo pi = node->get_input_value_port_info(i);
Button *button = memnew(Button);
Variant value = node->get_default_input_value(i);
@@ -887,7 +885,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
} else {
button->set_text(value);
}
- button->connect("pressed", callable_mp(this, &VisualScriptEditor::_default_value_edited), varray(button, E->get(), i));
+ button->connect("pressed", callable_mp(this, &VisualScriptEditor::_default_value_edited), varray(button, E, i));
hbc2->add_child(button);
}
} else {
@@ -911,7 +909,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
Button *rmbtn = memnew(Button);
rmbtn->set_icon(EditorNode::get_singleton()->get_gui_base()->get_theme_icon(SNAME("Remove"), SNAME("EditorIcons")));
hbc->add_child(rmbtn);
- rmbtn->connect("pressed", callable_mp(this, &VisualScriptEditor::_remove_output_port), varray(E->get(), i), CONNECT_DEFERRED);
+ rmbtn->connect("pressed", callable_mp(this, &VisualScriptEditor::_remove_output_port), varray(E, i), CONNECT_DEFERRED);
if (nd_list->is_output_port_type_editable()) {
OptionButton *opbtn = memnew(OptionButton);
@@ -921,7 +919,7 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
opbtn->select(right_type);
opbtn->set_custom_minimum_size(Size2(100 * EDSCALE, 0));
hbc->add_child(opbtn);
- opbtn->connect("item_selected", callable_mp(this, &VisualScriptEditor::_change_port_type), varray(E->get(), i, false), CONNECT_DEFERRED);
+ opbtn->connect("item_selected", callable_mp(this, &VisualScriptEditor::_change_port_type), varray(E, i, false), CONNECT_DEFERRED);
}
if (nd_list->is_output_port_name_editable()) {
@@ -930,8 +928,8 @@ void VisualScriptEditor::_update_graph(int p_only_id) {
name_box->set_custom_minimum_size(Size2(60 * EDSCALE, 0));
name_box->set_text(right_name);
name_box->set_expand_to_text_length_enabled(true);
- name_box->connect("resized", callable_mp(this, &VisualScriptEditor::_update_node_size), varray(E->get()));
- name_box->connect("focus_exited", callable_mp(this, &VisualScriptEditor::_port_name_focus_out), varray(name_box, E->get(), i, false));
+ name_box->connect("resized", callable_mp(this, &VisualScriptEditor::_update_node_size), varray(E));
+ name_box->connect("focus_exited", callable_mp(this, &VisualScriptEditor::_port_name_focus_out), varray(name_box, E, i, false));
} else {
hbc->add_child(memnew(Label(right_name)));
}
@@ -986,7 +984,7 @@ void VisualScriptEditor::_change_port_type(int p_select, int p_id, int p_port, b
return;
}
- undo_redo->create_action("Change Port Type");
+ undo_redo->create_action(TTR("Change Port Type"));
if (is_input) {
undo_redo->add_do_method(vsn.ptr(), "set_input_data_port_type", p_port, Variant::Type(p_select));
undo_redo->add_undo_method(vsn.ptr(), "set_input_data_port_type", p_port, vsn->get_input_value_port_info(p_port).type);
@@ -1018,7 +1016,7 @@ void VisualScriptEditor::_port_name_focus_out(const Node *p_name_box, int p_id,
return;
}
- undo_redo->create_action("Change Port Name");
+ undo_redo->create_action(TTR("Change Port Name"));
if (is_input) {
undo_redo->add_do_method(vsn.ptr(), "set_input_data_port_name", p_port, text);
undo_redo->add_undo_method(vsn.ptr(), "set_input_data_port_name", p_port, vsn->get_input_value_port_info(p_port).name);
@@ -1047,13 +1045,13 @@ void VisualScriptEditor::_update_members() {
List<StringName> func_names;
script->get_function_list(&func_names);
func_names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = func_names.front(); E; E = E->next()) {
+ for (const StringName &E : func_names) {
TreeItem *ti = members->create_item(functions);
- ti->set_text(0, E->get());
+ ti->set_text(0, E);
ti->set_selectable(0, true);
- ti->set_metadata(0, E->get());
+ ti->set_metadata(0, E);
ti->add_button(0, Control::get_theme_icon(SNAME("Edit"), SNAME("EditorIcons")), 0);
- if (selected == E->get()) {
+ if (selected == E) {
ti->select(0);
}
}
@@ -1101,18 +1099,18 @@ void VisualScriptEditor::_update_members() {
List<StringName> var_names;
script->get_variable_list(&var_names);
- for (List<StringName>::Element *E = var_names.front(); E; E = E->next()) {
+ for (const StringName &E : var_names) {
TreeItem *ti = members->create_item(variables);
- ti->set_text(0, E->get());
+ ti->set_text(0, E);
- ti->set_suffix(0, "= " + _sanitized_variant_text(E->get()));
- ti->set_icon(0, type_icons[script->get_variable_info(E->get()).type]);
+ ti->set_suffix(0, "= " + _sanitized_variant_text(E));
+ ti->set_icon(0, type_icons[script->get_variable_info(E).type]);
ti->set_selectable(0, true);
ti->set_editable(0, true);
- ti->set_metadata(0, E->get());
- if (selected == E->get()) {
+ ti->set_metadata(0, E);
+ if (selected == E) {
ti->select(0);
}
}
@@ -1125,13 +1123,13 @@ void VisualScriptEditor::_update_members() {
List<StringName> signal_names;
script->get_custom_signal_list(&signal_names);
- for (List<StringName>::Element *E = signal_names.front(); E; E = E->next()) {
+ for (const StringName &E : signal_names) {
TreeItem *ti = members->create_item(_signals);
- ti->set_text(0, E->get());
+ ti->set_text(0, E);
ti->set_selectable(0, true);
ti->set_editable(0, true);
- ti->set_metadata(0, E->get());
- if (selected == E->get()) {
+ ti->set_metadata(0, E);
+ if (selected == E) {
ti->select(0);
}
}
@@ -1237,8 +1235,8 @@ void VisualScriptEditor::_member_edited() {
// Also fix all function calls.
List<int> lst;
script->get_node_list(&lst);
- for (List<int>::Element *F = lst.front(); F; F = F->next()) {
- Ref<VisualScriptFunctionCall> fncall = script->get_node(F->get());
+ for (int &F : lst) {
+ Ref<VisualScriptFunctionCall> fncall = script->get_node(F);
if (!fncall.is_valid()) {
continue;
}
@@ -1572,13 +1570,13 @@ void VisualScriptEditor::_remove_output_port(int p_id, int p_port) {
script->get_data_connection_list(&data_connections);
HashMap<int, Set<int>> conn_map;
- for (const List<VisualScript::DataConnection>::Element *E = data_connections.front(); E; E = E->next()) {
- if (E->get().from_node == p_id && E->get().from_port == p_port) {
+ for (const VisualScript::DataConnection &E : data_connections) {
+ if (E.from_node == p_id && E.from_port == p_port) {
// Push into the connections map.
- if (!conn_map.has(E->get().to_node)) {
- conn_map.set(E->get().to_node, Set<int>());
+ if (!conn_map.has(E.to_node)) {
+ conn_map.set(E.to_node, Set<int>());
}
- conn_map[E->get().to_node].insert(E->get().to_port);
+ conn_map[E.to_node].insert(E.to_port);
}
}
@@ -1587,9 +1585,9 @@ void VisualScriptEditor::_remove_output_port(int p_id, int p_port) {
List<int> keys;
conn_map.get_key_list(&keys);
- for (const List<int>::Element *E = keys.front(); E; E = E->next()) {
- for (const Set<int>::Element *F = conn_map[E->get()].front(); F; F = F->next()) {
- undo_redo->add_undo_method(script.ptr(), "data_connect", p_id, p_port, E->get(), F->get());
+ for (const int &E : keys) {
+ for (const Set<int>::Element *F = conn_map[E].front(); F; F = F->next()) {
+ undo_redo->add_undo_method(script.ptr(), "data_connect", p_id, p_port, E, F);
}
}
@@ -1642,8 +1640,8 @@ Vector2 VisualScriptEditor::_get_available_pos(bool p_centered, Vector2 p_pos) c
bool exists = false;
List<int> existing;
script->get_node_list(&existing);
- for (List<int>::Element *E = existing.front(); E; E = E->next()) {
- Point2 pos = script->get_node_position(E->get());
+ for (int &E : existing) {
+ Point2 pos = script->get_node_position(E);
if (pos.distance_to(p_pos) < 50) {
p_pos += Vector2(graph->get_snap(), graph->get_snap());
exists = true;
@@ -1698,8 +1696,8 @@ void VisualScriptEditor::_on_nodes_delete() {
undo_redo->create_action(TTR("Remove VisualScript Nodes"));
- for (List<int>::Element *F = to_erase.front(); F; F = F->next()) {
- int cr_node = F->get();
+ for (int &F : to_erase) {
+ int cr_node = F;
undo_redo->add_do_method(script.ptr(), "remove_node", cr_node);
undo_redo->add_undo_method(script.ptr(), "add_node", cr_node, script->get_node(cr_node), script->get_node_position(cr_node));
@@ -1707,18 +1705,18 @@ void VisualScriptEditor::_on_nodes_delete() {
List<VisualScript::SequenceConnection> sequence_conns;
script->get_sequence_connection_list(&sequence_conns);
- for (List<VisualScript::SequenceConnection>::Element *E = sequence_conns.front(); E; E = E->next()) {
- if (E->get().from_node == cr_node || E->get().to_node == cr_node) {
- undo_redo->add_undo_method(script.ptr(), "sequence_connect", E->get().from_node, E->get().from_output, E->get().to_node);
+ for (const VisualScript::SequenceConnection &E : sequence_conns) {
+ if (E.from_node == cr_node || E.to_node == cr_node) {
+ undo_redo->add_undo_method(script.ptr(), "sequence_connect", E.from_node, E.from_output, E.to_node);
}
}
List<VisualScript::DataConnection> data_conns;
script->get_data_connection_list(&data_conns);
- for (List<VisualScript::DataConnection>::Element *E = data_conns.front(); E; E = E->next()) {
- if (E->get().from_node == F->get() || E->get().to_node == F->get()) {
- undo_redo->add_undo_method(script.ptr(), "data_connect", E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
+ for (const VisualScript::DataConnection &E : data_conns) {
+ if (E.from_node == F || E.to_node == F) {
+ undo_redo->add_undo_method(script.ptr(), "data_connect", E.from_node, E.from_port, E.to_node, E.to_port);
}
}
}
@@ -1767,17 +1765,17 @@ void VisualScriptEditor::_on_nodes_duplicate() {
List<VisualScript::SequenceConnection> seqs;
script->get_sequence_connection_list(&seqs);
- for (List<VisualScript::SequenceConnection>::Element *E = seqs.front(); E; E = E->next()) {
- if (to_duplicate.has(E->get().from_node) && to_duplicate.has(E->get().to_node)) {
- undo_redo->add_do_method(script.ptr(), "sequence_connect", remap[E->get().from_node], E->get().from_output, remap[E->get().to_node]);
+ for (const VisualScript::SequenceConnection &E : seqs) {
+ if (to_duplicate.has(E.from_node) && to_duplicate.has(E.to_node)) {
+ undo_redo->add_do_method(script.ptr(), "sequence_connect", remap[E.from_node], E.from_output, remap[E.to_node]);
}
}
List<VisualScript::DataConnection> data;
script->get_data_connection_list(&data);
- for (List<VisualScript::DataConnection>::Element *E = data.front(); E; E = E->next()) {
- if (to_duplicate.has(E->get().from_node) && to_duplicate.has(E->get().to_node)) {
- undo_redo->add_do_method(script.ptr(), "data_connect", remap[E->get().from_node], E->get().from_port, remap[E->get().to_node], E->get().to_port);
+ for (const VisualScript::DataConnection &E : data) {
+ if (to_duplicate.has(E.from_node) && to_duplicate.has(E.to_node)) {
+ undo_redo->add_do_method(script.ptr(), "data_connect", remap[E.from_node], E.from_port, remap[E.to_node], E.to_port);
}
}
@@ -1903,8 +1901,8 @@ void VisualScriptEditor::_rename_function(const String &name, const String &new_
// Also fix all function calls.
List<int> lst;
script->get_node_list(&lst);
- for (List<int>::Element *F = lst.front(); F; F = F->next()) {
- Ref<VisualScriptFunctionCall> fncall = script->get_node(F->get());
+ for (int &F : lst) {
+ Ref<VisualScriptFunctionCall> fncall = script->get_node(F);
if (!fncall.is_valid()) {
continue;
}
@@ -2188,7 +2186,7 @@ void VisualScriptEditor::drop_data_fw(const Point2 &p_point, const Variant &p_da
int new_id = script->get_available_id();
if (files.size()) {
- undo_redo->create_action(TTR("Add Preload Node"));
+ undo_redo->create_action(TTR("Add Node(s)"));
for (int i = 0; i < files.size(); i++) {
Ref<Resource> res = ResourceLoader::load(files[i]);
@@ -2221,8 +2219,8 @@ void VisualScriptEditor::drop_data_fw(const Point2 &p_point, const Variant &p_da
undo_redo->commit_action();
}
- for (List<int>::Element *E = new_ids.front(); E; E = E->next()) {
- Node *node = graph->get_node(itos(E->get()));
+ for (int &E : new_ids) {
+ Node *node = graph->get_node(itos(E));
if (node) {
graph->set_selected(node);
_node_selected(node);
@@ -2554,12 +2552,12 @@ void VisualScriptEditor::goto_line(int p_line, bool p_with_error) {
List<StringName> functions;
script->get_function_list(&functions);
- for (List<StringName>::Element *E = functions.front(); E; E = E->next()) {
+ for (const StringName &E : functions) {
if (script->has_node(p_line)) {
_update_graph();
_update_members();
- call_deferred(SNAME("call_deferred"), "_center_on_node", E->get(), p_line); //editor might be just created and size might not exist yet
+ call_deferred(SNAME("call_deferred"), "_center_on_node", E, p_line); //editor might be just created and size might not exist yet
return;
}
}
@@ -2600,13 +2598,13 @@ Array VisualScriptEditor::get_breakpoints() {
Array breakpoints;
List<StringName> functions;
script->get_function_list(&functions);
- for (List<StringName>::Element *E = functions.front(); E; E = E->next()) {
+ for (int i = 0; i < functions.size(); i++) {
List<int> nodes;
script->get_node_list(&nodes);
- for (List<int>::Element *F = nodes.front(); F; F = F->next()) {
- Ref<VisualScriptNode> vsn = script->get_node(F->get());
+ for (int &F : nodes) {
+ Ref<VisualScriptNode> vsn = script->get_node(F);
if (vsn->is_breakpoint()) {
- breakpoints.push_back(F->get() - 1); // Subtract 1 because breakpoints in text start from zero.
+ breakpoints.push_back(F - 1); // Subtract 1 because breakpoints in text start from zero.
}
}
}
@@ -2775,18 +2773,18 @@ void VisualScriptEditor::_remove_node(int p_id) {
List<VisualScript::SequenceConnection> sequence_conns;
script->get_sequence_connection_list(&sequence_conns);
- for (List<VisualScript::SequenceConnection>::Element *E = sequence_conns.front(); E; E = E->next()) {
- if (E->get().from_node == p_id || E->get().to_node == p_id) {
- undo_redo->add_undo_method(script.ptr(), "sequence_connect", E->get().from_node, E->get().from_output, E->get().to_node);
+ for (const VisualScript::SequenceConnection &E : sequence_conns) {
+ if (E.from_node == p_id || E.to_node == p_id) {
+ undo_redo->add_undo_method(script.ptr(), "sequence_connect", E.from_node, E.from_output, E.to_node);
}
}
List<VisualScript::DataConnection> data_conns;
script->get_data_connection_list(&data_conns);
- for (List<VisualScript::DataConnection>::Element *E = data_conns.front(); E; E = E->next()) {
- if (E->get().from_node == p_id || E->get().to_node == p_id) {
- undo_redo->add_undo_method(script.ptr(), "data_connect", E->get().from_node, E->get().from_port, E->get().to_node, E->get().to_port);
+ for (const VisualScript::DataConnection &E : data_conns) {
+ if (E.from_node == p_id || E.to_node == p_id) {
+ undo_redo->add_undo_method(script.ptr(), "data_connect", E.from_node, E.from_port, E.to_node, E.to_port);
}
}
@@ -2804,9 +2802,9 @@ bool VisualScriptEditor::node_has_sequence_connections(int p_id) {
List<VisualScript::SequenceConnection> sequence_conns;
script->get_sequence_connection_list(&sequence_conns);
- for (List<VisualScript::SequenceConnection>::Element *E = sequence_conns.front(); E; E = E->next()) {
- int from = E->get().from_node;
- int to = E->get().to_node;
+ for (const VisualScript::SequenceConnection &E : sequence_conns) {
+ int from = E.from_node;
+ int to = E.to_node;
if (to == p_id || from == p_id) {
return true;
@@ -3462,9 +3460,9 @@ void VisualScriptEditor::_selected_new_virtual_method(const String &p_text, cons
List<MethodInfo> methods;
bool found = false;
ClassDB::get_virtual_methods(script->get_instance_base_type(), &methods);
- for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
- if (E->get().name == name) {
- minfo = E->get();
+ for (const MethodInfo &E : methods) {
+ if (E.name == name) {
+ minfo = E;
found = true;
}
}
@@ -3734,8 +3732,8 @@ void VisualScriptEditor::_menu_option(int p_what) {
_update_graph();
- for (List<String>::Element *E = reselect.front(); E; E = E->next()) {
- GraphNode *gn = Object::cast_to<GraphNode>(graph->get_node(E->get()));
+ for (const String &E : reselect) {
+ GraphNode *gn = Object::cast_to<GraphNode>(graph->get_node(E));
gn->set_selected(true);
}
@@ -3774,18 +3772,18 @@ void VisualScriptEditor::_menu_option(int p_what) {
List<VisualScript::SequenceConnection> sequence_connections;
script->get_sequence_connection_list(&sequence_connections);
- for (List<VisualScript::SequenceConnection>::Element *E = sequence_connections.front(); E; E = E->next()) {
- if (clipboard->nodes.has(E->get().from_node) && clipboard->nodes.has(E->get().to_node)) {
- clipboard->sequence_connections.insert(E->get());
+ for (const VisualScript::SequenceConnection &E : sequence_connections) {
+ if (clipboard->nodes.has(E.from_node) && clipboard->nodes.has(E.to_node)) {
+ clipboard->sequence_connections.insert(E);
}
}
List<VisualScript::DataConnection> data_connections;
script->get_data_connection_list(&data_connections);
- for (List<VisualScript::DataConnection>::Element *E = data_connections.front(); E; E = E->next()) {
- if (clipboard->nodes.has(E->get().from_node) && clipboard->nodes.has(E->get().to_node)) {
- clipboard->data_connections.insert(E->get());
+ for (const VisualScript::DataConnection &E : data_connections) {
+ if (clipboard->nodes.has(E.from_node) && clipboard->nodes.has(E.to_node)) {
+ clipboard->data_connections.insert(E);
}
}
if (p_what == EDIT_CUT_NODES) {
@@ -3811,8 +3809,8 @@ void VisualScriptEditor::_menu_option(int p_what) {
{
List<int> nodes;
script->get_node_list(&nodes);
- for (List<int>::Element *E = nodes.front(); E; E = E->next()) {
- Vector2 pos = script->get_node_position(E->get()).snapped(Vector2(2, 2));
+ for (int &E : nodes) {
+ Vector2 pos = script->get_node_position(E).snapped(Vector2(2, 2));
existing_positions.insert(pos);
}
}
@@ -3935,22 +3933,22 @@ void VisualScriptEditor::_menu_option(int p_what) {
// Pick the node with input sequence.
Set<int> nodes_from;
Set<int> nodes_to;
- for (List<VisualScript::SequenceConnection>::Element *E = seqs.front(); E; E = E->next()) {
- if (nodes.has(E->get().from_node) && nodes.has(E->get().to_node)) {
- seqmove.insert(E->get());
- nodes_from.insert(E->get().from_node);
- } else if (nodes.has(E->get().from_node) && !nodes.has(E->get().to_node)) {
- seqext.insert(E->get());
- } else if (!nodes.has(E->get().from_node) && nodes.has(E->get().to_node)) {
+ for (const VisualScript::SequenceConnection &E : seqs) {
+ if (nodes.has(E.from_node) && nodes.has(E.to_node)) {
+ seqmove.insert(E);
+ nodes_from.insert(E.from_node);
+ } else if (nodes.has(E.from_node) && !nodes.has(E.to_node)) {
+ seqext.insert(E);
+ } else if (!nodes.has(E.from_node) && nodes.has(E.to_node)) {
if (start_node == -1) {
- seqext.insert(E->get());
- start_node = E->get().to_node;
+ seqext.insert(E);
+ start_node = E.to_node;
} else {
EditorNode::get_singleton()->show_warning(TTR("Try to only have one sequence input in selection."));
return;
}
}
- nodes_to.insert(E->get().to_node);
+ nodes_to.insert(E.to_node);
}
// To use to add return nodes.
@@ -3978,20 +3976,20 @@ void VisualScriptEditor::_menu_option(int p_what) {
{
List<VisualScript::DataConnection> dats;
script->get_data_connection_list(&dats);
- for (List<VisualScript::DataConnection>::Element *E = dats.front(); E; E = E->next()) {
- if (nodes.has(E->get().from_node) && nodes.has(E->get().to_node)) {
- datamove.insert(E->get());
- } else if (!nodes.has(E->get().from_node) && nodes.has(E->get().to_node)) {
+ for (const VisualScript::DataConnection &E : dats) {
+ if (nodes.has(E.from_node) && nodes.has(E.to_node)) {
+ datamove.insert(E);
+ } else if (!nodes.has(E.from_node) && nodes.has(E.to_node)) {
// Add all these as inputs for the Function.
- Ref<VisualScriptNode> node = script->get_node(E->get().to_node);
+ Ref<VisualScriptNode> node = script->get_node(E.to_node);
if (node.is_valid()) {
- dataext.insert(E->get());
- PropertyInfo pi = node->get_input_value_port_info(E->get().to_port);
+ dataext.insert(E);
+ PropertyInfo pi = node->get_input_value_port_info(E.to_port);
inputs.push_back(pi.type);
- input_connections.push_back(Pair<int, int>(E->get().to_node, E->get().to_port));
+ input_connections.push_back(Pair<int, int>(E.to_node, E.to_port));
}
- } else if (nodes.has(E->get().from_node) && !nodes.has(E->get().to_node)) {
- dataext.insert(E->get());
+ } else if (nodes.has(E.from_node) && !nodes.has(E.to_node)) {
+ dataext.insert(E);
}
}
}
@@ -4092,9 +4090,9 @@ void VisualScriptEditor::_menu_option(int p_what) {
// but I hope that it will not be a problem considering that we won't be creating functions so frequently,
// and cyclic connections would be a problem but hopefully we won't let them get to this point.
void VisualScriptEditor::_get_ends(int p_node, const List<VisualScript::SequenceConnection> &p_seqs, const Set<int> &p_selected, Set<int> &r_end_nodes) {
- for (const List<VisualScript::SequenceConnection>::Element *E = p_seqs.front(); E; E = E->next()) {
- int from = E->get().from_node;
- int to = E->get().to_node;
+ for (const VisualScript::SequenceConnection &E : p_seqs) {
+ int from = E.from_node;
+ int to = E.to_node;
if (from == p_node && p_selected.has(to)) {
// This is an interior connection move forward to the to node.
@@ -4168,16 +4166,16 @@ void VisualScriptEditor::_member_option(int p_option) {
undo_redo->add_undo_method(script.ptr(), "add_node", fn_node, script->get_node(fn_node), script->get_node_position(fn_node));
List<VisualScript::SequenceConnection> seqcons;
script->get_sequence_connection_list(&seqcons);
- for (const List<VisualScript::SequenceConnection>::Element *E = seqcons.front(); E; E = E->next()) {
- if (E->get().from_node == fn_node) {
- undo_redo->add_undo_method(script.ptr(), "sequence_connect", fn_node, E->get().from_output, E->get().to_node);
+ for (const VisualScript::SequenceConnection &E : seqcons) {
+ if (E.from_node == fn_node) {
+ undo_redo->add_undo_method(script.ptr(), "sequence_connect", fn_node, E.from_output, E.to_node);
}
}
List<VisualScript::DataConnection> datcons;
script->get_data_connection_list(&datcons);
- for (const List<VisualScript::DataConnection>::Element *E = datcons.front(); E; E = E->next()) {
- if (E->get().from_node == fn_node) {
- undo_redo->add_undo_method(script.ptr(), "data_connect", fn_node, E->get().from_port, E->get().to_node, E->get().to_port);
+ for (const VisualScript::DataConnection &E : datcons) {
+ if (E.from_node == fn_node) {
+ undo_redo->add_undo_method(script.ptr(), "data_connect", fn_node, E.from_port, E.to_node, E.to_port);
}
}
undo_redo->add_do_method(this, "_update_members");
diff --git a/modules/visual_script/visual_script_flow_control.cpp b/modules/visual_script/visual_script_flow_control.cpp
index af86f90b25..62a4f465cb 100644
--- a/modules/visual_script/visual_script_flow_control.cpp
+++ b/modules/visual_script/visual_script_flow_control.cpp
@@ -852,11 +852,11 @@ void VisualScriptTypeCast::_bind_methods() {
}
String script_ext_hint;
- for (List<String>::Element *E = script_extensions.front(); E; E = E->next()) {
+ for (const String &E : script_extensions) {
if (script_ext_hint != String()) {
script_ext_hint += ",";
}
- script_ext_hint += "*." + E->get();
+ script_ext_hint += "*." + E;
}
ADD_PROPERTY(PropertyInfo(Variant::STRING, "base_type", PROPERTY_HINT_TYPE_STRING, "Object"), "set_base_type", "get_base_type");
diff --git a/modules/visual_script/visual_script_func_nodes.cpp b/modules/visual_script/visual_script_func_nodes.cpp
index 7b5ca56dcc..6ba5ad4fd6 100644
--- a/modules/visual_script/visual_script_func_nodes.cpp
+++ b/modules/visual_script/visual_script_func_nodes.cpp
@@ -538,11 +538,11 @@ void VisualScriptFunctionCall::_validate_property(PropertyInfo &property) const
Engine::get_singleton()->get_singletons(&names);
property.hint = PROPERTY_HINT_ENUM;
String sl;
- for (List<Engine::Singleton>::Element *E = names.front(); E; E = E->next()) {
+ for (const Engine::Singleton &E : names) {
if (sl != String()) {
sl += ",";
}
- sl += E->get().name;
+ sl += E.name;
}
property.hint_string = sl;
}
@@ -683,11 +683,11 @@ void VisualScriptFunctionCall::_bind_methods() {
}
String script_ext_hint;
- for (List<String>::Element *E = script_extensions.front(); E; E = E->next()) {
+ for (const String &E : script_extensions) {
if (script_ext_hint != String()) {
script_ext_hint += ",";
}
- script_ext_hint += "*." + E->get();
+ script_ext_hint += "*." + E;
}
ADD_PROPERTY(PropertyInfo(Variant::INT, "call_mode", PROPERTY_HINT_ENUM, "Self,Node Path,Instance,Basic Type,Singleton"), "set_call_mode", "get_call_mode");
@@ -1004,13 +1004,13 @@ PropertyInfo VisualScriptPropertySet::get_input_value_port_info(int p_idx) const
List<PropertyInfo> props;
ClassDB::get_property_list(_get_base_type(), &props, false);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (E->get().name == property) {
+ for (const PropertyInfo &E : props) {
+ if (E.name == property) {
String detail_prop_name = property;
if (index != StringName()) {
detail_prop_name += "." + String(index);
}
- PropertyInfo pinfo = PropertyInfo(E->get().type, detail_prop_name, PROPERTY_HINT_TYPE_STRING, E->get().hint_string);
+ PropertyInfo pinfo = PropertyInfo(E.type, detail_prop_name, PROPERTY_HINT_TYPE_STRING, E.hint_string);
_adjust_input_index(pinfo);
return pinfo;
}
@@ -1135,9 +1135,9 @@ void VisualScriptPropertySet::_update_cache() {
List<PropertyInfo> pinfo;
v.get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (E->get().name == property) {
- type_cache = E->get();
+ for (const PropertyInfo &E : pinfo) {
+ if (E.name == property) {
+ type_cache = E;
}
}
@@ -1186,9 +1186,9 @@ void VisualScriptPropertySet::_update_cache() {
script->get_script_property_list(&pinfo);
}
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (E->get().name == property) {
- type_cache = E->get();
+ for (const PropertyInfo &E : pinfo) {
+ if (E.name == property) {
+ type_cache = E;
return;
}
}
@@ -1354,8 +1354,8 @@ void VisualScriptPropertySet::_validate_property(PropertyInfo &property) const {
List<PropertyInfo> plist;
v.get_property_list(&plist);
String options = "";
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- options += "," + E->get().name;
+ for (const PropertyInfo &E : plist) {
+ options += "," + E.name;
}
property.hint = PROPERTY_HINT_ENUM;
@@ -1410,11 +1410,11 @@ void VisualScriptPropertySet::_bind_methods() {
}
String script_ext_hint;
- for (List<String>::Element *E = script_extensions.front(); E; E = E->next()) {
+ for (const String &E : script_extensions) {
if (script_ext_hint != String()) {
script_ext_hint += ",";
}
- script_ext_hint += "*." + E->get();
+ script_ext_hint += "*." + E;
}
ADD_PROPERTY(PropertyInfo(Variant::INT, "set_mode", PROPERTY_HINT_ENUM, "Self,Node Path,Instance,Basic Type"), "set_call_mode", "get_call_mode");
@@ -1820,9 +1820,9 @@ void VisualScriptPropertyGet::_update_cache() {
List<PropertyInfo> pinfo;
v.get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (E->get().name == property) {
- type_cache = E->get().type;
+ for (const PropertyInfo &E : pinfo) {
+ if (E.name == property) {
+ type_cache = E.type;
return;
}
}
@@ -2059,8 +2059,8 @@ void VisualScriptPropertyGet::_validate_property(PropertyInfo &property) const {
List<PropertyInfo> plist;
v.get_property_list(&plist);
String options = "";
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- options += "," + E->get().name;
+ for (const PropertyInfo &E : plist) {
+ options += "," + E.name;
}
property.hint = PROPERTY_HINT_ENUM;
@@ -2112,11 +2112,11 @@ void VisualScriptPropertyGet::_bind_methods() {
}
String script_ext_hint;
- for (List<String>::Element *E = script_extensions.front(); E; E = E->next()) {
+ for (const String &E : script_extensions) {
if (script_ext_hint != String()) {
script_ext_hint += ",";
}
- script_ext_hint += "." + E->get();
+ script_ext_hint += "." + E;
}
ADD_PROPERTY(PropertyInfo(Variant::INT, "set_mode", PROPERTY_HINT_ENUM, "Self,Node Path,Instance,Basic Type"), "set_call_mode", "get_call_mode");
@@ -2268,7 +2268,7 @@ int VisualScriptEmitSignal::get_input_value_port_count() const {
}
int VisualScriptEmitSignal::get_output_value_port_count() const {
- return 1;
+ return 0;
}
String VisualScriptEmitSignal::get_output_sequence_port_text(int p_port) const {
@@ -2311,16 +2311,6 @@ StringName VisualScriptEmitSignal::get_signal() const {
return name;
}
-void VisualScriptEmitSignal::_adjust_input_index(PropertyInfo &pinfo) const {
- if (index != StringName()) {
- Variant v;
- Callable::CallError ce;
- Variant::construct(pinfo.type, v, nullptr, 0, ce);
- Variant i = v.get(index);
- pinfo.type = i.get_type();
- }
-}
-
void VisualScriptEmitSignal::_validate_property(PropertyInfo &property) const {
if (property.name == "signal") {
property.hint = PROPERTY_HINT_ENUM;
@@ -2333,11 +2323,11 @@ void VisualScriptEmitSignal::_validate_property(PropertyInfo &property) const {
}
String ml;
- for (List<StringName>::Element *E = sigs.front(); E; E = E->next()) {
+ for (const StringName &E : sigs) {
if (ml != String()) {
ml += ",";
}
- ml += E->get();
+ ml += E;
}
property.hint_string = ml;
@@ -2428,8 +2418,8 @@ void register_visual_script_func_nodes() {
List<MethodInfo> ml;
vt.get_method_list(&ml);
- for (List<MethodInfo>::Element *E = ml.front(); E; E = E->next()) {
- VisualScriptLanguage::singleton->add_register_func("functions/by_type/" + type_name + "/" + E->get().name, create_basic_type_call_node);
+ for (const MethodInfo &E : ml) {
+ VisualScriptLanguage::singleton->add_register_func("functions/by_type/" + type_name + "/" + E.name, create_basic_type_call_node);
}
}
}
diff --git a/modules/visual_script/visual_script_func_nodes.h b/modules/visual_script/visual_script_func_nodes.h
index 37a707d108..cca08455f9 100644
--- a/modules/visual_script/visual_script_func_nodes.h
+++ b/modules/visual_script/visual_script_func_nodes.h
@@ -328,9 +328,6 @@ class VisualScriptEmitSignal : public VisualScriptNode {
private:
StringName name;
- StringName index;
-
- void _adjust_input_index(PropertyInfo &pinfo) const;
protected:
virtual void _validate_property(PropertyInfo &property) const override;
diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp
index 86d8050acb..c517d89aa5 100644
--- a/modules/visual_script/visual_script_nodes.cpp
+++ b/modules/visual_script/visual_script_nodes.cpp
@@ -1306,12 +1306,12 @@ void VisualScriptVariableGet::_validate_property(PropertyInfo &property) const {
vs->get_variable_list(&vars);
String vhint;
- for (List<StringName>::Element *E = vars.front(); E; E = E->next()) {
+ for (const StringName &E : vars) {
if (vhint != String()) {
vhint += ",";
}
- vhint += E->get().operator String();
+ vhint += E.operator String();
}
property.hint = PROPERTY_HINT_ENUM;
@@ -1416,12 +1416,12 @@ void VisualScriptVariableSet::_validate_property(PropertyInfo &property) const {
vs->get_variable_list(&vars);
String vhint;
- for (List<StringName>::Element *E = vars.front(); E; E = E->next()) {
+ for (const StringName &E : vars) {
if (vhint != String()) {
vhint += ",";
}
- vhint += E->get().operator String();
+ vhint += E.operator String();
}
property.hint = PROPERTY_HINT_ENUM;
@@ -1944,8 +1944,8 @@ void VisualScriptClassConstant::set_base_type(const StringName &p_which) {
ClassDB::get_integer_constant_list(base_type, &constants, true);
if (constants.size() > 0) {
bool found_name = false;
- for (List<String>::Element *E = constants.front(); E; E = E->next()) {
- if (E->get() == name) {
+ for (const String &E : constants) {
+ if (E == name) {
found_name = true;
break;
}
@@ -1993,11 +1993,11 @@ void VisualScriptClassConstant::_validate_property(PropertyInfo &property) const
ClassDB::get_integer_constant_list(base_type, &constants, true);
property.hint_string = "";
- for (List<String>::Element *E = constants.front(); E; E = E->next()) {
+ for (const String &E : constants) {
if (property.hint_string != String()) {
property.hint_string += ",";
}
- property.hint_string += E->get();
+ property.hint_string += E;
}
}
}
@@ -2078,8 +2078,8 @@ void VisualScriptBasicTypeConstant::set_basic_type(Variant::Type p_which) {
Variant::get_constants_for_type(type, &constants);
if (constants.size() > 0) {
bool found_name = false;
- for (List<StringName>::Element *E = constants.front(); E; E = E->next()) {
- if (E->get() == name) {
+ for (const StringName &E : constants) {
+ if (E == name) {
found_name = true;
break;
}
@@ -2131,11 +2131,11 @@ void VisualScriptBasicTypeConstant::_validate_property(PropertyInfo &property) c
return;
}
property.hint_string = "";
- for (List<StringName>::Element *E = constants.front(); E; E = E->next()) {
+ for (const StringName &E : constants) {
if (property.hint_string != String()) {
property.hint_string += ",";
}
- property.hint_string += String(E->get());
+ property.hint_string += String(E);
}
}
}
@@ -2358,15 +2358,15 @@ void VisualScriptEngineSingleton::_validate_property(PropertyInfo &property) con
Engine::get_singleton()->get_singletons(&singletons);
- for (List<Engine::Singleton>::Element *E = singletons.front(); E; E = E->next()) {
- if (E->get().name == "VS" || E->get().name == "PS" || E->get().name == "PS2D" || E->get().name == "AS" || E->get().name == "TS" || E->get().name == "SS" || E->get().name == "SS2D") {
+ for (const Engine::Singleton &E : singletons) {
+ if (E.name == "VS" || E.name == "PS" || E.name == "PS2D" || E.name == "AS" || E.name == "TS" || E.name == "SS" || E.name == "SS2D") {
continue; //skip these, too simple named
}
if (cc != String()) {
cc += ",";
}
- cc += E->get().name;
+ cc += E.name;
}
property.hint = PROPERTY_HINT_ENUM;
@@ -3749,9 +3749,7 @@ void VisualScriptInputAction::_validate_property(PropertyInfo &property) const {
ProjectSettings::get_singleton()->get_property_list(&pinfo);
Vector<String> al;
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- const PropertyInfo &pi = E->get();
-
+ for (const PropertyInfo &pi : pinfo) {
if (!pi.name.begins_with("input/")) {
continue;
}
@@ -3844,10 +3842,10 @@ void VisualScriptDeconstruct::_update_elements() {
List<PropertyInfo> pinfo;
v.get_property_list(&pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
+ for (const PropertyInfo &E : pinfo) {
Element e;
- e.name = E->get().name;
- e.type = E->get().type;
+ e.name = E.name;
+ e.type = E.type;
elements.push_back(e);
}
}
@@ -4025,24 +4023,24 @@ void register_visual_script_nodes() {
List<MethodInfo> constructors;
Variant::get_constructor_list(Variant::Type(i), &constructors);
- for (List<MethodInfo>::Element *E = constructors.front(); E; E = E->next()) {
- if (E->get().arguments.size() > 0) {
+ for (const MethodInfo &E : constructors) {
+ if (E.arguments.size() > 0) {
String name = "functions/constructors/" + Variant::get_type_name(Variant::Type(i)) + "(";
- for (int j = 0; j < E->get().arguments.size(); j++) {
+ for (int j = 0; j < E.arguments.size(); j++) {
if (j > 0) {
name += ", ";
}
- if (E->get().arguments.size() == 1) {
- name += Variant::get_type_name(E->get().arguments[j].type);
+ if (E.arguments.size() == 1) {
+ name += Variant::get_type_name(E.arguments[j].type);
} else {
- name += E->get().arguments[j].name;
+ name += E.arguments[j].name;
}
}
name += ")";
VisualScriptLanguage::singleton->add_register_func(name, create_constructor_node);
Pair<Variant::Type, MethodInfo> pair;
pair.first = Variant::Type(i);
- pair.second = E->get();
+ pair.second = E;
constructor_map[name] = pair;
}
}
diff --git a/modules/visual_script/visual_script_property_selector.cpp b/modules/visual_script/visual_script_property_selector.cpp
index ccb2e2df75..8bf1c6cbfa 100644
--- a/modules/visual_script/visual_script_property_selector.cpp
+++ b/modules/visual_script/visual_script_property_selector.cpp
@@ -93,7 +93,7 @@ void VisualScriptPropertySelector::_update_search() {
base = ClassDB::get_parent_class_nocheck(base);
}
- for (List<StringName>::Element *E = base_list.front(); E; E = E->next()) {
+ for (const StringName &E : base_list) {
List<MethodInfo> methods;
List<PropertyInfo> props;
TreeItem *category = nullptr;
@@ -135,7 +135,7 @@ void VisualScriptPropertySelector::_update_search() {
vbc->get_theme_icon(SNAME("PackedColorArray"), SNAME("EditorIcons"))
};
{
- String b = String(E->get());
+ String b = String(E);
category = search_options->create_item(root);
if (category) {
category->set_text(0, b.replace_first("*", ""));
@@ -154,30 +154,30 @@ void VisualScriptPropertySelector::_update_search() {
if (Object::cast_to<Script>(obj)) {
Object::cast_to<Script>(obj)->get_script_property_list(&props);
} else {
- ClassDB::get_property_list(E->get(), &props, true);
+ ClassDB::get_property_list(E, &props, true);
}
}
- for (List<PropertyInfo>::Element *F = props.front(); F; F = F->next()) {
- if (!(F->get().usage & PROPERTY_USAGE_EDITOR) && !(F->get().usage & PROPERTY_USAGE_SCRIPT_VARIABLE)) {
+ for (const PropertyInfo &F : props) {
+ if (!(F.usage & PROPERTY_USAGE_EDITOR) && !(F.usage & PROPERTY_USAGE_SCRIPT_VARIABLE)) {
continue;
}
- if (type_filter.size() && type_filter.find(F->get().type) == -1) {
+ if (type_filter.size() && type_filter.find(F.type) == -1) {
continue;
}
// capitalize() also converts underscore to space, we'll match again both possible styles
- String get_text_raw = String(vformat(TTR("Get %s"), F->get().name));
+ String get_text_raw = String(vformat(TTR("Get %s"), F.name));
String get_text = get_text_raw.capitalize();
- String set_text_raw = String(vformat(TTR("Set %s"), F->get().name));
+ String set_text_raw = String(vformat(TTR("Set %s"), F.name));
String set_text = set_text_raw.capitalize();
String input = search_box->get_text().capitalize();
if (input == String() || get_text_raw.findn(input) != -1 || get_text.findn(input) != -1) {
TreeItem *item = search_options->create_item(category ? category : root);
item->set_text(0, get_text);
- item->set_metadata(0, F->get().name);
- item->set_icon(0, type_icons[F->get().type]);
+ item->set_metadata(0, F.name);
+ item->set_icon(0, type_icons[F.type]);
item->set_metadata(1, "get");
item->set_collapsed(true);
item->set_selectable(0, true);
@@ -189,8 +189,8 @@ void VisualScriptPropertySelector::_update_search() {
if (input == String() || set_text_raw.findn(input) != -1 || set_text.findn(input) != -1) {
TreeItem *item = search_options->create_item(category ? category : root);
item->set_text(0, set_text);
- item->set_metadata(0, F->get().name);
- item->set_icon(0, type_icons[F->get().type]);
+ item->set_metadata(0, F.name);
+ item->set_icon(0, type_icons[F.type]);
item->set_metadata(1, "set");
item->set_selectable(0, true);
item->set_selectable(1, false);
@@ -211,7 +211,7 @@ void VisualScriptPropertySelector::_update_search() {
Object::cast_to<Script>(obj)->get_script_method_list(&methods);
}
- ClassDB::get_method_list(E->get(), &methods, true, true);
+ ClassDB::get_method_list(E, &methods, true, true);
}
}
for (List<MethodInfo>::Element *M = methods.front(); M; M = M->next()) {
@@ -340,11 +340,11 @@ void VisualScriptPropertySelector::get_visual_node_names(const String &root_filt
List<String> fnodes;
VisualScriptLanguage::singleton->get_registered_node_names(&fnodes);
- for (List<String>::Element *E = fnodes.front(); E; E = E->next()) {
- if (!E->get().begins_with(root_filter)) {
+ for (const String &E : fnodes) {
+ if (!E.begins_with(root_filter)) {
continue;
}
- Vector<String> path = E->get().split("/");
+ Vector<String> path = E.split("/");
// check if the name has the filter
bool in_filter = false;
@@ -355,7 +355,7 @@ void VisualScriptPropertySelector::get_visual_node_names(const String &root_filt
} else {
in_filter = false;
}
- if (E->get().findn(tx_filters[i]) != -1) {
+ if (E.findn(tx_filters[i]) != -1) {
in_filter = true;
break;
}
@@ -366,7 +366,7 @@ void VisualScriptPropertySelector::get_visual_node_names(const String &root_filt
bool in_modifier = p_modifiers.is_empty();
for (Set<String>::Element *F = p_modifiers.front(); F && in_modifier; F = F->next()) {
- if (E->get().findn(F->get()) != -1) {
+ if (E.findn(F->get()) != -1) {
in_modifier = true;
}
}
@@ -375,7 +375,7 @@ void VisualScriptPropertySelector::get_visual_node_names(const String &root_filt
}
TreeItem *item = search_options->create_item(root);
- Ref<VisualScriptNode> vnode = VisualScriptLanguage::singleton->create_node_from_name(E->get());
+ Ref<VisualScriptNode> vnode = VisualScriptLanguage::singleton->create_node_from_name(E);
Ref<VisualScriptOperator> vnode_operator = vnode;
String type_name;
if (vnode_operator.is_valid()) {
@@ -409,7 +409,7 @@ void VisualScriptPropertySelector::get_visual_node_names(const String &root_filt
item->set_text(0, type_name + String("").join(desc));
item->set_icon(0, vbc->get_theme_icon(SNAME("VisualScript"), SNAME("EditorIcons")));
item->set_selectable(0, true);
- item->set_metadata(0, E->get());
+ item->set_metadata(0, E);
item->set_selectable(0, true);
item->set_metadata(1, "visualscript");
item->set_selectable(1, false);
diff --git a/modules/visual_script/visual_script_yield_nodes.cpp b/modules/visual_script/visual_script_yield_nodes.cpp
index d8bc926a1d..9fa49b8a1d 100644
--- a/modules/visual_script/visual_script_yield_nodes.cpp
+++ b/modules/visual_script/visual_script_yield_nodes.cpp
@@ -438,21 +438,21 @@ void VisualScriptYieldSignal::_validate_property(PropertyInfo &property) const {
ClassDB::get_signal_list(_get_base_type(), &methods);
List<String> mstring;
- for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
- if (E->get().name.begins_with("_")) {
+ for (const MethodInfo &E : methods) {
+ if (E.name.begins_with("_")) {
continue;
}
- mstring.push_back(E->get().name.get_slice(":", 0));
+ mstring.push_back(E.name.get_slice(":", 0));
}
mstring.sort();
String ml;
- for (List<String>::Element *E = mstring.front(); E; E = E->next()) {
+ for (const String &E : mstring) {
if (ml != String()) {
ml += ",";
}
- ml += E->get();
+ ml += E;
}
property.hint_string = ml;
diff --git a/modules/webm/doc_classes/VideoStreamWebm.xml b/modules/webm/doc_classes/VideoStreamWebm.xml
index f3e13ba31a..3b9acfd873 100644
--- a/modules/webm/doc_classes/VideoStreamWebm.xml
+++ b/modules/webm/doc_classes/VideoStreamWebm.xml
@@ -12,17 +12,14 @@
</tutorials>
<methods>
<method name="get_file">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the WebM video file handled by this [VideoStreamWebm].
</description>
</method>
<method name="set_file">
- <return type="void">
- </return>
- <argument index="0" name="file" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="file" type="String" />
<description>
Sets the WebM video file that this [VideoStreamWebm] resource handles. The [code]file[/code] name should have the [code].webm[/code] extension.
</description>
diff --git a/modules/webrtc/doc_classes/WebRTCDataChannel.xml b/modules/webrtc/doc_classes/WebRTCDataChannel.xml
index 3435dda982..cf5735bab5 100644
--- a/modules/webrtc/doc_classes/WebRTCDataChannel.xml
+++ b/modules/webrtc/doc_classes/WebRTCDataChannel.xml
@@ -8,88 +8,76 @@
</tutorials>
<methods>
<method name="close">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Closes this data channel, notifying the other peer.
</description>
</method>
<method name="get_buffered_amount" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the number of bytes currently queued to be sent over this channel.
</description>
</method>
<method name="get_id" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the id assigned to this channel during creation (or auto-assigned during negotiation).
If the channel is not negotiated out-of-band the id will only be available after the connection is established (will return [code]65535[/code] until then).
</description>
</method>
<method name="get_label" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the label assigned to this channel during creation.
</description>
</method>
<method name="get_max_packet_life_time" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the [code]maxPacketLifeTime[/code] value assigned to this channel during creation.
Will be [code]65535[/code] if not specified.
</description>
</method>
<method name="get_max_retransmits" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the [code]maxRetransmits[/code] value assigned to this channel during creation.
Will be [code]65535[/code] if not specified.
</description>
</method>
<method name="get_protocol" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the sub-protocol assigned to this channel during creation. An empty string if not specified.
</description>
</method>
<method name="get_ready_state" qualifiers="const">
- <return type="int" enum="WebRTCDataChannel.ChannelState">
- </return>
+ <return type="int" enum="WebRTCDataChannel.ChannelState" />
<description>
Returns the current state of this channel, see [enum ChannelState].
</description>
</method>
<method name="is_negotiated" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this channel was created with out-of-band configuration.
</description>
</method>
<method name="is_ordered" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this channel was created with ordering enabled (default).
</description>
</method>
<method name="poll">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Reserved, but not used for now.
</description>
</method>
<method name="was_string_packet" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the last received packet was transferred as text. See [member write_mode].
</description>
diff --git a/modules/webrtc/doc_classes/WebRTCMultiplayerPeer.xml b/modules/webrtc/doc_classes/WebRTCMultiplayerPeer.xml
index 26c5bfa6ce..c53af22ae1 100644
--- a/modules/webrtc/doc_classes/WebRTCMultiplayerPeer.xml
+++ b/modules/webrtc/doc_classes/WebRTCMultiplayerPeer.xml
@@ -12,69 +12,56 @@
</tutorials>
<methods>
<method name="add_peer">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="peer" type="WebRTCPeerConnection">
- </argument>
- <argument index="1" name="peer_id" type="int">
- </argument>
- <argument index="2" name="unreliable_lifetime" type="int" default="1">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="peer" type="WebRTCPeerConnection" />
+ <argument index="1" name="peer_id" type="int" />
+ <argument index="2" name="unreliable_lifetime" type="int" default="1" />
<description>
Add a new peer to the mesh with the given [code]peer_id[/code]. The [WebRTCPeerConnection] must be in state [constant WebRTCPeerConnection.STATE_NEW].
Three channels will be created for reliable, unreliable, and ordered transport. The value of [code]unreliable_lifetime[/code] will be passed to the [code]maxPacketLifetime[/code] option when creating unreliable and ordered channels (see [method WebRTCPeerConnection.create_data_channel]).
</description>
</method>
<method name="close">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Close all the add peer connections and channels, freeing all resources.
</description>
</method>
<method name="get_peer">
- <return type="Dictionary">
- </return>
- <argument index="0" name="peer_id" type="int">
- </argument>
+ <return type="Dictionary" />
+ <argument index="0" name="peer_id" type="int" />
<description>
Return a dictionary representation of the peer with given [code]peer_id[/code] with three keys. [code]connection[/code] containing the [WebRTCPeerConnection] to this peer, [code]channels[/code] an array of three [WebRTCDataChannel], and [code]connected[/code] a boolean representing if the peer connection is currently connected (all three channels are open).
</description>
</method>
<method name="get_peers">
- <return type="Dictionary">
- </return>
+ <return type="Dictionary" />
<description>
Returns a dictionary which keys are the peer ids and values the peer representation as in [method get_peer].
</description>
</method>
<method name="has_peer">
- <return type="bool">
- </return>
- <argument index="0" name="peer_id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="peer_id" type="int" />
<description>
Returns [code]true[/code] if the given [code]peer_id[/code] is in the peers map (it might not be connected though).
</description>
</method>
<method name="initialize">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="peer_id" type="int">
- </argument>
- <argument index="1" name="server_compatibility" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="peer_id" type="int" />
+ <argument index="1" name="server_compatibility" type="bool" default="false" />
+ <argument index="2" name="channels_config" type="Array" default="[]" />
<description>
Initialize the multiplayer peer with the given [code]peer_id[/code] (must be between 1 and 2147483647).
If [code]server_compatibilty[/code] is [code]false[/code] (default), the multiplayer peer will be immediately in state [constant MultiplayerPeer.CONNECTION_CONNECTED] and [signal MultiplayerPeer.connection_succeeded] will not be emitted.
If [code]server_compatibilty[/code] is [code]true[/code] the peer will suppress all [signal MultiplayerPeer.peer_connected] signals until a peer with id [constant MultiplayerPeer.TARGET_PEER_SERVER] connects and then emit [signal MultiplayerPeer.connection_succeeded]. After that the signal [signal MultiplayerPeer.peer_connected] will be emitted for every already connected peer, and any new peer that might connect. If the server peer disconnects after that, signal [signal MultiplayerPeer.server_disconnected] will be emitted and state will become [constant MultiplayerPeer.CONNECTION_CONNECTED].
+ You can optionally specify a [code]channels_config[/code] array of [enum MultiplayerPeer.TransferMode] which will be used to create extra channels (WebRTC only supports one transfer mode per channel).
</description>
</method>
<method name="remove_peer">
- <return type="void">
- </return>
- <argument index="0" name="peer_id" type="int">
- </argument>
+ <return type="void" />
+ <argument index="0" name="peer_id" type="int" />
<description>
Remove the peer with given [code]peer_id[/code] from the mesh. If the peer was connected, and [signal MultiplayerPeer.peer_connected] was emitted for it, then [signal MultiplayerPeer.peer_disconnected] will be emitted.
</description>
diff --git a/modules/webrtc/doc_classes/WebRTCPeerConnection.xml b/modules/webrtc/doc_classes/WebRTCPeerConnection.xml
index 62e524825d..f6f360503f 100644
--- a/modules/webrtc/doc_classes/WebRTCPeerConnection.xml
+++ b/modules/webrtc/doc_classes/WebRTCPeerConnection.xml
@@ -15,33 +15,25 @@
</tutorials>
<methods>
<method name="add_ice_candidate">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="media" type="String">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
- <argument index="2" name="name" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="media" type="String" />
+ <argument index="1" name="index" type="int" />
+ <argument index="2" name="name" type="String" />
<description>
Add an ice candidate generated by a remote peer (and received over the signaling server). See [signal ice_candidate_created].
</description>
</method>
<method name="close">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Close the peer connection and all data channels associated with it. Note, you cannot reuse this object for a new connection unless you call [method initialize].
</description>
</method>
<method name="create_data_channel">
- <return type="WebRTCDataChannel">
- </return>
- <argument index="0" name="label" type="String">
- </argument>
+ <return type="WebRTCDataChannel" />
+ <argument index="0" name="label" type="String" />
<argument index="1" name="options" type="Dictionary" default="{
-}">
- </argument>
+}" />
<description>
Returns a new [WebRTCDataChannel] (or [code]null[/code] on failure) with given [code]label[/code] and optionally configured via the [code]options[/code] dictionary. This method can only be called when the connection is in state [constant STATE_NEW].
There are two ways to create a working data channel: either call [method create_data_channel] on only one of the peer and listen to [signal data_channel_received] on the other, or call [method create_data_channel] on both peers, with the same values, and the [code]negotiated[/code] option set to [code]true[/code].
@@ -63,26 +55,22 @@
</description>
</method>
<method name="create_offer">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Creates a new SDP offer to start a WebRTC connection with a remote peer. At least one [WebRTCDataChannel] must have been created before calling this method.
If this functions returns [constant OK], [signal session_description_created] will be called when the session is ready to be sent.
</description>
</method>
<method name="get_connection_state" qualifiers="const">
- <return type="int" enum="WebRTCPeerConnection.ConnectionState">
- </return>
+ <return type="int" enum="WebRTCPeerConnection.ConnectionState" />
<description>
Returns the connection state. See [enum ConnectionState].
</description>
</method>
<method name="initialize">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<argument index="0" name="configuration" type="Dictionary" default="{
-}">
- </argument>
+}" />
<description>
Re-initialize this peer connection, closing any previously active connection, and going back to state [constant STATE_NEW]. A dictionary of [code]options[/code] can be passed to configure the peer connection.
Valid [code]options[/code] are:
@@ -103,31 +91,24 @@
</description>
</method>
<method name="poll">
- <return type="int" enum="Error">
- </return>
+ <return type="int" enum="Error" />
<description>
Call this method frequently (e.g. in [method Node._process] or [method Node._physics_process]) to properly receive signals.
</description>
</method>
<method name="set_local_description">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="type" type="String">
- </argument>
- <argument index="1" name="sdp" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="type" type="String" />
+ <argument index="1" name="sdp" type="String" />
<description>
Sets the SDP description of the local peer. This should be called in response to [signal session_description_created].
After calling this function the peer will start emitting [signal ice_candidate_created] (unless an [enum Error] different from [constant OK] is returned).
</description>
</method>
<method name="set_remote_description">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="type" type="String">
- </argument>
- <argument index="1" name="sdp" type="String">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="type" type="String" />
+ <argument index="1" name="sdp" type="String" />
<description>
Sets the SDP description of the remote peer. This should be called with the values generated by a remote peer and received over the signaling server.
If [code]type[/code] is [code]offer[/code] the peer will emit [signal session_description_created] with the appropriate answer.
@@ -137,29 +118,23 @@
</methods>
<signals>
<signal name="data_channel_received">
- <argument index="0" name="channel" type="Object">
- </argument>
+ <argument index="0" name="channel" type="Object" />
<description>
Emitted when a new in-band channel is received, i.e. when the channel was created with [code]negotiated: false[/code] (default).
The object will be an instance of [WebRTCDataChannel]. You must keep a reference of it or it will be closed automatically. See [method create_data_channel].
</description>
</signal>
<signal name="ice_candidate_created">
- <argument index="0" name="media" type="String">
- </argument>
- <argument index="1" name="index" type="int">
- </argument>
- <argument index="2" name="name" type="String">
- </argument>
+ <argument index="0" name="media" type="String" />
+ <argument index="1" name="index" type="int" />
+ <argument index="2" name="name" type="String" />
<description>
Emitted when a new ICE candidate has been created. The three parameters are meant to be passed to the remote peer over the signaling server.
</description>
</signal>
<signal name="session_description_created">
- <argument index="0" name="type" type="String">
- </argument>
- <argument index="1" name="sdp" type="String">
- </argument>
+ <argument index="0" name="type" type="String" />
+ <argument index="1" name="sdp" type="String" />
<description>
Emitted after a successful call to [method create_offer] or [method set_remote_description] (when it generates an answer). The parameters are meant to be passed to [method set_local_description] on this object, and sent to the remote peer over the signaling server.
</description>
diff --git a/modules/webrtc/webrtc_multiplayer_peer.cpp b/modules/webrtc/webrtc_multiplayer_peer.cpp
index 51101e3124..95c8c13449 100644
--- a/modules/webrtc/webrtc_multiplayer_peer.cpp
+++ b/modules/webrtc/webrtc_multiplayer_peer.cpp
@@ -34,7 +34,7 @@
#include "core/os/os.h"
void WebRTCMultiplayerPeer::_bind_methods() {
- ClassDB::bind_method(D_METHOD("initialize", "peer_id", "server_compatibility"), &WebRTCMultiplayerPeer::initialize, DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("initialize", "peer_id", "server_compatibility", "channels_config"), &WebRTCMultiplayerPeer::initialize, DEFVAL(false), DEFVAL(Array()));
ClassDB::bind_method(D_METHOD("add_peer", "peer", "peer_id", "unreliable_lifetime"), &WebRTCMultiplayerPeer::add_peer, DEFVAL(1));
ClassDB::bind_method(D_METHOD("remove_peer", "peer_id"), &WebRTCMultiplayerPeer::remove_peer);
ClassDB::bind_method(D_METHOD("has_peer", "peer_id"), &WebRTCMultiplayerPeer::has_peer);
@@ -43,6 +43,14 @@ void WebRTCMultiplayerPeer::_bind_methods() {
ClassDB::bind_method(D_METHOD("close"), &WebRTCMultiplayerPeer::close);
}
+void WebRTCMultiplayerPeer::set_transfer_channel(int p_channel) {
+ transfer_channel = p_channel;
+}
+
+int WebRTCMultiplayerPeer::get_transfer_channel() const {
+ return transfer_channel;
+}
+
void WebRTCMultiplayerPeer::set_transfer_mode(TransferMode p_mode) {
transfer_mode = p_mode;
}
@@ -112,22 +120,22 @@ void WebRTCMultiplayerPeer::poll() {
}
}
// Remove disconnected peers
- for (List<int>::Element *E = remove.front(); E; E = E->next()) {
- remove_peer(E->get());
- if (next_packet_peer == E->get()) {
+ for (int &E : remove) {
+ remove_peer(E);
+ if (next_packet_peer == E) {
next_packet_peer = 0;
}
}
// Signal newly connected peers
- for (List<int>::Element *E = add.front(); E; E = E->next()) {
+ for (int &E : add) {
// Already connected to server: simply notify new peer.
// NOTE: Mesh is always connected.
if (connection_status == CONNECTION_CONNECTED) {
- emit_signal(SNAME("peer_connected"), E->get());
+ emit_signal(SNAME("peer_connected"), E);
}
// Server emulation mode suppresses peer_conencted until server connects.
- if (server_compat && E->get() == TARGET_PEER_SERVER) {
+ if (server_compat && E == TARGET_PEER_SERVER) {
// Server connected.
connection_status = CONNECTION_CONNECTED;
emit_signal(SNAME("peer_connected"), TARGET_PEER_SERVER);
@@ -154,8 +162,8 @@ void WebRTCMultiplayerPeer::_find_next_peer() {
}
// After last.
while (E) {
- for (List<Ref<WebRTCDataChannel>>::Element *F = E->get()->channels.front(); F; F = F->next()) {
- if (F->get()->get_available_packet_count()) {
+ for (const Ref<WebRTCDataChannel> &F : E->get()->channels) {
+ if (F->get_available_packet_count()) {
next_packet_peer = E->key();
return;
}
@@ -165,8 +173,8 @@ void WebRTCMultiplayerPeer::_find_next_peer() {
E = peer_map.front();
// Before last
while (E) {
- for (List<Ref<WebRTCDataChannel>>::Element *F = E->get()->channels.front(); F; F = F->next()) {
- if (F->get()->get_available_packet_count()) {
+ for (const Ref<WebRTCDataChannel> &F : E->get()->channels) {
+ if (F->get_available_packet_count()) {
next_packet_peer = E->key();
return;
}
@@ -192,8 +200,34 @@ MultiplayerPeer::ConnectionStatus WebRTCMultiplayerPeer::get_connection_status()
return connection_status;
}
-Error WebRTCMultiplayerPeer::initialize(int p_self_id, bool p_server_compat) {
- ERR_FAIL_COND_V(p_self_id < 0 || p_self_id > ~(1 << 31), ERR_INVALID_PARAMETER);
+Error WebRTCMultiplayerPeer::initialize(int p_self_id, bool p_server_compat, Array p_channels_config) {
+ ERR_FAIL_COND_V(p_self_id < 1 || p_self_id > ~(1 << 31), ERR_INVALID_PARAMETER);
+ channels_config.clear();
+ for (int i = 0; i < p_channels_config.size(); i++) {
+ ERR_FAIL_COND_V_MSG(p_channels_config[i].get_type() != Variant::INT, ERR_INVALID_PARAMETER, "The 'channels_config' array must contain only enum values from 'MultiplayerPeer.TransferMode'");
+ int mode = p_channels_config[i].operator int();
+ // Initialize data channel configurations.
+ Dictionary cfg;
+ cfg["id"] = CH_RESERVED_MAX + i + 1;
+ cfg["negotiated"] = true;
+ cfg["ordered"] = true;
+
+ switch (mode) {
+ case TRANSFER_MODE_UNRELIABLE_ORDERED:
+ cfg["maxPacketLifetime"] = 1;
+ break;
+ case TRANSFER_MODE_UNRELIABLE:
+ cfg["maxPacketLifetime"] = 1;
+ cfg["ordered"] = false;
+ break;
+ case TRANSFER_MODE_RELIABLE:
+ break;
+ default:
+ ERR_FAIL_V_MSG(ERR_INVALID_PARAMETER, vformat("The 'channels_config' array must contain only enum values from 'MultiplayerPeer.TransferMode'. Got: %d", mode));
+ }
+ channels_config.push_back(cfg);
+ }
+
unique_id = p_self_id;
server_compat = p_server_compat;
@@ -213,8 +247,8 @@ int WebRTCMultiplayerPeer::get_unique_id() const {
void WebRTCMultiplayerPeer::_peer_to_dict(Ref<ConnectedPeer> p_connected_peer, Dictionary &r_dict) {
Array channels;
- for (List<Ref<WebRTCDataChannel>>::Element *F = p_connected_peer->channels.front(); F; F = F->next()) {
- channels.push_back(F->get());
+ for (Ref<WebRTCDataChannel> &F : p_connected_peer->channels) {
+ channels.push_back(F);
}
r_dict["connection"] = p_connected_peer->connection;
r_dict["connected"] = p_connected_peer->connected;
@@ -260,17 +294,23 @@ Error WebRTCMultiplayerPeer::add_peer(Ref<WebRTCPeerConnection> p_peer, int p_pe
cfg["id"] = 1;
peer->channels[CH_RELIABLE] = p_peer->create_data_channel("reliable", cfg);
- ERR_FAIL_COND_V(!peer->channels[CH_RELIABLE].is_valid(), FAILED);
+ ERR_FAIL_COND_V(peer->channels[CH_RELIABLE].is_null(), FAILED);
cfg["id"] = 2;
cfg["maxPacketLifetime"] = p_unreliable_lifetime;
peer->channels[CH_ORDERED] = p_peer->create_data_channel("ordered", cfg);
- ERR_FAIL_COND_V(!peer->channels[CH_ORDERED].is_valid(), FAILED);
+ ERR_FAIL_COND_V(peer->channels[CH_ORDERED].is_null(), FAILED);
cfg["id"] = 3;
cfg["ordered"] = false;
peer->channels[CH_UNRELIABLE] = p_peer->create_data_channel("unreliable", cfg);
- ERR_FAIL_COND_V(!peer->channels[CH_UNRELIABLE].is_valid(), FAILED);
+ ERR_FAIL_COND_V(peer->channels[CH_UNRELIABLE].is_null(), FAILED);
+
+ for (const Dictionary &dict : channels_config) {
+ Ref<WebRTCDataChannel> ch = p_peer->create_data_channel(String::num_int64(dict["id"]), dict);
+ ERR_FAIL_COND_V(ch.is_null(), FAILED);
+ peer->channels.push_back(ch);
+ }
peer_map[p_peer_id] = peer; // add the new peer connection to the peer_map
@@ -297,9 +337,9 @@ Error WebRTCMultiplayerPeer::get_packet(const uint8_t **r_buffer, int &r_buffer_
_find_next_peer();
ERR_FAIL_V(ERR_UNAVAILABLE);
}
- for (List<Ref<WebRTCDataChannel>>::Element *E = peer_map[next_packet_peer]->channels.front(); E; E = E->next()) {
- if (E->get()->get_available_packet_count()) {
- Error err = E->get()->get_packet(r_buffer, r_buffer_size);
+ for (Ref<WebRTCDataChannel> &E : peer_map[next_packet_peer]->channels) {
+ if (E->get_available_packet_count()) {
+ Error err = E->get_packet(r_buffer, r_buffer_size);
_find_next_peer();
return err;
}
@@ -312,17 +352,21 @@ Error WebRTCMultiplayerPeer::get_packet(const uint8_t **r_buffer, int &r_buffer_
Error WebRTCMultiplayerPeer::put_packet(const uint8_t *p_buffer, int p_buffer_size) {
ERR_FAIL_COND_V(connection_status == CONNECTION_DISCONNECTED, ERR_UNCONFIGURED);
- int ch = CH_RELIABLE;
- switch (transfer_mode) {
- case TRANSFER_MODE_RELIABLE:
- ch = CH_RELIABLE;
- break;
- case TRANSFER_MODE_UNRELIABLE_ORDERED:
- ch = CH_ORDERED;
- break;
- case TRANSFER_MODE_UNRELIABLE:
- ch = CH_UNRELIABLE;
- break;
+ int ch = transfer_channel;
+ if (ch == 0) {
+ switch (transfer_mode) {
+ case TRANSFER_MODE_RELIABLE:
+ ch = CH_RELIABLE;
+ break;
+ case TRANSFER_MODE_UNRELIABLE_ORDERED:
+ ch = CH_ORDERED;
+ break;
+ case TRANSFER_MODE_UNRELIABLE:
+ ch = CH_UNRELIABLE;
+ break;
+ }
+ } else {
+ ch += CH_RESERVED_MAX - 1;
}
Map<int, Ref<ConnectedPeer>>::Element *E = nullptr;
@@ -331,8 +375,8 @@ Error WebRTCMultiplayerPeer::put_packet(const uint8_t *p_buffer, int p_buffer_si
E = peer_map.find(target_peer);
ERR_FAIL_COND_V_MSG(!E, ERR_INVALID_PARAMETER, "Invalid target peer: " + itos(target_peer) + ".");
- ERR_FAIL_COND_V(E->value()->channels.size() <= ch, ERR_BUG);
- ERR_FAIL_COND_V(!E->value()->channels[ch].is_valid(), ERR_BUG);
+ ERR_FAIL_COND_V_MSG(E->value()->channels.size() <= ch, ERR_INVALID_PARAMETER, vformat("Unable to send packet on channel %d, max channels: %d", ch, E->value()->channels.size()));
+ ERR_FAIL_COND_V(E->value()->channels[ch].is_null(), ERR_BUG);
return E->value()->channels[ch]->put_packet(p_buffer, p_buffer_size);
} else {
@@ -344,7 +388,8 @@ Error WebRTCMultiplayerPeer::put_packet(const uint8_t *p_buffer, int p_buffer_si
continue;
}
- ERR_CONTINUE(F->value()->channels.size() <= ch || !F->value()->channels[ch].is_valid());
+ ERR_CONTINUE_MSG(F->value()->channels.size() <= ch, vformat("Unable to send packet on channel %d, max channels: %d", ch, E->value()->channels.size()));
+ ERR_CONTINUE(F->value()->channels[ch].is_null());
F->value()->channels[ch]->put_packet(p_buffer, p_buffer_size);
}
}
@@ -357,8 +402,8 @@ int WebRTCMultiplayerPeer::get_available_packet_count() const {
}
int size = 0;
for (Map<int, Ref<ConnectedPeer>>::Element *E = peer_map.front(); E; E = E->next()) {
- for (List<Ref<WebRTCDataChannel>>::Element *F = E->get()->channels.front(); F; F = F->next()) {
- size += F->get()->get_available_packet_count();
+ for (const Ref<WebRTCDataChannel> &F : E->get()->channels) {
+ size += F->get_available_packet_count();
}
}
return size;
@@ -370,23 +415,13 @@ int WebRTCMultiplayerPeer::get_max_packet_size() const {
void WebRTCMultiplayerPeer::close() {
peer_map.clear();
+ channels_config.clear();
unique_id = 0;
next_packet_peer = 0;
target_peer = 0;
connection_status = CONNECTION_DISCONNECTED;
}
-WebRTCMultiplayerPeer::WebRTCMultiplayerPeer() {
- unique_id = 0;
- next_packet_peer = 0;
- target_peer = 0;
- client_count = 0;
- transfer_mode = TRANSFER_MODE_RELIABLE;
- refuse_connections = false;
- connection_status = CONNECTION_DISCONNECTED;
- server_compat = false;
-}
-
WebRTCMultiplayerPeer::~WebRTCMultiplayerPeer() {
close();
}
diff --git a/modules/webrtc/webrtc_multiplayer_peer.h b/modules/webrtc/webrtc_multiplayer_peer.h
index 1d9387b6dc..ef4fe1678c 100644
--- a/modules/webrtc/webrtc_multiplayer_peer.h
+++ b/modules/webrtc/webrtc_multiplayer_peer.h
@@ -62,25 +62,27 @@ private:
}
};
- uint32_t unique_id;
- int target_peer;
- int client_count;
- bool refuse_connections;
- ConnectionStatus connection_status;
- TransferMode transfer_mode;
- int next_packet_peer;
- bool server_compat;
+ uint32_t unique_id = 0;
+ int target_peer = 0;
+ int client_count = 0;
+ bool refuse_connections = false;
+ ConnectionStatus connection_status = CONNECTION_DISCONNECTED;
+ int transfer_channel = 0;
+ TransferMode transfer_mode = TRANSFER_MODE_RELIABLE;
+ int next_packet_peer = 0;
+ bool server_compat = false;
Map<int, Ref<ConnectedPeer>> peer_map;
+ List<Dictionary> channels_config;
void _peer_to_dict(Ref<ConnectedPeer> p_connected_peer, Dictionary &r_dict);
void _find_next_peer();
public:
- WebRTCMultiplayerPeer();
+ WebRTCMultiplayerPeer() {}
~WebRTCMultiplayerPeer();
- Error initialize(int p_self_id, bool p_server_compat = false);
+ Error initialize(int p_self_id, bool p_server_compat = false, Array p_channels_config = Array());
Error add_peer(Ref<WebRTCPeerConnection> p_peer, int p_peer_id, int p_unreliable_lifetime = 1);
void remove_peer(int p_peer_id);
bool has_peer(int p_peer_id);
@@ -95,6 +97,8 @@ public:
int get_max_packet_size() const override;
// MultiplayerPeer
+ void set_transfer_channel(int p_channel) override;
+ int get_transfer_channel() const override;
void set_transfer_mode(TransferMode p_mode) override;
TransferMode get_transfer_mode() const override;
void set_target_peer(int p_peer_id) override;
diff --git a/modules/websocket/doc_classes/WebSocketClient.xml b/modules/websocket/doc_classes/WebSocketClient.xml
index 40c0ad17ad..1549a907b4 100644
--- a/modules/websocket/doc_classes/WebSocketClient.xml
+++ b/modules/websocket/doc_classes/WebSocketClient.xml
@@ -13,16 +13,11 @@
</tutorials>
<methods>
<method name="connect_to_url">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="url" type="String">
- </argument>
- <argument index="1" name="protocols" type="PackedStringArray" default="PackedStringArray()">
- </argument>
- <argument index="2" name="gd_mp_api" type="bool" default="false">
- </argument>
- <argument index="3" name="custom_headers" type="PackedStringArray" default="PackedStringArray()">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="url" type="String" />
+ <argument index="1" name="protocols" type="PackedStringArray" default="PackedStringArray()" />
+ <argument index="2" name="gd_mp_api" type="bool" default="false" />
+ <argument index="3" name="custom_headers" type="PackedStringArray" default="PackedStringArray()" />
<description>
Connects to the given URL requesting one of the given [code]protocols[/code] as sub-protocol. If the list empty (default), no sub-protocol will be requested.
If [code]true[/code] is passed as [code]gd_mp_api[/code], the client will behave like a network peer for the [MultiplayerAPI], connections to non-Godot servers will not work, and [signal data_received] will not be emitted.
@@ -33,26 +28,21 @@
</description>
</method>
<method name="disconnect_from_host">
- <return type="void">
- </return>
- <argument index="0" name="code" type="int" default="1000">
- </argument>
- <argument index="1" name="reason" type="String" default="&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="code" type="int" default="1000" />
+ <argument index="1" name="reason" type="String" default="&quot;&quot;" />
<description>
Disconnects this client from the connected host. See [method WebSocketPeer.close] for more information.
</description>
</method>
<method name="get_connected_host" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Return the IP address of the currently connected host.
</description>
</method>
<method name="get_connected_port" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Return the IP port of the currently connected host.
</description>
@@ -70,8 +60,7 @@
</members>
<signals>
<signal name="connection_closed">
- <argument index="0" name="was_clean_close" type="bool">
- </argument>
+ <argument index="0" name="was_clean_close" type="bool" />
<description>
Emitted when the connection to the server is closed. [code]was_clean_close[/code] will be [code]true[/code] if the connection was shutdown cleanly.
</description>
@@ -82,8 +71,7 @@
</description>
</signal>
<signal name="connection_established">
- <argument index="0" name="protocol" type="String">
- </argument>
+ <argument index="0" name="protocol" type="String" />
<description>
Emitted when a connection with the server is established, [code]protocol[/code] will contain the sub-protocol agreed with the server.
</description>
@@ -95,10 +83,8 @@
</description>
</signal>
<signal name="server_close_request">
- <argument index="0" name="code" type="int">
- </argument>
- <argument index="1" name="reason" type="String">
- </argument>
+ <argument index="0" name="code" type="int" />
+ <argument index="1" name="reason" type="String" />
<description>
Emitted when the server requests a clean close. You should keep polling until you get a [signal connection_closed] signal to achieve the clean close. See [method WebSocketPeer.close] for more details.
</description>
diff --git a/modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml b/modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml
index ee1b60f739..cd41e9a1fb 100644
--- a/modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml
+++ b/modules/websocket/doc_classes/WebSocketMultiplayerPeer.xml
@@ -10,25 +10,18 @@
</tutorials>
<methods>
<method name="get_peer" qualifiers="const">
- <return type="WebSocketPeer">
- </return>
- <argument index="0" name="peer_id" type="int">
- </argument>
+ <return type="WebSocketPeer" />
+ <argument index="0" name="peer_id" type="int" />
<description>
Returns the [WebSocketPeer] associated to the given [code]peer_id[/code].
</description>
</method>
<method name="set_buffers">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="input_buffer_size_kb" type="int">
- </argument>
- <argument index="1" name="input_max_packets" type="int">
- </argument>
- <argument index="2" name="output_buffer_size_kb" type="int">
- </argument>
- <argument index="3" name="output_max_packets" type="int">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="input_buffer_size_kb" type="int" />
+ <argument index="1" name="input_max_packets" type="int" />
+ <argument index="2" name="output_buffer_size_kb" type="int" />
+ <argument index="3" name="output_max_packets" type="int" />
<description>
Configures the buffer sizes for this WebSocket peer. Default values can be specified in the Project Settings under [code]network/limits[/code]. For server, values are meant per connected peer.
The first two parameters define the size and queued packets limits of the input buffer, the last two of the output buffer.
@@ -43,8 +36,7 @@
</members>
<signals>
<signal name="peer_packet">
- <argument index="0" name="peer_source" type="int">
- </argument>
+ <argument index="0" name="peer_source" type="int" />
<description>
Emitted when a packet is received from a peer.
[b]Note:[/b] This signal is only emitted when the client or server is configured to use Godot multiplayer API.
diff --git a/modules/websocket/doc_classes/WebSocketPeer.xml b/modules/websocket/doc_classes/WebSocketPeer.xml
index 5125956416..ab7ef6c4d0 100644
--- a/modules/websocket/doc_classes/WebSocketPeer.xml
+++ b/modules/websocket/doc_classes/WebSocketPeer.xml
@@ -11,12 +11,9 @@
</tutorials>
<methods>
<method name="close">
- <return type="void">
- </return>
- <argument index="0" name="code" type="int" default="1000">
- </argument>
- <argument index="1" name="reason" type="String" default="&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="code" type="int" default="1000" />
+ <argument index="1" name="reason" type="String" default="&quot;&quot;" />
<description>
Closes this WebSocket connection. [code]code[/code] is the status code for the closure (see RFC 6455 section 7.4 for a list of valid status codes). [code]reason[/code] is the human readable reason for closing the connection (can be any UTF-8 string that's smaller than 123 bytes).
[b]Note:[/b] To achieve a clean close, you will need to keep polling until either [signal WebSocketClient.connection_closed] or [signal WebSocketServer.client_disconnected] is received.
@@ -24,57 +21,54 @@
</description>
</method>
<method name="get_connected_host" qualifiers="const">
- <return type="String">
- </return>
+ <return type="String" />
<description>
Returns the IP address of the connected peer.
[b]Note:[/b] Not available in the HTML5 export.
</description>
</method>
<method name="get_connected_port" qualifiers="const">
- <return type="int">
- </return>
+ <return type="int" />
<description>
Returns the remote port of the connected peer.
[b]Note:[/b] Not available in the HTML5 export.
</description>
</method>
+ <method name="get_current_outbound_buffered_amount" qualifiers="const">
+ <return type="int" />
+ <description>
+ Returns the current amount of data in the outbound websocket buffer. [b]Note:[/b] HTML5 exports use WebSocket.bufferedAmount, while other platforms use an internal buffer.
+ </description>
+ </method>
<method name="get_write_mode" qualifiers="const">
- <return type="int" enum="WebSocketPeer.WriteMode">
- </return>
+ <return type="int" enum="WebSocketPeer.WriteMode" />
<description>
Gets the current selected write mode. See [enum WriteMode].
</description>
</method>
<method name="is_connected_to_host" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if this peer is currently connected.
</description>
</method>
<method name="set_no_delay">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
+ <return type="void" />
+ <argument index="0" name="enabled" type="bool" />
<description>
Disable Nagle's algorithm on the underling TCP socket (default). See [method StreamPeerTCP.set_no_delay] for more information.
[b]Note:[/b] Not available in the HTML5 export.
</description>
</method>
<method name="set_write_mode">
- <return type="void">
- </return>
- <argument index="0" name="mode" type="int" enum="WebSocketPeer.WriteMode">
- </argument>
+ <return type="void" />
+ <argument index="0" name="mode" type="int" enum="WebSocketPeer.WriteMode" />
<description>
Sets the socket to use the given [enum WriteMode].
</description>
</method>
<method name="was_string_packet" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the last received packet was sent as a text payload. See [enum WriteMode].
</description>
diff --git a/modules/websocket/doc_classes/WebSocketServer.xml b/modules/websocket/doc_classes/WebSocketServer.xml
index 5491f7de15..90182de4c2 100644
--- a/modules/websocket/doc_classes/WebSocketServer.xml
+++ b/modules/websocket/doc_classes/WebSocketServer.xml
@@ -12,61 +12,46 @@
</tutorials>
<methods>
<method name="disconnect_peer">
- <return type="void">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="code" type="int" default="1000">
- </argument>
- <argument index="2" name="reason" type="String" default="&quot;&quot;">
- </argument>
+ <return type="void" />
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="code" type="int" default="1000" />
+ <argument index="2" name="reason" type="String" default="&quot;&quot;" />
<description>
Disconnects the peer identified by [code]id[/code] from the server. See [method WebSocketPeer.close] for more information.
</description>
</method>
<method name="get_peer_address" qualifiers="const">
- <return type="String">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="String" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the IP address of the given peer.
</description>
</method>
<method name="get_peer_port" qualifiers="const">
- <return type="int">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="int" />
+ <argument index="0" name="id" type="int" />
<description>
Returns the remote port of the given peer.
</description>
</method>
<method name="has_peer" qualifiers="const">
- <return type="bool">
- </return>
- <argument index="0" name="id" type="int">
- </argument>
+ <return type="bool" />
+ <argument index="0" name="id" type="int" />
<description>
Returns [code]true[/code] if a peer with the given ID is connected.
</description>
</method>
<method name="is_listening" qualifiers="const">
- <return type="bool">
- </return>
+ <return type="bool" />
<description>
Returns [code]true[/code] if the server is actively listening on a port.
</description>
</method>
<method name="listen">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="port" type="int">
- </argument>
- <argument index="1" name="protocols" type="PackedStringArray" default="PackedStringArray()">
- </argument>
- <argument index="2" name="gd_mp_api" type="bool" default="false">
- </argument>
+ <return type="int" enum="Error" />
+ <argument index="0" name="port" type="int" />
+ <argument index="1" name="protocols" type="PackedStringArray" default="PackedStringArray()" />
+ <argument index="2" name="gd_mp_api" type="bool" default="false" />
<description>
Starts listening on the given port.
You can specify the desired subprotocols via the "protocols" array. If the list empty (default), no sub-protocol will be requested.
@@ -75,8 +60,7 @@
</description>
</method>
<method name="stop">
- <return type="void">
- </return>
+ <return type="void" />
<description>
Stops the server and clear its state.
</description>
@@ -101,40 +85,31 @@
</members>
<signals>
<signal name="client_close_request">
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="code" type="int">
- </argument>
- <argument index="2" name="reason" type="String">
- </argument>
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="code" type="int" />
+ <argument index="2" name="reason" type="String" />
<description>
Emitted when a client requests a clean close. You should keep polling until you get a [signal client_disconnected] signal with the same [code]id[/code] to achieve the clean close. See [method WebSocketPeer.close] for more details.
</description>
</signal>
<signal name="client_connected">
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="protocol" type="String">
- </argument>
- <argument index="2" name="resource_name" type="String">
- </argument>
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="protocol" type="String" />
+ <argument index="2" name="resource_name" type="String" />
<description>
Emitted when a new client connects. "protocol" will be the sub-protocol agreed with the client, and "resource_name" will be the resource name of the URI the peer used.
"resource_name" is a path (at the very least a single forward slash) and potentially a query string.
</description>
</signal>
<signal name="client_disconnected">
- <argument index="0" name="id" type="int">
- </argument>
- <argument index="1" name="was_clean_close" type="bool">
- </argument>
+ <argument index="0" name="id" type="int" />
+ <argument index="1" name="was_clean_close" type="bool" />
<description>
Emitted when a client disconnects. [code]was_clean_close[/code] will be [code]true[/code] if the connection was shutdown cleanly.
</description>
</signal>
<signal name="data_received">
- <argument index="0" name="id" type="int">
- </argument>
+ <argument index="0" name="id" type="int" />
<description>
Emitted when a new message is received.
[b]Note:[/b] This signal is [i]not[/i] emitted when used as high-level multiplayer peer.
diff --git a/modules/websocket/emws_client.cpp b/modules/websocket/emws_client.cpp
index 744053b6e2..5cd94e978f 100644
--- a/modules/websocket/emws_client.cpp
+++ b/modules/websocket/emws_client.cpp
@@ -79,7 +79,7 @@ Error EMWSClient::connect_to_host(String p_host, String p_path, uint16_t p_port,
String str = "ws://";
if (p_custom_headers.size()) {
- WARN_PRINT_ONCE("Custom headers are not supported in in HTML5 platform.");
+ WARN_PRINT_ONCE("Custom headers are not supported in HTML5 platform.");
}
if (p_ssl) {
str = "wss://";
@@ -95,7 +95,7 @@ Error EMWSClient::connect_to_host(String p_host, String p_path, uint16_t p_port,
return FAILED;
}
- static_cast<Ref<EMWSPeer>>(_peer)->set_sock(_js_id, _in_buf_size, _in_pkt_size);
+ static_cast<Ref<EMWSPeer>>(_peer)->set_sock(_js_id, _in_buf_size, _in_pkt_size, _out_buf_size);
return OK;
}
@@ -136,6 +136,7 @@ int EMWSClient::get_max_packet_size() const {
Error EMWSClient::set_buffers(int p_in_buffer, int p_in_packets, int p_out_buffer, int p_out_packets) {
_in_buf_size = nearest_shift(p_in_buffer - 1) + 10;
_in_pkt_size = nearest_shift(p_in_packets - 1);
+ _out_buf_size = nearest_shift(p_out_buffer - 1) + 10;
return OK;
}
diff --git a/modules/websocket/emws_client.h b/modules/websocket/emws_client.h
index ca2d7ed986..3b0b8395b9 100644
--- a/modules/websocket/emws_client.h
+++ b/modules/websocket/emws_client.h
@@ -45,6 +45,7 @@ private:
bool _is_connecting = false;
int _in_buf_size = DEF_BUF_SHIFT;
int _in_pkt_size = DEF_PKT_SHIFT;
+ int _out_buf_size = DEF_BUF_SHIFT;
static void _esws_on_connect(void *obj, char *proto);
static void _esws_on_message(void *obj, const uint8_t *p_data, int p_data_size, int p_is_string);
diff --git a/modules/websocket/emws_peer.cpp b/modules/websocket/emws_peer.cpp
index 05f9e12ae1..69822f6ff3 100644
--- a/modules/websocket/emws_peer.cpp
+++ b/modules/websocket/emws_peer.cpp
@@ -33,10 +33,11 @@
#include "emws_peer.h"
#include "core/io/ip.h"
-void EMWSPeer::set_sock(int p_sock, unsigned int p_in_buf_size, unsigned int p_in_pkt_size) {
+void EMWSPeer::set_sock(int p_sock, unsigned int p_in_buf_size, unsigned int p_in_pkt_size, unsigned int p_out_buf_size) {
peer_sock = p_sock;
_in_buffer.resize(p_in_pkt_size, p_in_buf_size);
_packet_buffer.resize((1 << p_in_buf_size));
+ _out_buf_size = p_out_buf_size;
}
void EMWSPeer::set_write_mode(WriteMode p_mode) {
@@ -53,7 +54,10 @@ Error EMWSPeer::read_msg(const uint8_t *p_data, uint32_t p_size, bool p_is_strin
}
Error EMWSPeer::put_packet(const uint8_t *p_buffer, int p_buffer_size) {
+ ERR_FAIL_COND_V(_out_buf_size && (godot_js_websocket_buffered_amount(peer_sock) >= (1ULL << _out_buf_size)), ERR_OUT_OF_MEMORY);
+
int is_bin = write_mode == WebSocketPeer::WRITE_MODE_BINARY ? 1 : 0;
+
godot_js_websocket_send(peer_sock, p_buffer, p_buffer_size, is_bin);
return OK;
}
@@ -76,6 +80,13 @@ int EMWSPeer::get_available_packet_count() const {
return _in_buffer.packets_left();
}
+int EMWSPeer::get_current_outbound_buffered_amount() const {
+ if (peer_sock != -1) {
+ return godot_js_websocket_buffered_amount(peer_sock);
+ }
+ return 0;
+}
+
bool EMWSPeer::was_string_packet() const {
return _is_string;
}
diff --git a/modules/websocket/emws_peer.h b/modules/websocket/emws_peer.h
index 73e701720b..6e93ea31a2 100644
--- a/modules/websocket/emws_peer.h
+++ b/modules/websocket/emws_peer.h
@@ -48,6 +48,7 @@ typedef void (*WSOnError)(void *p_ref);
extern int godot_js_websocket_create(void *p_ref, const char *p_url, const char *p_proto, WSOnOpen p_on_open, WSOnMessage p_on_message, WSOnError p_on_error, WSOnClose p_on_close);
extern int godot_js_websocket_send(int p_id, const uint8_t *p_buf, int p_buf_len, int p_raw);
+extern int godot_js_websocket_buffered_amount(int p_id);
extern void godot_js_websocket_close(int p_id, int p_code, const char *p_reason);
extern void godot_js_websocket_destroy(int p_id);
}
@@ -62,14 +63,16 @@ private:
Vector<uint8_t> _packet_buffer;
PacketBuffer<uint8_t> _in_buffer;
uint8_t _is_string = 0;
+ int _out_buf_size = 0;
public:
Error read_msg(const uint8_t *p_data, uint32_t p_size, bool p_is_string);
- void set_sock(int p_sock, unsigned int p_in_buf_size, unsigned int p_in_pkt_size);
+ void set_sock(int p_sock, unsigned int p_in_buf_size, unsigned int p_in_pkt_size, unsigned int p_out_buf_size);
virtual int get_available_packet_count() const;
virtual Error get_packet(const uint8_t **r_buffer, int &r_buffer_size);
virtual Error put_packet(const uint8_t *p_buffer, int p_buffer_size);
virtual int get_max_packet_size() const { return _packet_buffer.size(); };
+ virtual int get_current_outbound_buffered_amount() const;
virtual void close(int p_code = 1000, String p_reason = "");
virtual bool is_connected_to_host() const;
diff --git a/modules/websocket/library_godot_websocket.js b/modules/websocket/library_godot_websocket.js
index b182d1ecde..dd2fd1e94f 100644
--- a/modules/websocket/library_godot_websocket.js
+++ b/modules/websocket/library_godot_websocket.js
@@ -101,6 +101,15 @@ const GodotWebSocket = {
return 0;
},
+ // Get current bufferedAmount
+ bufferedAmount: function (p_id) {
+ const ref = IDHandler.get(p_id);
+ if (!ref) {
+ return 0; // Godot object is gone.
+ }
+ return ref.bufferedAmount;
+ },
+
create: function (socket, p_on_open, p_on_message, p_on_error, p_on_close) {
const id = IDHandler.add(socket);
socket.onopen = GodotWebSocket._onopen.bind(null, id, p_on_open);
@@ -171,6 +180,11 @@ const GodotWebSocket = {
return GodotWebSocket.send(p_id, out);
},
+ godot_js_websocket_buffered_amount__sig: 'ii',
+ godot_js_websocket_buffered_amount: function (p_id) {
+ return GodotWebSocket.bufferedAmount(p_id);
+ },
+
godot_js_websocket_close__sig: 'viii',
godot_js_websocket_close: function (p_id, p_code, p_reason) {
const code = p_code;
diff --git a/modules/websocket/websocket_multiplayer_peer.cpp b/modules/websocket/websocket_multiplayer_peer.cpp
index ddd8e190df..163cc7706b 100644
--- a/modules/websocket/websocket_multiplayer_peer.cpp
+++ b/modules/websocket/websocket_multiplayer_peer.cpp
@@ -39,35 +39,15 @@ WebSocketMultiplayerPeer::~WebSocketMultiplayerPeer() {
_clear();
}
-int WebSocketMultiplayerPeer::_gen_unique_id() const {
- uint32_t hash = 0;
-
- while (hash == 0 || hash == 1) {
- hash = hash_djb2_one_32(
- (uint32_t)OS::get_singleton()->get_ticks_usec());
- hash = hash_djb2_one_32(
- (uint32_t)OS::get_singleton()->get_unix_time(), hash);
- hash = hash_djb2_one_32(
- (uint32_t)OS::get_singleton()->get_data_path().hash64(), hash);
- hash = hash_djb2_one_32(
- (uint32_t)((uint64_t)this), hash); //rely on aslr heap
- hash = hash_djb2_one_32(
- (uint32_t)((uint64_t)&hash), hash); //rely on aslr stack
- hash = hash & 0x7FFFFFFF; // make it compatible with unsigned, since negative id is used for exclusion
- }
-
- return hash;
-}
-
void WebSocketMultiplayerPeer::_clear() {
_peer_map.clear();
if (_current_packet.data != nullptr) {
memfree(_current_packet.data);
}
- for (List<Packet>::Element *E = _incoming_packets.front(); E; E = E->next()) {
- memfree(E->get().data);
- E->get().data = nullptr;
+ for (Packet &E : _incoming_packets) {
+ memfree(E.data);
+ E.data = nullptr;
}
_incoming_packets.clear();
@@ -125,6 +105,14 @@ Error WebSocketMultiplayerPeer::put_packet(const uint8_t *p_buffer, int p_buffer
//
// MultiplayerPeer
//
+void WebSocketMultiplayerPeer::set_transfer_channel(int p_channel) {
+ // Websocket does not have channels.
+}
+
+int WebSocketMultiplayerPeer::get_transfer_channel() const {
+ return 0;
+}
+
void WebSocketMultiplayerPeer::set_transfer_mode(TransferMode p_mode) {
// Websocket uses TCP, reliable
}
diff --git a/modules/websocket/websocket_multiplayer_peer.h b/modules/websocket/websocket_multiplayer_peer.h
index e3ccd1a795..0fee196f41 100644
--- a/modules/websocket/websocket_multiplayer_peer.h
+++ b/modules/websocket/websocket_multiplayer_peer.h
@@ -75,10 +75,11 @@ protected:
void _send_add(int32_t p_peer_id);
void _send_sys(Ref<WebSocketPeer> p_peer, uint8_t p_type, int32_t p_peer_id);
void _send_del(int32_t p_peer_id);
- int _gen_unique_id() const;
public:
/* MultiplayerPeer */
+ void set_transfer_channel(int p_channel) override;
+ int get_transfer_channel() const override;
void set_transfer_mode(TransferMode p_mode) override;
TransferMode get_transfer_mode() const override;
void set_target_peer(int p_target_peer) override;
diff --git a/modules/websocket/websocket_peer.cpp b/modules/websocket/websocket_peer.cpp
index e77fdcfed2..ee13040821 100644
--- a/modules/websocket/websocket_peer.cpp
+++ b/modules/websocket/websocket_peer.cpp
@@ -47,6 +47,7 @@ void WebSocketPeer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_connected_host"), &WebSocketPeer::get_connected_host);
ClassDB::bind_method(D_METHOD("get_connected_port"), &WebSocketPeer::get_connected_port);
ClassDB::bind_method(D_METHOD("set_no_delay", "enabled"), &WebSocketPeer::set_no_delay);
+ ClassDB::bind_method(D_METHOD("get_current_outbound_buffered_amount"), &WebSocketPeer::get_current_outbound_buffered_amount);
BIND_ENUM_CONSTANT(WRITE_MODE_TEXT);
BIND_ENUM_CONSTANT(WRITE_MODE_BINARY);
diff --git a/modules/websocket/websocket_peer.h b/modules/websocket/websocket_peer.h
index e9bb20f21f..517b8600d6 100644
--- a/modules/websocket/websocket_peer.h
+++ b/modules/websocket/websocket_peer.h
@@ -59,6 +59,7 @@ public:
virtual uint16_t get_connected_port() const = 0;
virtual bool was_string_packet() const = 0;
virtual void set_no_delay(bool p_enabled) = 0;
+ virtual int get_current_outbound_buffered_amount() const = 0;
WebSocketPeer();
~WebSocketPeer();
diff --git a/modules/websocket/wsl_peer.cpp b/modules/websocket/wsl_peer.cpp
index 1dbadfed74..7f027e1c0d 100644
--- a/modules/websocket/wsl_peer.cpp
+++ b/modules/websocket/wsl_peer.cpp
@@ -205,7 +205,9 @@ void WSLPeer::make_context(PeerData *p_data, unsigned int p_in_buf_size, unsigne
ERR_FAIL_COND(p_data == nullptr);
_in_buffer.resize(p_in_pkt_size, p_in_buf_size);
- _packet_buffer.resize((1 << MAX(p_in_buf_size, p_out_buf_size)));
+ _packet_buffer.resize(1 << p_in_buf_size);
+ _out_buf_size = p_out_buf_size;
+ _out_pkt_size = p_out_pkt_size;
_data = p_data;
_data->peer = this;
@@ -239,6 +241,8 @@ void WSLPeer::poll() {
Error WSLPeer::put_packet(const uint8_t *p_buffer, int p_buffer_size) {
ERR_FAIL_COND_V(!is_connected_to_host(), FAILED);
+ ERR_FAIL_COND_V(_out_pkt_size && (wslay_event_get_queued_msg_count(_data->ctx) >= (1ULL << _out_pkt_size)), ERR_OUT_OF_MEMORY);
+ ERR_FAIL_COND_V(_out_buf_size && (wslay_event_get_queued_msg_length(_data->ctx) >= (1ULL << _out_buf_size)), ERR_OUT_OF_MEMORY);
struct wslay_event_msg msg; // Should I use fragmented?
msg.opcode = write_mode == WRITE_MODE_TEXT ? WSLAY_TEXT_FRAME : WSLAY_BINARY_FRAME;
@@ -280,6 +284,12 @@ int WSLPeer::get_available_packet_count() const {
return _in_buffer.packets_left();
}
+int WSLPeer::get_current_outbound_buffered_amount() const {
+ ERR_FAIL_COND_V(!_data, 0);
+
+ return wslay_event_get_queued_msg_length(_data->ctx);
+}
+
bool WSLPeer::was_string_packet() const {
return _is_string;
}
diff --git a/modules/websocket/wsl_peer.h b/modules/websocket/wsl_peer.h
index f1ea98d384..260d4b183d 100644
--- a/modules/websocket/wsl_peer.h
+++ b/modules/websocket/wsl_peer.h
@@ -77,6 +77,9 @@ private:
WriteMode write_mode = WRITE_MODE_BINARY;
+ int _out_buf_size = 0;
+ int _out_pkt_size = 0;
+
public:
int close_code = -1;
String close_reason;
@@ -86,6 +89,7 @@ public:
virtual Error get_packet(const uint8_t **r_buffer, int &r_buffer_size);
virtual Error put_packet(const uint8_t *p_buffer, int p_buffer_size);
virtual int get_max_packet_size() const { return _packet_buffer.size(); };
+ virtual int get_current_outbound_buffered_amount() const;
virtual void close_now();
virtual void close(int p_code = 1000, String p_reason = "");
diff --git a/modules/websocket/wsl_server.cpp b/modules/websocket/wsl_server.cpp
index 5f794415af..7402bbb46e 100644
--- a/modules/websocket/wsl_server.cpp
+++ b/modules/websocket/wsl_server.cpp
@@ -190,15 +190,15 @@ void WSLServer::poll() {
remove_ids.push_back(E->key());
}
}
- for (List<int>::Element *E = remove_ids.front(); E; E = E->next()) {
- _peer_map.erase(E->get());
+ for (int &E : remove_ids) {
+ _peer_map.erase(E);
}
remove_ids.clear();
List<Ref<PendingPeer>> remove_peers;
- for (List<Ref<PendingPeer>>::Element *E = _pending.front(); E; E = E->next()) {
+ for (const Ref<PendingPeer> &E : _pending) {
String resource_name;
- Ref<PendingPeer> ppeer = E->get();
+ Ref<PendingPeer> ppeer = E;
Error err = ppeer->do_handshake(_protocols, handshake_timeout, resource_name);
if (err == ERR_BUSY) {
continue;
@@ -207,7 +207,7 @@ void WSLServer::poll() {
continue;
}
// Creating new peer
- int32_t id = _gen_unique_id();
+ int32_t id = generate_unique_id();
WSLPeer::PeerData *data = memnew(struct WSLPeer::PeerData);
data->obj = this;
@@ -224,8 +224,8 @@ void WSLServer::poll() {
remove_peers.push_back(ppeer);
_on_connect(id, ppeer->protocol, resource_name);
}
- for (List<Ref<PendingPeer>>::Element *E = remove_peers.front(); E; E = E->next()) {
- _pending.erase(E->get());
+ for (const Ref<PendingPeer> &E : remove_peers) {
+ _pending.erase(E);
}
remove_peers.clear();
diff --git a/modules/webxr/doc_classes/WebXRInterface.xml b/modules/webxr/doc_classes/WebXRInterface.xml
index 9b3a063ef5..ff7c46bbae 100644
--- a/modules/webxr/doc_classes/WebXRInterface.xml
+++ b/modules/webxr/doc_classes/WebXRInterface.xml
@@ -88,17 +88,15 @@
- Using [XRController3D] nodes and their [signal XRController3D.button_pressed] and [signal XRController3D.button_released] signals. This is how controllers are typically handled in AR/VR apps in Godot, however, this will only work with advanced VR controllers like the Oculus Touch or Index controllers, for example. The buttons codes are defined by [url=https://immersive-web.github.io/webxr-gamepads-module/#xr-standard-gamepad-mapping]Section 3.3 of the WebXR Gamepads Module[/url].
- Using [method Node._unhandled_input] and [InputEventJoypadButton] or [InputEventJoypadMotion]. This works the same as normal joypads, except the [member InputEvent.device] starts at 100, so the left controller is 100 and the right controller is 101, and the button codes are also defined by [url=https://immersive-web.github.io/webxr-gamepads-module/#xr-standard-gamepad-mapping]Section 3.3 of the WebXR Gamepads Module[/url].
- Using the [signal select], [signal squeeze] and related signals. This method will work for both advanced VR controllers, and non-traditional "controllers" like a tap on the screen, a spoken voice command or a button press on the device itself. The [code]controller_id[/code] passed to these signals is the same id as used in [member XRController3D.controller_id].
- You can use one or all of these methods to allow your game or app to support a wider or narrower set of devices and input methods, or to allow more advanced interations with more advanced devices.
+ You can use one or all of these methods to allow your game or app to support a wider or narrower set of devices and input methods, or to allow more advanced interactions with more advanced devices.
</description>
<tutorials>
<link title="How to make a VR game for WebXR with Godot">https://www.snopekgames.com/blog/2020/how-make-vr-game-webxr-godot</link>
</tutorials>
<methods>
<method name="get_controller" qualifiers="const">
- <return type="XRPositionalTracker">
- </return>
- <argument index="0" name="controller_id" type="int">
- </argument>
+ <return type="XRPositionalTracker" />
+ <argument index="0" name="controller_id" type="int" />
<description>
Gets an [XRPositionalTracker] for the given [code]controller_id[/code].
In the context of WebXR, a "controller" can be an advanced VR controller like the Oculus Touch or Index controllers, or even a tap on the screen, a spoken voice command or a button press on the device itself. When a non-traditional controller is used, interpret the position and orientation of the [XRPositionalTracker] as a ray pointing at the object the user wishes to interact with.
@@ -112,10 +110,8 @@
</description>
</method>
<method name="is_session_supported">
- <return type="void">
- </return>
- <argument index="0" name="session_mode" type="String">
- </argument>
+ <return type="void" />
+ <argument index="0" name="session_mode" type="String" />
<description>
Checks if the given [code]session_mode[/code] is supported by the user's browser.
Possible values come from [url=https://developer.mozilla.org/en-US/docs/Web/API/XRSessionMode]WebXR's XRSessionMode[/url], including: [code]"immersive-vr"[/code], [code]"immersive-ar"[/code], and [code]"inline"[/code].
@@ -170,24 +166,21 @@
</description>
</signal>
<signal name="select">
- <argument index="0" name="controller_id" type="int">
- </argument>
+ <argument index="0" name="controller_id" type="int" />
<description>
Emitted after one of the "controllers" has finished its "primary action".
Use [method get_controller] to get more information about the controller.
</description>
</signal>
<signal name="selectend">
- <argument index="0" name="controller_id" type="int">
- </argument>
+ <argument index="0" name="controller_id" type="int" />
<description>
Emitted when one of the "controllers" has finished its "primary action".
Use [method get_controller] to get more information about the controller.
</description>
</signal>
<signal name="selectstart">
- <argument index="0" name="controller_id" type="int">
- </argument>
+ <argument index="0" name="controller_id" type="int" />
<description>
Emitted when one of the "controllers" has started its "primary action".
Use [method get_controller] to get more information about the controller.
@@ -200,8 +193,7 @@
</description>
</signal>
<signal name="session_failed">
- <argument index="0" name="message" type="String">
- </argument>
+ <argument index="0" name="message" type="String" />
<description>
Emitted by [method XRInterface.initialize] if the session fails to start.
[code]message[/code] may optionally contain an error message from WebXR, or an empty string if no message is available.
@@ -214,33 +206,28 @@
</description>
</signal>
<signal name="session_supported">
- <argument index="0" name="session_mode" type="String">
- </argument>
- <argument index="1" name="supported" type="bool">
- </argument>
+ <argument index="0" name="session_mode" type="String" />
+ <argument index="1" name="supported" type="bool" />
<description>
Emitted by [method is_session_supported] to indicate if the given [code]session_mode[/code] is supported or not.
</description>
</signal>
<signal name="squeeze">
- <argument index="0" name="controller_id" type="int">
- </argument>
+ <argument index="0" name="controller_id" type="int" />
<description>
Emitted after one of the "controllers" has finished its "primary squeeze action".
Use [method get_controller] to get more information about the controller.
</description>
</signal>
<signal name="squeezeend">
- <argument index="0" name="controller_id" type="int">
- </argument>
+ <argument index="0" name="controller_id" type="int" />
<description>
Emitted when one of the "controllers" has finished its "primary squeeze action".
Use [method get_controller] to get more information about the controller.
</description>
</signal>
<signal name="squeezestart">
- <argument index="0" name="controller_id" type="int">
- </argument>
+ <argument index="0" name="controller_id" type="int" />
<description>
Emitted when one of the "controllers" has started its "primary squeeze action".
Use [method get_controller] to get more information about the controller.
diff --git a/platform/android/display_server_android.cpp b/platform/android/display_server_android.cpp
index 1fcc3d4a5c..af8829324b 100644
--- a/platform/android/display_server_android.cpp
+++ b/platform/android/display_server_android.cpp
@@ -334,13 +334,6 @@ bool DisplayServerAndroid::can_any_window_draw() const {
return true;
}
-void DisplayServerAndroid::alert(const String &p_alert, const String &p_title) {
- GodotJavaWrapper *godot_java = OS_Android::get_singleton()->get_godot_java();
- ERR_FAIL_COND(!godot_java);
-
- godot_java->alert(p_alert, p_title);
-}
-
void DisplayServerAndroid::process_events() {
Input::get_singleton()->flush_accumulated_events();
}
@@ -361,7 +354,7 @@ Vector<String> DisplayServerAndroid::get_rendering_drivers_func() {
DisplayServer *DisplayServerAndroid::create_func(const String &p_rendering_driver, DisplayServer::WindowMode p_mode, DisplayServer::VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
DisplayServer *ds = memnew(DisplayServerAndroid(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_resolution, r_error));
if (r_error != OK) {
- ds->alert("Your video card driver does not support any of the supported Vulkan versions.", "Unable to initialize Video driver");
+ OS::get_singleton()->alert("Your video card driver does not support any of the supported Vulkan versions.", "Unable to initialize Video driver");
}
return ds;
}
diff --git a/platform/android/display_server_android.h b/platform/android/display_server_android.h
index 46745f8030..9b9f5e99f6 100644
--- a/platform/android/display_server_android.h
+++ b/platform/android/display_server_android.h
@@ -204,8 +204,6 @@ public:
virtual void window_set_vsync_mode(DisplayServer::VSyncMode p_vsync_mode, WindowID p_window = MAIN_WINDOW_ID) override;
virtual DisplayServer::VSyncMode window_get_vsync_mode(WindowID p_vsync_mode) const override;
- virtual void alert(const String &p_alert, const String &p_title) override;
-
virtual void process_events() override;
void process_accelerometer(const Vector3 &p_accelerometer);
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp
index 956b59ce80..1795bbe523 100644
--- a/platform/android/export/export.cpp
+++ b/platform/android/export/export.cpp
@@ -1817,12 +1817,12 @@ public:
MutexLock lock(device_lock);
- EditorProgress ep("run", "Running on " + devices[p_device].name, 3);
+ EditorProgress ep("run", vformat(TTR("Running on %s"), devices[p_device].name), 3);
String adb = get_adb_path();
// Export_temp APK.
- if (ep.step("Exporting APK...", 0)) {
+ if (ep.step(TTR("Exporting APK..."), 0)) {
return ERR_SKIP;
}
@@ -1857,7 +1857,7 @@ public:
String package_name = p_preset->get("package/unique_name");
if (remove_prev) {
- if (ep.step("Uninstalling...", 1)) {
+ if (ep.step(TTR("Uninstalling..."), 1)) {
CLEANUP_AND_RETURN(ERR_SKIP);
}
@@ -1874,7 +1874,7 @@ public:
}
print_line("Installing to device (please wait...): " + devices[p_device].name);
- if (ep.step("Installing to device, please wait...", 2)) {
+ if (ep.step(TTR("Installing to device, please wait..."), 2)) {
CLEANUP_AND_RETURN(ERR_SKIP);
}
@@ -1889,7 +1889,7 @@ public:
err = OS::get_singleton()->execute(adb, args, &output, &rv, true);
print_verbose(output);
if (err || rv != 0) {
- EditorNode::add_io_error("Could not install to device: " + output);
+ EditorNode::add_io_error(vformat(TTR("Could not install to device: %s"), output));
CLEANUP_AND_RETURN(ERR_CANT_CREATE);
}
@@ -1945,7 +1945,7 @@ public:
}
}
- if (ep.step("Running on device...", 3)) {
+ if (ep.step(TTR("Running on device..."), 3)) {
CLEANUP_AND_RETURN(ERR_SKIP);
}
args.clear();
@@ -1967,7 +1967,7 @@ public:
err = OS::get_singleton()->execute(adb, args, &output, &rv, true);
print_verbose(output);
if (err || rv != 0) {
- EditorNode::add_io_error("Could not execute on device.");
+ EditorNode::add_io_error(TTR("Could not execute on device."));
CLEANUP_AND_RETURN(ERR_CANT_CREATE);
}
@@ -2068,6 +2068,8 @@ public:
if (!installed_android_build_template) {
r_missing_templates = !exists_export_template("android_source.zip", &err);
err += TTR("Android build template not installed in the project. Install it from the Project menu.") + "\n";
+ } else {
+ r_missing_templates = false;
}
valid = installed_android_build_template && !r_missing_templates;
@@ -2324,7 +2326,7 @@ public:
String apksigner = get_apksigner_path();
print_verbose("Starting signing of the " + export_label + " binary using " + apksigner);
if (!FileAccess::exists(apksigner)) {
- EditorNode::add_io_error("'apksigner' could not be found.\nPlease check the command is available in the Android SDK build-tools directory.\nThe resulting " + export_label + " is unsigned.");
+ EditorNode::add_io_error(vformat(TTR("'apksigner' could not be found.\nPlease check the command is available in the Android SDK build-tools directory.\nThe resulting %s is unsigned."), export_label));
return OK;
}
@@ -2342,7 +2344,7 @@ public:
user = EditorSettings::get_singleton()->get("export/android/debug_keystore_user");
}
- if (ep.step("Signing debug " + export_label + "...", 104)) {
+ if (ep.step(vformat(TTR("Signing debug %s..."), export_label), 104)) {
return ERR_SKIP;
}
@@ -2351,13 +2353,13 @@ public:
password = release_password;
user = release_username;
- if (ep.step("Signing release " + export_label + "...", 104)) {
+ if (ep.step(vformat(TTR("Signing release %s..."), export_label), 104)) {
return ERR_SKIP;
}
}
if (!FileAccess::exists(keystore)) {
- EditorNode::add_io_error("Could not find keystore, unable to export.");
+ EditorNode::add_io_error(TTR("Could not find keystore, unable to export."));
return ERR_FILE_CANT_OPEN;
}
@@ -2381,11 +2383,11 @@ public:
OS::get_singleton()->execute(apksigner, args, &output, &retval, true);
print_verbose(output);
if (retval) {
- EditorNode::add_io_error("'apksigner' returned with error #" + itos(retval));
+ EditorNode::add_io_error(vformat(TTR("'apksigner' returned with error #%d"), retval));
return ERR_CANT_CREATE;
}
- if (ep.step("Verifying " + export_label + "...", 105)) {
+ if (ep.step(vformat(TTR("Verifying %s..."), export_label), 105)) {
return ERR_SKIP;
}
@@ -2401,7 +2403,7 @@ public:
OS::get_singleton()->execute(apksigner, args, &output, &retval, true);
print_verbose(output);
if (retval) {
- EditorNode::add_io_error("'apksigner' verification of " + export_label + " failed.");
+ EditorNode::add_io_error(vformat(TTR("'apksigner' verification of %s failed."), export_label));
return ERR_CANT_CREATE;
}
@@ -2464,7 +2466,7 @@ public:
String src_apk;
Error err;
- EditorProgress ep("export", "Exporting for Android", 105, true);
+ EditorProgress ep("export", TTR("Exporting for Android"), 105, true);
bool use_custom_build = bool(p_preset->get("custom_template/use_custom_build"));
bool p_give_internet = p_flags & (DEBUG_FLAG_DUMB_CLIENT | DEBUG_FLAG_REMOTE_DEBUG);
@@ -2513,7 +2515,7 @@ public:
return ERR_UNCONFIGURED;
}
if (export_format > EXPORT_FORMAT_AAB || export_format < EXPORT_FORMAT_APK) {
- EditorNode::add_io_error("Unsupported export format!\n");
+ EditorNode::add_io_error(TTR("Unsupported export format!\n"));
return ERR_UNCONFIGURED; //TODO: is this the right error?
}
@@ -2543,7 +2545,7 @@ public:
String project_name = get_project_name(p_preset->get("package/name"));
err = _create_project_name_strings_files(p_preset, project_name); //project name localization.
if (err != OK) {
- EditorNode::add_io_error("Unable to overwrite res://android/build/res/*.xml files with project name");
+ EditorNode::add_io_error(TTR("Unable to overwrite res://android/build/res/*.xml files with project name"));
}
// Copies the project icon files into the appropriate Gradle project directory.
_copy_icons_to_gradle_project(p_preset, processed_splash_config_xml, splash_image, splash_bg_color_image, main_image, foreground, background);
@@ -2559,7 +2561,7 @@ public:
user_data.debug = p_debug;
err = export_project_files(p_preset, rename_and_store_file_in_gradle_project, &user_data, copy_gradle_so);
if (err != OK) {
- EditorNode::add_io_error("Could not export project files to gradle project\n");
+ EditorNode::add_io_error(TTR("Could not export project files to gradle project\n"));
return err;
}
if (user_data.libs.size() > 0) {
@@ -2572,7 +2574,7 @@ public:
print_verbose("Saving apk expansion file..");
err = save_apk_expansion_file(p_preset, p_path);
if (err != OK) {
- EditorNode::add_io_error("Could not write expansion package file!");
+ EditorNode::add_io_error(TTR("Could not write expansion package file!"));
return err;
}
}
@@ -2659,7 +2661,7 @@ public:
String release_username = p_preset->get("keystore/release_user");
String release_password = p_preset->get("keystore/release_password");
if (!FileAccess::exists(release_keystore)) {
- EditorNode::add_io_error("Could not find keystore, unable to export.");
+ EditorNode::add_io_error(TTR("Could not find keystore, unable to export."));
return ERR_FILE_CANT_OPEN;
}
@@ -2723,7 +2725,7 @@ public:
src_apk = find_export_template("android_release.apk");
}
if (src_apk == "") {
- EditorNode::add_io_error("Package not found: " + src_apk);
+ EditorNode::add_io_error(vformat(TTR("Package not found: %s"), src_apk));
return ERR_FILE_NOT_FOUND;
}
}
@@ -2735,13 +2737,13 @@ public:
FileAccess *src_f = nullptr;
zlib_filefunc_def io = zipio_create_io_from_file(&src_f);
- if (ep.step("Creating APK...", 0)) {
+ if (ep.step(TTR("Creating APK..."), 0)) {
return ERR_SKIP;
}
unzFile pkg = unzOpen2(src_apk.utf8().get_data(), &io);
if (!pkg) {
- EditorNode::add_io_error("Could not find template APK to export:\n" + src_apk);
+ EditorNode::add_io_error(vformat(TTR("Could not find template APK to export:\n%s"), src_apk));
return ERR_FILE_NOT_FOUND;
}
@@ -2869,12 +2871,11 @@ public:
if (!invalid_abis.is_empty()) {
String unsupported_arch = String(", ").join(invalid_abis);
- EditorNode::add_io_error("Missing libraries in the export template for the selected architectures: " + unsupported_arch + ".\n" +
- "Please build a template with all required libraries, or uncheck the missing architectures in the export preset.");
+ EditorNode::add_io_error(vformat(TTR("Missing libraries in the export template for the selected architectures: %s.\nPlease build a template with all required libraries, or uncheck the missing architectures in the export preset."), unsupported_arch));
CLEANUP_AND_RETURN(ERR_FILE_NOT_FOUND);
}
- if (ep.step("Adding files...", 1)) {
+ if (ep.step(TTR("Adding files..."), 1)) {
CLEANUP_AND_RETURN(ERR_SKIP);
}
err = OK;
@@ -2888,7 +2889,7 @@ public:
if (apk_expansion) {
err = save_apk_expansion_file(p_preset, p_path);
if (err != OK) {
- EditorNode::add_io_error("Could not write expansion package file!");
+ EditorNode::add_io_error(TTR("Could not write expansion package file!"));
return err;
}
} else {
@@ -2901,7 +2902,7 @@ public:
if (err != OK) {
unzClose(pkg);
- EditorNode::add_io_error("Could not export project files");
+ EditorNode::add_io_error(TTR("Could not export project files"));
CLEANUP_AND_RETURN(ERR_SKIP);
}
@@ -2931,13 +2932,13 @@ public:
// If we're not signing the apk, then the next step should be the last.
const int next_step = should_sign ? 103 : 105;
- if (ep.step("Aligning APK...", next_step)) {
+ if (ep.step(TTR("Aligning APK..."), next_step)) {
CLEANUP_AND_RETURN(ERR_SKIP);
}
unzFile tmp_unaligned = unzOpen2(tmp_unaligned_path.utf8().get_data(), &io);
if (!tmp_unaligned) {
- EditorNode::add_io_error("Could not unzip temporary unaligned APK.");
+ EditorNode::add_io_error(TTR("Could not unzip temporary unaligned APK."));
CLEANUP_AND_RETURN(ERR_FILE_NOT_FOUND);
}
diff --git a/platform/android/java/lib/src/com/google/android/vending/licensing/Obfuscator.java b/platform/android/java/lib/src/com/google/android/vending/licensing/Obfuscator.java
index 008c150a8e..05b452d0c1 100644
--- a/platform/android/java/lib/src/com/google/android/vending/licensing/Obfuscator.java
+++ b/platform/android/java/lib/src/com/google/android/vending/licensing/Obfuscator.java
@@ -20,7 +20,7 @@ package com.google.android.vending.licensing;
* Interface used as part of a {@link Policy} to allow application authors to obfuscate
* licensing data that will be stored into a SharedPreferences file.
* <p>
- * Any transformation scheme must be reversable. Implementing classes may optionally implement an
+ * Any transformation scheme must be reversible. Implementing classes may optionally implement an
* integrity check to further prevent modification to preference data. Implementing classes
* should use device-specific information as a key in the obfuscation algorithm to prevent
* obfuscated preferences from being shared among devices.
diff --git a/platform/android/java_class_wrapper.cpp b/platform/android/java_class_wrapper.cpp
index ed6b5c3e14..49891cd739 100644
--- a/platform/android/java_class_wrapper.cpp
+++ b/platform/android/java_class_wrapper.cpp
@@ -41,13 +41,13 @@ bool JavaClass::_call_method(JavaObject *p_instance, const StringName &p_method,
ERR_FAIL_COND_V(env == nullptr, false);
MethodInfo *method = nullptr;
- for (List<MethodInfo>::Element *E = M->get().front(); E; E = E->next()) {
- if (!p_instance && !E->get()._static) {
+ for (MethodInfo &E : M->get()) {
+ if (!p_instance && !E._static) {
r_error.error = Callable::CallError::CALL_ERROR_INSTANCE_IS_NULL;
continue;
}
- int pc = E->get().param_types.size();
+ int pc = E.param_types.size();
if (pc > p_argcount) {
r_error.error = Callable::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
r_error.argument = pc;
@@ -58,7 +58,7 @@ bool JavaClass::_call_method(JavaObject *p_instance, const StringName &p_method,
r_error.argument = pc;
continue;
}
- uint32_t *ptypes = E->get().param_types.ptrw();
+ uint32_t *ptypes = E.param_types.ptrw();
bool valid = true;
for (int i = 0; i < pc; i++) {
@@ -107,7 +107,7 @@ bool JavaClass::_call_method(JavaObject *p_instance, const StringName &p_method,
if (Object::cast_to<JavaObject>(ref.ptr())) {
Ref<JavaObject> jo = ref;
//could be faster
- jclass c = env->FindClass(E->get().param_sigs[i].operator String().utf8().get_data());
+ jclass c = env->FindClass(E.param_sigs[i].operator String().utf8().get_data());
if (!c || !env->IsInstanceOf(jo->instance, c)) {
arg_expected = Variant::OBJECT;
} else {
@@ -138,7 +138,7 @@ bool JavaClass::_call_method(JavaObject *p_instance, const StringName &p_method,
if (!valid)
continue;
- method = &E->get();
+ method = &E;
break;
}
@@ -474,8 +474,8 @@ bool JavaClass::_call_method(JavaObject *p_instance, const StringName &p_method,
} break;
}
- for (List<jobject>::Element *E = to_free.front(); E; E = E->next()) {
- env->DeleteLocalRef(E->get());
+ for (jobject &E : to_free) {
+ env->DeleteLocalRef(E);
}
return success;
diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp
index 222976d948..792a390e36 100644
--- a/platform/android/os_android.cpp
+++ b/platform/android/os_android.cpp
@@ -71,6 +71,13 @@ public:
virtual ~AndroidLogger() {}
};
+void OS_Android::alert(const String &p_alert, const String &p_title) {
+ GodotJavaWrapper *godot_java = OS_Android::get_singleton()->get_godot_java();
+ ERR_FAIL_COND(!godot_java);
+
+ godot_java->alert(p_alert, p_title);
+}
+
void OS_Android::initialize_core() {
OS_Unix::initialize_core();
diff --git a/platform/android/os_android.h b/platform/android/os_android.h
index 1e89e9211d..38f0f3edc7 100644
--- a/platform/android/os_android.h
+++ b/platform/android/os_android.h
@@ -86,6 +86,8 @@ public:
virtual bool request_permissions() override;
virtual Vector<String> get_granted_permissions() const override;
+ virtual void alert(const String &p_alert, const String &p_title) override;
+
virtual Error open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path = false) override;
virtual String get_name() const override;
diff --git a/platform/iphone/display_server_iphone.h b/platform/iphone/display_server_iphone.h
index 6f64130b23..8ba7a69a4f 100644
--- a/platform/iphone/display_server_iphone.h
+++ b/platform/iphone/display_server_iphone.h
@@ -119,8 +119,6 @@ public:
virtual bool has_feature(Feature p_feature) const override;
virtual String get_name() const override;
- virtual void alert(const String &p_alert, const String &p_title = "ALERT!") override;
-
virtual int get_screen_count() const override;
virtual Point2i screen_get_position(int p_screen = SCREEN_OF_MAIN_WINDOW) const override;
virtual Size2i screen_get_size(int p_screen = SCREEN_OF_MAIN_WINDOW) const override;
diff --git a/platform/iphone/display_server_iphone.mm b/platform/iphone/display_server_iphone.mm
index bd95e2c703..b4f0a32027 100644
--- a/platform/iphone/display_server_iphone.mm
+++ b/platform/iphone/display_server_iphone.mm
@@ -320,12 +320,6 @@ String DisplayServerIPhone::get_name() const {
return "iPhone";
}
-void DisplayServerIPhone::alert(const String &p_alert, const String &p_title) {
- const CharString utf8_alert = p_alert.utf8();
- const CharString utf8_title = p_title.utf8();
- iOS::alert(utf8_alert.get_data(), utf8_title.get_data());
-}
-
int DisplayServerIPhone::get_screen_count() const {
return 1;
}
diff --git a/platform/iphone/godot_view_gesture_recognizer.h b/platform/iphone/godot_view_gesture_recognizer.h
index 48b2d5ffad..61438ef22f 100644
--- a/platform/iphone/godot_view_gesture_recognizer.h
+++ b/platform/iphone/godot_view_gesture_recognizer.h
@@ -28,7 +28,7 @@
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-// GLViewGestureRecognizer allows iOS gestures to work currectly by
+// GLViewGestureRecognizer allows iOS gestures to work correctly by
// emulating UIScrollView's UIScrollViewDelayedTouchesBeganGestureRecognizer.
// It catches all gestures incoming to UIView and delays them for 150ms
// (the same value used by UIScrollViewDelayedTouchesBeganGestureRecognizer)
diff --git a/platform/iphone/os_iphone.h b/platform/iphone/os_iphone.h
index f4ff909adf..8abc3b7ed5 100644
--- a/platform/iphone/os_iphone.h
+++ b/platform/iphone/os_iphone.h
@@ -92,13 +92,12 @@ public:
void start();
+ virtual void alert(const String &p_alert, const String &p_title = "ALERT!") override;
+
virtual Error open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path = false) override;
virtual Error close_dynamic_library(void *p_library_handle) override;
virtual Error get_dynamic_library_symbol_handle(void *p_library_handle, const String p_name, void *&p_symbol_handle, bool p_optional = false) override;
- virtual void alert(const String &p_alert,
- const String &p_title = "ALERT!") override;
-
virtual String get_name() const override;
virtual String get_model_name() const override;
diff --git a/platform/iphone/os_iphone.mm b/platform/iphone/os_iphone.mm
index 1f08901082..b69996ccf0 100644
--- a/platform/iphone/os_iphone.mm
+++ b/platform/iphone/os_iphone.mm
@@ -114,6 +114,12 @@ OSIPhone::OSIPhone(String p_data_dir) {
OSIPhone::~OSIPhone() {}
+void OSIPhone::alert(const String &p_alert, const String &p_title) {
+ const CharString utf8_alert = p_alert.utf8();
+ const CharString utf8_title = p_title.utf8();
+ iOS::alert(utf8_alert.get_data(), utf8_title.get_data());
+}
+
void OSIPhone::initialize_core() {
OS_Unix::initialize_core();
@@ -221,12 +227,6 @@ Error OSIPhone::get_dynamic_library_symbol_handle(void *p_library_handle, const
return OS_Unix::get_dynamic_library_symbol_handle(p_library_handle, p_name, p_symbol_handle, p_optional);
}
-void OSIPhone::alert(const String &p_alert, const String &p_title) {
- const CharString utf8_alert = p_alert.utf8();
- const CharString utf8_title = p_title.utf8();
- iOS::alert(utf8_alert.get_data(), utf8_title.get_data());
-}
-
String OSIPhone::get_name() const {
return "iOS";
};
diff --git a/platform/javascript/display_server_javascript.cpp b/platform/javascript/display_server_javascript.cpp
index 5e2b089c7f..8df81bb8cc 100644
--- a/platform/javascript/display_server_javascript.cpp
+++ b/platform/javascript/display_server_javascript.cpp
@@ -659,10 +659,6 @@ void DisplayServerJavaScript::send_window_event_callback(int p_notification) {
}
}
-void DisplayServerJavaScript::alert(const String &p_alert, const String &p_title) {
- godot_js_display_alert(p_alert.utf8().get_data());
-}
-
void DisplayServerJavaScript::set_icon(const Ref<Image> &p_icon) {
ERR_FAIL_COND(p_icon.is_null());
Ref<Image> icon = p_icon;
diff --git a/platform/javascript/display_server_javascript.h b/platform/javascript/display_server_javascript.h
index f8acf30854..bf5e229c9a 100644
--- a/platform/javascript/display_server_javascript.h
+++ b/platform/javascript/display_server_javascript.h
@@ -109,7 +109,6 @@ public:
bool check_size_force_redraw();
// from DisplayServer
- virtual void alert(const String &p_alert, const String &p_title = "ALERT!") override;
virtual bool has_feature(Feature p_feature) const override;
virtual String get_name() const override;
diff --git a/platform/javascript/js/libs/audio.worklet.js b/platform/javascript/js/libs/audio.worklet.js
index 6b3f80c6a9..866f845139 100644
--- a/platform/javascript/js/libs/audio.worklet.js
+++ b/platform/javascript/js/libs/audio.worklet.js
@@ -115,7 +115,7 @@ class GodotProcessor extends AudioWorkletProcessor {
this.input = new RingBuffer(p_data[1], avail_in);
this.output = new RingBuffer(p_data[2], avail_out);
} else if (p_cmd === 'stop') {
- this.runing = false;
+ this.running = false;
this.output = null;
this.input = null;
}
diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp
index 260bfad7a5..76102d941b 100644
--- a/platform/javascript/os_javascript.cpp
+++ b/platform/javascript/os_javascript.cpp
@@ -47,6 +47,10 @@
#include "godot_js.h"
+void OS_JavaScript::alert(const String &p_alert, const String &p_title) {
+ godot_js_display_alert(p_alert.utf8().get_data());
+}
+
// Lifecycle
void OS_JavaScript::initialize() {
OS_Unix::initialize_core();
@@ -111,8 +115,8 @@ Error OS_JavaScript::execute(const String &p_path, const List<String> &p_argumen
Error OS_JavaScript::create_process(const String &p_path, const List<String> &p_arguments, ProcessID *r_child_id) {
Array args;
- for (const List<String>::Element *E = p_arguments.front(); E; E = E->next()) {
- args.push_back(E->get());
+ for (const String &E : p_arguments) {
+ args.push_back(E);
}
String json_args = Variant(args).to_json_string();
int failed = godot_js_os_execute(json_args.utf8().get_data());
diff --git a/platform/javascript/os_javascript.h b/platform/javascript/os_javascript.h
index 81bb9c5f3d..efac2dbca7 100644
--- a/platform/javascript/os_javascript.h
+++ b/platform/javascript/os_javascript.h
@@ -89,6 +89,9 @@ public:
String get_user_data_dir() const override;
bool is_userfs_persistent() const override;
+
+ void alert(const String &p_alert, const String &p_title = "ALERT!") override;
+
Error open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path) override;
void resume_audio();
diff --git a/platform/linuxbsd/display_server_x11.cpp b/platform/linuxbsd/display_server_x11.cpp
index 1f9c272fd6..4a32dd9646 100644
--- a/platform/linuxbsd/display_server_x11.cpp
+++ b/platform/linuxbsd/display_server_x11.cpp
@@ -136,70 +136,6 @@ String DisplayServerX11::get_name() const {
return "X11";
}
-void DisplayServerX11::alert(const String &p_alert, const String &p_title) {
- const char *message_programs[] = { "zenity", "kdialog", "Xdialog", "xmessage" };
-
- String path = OS::get_singleton()->get_environment("PATH");
- Vector<String> path_elems = path.split(":", false);
- String program;
-
- for (int i = 0; i < path_elems.size(); i++) {
- for (uint64_t k = 0; k < sizeof(message_programs) / sizeof(char *); k++) {
- String tested_path = path_elems[i].plus_file(message_programs[k]);
-
- if (FileAccess::exists(tested_path)) {
- program = tested_path;
- break;
- }
- }
-
- if (program.length()) {
- break;
- }
- }
-
- List<String> args;
-
- if (program.ends_with("zenity")) {
- args.push_back("--error");
- args.push_back("--width");
- args.push_back("500");
- args.push_back("--title");
- args.push_back(p_title);
- args.push_back("--text");
- args.push_back(p_alert);
- }
-
- if (program.ends_with("kdialog")) {
- args.push_back("--error");
- args.push_back(p_alert);
- args.push_back("--title");
- args.push_back(p_title);
- }
-
- if (program.ends_with("Xdialog")) {
- args.push_back("--title");
- args.push_back(p_title);
- args.push_back("--msgbox");
- args.push_back(p_alert);
- args.push_back("0");
- args.push_back("0");
- }
-
- if (program.ends_with("xmessage")) {
- args.push_back("-center");
- args.push_back("-title");
- args.push_back(p_title);
- args.push_back(p_alert);
- }
-
- if (program.length()) {
- OS::get_singleton()->execute(program, args);
- } else {
- print_line(p_alert);
- }
-}
-
void DisplayServerX11::_update_real_mouse_position(const WindowData &wd) {
Window root_return, child_return;
int root_x, root_y, win_x, win_y;
@@ -2231,7 +2167,7 @@ void DisplayServerX11::_handle_key_event(WindowID p_window, XKeyEvent *p_event,
// still works in half the cases. (won't handle deadkeys)
// For more complex input methods (deadkeys and more advanced)
// you have to use XmbLookupString (??).
- // So.. then you have to chosse which of both results
+ // So then you have to choose which of both results
// you want to keep.
// This is a real bizarreness and cpu waster.
@@ -3677,8 +3613,8 @@ Vector<String> DisplayServerX11::get_rendering_drivers_func() {
DisplayServer *DisplayServerX11::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
DisplayServer *ds = memnew(DisplayServerX11(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_resolution, r_error));
if (r_error != OK) {
- ds->alert("Your video card driver does not support any of the supported Vulkan versions.\n"
- "Please update your drivers or if you have a very old or integrated GPU upgrade it.",
+ OS::get_singleton()->alert("Your video card driver does not support any of the supported Vulkan versions.\n"
+ "Please update your drivers or if you have a very old or integrated GPU upgrade it.",
"Unable to initialize Video driver");
}
return ds;
@@ -3976,8 +3912,8 @@ DisplayServerX11::DisplayServerX11(const String &p_rendering_driver, WindowMode
}
if (!_refresh_device_info()) {
- alert("Your system does not support XInput 2.\n"
- "Please upgrade your distribution.",
+ OS::get_singleton()->alert("Your system does not support XInput 2.\n"
+ "Please upgrade your distribution.",
"Unable to initialize XInput");
r_error = ERR_UNAVAILABLE;
return;
diff --git a/platform/linuxbsd/display_server_x11.h b/platform/linuxbsd/display_server_x11.h
index 29c15ca2ba..052c6d6b7b 100644
--- a/platform/linuxbsd/display_server_x11.h
+++ b/platform/linuxbsd/display_server_x11.h
@@ -280,8 +280,6 @@ public:
virtual bool has_feature(Feature p_feature) const override;
virtual String get_name() const override;
- virtual void alert(const String &p_alert, const String &p_title = "ALERT!") override;
-
virtual void mouse_set_mode(MouseMode p_mode) override;
virtual MouseMode mouse_get_mode() const override;
diff --git a/platform/linuxbsd/os_linuxbsd.cpp b/platform/linuxbsd/os_linuxbsd.cpp
index 8cd6ec43c6..08630be8b0 100644
--- a/platform/linuxbsd/os_linuxbsd.cpp
+++ b/platform/linuxbsd/os_linuxbsd.cpp
@@ -51,6 +51,70 @@
#include <sys/types.h>
#include <unistd.h>
+void OS_LinuxBSD::alert(const String &p_alert, const String &p_title) {
+ const char *message_programs[] = { "zenity", "kdialog", "Xdialog", "xmessage" };
+
+ String path = get_environment("PATH");
+ Vector<String> path_elems = path.split(":", false);
+ String program;
+
+ for (int i = 0; i < path_elems.size(); i++) {
+ for (uint64_t k = 0; k < sizeof(message_programs) / sizeof(char *); k++) {
+ String tested_path = path_elems[i].plus_file(message_programs[k]);
+
+ if (FileAccess::exists(tested_path)) {
+ program = tested_path;
+ break;
+ }
+ }
+
+ if (program.length()) {
+ break;
+ }
+ }
+
+ List<String> args;
+
+ if (program.ends_with("zenity")) {
+ args.push_back("--error");
+ args.push_back("--width");
+ args.push_back("500");
+ args.push_back("--title");
+ args.push_back(p_title);
+ args.push_back("--text");
+ args.push_back(p_alert);
+ }
+
+ if (program.ends_with("kdialog")) {
+ args.push_back("--error");
+ args.push_back(p_alert);
+ args.push_back("--title");
+ args.push_back(p_title);
+ }
+
+ if (program.ends_with("Xdialog")) {
+ args.push_back("--title");
+ args.push_back(p_title);
+ args.push_back("--msgbox");
+ args.push_back(p_alert);
+ args.push_back("0");
+ args.push_back("0");
+ }
+
+ if (program.ends_with("xmessage")) {
+ args.push_back("-center");
+ args.push_back("-title");
+ args.push_back(p_title);
+ args.push_back(p_alert);
+ }
+
+ if (program.length()) {
+ execute(program, args);
+ } else {
+ print_line(p_alert);
+ }
+}
+
void OS_LinuxBSD::initialize() {
crash_handler.initialize();
@@ -387,7 +451,7 @@ Error OS_LinuxBSD::move_to_trash(const String &p_path) {
DirAccess *dir_access = DirAccess::create(DirAccess::ACCESS_FILESYSTEM);
Error err = dir_access->make_dir_recursive(trash_path);
- // Issue an error if trash can is not created proprely.
+ // Issue an error if trash can is not created properly.
ERR_FAIL_COND_V_MSG(err != OK, err, "Could not create the trash path \"" + trash_path + "\"");
err = dir_access->make_dir_recursive(trash_path + "/files");
ERR_FAIL_COND_V_MSG(err != OK, err, "Could not create the trash path \"" + trash_path + "\"/files");
diff --git a/platform/linuxbsd/os_linuxbsd.h b/platform/linuxbsd/os_linuxbsd.h
index b6cf93c551..1e06587322 100644
--- a/platform/linuxbsd/os_linuxbsd.h
+++ b/platform/linuxbsd/os_linuxbsd.h
@@ -90,6 +90,8 @@ public:
virtual String get_unique_id() const override;
+ virtual void alert(const String &p_alert, const String &p_title = "ALERT!") override;
+
virtual bool _check_internal_feature_support(const String &p_feature) override;
void run();
diff --git a/platform/osx/display_server_osx.h b/platform/osx/display_server_osx.h
index c7b9e411b8..6b1b777224 100644
--- a/platform/osx/display_server_osx.h
+++ b/platform/osx/display_server_osx.h
@@ -60,6 +60,10 @@ class DisplayServerOSX : public DisplayServer {
_THREAD_SAFE_CLASS_
public:
+ void _send_event(NSEvent *p_event);
+ NSMenu *_get_dock_menu() const;
+ void _menu_callback(id p_sender);
+
#if defined(OPENGL_ENABLED)
ContextGL_OSX *context_gles2;
#endif
@@ -163,7 +167,6 @@ public:
String rendering_driver;
- id delegate;
id autoreleasePool;
CGEventSourceRef eventSource;
@@ -207,7 +210,6 @@ public:
virtual void global_menu_remove_item(const String &p_menu_root, int p_idx) override;
virtual void global_menu_clear(const String &p_menu_root) override;
- virtual void alert(const String &p_alert, const String &p_title = "ALERT!") override;
virtual Error dialog_show(String p_title, String p_description, Vector<String> p_buttons, const Callable &p_callback) override;
virtual Error dialog_input_text(String p_title, String p_description, String p_partial, const Callable &p_callback) override;
diff --git a/platform/osx/display_server_osx.mm b/platform/osx/display_server_osx.mm
index dec6da42fe..73aa013701 100644
--- a/platform/osx/display_server_osx.mm
+++ b/platform/osx/display_server_osx.mm
@@ -105,46 +105,6 @@ static NSCursor *_cursorFromSelector(SEL selector, SEL fallback = nil) {
}
/*************************************************************************/
-/* GodotApplication */
-/*************************************************************************/
-
-@interface GodotApplication : NSApplication
-@end
-
-@implementation GodotApplication
-
-- (void)sendEvent:(NSEvent *)event {
- // special case handling of command-period, which is traditionally a special
- // shortcut in macOS and doesn't arrive at our regular keyDown handler.
- if ([event type] == NSEventTypeKeyDown) {
- if (([event modifierFlags] & NSEventModifierFlagCommand) && [event keyCode] == 0x2f) {
- Ref<InputEventKey> k;
- k.instantiate();
-
- _get_key_modifier_state([event modifierFlags], k);
- k->set_window_id(DisplayServerOSX::INVALID_WINDOW_ID);
- k->set_pressed(true);
- k->set_keycode(KEY_PERIOD);
- k->set_physical_keycode(KEY_PERIOD);
- k->set_echo([event isARepeat]);
-
- Input::get_singleton()->accumulate_input_event(k);
- }
- }
-
- // From http://cocoadev.com/index.pl?GameKeyboardHandlingAlmost
- // This works around an AppKit bug, where key up events while holding
- // down the command key don't get sent to the key window.
- if ([event type] == NSEventTypeKeyUp && ([event modifierFlags] & NSEventModifierFlagCommand)) {
- [[self keyWindow] sendEvent:event];
- } else {
- [super sendEvent:event];
- }
-}
-
-@end
-
-/*************************************************************************/
/* GlobalMenuItem */
/*************************************************************************/
@@ -161,121 +121,6 @@ static NSCursor *_cursorFromSelector(SEL selector, SEL fallback = nil) {
@end
/*************************************************************************/
-/* GodotApplicationDelegate */
-/*************************************************************************/
-
-@interface GodotApplicationDelegate : NSObject
-- (void)forceUnbundledWindowActivationHackStep1;
-- (void)forceUnbundledWindowActivationHackStep2;
-- (void)forceUnbundledWindowActivationHackStep3;
-@end
-
-@implementation GodotApplicationDelegate
-
-- (void)forceUnbundledWindowActivationHackStep1 {
- // Step1: Switch focus to macOS Dock.
- // Required to perform step 2, TransformProcessType will fail if app is already the in focus.
- for (NSRunningApplication *app in [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.dock"]) {
- [app activateWithOptions:NSApplicationActivateIgnoringOtherApps];
- break;
- }
- [self performSelector:@selector(forceUnbundledWindowActivationHackStep2) withObject:nil afterDelay:0.02];
-}
-
-- (void)forceUnbundledWindowActivationHackStep2 {
- // Step 2: Register app as foreground process.
- ProcessSerialNumber psn = { 0, kCurrentProcess };
- (void)TransformProcessType(&psn, kProcessTransformToForegroundApplication);
- [self performSelector:@selector(forceUnbundledWindowActivationHackStep3) withObject:nil afterDelay:0.02];
-}
-
-- (void)forceUnbundledWindowActivationHackStep3 {
- // Step 3: Switch focus back to app window.
- [[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateIgnoringOtherApps];
-}
-
-- (void)applicationDidFinishLaunching:(NSNotification *)notice {
- NSString *nsappname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
- if (nsappname == nil) {
- // If executable is not a bundled, macOS WindowServer won't register and activate app window correctly (menu and title bar are grayed out and input ignored).
- [self performSelector:@selector(forceUnbundledWindowActivationHackStep1) withObject:nil afterDelay:0.02];
- }
-}
-
-- (void)applicationDidResignActive:(NSNotification *)notification {
- if (OS_OSX::get_singleton()->get_main_loop()) {
- OS_OSX::get_singleton()->get_main_loop()->notification(MainLoop::NOTIFICATION_APPLICATION_FOCUS_OUT);
- }
-}
-
-- (void)applicationDidBecomeActive:(NSNotification *)notification {
- if (OS_OSX::get_singleton()->get_main_loop()) {
- OS_OSX::get_singleton()->get_main_loop()->notification(MainLoop::NOTIFICATION_APPLICATION_FOCUS_IN);
- }
-}
-
-- (void)globalMenuCallback:(id)sender {
- if (![sender representedObject]) {
- return;
- }
-
- GlobalMenuItem *value = [sender representedObject];
-
- if (value) {
- if (value->checkable) {
- if ([sender state] == NSControlStateValueOff) {
- [sender setState:NSControlStateValueOn];
- } else {
- [sender setState:NSControlStateValueOff];
- }
- }
-
- if (value->callback != Callable()) {
- Variant tag = value->meta;
- Variant *tagp = &tag;
- Variant ret;
- Callable::CallError ce;
- value->callback.call((const Variant **)&tagp, 1, ret, ce);
- }
- }
-}
-
-- (NSMenu *)applicationDockMenu:(NSApplication *)sender {
- return DS_OSX->dock_menu;
-}
-
-- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename {
- // Note: may be called called before main loop init!
- char *utfs = strdup([filename UTF8String]);
- ((OS_OSX *)(OS_OSX::get_singleton()))->open_with_filename.parse_utf8(utfs);
- free(utfs);
-
-#ifdef TOOLS_ENABLED
- // Open new instance
- if (OS_OSX::get_singleton()->get_main_loop()) {
- List<String> args;
- args.push_back(((OS_OSX *)(OS_OSX::get_singleton()))->open_with_filename);
- String exec = OS::get_singleton()->get_executable_path();
- OS::get_singleton()->create_process(exec, args);
- }
-#endif
- return YES;
-}
-
-- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
- DS_OSX->_send_window_event(DS_OSX->windows[DisplayServerOSX::MAIN_WINDOW_ID], DisplayServerOSX::WINDOW_EVENT_CLOSE_REQUEST);
- return NSTerminateCancel;
-}
-
-- (void)showAbout:(id)sender {
- if (OS_OSX::get_singleton()->get_main_loop()) {
- OS_OSX::get_singleton()->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_ABOUT);
- }
-}
-
-@end
-
-/*************************************************************************/
/* GodotWindowDelegate */
/*************************************************************************/
@@ -1983,26 +1828,6 @@ void DisplayServerOSX::global_menu_clear(const String &p_menu_root) {
}
}
-void DisplayServerOSX::alert(const String &p_alert, const String &p_title) {
- _THREAD_SAFE_METHOD_
-
- NSAlert *window = [[NSAlert alloc] init];
- NSString *ns_title = [NSString stringWithUTF8String:p_title.utf8().get_data()];
- NSString *ns_alert = [NSString stringWithUTF8String:p_alert.utf8().get_data()];
-
- [window addButtonWithTitle:@"OK"];
- [window setMessageText:ns_title];
- [window setInformativeText:ns_alert];
- [window setAlertStyle:NSAlertStyleWarning];
-
- id key_window = [[NSApplication sharedApplication] keyWindow];
- [window runModal];
- [window release];
- if (key_window) {
- [key_window makeKeyAndOrderFront:nil];
- }
-}
-
Error DisplayServerOSX::dialog_show(String p_title, String p_description, Vector<String> p_buttons, const Callable &p_callback) {
_THREAD_SAFE_METHOD_
@@ -3375,6 +3200,56 @@ void DisplayServerOSX::_release_pressed_events() {
}
}
+NSMenu *DisplayServerOSX::_get_dock_menu() const {
+ return dock_menu;
+}
+
+void DisplayServerOSX::_menu_callback(id p_sender) {
+ if (![p_sender representedObject]) {
+ return;
+ }
+
+ GlobalMenuItem *value = [p_sender representedObject];
+
+ if (value) {
+ if (value->checkable) {
+ if ([p_sender state] == NSControlStateValueOff) {
+ [p_sender setState:NSControlStateValueOn];
+ } else {
+ [p_sender setState:NSControlStateValueOff];
+ }
+ }
+
+ if (value->callback != Callable()) {
+ Variant tag = value->meta;
+ Variant *tagp = &tag;
+ Variant ret;
+ Callable::CallError ce;
+ value->callback.call((const Variant **)&tagp, 1, ret, ce);
+ }
+ }
+}
+
+void DisplayServerOSX::_send_event(NSEvent *p_event) {
+ // special case handling of command-period, which is traditionally a special
+ // shortcut in macOS and doesn't arrive at our regular keyDown handler.
+ if ([p_event type] == NSEventTypeKeyDown) {
+ if (([p_event modifierFlags] & NSEventModifierFlagCommand) && [p_event keyCode] == 0x2f) {
+ Ref<InputEventKey> k;
+ k.instantiate();
+
+ _get_key_modifier_state([p_event modifierFlags], k);
+ k->set_window_id(DisplayServerOSX::INVALID_WINDOW_ID);
+ k->set_pressed(true);
+ k->set_keycode(KEY_PERIOD);
+ k->set_physical_keycode(KEY_PERIOD);
+ k->set_echo([p_event isARepeat]);
+
+ Input::get_singleton()->accumulate_input_event(k);
+ }
+ }
+}
+
void DisplayServerOSX::_process_key_events() {
Ref<InputEventKey> k;
for (int i = 0; i < key_event_pos; i++) {
@@ -3615,7 +3490,7 @@ ObjectID DisplayServerOSX::window_get_attached_instance_id(WindowID p_window) co
DisplayServer *DisplayServerOSX::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
DisplayServer *ds = memnew(DisplayServerOSX(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_resolution, r_error));
if (r_error != OK) {
- ds->alert("Your video card driver does not support any of the supported Metal versions.", "Unable to initialize Video driver");
+ OS::get_singleton()->alert("Your video card driver does not support any of the supported Metal versions.", "Unable to initialize Video driver");
}
return ds;
}
@@ -3785,12 +3660,6 @@ DisplayServerOSX::DisplayServerOSX(const String &p_rendering_driver, WindowMode
CGEventSourceSetLocalEventsSuppressionInterval(eventSource, 0.0);
- // Implicitly create shared NSApplication instance
- [GodotApplication sharedApplication];
-
- // In case we are unbundled, make us a proper UI application
- [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
-
keyboard_layout_dirty = true;
displays_arrangement_dirty = true;
displays_scale_dirty = true;
@@ -3804,9 +3673,6 @@ DisplayServerOSX::DisplayServerOSX(const String &p_rendering_driver, WindowMode
// Register to be notified on displays arrangement changes
CGDisplayRegisterReconfigurationCallback(displays_arrangement_changed, nullptr);
- // Menu bar setup must go between sharedApplication above and
- // finishLaunching below, in order to properly emulate the behavior
- // of NSApplicationMain
NSMenuItem *menu_item;
NSString *title;
@@ -3846,32 +3712,10 @@ DisplayServerOSX::DisplayServerOSX(const String &p_rendering_driver, WindowMode
title = [NSString stringWithFormat:NSLocalizedString(@"Quit %@", nil), nsappname];
[apple_menu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"];
- // Setup menu bar
- NSMenu *main_menu = [[[NSMenu alloc] initWithTitle:@""] autorelease];
+ // Add items to the menu bar
+ NSMenu *main_menu = [NSApp mainMenu];
menu_item = [main_menu addItemWithTitle:@"" action:nil keyEquivalent:@""];
[main_menu setSubmenu:apple_menu forItem:menu_item];
- [NSApp setMainMenu:main_menu];
-
- [NSApp finishLaunching];
-
- delegate = [[GodotApplicationDelegate alloc] init];
- ERR_FAIL_COND(!delegate);
- [NSApp setDelegate:delegate];
-
- //process application:openFile: event
- while (true) {
- NSEvent *event = [NSApp
- nextEventMatchingMask:NSEventMaskAny
- untilDate:[NSDate distantPast]
- inMode:NSDefaultRunLoopMode
- dequeue:YES];
-
- if (event == nil) {
- break;
- }
-
- [NSApp sendEvent:event];
- }
//!!!!!!!!!!!!!!!!!!!!!!!!!!
//TODO - do Vulkan and GLES2 support checks, driver selection and fallback
@@ -3924,8 +3768,6 @@ DisplayServerOSX::DisplayServerOSX(const String &p_rendering_driver, WindowMode
RendererCompositorRD::make_current();
}
#endif
-
- [NSApp activateIgnoringOtherApps:YES];
}
DisplayServerOSX::~DisplayServerOSX() {
diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp
index ea34b8a24e..131c4b821e 100644
--- a/platform/osx/export/export.cpp
+++ b/platform/osx/export/export.cpp
@@ -178,6 +178,7 @@ void EditorExportPlatformOSX::get_export_options(List<ExportOption> *r_options)
r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "codesign/entitlements/calendars"), false));
r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "codesign/entitlements/photos_library"), false));
r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "codesign/entitlements/apple_events"), false));
+ r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "codesign/entitlements/debugging"), false));
r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "codesign/entitlements/app_sandbox/enabled"), false));
r_options->push_back(ExportOption(PropertyInfo(Variant::BOOL, "codesign/entitlements/app_sandbox/network_server"), false));
@@ -845,6 +846,10 @@ Error EditorExportPlatformOSX::export_project(const Ref<EditorExportPreset> &p_p
ent_f->store_line("<key>com.apple.security.automation.apple-events</key>");
ent_f->store_line("<true/>");
}
+ if ((bool)p_preset->get("codesign/entitlements/debugging")) {
+ ent_f->store_line("<key>com.apple.security.get-task-allow</key>");
+ ent_f->store_line("<true/>");
+ }
if ((bool)p_preset->get("codesign/entitlements/app_sandbox/enabled")) {
ent_f->store_line("<key>com.apple.security.app-sandbox</key>");
diff --git a/platform/osx/joypad_osx.cpp b/platform/osx/joypad_osx.cpp
index 126ebc1908..d778271350 100644
--- a/platform/osx/joypad_osx.cpp
+++ b/platform/osx/joypad_osx.cpp
@@ -286,8 +286,9 @@ bool JoypadOSX::configure_joypad(IOHIDDeviceRef p_device_ref, joypad *p_joy) {
}
if ((!refCF) || (!CFStringGetCString((CFStringRef)refCF, c_name, sizeof(c_name), kCFStringEncodingUTF8))) {
name = "Unidentified Joypad";
+ } else {
+ name = c_name;
}
- name = c_name;
int id = input->get_unused_joy_id();
ERR_FAIL_COND_V(id == -1, false);
diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h
index d57940775d..37d30add78 100644
--- a/platform/osx/os_osx.h
+++ b/platform/osx/os_osx.h
@@ -72,6 +72,8 @@ protected:
public:
virtual String get_name() const override;
+ virtual void alert(const String &p_alert, const String &p_title = "ALERT!") override;
+
virtual Error open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path = false) override;
virtual MainLoop *get_main_loop() const override;
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm
index b65d84d900..c458a0264a 100644
--- a/platform/osx/os_osx.mm
+++ b/platform/osx/os_osx.mm
@@ -41,6 +41,137 @@
#include <mach-o/dyld.h>
#include <os/log.h>
+#define DS_OSX ((DisplayServerOSX *)(DisplayServerOSX::get_singleton()))
+
+/*************************************************************************/
+/* GodotApplication */
+/*************************************************************************/
+
+@interface GodotApplication : NSApplication
+@end
+
+@implementation GodotApplication
+
+- (void)sendEvent:(NSEvent *)event {
+ if (DS_OSX) {
+ DS_OSX->_send_event(event);
+ }
+
+ // From http://cocoadev.com/index.pl?GameKeyboardHandlingAlmost
+ // This works around an AppKit bug, where key up events while holding
+ // down the command key don't get sent to the key window.
+ if ([event type] == NSEventTypeKeyUp && ([event modifierFlags] & NSEventModifierFlagCommand)) {
+ [[self keyWindow] sendEvent:event];
+ } else {
+ [super sendEvent:event];
+ }
+}
+
+@end
+
+/*************************************************************************/
+/* GodotApplicationDelegate */
+/*************************************************************************/
+
+@interface GodotApplicationDelegate : NSObject
+- (void)forceUnbundledWindowActivationHackStep1;
+- (void)forceUnbundledWindowActivationHackStep2;
+- (void)forceUnbundledWindowActivationHackStep3;
+@end
+
+@implementation GodotApplicationDelegate
+
+- (void)forceUnbundledWindowActivationHackStep1 {
+ // Step1: Switch focus to macOS Dock.
+ // Required to perform step 2, TransformProcessType will fail if app is already the in focus.
+ for (NSRunningApplication *app in [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.dock"]) {
+ [app activateWithOptions:NSApplicationActivateIgnoringOtherApps];
+ break;
+ }
+ [self performSelector:@selector(forceUnbundledWindowActivationHackStep2)
+ withObject:nil
+ afterDelay:0.02];
+}
+
+- (void)forceUnbundledWindowActivationHackStep2 {
+ // Step 2: Register app as foreground process.
+ ProcessSerialNumber psn = { 0, kCurrentProcess };
+ (void)TransformProcessType(&psn, kProcessTransformToForegroundApplication);
+ [self performSelector:@selector(forceUnbundledWindowActivationHackStep3) withObject:nil afterDelay:0.02];
+}
+
+- (void)forceUnbundledWindowActivationHackStep3 {
+ // Step 3: Switch focus back to app window.
+ [[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateIgnoringOtherApps];
+}
+
+- (void)applicationDidFinishLaunching:(NSNotification *)notice {
+ NSString *nsappname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
+ if (nsappname == nil) {
+ // If executable is not a bundled, macOS WindowServer won't register and activate app window correctly (menu and title bar are grayed out and input ignored).
+ [self performSelector:@selector(forceUnbundledWindowActivationHackStep1) withObject:nil afterDelay:0.02];
+ }
+}
+
+- (void)applicationDidResignActive:(NSNotification *)notification {
+ if (OS::get_singleton()->get_main_loop()) {
+ OS::get_singleton()->get_main_loop()->notification(MainLoop::NOTIFICATION_APPLICATION_FOCUS_OUT);
+ }
+}
+
+- (void)applicationDidBecomeActive:(NSNotification *)notification {
+ if (OS::get_singleton()->get_main_loop()) {
+ OS::get_singleton()->get_main_loop()->notification(MainLoop::NOTIFICATION_APPLICATION_FOCUS_IN);
+ }
+}
+
+- (void)globalMenuCallback:(id)sender {
+ if (DS_OSX) {
+ return DS_OSX->_menu_callback(sender);
+ }
+}
+
+- (NSMenu *)applicationDockMenu:(NSApplication *)sender {
+ if (DS_OSX) {
+ return DS_OSX->_get_dock_menu();
+ } else {
+ return nullptr;
+ }
+}
+
+- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename {
+ // Note: may be called called before main loop init!
+ char *utfs = strdup([filename UTF8String]);
+ ((OS_OSX *)OS_OSX::get_singleton())->open_with_filename.parse_utf8(utfs);
+ free(utfs);
+
+#ifdef TOOLS_ENABLED
+ // Open new instance
+ if (OS_OSX::get_singleton()->get_main_loop()) {
+ List<String> args;
+ args.push_back(((OS_OSX *)OS_OSX::get_singleton())->open_with_filename);
+ String exec = OS_OSX::get_singleton()->get_executable_path();
+ OS_OSX::get_singleton()->create_process(exec, args);
+ }
+#endif
+ return YES;
+}
+
+- (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender {
+ if (DS_OSX) {
+ DS_OSX->_send_window_event(DS_OSX->windows[DisplayServerOSX::MAIN_WINDOW_ID], DisplayServerOSX::WINDOW_EVENT_CLOSE_REQUEST);
+ }
+ return NSTerminateCancel;
+}
+
+- (void)showAbout:(id)sender {
+ if (OS_OSX::get_singleton()->get_main_loop()) {
+ OS_OSX::get_singleton()->get_main_loop()->notification(MainLoop::NOTIFICATION_WM_ABOUT);
+ }
+}
+
+@end
+
/*************************************************************************/
/* OSXTerminalLogger */
/*************************************************************************/
@@ -119,6 +250,24 @@ String OS_OSX::get_unique_id() const {
return serial_number;
}
+void OS_OSX::alert(const String &p_alert, const String &p_title) {
+ NSAlert *window = [[NSAlert alloc] init];
+ NSString *ns_title = [NSString stringWithUTF8String:p_title.utf8().get_data()];
+ NSString *ns_alert = [NSString stringWithUTF8String:p_alert.utf8().get_data()];
+
+ [window addButtonWithTitle:@"OK"];
+ [window setMessageText:ns_title];
+ [window setInformativeText:ns_alert];
+ [window setAlertStyle:NSAlertStyleWarning];
+
+ id key_window = [[NSApplication sharedApplication] keyWindow];
+ [window runModal];
+ [window release];
+ if (key_window) {
+ [key_window makeKeyAndOrderFront:nil];
+ }
+}
+
void OS_OSX::initialize_core() {
OS_Unix::initialize_core();
@@ -220,7 +369,7 @@ String OS_OSX::get_cache_path() const {
if (get_environment("XDG_CACHE_HOME").is_absolute_path()) {
return get_environment("XDG_CACHE_HOME");
} else {
- WARN_PRINT_ONCE("`XDG_CACHE_HOME` is a relative path. Ignoring its value and falling back to `$HOME/Libary/Caches` or `get_config_path()` per the XDG Base Directory specification.");
+ WARN_PRINT_ONCE("`XDG_CACHE_HOME` is a relative path. Ignoring its value and falling back to `$HOME/Library/Caches` or `get_config_path()` per the XDG Base Directory specification.");
}
}
if (has_environment("HOME")) {
@@ -372,6 +521,41 @@ OS_OSX::OS_OSX() {
#endif
DisplayServerOSX::register_osx_driver();
+
+ // Implicitly create shared NSApplication instance
+ [GodotApplication sharedApplication];
+
+ // In case we are unbundled, make us a proper UI application
+ [NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
+
+ // Menu bar setup must go between sharedApplication above and
+ // finishLaunching below, in order to properly emulate the behavior
+ // of NSApplicationMain
+
+ NSMenu *main_menu = [[[NSMenu alloc] initWithTitle:@""] autorelease];
+ [NSApp setMainMenu:main_menu];
+ [NSApp finishLaunching];
+
+ id delegate = [[GodotApplicationDelegate alloc] init];
+ ERR_FAIL_COND(!delegate);
+ [NSApp setDelegate:delegate];
+
+ //process application:openFile: event
+ while (true) {
+ NSEvent *event = [NSApp
+ nextEventMatchingMask:NSEventMaskAny
+ untilDate:[NSDate distantPast]
+ inMode:NSDefaultRunLoopMode
+ dequeue:YES];
+
+ if (event == nil) {
+ break;
+ }
+
+ [NSApp sendEvent:event];
+ }
+
+ [NSApp activateIgnoringOtherApps:YES];
}
bool OS_OSX::_check_internal_feature_support(const String &p_feature) {
diff --git a/platform/windows/detect.py b/platform/windows/detect.py
index 7772ba2dbe..287ece1d29 100644
--- a/platform/windows/detect.py
+++ b/platform/windows/detect.py
@@ -152,7 +152,7 @@ def setup_msvc_auto(env):
env["TARGET_ARCH"] = None
if env["bits"] != "default":
env["TARGET_ARCH"] = {"32": "x86", "64": "x86_64"}[env["bits"]]
- if env.has_key("msvc_version"):
+ if "msvc_version" in env:
env["MSVC_VERSION"] = env["msvc_version"]
env.Tool("msvc")
env.Tool("mssdk") # we want the MS SDK
@@ -171,7 +171,6 @@ def setup_mingw(env):
"""Set up env for use with mingw"""
# Nothing to do here
print("Using MinGW")
- pass
def configure_msvc(env, manual_msvc_config):
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp
index 4f64809abc..e78b23c509 100644
--- a/platform/windows/display_server_windows.cpp
+++ b/platform/windows/display_server_windows.cpp
@@ -79,10 +79,6 @@ String DisplayServerWindows::get_name() const {
return "Windows";
}
-void DisplayServerWindows::alert(const String &p_alert, const String &p_title) {
- MessageBoxW(nullptr, (LPCWSTR)(p_alert.utf16().get_data()), (LPCWSTR)(p_title.utf16().get_data()), MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL);
-}
-
void DisplayServerWindows::_set_mouse_mode_impl(MouseMode p_mode) {
if (p_mode == MOUSE_MODE_CAPTURED || p_mode == MOUSE_MODE_CONFINED || p_mode == MOUSE_MODE_CONFINED_HIDDEN) {
// Mouse is grabbed (captured or confined).
@@ -3358,8 +3354,8 @@ Vector<String> DisplayServerWindows::get_rendering_drivers_func() {
DisplayServer *DisplayServerWindows::create_func(const String &p_rendering_driver, WindowMode p_mode, VSyncMode p_vsync_mode, uint32_t p_flags, const Vector2i &p_resolution, Error &r_error) {
DisplayServer *ds = memnew(DisplayServerWindows(p_rendering_driver, p_mode, p_vsync_mode, p_flags, p_resolution, r_error));
if (r_error != OK) {
- ds->alert("Your video card driver does not support any of the supported Vulkan versions.\n"
- "Please update your drivers or if you have a very old or integrated GPU upgrade it.",
+ OS::get_singleton()->alert("Your video card driver does not support any of the supported Vulkan versions.\n"
+ "Please update your drivers or if you have a very old or integrated GPU upgrade it.",
"Unable to initialize Video driver");
}
return ds;
diff --git a/platform/windows/display_server_windows.h b/platform/windows/display_server_windows.h
index aa1d42d6ed..06014fbabe 100644
--- a/platform/windows/display_server_windows.h
+++ b/platform/windows/display_server_windows.h
@@ -442,8 +442,6 @@ public:
virtual bool has_feature(Feature p_feature) const override;
virtual String get_name() const override;
- virtual void alert(const String &p_alert, const String &p_title = "ALERT!") override;
-
virtual void mouse_set_mode(MouseMode p_mode) override;
virtual MouseMode mouse_get_mode() const override;
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp
index 56d673afc3..2c8afaf7de 100644
--- a/platform/windows/os_windows.cpp
+++ b/platform/windows/os_windows.cpp
@@ -165,6 +165,10 @@ BOOL WINAPI HandlerRoutine(_In_ DWORD dwCtrlType) {
}
}
+void OS_Windows::alert(const String &p_alert, const String &p_title) {
+ MessageBoxW(nullptr, (LPCWSTR)(p_alert.utf16().get_data()), (LPCWSTR)(p_title.utf16().get_data()), MB_OK | MB_ICONEXCLAMATION | MB_TASKMODAL);
+}
+
void OS_Windows::initialize_debugging() {
SetConsoleCtrlHandler(HandlerRoutine, TRUE);
}
@@ -407,8 +411,8 @@ String OS_Windows::_quote_command_line_argument(const String &p_text) const {
Error OS_Windows::execute(const String &p_path, const List<String> &p_arguments, String *r_pipe, int *r_exitcode, bool read_stderr, Mutex *p_pipe_mutex) {
String path = p_path.replace("/", "\\");
String command = _quote_command_line_argument(path);
- for (const List<String>::Element *E = p_arguments.front(); E; E = E->next()) {
- command += " " + _quote_command_line_argument(E->get());
+ for (const String &E : p_arguments) {
+ command += " " + _quote_command_line_argument(E);
}
if (r_pipe) {
@@ -463,8 +467,8 @@ Error OS_Windows::execute(const String &p_path, const List<String> &p_arguments,
Error OS_Windows::create_process(const String &p_path, const List<String> &p_arguments, ProcessID *r_child_id) {
String path = p_path.replace("/", "\\");
String command = _quote_command_line_argument(path);
- for (const List<String>::Element *E = p_arguments.front(); E; E = E->next()) {
- command += " " + _quote_command_line_argument(E->get());
+ for (const String &E : p_arguments) {
+ command += " " + _quote_command_line_argument(E);
}
ProcessInfo pi;
diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h
index 8f9ef254f1..ea0c263b78 100644
--- a/platform/windows/os_windows.h
+++ b/platform/windows/os_windows.h
@@ -108,6 +108,8 @@ protected:
Map<ProcessID, ProcessInfo> *process_map;
public:
+ virtual void alert(const String &p_alert, const String &p_title = "ALERT!") override;
+
virtual Error open_dynamic_library(const String p_path, void *&p_library_handle, bool p_also_set_library_path = false) override;
virtual Error close_dynamic_library(void *p_library_handle) override;
virtual Error get_dynamic_library_symbol_handle(void *p_library_handle, const String p_name, void *&p_symbol_handle, bool p_optional = false) override;
diff --git a/scene/2d/animated_sprite_2d.cpp b/scene/2d/animated_sprite_2d.cpp
index 9ee37670d1..da2ab6ada8 100644
--- a/scene/2d/animated_sprite_2d.cpp
+++ b/scene/2d/animated_sprite_2d.cpp
@@ -123,7 +123,7 @@ void AnimatedSprite2D::_validate_property(PropertyInfo &property) const {
}
property.hint_string += String(E->get());
- if (animation == E->get()) {
+ if (animation == E) {
current_found = true;
}
}
diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp
index 0e55915957..2219437c14 100644
--- a/scene/2d/camera_2d.cpp
+++ b/scene/2d/camera_2d.cpp
@@ -483,8 +483,8 @@ void Camera2D::force_update_scroll() {
}
void Camera2D::reset_smoothing() {
- smoothed_camera_pos = camera_pos;
_update_scroll();
+ smoothed_camera_pos = camera_pos;
}
void Camera2D::align() {
diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp
index 5b12da8b57..a382fb2f1e 100644
--- a/scene/2d/physics_body_2d.cpp
+++ b/scene/2d/physics_body_2d.cpp
@@ -145,8 +145,7 @@ TypedArray<PhysicsBody2D> PhysicsBody2D::get_collision_exceptions() {
List<RID> exceptions;
PhysicsServer2D::get_singleton()->body_get_collision_exceptions(get_rid(), &exceptions);
Array ret;
- for (List<RID>::Element *E = exceptions.front(); E; E = E->next()) {
- RID body = E->get();
+ for (const RID &body : exceptions) {
ObjectID instance_id = PhysicsServer2D::get_singleton()->body_get_object_instance_id(body);
Object *obj = ObjectDB::get_instance(instance_id);
PhysicsBody2D *physics_body = Object::cast_to<PhysicsBody2D>(obj);
@@ -1188,9 +1187,6 @@ void CharacterBody2D::move_and_slide() {
}
void CharacterBody2D::_set_collision_direction(const PhysicsServer2D::MotionResult &p_result) {
- on_floor = false;
- on_ceiling = false;
- on_wall = false;
if (up_direction == Vector2()) {
//all is a wall
on_wall = true;
@@ -1326,7 +1322,7 @@ int CharacterBody2D::get_max_slides() const {
}
void CharacterBody2D::set_max_slides(int p_max_slides) {
- ERR_FAIL_COND(p_max_slides > 0);
+ ERR_FAIL_COND(p_max_slides < 1);
max_slides = p_max_slides;
}
@@ -1400,7 +1396,7 @@ void CharacterBody2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "linear_velocity"), "set_linear_velocity", "get_linear_velocity");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "stop_on_slope"), "set_stop_on_slope_enabled", "is_stop_on_slope_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "infinite_inertia"), "set_infinite_inertia_enabled", "is_infinite_inertia_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "max_slides"), "set_max_slides", "get_max_slides");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "max_slides", PROPERTY_HINT_RANGE, "1,8,1,or_greater"), "set_max_slides", "get_max_slides");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_max_angle", PROPERTY_HINT_RANGE, "0,180,0.1"), "set_floor_max_angle", "get_floor_max_angle");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "snap"), "set_snap", "get_snap");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "up_direction"), "set_up_direction", "get_up_direction");
diff --git a/scene/2d/tile_map.cpp b/scene/2d/tile_map.cpp
index bf2f8f8947..6afa0c0779 100644
--- a/scene/2d/tile_map.cpp
+++ b/scene/2d/tile_map.cpp
@@ -34,6 +34,8 @@
#include "core/math/geometry_2d.h"
#include "core/os/os.h"
+#include "servers/navigation_server_2d.h"
+
void TileMapPattern::set_cell(const Vector2i &p_coords, int p_source_id, const Vector2i p_atlas_coords, int p_alternative_tile) {
ERR_FAIL_COND_MSG(p_coords.x < 0 || p_coords.y < 0, vformat("Cannot set cell with negative coords in a TileMapPattern. Wrong coords: %s", p_coords));
@@ -235,40 +237,42 @@ Vector2i TileMap::transform_coords_layout(Vector2i p_coords, TileSet::TileOffset
return output;
}
-int TileMap::get_effective_quadrant_size() const {
+int TileMap::get_effective_quadrant_size(int p_layer) const {
// When using YSort, the quadrant size is reduced to 1 to have one CanvasItem per quadrant
- if (tile_set.is_valid() && tile_set->is_y_sorting()) {
+ if (is_y_sort_enabled() && layers[p_layer].y_sort_enabled) {
return 1;
} else {
return quadrant_size;
}
}
-Vector2i TileMap::_coords_to_quadrant_coords(const Vector2i &p_coords) const {
- int quadrant_size = get_effective_quadrant_size();
+void TileMap::set_selected_layer(int p_layer_id) {
+ ERR_FAIL_COND(p_layer_id < -1 || p_layer_id >= (int)layers.size());
+ selected_layer = p_layer_id;
+ emit_signal(SNAME("changed"));
+ _make_all_quadrants_dirty();
+}
- // Rounding down, instead of simply rounding towards zero (truncating)
- return Vector2i(
- p_coords.x > 0 ? p_coords.x / quadrant_size : (p_coords.x - (quadrant_size - 1)) / quadrant_size,
- p_coords.y > 0 ? p_coords.y / quadrant_size : (p_coords.y - (quadrant_size - 1)) / quadrant_size);
+int TileMap::get_selected_layer() const {
+ return selected_layer;
}
void TileMap::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_ENTER_TREE: {
pending_update = true;
- _recreate_quadrants();
+ _recreate_internals();
} break;
case NOTIFICATION_EXIT_TREE: {
- _clear_quadrants();
+ _clear_internals();
} break;
}
// Transfers the notification to tileset plugins.
if (tile_set.is_valid()) {
- for (int i = 0; i < tile_set->get_tile_set_atlas_plugins().size(); i++) {
- tile_set->get_tile_set_atlas_plugins()[i]->tilemap_notification(this, p_what);
- }
+ _rendering_notification(p_what);
+ _physics_notification(p_what);
+ _navigation_notification(p_what);
}
}
@@ -283,64 +287,210 @@ void TileMap::set_tileset(const Ref<TileSet> &p_tileset) {
// Set the tileset, registering to its changes.
if (tile_set.is_valid()) {
- tile_set->disconnect("changed", callable_mp(this, &TileMap::_make_all_quadrants_dirty));
tile_set->disconnect("changed", callable_mp(this, &TileMap::_tile_set_changed));
}
if (!p_tileset.is_valid()) {
- _clear_quadrants();
+ _clear_internals();
}
tile_set = p_tileset;
if (tile_set.is_valid()) {
- tile_set->connect("changed", callable_mp(this, &TileMap::_make_all_quadrants_dirty), varray(true));
tile_set->connect("changed", callable_mp(this, &TileMap::_tile_set_changed));
- _recreate_quadrants();
+ _recreate_internals();
}
emit_signal(SNAME("changed"));
}
+void TileMap::set_quadrant_size(int p_size) {
+ ERR_FAIL_COND_MSG(p_size < 1, "TileMapQuadrant size cannot be smaller than 1.");
+
+ quadrant_size = p_size;
+ _recreate_internals();
+ emit_signal(SNAME("changed"));
+}
+
int TileMap::get_quadrant_size() const {
return quadrant_size;
}
-void TileMap::set_quadrant_size(int p_size) {
- ERR_FAIL_COND_MSG(p_size < 1, "TileMapQuadrant size cannot be smaller than 1.");
+void TileMap::set_layers_count(int p_layers_count) {
+ ERR_FAIL_COND(p_layers_count < 0);
+ _clear_internals();
- quadrant_size = p_size;
- _recreate_quadrants();
+ layers.resize(p_layers_count);
+ _recreate_internals();
+ notify_property_list_changed();
+
+ if (selected_layer >= p_layers_count) {
+ selected_layer = -1;
+ }
+
+ emit_signal(SNAME("changed"));
+
+ update_configuration_warnings();
+}
+
+int TileMap::get_layers_count() const {
+ return layers.size();
+}
+
+void TileMap::set_layer_name(int p_layer, String p_name) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
+ layers[p_layer].name = p_name;
+ emit_signal(SNAME("changed"));
+}
+
+String TileMap::get_layer_name(int p_layer) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), String());
+ return layers[p_layer].name;
+}
+
+void TileMap::set_layer_enabled(int p_layer, bool p_enabled) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
+ layers[p_layer].enabled = p_enabled;
+ _recreate_internals();
+ emit_signal(SNAME("changed"));
+
+ update_configuration_warnings();
+}
+
+bool TileMap::is_layer_enabled(int p_layer) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), false);
+ return layers[p_layer].enabled;
+}
+
+void TileMap::set_layer_y_sort_enabled(int p_layer, bool p_y_sort_enabled) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
+ layers[p_layer].y_sort_enabled = p_y_sort_enabled;
+ _recreate_internals();
emit_signal(SNAME("changed"));
+
+ update_configuration_warnings();
+}
+
+bool TileMap::is_layer_y_sort_enabled(int p_layer) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), false);
+ return layers[p_layer].y_sort_enabled;
+}
+
+void TileMap::set_layer_y_sort_origin(int p_layer, int p_y_sort_origin) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
+ layers[p_layer].y_sort_origin = p_y_sort_origin;
+ _recreate_internals();
+ emit_signal(SNAME("changed"));
+}
+
+int TileMap::get_layer_y_sort_origin(int p_layer) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), false);
+ return layers[p_layer].y_sort_origin;
+}
+
+void TileMap::set_layer_z_index(int p_layer, int p_z_index) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
+ layers[p_layer].z_index = p_z_index;
+ _recreate_internals();
+ emit_signal(SNAME("changed"));
+
+ update_configuration_warnings();
+}
+
+int TileMap::get_layer_z_index(int p_layer) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), false);
+ return layers[p_layer].z_index;
}
void TileMap::set_collision_visibility_mode(TileMap::VisibilityMode p_show_collision) {
- show_collision = p_show_collision;
- _recreate_quadrants();
+ collision_visibility_mode = p_show_collision;
+ _recreate_internals();
emit_signal(SNAME("changed"));
}
TileMap::VisibilityMode TileMap::get_collision_visibility_mode() {
- return show_collision;
+ return collision_visibility_mode;
}
void TileMap::set_navigation_visibility_mode(TileMap::VisibilityMode p_show_navigation) {
- show_navigation = p_show_navigation;
- _recreate_quadrants();
+ navigation_visibility_mode = p_show_navigation;
+ _recreate_internals();
emit_signal(SNAME("changed"));
}
TileMap::VisibilityMode TileMap::get_navigation_visibility_mode() {
- return show_navigation;
+ return navigation_visibility_mode;
}
void TileMap::set_y_sort_enabled(bool p_enable) {
Node2D::set_y_sort_enabled(p_enable);
- _recreate_quadrants();
+ _recreate_internals();
emit_signal(SNAME("changed"));
}
-void TileMap::update_dirty_quadrants() {
+Vector2i TileMap::_coords_to_quadrant_coords(int p_layer, const Vector2i &p_coords) const {
+ int quadrant_size = get_effective_quadrant_size(p_layer);
+
+ // Rounding down, instead of simply rounding towards zero (truncating)
+ return Vector2i(
+ p_coords.x > 0 ? p_coords.x / quadrant_size : (p_coords.x - (quadrant_size - 1)) / quadrant_size,
+ p_coords.y > 0 ? p_coords.y / quadrant_size : (p_coords.y - (quadrant_size - 1)) / quadrant_size);
+}
+
+Map<Vector2i, TileMapQuadrant>::Element *TileMap::_create_quadrant(int p_layer, const Vector2i &p_qk) {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), nullptr);
+
+ TileMapQuadrant q;
+ q.layer = p_layer;
+ q.coords = p_qk;
+
+ rect_cache_dirty = true;
+
+ // Create the debug canvas item.
+ RenderingServer *rs = RenderingServer::get_singleton();
+ q.debug_canvas_item = rs->canvas_item_create();
+ rs->canvas_item_set_z_index(q.debug_canvas_item, RS::CANVAS_ITEM_Z_MAX - 1);
+ rs->canvas_item_set_parent(q.debug_canvas_item, get_canvas_item());
+
+ // Call the create_quadrant method on plugins
+ if (tile_set.is_valid()) {
+ _rendering_create_quadrant(&q);
+ _physics_create_quadrant(&q);
+ }
+
+ return layers[p_layer].quadrant_map.insert(p_qk, q);
+}
+
+void TileMap::_make_quadrant_dirty(Map<Vector2i, TileMapQuadrant>::Element *Q) {
+ // Make the given quadrant dirty, then trigger an update later.
+ TileMapQuadrant &q = Q->get();
+ if (!q.dirty_list_element.in_list()) {
+ layers[q.layer].dirty_quadrant_list.add(&q.dirty_list_element);
+ }
+ _queue_update_dirty_quadrants();
+}
+
+void TileMap::_make_all_quadrants_dirty() {
+ // Make all quandrants dirty, then trigger an update later.
+ for (unsigned int layer = 0; layer < layers.size(); layer++) {
+ for (Map<Vector2i, TileMapQuadrant>::Element *E = layers[layer].quadrant_map.front(); E; E = E->next()) {
+ if (!E->value().dirty_list_element.in_list()) {
+ layers[layer].dirty_quadrant_list.add(&E->value().dirty_list_element);
+ }
+ }
+ }
+ _queue_update_dirty_quadrants();
+}
+
+void TileMap::_queue_update_dirty_quadrants() {
+ if (pending_update || !is_inside_tree()) {
+ return;
+ }
+ pending_update = true;
+ call_deferred(SNAME("_update_dirty_quadrants"));
+}
+
+void TileMap::_update_dirty_quadrants() {
if (!pending_update) {
return;
}
@@ -349,43 +499,130 @@ void TileMap::update_dirty_quadrants() {
return;
}
- // Update the coords cache.
- for (SelfList<TileMapQuadrant> *q = dirty_quadrant_list.first(); q; q = q->next()) {
- q->self()->map_to_world.clear();
- q->self()->world_to_map.clear();
- for (Set<Vector2i>::Element *E = q->self()->cells.front(); E; E = E->next()) {
- Vector2i pk = E->get();
- Vector2i pk_world_coords = map_to_world(pk);
- q->self()->map_to_world[pk] = pk_world_coords;
- q->self()->world_to_map[pk_world_coords] = pk;
+ for (unsigned int layer = 0; layer < layers.size(); layer++) {
+ // Update the coords cache.
+ for (SelfList<TileMapQuadrant> *q = layers[layer].dirty_quadrant_list.first(); q; q = q->next()) {
+ q->self()->map_to_world.clear();
+ q->self()->world_to_map.clear();
+ for (Set<Vector2i>::Element *E = q->self()->cells.front(); E; E = E->next()) {
+ Vector2i pk = E->get();
+ Vector2i pk_world_coords = map_to_world(pk);
+ q->self()->map_to_world[pk] = pk_world_coords;
+ q->self()->world_to_map[pk_world_coords] = pk;
+ }
+ }
+
+ // Call the update_dirty_quadrant method on plugins.
+ _rendering_update_dirty_quadrants(layers[layer].dirty_quadrant_list);
+ _physics_update_dirty_quadrants(layers[layer].dirty_quadrant_list);
+ _navigation_update_dirty_quadrants(layers[layer].dirty_quadrant_list);
+ _scenes_update_dirty_quadrants(layers[layer].dirty_quadrant_list);
+
+ // Redraw the debug canvas_items.
+ RenderingServer *rs = RenderingServer::get_singleton();
+ for (SelfList<TileMapQuadrant> *q = layers[layer].dirty_quadrant_list.first(); q; q = q->next()) {
+ rs->canvas_item_clear(q->self()->debug_canvas_item);
+ Transform2D xform;
+ xform.set_origin(map_to_world(q->self()->coords * get_effective_quadrant_size(layer)));
+ rs->canvas_item_set_transform(q->self()->debug_canvas_item, xform);
+
+ _rendering_draw_quadrant_debug(q->self());
+ _physics_draw_quadrant_debug(q->self());
+ _navigation_draw_quadrant_debug(q->self());
+ _scenes_draw_quadrant_debug(q->self());
}
- }
- // Call the update_dirty_quadrant method on plugins.
- for (int i = 0; i < tile_set->get_tile_set_atlas_plugins().size(); i++) {
- tile_set->get_tile_set_atlas_plugins()[i]->update_dirty_quadrants(this, dirty_quadrant_list);
+ // Clear the list
+ while (layers[layer].dirty_quadrant_list.first()) {
+ layers[layer].dirty_quadrant_list.remove(layers[layer].dirty_quadrant_list.first());
+ }
}
- // Redraw the debug canvas_items.
- RenderingServer *rs = RenderingServer::get_singleton();
- for (SelfList<TileMapQuadrant> *q = dirty_quadrant_list.first(); q; q = q->next()) {
- rs->canvas_item_clear(q->self()->debug_canvas_item);
- Transform2D xform;
- xform.set_origin(map_to_world(q->self()->coords * get_effective_quadrant_size()));
- rs->canvas_item_set_transform(q->self()->debug_canvas_item, xform);
- for (int i = 0; i < tile_set->get_tile_set_atlas_plugins().size(); i++) {
- tile_set->get_tile_set_atlas_plugins()[i]->draw_quadrant_debug(this, q->self());
+ pending_update = false;
+
+ _recompute_rect_cache();
+}
+
+void TileMap::_recreate_internals() {
+ // Clear all internals.
+ _clear_internals();
+
+ for (unsigned int layer = 0; layer < layers.size(); layer++) {
+ if (!layers[layer].enabled) {
+ continue;
+ }
+
+ // Upadate the layer internals.
+ _rendering_update_layer(layer);
+
+ // Recreate the quadrants.
+ const Map<Vector2i, TileMapCell> &tile_map = layers[layer].tile_map;
+ for (Map<Vector2i, TileMapCell>::Element *E = tile_map.front(); E; E = E->next()) {
+ Vector2i qk = _coords_to_quadrant_coords(layer, Vector2i(E->key().x, E->key().y));
+
+ Map<Vector2i, TileMapQuadrant>::Element *Q = layers[layer].quadrant_map.find(qk);
+ if (!Q) {
+ Q = _create_quadrant(layer, qk);
+ layers[layer].dirty_quadrant_list.add(&Q->get().dirty_list_element);
+ }
+
+ Vector2i pk = E->key();
+ Q->get().cells.insert(pk);
+
+ _make_quadrant_dirty(Q);
}
}
- // Clear the list
- while (dirty_quadrant_list.first()) {
- dirty_quadrant_list.remove(dirty_quadrant_list.first());
+ _update_dirty_quadrants();
+}
+
+void TileMap::_erase_quadrant(Map<Vector2i, TileMapQuadrant>::Element *Q) {
+ // Remove a quadrant.
+ TileMapQuadrant *q = &(Q->get());
+
+ // Call the cleanup_quadrant method on plugins.
+ if (tile_set.is_valid()) {
+ _rendering_cleanup_quadrant(q);
+ _physics_cleanup_quadrant(q);
+ _navigation_cleanup_quadrant(q);
+ _scenes_cleanup_quadrant(q);
}
- pending_update = false;
+ // Remove the quadrant from the dirty_list if it is there.
+ if (q->dirty_list_element.in_list()) {
+ layers[q->layer].dirty_quadrant_list.remove(&(q->dirty_list_element));
+ }
- _recompute_rect_cache();
+ // Free the debug canvas item.
+ RenderingServer *rs = RenderingServer::get_singleton();
+ rs->free(q->debug_canvas_item);
+
+ layers[q->layer].quadrant_map.erase(Q);
+ rect_cache_dirty = true;
+}
+
+void TileMap::_clear_layer_internals(int p_layer) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
+
+ // Clear quadrants.
+ while (layers[p_layer].quadrant_map.size()) {
+ _erase_quadrant(layers[p_layer].quadrant_map.front());
+ }
+
+ // Clear the layers internals.
+ _rendering_cleanup_layer(p_layer);
+
+ // Clear the dirty quadrants list.
+ while (layers[p_layer].dirty_quadrant_list.first()) {
+ layers[p_layer].dirty_quadrant_list.remove(layers[p_layer].dirty_quadrant_list.first());
+ }
+}
+
+void TileMap::_clear_internals() {
+ // Clear quadrants.
+ for (unsigned int layer = 0; layer < layers.size(); layer++) {
+ _clear_layer_internals(layer);
+ }
}
void TileMap::_recompute_rect_cache() {
@@ -397,16 +634,18 @@ void TileMap::_recompute_rect_cache() {
}
Rect2 r_total;
- for (Map<Vector2i, TileMapQuadrant>::Element *E = quadrant_map.front(); E; E = E->next()) {
- Rect2 r;
- r.position = map_to_world(E->key() * get_effective_quadrant_size());
- r.expand_to(map_to_world((E->key() + Vector2i(1, 0)) * get_effective_quadrant_size()));
- r.expand_to(map_to_world((E->key() + Vector2i(1, 1)) * get_effective_quadrant_size()));
- r.expand_to(map_to_world((E->key() + Vector2i(0, 1)) * get_effective_quadrant_size()));
- if (E == quadrant_map.front()) {
- r_total = r;
- } else {
- r_total = r_total.merge(r);
+ for (unsigned int layer = 0; layer < layers.size(); layer++) {
+ for (Map<Vector2i, TileMapQuadrant>::Element *E = layers[layer].quadrant_map.front(); E; E = E->next()) {
+ Rect2 r;
+ r.position = map_to_world(E->key() * get_effective_quadrant_size(layer));
+ r.expand_to(map_to_world((E->key() + Vector2i(1, 0)) * get_effective_quadrant_size(layer)));
+ r.expand_to(map_to_world((E->key() + Vector2i(1, 1)) * get_effective_quadrant_size(layer)));
+ r.expand_to(map_to_world((E->key() + Vector2i(0, 1)) * get_effective_quadrant_size(layer)));
+ if (E == layers[layer].quadrant_map.front()) {
+ r_total = r;
+ } else {
+ r_total = r_total.merge(r);
+ }
}
}
@@ -418,94 +657,884 @@ void TileMap::_recompute_rect_cache() {
#endif
}
-Map<Vector2i, TileMapQuadrant>::Element *TileMap::_create_quadrant(const Vector2i &p_qk) {
- TileMapQuadrant q;
- q.coords = p_qk;
+/////////////////////////////// Rendering //////////////////////////////////////
- rect_cache_dirty = true;
+void TileMap::_rendering_notification(int p_what) {
+ switch (p_what) {
+ case CanvasItem::NOTIFICATION_VISIBILITY_CHANGED: {
+ bool visible = is_visible_in_tree();
+ for (int layer = 0; layer < (int)layers.size(); layer++) {
+ for (Map<Vector2i, TileMapQuadrant>::Element *E_quadrant = layers[layer].quadrant_map.front(); E_quadrant; E_quadrant = E_quadrant->next()) {
+ TileMapQuadrant &q = E_quadrant->get();
+
+ // Update occluders transform.
+ for (Map<Vector2i, Vector2i, TileMapQuadrant::CoordsWorldComparator>::Element *E_cell = q.world_to_map.front(); E_cell; E_cell = E_cell->next()) {
+ Transform2D xform;
+ xform.set_origin(E_cell->key());
+ for (const RID &occluder : q.occluders) {
+ RS::get_singleton()->canvas_light_occluder_set_enabled(occluder, visible);
+ }
+ }
+ }
+ }
+ } break;
+ case CanvasItem::NOTIFICATION_TRANSFORM_CHANGED: {
+ if (!is_inside_tree()) {
+ return;
+ }
+ for (int layer = 0; layer < (int)layers.size(); layer++) {
+ for (Map<Vector2i, TileMapQuadrant>::Element *E_quadrant = layers[layer].quadrant_map.front(); E_quadrant; E_quadrant = E_quadrant->next()) {
+ TileMapQuadrant &q = E_quadrant->get();
+
+ // Update occluders transform.
+ for (Map<Vector2i, Vector2i, TileMapQuadrant::CoordsWorldComparator>::Element *E_cell = q.world_to_map.front(); E_cell; E_cell = E_cell->next()) {
+ Transform2D xform;
+ xform.set_origin(E_cell->key());
+ for (const RID &occluder : q.occluders) {
+ RS::get_singleton()->canvas_light_occluder_set_transform(occluder, get_global_transform() * xform);
+ }
+ }
+ }
+ }
+ } break;
+ case CanvasItem::NOTIFICATION_DRAW: {
+ if (tile_set.is_valid()) {
+ RenderingServer::get_singleton()->canvas_item_set_sort_children_by_y(get_canvas_item(), is_y_sort_enabled());
+ }
+ } break;
+ }
+}
+
+void TileMap::_rendering_update_layer(int p_layer) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
- // Create the debug canvas item.
RenderingServer *rs = RenderingServer::get_singleton();
- q.debug_canvas_item = rs->canvas_item_create();
- rs->canvas_item_set_z_index(q.debug_canvas_item, RS::CANVAS_ITEM_Z_MAX - 1);
- rs->canvas_item_set_parent(q.debug_canvas_item, get_canvas_item());
+ if (!layers[p_layer].canvas_item.is_valid()) {
+ RID ci = rs->canvas_item_create();
+ rs->canvas_item_set_parent(ci, get_canvas_item());
- // Call the create_quadrant method on plugins
- if (tile_set.is_valid()) {
- for (int i = 0; i < tile_set->get_tile_set_atlas_plugins().size(); i++) {
- tile_set->get_tile_set_atlas_plugins()[i]->create_quadrant(this, &q);
- }
+ /*Transform2D xform;
+ xform.set_origin(Vector2(0, p_layer));
+ rs->canvas_item_set_transform(ci, xform);*/
+ rs->canvas_item_set_draw_index(ci, p_layer);
+
+ layers[p_layer].canvas_item = ci;
}
+ RID &ci = layers[p_layer].canvas_item;
+ rs->canvas_item_set_sort_children_by_y(ci, layers[p_layer].y_sort_enabled);
+ rs->canvas_item_set_use_parent_material(ci, get_use_parent_material() || get_material().is_valid());
+ rs->canvas_item_set_z_index(ci, layers[p_layer].z_index);
+ rs->canvas_item_set_default_texture_filter(ci, RS::CanvasItemTextureFilter(get_texture_filter()));
+ rs->canvas_item_set_default_texture_repeat(ci, RS::CanvasItemTextureRepeat(get_texture_repeat()));
+ rs->canvas_item_set_light_mask(ci, get_light_mask());
+}
- return quadrant_map.insert(p_qk, q);
+void TileMap::_rendering_cleanup_layer(int p_layer) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
+
+ RenderingServer *rs = RenderingServer::get_singleton();
+ if (!layers[p_layer].canvas_item.is_valid()) {
+ rs->free(layers[p_layer].canvas_item);
+ }
}
-void TileMap::_erase_quadrant(Map<Vector2i, TileMapQuadrant>::Element *Q) {
- // Remove a quadrant.
- TileMapQuadrant *q = &(Q->get());
+void TileMap::_rendering_update_dirty_quadrants(SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) {
+ ERR_FAIL_COND(!is_inside_tree());
+ ERR_FAIL_COND(!tile_set.is_valid());
- // Call the cleanup_quadrant method on plugins.
- if (tile_set.is_valid()) {
- for (int i = 0; i < tile_set->get_tile_set_atlas_plugins().size(); i++) {
- tile_set->get_tile_set_atlas_plugins()[i]->cleanup_quadrant(this, q);
+ bool visible = is_visible_in_tree();
+
+ SelfList<TileMapQuadrant> *q_list_element = r_dirty_quadrant_list.first();
+ while (q_list_element) {
+ TileMapQuadrant &q = *q_list_element->self();
+
+ RenderingServer *rs = RenderingServer::get_singleton();
+
+ // Free the canvas items.
+ for (const RID &ci : q.canvas_items) {
+ rs->free(ci);
+ }
+ q.canvas_items.clear();
+
+ // Free the occluders.
+ for (const RID &occluder : q.occluders) {
+ rs->free(occluder);
}
+ q.occluders.clear();
+
+ // Those allow to group cell per material or z-index.
+ Ref<ShaderMaterial> prev_material;
+ int prev_z_index = 0;
+ RID prev_canvas_item;
+
+ // Iterate over the cells of the quadrant.
+ for (Map<Vector2i, Vector2i, TileMapQuadrant::CoordsWorldComparator>::Element *E_cell = q.world_to_map.front(); E_cell; E_cell = E_cell->next()) {
+ TileMapCell c = get_cell(q.layer, E_cell->value(), true);
+
+ TileSetSource *source;
+ if (tile_set->has_source(c.source_id)) {
+ source = *tile_set->get_source(c.source_id);
+
+ if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
+ continue;
+ }
+
+ TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
+ if (atlas_source) {
+ // Get the tile data.
+ TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(c.get_atlas_coords(), c.alternative_tile));
+ Ref<ShaderMaterial> mat = tile_data->tile_get_material();
+ int z_index = layers[q.layer].z_index + tile_data->get_z_index();
+
+ // Quandrant pos.
+ Vector2 position = map_to_world(q.coords * get_effective_quadrant_size(q.layer));
+ if (is_y_sort_enabled() && layers[q.layer].y_sort_enabled) {
+ // When Y-sorting, the quandrant size is sure to be 1, we can thus offset the CanvasItem.
+ position.y += layers[q.layer].y_sort_origin + tile_data->get_y_sort_origin();
+ }
+
+ // --- CanvasItems ---
+ // Create two canvas items, for rendering and debug.
+ RID canvas_item;
+
+ // Check if the material or the z_index changed.
+ if (prev_canvas_item == RID() || prev_material != mat || prev_z_index != z_index) {
+ // If so, create a new CanvasItem.
+ canvas_item = rs->canvas_item_create();
+ if (mat.is_valid()) {
+ rs->canvas_item_set_material(canvas_item, mat->get_rid());
+ }
+ rs->canvas_item_set_parent(canvas_item, layers[q.layer].canvas_item);
+ rs->canvas_item_set_use_parent_material(canvas_item, get_use_parent_material() || get_material().is_valid());
+
+ Transform2D xform;
+ xform.set_origin(position);
+ rs->canvas_item_set_transform(canvas_item, xform);
+
+ rs->canvas_item_set_light_mask(canvas_item, get_light_mask());
+ rs->canvas_item_set_z_index(canvas_item, z_index);
+
+ rs->canvas_item_set_default_texture_filter(canvas_item, RS::CanvasItemTextureFilter(get_texture_filter()));
+ rs->canvas_item_set_default_texture_repeat(canvas_item, RS::CanvasItemTextureRepeat(get_texture_repeat()));
+
+ q.canvas_items.push_back(canvas_item);
+
+ prev_canvas_item = canvas_item;
+ prev_material = mat;
+ prev_z_index = z_index;
+
+ } else {
+ // Keep the same canvas_item to draw on.
+ canvas_item = prev_canvas_item;
+ }
+
+ // Drawing the tile in the canvas item.
+ Color modulate = get_self_modulate();
+ if (selected_layer >= 0) {
+ if (q.layer < selected_layer) {
+ modulate = modulate.darkened(0.5);
+ } else if (q.layer > selected_layer) {
+ modulate = modulate.darkened(0.5);
+ modulate.a *= 0.3;
+ }
+ }
+ draw_tile(canvas_item, E_cell->key() - position, tile_set, c.source_id, c.get_atlas_coords(), c.alternative_tile, modulate);
+
+ // --- Occluders ---
+ for (int i = 0; i < tile_set->get_occlusion_layers_count(); i++) {
+ Transform2D xform;
+ xform.set_origin(E_cell->key());
+ if (tile_data->get_occluder(i).is_valid()) {
+ RID occluder_id = rs->canvas_light_occluder_create();
+ rs->canvas_light_occluder_set_enabled(occluder_id, visible);
+ rs->canvas_light_occluder_set_transform(occluder_id, get_global_transform() * xform);
+ rs->canvas_light_occluder_set_polygon(occluder_id, tile_data->get_occluder(i)->get_rid());
+ rs->canvas_light_occluder_attach_to_canvas(occluder_id, get_canvas());
+ rs->canvas_light_occluder_set_light_mask(occluder_id, tile_set->get_occlusion_layer_light_mask(i));
+ q.occluders.push_back(occluder_id);
+ }
+ }
+ }
+ }
+ }
+
+ _rendering_quadrant_order_dirty = true;
+ q_list_element = q_list_element->next();
}
- // Remove the quadrant from the dirty_list if it is there.
- if (q->dirty_list_element.in_list()) {
- dirty_quadrant_list.remove(&(q->dirty_list_element));
+ // Reset the drawing indices
+ if (_rendering_quadrant_order_dirty) {
+ int index = -(int64_t)0x80000000; //always must be drawn below children.
+
+ for (int layer = 0; layer < (int)layers.size(); layer++) {
+ // Sort the quadrants coords per world coordinates
+ Map<Vector2i, Vector2i, TileMapQuadrant::CoordsWorldComparator> world_to_map;
+ for (Map<Vector2i, TileMapQuadrant>::Element *E = layers[layer].quadrant_map.front(); E; E = E->next()) {
+ world_to_map[map_to_world(E->key())] = E->key();
+ }
+
+ // Sort the quadrants
+ for (Map<Vector2i, Vector2i, TileMapQuadrant::CoordsWorldComparator>::Element *E = world_to_map.front(); E; E = E->next()) {
+ TileMapQuadrant &q = layers[layer].quadrant_map[E->value()];
+ for (const RID &ci : q.canvas_items) {
+ RS::get_singleton()->canvas_item_set_draw_index(ci, index++);
+ }
+ }
+ }
+ _rendering_quadrant_order_dirty = false;
}
+}
- // Free the debug canvas item.
+void TileMap::_rendering_create_quadrant(TileMapQuadrant *p_quadrant) {
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ _rendering_quadrant_order_dirty = true;
+}
+
+void TileMap::_rendering_cleanup_quadrant(TileMapQuadrant *p_quadrant) {
+ // Free the canvas items.
+ for (const RID &ci : p_quadrant->canvas_items) {
+ RenderingServer::get_singleton()->free(ci);
+ }
+ p_quadrant->canvas_items.clear();
+
+ // Free the occluders.
+ for (const RID &occluder : p_quadrant->occluders) {
+ RenderingServer::get_singleton()->free(occluder);
+ }
+ p_quadrant->occluders.clear();
+}
+
+void TileMap::_rendering_draw_quadrant_debug(TileMapQuadrant *p_quadrant) {
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ if (!Engine::get_singleton()->is_editor_hint()) {
+ return;
+ }
+
+ // Draw a placeholder for scenes needing one.
RenderingServer *rs = RenderingServer::get_singleton();
- rs->free(q->debug_canvas_item);
+ Vector2 quadrant_pos = map_to_world(p_quadrant->coords * get_effective_quadrant_size(p_quadrant->layer));
+ for (Set<Vector2i>::Element *E_cell = p_quadrant->cells.front(); E_cell; E_cell = E_cell->next()) {
+ const TileMapCell &c = get_cell(p_quadrant->layer, E_cell->get(), true);
- quadrant_map.erase(Q);
- rect_cache_dirty = true;
+ TileSetSource *source;
+ if (tile_set->has_source(c.source_id)) {
+ source = *tile_set->get_source(c.source_id);
+
+ if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
+ continue;
+ }
+
+ TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
+ if (atlas_source) {
+ Vector2i grid_size = atlas_source->get_atlas_grid_size();
+ if (!atlas_source->get_texture().is_valid() || c.get_atlas_coords().x >= grid_size.x || c.get_atlas_coords().y >= grid_size.y) {
+ // Generate a random color from the hashed values of the tiles.
+ Array to_hash;
+ to_hash.push_back(c.source_id);
+ to_hash.push_back(c.get_atlas_coords());
+ to_hash.push_back(c.alternative_tile);
+ uint32_t hash = RandomPCG(to_hash.hash()).rand();
+
+ Color color;
+ color = color.from_hsv(
+ (float)((hash >> 24) & 0xFF) / 256.0,
+ Math::lerp(0.5, 1.0, (float)((hash >> 16) & 0xFF) / 256.0),
+ Math::lerp(0.5, 1.0, (float)((hash >> 8) & 0xFF) / 256.0),
+ 0.8);
+
+ // Draw a placeholder tile.
+ Transform2D xform;
+ xform.set_origin(map_to_world(E_cell->get()) - quadrant_pos);
+ rs->canvas_item_add_set_transform(p_quadrant->debug_canvas_item, xform);
+ rs->canvas_item_add_circle(p_quadrant->debug_canvas_item, Vector2(), MIN(tile_set->get_tile_size().x, tile_set->get_tile_size().y) / 4.0, color);
+ }
+ }
+ }
+ }
}
-void TileMap::_make_all_quadrants_dirty(bool p_update) {
- // Make all quandrants dirty, then trigger an update later.
- for (Map<Vector2i, TileMapQuadrant>::Element *E = quadrant_map.front(); E; E = E->next()) {
- if (!E->value().dirty_list_element.in_list()) {
- dirty_quadrant_list.add(&E->value().dirty_list_element);
+void TileMap::draw_tile(RID p_canvas_item, Vector2i p_position, const Ref<TileSet> p_tile_set, int p_atlas_source_id, Vector2i p_atlas_coords, int p_alternative_tile, Color p_modulation) {
+ ERR_FAIL_COND(!p_tile_set.is_valid());
+ ERR_FAIL_COND(!p_tile_set->has_source(p_atlas_source_id));
+ ERR_FAIL_COND(!p_tile_set->get_source(p_atlas_source_id)->has_tile(p_atlas_coords));
+ ERR_FAIL_COND(!p_tile_set->get_source(p_atlas_source_id)->has_alternative_tile(p_atlas_coords, p_alternative_tile));
+
+ TileSetSource *source = *p_tile_set->get_source(p_atlas_source_id);
+ TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
+ if (atlas_source) {
+ // Get the texture.
+ Ref<Texture2D> tex = atlas_source->get_texture();
+ if (!tex.is_valid()) {
+ return;
+ }
+
+ // Check if we are in the texture, return otherwise.
+ Vector2i grid_size = atlas_source->get_atlas_grid_size();
+ if (p_atlas_coords.x >= grid_size.x || p_atlas_coords.y >= grid_size.y) {
+ return;
+ }
+
+ // Get tile data.
+ TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(p_atlas_coords, p_alternative_tile));
+
+ // Compute the offset
+ Rect2i source_rect = atlas_source->get_tile_texture_region(p_atlas_coords);
+ Vector2i tile_offset = atlas_source->get_tile_effective_texture_offset(p_atlas_coords, p_alternative_tile);
+
+ // Compute the destination rectangle in the CanvasItem.
+ Rect2 dest_rect;
+ dest_rect.size = source_rect.size;
+ dest_rect.size.x += FP_ADJUST;
+ dest_rect.size.y += FP_ADJUST;
+
+ bool transpose = tile_data->get_transpose();
+ if (transpose) {
+ dest_rect.position = (p_position - Vector2(dest_rect.size.y, dest_rect.size.x) / 2 - tile_offset);
+ } else {
+ dest_rect.position = (p_position - dest_rect.size / 2 - tile_offset);
+ }
+
+ if (tile_data->get_flip_h()) {
+ dest_rect.size.x = -dest_rect.size.x;
+ }
+
+ if (tile_data->get_flip_v()) {
+ dest_rect.size.y = -dest_rect.size.y;
}
+
+ // Get the tile modulation.
+ Color modulate = tile_data->get_modulate();
+ modulate = Color(modulate.r * p_modulation.r, modulate.g * p_modulation.g, modulate.b * p_modulation.b, modulate.a * p_modulation.a);
+
+ // Draw the tile.
+ tex->draw_rect_region(p_canvas_item, dest_rect, source_rect, modulate, transpose, p_tile_set->is_uv_clipping());
}
+}
- if (pending_update) {
+/////////////////////////////// Physics //////////////////////////////////////
+
+void TileMap::_physics_notification(int p_what) {
+ switch (p_what) {
+ case CanvasItem::NOTIFICATION_TRANSFORM_CHANGED: {
+ // Update the bodies transforms.
+ if (is_inside_tree()) {
+ for (int layer = 0; layer < (int)layers.size(); layer++) {
+ Transform2D global_transform = get_global_transform();
+
+ for (Map<Vector2i, TileMapQuadrant>::Element *E = layers[layer].quadrant_map.front(); E; E = E->next()) {
+ TileMapQuadrant &q = E->get();
+
+ Transform2D xform;
+ xform.set_origin(map_to_world(E->key() * get_effective_quadrant_size(layer)));
+ xform = global_transform * xform;
+
+ for (int body_index = 0; body_index < q.bodies.size(); body_index++) {
+ PhysicsServer2D::get_singleton()->body_set_state(q.bodies[body_index], PhysicsServer2D::BODY_STATE_TRANSFORM, xform);
+ }
+ }
+ }
+ }
+ } break;
+ }
+}
+
+void TileMap::_physics_update_dirty_quadrants(SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) {
+ ERR_FAIL_COND(!is_inside_tree());
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ Transform2D global_transform = get_global_transform();
+ PhysicsServer2D *ps = PhysicsServer2D::get_singleton();
+
+ SelfList<TileMapQuadrant> *q_list_element = r_dirty_quadrant_list.first();
+ while (q_list_element) {
+ TileMapQuadrant &q = *q_list_element->self();
+
+ Vector2 quadrant_pos = map_to_world(q.coords * get_effective_quadrant_size(q.layer));
+
+ // Clear shapes.
+ for (int body_index = 0; body_index < q.bodies.size(); body_index++) {
+ ps->body_clear_shapes(q.bodies[body_index]);
+
+ // Position the bodies.
+ Transform2D xform;
+ xform.set_origin(quadrant_pos);
+ xform = global_transform * xform;
+ ps->body_set_state(q.bodies[body_index], PhysicsServer2D::BODY_STATE_TRANSFORM, xform);
+ }
+
+ for (Set<Vector2i>::Element *E_cell = q.cells.front(); E_cell; E_cell = E_cell->next()) {
+ TileMapCell c = get_cell(q.layer, E_cell->get(), true);
+
+ TileSetSource *source;
+ if (tile_set->has_source(c.source_id)) {
+ source = *tile_set->get_source(c.source_id);
+
+ if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
+ continue;
+ }
+
+ TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
+ if (atlas_source) {
+ TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(c.get_atlas_coords(), c.alternative_tile));
+
+ for (int body_index = 0; body_index < q.bodies.size(); body_index++) {
+ // Add the shapes again.
+ for (int polygon_index = 0; polygon_index < tile_data->get_collision_polygons_count(body_index); polygon_index++) {
+ bool one_way_collision = tile_data->is_collision_polygon_one_way(body_index, polygon_index);
+ float one_way_collision_margin = tile_data->get_collision_polygon_one_way_margin(body_index, polygon_index);
+
+ int shapes_count = tile_data->get_collision_polygon_shapes_count(body_index, polygon_index);
+ for (int shape_index = 0; shape_index < shapes_count; shape_index++) {
+ Transform2D xform = Transform2D();
+ xform.set_origin(map_to_world(E_cell->get()) - quadrant_pos);
+
+ // Add decomposed convex shapes.
+ Ref<ConvexPolygonShape2D> shape = tile_data->get_collision_polygon_shape(body_index, polygon_index, shape_index);
+ ps->body_add_shape(q.bodies[body_index], shape->get_rid(), xform);
+ ps->body_set_shape_metadata(q.bodies[body_index], shape_index, E_cell->get());
+ ps->body_set_shape_as_one_way_collision(q.bodies[body_index], shape_index, one_way_collision, one_way_collision_margin);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ q_list_element = q_list_element->next();
+ }
+}
+
+void TileMap::_physics_create_quadrant(TileMapQuadrant *p_quadrant) {
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ //Get the TileMap's gobla transform.
+ Transform2D global_transform;
+ if (is_inside_tree()) {
+ global_transform = get_global_transform();
+ }
+
+ // Clear all bodies.
+ p_quadrant->bodies.clear();
+
+ // Create the body and set its parameters.
+ for (int layer = 0; layer < tile_set->get_physics_layers_count(); layer++) {
+ RID body = PhysicsServer2D::get_singleton()->body_create();
+ PhysicsServer2D::get_singleton()->body_set_mode(body, PhysicsServer2D::BODY_MODE_STATIC);
+
+ PhysicsServer2D::get_singleton()->body_attach_object_instance_id(body, get_instance_id());
+ PhysicsServer2D::get_singleton()->body_set_collision_layer(body, tile_set->get_physics_layer_collision_layer(layer));
+ PhysicsServer2D::get_singleton()->body_set_collision_mask(body, tile_set->get_physics_layer_collision_mask(layer));
+
+ Ref<PhysicsMaterial> physics_material = tile_set->get_physics_layer_physics_material(layer);
+ if (!physics_material.is_valid()) {
+ PhysicsServer2D::get_singleton()->body_set_param(body, PhysicsServer2D::BODY_PARAM_BOUNCE, 0);
+ PhysicsServer2D::get_singleton()->body_set_param(body, PhysicsServer2D::BODY_PARAM_FRICTION, 1);
+ } else {
+ PhysicsServer2D::get_singleton()->body_set_param(body, PhysicsServer2D::BODY_PARAM_BOUNCE, physics_material->computed_bounce());
+ PhysicsServer2D::get_singleton()->body_set_param(body, PhysicsServer2D::BODY_PARAM_FRICTION, physics_material->computed_friction());
+ }
+
+ if (is_inside_tree()) {
+ RID space = get_world_2d()->get_space();
+ PhysicsServer2D::get_singleton()->body_set_space(body, space);
+
+ Transform2D xform;
+ xform.set_origin(map_to_world(p_quadrant->coords * get_effective_quadrant_size(layer)));
+ xform = global_transform * xform;
+ PhysicsServer2D::get_singleton()->body_set_state(body, PhysicsServer2D::BODY_STATE_TRANSFORM, xform);
+ }
+
+ p_quadrant->bodies.push_back(body);
+ }
+}
+
+void TileMap::_physics_cleanup_quadrant(TileMapQuadrant *p_quadrant) {
+ // Remove a quadrant.
+ for (int body_index = 0; body_index < p_quadrant->bodies.size(); body_index++) {
+ PhysicsServer2D::get_singleton()->free(p_quadrant->bodies[body_index]);
+ }
+ p_quadrant->bodies.clear();
+}
+
+void TileMap::_physics_draw_quadrant_debug(TileMapQuadrant *p_quadrant) {
+ // Draw the debug collision shapes.
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ if (!get_tree()) {
return;
}
- pending_update = true;
- if (!is_inside_tree()) {
+
+ bool show_collision = false;
+ switch (collision_visibility_mode) {
+ case TileMap::VISIBILITY_MODE_DEFAULT:
+ show_collision = !Engine::get_singleton()->is_editor_hint() && (get_tree() && get_tree()->is_debugging_navigation_hint());
+ break;
+ case TileMap::VISIBILITY_MODE_FORCE_HIDE:
+ show_collision = false;
+ break;
+ case TileMap::VISIBILITY_MODE_FORCE_SHOW:
+ show_collision = true;
+ break;
+ }
+ if (!show_collision) {
return;
}
- if (p_update) {
- call_deferred(SNAME("update_dirty_quadrants"));
+
+ RenderingServer *rs = RenderingServer::get_singleton();
+
+ Vector2 quadrant_pos = map_to_world(p_quadrant->coords * get_effective_quadrant_size(p_quadrant->layer));
+
+ Color debug_collision_color = get_tree()->get_debug_collisions_color();
+ for (Set<Vector2i>::Element *E_cell = p_quadrant->cells.front(); E_cell; E_cell = E_cell->next()) {
+ TileMapCell c = get_cell(p_quadrant->layer, E_cell->get(), true);
+
+ Transform2D xform;
+ xform.set_origin(map_to_world(E_cell->get()) - quadrant_pos);
+ rs->canvas_item_add_set_transform(p_quadrant->debug_canvas_item, xform);
+
+ if (tile_set->has_source(c.source_id)) {
+ TileSetSource *source = *tile_set->get_source(c.source_id);
+
+ if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
+ continue;
+ }
+
+ TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
+ if (atlas_source) {
+ TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(c.get_atlas_coords(), c.alternative_tile));
+
+ for (int body_index = 0; body_index < p_quadrant->bodies.size(); body_index++) {
+ for (int polygon_index = 0; polygon_index < tile_data->get_collision_polygons_count(body_index); polygon_index++) {
+ // Draw the debug polygon.
+ Vector<Vector2> polygon = tile_data->get_collision_polygon_points(body_index, polygon_index);
+ if (polygon.size() >= 3) {
+ Vector<Color> color;
+ color.push_back(debug_collision_color);
+ rs->canvas_item_add_polygon(p_quadrant->debug_canvas_item, polygon, color);
+ }
+ }
+ }
+ }
+ }
+ rs->canvas_item_add_set_transform(p_quadrant->debug_canvas_item, Transform2D());
+ }
+};
+
+/////////////////////////////// Navigation //////////////////////////////////////
+
+void TileMap::_navigation_notification(int p_what) {
+ switch (p_what) {
+ case CanvasItem::NOTIFICATION_TRANSFORM_CHANGED: {
+ if (is_inside_tree()) {
+ for (int layer = 0; layer < (int)layers.size(); layer++) {
+ Transform2D tilemap_xform = get_global_transform();
+ for (Map<Vector2i, TileMapQuadrant>::Element *E_quadrant = layers[layer].quadrant_map.front(); E_quadrant; E_quadrant = E_quadrant->next()) {
+ TileMapQuadrant &q = E_quadrant->get();
+ for (Map<Vector2i, Vector<RID>>::Element *E_region = q.navigation_regions.front(); E_region; E_region = E_region->next()) {
+ for (int layer_index = 0; layer_index < E_region->get().size(); layer_index++) {
+ RID region = E_region->get()[layer_index];
+ if (!region.is_valid()) {
+ continue;
+ }
+ Transform2D tile_transform;
+ tile_transform.set_origin(map_to_world(E_region->key()));
+ NavigationServer2D::get_singleton()->region_set_transform(region, tilemap_xform * tile_transform);
+ }
+ }
+ }
+ }
+ }
+ } break;
}
}
-void TileMap::_make_quadrant_dirty(Map<Vector2i, TileMapQuadrant>::Element *Q, bool p_update) {
- // Make the given quadrant dirty, then trigger an update later.
- TileMapQuadrant &q = Q->get();
- if (!q.dirty_list_element.in_list()) {
- dirty_quadrant_list.add(&q.dirty_list_element);
+void TileMap::_navigation_update_dirty_quadrants(SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) {
+ ERR_FAIL_COND(!is_inside_tree());
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ // Get colors for debug.
+ SceneTree *st = SceneTree::get_singleton();
+ Color debug_navigation_color;
+ bool debug_navigation = st && st->is_debugging_navigation_hint();
+ if (debug_navigation) {
+ debug_navigation_color = st->get_debug_navigation_color();
+ }
+
+ Transform2D tilemap_xform = get_global_transform();
+ SelfList<TileMapQuadrant> *q_list_element = r_dirty_quadrant_list.first();
+ while (q_list_element) {
+ TileMapQuadrant &q = *q_list_element->self();
+
+ // Clear navigation shapes in the quadrant.
+ for (Map<Vector2i, Vector<RID>>::Element *E = q.navigation_regions.front(); E; E = E->next()) {
+ for (int i = 0; i < E->get().size(); i++) {
+ RID region = E->get()[i];
+ if (!region.is_valid()) {
+ continue;
+ }
+ NavigationServer2D::get_singleton()->region_set_map(region, RID());
+ }
+ }
+ q.navigation_regions.clear();
+
+ // Get the navigation polygons and create regions.
+ for (Set<Vector2i>::Element *E_cell = q.cells.front(); E_cell; E_cell = E_cell->next()) {
+ TileMapCell c = get_cell(q.layer, E_cell->get(), true);
+
+ TileSetSource *source;
+ if (tile_set->has_source(c.source_id)) {
+ source = *tile_set->get_source(c.source_id);
+
+ if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
+ continue;
+ }
+
+ TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
+ if (atlas_source) {
+ TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(c.get_atlas_coords(), c.alternative_tile));
+ q.navigation_regions[E_cell->get()].resize(tile_set->get_navigation_layers_count());
+
+ for (int layer_index = 0; layer_index < tile_set->get_navigation_layers_count(); layer_index++) {
+ Ref<NavigationPolygon> navpoly;
+ navpoly = tile_data->get_navigation_polygon(layer_index);
+
+ if (navpoly.is_valid()) {
+ Transform2D tile_transform;
+ tile_transform.set_origin(map_to_world(E_cell->get()));
+
+ RID region = NavigationServer2D::get_singleton()->region_create();
+ NavigationServer2D::get_singleton()->region_set_map(region, get_world_2d()->get_navigation_map());
+ NavigationServer2D::get_singleton()->region_set_transform(region, tilemap_xform * tile_transform);
+ NavigationServer2D::get_singleton()->region_set_navpoly(region, navpoly);
+ q.navigation_regions[E_cell->get()].write[layer_index] = region;
+ }
+ }
+ }
+ }
+ }
+
+ q_list_element = q_list_element->next();
}
+}
- if (pending_update) {
+void TileMap::_navigation_cleanup_quadrant(TileMapQuadrant *p_quadrant) {
+ // Clear navigation shapes in the quadrant.
+ for (Map<Vector2i, Vector<RID>>::Element *E = p_quadrant->navigation_regions.front(); E; E = E->next()) {
+ for (int i = 0; i < E->get().size(); i++) {
+ RID region = E->get()[i];
+ if (!region.is_valid()) {
+ continue;
+ }
+ NavigationServer2D::get_singleton()->free(region);
+ }
+ }
+ p_quadrant->navigation_regions.clear();
+}
+
+void TileMap::_navigation_draw_quadrant_debug(TileMapQuadrant *p_quadrant) {
+ // Draw the debug collision shapes.
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ if (!get_tree()) {
return;
}
- pending_update = true;
- if (!is_inside_tree()) {
+
+ bool show_navigation = false;
+ switch (navigation_visibility_mode) {
+ case TileMap::VISIBILITY_MODE_DEFAULT:
+ show_navigation = !Engine::get_singleton()->is_editor_hint() && (get_tree() && get_tree()->is_debugging_navigation_hint());
+ break;
+ case TileMap::VISIBILITY_MODE_FORCE_HIDE:
+ show_navigation = false;
+ break;
+ case TileMap::VISIBILITY_MODE_FORCE_SHOW:
+ show_navigation = true;
+ break;
+ }
+ if (!show_navigation) {
+ return;
+ }
+
+ RenderingServer *rs = RenderingServer::get_singleton();
+
+ Color color = get_tree()->get_debug_navigation_color();
+ RandomPCG rand;
+
+ Vector2 quadrant_pos = map_to_world(p_quadrant->coords * get_effective_quadrant_size(p_quadrant->layer));
+
+ for (Set<Vector2i>::Element *E_cell = p_quadrant->cells.front(); E_cell; E_cell = E_cell->next()) {
+ TileMapCell c = get_cell(p_quadrant->layer, E_cell->get(), true);
+
+ TileSetSource *source;
+ if (tile_set->has_source(c.source_id)) {
+ source = *tile_set->get_source(c.source_id);
+
+ if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
+ continue;
+ }
+
+ TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
+ if (atlas_source) {
+ TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(c.get_atlas_coords(), c.alternative_tile));
+
+ Transform2D xform;
+ xform.set_origin(map_to_world(E_cell->get()) - quadrant_pos);
+ rs->canvas_item_add_set_transform(p_quadrant->debug_canvas_item, xform);
+
+ for (int layer_index = 0; layer_index < tile_set->get_navigation_layers_count(); layer_index++) {
+ Ref<NavigationPolygon> navpoly = tile_data->get_navigation_polygon(layer_index);
+ if (navpoly.is_valid()) {
+ PackedVector2Array navigation_polygon_vertices = navpoly->get_vertices();
+
+ for (int i = 0; i < navpoly->get_polygon_count(); i++) {
+ // An array of vertices for this polygon.
+ Vector<int> polygon = navpoly->get_polygon(i);
+ Vector<Vector2> vertices;
+ vertices.resize(polygon.size());
+ for (int j = 0; j < polygon.size(); j++) {
+ ERR_FAIL_INDEX(polygon[j], navigation_polygon_vertices.size());
+ vertices.write[j] = navigation_polygon_vertices[polygon[j]];
+ }
+
+ // Generate the polygon color, slightly randomly modified from the settings one.
+ Color random_variation_color;
+ random_variation_color.set_hsv(color.get_h() + rand.random(-1.0, 1.0) * 0.05, color.get_s(), color.get_v() + rand.random(-1.0, 1.0) * 0.1);
+ random_variation_color.a = color.a;
+ Vector<Color> colors;
+ colors.push_back(random_variation_color);
+
+ rs->canvas_item_add_polygon(p_quadrant->debug_canvas_item, vertices, colors);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+/////////////////////////////// Scenes //////////////////////////////////////
+
+void TileMap::_scenes_update_dirty_quadrants(SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) {
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ SelfList<TileMapQuadrant> *q_list_element = r_dirty_quadrant_list.first();
+ while (q_list_element) {
+ TileMapQuadrant &q = *q_list_element->self();
+
+ // Clear the scenes.
+ for (Map<Vector2i, String>::Element *E = q.scenes.front(); E; E = E->next()) {
+ Node *node = get_node(E->get());
+ if (node) {
+ node->queue_delete();
+ }
+ }
+
+ q.scenes.clear();
+
+ // Recreate the scenes.
+ for (Set<Vector2i>::Element *E_cell = q.cells.front(); E_cell; E_cell = E_cell->next()) {
+ const TileMapCell &c = get_cell(q.layer, E_cell->get(), true);
+
+ TileSetSource *source;
+ if (tile_set->has_source(c.source_id)) {
+ source = *tile_set->get_source(c.source_id);
+
+ if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
+ continue;
+ }
+
+ TileSetScenesCollectionSource *scenes_collection_source = Object::cast_to<TileSetScenesCollectionSource>(source);
+ if (scenes_collection_source) {
+ Ref<PackedScene> packed_scene = scenes_collection_source->get_scene_tile_scene(c.alternative_tile);
+ if (packed_scene.is_valid()) {
+ Node *scene = packed_scene->instantiate();
+ add_child(scene);
+ Control *scene_as_control = Object::cast_to<Control>(scene);
+ Node2D *scene_as_node2d = Object::cast_to<Node2D>(scene);
+ if (scene_as_control) {
+ scene_as_control->set_position(map_to_world(E_cell->get()) + scene_as_control->get_position());
+ } else if (scene_as_node2d) {
+ Transform2D xform;
+ xform.set_origin(map_to_world(E_cell->get()));
+ scene_as_node2d->set_transform(xform * scene_as_node2d->get_transform());
+ }
+ q.scenes[E_cell->get()] = scene->get_name();
+ }
+ }
+ }
+ }
+
+ q_list_element = q_list_element->next();
+ }
+}
+
+void TileMap::_scenes_cleanup_quadrant(TileMapQuadrant *p_quadrant) {
+ // Clear the scenes.
+ for (Map<Vector2i, String>::Element *E = p_quadrant->scenes.front(); E; E = E->next()) {
+ Node *node = get_node(E->get());
+ if (node) {
+ node->queue_delete();
+ }
+ }
+
+ p_quadrant->scenes.clear();
+}
+
+void TileMap::_scenes_draw_quadrant_debug(TileMapQuadrant *p_quadrant) {
+ ERR_FAIL_COND(!tile_set.is_valid());
+
+ if (!Engine::get_singleton()->is_editor_hint()) {
return;
}
- if (p_update) {
- call_deferred(SNAME("update_dirty_quadrants"));
+ // Draw a placeholder for scenes needing one.
+ RenderingServer *rs = RenderingServer::get_singleton();
+ Vector2 quadrant_pos = map_to_world(p_quadrant->coords * get_effective_quadrant_size(p_quadrant->layer));
+ for (Set<Vector2i>::Element *E_cell = p_quadrant->cells.front(); E_cell; E_cell = E_cell->next()) {
+ const TileMapCell &c = get_cell(p_quadrant->layer, E_cell->get(), true);
+
+ TileSetSource *source;
+ if (tile_set->has_source(c.source_id)) {
+ source = *tile_set->get_source(c.source_id);
+
+ if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
+ continue;
+ }
+
+ TileSetScenesCollectionSource *scenes_collection_source = Object::cast_to<TileSetScenesCollectionSource>(source);
+ if (scenes_collection_source) {
+ if (!scenes_collection_source->get_scene_tile_scene(c.alternative_tile).is_valid() || scenes_collection_source->get_scene_tile_display_placeholder(c.alternative_tile)) {
+ // Generate a random color from the hashed values of the tiles.
+ Array to_hash;
+ to_hash.push_back(c.source_id);
+ to_hash.push_back(c.alternative_tile);
+ uint32_t hash = RandomPCG(to_hash.hash()).rand();
+
+ Color color;
+ color = color.from_hsv(
+ (float)((hash >> 24) & 0xFF) / 256.0,
+ Math::lerp(0.5, 1.0, (float)((hash >> 16) & 0xFF) / 256.0),
+ Math::lerp(0.5, 1.0, (float)((hash >> 8) & 0xFF) / 256.0),
+ 0.8);
+
+ // Draw a placeholder tile.
+ Transform2D xform;
+ xform.set_origin(map_to_world(E_cell->get()) - quadrant_pos);
+ rs->canvas_item_add_set_transform(p_quadrant->debug_canvas_item, xform);
+ rs->canvas_item_add_circle(p_quadrant->debug_canvas_item, Vector2(), MIN(tile_set->get_tile_size().x, tile_set->get_tile_size().y) / 4.0, color);
+ }
+ }
+ }
}
}
-void TileMap::set_cell(const Vector2i &p_coords, int p_source_id, const Vector2i p_atlas_coords, int p_alternative_tile) {
+void TileMap::set_cell(int p_layer, const Vector2i &p_coords, int p_source_id, const Vector2i p_atlas_coords, int p_alternative_tile) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
+
// Set the current cell tile (using integer position).
+ Map<Vector2i, TileMapCell> &tile_map = layers[p_layer].tile_map;
Vector2i pk(p_coords);
Map<Vector2i, TileMapCell>::Element *E = tile_map.find(pk);
@@ -526,9 +1555,9 @@ void TileMap::set_cell(const Vector2i &p_coords, int p_source_id, const Vector2i
}
// Get the quadrant
- Vector2i qk = _coords_to_quadrant_coords(pk);
+ Vector2i qk = _coords_to_quadrant_coords(p_layer, pk);
- Map<Vector2i, TileMapQuadrant>::Element *Q = quadrant_map.find(qk);
+ Map<Vector2i, TileMapQuadrant>::Element *Q = layers[p_layer].quadrant_map.find(qk);
if (source_id == TileSet::INVALID_SOURCE) {
// Erase existing cell in the tile map.
@@ -555,7 +1584,7 @@ void TileMap::set_cell(const Vector2i &p_coords, int p_source_id, const Vector2i
// Create a new quadrant if needed, then insert the cell if needed.
if (!Q) {
- Q = _create_quadrant(qk);
+ Q = _create_quadrant(p_layer, qk);
}
TileMapQuadrant &q = Q->get();
q.cells.insert(pk);
@@ -579,8 +1608,11 @@ void TileMap::set_cell(const Vector2i &p_coords, int p_source_id, const Vector2i
}
}
-int TileMap::get_cell_source_id(const Vector2i &p_coords, bool p_use_proxies) const {
+int TileMap::get_cell_source_id(int p_layer, const Vector2i &p_coords, bool p_use_proxies) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), TileSet::INVALID_SOURCE);
+
// Get a cell source id from position
+ const Map<Vector2i, TileMapCell> &tile_map = layers[p_layer].tile_map;
const Map<Vector2i, TileMapCell>::Element *E = tile_map.find(p_coords);
if (!E) {
@@ -595,8 +1627,11 @@ int TileMap::get_cell_source_id(const Vector2i &p_coords, bool p_use_proxies) co
return E->get().source_id;
}
-Vector2i TileMap::get_cell_atlas_coords(const Vector2i &p_coords, bool p_use_proxies) const {
+Vector2i TileMap::get_cell_atlas_coords(int p_layer, const Vector2i &p_coords, bool p_use_proxies) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), TileSetSource::INVALID_ATLAS_COORDS);
+
// Get a cell source id from position
+ const Map<Vector2i, TileMapCell> &tile_map = layers[p_layer].tile_map;
const Map<Vector2i, TileMapCell>::Element *E = tile_map.find(p_coords);
if (!E) {
@@ -611,8 +1646,11 @@ Vector2i TileMap::get_cell_atlas_coords(const Vector2i &p_coords, bool p_use_pro
return E->get().get_atlas_coords();
}
-int TileMap::get_cell_alternative_tile(const Vector2i &p_coords, bool p_use_proxies) const {
+int TileMap::get_cell_alternative_tile(int p_layer, const Vector2i &p_coords, bool p_use_proxies) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), TileSetSource::INVALID_TILE_ALTERNATIVE);
+
// Get a cell source id from position
+ const Map<Vector2i, TileMapCell> &tile_map = layers[p_layer].tile_map;
const Map<Vector2i, TileMapCell>::Element *E = tile_map.find(p_coords);
if (!E) {
@@ -627,7 +1665,8 @@ int TileMap::get_cell_alternative_tile(const Vector2i &p_coords, bool p_use_prox
return E->get().alternative_tile;
}
-TileMapPattern *TileMap::get_pattern(TypedArray<Vector2i> p_coords_array) {
+TileMapPattern *TileMap::get_pattern(int p_layer, TypedArray<Vector2i> p_coords_array) {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), nullptr);
ERR_FAIL_COND_V(!tile_set.is_valid(), nullptr);
TileMapPattern *output = memnew(TileMapPattern);
@@ -673,7 +1712,7 @@ TileMapPattern *TileMap::get_pattern(TypedArray<Vector2i> p_coords_array) {
for (int i = 0; i < coords_in_pattern_array.size(); i++) {
Vector2i coords = p_coords_array[i];
Vector2i coords_in_pattern = coords_in_pattern_array[i];
- output->set_cell(coords_in_pattern + ensure_positive_offset, get_cell_source_id(coords), get_cell_atlas_coords(coords), get_cell_alternative_tile(coords));
+ output->set_cell(coords_in_pattern + ensure_positive_offset, get_cell_source_id(p_layer, coords), get_cell_atlas_coords(p_layer, coords), get_cell_alternative_tile(p_layer, coords));
}
return output;
@@ -702,17 +1741,20 @@ Vector2i TileMap::map_pattern(Vector2i p_position_in_tilemap, Vector2i p_coords_
return output;
}
-void TileMap::set_pattern(Vector2i p_position, const TileMapPattern *p_pattern) {
+void TileMap::set_pattern(int p_layer, Vector2i p_position, const TileMapPattern *p_pattern) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
ERR_FAIL_COND(!tile_set.is_valid());
TypedArray<Vector2i> used_cells = p_pattern->get_used_cells();
for (int i = 0; i < used_cells.size(); i++) {
Vector2i coords = map_pattern(p_position, used_cells[i], p_pattern);
- set_cell(coords, p_pattern->get_cell_source_id(coords), p_pattern->get_cell_atlas_coords(coords), p_pattern->get_cell_alternative_tile(coords));
+ set_cell(p_layer, coords, p_pattern->get_cell_source_id(coords), p_pattern->get_cell_atlas_coords(coords), p_pattern->get_cell_alternative_tile(coords));
}
}
-TileMapCell TileMap::get_cell(const Vector2i &p_coords, bool p_use_proxies) const {
+TileMapCell TileMap::get_cell(int p_layer, const Vector2i &p_coords, bool p_use_proxies) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), TileMapCell());
+ const Map<Vector2i, TileMapCell> &tile_map = layers[p_layer].tile_map;
if (!tile_map.has(p_coords)) {
return TileMapCell();
} else {
@@ -727,76 +1769,62 @@ TileMapCell TileMap::get_cell(const Vector2i &p_coords, bool p_use_proxies) cons
}
}
-Map<Vector2i, TileMapQuadrant> &TileMap::get_quadrant_map() {
- return quadrant_map;
+Map<Vector2i, TileMapQuadrant> *TileMap::get_quadrant_map(int p_layer) {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), nullptr);
+
+ return &layers[p_layer].quadrant_map;
}
void TileMap::fix_invalid_tiles() {
ERR_FAIL_COND_MSG(tile_set.is_null(), "Cannot fix invalid tiles if Tileset is not open.");
- Set<Vector2i> coords;
- for (Map<Vector2i, TileMapCell>::Element *E = tile_map.front(); E; E = E->next()) {
- TileSetSource *source = *tile_set->get_source(E->get().source_id);
- if (!source || !source->has_tile(E->get().get_atlas_coords()) || !source->has_alternative_tile(E->get().get_atlas_coords(), E->get().alternative_tile)) {
- coords.insert(E->key());
+ for (unsigned int i = 0; i < layers.size(); i++) {
+ const Map<Vector2i, TileMapCell> &tile_map = layers[i].tile_map;
+ Set<Vector2i> coords;
+ for (Map<Vector2i, TileMapCell>::Element *E = tile_map.front(); E; E = E->next()) {
+ TileSetSource *source = *tile_set->get_source(E->get().source_id);
+ if (!source || !source->has_tile(E->get().get_atlas_coords()) || !source->has_alternative_tile(E->get().get_atlas_coords(), E->get().alternative_tile)) {
+ coords.insert(E->key());
+ }
}
- }
- for (Set<Vector2i>::Element *E = coords.front(); E; E = E->next()) {
- set_cell(E->get(), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
- }
-}
-
-void TileMap::_recreate_quadrants() {
- // Clear then recreate all quadrants.
- _clear_quadrants();
-
- for (Map<Vector2i, TileMapCell>::Element *E = tile_map.front(); E; E = E->next()) {
- Vector2i qk = _coords_to_quadrant_coords(Vector2i(E->key().x, E->key().y));
-
- Map<Vector2i, TileMapQuadrant>::Element *Q = quadrant_map.find(qk);
- if (!Q) {
- Q = _create_quadrant(qk);
- dirty_quadrant_list.add(&Q->get().dirty_list_element);
+ for (Set<Vector2i>::Element *E = coords.front(); E; E = E->next()) {
+ set_cell(i, E->get(), TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
}
-
- Vector2i pk = E->key();
- Q->get().cells.insert(pk);
-
- _make_quadrant_dirty(Q, false);
}
-
- update_dirty_quadrants();
}
-void TileMap::_clear_quadrants() {
- // Clear quadrants.
- while (quadrant_map.size()) {
- _erase_quadrant(quadrant_map.front());
- }
+void TileMap::clear_layer(int p_layer) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
- // Clear the dirty quadrants list.
- while (dirty_quadrant_list.first()) {
- dirty_quadrant_list.remove(dirty_quadrant_list.first());
- }
+ // Remove all tiles.
+ _clear_layer_internals(p_layer);
+ layers[p_layer].tile_map.clear();
+
+ used_size_cache_dirty = true;
}
void TileMap::clear() {
// Remove all tiles.
- _clear_quadrants();
- tile_map.clear();
+ _clear_internals();
+ for (unsigned int i = 0; i < layers.size(); i++) {
+ layers[i].tile_map.clear();
+ }
used_size_cache_dirty = true;
}
-void TileMap::_set_tile_data(const Vector<int> &p_data) {
- // Set data for a given tile from raw data.
+void TileMap::_set_tile_data(int p_layer, const Vector<int> &p_data) {
+ ERR_FAIL_INDEX(p_layer, (int)layers.size());
ERR_FAIL_COND(format > FORMAT_3);
+ // Set data for a given tile from raw data.
+
int c = p_data.size();
const int *r = p_data.ptr();
int offset = (format >= FORMAT_2) ? 3 : 2;
+ ERR_FAIL_COND_MSG(c % offset != 0, "Corrupted tile data.");
- clear();
+ clear_layer(p_layer);
#ifdef DISABLE_DEPRECATED
ERR_FAIL_COND_MSG(format != FORMAT_3, vformat("Cannot handle deprecated TileMap data format version %d. This Godot version was compiled with no support for deprecated data.", format));
@@ -830,7 +1858,7 @@ void TileMap::_set_tile_data(const Vector<int> &p_data) {
uint16_t atlas_coords_x = decode_uint16(&local[6]);
uint16_t atlas_coords_y = decode_uint16(&local[8]);
uint16_t alternative_tile = decode_uint16(&local[10]);
- set_cell(Vector2i(x, y), source_id, Vector2i(atlas_coords_x, atlas_coords_y), alternative_tile);
+ set_cell(p_layer, Vector2i(x, y), source_id, Vector2i(atlas_coords_x, atlas_coords_y), alternative_tile);
} else {
#ifndef DISABLE_DEPRECATED
// Previous decated format.
@@ -853,21 +1881,25 @@ void TileMap::_set_tile_data(const Vector<int> &p_data) {
if (tile_set.is_valid()) {
Array a = tile_set->compatibility_tilemap_map(v, Vector2i(coord_x, coord_y), flip_h, flip_v, transpose);
if (a.size() == 3) {
- set_cell(Vector2i(x, y), a[0], a[1], a[2]);
+ set_cell(p_layer, Vector2i(x, y), a[0], a[1], a[2]);
} else {
ERR_PRINT(vformat("No valid tile in Tileset for: tile:%s coords:%s flip_h:%s flip_v:%s transpose:%s", v, Vector2i(coord_x, coord_y), flip_h, flip_v, transpose));
}
} else {
int compatibility_alternative_tile = ((int)flip_h) + ((int)flip_v << 1) + ((int)transpose << 2);
- set_cell(Vector2i(x, y), v, Vector2i(coord_x, coord_y), compatibility_alternative_tile);
+ set_cell(p_layer, Vector2i(x, y), v, Vector2i(coord_x, coord_y), compatibility_alternative_tile);
}
#endif
}
}
+ emit_signal(SNAME("changed"));
}
-Vector<int> TileMap::_get_tile_data() const {
+Vector<int> TileMap::_get_tile_data(int p_layer) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), Vector<int>());
+
// Export tile data to raw format
+ const Map<Vector2i, TileMapCell> &tile_map = layers[p_layer].tile_map;
Vector<int> data;
data.resize(tile_map.size() * 3);
int *w = data.ptrw();
@@ -893,7 +1925,7 @@ Vector<int> TileMap::_get_tile_data() const {
Rect2 TileMap::_edit_get_rect() const {
// Return the visible rect of the tilemap
if (pending_update) {
- const_cast<TileMap *>(this)->update_dirty_quadrants();
+ const_cast<TileMap *>(this)->_update_dirty_quadrants();
} else {
const_cast<TileMap *>(this)->_recompute_rect_cache();
}
@@ -902,38 +1934,99 @@ Rect2 TileMap::_edit_get_rect() const {
#endif
bool TileMap::_set(const StringName &p_name, const Variant &p_value) {
+ Vector<String> components = String(p_name).split("/", true, 2);
if (p_name == "format") {
if (p_value.get_type() == Variant::INT) {
format = (DataFormat)(p_value.operator int64_t()); // Set format used for loading
return true;
}
- } else if (p_name == "tile_data") {
+ } else if (p_name == "tile_data") { // Kept for compatibility reasons.
if (p_value.is_array()) {
- _set_tile_data(p_value);
+ if (layers.size() < 1) {
+ layers.resize(1);
+ }
+ _set_tile_data(0, p_value);
return true;
}
return false;
+ } else if (components.size() == 2 && components[0].begins_with("layer_") && components[0].trim_prefix("layer_").is_valid_int()) {
+ int index = components[0].trim_prefix("layer_").to_int();
+ if (index < 0 || index >= (int)layers.size()) {
+ return false;
+ }
+
+ if (components[1] == "name") {
+ set_layer_name(index, p_value);
+ return true;
+ } else if (components[1] == "enabled") {
+ set_layer_enabled(index, p_value);
+ return true;
+ } else if (components[1] == "y_sort_enabled") {
+ set_layer_y_sort_enabled(index, p_value);
+ return true;
+ } else if (components[1] == "y_sort_origin") {
+ set_layer_y_sort_origin(index, p_value);
+ return true;
+ } else if (components[1] == "z_index") {
+ set_layer_z_index(index, p_value);
+ return true;
+ } else if (components[1] == "tile_data") {
+ _set_tile_data(index, p_value);
+ return true;
+ } else {
+ return false;
+ }
}
return false;
}
bool TileMap::_get(const StringName &p_name, Variant &r_ret) const {
+ Vector<String> components = String(p_name).split("/", true, 2);
if (p_name == "format") {
r_ret = FORMAT_3; // When saving, always save highest format
return true;
- } else if (p_name == "tile_data") {
- r_ret = _get_tile_data();
- return true;
+ } else if (components.size() == 2 && components[0].begins_with("layer_") && components[0].trim_prefix("layer_").is_valid_int()) {
+ int index = components[0].trim_prefix("layer_").to_int();
+ if (index < 0 || index >= (int)layers.size()) {
+ return false;
+ }
+
+ if (components[1] == "name") {
+ r_ret = get_layer_name(index);
+ return true;
+ } else if (components[1] == "enabled") {
+ r_ret = is_layer_enabled(index);
+ return true;
+ } else if (components[1] == "y_sort_enabled") {
+ r_ret = is_layer_y_sort_enabled(index);
+ return true;
+ } else if (components[1] == "y_sort_origin") {
+ r_ret = get_layer_y_sort_origin(index);
+ return true;
+ } else if (components[1] == "z_index") {
+ r_ret = get_layer_z_index(index);
+ return true;
+ } else if (components[1] == "tile_data") {
+ r_ret = _get_tile_data(index);
+ return true;
+ } else {
+ return false;
+ }
}
return false;
}
void TileMap::_get_property_list(List<PropertyInfo> *p_list) const {
- PropertyInfo p(Variant::INT, "format", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL);
- p_list->push_back(p);
-
- p = PropertyInfo(Variant::OBJECT, "tile_data", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL);
- p_list->push_back(p);
+ p_list->push_back(PropertyInfo(Variant::INT, "format", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
+ p_list->push_back(PropertyInfo(Variant::NIL, "Layers", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_GROUP));
+ for (unsigned int i = 0; i < layers.size(); i++) {
+ p_list->push_back(PropertyInfo(Variant::STRING, vformat("layer_%d/name", i), PROPERTY_HINT_NONE));
+ p_list->push_back(PropertyInfo(Variant::BOOL, vformat("layer_%d/enabled", i), PROPERTY_HINT_NONE));
+ p_list->push_back(PropertyInfo(Variant::BOOL, vformat("layer_%d/y_sort_enabled", i), PROPERTY_HINT_NONE));
+ p_list->push_back(PropertyInfo(Variant::INT, vformat("layer_%d/y_sort_origin", i), PROPERTY_HINT_NONE));
+ p_list->push_back(PropertyInfo(Variant::INT, vformat("layer_%d/z_index", i), PROPERTY_HINT_NONE));
+ p_list->push_back(PropertyInfo(Variant::OBJECT, vformat("layer_%d/tile_data", i), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
+ }
}
Vector2 TileMap::map_to_world(const Vector2i &p_pos) const {
@@ -1556,12 +2649,14 @@ Vector2i TileMap::get_neighbor_cell(const Vector2i &p_coords, TileSet::CellNeigh
}
}
-TypedArray<Vector2i> TileMap::get_used_cells() const {
+TypedArray<Vector2i> TileMap::get_used_cells(int p_layer) const {
+ ERR_FAIL_INDEX_V(p_layer, (int)layers.size(), TypedArray<Vector2i>());
+
// Returns the cells used in the tilemap.
TypedArray<Vector2i> a;
- a.resize(tile_map.size());
+ a.resize(layers[p_layer].tile_map.size());
int i = 0;
- for (Map<Vector2i, TileMapCell>::Element *E = tile_map.front(); E; E = E->next()) {
+ for (Map<Vector2i, TileMapCell>::Element *E = layers[p_layer].tile_map.front(); E; E = E->next()) {
Vector2i p(E->key().x, E->key().y);
a[i++] = p;
}
@@ -1572,18 +2667,20 @@ TypedArray<Vector2i> TileMap::get_used_cells() const {
Rect2 TileMap::get_used_rect() { // Not const because of cache
// Return the rect of the currently used area
if (used_size_cache_dirty) {
- if (tile_map.size() > 0) {
- used_size_cache = Rect2(tile_map.front()->key().x, tile_map.front()->key().y, 0, 0);
+ bool first = true;
+ for (unsigned int i = 0; i < layers.size(); i++) {
+ const Map<Vector2i, TileMapCell> &tile_map = layers[i].tile_map;
+ if (tile_map.size() > 0) {
+ if (first) {
+ used_size_cache = Rect2(tile_map.front()->key().x, tile_map.front()->key().y, 1, 1);
+ first = false;
+ }
- for (Map<Vector2i, TileMapCell>::Element *E = tile_map.front(); E; E = E->next()) {
- used_size_cache.expand_to(Vector2(E->key().x, E->key().y));
+ for (Map<Vector2i, TileMapCell>::Element *E = tile_map.front(); E; E = E->next()) {
+ used_size_cache.expand_to(Vector2(E->key().x + 1, E->key().y + 1));
+ }
}
-
- used_size_cache.size += Vector2(1, 1);
- } else {
- used_size_cache = Rect2();
}
-
used_size_cache_dirty = false;
}
@@ -1595,10 +2692,13 @@ Rect2 TileMap::get_used_rect() { // Not const because of cache
void TileMap::set_light_mask(int p_light_mask) {
// Occlusion: set light mask.
CanvasItem::set_light_mask(p_light_mask);
- for (Map<Vector2i, TileMapQuadrant>::Element *E = quadrant_map.front(); E; E = E->next()) {
- for (List<RID>::Element *F = E->get().canvas_items.front(); F; F = F->next()) {
- RenderingServer::get_singleton()->canvas_item_set_light_mask(F->get(), get_light_mask());
+ for (unsigned int layer = 0; layer < layers.size(); layer++) {
+ for (Map<Vector2i, TileMapQuadrant>::Element *E = layers[layer].quadrant_map.front(); E; E = E->next()) {
+ for (const RID &ci : E->get().canvas_items) {
+ RenderingServer::get_singleton()->canvas_item_set_light_mask(ci, get_light_mask());
+ }
}
+ _rendering_update_layer(layer);
}
}
@@ -1607,11 +2707,14 @@ void TileMap::set_material(const Ref<Material> &p_material) {
CanvasItem::set_material(p_material);
// Update material for the whole tilemap.
- for (Map<Vector2i, TileMapQuadrant>::Element *E = quadrant_map.front(); E; E = E->next()) {
- TileMapQuadrant &q = E->get();
- for (List<RID>::Element *F = q.canvas_items.front(); F; F = F->next()) {
- RS::get_singleton()->canvas_item_set_use_parent_material(F->get(), get_use_parent_material() || get_material().is_valid());
+ for (unsigned int layer = 0; layer < layers.size(); layer++) {
+ for (Map<Vector2i, TileMapQuadrant>::Element *E = layers[layer].quadrant_map.front(); E; E = E->next()) {
+ TileMapQuadrant &q = E->get();
+ for (const RID &ci : q.canvas_items) {
+ RS::get_singleton()->canvas_item_set_use_parent_material(ci, get_use_parent_material() || get_material().is_valid());
+ }
}
+ _rendering_update_layer(layer);
}
}
@@ -1620,35 +2723,44 @@ void TileMap::set_use_parent_material(bool p_use_parent_material) {
CanvasItem::set_use_parent_material(p_use_parent_material);
// Update use_parent_material for the whole tilemap.
- for (Map<Vector2i, TileMapQuadrant>::Element *E = quadrant_map.front(); E; E = E->next()) {
- TileMapQuadrant &q = E->get();
- for (List<RID>::Element *F = q.canvas_items.front(); F; F = F->next()) {
- RS::get_singleton()->canvas_item_set_use_parent_material(F->get(), get_use_parent_material() || get_material().is_valid());
+ for (unsigned int layer = 0; layer < layers.size(); layer++) {
+ for (Map<Vector2i, TileMapQuadrant>::Element *E = layers[layer].quadrant_map.front(); E; E = E->next()) {
+ TileMapQuadrant &q = E->get();
+ for (const RID &ci : q.canvas_items) {
+ RS::get_singleton()->canvas_item_set_use_parent_material(ci, get_use_parent_material() || get_material().is_valid());
+ }
}
+ _rendering_update_layer(layer);
}
}
void TileMap::set_texture_filter(TextureFilter p_texture_filter) {
// Set a default texture filter for the whole tilemap
CanvasItem::set_texture_filter(p_texture_filter);
- for (Map<Vector2i, TileMapQuadrant>::Element *F = quadrant_map.front(); F; F = F->next()) {
- TileMapQuadrant &q = F->get();
- for (List<RID>::Element *E = q.canvas_items.front(); E; E = E->next()) {
- RenderingServer::get_singleton()->canvas_item_set_default_texture_filter(E->get(), RS::CanvasItemTextureFilter(p_texture_filter));
- _make_quadrant_dirty(F);
+ for (unsigned int layer = 0; layer < layers.size(); layer++) {
+ for (Map<Vector2i, TileMapQuadrant>::Element *F = layers[layer].quadrant_map.front(); F; F = F->next()) {
+ TileMapQuadrant &q = F->get();
+ for (const RID &ci : q.canvas_items) {
+ RenderingServer::get_singleton()->canvas_item_set_default_texture_filter(ci, RS::CanvasItemTextureFilter(p_texture_filter));
+ _make_quadrant_dirty(F);
+ }
}
+ _rendering_update_layer(layer);
}
}
void TileMap::set_texture_repeat(CanvasItem::TextureRepeat p_texture_repeat) {
// Set a default texture repeat for the whole tilemap
CanvasItem::set_texture_repeat(p_texture_repeat);
- for (Map<Vector2i, TileMapQuadrant>::Element *F = quadrant_map.front(); F; F = F->next()) {
- TileMapQuadrant &q = F->get();
- for (List<RID>::Element *E = q.canvas_items.front(); E; E = E->next()) {
- RenderingServer::get_singleton()->canvas_item_set_default_texture_repeat(E->get(), RS::CanvasItemTextureRepeat(p_texture_repeat));
- _make_quadrant_dirty(F);
+ for (unsigned int layer = 0; layer < layers.size(); layer++) {
+ for (Map<Vector2i, TileMapQuadrant>::Element *F = layers[layer].quadrant_map.front(); F; F = F->next()) {
+ TileMapQuadrant &q = F->get();
+ for (const RID &ci : q.canvas_items) {
+ RenderingServer::get_singleton()->canvas_item_set_default_texture_repeat(ci, RS::CanvasItemTextureRepeat(p_texture_repeat));
+ _make_quadrant_dirty(F);
+ }
}
+ _rendering_update_layer(layer);
}
}
@@ -1743,6 +2855,28 @@ void TileMap::draw_cells_outline(Control *p_control, Set<Vector2i> p_cells, Colo
}
}
+TypedArray<String> TileMap::get_configuration_warnings() const {
+ TypedArray<String> warnings = Node::get_configuration_warnings();
+
+ // Retrieve the set of Z index values with a Y-sorted layer.
+ Set<int> y_sorted_z_index;
+ for (int layer = 0; layer < (int)layers.size(); layer++) {
+ if (layers[layer].y_sort_enabled) {
+ y_sorted_z_index.insert(layers[layer].z_index);
+ }
+ }
+
+ // Check if we have a non-sorted layer in a Z-index with a Y-sorted layer.
+ for (int layer = 0; layer < (int)layers.size(); layer++) {
+ if (!layers[layer].y_sort_enabled && y_sorted_z_index.has(layers[layer].z_index)) {
+ warnings.push_back(TTR("A Y-sorted layer has the same Z-index value as a not Y-sorted layer.\nThis may lead to unwanted behaviors, as a layer that is not Y-sorted will be Y-sorted as a whole with tiles from Y-sorted layers."));
+ break;
+ }
+ }
+
+ return warnings;
+}
+
void TileMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_tileset", "tileset"), &TileMap::set_tileset);
ClassDB::bind_method(D_METHOD("get_tileset"), &TileMap::get_tileset);
@@ -1750,22 +2884,35 @@ void TileMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_quadrant_size", "size"), &TileMap::set_quadrant_size);
ClassDB::bind_method(D_METHOD("get_quadrant_size"), &TileMap::get_quadrant_size);
- ClassDB::bind_method(D_METHOD("set_collision_visibility_mode", "show_collision"), &TileMap::set_collision_visibility_mode);
+ ClassDB::bind_method(D_METHOD("set_layers_count", "layers_count"), &TileMap::set_layers_count);
+ ClassDB::bind_method(D_METHOD("get_layers_count"), &TileMap::get_layers_count);
+ ClassDB::bind_method(D_METHOD("set_layer_name", "layer", "name"), &TileMap::set_layer_name);
+ ClassDB::bind_method(D_METHOD("get_layer_name", "layer"), &TileMap::get_layer_name);
+ ClassDB::bind_method(D_METHOD("set_layer_enabled", "layer", "enabled"), &TileMap::set_layer_enabled);
+ ClassDB::bind_method(D_METHOD("is_layer_enabled", "layer"), &TileMap::is_layer_enabled);
+ ClassDB::bind_method(D_METHOD("set_layer_y_sort_enabled", "layer", "y_sort_enabled"), &TileMap::set_layer_y_sort_enabled);
+ ClassDB::bind_method(D_METHOD("is_layer_y_sort_enabled", "layer"), &TileMap::is_layer_y_sort_enabled);
+ ClassDB::bind_method(D_METHOD("set_layer_y_sort_origin", "layer", "y_sort_origin"), &TileMap::set_layer_y_sort_origin);
+ ClassDB::bind_method(D_METHOD("get_layer_y_sort_origin", "layer"), &TileMap::get_layer_y_sort_origin);
+ ClassDB::bind_method(D_METHOD("set_layer_z_index", "layer", "z_index"), &TileMap::set_layer_z_index);
+ ClassDB::bind_method(D_METHOD("get_layer_z_indexd", "layer"), &TileMap::get_layer_z_index);
+
+ ClassDB::bind_method(D_METHOD("set_collision_visibility_mode", "collision_visibility_mode"), &TileMap::set_collision_visibility_mode);
ClassDB::bind_method(D_METHOD("get_collision_visibility_mode"), &TileMap::get_collision_visibility_mode);
- ClassDB::bind_method(D_METHOD("set_navigation_visibility_mode", "show_navigation"), &TileMap::set_navigation_visibility_mode);
+ ClassDB::bind_method(D_METHOD("set_navigation_visibility_mode", "navigation_visibility_mode"), &TileMap::set_navigation_visibility_mode);
ClassDB::bind_method(D_METHOD("get_navigation_visibility_mode"), &TileMap::get_navigation_visibility_mode);
- ClassDB::bind_method(D_METHOD("set_cell", "coords", "source_id", "atlas_coords", "alternative_tile"), &TileMap::set_cell, DEFVAL(TileSet::INVALID_SOURCE), DEFVAL(TileSetSource::INVALID_ATLAS_COORDS), DEFVAL(TileSetSource::INVALID_TILE_ALTERNATIVE));
- ClassDB::bind_method(D_METHOD("get_cell_source_id", "coords", "use_proxies"), &TileMap::get_cell_source_id);
- ClassDB::bind_method(D_METHOD("get_cell_atlas_coords", "coords", "use_proxies"), &TileMap::get_cell_atlas_coords);
- ClassDB::bind_method(D_METHOD("get_cell_alternative_tile", "coords", "use_proxies"), &TileMap::get_cell_alternative_tile);
+ ClassDB::bind_method(D_METHOD("set_cell", "layer", "coords", "source_id", "atlas_coords", "alternative_tile"), &TileMap::set_cell, DEFVAL(TileSet::INVALID_SOURCE), DEFVAL(TileSetSource::INVALID_ATLAS_COORDS), DEFVAL(TileSetSource::INVALID_TILE_ALTERNATIVE));
+ ClassDB::bind_method(D_METHOD("get_cell_source_id", "layer", "coords", "use_proxies"), &TileMap::get_cell_source_id);
+ ClassDB::bind_method(D_METHOD("get_cell_atlas_coords", "layer", "coords", "use_proxies"), &TileMap::get_cell_atlas_coords);
+ ClassDB::bind_method(D_METHOD("get_cell_alternative_tile", "layer", "coords", "use_proxies"), &TileMap::get_cell_alternative_tile);
ClassDB::bind_method(D_METHOD("fix_invalid_tiles"), &TileMap::fix_invalid_tiles);
ClassDB::bind_method(D_METHOD("get_surrounding_tiles", "coords"), &TileMap::get_surrounding_tiles);
ClassDB::bind_method(D_METHOD("clear"), &TileMap::clear);
- ClassDB::bind_method(D_METHOD("get_used_cells"), &TileMap::get_used_cells);
+ ClassDB::bind_method(D_METHOD("get_used_cells", "layer"), &TileMap::get_used_cells);
ClassDB::bind_method(D_METHOD("get_used_rect"), &TileMap::get_used_rect);
ClassDB::bind_method(D_METHOD("map_to_world", "map_position"), &TileMap::map_to_world);
@@ -1773,15 +2920,19 @@ void TileMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_neighbor_cell", "coords", "neighbor"), &TileMap::get_neighbor_cell);
- ClassDB::bind_method(D_METHOD("update_dirty_quadrants"), &TileMap::update_dirty_quadrants);
+ ClassDB::bind_method(D_METHOD("_update_dirty_quadrants"), &TileMap::_update_dirty_quadrants);
- ClassDB::bind_method(D_METHOD("_set_tile_data"), &TileMap::_set_tile_data);
- ClassDB::bind_method(D_METHOD("_get_tile_data"), &TileMap::_get_tile_data);
+ ClassDB::bind_method(D_METHOD("_set_tile_data", "layer"), &TileMap::_set_tile_data);
+ ClassDB::bind_method(D_METHOD("_get_tile_data", "layer"), &TileMap::_get_tile_data);
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "tile_set", PROPERTY_HINT_RESOURCE_TYPE, "TileSet"), "set_tileset", "get_tileset");
ADD_PROPERTY(PropertyInfo(Variant::INT, "cell_quadrant_size", PROPERTY_HINT_RANGE, "1,128,1"), "set_quadrant_size", "get_quadrant_size");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "show_collision", PROPERTY_HINT_ENUM, "Default,Force Show,Force Hide"), "set_collision_visibility_mode", "get_collision_visibility_mode");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "show_navigation", PROPERTY_HINT_ENUM, "Default,Force Show,Force Hide"), "set_navigation_visibility_mode", "get_navigation_visibility_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_visibility_mode", PROPERTY_HINT_ENUM, "Default,Force Show,Force Hide"), "set_collision_visibility_mode", "get_collision_visibility_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "navigation_visibility_mode", PROPERTY_HINT_ENUM, "Default,Force Show,Force Hide"), "set_navigation_visibility_mode", "get_navigation_visibility_mode");
+
+ ADD_GROUP("Layers", "");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "layers_count"), "set_layers_count", "get_layers_count");
+ ADD_PROPERTY_DEFAULT("layers_count", 1);
ADD_PROPERTY_DEFAULT("format", FORMAT_1);
@@ -1794,17 +2945,19 @@ void TileMap::_bind_methods() {
void TileMap::_tile_set_changed() {
emit_signal(SNAME("changed"));
- _make_all_quadrants_dirty(true);
+ _recreate_internals();
}
TileMap::TileMap() {
set_notify_transform(true);
set_notify_local_transform(false);
+
+ layers.resize(1);
}
TileMap::~TileMap() {
if (tile_set.is_valid()) {
tile_set->disconnect("changed", callable_mp(this, &TileMap::_tile_set_changed));
}
- _clear_quadrants();
+ _clear_internals();
}
diff --git a/scene/2d/tile_map.h b/scene/2d/tile_map.h
index 9e35e73ad8..4800780f94 100644
--- a/scene/2d/tile_map.h
+++ b/scene/2d/tile_map.h
@@ -99,7 +99,8 @@ struct TileMapQuadrant {
// Dirty list element
SelfList<TileMapQuadrant> dirty_list_element;
- // Quadrant coords.
+ // Quadrant layer and coords.
+ int layer = -1;
Vector2i coords;
// TileMapCells
@@ -126,6 +127,7 @@ struct TileMapQuadrant {
Map<Vector2i, String> scenes;
void operator=(const TileMapQuadrant &q) {
+ layer = q.layer;
coords = q.coords;
debug_canvas_item = q.debug_canvas_item;
canvas_items = q.canvas_items;
@@ -136,6 +138,7 @@ struct TileMapQuadrant {
TileMapQuadrant(const TileMapQuadrant &q) :
dirty_list_element(this) {
+ layer = q.layer;
coords = q.coords;
debug_canvas_item = q.debug_canvas_item;
canvas_items = q.canvas_items;
@@ -196,11 +199,13 @@ private:
};
mutable DataFormat format = FORMAT_1; // Assume lowest possible format if none is present;
+ static constexpr float FP_ADJUST = 0.00001;
+
// Properties.
Ref<TileSet> tile_set;
int quadrant_size = 16;
- VisibilityMode show_collision = VISIBILITY_MODE_DEFAULT;
- VisibilityMode show_navigation = VISIBILITY_MODE_DEFAULT;
+ VisibilityMode collision_visibility_mode = VISIBILITY_MODE_DEFAULT;
+ VisibilityMode navigation_visibility_mode = VISIBILITY_MODE_DEFAULT;
// Updates.
bool pending_update = false;
@@ -211,25 +216,69 @@ private:
Rect2 used_size_cache;
bool used_size_cache_dirty = true;
- // Map of cells.
- Map<Vector2i, TileMapCell> tile_map;
+ // TileMap layers.
+ struct TileMapLayer {
+ String name;
+ bool enabled = true;
+ bool y_sort_enabled = false;
+ int y_sort_origin = 0;
+ int z_index = 0;
+ RID canvas_item;
+ Map<Vector2i, TileMapCell> tile_map;
+ Map<Vector2i, TileMapQuadrant> quadrant_map;
+ SelfList<TileMapQuadrant>::List dirty_quadrant_list;
+ };
+ LocalVector<TileMapLayer> layers;
+ int selected_layer = -1;
+
+ // Quadrants and internals management.
+ Vector2i _coords_to_quadrant_coords(int p_layer, const Vector2i &p_coords) const;
+
+ Map<Vector2i, TileMapQuadrant>::Element *_create_quadrant(int p_layer, const Vector2i &p_qk);
+
+ void _make_quadrant_dirty(Map<Vector2i, TileMapQuadrant>::Element *Q);
+ void _make_all_quadrants_dirty();
+ void _queue_update_dirty_quadrants();
+
+ void _update_dirty_quadrants();
- // Quadrants management.
- Map<Vector2i, TileMapQuadrant> quadrant_map;
- Vector2i _coords_to_quadrant_coords(const Vector2i &p_coords) const;
- SelfList<TileMapQuadrant>::List dirty_quadrant_list;
+ void _recreate_internals();
- Map<Vector2i, TileMapQuadrant>::Element *_create_quadrant(const Vector2i &p_qk);
void _erase_quadrant(Map<Vector2i, TileMapQuadrant>::Element *Q);
- void _make_all_quadrants_dirty(bool p_update = true);
- void _make_quadrant_dirty(Map<Vector2i, TileMapQuadrant>::Element *Q, bool p_update = true);
- void _recreate_quadrants();
- void _clear_quadrants();
+ void _clear_layer_internals(int p_layer);
+ void _clear_internals();
+
+ // Rect caching.
void _recompute_rect_cache();
+ // Per-system methods.
+ bool _rendering_quadrant_order_dirty = false;
+ void _rendering_notification(int p_what);
+ void _rendering_update_layer(int p_layer);
+ void _rendering_cleanup_layer(int p_layer);
+ void _rendering_update_dirty_quadrants(SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list);
+ void _rendering_create_quadrant(TileMapQuadrant *p_quadrant);
+ void _rendering_cleanup_quadrant(TileMapQuadrant *p_quadrant);
+ void _rendering_draw_quadrant_debug(TileMapQuadrant *p_quadrant);
+
+ void _physics_notification(int p_what);
+ void _physics_update_dirty_quadrants(SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list);
+ void _physics_create_quadrant(TileMapQuadrant *p_quadrant);
+ void _physics_cleanup_quadrant(TileMapQuadrant *p_quadrant);
+ void _physics_draw_quadrant_debug(TileMapQuadrant *p_quadrant);
+
+ void _navigation_notification(int p_what);
+ void _navigation_update_dirty_quadrants(SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list);
+ void _navigation_cleanup_quadrant(TileMapQuadrant *p_quadrant);
+ void _navigation_draw_quadrant_debug(TileMapQuadrant *p_quadrant);
+
+ void _scenes_update_dirty_quadrants(SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list);
+ void _scenes_cleanup_quadrant(TileMapQuadrant *p_quadrant);
+ void _scenes_draw_quadrant_debug(TileMapQuadrant *p_quadrant);
+
// Set and get tiles from data arrays.
- void _set_tile_data(const Vector<int> &p_data);
- Vector<int> _get_tile_data() const;
+ void _set_tile_data(int p_layer, const Vector<int> &p_data);
+ Vector<int> _get_tile_data(int p_layer) const;
void _tile_set_changed();
@@ -258,27 +307,45 @@ public:
void set_quadrant_size(int p_size);
int get_quadrant_size() const;
+ static void draw_tile(RID p_canvas_item, Vector2i p_position, const Ref<TileSet> p_tile_set, int p_atlas_source_id, Vector2i p_atlas_coords, int p_alternative_tile, Color p_modulation = Color(1.0, 1.0, 1.0, 1.0));
+
+ // Layers management.
+ void set_layers_count(int p_layers_count);
+ int get_layers_count() const;
+ void set_layer_name(int p_layer, String p_name);
+ String get_layer_name(int p_layer) const;
+ void set_layer_enabled(int p_layer, bool p_visible);
+ bool is_layer_enabled(int p_layer) const;
+ void set_layer_y_sort_enabled(int p_layer, bool p_enabled);
+ bool is_layer_y_sort_enabled(int p_layer) const;
+ void set_layer_y_sort_origin(int p_layer, int p_y_sort_origin);
+ int get_layer_y_sort_origin(int p_layer) const;
+ void set_layer_z_index(int p_layer, int p_z_index);
+ int get_layer_z_index(int p_layer) const;
+ void set_selected_layer(int p_layer_id); // For editor use.
+ int get_selected_layer() const;
+
void set_collision_visibility_mode(VisibilityMode p_show_collision);
VisibilityMode get_collision_visibility_mode();
void set_navigation_visibility_mode(VisibilityMode p_show_navigation);
VisibilityMode get_navigation_visibility_mode();
- void set_cell(const Vector2i &p_coords, int p_source_id = -1, const Vector2i p_atlas_coords = TileSetSource::INVALID_ATLAS_COORDS, int p_alternative_tile = TileSetSource::INVALID_TILE_ALTERNATIVE);
- int get_cell_source_id(const Vector2i &p_coords, bool p_use_proxies = false) const;
- Vector2i get_cell_atlas_coords(const Vector2i &p_coords, bool p_use_proxies = false) const;
- int get_cell_alternative_tile(const Vector2i &p_coords, bool p_use_proxies = false) const;
+ void set_cell(int p_layer, const Vector2i &p_coords, int p_source_id = -1, const Vector2i p_atlas_coords = TileSetSource::INVALID_ATLAS_COORDS, int p_alternative_tile = TileSetSource::INVALID_TILE_ALTERNATIVE);
+ int get_cell_source_id(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const;
+ Vector2i get_cell_atlas_coords(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const;
+ int get_cell_alternative_tile(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const;
- TileMapPattern *get_pattern(TypedArray<Vector2i> p_coords_array);
+ TileMapPattern *get_pattern(int p_layer, TypedArray<Vector2i> p_coords_array);
Vector2i map_pattern(Vector2i p_position_in_tilemap, Vector2i p_coords_in_pattern, const TileMapPattern *p_pattern);
- void set_pattern(Vector2i p_position, const TileMapPattern *p_pattern);
+ void set_pattern(int p_layer, Vector2i p_position, const TileMapPattern *p_pattern);
// Not exposed to users
- TileMapCell get_cell(const Vector2i &p_coords, bool p_use_proxies = false) const;
- Map<Vector2i, TileMapQuadrant> &get_quadrant_map();
- int get_effective_quadrant_size() const;
+ TileMapCell get_cell(int p_layer, const Vector2i &p_coords, bool p_use_proxies = false) const;
+ Map<Vector2i, TileMapQuadrant> *get_quadrant_map(int p_layer);
+ int get_effective_quadrant_size(int p_layer) const;
+ //---
- void update_dirty_quadrants();
virtual void set_y_sort_enabled(bool p_enable) override;
Vector2 map_to_world(const Vector2i &p_pos) const;
@@ -287,7 +354,7 @@ public:
bool is_existing_neighbor(TileSet::CellNeighbor p_cell_neighbor) const;
Vector2i get_neighbor_cell(const Vector2i &p_coords, TileSet::CellNeighbor p_cell_neighbor) const;
- TypedArray<Vector2i> get_used_cells() const;
+ TypedArray<Vector2i> get_used_cells(int p_layer) const;
Rect2 get_used_rect(); // Not const because of cache
// Override some methods of the CanvasItem class to pass the changes to the quadrants CanvasItems
@@ -297,13 +364,19 @@ public:
virtual void set_texture_filter(CanvasItem::TextureFilter p_texture_filter) override;
virtual void set_texture_repeat(CanvasItem::TextureRepeat p_texture_repeat) override;
+ // Fixing a nclearing methods.
void fix_invalid_tiles();
+
+ void clear_layer(int p_layer);
void clear();
// Helpers
TypedArray<Vector2i> get_surrounding_tiles(Vector2i coords);
void draw_cells_outline(Control *p_control, Set<Vector2i> p_cells, Color p_color, Transform2D p_transform = Transform2D());
+ // Configuration warnings.
+ TypedArray<String> get_configuration_warnings() const override;
+
TileMap();
~TileMap();
};
diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp
index dd8cb1f20d..bb8f9f8ccb 100644
--- a/scene/3d/audio_stream_player_3d.cpp
+++ b/scene/3d/audio_stream_player_3d.cpp
@@ -794,7 +794,7 @@ uint32_t AudioStreamPlayer3D::get_area_mask() const {
void AudioStreamPlayer3D::set_emission_angle_enabled(bool p_enable) {
emission_angle_enabled = p_enable;
- update_gizmo();
+ update_gizmos();
}
bool AudioStreamPlayer3D::is_emission_angle_enabled() const {
@@ -804,7 +804,7 @@ bool AudioStreamPlayer3D::is_emission_angle_enabled() const {
void AudioStreamPlayer3D::set_emission_angle(float p_angle) {
ERR_FAIL_COND(p_angle < 0 || p_angle > 90);
emission_angle = p_angle;
- update_gizmo();
+ update_gizmos();
}
float AudioStreamPlayer3D::get_emission_angle() const {
diff --git a/scene/3d/camera_3d.cpp b/scene/3d/camera_3d.cpp
index 0c38d85a6b..2e962b96c3 100644
--- a/scene/3d/camera_3d.cpp
+++ b/scene/3d/camera_3d.cpp
@@ -164,7 +164,7 @@ void Camera3D::set_perspective(float p_fovy_degrees, float p_z_near, float p_z_f
mode = PROJECTION_PERSPECTIVE;
RenderingServer::get_singleton()->camera_set_perspective(camera, fov, near, far);
- update_gizmo();
+ update_gizmos();
force_change = false;
}
@@ -181,7 +181,7 @@ void Camera3D::set_orthogonal(float p_size, float p_z_near, float p_z_far) {
force_change = false;
RenderingServer::get_singleton()->camera_set_orthogonal(camera, size, near, far);
- update_gizmo();
+ update_gizmos();
}
void Camera3D::set_frustum(float p_size, Vector2 p_offset, float p_z_near, float p_z_far) {
@@ -198,7 +198,7 @@ void Camera3D::set_frustum(float p_size, Vector2 p_offset, float p_z_near, float
force_change = false;
RenderingServer::get_singleton()->camera_set_frustum(camera, size, frustum_offset, near, far);
- update_gizmo();
+ update_gizmos();
}
void Camera3D::set_projection(Camera3D::Projection p_mode) {
@@ -755,7 +755,7 @@ void ClippedCamera3D::_notification(int p_what) {
}
if (p_what == NOTIFICATION_LOCAL_TRANSFORM_CHANGED) {
- update_gizmo();
+ update_gizmos();
}
}
diff --git a/scene/3d/collision_polygon_3d.cpp b/scene/3d/collision_polygon_3d.cpp
index 8a4f8b639b..42645f47d4 100644
--- a/scene/3d/collision_polygon_3d.cpp
+++ b/scene/3d/collision_polygon_3d.cpp
@@ -122,7 +122,7 @@ void CollisionPolygon3D::set_polygon(const Vector<Point2> &p_polygon) {
_build_polygon();
}
update_configuration_warnings();
- update_gizmo();
+ update_gizmos();
}
Vector<Point2> CollisionPolygon3D::get_polygon() const {
@@ -136,7 +136,7 @@ AABB CollisionPolygon3D::get_item_rect() const {
void CollisionPolygon3D::set_depth(real_t p_depth) {
depth = p_depth;
_build_polygon();
- update_gizmo();
+ update_gizmos();
}
real_t CollisionPolygon3D::get_depth() const {
@@ -145,7 +145,7 @@ real_t CollisionPolygon3D::get_depth() const {
void CollisionPolygon3D::set_disabled(bool p_disabled) {
disabled = p_disabled;
- update_gizmo();
+ update_gizmos();
if (parent) {
parent->shape_owner_set_disabled(owner_id, p_disabled);
diff --git a/scene/3d/collision_shape_3d.cpp b/scene/3d/collision_shape_3d.cpp
index be3fde8013..9643d33c86 100644
--- a/scene/3d/collision_shape_3d.cpp
+++ b/scene/3d/collision_shape_3d.cpp
@@ -117,7 +117,7 @@ void CollisionShape3D::_notification(int p_what) {
}
void CollisionShape3D::resource_changed(RES res) {
- update_gizmo();
+ update_gizmos();
}
TypedArray<String> CollisionShape3D::get_configuration_warnings() const {
@@ -166,7 +166,7 @@ void CollisionShape3D::set_shape(const Ref<Shape3D> &p_shape) {
if (!shape.is_null()) {
shape->register_owner(this);
}
- update_gizmo();
+ update_gizmos();
if (parent) {
parent->shape_owner_clear_shapes(owner_id);
if (shape.is_valid()) {
@@ -187,7 +187,7 @@ Ref<Shape3D> CollisionShape3D::get_shape() const {
void CollisionShape3D::set_disabled(bool p_disabled) {
disabled = p_disabled;
- update_gizmo();
+ update_gizmos();
if (parent) {
parent->shape_owner_set_disabled(owner_id, p_disabled);
}
diff --git a/scene/3d/decal.cpp b/scene/3d/decal.cpp
index 5af7b8ca07..05f023721b 100644
--- a/scene/3d/decal.cpp
+++ b/scene/3d/decal.cpp
@@ -33,7 +33,7 @@
void Decal::set_extents(const Vector3 &p_extents) {
extents = p_extents;
RS::get_singleton()->decal_set_extents(decal, p_extents);
- update_gizmo();
+ update_gizmos();
}
Vector3 Decal::get_extents() const {
diff --git a/scene/3d/gpu_particles_3d.cpp b/scene/3d/gpu_particles_3d.cpp
index f78027e6c7..44cd7c10d8 100644
--- a/scene/3d/gpu_particles_3d.cpp
+++ b/scene/3d/gpu_particles_3d.cpp
@@ -99,7 +99,7 @@ void GPUParticles3D::set_randomness_ratio(float p_ratio) {
void GPUParticles3D::set_visibility_aabb(const AABB &p_aabb) {
visibility_aabb = p_aabb;
RS::get_singleton()->particles_set_custom_aabb(particles, visibility_aabb);
- update_gizmo();
+ update_gizmos();
}
void GPUParticles3D::set_use_local_coordinates(bool p_enable) {
diff --git a/scene/3d/gpu_particles_collision_3d.cpp b/scene/3d/gpu_particles_collision_3d.cpp
index 5b88a6ec9f..cc1b620025 100644
--- a/scene/3d/gpu_particles_collision_3d.cpp
+++ b/scene/3d/gpu_particles_collision_3d.cpp
@@ -73,7 +73,7 @@ void GPUParticlesCollisionSphere::_bind_methods() {
void GPUParticlesCollisionSphere::set_radius(float p_radius) {
radius = p_radius;
RS::get_singleton()->particles_collision_set_sphere_radius(_get_collision(), radius);
- update_gizmo();
+ update_gizmos();
}
float GPUParticlesCollisionSphere::get_radius() const {
@@ -103,7 +103,7 @@ void GPUParticlesCollisionBox::_bind_methods() {
void GPUParticlesCollisionBox::set_extents(const Vector3 &p_extents) {
extents = p_extents;
RS::get_singleton()->particles_collision_set_box_extents(_get_collision(), extents);
- update_gizmo();
+ update_gizmos();
}
Vector3 GPUParticlesCollisionBox::get_extents() const {
@@ -397,9 +397,7 @@ Ref<Image> GPUParticlesCollisionSDF::bake() {
bake_step_function(0, "Finding Meshes");
}
- for (List<PlotMesh>::Element *E = plot_meshes.front(); E; E = E->next()) {
- const PlotMesh &pm = E->get();
-
+ for (const PlotMesh &pm : plot_meshes) {
for (int i = 0; i < pm.mesh->get_surface_count(); i++) {
if (pm.mesh->surface_get_primitive_type(i) != Mesh::PRIMITIVE_TRIANGLES) {
continue; //only triangles
@@ -545,7 +543,7 @@ float GPUParticlesCollisionSDF::get_thickness() const {
void GPUParticlesCollisionSDF::set_extents(const Vector3 &p_extents) {
extents = p_extents;
RS::get_singleton()->particles_collision_set_box_extents(_get_collision(), extents);
- update_gizmo();
+ update_gizmos();
}
Vector3 GPUParticlesCollisionSDF::get_extents() const {
@@ -554,7 +552,7 @@ Vector3 GPUParticlesCollisionSDF::get_extents() const {
void GPUParticlesCollisionSDF::set_resolution(Resolution p_resolution) {
resolution = p_resolution;
- update_gizmo();
+ update_gizmos();
}
GPUParticlesCollisionSDF::Resolution GPUParticlesCollisionSDF::get_resolution() const {
@@ -680,7 +678,7 @@ float GPUParticlesCollisionHeightField::get_follow_camera_push_ratio() const {
void GPUParticlesCollisionHeightField::set_extents(const Vector3 &p_extents) {
extents = p_extents;
RS::get_singleton()->particles_collision_set_box_extents(_get_collision(), extents);
- update_gizmo();
+ update_gizmos();
RS::get_singleton()->particles_collision_height_field_update(_get_collision());
}
@@ -691,7 +689,7 @@ Vector3 GPUParticlesCollisionHeightField::get_extents() const {
void GPUParticlesCollisionHeightField::set_resolution(Resolution p_resolution) {
resolution = p_resolution;
RS::get_singleton()->particles_collision_set_height_field_resolution(_get_collision(), RS::ParticlesCollisionHeightfieldResolution(resolution));
- update_gizmo();
+ update_gizmos();
RS::get_singleton()->particles_collision_height_field_update(_get_collision());
}
@@ -761,7 +759,7 @@ float GPUParticlesAttractor3D::get_attenuation() const {
void GPUParticlesAttractor3D::set_directionality(float p_directionality) {
directionality = p_directionality;
RS::get_singleton()->particles_collision_set_attractor_directionality(collision, p_directionality);
- update_gizmo();
+ update_gizmos();
}
float GPUParticlesAttractor3D::get_directionality() const {
@@ -808,7 +806,7 @@ void GPUParticlesAttractorSphere::_bind_methods() {
void GPUParticlesAttractorSphere::set_radius(float p_radius) {
radius = p_radius;
RS::get_singleton()->particles_collision_set_sphere_radius(_get_collision(), radius);
- update_gizmo();
+ update_gizmos();
}
float GPUParticlesAttractorSphere::get_radius() const {
@@ -838,7 +836,7 @@ void GPUParticlesAttractorBox::_bind_methods() {
void GPUParticlesAttractorBox::set_extents(const Vector3 &p_extents) {
extents = p_extents;
RS::get_singleton()->particles_collision_set_box_extents(_get_collision(), extents);
- update_gizmo();
+ update_gizmos();
}
Vector3 GPUParticlesAttractorBox::get_extents() const {
@@ -872,7 +870,7 @@ void GPUParticlesAttractorVectorField::_bind_methods() {
void GPUParticlesAttractorVectorField::set_extents(const Vector3 &p_extents) {
extents = p_extents;
RS::get_singleton()->particles_collision_set_box_extents(_get_collision(), extents);
- update_gizmo();
+ update_gizmos();
}
Vector3 GPUParticlesAttractorVectorField::get_extents() const {
diff --git a/scene/3d/light_3d.cpp b/scene/3d/light_3d.cpp
index 8478821ba1..c2943a9606 100644
--- a/scene/3d/light_3d.cpp
+++ b/scene/3d/light_3d.cpp
@@ -45,7 +45,7 @@ void Light3D::set_param(Param p_param, float p_value) {
RS::get_singleton()->light_set_param(light, RS::LightParam(p_param), p_value);
if (p_param == PARAM_SPOT_ANGLE || p_param == PARAM_RANGE) {
- update_gizmo();
+ update_gizmos();
if (p_param == PARAM_SPOT_ANGLE) {
update_configuration_warnings();
@@ -95,7 +95,7 @@ void Light3D::set_color(const Color &p_color) {
color = p_color;
RS::get_singleton()->light_set_color(light, p_color);
// The gizmo color depends on the light color, so update it.
- update_gizmo();
+ update_gizmos();
}
Color Light3D::get_color() const {
diff --git a/scene/3d/lightmap_gi.cpp b/scene/3d/lightmap_gi.cpp
index 3ffb3c0393..0085c8933d 100644
--- a/scene/3d/lightmap_gi.cpp
+++ b/scene/3d/lightmap_gi.cpp
@@ -1250,7 +1250,7 @@ void LightmapGI::set_light_data(const Ref<LightmapGIData> &p_data) {
}
}
- update_gizmo();
+ update_gizmos();
}
Ref<LightmapGIData> LightmapGI::get_light_data() const {
diff --git a/scene/3d/mesh_instance_3d.cpp b/scene/3d/mesh_instance_3d.cpp
index 28ccbd3e68..9ca1d55d0b 100644
--- a/scene/3d/mesh_instance_3d.cpp
+++ b/scene/3d/mesh_instance_3d.cpp
@@ -94,8 +94,8 @@ void MeshInstance3D::_get_property_list(List<PropertyInfo> *p_list) const {
ls.sort();
- for (List<String>::Element *E = ls.front(); E; E = E->next()) {
- p_list->push_back(PropertyInfo(Variant::FLOAT, E->get(), PROPERTY_HINT_RANGE, "-1,1,0.00001"));
+ for (const String &E : ls) {
+ p_list->push_back(PropertyInfo(Variant::FLOAT, E, PROPERTY_HINT_RANGE, "-1,1,0.00001"));
}
if (mesh.is_valid()) {
@@ -133,7 +133,7 @@ void MeshInstance3D::set_mesh(const Ref<Mesh> &p_mesh) {
set_base(RID());
}
- update_gizmo();
+ update_gizmos();
notify_property_list_changed();
}
@@ -356,7 +356,7 @@ Ref<Material> MeshInstance3D::get_active_material(int p_surface) const {
void MeshInstance3D::_mesh_changed() {
ERR_FAIL_COND(mesh.is_null());
surface_override_materials.resize(mesh->get_surface_count());
- update_gizmo();
+ update_gizmos();
}
void MeshInstance3D::create_debug_tangents() {
diff --git a/scene/3d/navigation_region_3d.cpp b/scene/3d/navigation_region_3d.cpp
index 19abb3f33a..2976dad39d 100644
--- a/scene/3d/navigation_region_3d.cpp
+++ b/scene/3d/navigation_region_3d.cpp
@@ -59,7 +59,7 @@ void NavigationRegion3D::set_enabled(bool p_enabled) {
}
}
- update_gizmo();
+ update_gizmos();
}
bool NavigationRegion3D::is_enabled() const {
@@ -134,7 +134,7 @@ void NavigationRegion3D::set_navigation_mesh(const Ref<NavigationMesh> &p_navmes
emit_signal(SNAME("navigation_mesh_changed"));
- update_gizmo();
+ update_gizmos();
update_configuration_warnings();
}
@@ -211,7 +211,7 @@ void NavigationRegion3D::_bind_methods() {
}
void NavigationRegion3D::_navigation_changed() {
- update_gizmo();
+ update_gizmos();
update_configuration_warnings();
}
diff --git a/scene/3d/node_3d.cpp b/scene/3d/node_3d.cpp
index d6c6ec75b4..0daee69ee5 100644
--- a/scene/3d/node_3d.cpp
+++ b/scene/3d/node_3d.cpp
@@ -76,7 +76,7 @@ Node3DGizmo::Node3DGizmo() {
void Node3D::_notify_dirty() {
#ifdef TOOLS_ENABLED
- if ((data.gizmo.is_valid() || data.notify_transform) && !data.ignore_notification && !xform_change.in_list()) {
+ if ((!data.gizmos.is_empty() || data.notify_transform) && !data.ignore_notification && !xform_change.in_list()) {
#else
if (data.notify_transform && !data.ignore_notification && !xform_change.in_list()) {
@@ -103,14 +103,14 @@ void Node3D::_propagate_transform_changed(Node3D *p_origin) {
data.children_lock++;
- for (List<Node3D *>::Element *E = data.children.front(); E; E = E->next()) {
- if (E->get()->data.top_level_active) {
+ for (Node3D *&E : data.children) {
+ if (E->data.top_level_active) {
continue; //don't propagate to a top_level
}
- E->get()->_propagate_transform_changed(p_origin);
+ E->_propagate_transform_changed(p_origin);
}
#ifdef TOOLS_ENABLED
- if ((data.gizmo.is_valid() || data.notify_transform) && !data.ignore_notification && !xform_change.in_list()) {
+ if ((!data.gizmos.is_empty() || data.notify_transform) && !data.ignore_notification && !xform_change.in_list()) {
#else
if (data.notify_transform && !data.ignore_notification && !xform_change.in_list()) {
#endif
@@ -181,15 +181,14 @@ void Node3D::_notification(int p_what) {
}
#ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint() && get_tree()->is_node_being_edited(this)) {
- //get_scene()->call_group(SceneMainLoop::GROUP_CALL_REALTIME,SceneStringNames::get_singleton()->_spatial_editor_group,SceneStringNames::get_singleton()->_request_gizmo,this);
get_tree()->call_group_flags(0, SceneStringNames::get_singleton()->_spatial_editor_group, SceneStringNames::get_singleton()->_request_gizmo, this);
- if (!data.gizmo_disabled) {
- if (data.gizmo.is_valid()) {
- data.gizmo->create();
+ if (!data.gizmos_disabled) {
+ for (int i = 0; i < data.gizmos.size(); i++) {
+ data.gizmos.write[i]->create();
if (is_visible_in_tree()) {
- data.gizmo->redraw();
+ data.gizmos.write[i]->redraw();
}
- data.gizmo->transform();
+ data.gizmos.write[i]->transform();
}
}
}
@@ -198,10 +197,7 @@ void Node3D::_notification(int p_what) {
} break;
case NOTIFICATION_EXIT_WORLD: {
#ifdef TOOLS_ENABLED
- if (data.gizmo.is_valid()) {
- data.gizmo->free();
- data.gizmo.unref();
- }
+ clear_gizmos();
#endif
if (get_script_instance()) {
@@ -215,8 +211,8 @@ void Node3D::_notification(int p_what) {
case NOTIFICATION_TRANSFORM_CHANGED: {
#ifdef TOOLS_ENABLED
- if (data.gizmo.is_valid()) {
- data.gizmo->transform();
+ for (int i = 0; i < data.gizmos.size(); i++) {
+ data.gizmos.write[i]->transform();
}
#endif
} break;
@@ -368,80 +364,119 @@ Vector3 Node3D::get_scale() const {
return data.scale;
}
-void Node3D::update_gizmo() {
+void Node3D::update_gizmos() {
#ifdef TOOLS_ENABLED
if (!is_inside_world()) {
return;
}
- if (!data.gizmo.is_valid()) {
- get_tree()->call_group_flags(SceneTree::GROUP_CALL_REALTIME, SceneStringNames::get_singleton()->_spatial_editor_group, SceneStringNames::get_singleton()->_request_gizmo, this);
+
+ if (data.gizmos.is_empty()) {
+ return;
}
- if (!data.gizmo.is_valid()) {
+ data.gizmos_dirty = true;
+ MessageQueue::get_singleton()->push_callable(callable_mp(this, &Node3D::_update_gizmos));
+#endif
+}
+
+void Node3D::clear_subgizmo_selection() {
+#ifdef TOOLS_ENABLED
+ if (!is_inside_world()) {
return;
}
- if (data.gizmo_dirty) {
+
+ if (data.gizmos.is_empty()) {
return;
}
- data.gizmo_dirty = true;
- MessageQueue::get_singleton()->push_call(this, "_update_gizmo");
+
+ if (Engine::get_singleton()->is_editor_hint() && get_tree()->is_node_being_edited(this)) {
+ get_tree()->call_group_flags(0, SceneStringNames::get_singleton()->_spatial_editor_group, SceneStringNames::get_singleton()->_clear_subgizmo_selection, this);
+ }
#endif
}
-void Node3D::set_gizmo(const Ref<Node3DGizmo> &p_gizmo) {
+void Node3D::add_gizmo(Ref<Node3DGizmo> p_gizmo) {
#ifdef TOOLS_ENABLED
- if (data.gizmo_disabled) {
+ if (data.gizmos_disabled || p_gizmo.is_null()) {
return;
}
- if (data.gizmo.is_valid() && is_inside_world()) {
- data.gizmo->free();
- }
- data.gizmo = p_gizmo;
- if (data.gizmo.is_valid() && is_inside_world()) {
- data.gizmo->create();
+ data.gizmos.push_back(p_gizmo);
+
+ if (p_gizmo.is_valid() && is_inside_world()) {
+ p_gizmo->create();
if (is_visible_in_tree()) {
- data.gizmo->redraw();
+ p_gizmo->redraw();
}
- data.gizmo->transform();
+ p_gizmo->transform();
}
+#endif
+}
+
+void Node3D::remove_gizmo(Ref<Node3DGizmo> p_gizmo) {
+#ifdef TOOLS_ENABLED
+ int idx = data.gizmos.find(p_gizmo);
+ if (idx != -1) {
+ p_gizmo->free();
+ data.gizmos.remove(idx);
+ }
+#endif
+}
+
+void Node3D::clear_gizmos() {
+#ifdef TOOLS_ENABLED
+ for (int i = 0; i < data.gizmos.size(); i++) {
+ data.gizmos.write[i]->free();
+ }
+ data.gizmos.clear();
+#endif
+}
+
+Array Node3D::get_gizmos_bind() const {
+ Array ret;
+
+#ifdef TOOLS_ENABLED
+ for (int i = 0; i < data.gizmos.size(); i++) {
+ ret.push_back(Variant(data.gizmos[i].ptr()));
+ }
#endif
+
+ return ret;
}
-Ref<Node3DGizmo> Node3D::get_gizmo() const {
+Vector<Ref<Node3DGizmo>> Node3D::get_gizmos() const {
#ifdef TOOLS_ENABLED
- return data.gizmo;
+ return data.gizmos;
#else
- return Ref<Node3DGizmo>();
+ return Vector<Ref<Node3DGizmo>>();
#endif
}
-void Node3D::_update_gizmo() {
+void Node3D::_update_gizmos() {
#ifdef TOOLS_ENABLED
- if (!is_inside_world()) {
+ if (data.gizmos_disabled || !is_inside_world() || !data.gizmos_dirty) {
return;
}
- data.gizmo_dirty = false;
- if (data.gizmo.is_valid()) {
+ data.gizmos_dirty = false;
+ for (int i = 0; i < data.gizmos.size(); i++) {
if (is_visible_in_tree()) {
- data.gizmo->redraw();
+ data.gizmos.write[i]->redraw();
} else {
- data.gizmo->clear();
+ data.gizmos.write[i]->clear();
}
}
#endif
}
#ifdef TOOLS_ENABLED
-void Node3D::set_disable_gizmo(bool p_enabled) {
- data.gizmo_disabled = p_enabled;
- if (!p_enabled && data.gizmo.is_valid()) {
- data.gizmo = Ref<Node3DGizmo>();
+void Node3D::set_disable_gizmos(bool p_enabled) {
+ data.gizmos_disabled = p_enabled;
+ if (!p_enabled) {
+ clear_gizmos();
}
}
-
#endif
void Node3D::set_disable_scale(bool p_enabled) {
@@ -486,13 +521,13 @@ void Node3D::_propagate_visibility_changed() {
notification(NOTIFICATION_VISIBILITY_CHANGED);
emit_signal(SceneStringNames::get_singleton()->visibility_changed);
#ifdef TOOLS_ENABLED
- if (data.gizmo.is_valid()) {
- _update_gizmo();
+ if (!data.gizmos.is_empty()) {
+ data.gizmos_dirty = true;
+ _update_gizmos();
}
#endif
- for (List<Node3D *>::Element *E = data.children.front(); E; E = E->next()) {
- Node3D *c = E->get();
+ for (Node3D *c : data.children) {
if (!c || !c->data.visible) {
continue;
}
@@ -717,8 +752,7 @@ void Node3D::_update_visibility_parent(bool p_update_root) {
RS::get_singleton()->instance_set_visibility_parent(vi->get_instance(), data.visibility_parent);
}
- for (List<Node3D *>::Element *E = data.children.front(); E; E = E->next()) {
- Node3D *c = E->get();
+ for (Node3D *c : data.children) {
c->_update_visibility_parent(false);
}
}
@@ -758,11 +792,11 @@ void Node3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_visibility_parent", "path"), &Node3D::set_visibility_parent);
ClassDB::bind_method(D_METHOD("get_visibility_parent"), &Node3D::get_visibility_parent);
- ClassDB::bind_method(D_METHOD("_update_gizmo"), &Node3D::_update_gizmo);
-
- ClassDB::bind_method(D_METHOD("update_gizmo"), &Node3D::update_gizmo);
- ClassDB::bind_method(D_METHOD("set_gizmo", "gizmo"), &Node3D::set_gizmo);
- ClassDB::bind_method(D_METHOD("get_gizmo"), &Node3D::get_gizmo);
+ ClassDB::bind_method(D_METHOD("update_gizmos"), &Node3D::update_gizmos);
+ ClassDB::bind_method(D_METHOD("add_gizmo", "gizmo"), &Node3D::add_gizmo);
+ ClassDB::bind_method(D_METHOD("get_gizmos"), &Node3D::get_gizmos_bind);
+ ClassDB::bind_method(D_METHOD("clear_gizmos"), &Node3D::clear_gizmos);
+ ClassDB::bind_method(D_METHOD("clear_subgizmo_selection"), &Node3D::clear_subgizmo_selection);
ClassDB::bind_method(D_METHOD("set_visible", "visible"), &Node3D::set_visible);
ClassDB::bind_method(D_METHOD("is_visible"), &Node3D::is_visible);
@@ -813,7 +847,6 @@ void Node3D::_bind_methods() {
ADD_GROUP("Visibility", "");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "visible"), "set_visible", "is_visible");
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "visibility_parent", PROPERTY_HINT_NODE_PATH_VALID_TYPES, "GeometryInstance3D"), "set_visibility_parent", "get_visibility_parent");
- ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "gizmo", PROPERTY_HINT_RESOURCE_TYPE, "Node3DGizmo", PROPERTY_USAGE_NONE), "set_gizmo", "get_gizmo");
ADD_SIGNAL(MethodInfo("visibility_changed"));
}
diff --git a/scene/3d/node_3d.h b/scene/3d/node_3d.h
index fe6324c796..282f4805cc 100644
--- a/scene/3d/node_3d.h
+++ b/scene/3d/node_3d.h
@@ -90,16 +90,16 @@ class Node3D : public Node {
bool disable_scale = false;
#ifdef TOOLS_ENABLED
- Ref<Node3DGizmo> gizmo;
- bool gizmo_disabled = false;
- bool gizmo_dirty = false;
+ Vector<Ref<Node3DGizmo>> gizmos;
+ bool gizmos_disabled = false;
+ bool gizmos_dirty = false;
#endif
} data;
NodePath visibility_parent_path;
- void _update_gizmo();
+ void _update_gizmos();
void _notify_dirty();
void _propagate_transform_changed(Node3D *p_origin);
@@ -154,10 +154,14 @@ public:
void set_disable_scale(bool p_enabled);
bool is_scale_disabled() const;
- void set_disable_gizmo(bool p_enabled);
- void update_gizmo();
- void set_gizmo(const Ref<Node3DGizmo> &p_gizmo);
- Ref<Node3DGizmo> get_gizmo() const;
+ void set_disable_gizmos(bool p_enabled);
+ void update_gizmos();
+ void clear_subgizmo_selection();
+ Vector<Ref<Node3DGizmo>> get_gizmos() const;
+ Array get_gizmos_bind() const;
+ void add_gizmo(Ref<Node3DGizmo> p_gizmo);
+ void remove_gizmo(Ref<Node3DGizmo> p_gizmo);
+ void clear_gizmos();
_FORCE_INLINE_ bool is_inside_world() const { return data.inside_world; }
diff --git a/scene/3d/occluder_instance_3d.cpp b/scene/3d/occluder_instance_3d.cpp
index 7b736e689c..3d1a27911b 100644
--- a/scene/3d/occluder_instance_3d.cpp
+++ b/scene/3d/occluder_instance_3d.cpp
@@ -173,12 +173,12 @@ void OccluderInstance3D::set_occluder(const Ref<Occluder3D> &p_occluder) {
set_base(RID());
}
- update_gizmo();
+ update_gizmos();
update_configuration_warnings();
}
void OccluderInstance3D::_occluder_changed() {
- update_gizmo();
+ update_gizmos();
update_configuration_warnings();
}
diff --git a/scene/3d/path_3d.cpp b/scene/3d/path_3d.cpp
index 54ae2cef75..490cf5fe67 100644
--- a/scene/3d/path_3d.cpp
+++ b/scene/3d/path_3d.cpp
@@ -38,7 +38,7 @@ void Path3D::_notification(int p_what) {
void Path3D::_curve_changed() {
if (is_inside_tree() && Engine::get_singleton()->is_editor_hint()) {
- update_gizmo();
+ update_gizmos();
}
if (is_inside_tree()) {
emit_signal(SNAME("curve_changed"));
@@ -100,11 +100,18 @@ void PathFollow3D::_update_transform(bool p_update_xyz_rot) {
}
float bi = c->get_bake_interval();
float o_next = offset + bi;
+ float o_prev = offset - bi;
if (loop) {
o_next = Math::fposmod(o_next, bl);
- } else if (rotation_mode == ROTATION_ORIENTED && o_next >= bl) {
- o_next = bl;
+ o_prev = Math::fposmod(o_prev, bl);
+ } else if (rotation_mode == ROTATION_ORIENTED) {
+ if (o_next >= bl) {
+ o_next = bl;
+ }
+ if (o_prev <= 0) {
+ o_prev = 0;
+ }
}
Vector3 pos = c->interpolate_baked(offset, cubic);
@@ -113,7 +120,12 @@ void PathFollow3D::_update_transform(bool p_update_xyz_rot) {
// will be replaced by "Vector3(h_offset, v_offset, 0)" where it was formerly used
if (rotation_mode == ROTATION_ORIENTED) {
- Vector3 forward = c->interpolate_baked(o_next, cubic) - pos;
+ Vector3 forward = c->interpolate_baked(o_next, cubic);
+
+ // Try with the previous position
+ if (forward.length_squared() < CMP_EPSILON2) {
+ forward = pos - c->interpolate_baked(o_prev, cubic);
+ }
if (forward.length_squared() < CMP_EPSILON2) {
forward = Vector3(0, 0, 1);
diff --git a/scene/3d/physics_body_3d.cpp b/scene/3d/physics_body_3d.cpp
index 760dbdadca..100e3563a3 100644
--- a/scene/3d/physics_body_3d.cpp
+++ b/scene/3d/physics_body_3d.cpp
@@ -78,8 +78,7 @@ TypedArray<PhysicsBody3D> PhysicsBody3D::get_collision_exceptions() {
List<RID> exceptions;
PhysicsServer3D::get_singleton()->body_get_collision_exceptions(get_rid(), &exceptions);
Array ret;
- for (List<RID>::Element *E = exceptions.front(); E; E = E->next()) {
- RID body = E->get();
+ for (const RID &body : exceptions) {
ObjectID instance_id = PhysicsServer3D::get_singleton()->body_get_object_instance_id(body);
Object *obj = ObjectDB::get_instance(instance_id);
PhysicsBody3D *physics_body = Object::cast_to<PhysicsBody3D>(obj);
@@ -1348,7 +1347,7 @@ int CharacterBody3D::get_max_slides() const {
}
void CharacterBody3D::set_max_slides(int p_max_slides) {
- ERR_FAIL_COND(p_max_slides > 0);
+ ERR_FAIL_COND(p_max_slides < 1);
max_slides = p_max_slides;
}
@@ -1423,7 +1422,7 @@ void CharacterBody3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "linear_velocity"), "set_linear_velocity", "get_linear_velocity");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "stop_on_slope"), "set_stop_on_slope_enabled", "is_stop_on_slope_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "infinite_inertia"), "set_infinite_inertia_enabled", "is_infinite_inertia_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "max_slides"), "set_max_slides", "get_max_slides");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "max_slides", PROPERTY_HINT_RANGE, "1,8,1,or_greater"), "set_max_slides", "get_max_slides");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "floor_max_angle", PROPERTY_HINT_RANGE, "0,180,0.1,radians"), "set_floor_max_angle", "get_floor_max_angle");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "snap"), "set_snap", "get_snap");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "up_direction"), "set_up_direction", "get_up_direction");
@@ -2181,9 +2180,7 @@ bool PhysicalBone3D::_set(const StringName &p_name, const Variant &p_value) {
if (joint_data) {
if (joint_data->_set(p_name, p_value, joint)) {
#ifdef TOOLS_ENABLED
- if (get_gizmo().is_valid()) {
- get_gizmo()->redraw();
- }
+ update_gizmos();
#endif
return true;
}
@@ -2371,9 +2368,7 @@ void PhysicalBone3D::_update_joint_offset() {
set_ignore_transform_notification(false);
#ifdef TOOLS_ENABLED
- if (get_gizmo().is_valid()) {
- get_gizmo()->redraw();
- }
+ update_gizmos();
#endif
}
@@ -2540,9 +2535,7 @@ void PhysicalBone3D::set_joint_type(JointType p_joint_type) {
#ifdef TOOLS_ENABLED
notify_property_list_changed();
- if (get_gizmo().is_valid()) {
- get_gizmo()->redraw();
- }
+ update_gizmos();
#endif
}
diff --git a/scene/3d/physics_joint_3d.cpp b/scene/3d/physics_joint_3d.cpp
index 01f10c171f..59440bd1a8 100644
--- a/scene/3d/physics_joint_3d.cpp
+++ b/scene/3d/physics_joint_3d.cpp
@@ -348,7 +348,7 @@ void HingeJoint3D::set_param(Param p_param, real_t p_value) {
PhysicsServer3D::get_singleton()->hinge_joint_set_param(get_joint(), PhysicsServer3D::HingeJointParam(p_param), p_value);
}
- update_gizmo();
+ update_gizmos();
}
real_t HingeJoint3D::get_param(Param p_param) const {
@@ -363,7 +363,7 @@ void HingeJoint3D::set_flag(Flag p_flag, bool p_value) {
PhysicsServer3D::get_singleton()->hinge_joint_set_flag(get_joint(), PhysicsServer3D::HingeJointFlag(p_flag), p_value);
}
- update_gizmo();
+ update_gizmos();
}
bool HingeJoint3D::get_flag(Flag p_flag) const {
@@ -497,7 +497,7 @@ void SliderJoint3D::set_param(Param p_param, real_t p_value) {
if (is_configured()) {
PhysicsServer3D::get_singleton()->slider_joint_set_param(get_joint(), PhysicsServer3D::SliderJointParam(p_param), p_value);
}
- update_gizmo();
+ update_gizmos();
}
real_t SliderJoint3D::get_param(Param p_param) const {
@@ -602,7 +602,7 @@ void ConeTwistJoint3D::set_param(Param p_param, real_t p_value) {
PhysicsServer3D::get_singleton()->cone_twist_joint_set_param(get_joint(), PhysicsServer3D::ConeTwistJointParam(p_param), p_value);
}
- update_gizmo();
+ update_gizmos();
}
real_t ConeTwistJoint3D::get_param(Param p_param) const {
@@ -857,7 +857,7 @@ void Generic6DOFJoint3D::set_param_x(Param p_param, real_t p_value) {
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(get_joint(), Vector3::AXIS_X, PhysicsServer3D::G6DOFJointAxisParam(p_param), p_value);
}
- update_gizmo();
+ update_gizmos();
}
real_t Generic6DOFJoint3D::get_param_x(Param p_param) const {
@@ -871,7 +871,7 @@ void Generic6DOFJoint3D::set_param_y(Param p_param, real_t p_value) {
if (is_configured()) {
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(get_joint(), Vector3::AXIS_Y, PhysicsServer3D::G6DOFJointAxisParam(p_param), p_value);
}
- update_gizmo();
+ update_gizmos();
}
real_t Generic6DOFJoint3D::get_param_y(Param p_param) const {
@@ -885,7 +885,7 @@ void Generic6DOFJoint3D::set_param_z(Param p_param, real_t p_value) {
if (is_configured()) {
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_param(get_joint(), Vector3::AXIS_Z, PhysicsServer3D::G6DOFJointAxisParam(p_param), p_value);
}
- update_gizmo();
+ update_gizmos();
}
real_t Generic6DOFJoint3D::get_param_z(Param p_param) const {
@@ -899,7 +899,7 @@ void Generic6DOFJoint3D::set_flag_x(Flag p_flag, bool p_enabled) {
if (is_configured()) {
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_flag(get_joint(), Vector3::AXIS_X, PhysicsServer3D::G6DOFJointAxisFlag(p_flag), p_enabled);
}
- update_gizmo();
+ update_gizmos();
}
bool Generic6DOFJoint3D::get_flag_x(Flag p_flag) const {
@@ -913,7 +913,7 @@ void Generic6DOFJoint3D::set_flag_y(Flag p_flag, bool p_enabled) {
if (is_configured()) {
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_flag(get_joint(), Vector3::AXIS_Y, PhysicsServer3D::G6DOFJointAxisFlag(p_flag), p_enabled);
}
- update_gizmo();
+ update_gizmos();
}
bool Generic6DOFJoint3D::get_flag_y(Flag p_flag) const {
@@ -927,7 +927,7 @@ void Generic6DOFJoint3D::set_flag_z(Flag p_flag, bool p_enabled) {
if (is_configured()) {
PhysicsServer3D::get_singleton()->generic_6dof_joint_set_flag(get_joint(), Vector3::AXIS_Z, PhysicsServer3D::G6DOFJointAxisFlag(p_flag), p_enabled);
}
- update_gizmo();
+ update_gizmos();
}
bool Generic6DOFJoint3D::get_flag_z(Flag p_flag) const {
diff --git a/scene/3d/proximity_group_3d.cpp b/scene/3d/proximity_group_3d.cpp
index 037110eaa1..c8c61a9f00 100644
--- a/scene/3d/proximity_group_3d.cpp
+++ b/scene/3d/proximity_group_3d.cpp
@@ -128,6 +128,7 @@ void ProximityGroup3D::broadcast(String p_method, Variant p_parameters) {
void ProximityGroup3D::_proximity_group_broadcast(String p_method, Variant p_parameters) {
if (dispatch_mode == MODE_PROXY) {
+ ERR_FAIL_COND(!is_inside_tree());
get_parent()->call(p_method, p_parameters);
} else {
emit_signal(SNAME("broadcast"), p_method, p_parameters);
diff --git a/scene/3d/ray_cast_3d.cpp b/scene/3d/ray_cast_3d.cpp
index dfab3d4a17..7356ce478b 100644
--- a/scene/3d/ray_cast_3d.cpp
+++ b/scene/3d/ray_cast_3d.cpp
@@ -37,7 +37,7 @@
void RayCast3D::set_target_position(const Vector3 &p_point) {
target_position = p_point;
- update_gizmo();
+ update_gizmos();
if (Engine::get_singleton()->is_editor_hint()) {
if (is_inside_tree()) {
@@ -102,7 +102,7 @@ Vector3 RayCast3D::get_collision_normal() const {
void RayCast3D::set_enabled(bool p_enabled) {
enabled = p_enabled;
- update_gizmo();
+ update_gizmos();
if (is_inside_tree() && !Engine::get_singleton()->is_editor_hint()) {
set_physics_process_internal(p_enabled);
@@ -366,7 +366,7 @@ void RayCast3D::_update_debug_shape_vertices() {
void RayCast3D::set_debug_shape_thickness(const float p_debug_shape_thickness) {
debug_shape_thickness = p_debug_shape_thickness;
- update_gizmo();
+ update_gizmos();
if (Engine::get_singleton()->is_editor_hint()) {
if (is_inside_tree()) {
diff --git a/scene/3d/reflection_probe.cpp b/scene/3d/reflection_probe.cpp
index c289fc4fd7..719dbedd94 100644
--- a/scene/3d/reflection_probe.cpp
+++ b/scene/3d/reflection_probe.cpp
@@ -101,7 +101,7 @@ void ReflectionProbe::set_extents(const Vector3 &p_extents) {
RS::get_singleton()->reflection_probe_set_extents(probe, extents);
RS::get_singleton()->reflection_probe_set_origin_offset(probe, origin_offset);
- update_gizmo();
+ update_gizmos();
}
Vector3 ReflectionProbe::get_extents() const {
@@ -119,7 +119,7 @@ void ReflectionProbe::set_origin_offset(const Vector3 &p_extents) {
RS::get_singleton()->reflection_probe_set_extents(probe, extents);
RS::get_singleton()->reflection_probe_set_origin_offset(probe, origin_offset);
- update_gizmo();
+ update_gizmos();
}
Vector3 ReflectionProbe::get_origin_offset() const {
diff --git a/scene/3d/skeleton_3d.cpp b/scene/3d/skeleton_3d.cpp
index fa3b16935c..9ce4c37457 100644
--- a/scene/3d/skeleton_3d.cpp
+++ b/scene/3d/skeleton_3d.cpp
@@ -264,8 +264,8 @@ void Skeleton3D::_notification(int p_what) {
b.global_pose_override_amount = 0.0;
}
- for (List<ObjectID>::Element *E = b.nodes_bound.front(); E; E = E->next()) {
- Object *obj = ObjectDB::get_instance(E->get());
+ for (const ObjectID &E : b.nodes_bound) {
+ Object *obj = ObjectDB::get_instance(E);
ERR_CONTINUE(!obj);
Node3D *node_3d = Object::cast_to<Node3D>(obj);
ERR_CONTINUE(!node_3d);
@@ -404,7 +404,7 @@ void Skeleton3D::add_bone(const String &p_name) {
process_order_dirty = true;
version++;
_make_dirty();
- update_gizmo();
+ update_gizmos();
}
int Skeleton3D::find_bone(const String &p_name) const {
@@ -524,8 +524,8 @@ void Skeleton3D::bind_child_node_to_bone(int p_bone, Node *p_node) {
ObjectID id = p_node->get_instance_id();
- for (const List<ObjectID>::Element *E = bones[p_bone].nodes_bound.front(); E; E = E->next()) {
- if (E->get() == id) {
+ for (const ObjectID &E : bones[p_bone].nodes_bound) {
+ if (E == id) {
return; // already here
}
}
@@ -544,8 +544,8 @@ void Skeleton3D::unbind_child_node_from_bone(int p_bone, Node *p_node) {
void Skeleton3D::get_bound_child_nodes_to_bone(int p_bone, List<Node *> *p_bound) const {
ERR_FAIL_INDEX(p_bone, bones.size());
- for (const List<ObjectID>::Element *E = bones[p_bone].nodes_bound.front(); E; E = E->next()) {
- Object *obj = ObjectDB::get_instance(E->get());
+ for (const ObjectID &E : bones[p_bone].nodes_bound) {
+ Object *obj = ObjectDB::get_instance(E);
ERR_CONTINUE(!obj);
p_bound->push_back(Object::cast_to<Node>(obj));
}
diff --git a/scene/3d/soft_body_3d.cpp b/scene/3d/soft_body_3d.cpp
index 05530c39a1..a7ff0842d2 100644
--- a/scene/3d/soft_body_3d.cpp
+++ b/scene/3d/soft_body_3d.cpp
@@ -592,8 +592,7 @@ Array SoftBody3D::get_collision_exceptions() {
List<RID> exceptions;
PhysicsServer3D::get_singleton()->soft_body_get_collision_exceptions(physics_rid, &exceptions);
Array ret;
- for (List<RID>::Element *E = exceptions.front(); E; E = E->next()) {
- RID body = E->get();
+ for (const RID &body : exceptions) {
ObjectID instance_id = PhysicsServer3D::get_singleton()->body_get_object_instance_id(body);
Object *obj = ObjectDB::get_instance(instance_id);
PhysicsBody3D *physics_body = Object::cast_to<PhysicsBody3D>(obj);
diff --git a/scene/3d/spring_arm_3d.cpp b/scene/3d/spring_arm_3d.cpp
index 1911e14d54..5e9265b4c3 100644
--- a/scene/3d/spring_arm_3d.cpp
+++ b/scene/3d/spring_arm_3d.cpp
@@ -84,7 +84,7 @@ real_t SpringArm3D::get_length() const {
void SpringArm3D::set_length(real_t p_length) {
if (is_inside_tree() && (Engine::get_singleton()->is_editor_hint() || get_tree()->is_debugging_collisions_hint())) {
- update_gizmo();
+ update_gizmos();
}
spring_length = p_length;
diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp
index 2a53dd6aca..a901920dbe 100644
--- a/scene/3d/sprite_3d.cpp
+++ b/scene/3d/sprite_3d.cpp
@@ -60,8 +60,8 @@ void SpriteBase3D::_propagate_color_changed() {
color_dirty = true;
_queue_update();
- for (List<SpriteBase3D *>::Element *E = children.front(); E; E = E->next()) {
- E->get()->_propagate_color_changed();
+ for (SpriteBase3D *&E : children) {
+ E->_propagate_color_changed();
}
}
@@ -174,7 +174,7 @@ void SpriteBase3D::_queue_update() {
}
triangle_mesh.unref();
- update_gizmo();
+ update_gizmos();
pending_update = true;
call_deferred(SceneStringNames::get_singleton()->_im_update);
@@ -996,7 +996,7 @@ void AnimatedSprite3D::_validate_property(PropertyInfo &property) const {
}
property.hint_string += String(E->get());
- if (animation == E->get()) {
+ if (animation == E) {
current_found = true;
}
}
diff --git a/scene/3d/vehicle_body_3d.cpp b/scene/3d/vehicle_body_3d.cpp
index b0e37b81a5..92c0e09947 100644
--- a/scene/3d/vehicle_body_3d.cpp
+++ b/scene/3d/vehicle_body_3d.cpp
@@ -149,7 +149,7 @@ void VehicleWheel3D::_update(PhysicsDirectBodyState3D *s) {
void VehicleWheel3D::set_radius(real_t p_radius) {
m_wheelRadius = p_radius;
- update_gizmo();
+ update_gizmos();
}
real_t VehicleWheel3D::get_radius() const {
@@ -158,7 +158,7 @@ real_t VehicleWheel3D::get_radius() const {
void VehicleWheel3D::set_suspension_rest_length(real_t p_length) {
m_suspensionRestLength = p_length;
- update_gizmo();
+ update_gizmos();
}
real_t VehicleWheel3D::get_suspension_rest_length() const {
diff --git a/scene/3d/visible_on_screen_notifier_3d.cpp b/scene/3d/visible_on_screen_notifier_3d.cpp
index 682bcec449..6a80aa3f45 100644
--- a/scene/3d/visible_on_screen_notifier_3d.cpp
+++ b/scene/3d/visible_on_screen_notifier_3d.cpp
@@ -63,7 +63,7 @@ void VisibleOnScreenNotifier3D::set_aabb(const AABB &p_aabb) {
RS::get_singleton()->visibility_notifier_set_aabb(get_base(), aabb);
- update_gizmo();
+ update_gizmos();
}
AABB VisibleOnScreenNotifier3D::get_aabb() const {
diff --git a/scene/3d/visual_instance_3d.cpp b/scene/3d/visual_instance_3d.cpp
index bd47af8100..c155819159 100644
--- a/scene/3d/visual_instance_3d.cpp
+++ b/scene/3d/visual_instance_3d.cpp
@@ -153,6 +153,7 @@ Ref<Material> GeometryInstance3D::get_material_override() const {
void GeometryInstance3D::set_visibility_range_begin(float p_dist) {
visibility_range_begin = p_dist;
RS::get_singleton()->instance_geometry_set_visibility_range(get_instance(), visibility_range_begin, visibility_range_end, visibility_range_begin_margin, visibility_range_end_margin);
+ update_configuration_warnings();
}
float GeometryInstance3D::get_visibility_range_begin() const {
@@ -162,6 +163,7 @@ float GeometryInstance3D::get_visibility_range_begin() const {
void GeometryInstance3D::set_visibility_range_end(float p_dist) {
visibility_range_end = p_dist;
RS::get_singleton()->instance_geometry_set_visibility_range(get_instance(), visibility_range_begin, visibility_range_end, visibility_range_begin_margin, visibility_range_end_margin);
+ update_configuration_warnings();
}
float GeometryInstance3D::get_visibility_range_end() const {
@@ -238,8 +240,7 @@ bool GeometryInstance3D::_get(const StringName &p_name, Variant &r_ret) const {
void GeometryInstance3D::_get_property_list(List<PropertyInfo> *p_list) const {
List<PropertyInfo> pinfo;
RS::get_singleton()->instance_geometry_get_shader_parameter_list(get_instance(), &pinfo);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- PropertyInfo pi = E->get();
+ for (PropertyInfo &pi : pinfo) {
bool has_def_value = false;
Variant def_value = RS::get_singleton()->instance_geometry_get_shader_parameter_default_value(get_instance(), pi.name);
if (def_value.get_type() != Variant::NIL) {
@@ -352,6 +353,16 @@ bool GeometryInstance3D::is_ignoring_occlusion_culling() {
return ignore_occlusion_culling;
}
+TypedArray<String> GeometryInstance3D::get_configuration_warnings() const {
+ TypedArray<String> warnings = Node::get_configuration_warnings();
+
+ if (!Math::is_zero_approx(visibility_range_end) && visibility_range_end <= visibility_range_begin) {
+ warnings.push_back(TTR("The GeometryInstance3D visibility range's End distance is set to a non-zero value, but is lower than the Begin distance.\nThis means the GeometryInstance3D will never be visible.\nTo resolve this, set the End distance to 0 or to a value greater than the Begin distance."));
+ }
+
+ return warnings;
+}
+
void GeometryInstance3D::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_material_override", "material"), &GeometryInstance3D::set_material_override);
ClassDB::bind_method(D_METHOD("get_material_override"), &GeometryInstance3D::get_material_override);
diff --git a/scene/3d/visual_instance_3d.h b/scene/3d/visual_instance_3d.h
index 2d5699859b..97aac149a1 100644
--- a/scene/3d/visual_instance_3d.h
+++ b/scene/3d/visual_instance_3d.h
@@ -177,6 +177,7 @@ public:
void set_ignore_occlusion_culling(bool p_enabled);
bool is_ignoring_occlusion_culling();
+ TypedArray<String> get_configuration_warnings() const override;
GeometryInstance3D();
};
diff --git a/scene/3d/voxel_gi.cpp b/scene/3d/voxel_gi.cpp
index 3da59ac4c0..5cf7522667 100644
--- a/scene/3d/voxel_gi.cpp
+++ b/scene/3d/voxel_gi.cpp
@@ -265,7 +265,7 @@ Ref<VoxelGIData> VoxelGI::get_probe_data() const {
void VoxelGI::set_subdiv(Subdiv p_subdiv) {
ERR_FAIL_INDEX(p_subdiv, SUBDIV_MAX);
subdiv = p_subdiv;
- update_gizmo();
+ update_gizmos();
}
VoxelGI::Subdiv VoxelGI::get_subdiv() const {
@@ -274,7 +274,7 @@ VoxelGI::Subdiv VoxelGI::get_subdiv() const {
void VoxelGI::set_extents(const Vector3 &p_extents) {
extents = p_extents;
- update_gizmo();
+ update_gizmos();
}
Vector3 VoxelGI::get_extents() const {
@@ -384,14 +384,14 @@ void VoxelGI::bake(Node *p_from_node, bool p_create_visual_debug) {
int pmc = 0;
- for (List<PlotMesh>::Element *E = mesh_list.front(); E; E = E->next()) {
+ for (PlotMesh &E : mesh_list) {
if (bake_step_function) {
bake_step_function(pmc, RTR("Plotting Meshes") + " " + itos(pmc) + "/" + itos(mesh_list.size()));
}
pmc++;
- baker.plot_mesh(E->get().local_xform, E->get().mesh, E->get().instance_materials, E->get().override_material);
+ baker.plot_mesh(E.local_xform, E.mesh, E.instance_materials, E.override_material);
}
if (bake_step_function) {
bake_step_function(pmc++, RTR("Finishing Plot"));
diff --git a/scene/animation/animation_blend_tree.cpp b/scene/animation/animation_blend_tree.cpp
index 200a688067..4bddae3b14 100644
--- a/scene/animation/animation_blend_tree.cpp
+++ b/scene/animation/animation_blend_tree.cpp
@@ -1089,10 +1089,10 @@ bool AnimationNodeBlendTree::_get(const StringName &p_name, Variant &r_ret) cons
conns.resize(nc.size() * 3);
int idx = 0;
- for (List<NodeConnection>::Element *E = nc.front(); E; E = E->next()) {
- conns[idx * 3 + 0] = E->get().input_node;
- conns[idx * 3 + 1] = E->get().input_index;
- conns[idx * 3 + 2] = E->get().output_node;
+ for (const NodeConnection &E : nc) {
+ conns[idx * 3 + 0] = E.input_node;
+ conns[idx * 3 + 1] = E.input_index;
+ conns[idx * 3 + 2] = E.output_node;
idx++;
}
@@ -1110,8 +1110,8 @@ void AnimationNodeBlendTree::_get_property_list(List<PropertyInfo> *p_list) cons
}
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- String name = E->get();
+ for (const StringName &E : names) {
+ String name = E;
if (name != "output") {
p_list->push_back(PropertyInfo(Variant::OBJECT, "nodes/" + name + "/node", PROPERTY_HINT_RESOURCE_TYPE, "AnimationNode", PROPERTY_USAGE_NOEDITOR));
}
diff --git a/scene/animation/animation_cache.cpp b/scene/animation/animation_cache.cpp
index b8980fd56b..56743007e4 100644
--- a/scene/animation/animation_cache.cpp
+++ b/scene/animation/animation_cache.cpp
@@ -252,8 +252,8 @@ void AnimationCache::set_all(float p_time, float p_delta) {
List<int> indices;
animation->value_track_get_key_indices(i, p_time, p_delta, &indices);
- for (List<int>::Element *E = indices.front(); E; E = E->next()) {
- Variant v = animation->track_get_key_value(i, E->get());
+ for (int &E : indices) {
+ Variant v = animation->track_get_key_value(i, E);
set_track_value(i, v);
}
}
@@ -263,9 +263,9 @@ void AnimationCache::set_all(float p_time, float p_delta) {
List<int> indices;
animation->method_track_get_key_indices(i, p_time, p_delta, &indices);
- for (List<int>::Element *E = indices.front(); E; E = E->next()) {
- Vector<Variant> args = animation->method_track_get_params(i, E->get());
- StringName name = animation->method_track_get_name(i, E->get());
+ for (int &E : indices) {
+ Vector<Variant> args = animation->method_track_get_params(i, E);
+ StringName name = animation->method_track_get_name(i, E);
Callable::CallError err;
if (!args.size()) {
diff --git a/scene/animation/animation_node_state_machine.cpp b/scene/animation/animation_node_state_machine.cpp
index 6496331cb0..bf53b554bf 100644
--- a/scene/animation/animation_node_state_machine.cpp
+++ b/scene/animation/animation_node_state_machine.cpp
@@ -512,8 +512,8 @@ void AnimationNodeStateMachine::get_parameter_list(List<PropertyInfo> *r_list) c
}
advance_conditions.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = advance_conditions.front(); E; E = E->next()) {
- r_list->push_back(PropertyInfo(Variant::BOOL, E->get()));
+ for (const StringName &E : advance_conditions) {
+ r_list->push_back(PropertyInfo(Variant::BOOL, E));
}
}
@@ -679,8 +679,8 @@ void AnimationNodeStateMachine::get_node_list(List<StringName> *r_nodes) const {
}
nodes.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = nodes.front(); E; E = E->next()) {
- r_nodes->push_back(E->get());
+ for (const StringName &E : nodes) {
+ r_nodes->push_back(E);
}
}
@@ -902,8 +902,7 @@ void AnimationNodeStateMachine::_get_property_list(List<PropertyInfo> *p_list) c
}
names.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
- String name = E->get();
+ for (const StringName &name : names) {
p_list->push_back(PropertyInfo(Variant::OBJECT, "states/" + name + "/node", PROPERTY_HINT_RESOURCE_TYPE, "AnimationNode", PROPERTY_USAGE_NOEDITOR));
p_list->push_back(PropertyInfo(Variant::VECTOR2, "states/" + name + "/position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR));
}
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp
index 14ca325c25..67b6205a65 100644
--- a/scene/animation/animation_player.cpp
+++ b/scene/animation/animation_player.cpp
@@ -176,8 +176,8 @@ void AnimationPlayer::_get_property_list(List<PropertyInfo> *p_list) const {
anim_names.sort();
- for (List<PropertyInfo>::Element *E = anim_names.front(); E; E = E->next()) {
- p_list->push_back(E->get());
+ for (const PropertyInfo &E : anim_names) {
+ p_list->push_back(E);
}
p_list->push_back(PropertyInfo(Variant::ARRAY, "blend_times", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR | PROPERTY_USAGE_INTERNAL));
@@ -485,8 +485,8 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, float
List<int> indices;
a->value_track_get_key_indices(i, p_time, p_delta, &indices);
- for (List<int>::Element *F = indices.front(); F; F = F->next()) {
- Variant value = a->track_get_key_value(i, F->get());
+ for (int &F : indices) {
+ Variant value = a->track_get_key_value(i, F);
switch (pa->special) {
case SP_NONE: {
bool valid;
@@ -544,9 +544,9 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, float
a->method_track_get_key_indices(i, p_time, p_delta, &indices);
- for (List<int>::Element *E = indices.front(); E; E = E->next()) {
- StringName method = a->method_track_get_name(i, E->get());
- Vector<Variant> params = a->method_track_get_params(i, E->get());
+ for (int &E : indices) {
+ StringName method = a->method_track_get_name(i, E);
+ Vector<Variant> params = a->method_track_get_params(i, E);
int s = params.size();
@@ -1076,8 +1076,8 @@ void AnimationPlayer::get_animation_list(List<StringName> *p_animations) const {
anims.sort();
- for (List<String>::Element *E = anims.front(); E; E = E->next()) {
- p_animations->push_back(E->get());
+ for (const String &E : anims) {
+ p_animations->push_back(E);
}
}
@@ -1118,8 +1118,8 @@ void AnimationPlayer::queue(const StringName &p_name) {
Vector<String> AnimationPlayer::get_queue() {
Vector<String> ret;
- for (List<StringName>::Element *E = queued.front(); E; E = E->next()) {
- ret.push_back(E->get());
+ for (const StringName &E : queued) {
+ ret.push_back(E);
}
return ret;
@@ -1502,8 +1502,8 @@ void AnimationPlayer::get_argument_options(const StringName &p_function, int p_i
if (p_idx == 0 && (p_function == "play" || p_function == "play_backwards" || p_function == "remove_animation" || p_function == "has_animation" || p_function == "queue")) {
List<StringName> al;
get_animation_list(&al);
- for (List<StringName>::Element *E = al.front(); E; E = E->next()) {
- r_options->push_back(quote_style + String(E->get()) + quote_style);
+ for (const StringName &E : al) {
+ r_options->push_back(quote_style + String(E) + quote_style);
}
}
Node::get_argument_options(p_function, p_idx, r_options);
diff --git a/scene/animation/animation_tree.cpp b/scene/animation/animation_tree.cpp
index 72448fc4f7..e623309888 100644
--- a/scene/animation/animation_tree.cpp
+++ b/scene/animation/animation_tree.cpp
@@ -76,10 +76,10 @@ void AnimationNode::get_child_nodes(List<ChildNode> *r_child_nodes) {
Dictionary cn = get_script_instance()->call("_get_child_nodes");
List<Variant> keys;
cn.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
+ for (const Variant &E : keys) {
ChildNode child;
- child.name = E->get();
- child.node = cn[E->get()];
+ child.name = E;
+ child.node = cn[E];
r_child_nodes->push_back(child);
}
}
@@ -137,7 +137,7 @@ void AnimationNode::make_invalid(const String &p_reason) {
if (state->invalid_reasons != String()) {
state->invalid_reasons += "\n";
}
- state->invalid_reasons += "- " + p_reason;
+ state->invalid_reasons += String::utf8("• ") + p_reason;
}
float AnimationNode::blend_input(int p_input, float p_time, bool p_seek, float p_blend, FilterAction p_filter, bool p_optimize) {
@@ -536,8 +536,8 @@ bool AnimationTree::_update_caches(AnimationPlayer *player) {
List<StringName> sname;
player->get_animation_list(&sname);
- for (List<StringName>::Element *E = sname.front(); E; E = E->next()) {
- Ref<Animation> anim = player->get_animation(E->get());
+ for (const StringName &E : sname) {
+ Ref<Animation> anim = player->get_animation(E);
for (int i = 0; i < anim->get_track_count(); i++) {
NodePath path = anim->track_get_path(i);
Animation::TrackType track_type = anim->track_get_type(i);
@@ -561,7 +561,7 @@ bool AnimationTree::_update_caches(AnimationPlayer *player) {
Node *child = parent->get_node_and_resource(path, resource, leftover_path);
if (!child) {
- ERR_PRINT("AnimationTree: '" + String(E->get()) + "', couldn't resolve track: '" + String(path) + "'");
+ ERR_PRINT("AnimationTree: '" + String(E) + "', couldn't resolve track: '" + String(path) + "'");
continue;
}
@@ -590,7 +590,7 @@ bool AnimationTree::_update_caches(AnimationPlayer *player) {
Node3D *node_3d = Object::cast_to<Node3D>(child);
if (!node_3d) {
- ERR_PRINT("AnimationTree: '" + String(E->get()) + "', transform track does not point to Node3D: '" + String(path) + "'");
+ ERR_PRINT("AnimationTree: '" + String(E) + "', transform track does not point to Node3D: '" + String(path) + "'");
continue;
}
@@ -816,9 +816,7 @@ void AnimationTree::_process_graph(float p_delta) {
{
bool can_call = is_inside_tree() && !Engine::get_singleton()->is_editor_hint();
- for (List<AnimationNode::AnimationState>::Element *E = state.animation_states.front(); E; E = E->next()) {
- const AnimationNode::AnimationState &as = E->get();
-
+ for (const AnimationNode::AnimationState &as : state.animation_states) {
Ref<Animation> a = as.animation;
float time = as.time;
float delta = as.delta;
@@ -962,8 +960,8 @@ void AnimationTree::_process_graph(float p_delta) {
List<int> indices;
a->value_track_get_key_indices(i, time, delta, &indices);
- for (List<int>::Element *F = indices.front(); F; F = F->next()) {
- Variant value = a->track_get_key_value(i, F->get());
+ for (int &F : indices) {
+ Variant value = a->track_get_key_value(i, F);
t->object->set_indexed(t->subpath, value);
}
}
@@ -979,9 +977,9 @@ void AnimationTree::_process_graph(float p_delta) {
a->method_track_get_key_indices(i, time, delta, &indices);
- for (List<int>::Element *F = indices.front(); F; F = F->next()) {
- StringName method = a->method_track_get_name(i, F->get());
- Vector<Variant> params = a->method_track_get_params(i, F->get());
+ for (int &F : indices) {
+ StringName method = a->method_track_get_name(i, F);
+ Vector<Variant> params = a->method_track_get_params(i, F);
int s = params.size();
@@ -1355,9 +1353,7 @@ void AnimationTree::_update_properties_for_node(const String &p_base_path, Ref<A
List<PropertyInfo> plist;
node->get_parameter_list(&plist);
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- PropertyInfo pinfo = E->get();
-
+ for (PropertyInfo &pinfo : plist) {
StringName key = pinfo.name;
if (!property_map.has(p_base_path + key)) {
@@ -1373,8 +1369,8 @@ void AnimationTree::_update_properties_for_node(const String &p_base_path, Ref<A
List<AnimationNode::ChildNode> children;
node->get_child_nodes(&children);
- for (List<AnimationNode::ChildNode>::Element *E = children.front(); E; E = E->next()) {
- _update_properties_for_node(p_base_path + E->get().name + "/", E->get().node);
+ for (const AnimationNode::ChildNode &E : children) {
+ _update_properties_for_node(p_base_path + E.name + "/", E.node);
}
}
@@ -1428,17 +1424,17 @@ void AnimationTree::_get_property_list(List<PropertyInfo> *p_list) const {
const_cast<AnimationTree *>(this)->_update_properties();
}
- for (const List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
- p_list->push_back(E->get());
+ for (const PropertyInfo &E : properties) {
+ p_list->push_back(E);
}
}
void AnimationTree::rename_parameter(const String &p_base, const String &p_new_base) {
//rename values first
- for (const List<PropertyInfo>::Element *E = properties.front(); E; E = E->next()) {
- if (E->get().name.begins_with(p_base)) {
- String new_name = E->get().name.replace_first(p_base, p_new_base);
- property_map[new_name] = property_map[E->get().name];
+ for (const PropertyInfo &E : properties) {
+ if (E.name.begins_with(p_base)) {
+ String new_name = E.name.replace_first(p_base, p_new_base);
+ property_map[new_name] = property_map[E.name];
}
}
diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp
index 761046c14a..542011618d 100644
--- a/scene/animation/tween.cpp
+++ b/scene/animation/tween.cpp
@@ -46,8 +46,8 @@ void Tween::start_tweeners() {
ERR_FAIL_MSG("Tween without commands, aborting.");
}
- for (List<Ref<Tweener>>::Element *E = tweeners.write[current_step].front(); E; E = E->next()) {
- E->get()->start();
+ for (Ref<Tweener> &tweener : tweeners.write[current_step]) {
+ tweener->start();
}
}
@@ -140,6 +140,8 @@ bool Tween::is_valid() {
}
Ref<Tween> Tween::bind_node(Node *p_node) {
+ ERR_FAIL_NULL_V(p_node, this);
+
bound_node = p_node->get_instance_id();
is_bound = true;
return this;
@@ -253,11 +255,11 @@ bool Tween::step(float p_delta) {
float step_delta = rem_delta;
step_active = false;
- for (List<Ref<Tweener>>::Element *E = tweeners.write[current_step].front(); E; E = E->next()) {
+ for (Ref<Tweener> &tweener : tweeners.write[current_step]) {
// Modified inside Tweener.step().
float temp_delta = rem_delta;
// Turns to true if any Tweener returns true (i.e. is still not finished).
- step_active = E->get()->step(temp_delta) || step_active;
+ step_active = tweener->step(temp_delta) || step_active;
step_delta = MIN(temp_delta, rem_delta);
}
diff --git a/scene/debugger/scene_debugger.cpp b/scene/debugger/scene_debugger.cpp
index fd5637be11..ce2b320c96 100644
--- a/scene/debugger/scene_debugger.cpp
+++ b/scene/debugger/scene_debugger.cpp
@@ -292,9 +292,9 @@ SceneDebuggerObject::SceneDebuggerObject(ObjectID p_id) {
// Add base object properties.
List<PropertyInfo> pinfo;
obj->get_property_list(&pinfo, true);
- for (List<PropertyInfo>::Element *E = pinfo.front(); E; E = E->next()) {
- if (E->get().usage & (PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_CATEGORY)) {
- properties.push_back(SceneDebuggerProperty(E->get(), obj->get(E->get().name)));
+ for (const PropertyInfo &E : pinfo) {
+ if (E.usage & (PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_CATEGORY)) {
+ properties.push_back(SceneDebuggerProperty(E, obj->get(E.name)));
}
}
}
@@ -452,8 +452,7 @@ SceneDebuggerTree::SceneDebuggerTree(Node *p_root) {
}
void SceneDebuggerTree::serialize(Array &p_arr) {
- for (List<RemoteNode>::Element *E = nodes.front(); E; E = E->next()) {
- RemoteNode &n = E->get();
+ for (const RemoteNode &n : nodes) {
p_arr.push_back(n.child_count);
p_arr.push_back(n.name);
p_arr.push_back(n.type_name);
diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp
index 75a4464a40..82f4a216b8 100644
--- a/scene/gui/base_button.cpp
+++ b/scene/gui/base_button.cpp
@@ -345,7 +345,7 @@ void BaseButton::_unhandled_key_input(Ref<InputEvent> p_event) {
return;
}
- if (!is_disabled() && is_visible_in_tree() && !p_event->is_echo() && shortcut.is_valid() && shortcut->is_shortcut(p_event)) {
+ if (!is_disabled() && is_visible_in_tree() && !p_event->is_echo() && shortcut.is_valid() && shortcut->matches_event(p_event)) {
on_action_event(p_event);
accept_event();
}
@@ -353,7 +353,7 @@ void BaseButton::_unhandled_key_input(Ref<InputEvent> p_event) {
String BaseButton::get_tooltip(const Point2 &p_pos) const {
String tooltip = Control::get_tooltip(p_pos);
- if (shortcut_in_tooltip && shortcut.is_valid() && shortcut->is_valid()) {
+ if (shortcut_in_tooltip && shortcut.is_valid() && shortcut->has_valid_event()) {
String text = shortcut->get_name() + " (" + shortcut->get_as_text() + ")";
if (tooltip != String() && shortcut->get_name().nocasecmp_to(tooltip) != 0) {
text += "\n" + tooltip;
diff --git a/scene/gui/button.cpp b/scene/gui/button.cpp
index 4b6c0ef697..9cdf3bf210 100644
--- a/scene/gui/button.cpp
+++ b/scene/gui/button.cpp
@@ -79,7 +79,7 @@ void Button::_notification(int p_what) {
update();
} break;
case NOTIFICATION_TRANSLATION_CHANGED: {
- xl_text = tr(text);
+ xl_text = atr(text);
_shape();
minimum_size_changed();
@@ -355,7 +355,7 @@ void Button::_shape() {
void Button::set_text(const String &p_text) {
if (text != p_text) {
text = p_text;
- xl_text = tr(text);
+ xl_text = atr(text);
_shape();
update();
diff --git a/scene/gui/code_edit.cpp b/scene/gui/code_edit.cpp
index f302f64224..32922f609d 100644
--- a/scene/gui/code_edit.cpp
+++ b/scene/gui/code_edit.cpp
@@ -72,13 +72,34 @@ void CodeEdit::_notification(int p_what) {
code_completion_background_color = get_theme_color(SNAME("completion_background_color"));
code_completion_selected_color = get_theme_color(SNAME("completion_selected_color"));
code_completion_existing_color = get_theme_color(SNAME("completion_existing_color"));
+
+ line_length_guideline_color = get_theme_color(SNAME("line_length_guideline_color"));
} break;
case NOTIFICATION_DRAW: {
RID ci = get_canvas_item();
+ const Size2 size = get_size();
const bool caret_visible = is_caret_visible();
const bool rtl = is_layout_rtl();
const int row_height = get_row_height();
+ if (line_length_guideline_columns.size() > 0) {
+ const int xmargin_beg = cache.style_normal->get_margin(SIDE_LEFT) + get_total_gutter_width();
+ const int xmargin_end = size.width - cache.style_normal->get_margin(SIDE_RIGHT) - (is_drawing_minimap() ? get_minimap_width() : 0);
+ const int char_size = (int)cache.font->get_char_size('0', 0, cache.font_size).width;
+
+ for (int i = 0; i < line_length_guideline_columns.size(); i++) {
+ const int xoffset = xmargin_beg + char_size * (int)line_length_guideline_columns[i] - get_h_scroll();
+ if (xoffset > xmargin_beg && xoffset < xmargin_end) {
+ Color guideline_color = (i == 0) ? line_length_guideline_color : line_length_guideline_color * Color(1, 1, 1, 0.5);
+ if (rtl) {
+ RenderingServer::get_singleton()->canvas_item_add_line(ci, Point2(size.width - xoffset, 0), Point2(size.width - xoffset, size.height), guideline_color);
+ continue;
+ }
+ RenderingServer::get_singleton()->canvas_item_add_line(ci, Point2(xoffset, 0), Point2(xoffset, size.height), guideline_color);
+ }
+ }
+ }
+
bool code_completion_below = false;
if (caret_visible && code_completion_active && code_completion_options.size() > 0) {
Ref<StyleBox> csb = get_theme_stylebox(SNAME("completion"));
@@ -204,8 +225,15 @@ void CodeEdit::_notification(int p_what) {
round_ofs = round_ofs.round();
draw_string(font, round_ofs, line.replace(String::chr(0xFFFF), ""), HALIGN_LEFT, -1, cache.font_size, font_color);
if (end > 0) {
- Vector2 b = hint_ofs + sb->get_offset() + Vector2(begin, font_height + font_height * i + line_spacing - 1);
- draw_line(b, b + Vector2(end - begin, 0), font_color);
+ // Draw an underline for the currently edited function parameter.
+ const Vector2 b = hint_ofs + sb->get_offset() + Vector2(begin, font_height + font_height * i + line_spacing);
+ draw_line(b, b + Vector2(end - begin, 0), font_color, 2);
+
+ // Draw a translucent text highlight as well.
+ const Rect2 highlight_rect = Rect2(
+ hint_ofs + sb->get_offset() + Vector2(begin, 0),
+ Vector2(end - begin, font_height));
+ draw_rect(highlight_rect, font_color * Color(1, 1, 1, 0.2));
}
line_spacing += cache.line_spacing;
}
@@ -278,6 +306,39 @@ void CodeEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
}
}
}
+ } else {
+ if (mb->get_button_index() == MOUSE_BUTTON_LEFT) {
+ if (mb->is_command_pressed() && symbol_lookup_word != String()) {
+ Vector2i mpos = mb->get_position();
+ if (is_layout_rtl()) {
+ mpos.x = get_size().x - mpos.x;
+ }
+ int line, col;
+ _get_mouse_pos(Point2i(mpos.x, mpos.y), line, col);
+
+ emit_signal(SNAME("symbol_lookup"), symbol_lookup_word, line, col);
+ return;
+ }
+ }
+ }
+ }
+
+ Ref<InputEventMouseMotion> mm = p_gui_input;
+ if (mm.is_valid()) {
+ Vector2i mpos = mm->get_position();
+ if (is_layout_rtl()) {
+ mpos.x = get_size().x - mpos.x;
+ }
+
+ if (symbol_lookup_on_click_enabled) {
+ if (mm->is_command_pressed() && mm->get_button_mask() == 0 && !is_dragging_cursor()) {
+ symbol_lookup_new_word = get_word_at_pos(mpos);
+ if (symbol_lookup_new_word != symbol_lookup_word) {
+ emit_signal(SNAME("symbol_validate"), symbol_lookup_new_word);
+ }
+ } else {
+ set_symbol_lookup_word_as_valid(false);
+ }
}
}
@@ -288,6 +349,25 @@ void CodeEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
return;
}
+ /* Ctrl + Hover symbols */
+#ifdef OSX_ENABLED
+ if (k->get_keycode() == KEY_META) {
+#else
+ if (k->get_keycode() == KEY_CTRL) {
+#endif
+ if (symbol_lookup_on_click_enabled) {
+ if (k->is_pressed() && !is_dragging_cursor()) {
+ symbol_lookup_new_word = get_word_at_pos(_get_local_mouse_pos());
+ if (symbol_lookup_new_word != symbol_lookup_word) {
+ emit_signal(SNAME("symbol_validate"), symbol_lookup_new_word);
+ }
+ } else {
+ set_symbol_lookup_word_as_valid(false);
+ }
+ }
+ return;
+ }
+
/* If a modifier has been pressed, and nothing else, return. */
if (!k->is_pressed() || k->get_keycode() == KEY_CTRL || k->get_keycode() == KEY_ALT || k->get_keycode() == KEY_SHIFT || k->get_keycode() == KEY_META) {
return;
@@ -437,7 +517,12 @@ void CodeEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
}
}
+/* General overrides */
Control::CursorShape CodeEdit::get_cursor_shape(const Point2 &p_pos) const {
+ if (symbol_lookup_word != String()) {
+ return CURSOR_POINTING_HAND;
+ }
+
if ((code_completion_active && code_completion_rect.has_point(p_pos)) || (is_readonly() && (!is_selecting_enabled() || get_line_count() == 0))) {
return CURSOR_ARROW;
}
@@ -459,6 +544,58 @@ Control::CursorShape CodeEdit::get_cursor_shape(const Point2 &p_pos) const {
return TextEdit::get_cursor_shape(p_pos);
}
+void CodeEdit::handle_unicode_input(uint32_t p_unicode) {
+ bool had_selection = is_selection_active();
+ if (had_selection) {
+ begin_complex_operation();
+ delete_selection();
+ }
+
+ // Remove the old character if in insert mode and no selection.
+ if (is_insert_mode() && !had_selection) {
+ begin_complex_operation();
+
+ // Make sure we don't try and remove empty space.
+ if (cursor_get_column() < get_line(cursor_get_line()).length()) {
+ _remove_text(cursor_get_line(), cursor_get_column(), cursor_get_line(), cursor_get_column() + 1);
+ }
+ }
+
+ const char32_t chr[2] = { (char32_t)p_unicode, 0 };
+
+ if (auto_brace_completion_enabled) {
+ int cl = cursor_get_line();
+ int cc = cursor_get_column();
+ int caret_move_offset = 1;
+
+ int post_brace_pair = cc < get_line(cl).length() ? _get_auto_brace_pair_close_at_pos(cl, cc) : -1;
+
+ if (has_string_delimiter(chr) && cc > 0 && _is_char(get_line(cl)[cc - 1]) && post_brace_pair == -1) {
+ insert_text_at_cursor(chr);
+ } else if (cc < get_line(cl).length() && _is_char(get_line(cl)[cc])) {
+ insert_text_at_cursor(chr);
+ } else if (post_brace_pair != -1 && auto_brace_completion_pairs[post_brace_pair].close_key[0] == chr[0]) {
+ caret_move_offset = auto_brace_completion_pairs[post_brace_pair].close_key.length();
+ } else if (is_in_comment(cl, cc) != -1 || (is_in_string(cl, cc) != -1 && has_string_delimiter(chr))) {
+ insert_text_at_cursor(chr);
+ } else {
+ insert_text_at_cursor(chr);
+
+ int pre_brace_pair = _get_auto_brace_pair_open_at_pos(cl, cc + 1);
+ if (pre_brace_pair != -1) {
+ insert_text_at_cursor(auto_brace_completion_pairs[pre_brace_pair].close_key);
+ }
+ }
+ cursor_set_column(cc + caret_move_offset);
+ } else {
+ insert_text_at_cursor(chr);
+ }
+
+ if ((is_insert_mode() && !had_selection) || (had_selection)) {
+ end_complex_operation();
+ }
+}
+
/* Indent management */
void CodeEdit::set_indent_size(const int p_size) {
ERR_FAIL_COND_MSG(p_size <= 0, "Indend size must be greater than 0.");
@@ -527,13 +664,13 @@ void CodeEdit::do_indent() {
}
if (!indent_using_spaces) {
- _insert_text_at_cursor("\t");
+ insert_text_at_cursor("\t");
return;
}
int spaces_to_add = _calculate_spaces_till_next_right_indent(cursor_get_column());
if (spaces_to_add > 0) {
- _insert_text_at_cursor(String(" ").repeat(spaces_to_add));
+ insert_text_at_cursor(String(" ").repeat(spaces_to_add));
}
}
@@ -713,34 +850,6 @@ int CodeEdit::_calculate_spaces_till_next_right_indent(int p_column) const {
return indent_size - p_column % indent_size;
}
-/* TODO: remove once brace completion is refactored. */
-static char32_t _get_right_pair_symbol(char32_t c) {
- if (c == '"') {
- return '"';
- }
- if (c == '\'') {
- return '\'';
- }
- if (c == '(') {
- return ')';
- }
- if (c == '[') {
- return ']';
- }
- if (c == '{') {
- return '}';
- }
- return 0;
-}
-
-static bool _is_pair_left_symbol(char32_t c) {
- return c == '"' ||
- c == '\'' ||
- c == '(' ||
- c == '[' ||
- c == '{';
-}
-
void CodeEdit::_new_line(bool p_split_current_line, bool p_above) {
if (is_readonly()) {
return;
@@ -803,9 +912,8 @@ void CodeEdit::_new_line(bool p_split_current_line, bool p_above) {
if (should_indent) {
ins += indent_text;
- /* TODO: Change when brace completion is refactored. */
- char32_t closing_char = _get_right_pair_symbol(indent_char);
- if (closing_char != 0 && closing_char == line[cc]) {
+ String closing_pair = get_auto_brace_completion_close_key(String::chr(indent_char));
+ if (!closing_pair.is_empty() && line.find(closing_pair, cc) == cc) {
/* No need to move the brace below if we are not taking the text with us. */
if (p_split_current_line) {
brace_indent = true;
@@ -873,12 +981,20 @@ void CodeEdit::backspace() {
merge_gutters(cl, prev_line);
- /* TODO: Change when brace completion is refactored. */
- if (auto_brace_completion_enabled && cc > 0 && _is_pair_left_symbol(get_line(cl)[cc - 1])) {
- _consume_backspace_for_pair_symbol(prev_line, prev_column);
- cursor_set_line(prev_line, false, true);
- cursor_set_column(prev_column);
- return;
+ if (auto_brace_completion_enabled && cc > 0) {
+ int idx = _get_auto_brace_pair_open_at_pos(cl, cc);
+ if (idx != -1) {
+ prev_column = cc - auto_brace_completion_pairs[idx].open_key.length();
+
+ if (_get_auto_brace_pair_close_at_pos(cl, cc) == idx) {
+ _remove_text(prev_line, prev_column, cl, cc + auto_brace_completion_pairs[idx].close_key.length());
+ } else {
+ _remove_text(prev_line, prev_column, cl, cc);
+ }
+ cursor_set_line(prev_line, false, true);
+ cursor_set_column(prev_column);
+ return;
+ }
}
/* For space indentation we need to do a simple unindent if there are no chars to the left, acting in the */
@@ -896,6 +1012,93 @@ void CodeEdit::backspace() {
cursor_set_column(prev_column);
}
+/* Auto brace completion */
+void CodeEdit::set_auto_brace_completion_enabled(bool p_enabled) {
+ auto_brace_completion_enabled = p_enabled;
+}
+
+bool CodeEdit::is_auto_brace_completion_enabled() const {
+ return auto_brace_completion_enabled;
+}
+
+void CodeEdit::set_highlight_matching_braces_enabled(bool p_enabled) {
+ highlight_matching_braces_enabled = p_enabled;
+ update();
+}
+
+bool CodeEdit::is_highlight_matching_braces_enabled() const {
+ return highlight_matching_braces_enabled;
+}
+
+void CodeEdit::add_auto_brace_completion_pair(const String &p_open_key, const String &p_close_key) {
+ ERR_FAIL_COND_MSG(p_open_key.is_empty(), "auto brace completion open key cannot be empty");
+ ERR_FAIL_COND_MSG(p_close_key.is_empty(), "auto brace completion close key cannot be empty");
+
+ for (int i = 0; i < p_open_key.length(); i++) {
+ ERR_FAIL_COND_MSG(!is_symbol(p_open_key[i]), "auto brace completion open key must be a symbol");
+ }
+ for (int i = 0; i < p_close_key.length(); i++) {
+ ERR_FAIL_COND_MSG(!is_symbol(p_close_key[i]), "auto brace completion close key must be a symbol");
+ }
+
+ int at = 0;
+ for (int i = 0; i < auto_brace_completion_pairs.size(); i++) {
+ ERR_FAIL_COND_MSG(auto_brace_completion_pairs[i].open_key == p_open_key, "auto brace completion open key '" + p_open_key + "' already exists.");
+ if (p_open_key.length() < auto_brace_completion_pairs[i].open_key.length()) {
+ at++;
+ }
+ }
+
+ BracePair brace_pair;
+ brace_pair.open_key = p_open_key;
+ brace_pair.close_key = p_close_key;
+ auto_brace_completion_pairs.insert(at, brace_pair);
+}
+
+void CodeEdit::set_auto_brace_completion_pairs(const Dictionary &p_auto_brace_completion_pairs) {
+ auto_brace_completion_pairs.clear();
+
+ Array keys = p_auto_brace_completion_pairs.keys();
+ for (int i = 0; i < keys.size(); i++) {
+ add_auto_brace_completion_pair(keys[i], p_auto_brace_completion_pairs[keys[i]]);
+ }
+}
+
+Dictionary CodeEdit::get_auto_brace_completion_pairs() const {
+ Dictionary brace_pairs;
+ for (int i = 0; i < auto_brace_completion_pairs.size(); i++) {
+ brace_pairs[auto_brace_completion_pairs[i].open_key] = auto_brace_completion_pairs[i].close_key;
+ }
+ return brace_pairs;
+}
+
+bool CodeEdit::has_auto_brace_completion_open_key(const String &p_open_key) const {
+ for (int i = 0; i < auto_brace_completion_pairs.size(); i++) {
+ if (auto_brace_completion_pairs[i].open_key == p_open_key) {
+ return true;
+ }
+ }
+ return false;
+}
+
+bool CodeEdit::has_auto_brace_completion_close_key(const String &p_close_key) const {
+ for (int i = 0; i < auto_brace_completion_pairs.size(); i++) {
+ if (auto_brace_completion_pairs[i].close_key == p_close_key) {
+ return true;
+ }
+ }
+ return false;
+}
+
+String CodeEdit::get_auto_brace_completion_close_key(const String &p_open_key) const {
+ for (int i = 0; i < auto_brace_completion_pairs.size(); i++) {
+ if (auto_brace_completion_pairs[i].open_key == p_open_key) {
+ return auto_brace_completion_pairs[i].close_key;
+ }
+ }
+ return String();
+}
+
/* Main Gutter */
void CodeEdit::_update_draw_main_gutter() {
set_gutter_draw(main_gutter, draw_breakpoints || draw_bookmarks || draw_executing_lines);
@@ -1700,35 +1903,40 @@ void CodeEdit::confirm_code_completion(bool p_replace) {
insert_text_at_cursor(insert_text.substr(matching_chars));
}
- /* TODO: merge with autobrace completion, when in CodeEdit. */
/* Handle merging of symbols eg strings, brackets. */
const String line = get_line(caret_line);
char32_t next_char = line[cursor_get_column()];
char32_t last_completion_char = insert_text[insert_text.length() - 1];
char32_t last_completion_char_display = display_text[display_text.length() - 1];
- if ((last_completion_char == '"' || last_completion_char == '\'') && (last_completion_char == next_char || last_completion_char_display == next_char)) {
+ int pre_brace_pair = cursor_get_column() > 0 ? _get_auto_brace_pair_open_at_pos(caret_line, cursor_get_column()) : -1;
+ int post_brace_pair = cursor_get_column() < get_line(caret_line).length() ? _get_auto_brace_pair_close_at_pos(caret_line, cursor_get_column()) : -1;
+
+ if (post_brace_pair != -1 && (last_completion_char == next_char || last_completion_char_display == next_char)) {
_remove_text(caret_line, cursor_get_column(), caret_line, cursor_get_column() + 1);
}
- if (last_completion_char == '(') {
- if (next_char == last_completion_char) {
- _remove_text(caret_line, cursor_get_column() - 1, caret_line, cursor_get_column());
- } else if (auto_brace_completion_enabled) {
- insert_text_at_cursor(")");
- cursor_set_column(cursor_get_column() - 1);
- }
- } else if (last_completion_char == ')' && next_char == '(') {
- _remove_text(caret_line, cursor_get_column() - 2, caret_line, cursor_get_column());
- if (line[cursor_get_column() + 1] != ')') {
- cursor_set_column(cursor_get_column() - 1);
+ if (pre_brace_pair != -1 && pre_brace_pair != post_brace_pair && (last_completion_char == next_char || last_completion_char_display == next_char)) {
+ _remove_text(caret_line, cursor_get_column(), caret_line, cursor_get_column() + 1);
+ } else if (auto_brace_completion_enabled && pre_brace_pair != -1 && post_brace_pair == -1) {
+ insert_text_at_cursor(auto_brace_completion_pairs[pre_brace_pair].close_key);
+ cursor_set_column(cursor_get_column() - auto_brace_completion_pairs[pre_brace_pair].close_key.length());
+ }
+
+ if (pre_brace_pair == -1 && post_brace_pair == -1 && cursor_get_column() > 0 && cursor_get_column() < get_line(caret_line).length()) {
+ pre_brace_pair = _get_auto_brace_pair_open_at_pos(caret_line, cursor_get_column() + 1);
+ if (pre_brace_pair == _get_auto_brace_pair_close_at_pos(caret_line, cursor_get_column() - 1)) {
+ _remove_text(caret_line, cursor_get_column() - 2, caret_line, cursor_get_column());
+ if (_get_auto_brace_pair_close_at_pos(caret_line, cursor_get_column() - 1) != pre_brace_pair) {
+ cursor_set_column(cursor_get_column() - 1);
+ }
}
}
end_complex_operation();
cancel_code_completion();
- if (last_completion_char == '(') {
+ if (code_completion_prefixes.has(String::chr(last_completion_char))) {
request_code_completion();
}
}
@@ -1742,6 +1950,58 @@ void CodeEdit::cancel_code_completion() {
update();
}
+/* Line length guidelines */
+void CodeEdit::set_line_length_guidelines(TypedArray<int> p_guideline_columns) {
+ line_length_guideline_columns = p_guideline_columns;
+ update();
+}
+
+TypedArray<int> CodeEdit::get_line_length_guidelines() const {
+ return line_length_guideline_columns;
+}
+
+/* Symbol lookup */
+void CodeEdit::set_symbol_lookup_on_click_enabled(bool p_enabled) {
+ symbol_lookup_on_click_enabled = p_enabled;
+ set_symbol_lookup_word_as_valid(false);
+}
+
+bool CodeEdit::is_symbol_lookup_on_click_enabled() const {
+ return symbol_lookup_on_click_enabled;
+}
+
+String CodeEdit::get_text_for_symbol_lookup() {
+ int line, col;
+ Point2i mp = _get_local_mouse_pos();
+ _get_mouse_pos(mp, line, col);
+
+ StringBuilder lookup_text;
+ const int text_size = get_line_count();
+ for (int i = 0; i < text_size; i++) {
+ String text = get_line(i);
+
+ if (i == line) {
+ lookup_text += text.substr(0, col);
+ /* Not unicode, represents the cursor. */
+ lookup_text += String::chr(0xFFFF);
+ lookup_text += text.substr(col, text.size());
+ } else {
+ lookup_text += text;
+ }
+
+ if (i != text_size - 1) {
+ lookup_text += "\n";
+ }
+ }
+ return lookup_text.as_string();
+}
+
+void CodeEdit::set_symbol_lookup_word_as_valid(bool p_valid) {
+ symbol_lookup_word = p_valid ? symbol_lookup_new_word : "";
+ symbol_lookup_new_word = "";
+ _set_symbol_lookup_word(symbol_lookup_word);
+}
+
void CodeEdit::_bind_methods() {
/* Indent management */
ClassDB::bind_method(D_METHOD("set_indent_size", "size"), &CodeEdit::set_indent_size);
@@ -1762,6 +2022,22 @@ void CodeEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("indent_lines"), &CodeEdit::indent_lines);
ClassDB::bind_method(D_METHOD("unindent_lines"), &CodeEdit::unindent_lines);
+ /* Auto brace completion */
+ ClassDB::bind_method(D_METHOD("set_auto_brace_completion_enabled", "enable"), &CodeEdit::set_auto_brace_completion_enabled);
+ ClassDB::bind_method(D_METHOD("is_auto_brace_completion_enabled"), &CodeEdit::is_auto_brace_completion_enabled);
+
+ ClassDB::bind_method(D_METHOD("set_highlight_matching_braces_enabled", "enable"), &CodeEdit::set_highlight_matching_braces_enabled);
+ ClassDB::bind_method(D_METHOD("is_highlight_matching_braces_enabled"), &CodeEdit::is_highlight_matching_braces_enabled);
+
+ ClassDB::bind_method(D_METHOD("add_auto_brace_completion_pair", "start_key", "end_key"), &CodeEdit::add_auto_brace_completion_pair);
+ ClassDB::bind_method(D_METHOD("set_auto_brace_completion_pairs", "pairs"), &CodeEdit::set_auto_brace_completion_pairs);
+ ClassDB::bind_method(D_METHOD("get_auto_brace_completion_pairs"), &CodeEdit::get_auto_brace_completion_pairs);
+
+ ClassDB::bind_method(D_METHOD("has_auto_brace_completion_open_key", "open_key"), &CodeEdit::has_auto_brace_completion_open_key);
+ ClassDB::bind_method(D_METHOD("has_auto_brace_completion_close_key", "close_key"), &CodeEdit::has_auto_brace_completion_close_key);
+
+ ClassDB::bind_method(D_METHOD("get_auto_brace_completion_close_key", "open_key"), &CodeEdit::get_auto_brace_completion_close_key);
+
/* Main Gutter */
ClassDB::bind_method(D_METHOD("_main_gutter_draw_callback"), &CodeEdit::_main_gutter_draw_callback);
@@ -1890,19 +2166,35 @@ void CodeEdit::_bind_methods() {
BIND_VMETHOD(MethodInfo("_request_code_completion", PropertyInfo(Variant::BOOL, "force")));
BIND_VMETHOD(MethodInfo(Variant::ARRAY, "_filter_code_completion_candidates", PropertyInfo(Variant::ARRAY, "candidates")));
+ /* Line length guidelines */
+ ClassDB::bind_method(D_METHOD("set_line_length_guidelines", "guideline_columns"), &CodeEdit::set_line_length_guidelines);
+ ClassDB::bind_method(D_METHOD("get_line_length_guidelines"), &CodeEdit::get_line_length_guidelines);
+
+ /* Symbol lookup */
+ ClassDB::bind_method(D_METHOD("set_symbol_lookup_on_click_enabled", "enable"), &CodeEdit::set_symbol_lookup_on_click_enabled);
+ ClassDB::bind_method(D_METHOD("is_symbol_lookup_on_click_enabled"), &CodeEdit::is_symbol_lookup_on_click_enabled);
+
+ ClassDB::bind_method(D_METHOD("get_text_for_symbol_lookup"), &CodeEdit::get_text_for_symbol_lookup);
+
+ ClassDB::bind_method(D_METHOD("set_symbol_lookup_word_as_valid", "valid"), &CodeEdit::set_symbol_lookup_word_as_valid);
+
/* Inspector */
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_breakpoints_gutter"), "set_draw_breakpoints_gutter", "is_drawing_breakpoints_gutter");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "symbol_lookup_on_click"), "set_symbol_lookup_on_click_enabled", "is_symbol_lookup_on_click_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "line_folding"), "set_line_folding_enabled", "is_line_folding_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_bookmarks"), "set_draw_bookmarks_gutter", "is_drawing_bookmarks_gutter");
+ ADD_PROPERTY(PropertyInfo(Variant::PACKED_INT32_ARRAY, "line_length_guidelines"), "set_line_length_guidelines", "get_line_length_guidelines");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_executing_lines"), "set_draw_executing_lines_gutter", "is_drawing_executing_lines_gutter");
+ ADD_GROUP("Gutters", "gutters_");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gutters_draw_breakpoints_gutter"), "set_draw_breakpoints_gutter", "is_drawing_breakpoints_gutter");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_line_numbers"), "set_draw_line_numbers", "is_draw_line_numbers_enabled");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "zero_pad_line_numbers"), "set_line_numbers_zero_padded", "is_line_numbers_zero_padded");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gutters_draw_bookmarks"), "set_draw_bookmarks_gutter", "is_drawing_bookmarks_gutter");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "draw_fold_gutter"), "set_draw_fold_gutter", "is_drawing_fold_gutter");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gutters_draw_executing_lines"), "set_draw_executing_lines_gutter", "is_drawing_executing_lines_gutter");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "line_folding"), "set_line_folding_enabled", "is_line_folding_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gutters_draw_line_numbers"), "set_draw_line_numbers", "is_draw_line_numbers_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gutters_zero_pad_line_numbers"), "set_line_numbers_zero_padded", "is_line_numbers_zero_padded");
+
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "gutters_draw_fold_gutter"), "set_draw_fold_gutter", "is_drawing_fold_gutter");
ADD_GROUP("Delimiters", "delimiter_");
ADD_PROPERTY(PropertyInfo(Variant::PACKED_STRING_ARRAY, "delimiter_strings"), "set_string_delimiters", "get_string_delimiters");
@@ -1918,11 +2210,74 @@ void CodeEdit::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "indent_automatic"), "set_auto_indent_enabled", "is_auto_indent_enabled");
ADD_PROPERTY(PropertyInfo(Variant::PACKED_STRING_ARRAY, "indent_automatic_prefixes"), "set_auto_indent_prefixes", "get_auto_indent_prefixes");
+ ADD_GROUP("Auto brace completion", "auto_brace_completion_");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "auto_brace_completion_enabled"), "set_auto_brace_completion_enabled", "is_auto_brace_completion_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "auto_brace_completion_highlight_matching"), "set_highlight_matching_braces_enabled", "is_highlight_matching_braces_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::DICTIONARY, "auto_brace_completion_pairs"), "set_auto_brace_completion_pairs", "get_auto_brace_completion_pairs");
+
/* Signals */
+ /* Gutters */
ADD_SIGNAL(MethodInfo("breakpoint_toggled", PropertyInfo(Variant::INT, "line")));
+
+ /* Code Completion */
ADD_SIGNAL(MethodInfo("request_code_completion"));
+
+ /* Symbol lookup */
+ ADD_SIGNAL(MethodInfo("symbol_lookup", PropertyInfo(Variant::STRING, "symbol"), PropertyInfo(Variant::INT, "line"), PropertyInfo(Variant::INT, "column")));
+ ADD_SIGNAL(MethodInfo("symbol_validate", PropertyInfo(Variant::STRING, "symbol")));
}
+/* Auto brace completion */
+int CodeEdit::_get_auto_brace_pair_open_at_pos(int p_line, int p_col) {
+ const String &line = get_line(p_line);
+
+ /* Should be fast enough, expecting low amount of pairs... */
+ for (int i = 0; i < auto_brace_completion_pairs.size(); i++) {
+ const String &open_key = auto_brace_completion_pairs[i].open_key;
+ if (p_col - open_key.length() < 0) {
+ continue;
+ }
+
+ bool is_match = true;
+ for (int j = 0; j < open_key.length(); j++) {
+ if (line[(p_col - 1) - j] != open_key[(open_key.length() - 1) - j]) {
+ is_match = false;
+ break;
+ }
+ }
+
+ if (is_match) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+int CodeEdit::_get_auto_brace_pair_close_at_pos(int p_line, int p_col) {
+ const String &line = get_line(p_line);
+
+ /* Should be fast enough, expecting low amount of pairs... */
+ for (int i = 0; i < auto_brace_completion_pairs.size(); i++) {
+ if (p_col + auto_brace_completion_pairs[i].close_key.length() > line.length()) {
+ continue;
+ }
+
+ bool is_match = true;
+ for (int j = 0; j < auto_brace_completion_pairs[i].close_key.length(); j++) {
+ if (line[p_col + j] != auto_brace_completion_pairs[i].close_key[j]) {
+ is_match = false;
+ break;
+ }
+ }
+
+ if (is_match) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+/* Gutters */
void CodeEdit::_gutter_clicked(int p_line, int p_gutter) {
if (p_gutter == main_gutter) {
if (draw_breakpoints) {
@@ -2128,7 +2483,7 @@ int CodeEdit::_is_in_delimiter(int p_line, int p_column, DelimiterType p_type) c
int region = (p_line <= 0 || delimiter_cache[p_line - 1].size() < 1) ? -1 : delimiter_cache[p_line - 1].back()->value();
bool in_region = region != -1 && delimiters[region].type == p_type;
for (Map<int, int>::Element *E = delimiter_cache[p_line].front(); E; E = E->next()) {
- /* If column is specified, loop untill the key is larger then the column. */
+ /* If column is specified, loop until the key is larger then the column. */
if (p_column != -1) {
if (E->key() > p_column) {
break;
@@ -2138,7 +2493,7 @@ int CodeEdit::_is_in_delimiter(int p_line, int p_column, DelimiterType p_type) c
continue;
}
- /* If no column, calulate if the entire line is a region */
+ /* If no column, calculate if the entire line is a region */
/* excluding whitespace. */
const String line = get_line(p_line);
if (!in_region) {
@@ -2288,14 +2643,14 @@ void CodeEdit::_filter_code_completion_candidates() {
TypedArray<Dictionary> completion_options_sources;
completion_options_sources.resize(code_completion_option_sources.size());
int i = 0;
- for (List<ScriptCodeCompletionOption>::Element *E = code_completion_option_sources.front(); E; E = E->next()) {
+ for (const ScriptCodeCompletionOption &E : code_completion_option_sources) {
Dictionary option;
- option["kind"] = E->get().kind;
- option["display_text"] = E->get().display;
- option["insert_text"] = E->get().insert_text;
- option["font_color"] = E->get().font_color;
- option["icon"] = E->get().icon;
- option["default_value"] = E->get().default_value;
+ option["kind"] = E.kind;
+ option["display_text"] = E.display;
+ option["insert_text"] = E.insert_text;
+ option["font_color"] = E.font_color;
+ option["icon"] = E.icon;
+ option["default_value"] = E.default_value;
completion_options_sources[i] = option;
i++;
}
@@ -2406,9 +2761,7 @@ void CodeEdit::_filter_code_completion_candidates() {
int max_width = 0;
String string_to_complete_lower = string_to_complete.to_lower();
- for (List<ScriptCodeCompletionOption>::Element *E = code_completion_option_sources.front(); E; E = E->next()) {
- ScriptCodeCompletionOption &option = E->get();
-
+ for (ScriptCodeCompletionOption &option : code_completion_option_sources) {
if (single_quote && option.display.is_quoted()) {
option.display = option.display.unquote().quote("'");
}
@@ -2527,8 +2880,7 @@ void CodeEdit::_lines_edited_from(int p_from_line, int p_to_line) {
int line_count = (p_to_line - p_from_line);
List<int> breakpoints;
breakpointed_lines.get_key_list(&breakpoints);
- for (const List<int>::Element *E = breakpoints.front(); E; E = E->next()) {
- int line = E->get();
+ for (const int line : breakpoints) {
if (line <= from_line) {
continue;
}
@@ -2550,6 +2902,17 @@ CodeEdit::CodeEdit() {
auto_indent_prefixes.insert('[');
auto_indent_prefixes.insert('(');
+ /* Auto brace completion */
+ add_auto_brace_completion_pair("(", ")");
+ add_auto_brace_completion_pair("{", "}");
+ add_auto_brace_completion_pair("[", "]");
+ add_auto_brace_completion_pair("\"", "\"");
+ add_auto_brace_completion_pair("\'", "\'");
+
+ /* Delimiter traking */
+ add_string_delimiter("\"", "\"", false);
+ add_string_delimiter("\'", "\'", false);
+
/* Text Direction */
set_layout_direction(LAYOUT_DIRECTION_LTR);
set_text_direction(TEXT_DIRECTION_LTR);
diff --git a/scene/gui/code_edit.h b/scene/gui/code_edit.h
index 25b518402b..72fdc6e787 100644
--- a/scene/gui/code_edit.h
+++ b/scene/gui/code_edit.h
@@ -66,6 +66,19 @@ private:
void _new_line(bool p_split_current_line = true, bool p_above = false);
+ /* Auto brace completion */
+ bool auto_brace_completion_enabled = false;
+
+ /* BracePair open_key must be uniquie and ordered by length. */
+ struct BracePair {
+ String open_key = "";
+ String close_key = "";
+ };
+ Vector<BracePair> auto_brace_completion_pairs;
+
+ int _get_auto_brace_pair_open_at_pos(int p_line, int p_col);
+ int _get_auto_brace_pair_close_at_pos(int p_line, int p_col);
+
/* Main Gutter */
enum MainGutterType {
MAIN_GUTTER_BREAKPOINT = 0x01,
@@ -112,7 +125,7 @@ private:
void _update_gutter_indexes();
/* Line Folding */
- bool line_folding_enabled = true;
+ bool line_folding_enabled = false;
/* Delimiters */
enum DelimiterType {
@@ -210,6 +223,16 @@ private:
void _lines_edited_from(int p_from_line, int p_to_line);
+ /* Line length guidelines */
+ TypedArray<int> line_length_guideline_columns;
+ Color line_length_guideline_color;
+
+ /* Symbol lookup */
+ bool symbol_lookup_on_click_enabled = false;
+
+ String symbol_lookup_new_word = "";
+ String symbol_lookup_word = "";
+
protected:
void _gui_input(const Ref<InputEvent> &p_gui_input) override;
void _notification(int p_what);
@@ -217,7 +240,9 @@ protected:
static void _bind_methods();
public:
+ /* General overrides */
virtual CursorShape get_cursor_shape(const Point2 &p_pos = Point2i()) const override;
+ virtual void handle_unicode_input(uint32_t p_unicode) override;
/* Indent management */
void set_indent_size(const int p_size);
@@ -240,6 +265,22 @@ public:
virtual void backspace() override;
+ /* Auto brace completion */
+ void set_auto_brace_completion_enabled(bool p_enabled);
+ bool is_auto_brace_completion_enabled() const;
+
+ void set_highlight_matching_braces_enabled(bool p_enabled);
+ bool is_highlight_matching_braces_enabled() const;
+
+ void add_auto_brace_completion_pair(const String &p_open_key, const String &p_close_key);
+ void set_auto_brace_completion_pairs(const Dictionary &p_auto_brace_completion_pairs);
+ Dictionary get_auto_brace_completion_pairs() const;
+
+ bool has_auto_brace_completion_open_key(const String &p_open_key) const;
+ bool has_auto_brace_completion_close_key(const String &p_close_key) const;
+
+ String get_auto_brace_completion_close_key(const String &p_open_key) const;
+
/* Main Gutter */
void set_draw_breakpoints_gutter(bool p_draw);
bool is_drawing_breakpoints_gutter() const;
@@ -347,6 +388,18 @@ public:
void confirm_code_completion(bool p_replace = false);
void cancel_code_completion();
+ /* Line length guidelines */
+ void set_line_length_guidelines(TypedArray<int> p_guideline_columns);
+ TypedArray<int> get_line_length_guidelines() const;
+
+ /* Symbol lookup */
+ void set_symbol_lookup_on_click_enabled(bool p_enabled);
+ bool is_symbol_lookup_on_click_enabled() const;
+
+ String get_text_for_symbol_lookup();
+
+ void set_symbol_lookup_word_as_valid(bool p_valid);
+
CodeEdit();
~CodeEdit();
};
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp
index 032533d4a9..a2e6872da6 100644
--- a/scene/gui/control.cpp
+++ b/scene/gui/control.cpp
@@ -222,41 +222,42 @@ Transform2D Control::_get_internal_transform() const {
bool Control::_set(const StringName &p_name, const Variant &p_value) {
String name = p_name;
- if (!name.begins_with("custom")) {
+ // Prefixes "custom_*" are supported for compatibility with 3.x.
+ if (!name.begins_with("theme_override") && !name.begins_with("custom")) {
return false;
}
if (p_value.get_type() == Variant::NIL) {
- if (name.begins_with("custom_icons/")) {
+ if (name.begins_with("theme_override_icons/") || name.begins_with("custom_icons/")) {
String dname = name.get_slicec('/', 1);
if (data.icon_override.has(dname)) {
data.icon_override[dname]->disconnect("changed", callable_mp(this, &Control::_override_changed));
}
data.icon_override.erase(dname);
notification(NOTIFICATION_THEME_CHANGED);
- } else if (name.begins_with("custom_styles/")) {
+ } else if (name.begins_with("theme_override_styles/") || name.begins_with("custom_styles/")) {
String dname = name.get_slicec('/', 1);
if (data.style_override.has(dname)) {
data.style_override[dname]->disconnect("changed", callable_mp(this, &Control::_override_changed));
}
data.style_override.erase(dname);
notification(NOTIFICATION_THEME_CHANGED);
- } else if (name.begins_with("custom_fonts/")) {
+ } else if (name.begins_with("theme_override_fonts/") || name.begins_with("custom_fonts/")) {
String dname = name.get_slicec('/', 1);
if (data.font_override.has(dname)) {
data.font_override[dname]->disconnect("changed", callable_mp(this, &Control::_override_changed));
}
data.font_override.erase(dname);
notification(NOTIFICATION_THEME_CHANGED);
- } else if (name.begins_with("custom_font_sizes/")) {
+ } else if (name.begins_with("theme_override_font_sizes/") || name.begins_with("custom_font_sizes/")) {
String dname = name.get_slicec('/', 1);
data.font_size_override.erase(dname);
notification(NOTIFICATION_THEME_CHANGED);
- } else if (name.begins_with("custom_colors/")) {
+ } else if (name.begins_with("theme_override_colors/") || name.begins_with("custom_colors/")) {
String dname = name.get_slicec('/', 1);
data.color_override.erase(dname);
notification(NOTIFICATION_THEME_CHANGED);
- } else if (name.begins_with("custom_constants/")) {
+ } else if (name.begins_with("theme_override_constants/") || name.begins_with("custom_constants/")) {
String dname = name.get_slicec('/', 1);
data.constant_override.erase(dname);
notification(NOTIFICATION_THEME_CHANGED);
@@ -265,22 +266,22 @@ bool Control::_set(const StringName &p_name, const Variant &p_value) {
}
} else {
- if (name.begins_with("custom_icons/")) {
+ if (name.begins_with("theme_override_icons/") || name.begins_with("custom_icons/")) {
String dname = name.get_slicec('/', 1);
add_theme_icon_override(dname, p_value);
- } else if (name.begins_with("custom_styles/")) {
+ } else if (name.begins_with("theme_override_styles/") || name.begins_with("custom_styles/")) {
String dname = name.get_slicec('/', 1);
add_theme_style_override(dname, p_value);
- } else if (name.begins_with("custom_fonts/")) {
+ } else if (name.begins_with("theme_override_fonts/") || name.begins_with("custom_fonts/")) {
String dname = name.get_slicec('/', 1);
add_theme_font_override(dname, p_value);
- } else if (name.begins_with("custom_font_sizes/")) {
+ } else if (name.begins_with("theme_override_font_sizes/") || name.begins_with("custom_font_sizes/")) {
String dname = name.get_slicec('/', 1);
add_theme_font_size_override(dname, p_value);
- } else if (name.begins_with("custom_colors/")) {
+ } else if (name.begins_with("theme_override_colors/") || name.begins_with("custom_colors/")) {
String dname = name.get_slicec('/', 1);
add_theme_color_override(dname, p_value);
- } else if (name.begins_with("custom_constants/")) {
+ } else if (name.begins_with("theme_override_constants/") || name.begins_with("custom_constants/")) {
String dname = name.get_slicec('/', 1);
add_theme_constant_override(dname, p_value);
} else {
@@ -307,27 +308,26 @@ void Control::_update_minimum_size() {
bool Control::_get(const StringName &p_name, Variant &r_ret) const {
String sname = p_name;
-
- if (!sname.begins_with("custom")) {
+ if (!sname.begins_with("theme_override")) {
return false;
}
- if (sname.begins_with("custom_icons/")) {
+ if (sname.begins_with("theme_override_icons/")) {
String name = sname.get_slicec('/', 1);
r_ret = data.icon_override.has(name) ? Variant(data.icon_override[name]) : Variant();
- } else if (sname.begins_with("custom_styles/")) {
+ } else if (sname.begins_with("theme_override_styles/")) {
String name = sname.get_slicec('/', 1);
r_ret = data.style_override.has(name) ? Variant(data.style_override[name]) : Variant();
- } else if (sname.begins_with("custom_fonts/")) {
+ } else if (sname.begins_with("theme_override_fonts/")) {
String name = sname.get_slicec('/', 1);
r_ret = data.font_override.has(name) ? Variant(data.font_override[name]) : Variant();
- } else if (sname.begins_with("custom_font_sizes/")) {
+ } else if (sname.begins_with("theme_override_font_sizes/")) {
String name = sname.get_slicec('/', 1);
r_ret = data.font_size_override.has(name) ? Variant(data.font_size_override[name]) : Variant();
- } else if (sname.begins_with("custom_colors/")) {
+ } else if (sname.begins_with("theme_override_colors/")) {
String name = sname.get_slicec('/', 1);
r_ret = data.color_override.has(name) ? Variant(data.color_override[name]) : Variant();
- } else if (sname.begins_with("custom_constants/")) {
+ } else if (sname.begins_with("theme_override_constants/")) {
String name = sname.get_slicec('/', 1);
r_ret = data.constant_override.has(name) ? Variant(data.constant_override[name]) : Variant();
} else {
@@ -340,76 +340,78 @@ bool Control::_get(const StringName &p_name, Variant &r_ret) const {
void Control::_get_property_list(List<PropertyInfo> *p_list) const {
Ref<Theme> theme = Theme::get_default();
+ p_list->push_back(PropertyInfo(Variant::NIL, "Theme Overrides", PROPERTY_HINT_NONE, "theme_override_", PROPERTY_USAGE_GROUP));
+
{
List<StringName> names;
- theme->get_icon_list(get_class_name(), &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ theme->get_color_list(get_class_name(), &names);
+ for (const StringName &E : names) {
uint32_t usage = PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_CHECKABLE;
- if (data.icon_override.has(E->get())) {
+ if (data.color_override.has(E)) {
usage |= PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_CHECKED;
}
- p_list->push_back(PropertyInfo(Variant::OBJECT, "custom_icons/" + E->get(), PROPERTY_HINT_RESOURCE_TYPE, "Texture2D", usage));
+ p_list->push_back(PropertyInfo(Variant::COLOR, "theme_override_colors/" + E, PROPERTY_HINT_NONE, "", usage));
}
}
{
List<StringName> names;
- theme->get_stylebox_list(get_class_name(), &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ theme->get_constant_list(get_class_name(), &names);
+ for (const StringName &E : names) {
uint32_t usage = PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_CHECKABLE;
- if (data.style_override.has(E->get())) {
+ if (data.constant_override.has(E)) {
usage |= PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_CHECKED;
}
- p_list->push_back(PropertyInfo(Variant::OBJECT, "custom_styles/" + E->get(), PROPERTY_HINT_RESOURCE_TYPE, "StyleBox", usage));
+ p_list->push_back(PropertyInfo(Variant::INT, "theme_override_constants/" + E, PROPERTY_HINT_RANGE, "-16384,16384", usage));
}
}
{
List<StringName> names;
theme->get_font_list(get_class_name(), &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ for (const StringName &E : names) {
uint32_t usage = PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_CHECKABLE;
- if (data.font_override.has(E->get())) {
+ if (data.font_override.has(E)) {
usage |= PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_CHECKED;
}
- p_list->push_back(PropertyInfo(Variant::OBJECT, "custom_fonts/" + E->get(), PROPERTY_HINT_RESOURCE_TYPE, "Font", usage));
+ p_list->push_back(PropertyInfo(Variant::OBJECT, "theme_override_fonts/" + E, PROPERTY_HINT_RESOURCE_TYPE, "Font", usage));
}
}
{
List<StringName> names;
theme->get_font_size_list(get_class_name(), &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ for (const StringName &E : names) {
uint32_t usage = PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_CHECKABLE;
- if (data.font_size_override.has(E->get())) {
+ if (data.font_size_override.has(E)) {
usage |= PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_CHECKED;
}
- p_list->push_back(PropertyInfo(Variant::INT, "custom_font_sizes/" + E->get(), PROPERTY_HINT_NONE, "", usage));
+ p_list->push_back(PropertyInfo(Variant::INT, "theme_override_font_sizes/" + E, PROPERTY_HINT_NONE, "", usage));
}
}
{
List<StringName> names;
- theme->get_color_list(get_class_name(), &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ theme->get_icon_list(get_class_name(), &names);
+ for (const StringName &E : names) {
uint32_t usage = PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_CHECKABLE;
- if (data.color_override.has(E->get())) {
+ if (data.icon_override.has(E)) {
usage |= PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_CHECKED;
}
- p_list->push_back(PropertyInfo(Variant::COLOR, "custom_colors/" + E->get(), PROPERTY_HINT_NONE, "", usage));
+ p_list->push_back(PropertyInfo(Variant::OBJECT, "theme_override_icons/" + E, PROPERTY_HINT_RESOURCE_TYPE, "Texture2D", usage));
}
}
{
List<StringName> names;
- theme->get_constant_list(get_class_name(), &names);
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ theme->get_stylebox_list(get_class_name(), &names);
+ for (const StringName &E : names) {
uint32_t usage = PROPERTY_USAGE_EDITOR | PROPERTY_USAGE_CHECKABLE;
- if (data.constant_override.has(E->get())) {
+ if (data.style_override.has(E)) {
usage |= PROPERTY_USAGE_STORAGE | PROPERTY_USAGE_CHECKED;
}
- p_list->push_back(PropertyInfo(Variant::INT, "custom_constants/" + E->get(), PROPERTY_HINT_RANGE, "-16384,16384", usage));
+ p_list->push_back(PropertyInfo(Variant::OBJECT, "theme_override_styles/" + E, PROPERTY_HINT_RESOURCE_TYPE, "StyleBox", usage));
}
}
}
@@ -428,14 +430,14 @@ void Control::_validate_property(PropertyInfo &property) const {
Vector<StringName> unique_names;
String hint_string;
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ for (const StringName &E : names) {
// Skip duplicate values.
- if (unique_names.has(E->get())) {
+ if (unique_names.has(E)) {
continue;
}
- hint_string += String(E->get()) + ",";
- unique_names.append(E->get());
+ hint_string += String(E) + ",";
+ unique_names.append(E);
}
property.hint_string = hint_string;
@@ -454,6 +456,8 @@ void Control::set_layout_direction(Control::LayoutDirection p_direction) {
ERR_FAIL_INDEX((int)p_direction, 4);
data.layout_dir = p_direction;
+ data.is_rtl_dirty = true;
+
propagate_notification(NOTIFICATION_LAYOUT_DIRECTION_CHANGED);
}
@@ -462,29 +466,49 @@ Control::LayoutDirection Control::get_layout_direction() const {
}
bool Control::is_layout_rtl() const {
- if (data.layout_dir == LAYOUT_DIRECTION_INHERITED) {
- Window *parent_window = get_parent_window();
- Control *parent_control = get_parent_control();
- if (parent_control) {
- return parent_control->is_layout_rtl();
- } else if (parent_window) {
- return parent_window->is_layout_rtl();
- } else {
+ if (data.is_rtl_dirty) {
+ const_cast<Control *>(this)->data.is_rtl_dirty = false;
+ if (data.layout_dir == LAYOUT_DIRECTION_INHERITED) {
+ Window *parent_window = get_parent_window();
+ Control *parent_control = get_parent_control();
+ if (parent_control) {
+ const_cast<Control *>(this)->data.is_rtl = parent_control->is_layout_rtl();
+ } else if (parent_window) {
+ const_cast<Control *>(this)->data.is_rtl = parent_window->is_layout_rtl();
+ } else {
+ if (GLOBAL_GET(SNAME("internationalization/rendering/force_right_to_left_layout_direction"))) {
+ const_cast<Control *>(this)->data.is_rtl = true;
+ } else {
+ String locale = TranslationServer::get_singleton()->get_tool_locale();
+ const_cast<Control *>(this)->data.is_rtl = TS->is_locale_right_to_left(locale);
+ }
+ }
+ } else if (data.layout_dir == LAYOUT_DIRECTION_LOCALE) {
if (GLOBAL_GET(SNAME("internationalization/rendering/force_right_to_left_layout_direction"))) {
- return true;
+ const_cast<Control *>(this)->data.is_rtl = true;
+ } else {
+ String locale = TranslationServer::get_singleton()->get_tool_locale();
+ const_cast<Control *>(this)->data.is_rtl = TS->is_locale_right_to_left(locale);
}
- String locale = TranslationServer::get_singleton()->get_tool_locale();
- return TS->is_locale_right_to_left(locale);
- }
- } else if (data.layout_dir == LAYOUT_DIRECTION_LOCALE) {
- if (GLOBAL_GET(SNAME("internationalization/rendering/force_right_to_left_layout_direction"))) {
- return true;
+ } else {
+ const_cast<Control *>(this)->data.is_rtl = (data.layout_dir == LAYOUT_DIRECTION_RTL);
}
- String locale = TranslationServer::get_singleton()->get_tool_locale();
- return TS->is_locale_right_to_left(locale);
- } else {
- return (data.layout_dir == LAYOUT_DIRECTION_RTL);
}
+ return data.is_rtl;
+}
+
+void Control::set_auto_translate(bool p_enable) {
+ if (p_enable == data.auto_translate) {
+ return;
+ }
+
+ data.auto_translate = p_enable;
+
+ notification(MainLoop::NOTIFICATION_TRANSLATION_CHANGED);
+}
+
+bool Control::is_auto_translating() const {
+ return data.auto_translate;
}
void Control::_clear_size_warning() {
@@ -534,6 +558,7 @@ void Control::_notification(int p_notification) {
} break;
case NOTIFICATION_POST_ENTER_TREE: {
data.minimum_size_valid = false;
+ data.is_rtl_dirty = true;
_size_changed();
} break;
case NOTIFICATION_EXIT_TREE: {
@@ -548,6 +573,7 @@ void Control::_notification(int p_notification) {
case NOTIFICATION_ENTER_CANVAS: {
data.parent = Object::cast_to<Control>(get_parent());
data.parent_window = Object::cast_to<Window>(get_parent());
+ data.is_rtl_dirty = true;
Node *parent = this; //meh
Control *parent_control = nullptr;
@@ -613,6 +639,7 @@ void Control::_notification(int p_notification) {
data.parent = nullptr;
data.parent_canvas_item = nullptr;
data.parent_window = nullptr;
+ data.is_rtl_dirty = true;
} break;
case NOTIFICATION_MOVED_IN_PARENT: {
@@ -672,6 +699,7 @@ void Control::_notification(int p_notification) {
} break;
case NOTIFICATION_TRANSLATION_CHANGED:
case NOTIFICATION_LAYOUT_DIRECTION_CHANGED: {
+ data.is_rtl_dirty = true;
_size_changed();
} break;
}
@@ -793,13 +821,13 @@ T Control::get_theme_item_in_types(Control *p_theme_owner, Window *p_theme_owner
Window *theme_owner_window = p_theme_owner_window;
while (theme_owner || theme_owner_window) {
- for (List<StringName>::Element *E = p_theme_types.front(); E; E = E->next()) {
- if (theme_owner && theme_owner->data.theme->has_theme_item(p_data_type, p_name, E->get())) {
- return theme_owner->data.theme->get_theme_item(p_data_type, p_name, E->get());
+ for (const StringName &E : p_theme_types) {
+ if (theme_owner && theme_owner->data.theme->has_theme_item(p_data_type, p_name, E)) {
+ return theme_owner->data.theme->get_theme_item(p_data_type, p_name, E);
}
- if (theme_owner_window && theme_owner_window->theme->has_theme_item(p_data_type, p_name, E->get())) {
- return theme_owner_window->theme->get_theme_item(p_data_type, p_name, E->get());
+ if (theme_owner_window && theme_owner_window->theme->has_theme_item(p_data_type, p_name, E)) {
+ return theme_owner_window->theme->get_theme_item(p_data_type, p_name, E);
}
}
@@ -822,17 +850,17 @@ T Control::get_theme_item_in_types(Control *p_theme_owner, Window *p_theme_owner
// Secondly, check the project-defined Theme resource.
if (Theme::get_project_default().is_valid()) {
- for (List<StringName>::Element *E = p_theme_types.front(); E; E = E->next()) {
- if (Theme::get_project_default()->has_theme_item(p_data_type, p_name, E->get())) {
- return Theme::get_project_default()->get_theme_item(p_data_type, p_name, E->get());
+ for (const StringName &E : p_theme_types) {
+ if (Theme::get_project_default()->has_theme_item(p_data_type, p_name, E)) {
+ return Theme::get_project_default()->get_theme_item(p_data_type, p_name, E);
}
}
}
// Lastly, fall back on the items defined in the default Theme, if they exist.
- for (List<StringName>::Element *E = p_theme_types.front(); E; E = E->next()) {
- if (Theme::get_default()->has_theme_item(p_data_type, p_name, E->get())) {
- return Theme::get_default()->get_theme_item(p_data_type, p_name, E->get());
+ for (const StringName &E : p_theme_types) {
+ if (Theme::get_default()->has_theme_item(p_data_type, p_name, E)) {
+ return Theme::get_default()->get_theme_item(p_data_type, p_name, E);
}
}
// If they don't exist, use any type to return the default/empty value.
@@ -848,12 +876,12 @@ bool Control::has_theme_item_in_types(Control *p_theme_owner, Window *p_theme_ow
Window *theme_owner_window = p_theme_owner_window;
while (theme_owner || theme_owner_window) {
- for (List<StringName>::Element *E = p_theme_types.front(); E; E = E->next()) {
- if (theme_owner && theme_owner->data.theme->has_theme_item(p_data_type, p_name, E->get())) {
+ for (const StringName &E : p_theme_types) {
+ if (theme_owner && theme_owner->data.theme->has_theme_item(p_data_type, p_name, E)) {
return true;
}
- if (theme_owner_window && theme_owner_window->theme->has_theme_item(p_data_type, p_name, E->get())) {
+ if (theme_owner_window && theme_owner_window->theme->has_theme_item(p_data_type, p_name, E)) {
return true;
}
}
@@ -877,16 +905,16 @@ bool Control::has_theme_item_in_types(Control *p_theme_owner, Window *p_theme_ow
// Secondly, check the project-defined Theme resource.
if (Theme::get_project_default().is_valid()) {
- for (List<StringName>::Element *E = p_theme_types.front(); E; E = E->next()) {
- if (Theme::get_project_default()->has_theme_item(p_data_type, p_name, E->get())) {
+ for (const StringName &E : p_theme_types) {
+ if (Theme::get_project_default()->has_theme_item(p_data_type, p_name, E)) {
return true;
}
}
}
// Lastly, fall back on the items defined in the default Theme, if they exist.
- for (List<StringName>::Element *E = p_theme_types.front(); E; E = E->next()) {
- if (Theme::get_default()->has_theme_item(p_data_type, p_name, E->get())) {
+ for (const StringName &E : p_theme_types) {
+ if (Theme::get_default()->has_theme_item(p_data_type, p_name, E)) {
return true;
}
}
@@ -1594,7 +1622,7 @@ void Control::set_rect(const Rect2 &p_rect) {
void Control::_set_size(const Size2 &p_size) {
#ifdef DEBUG_ENABLED
if (data.size_warning && (data.anchor[SIDE_LEFT] != data.anchor[SIDE_RIGHT] || data.anchor[SIDE_TOP] != data.anchor[SIDE_BOTTOM])) {
- WARN_PRINT("Nodes with non-equal opposite anchors will have their size overriden after _ready(). \nIf you want to set size, change the anchors or consider using set_deferred().");
+ WARN_PRINT("Nodes with non-equal opposite anchors will have their size overridden after _ready(). \nIf you want to set size, change the anchors or consider using set_deferred().");
}
#endif
set_size(p_size);
@@ -2580,8 +2608,8 @@ void Control::get_argument_options(const StringName &p_function, int p_idx, List
}
sn.sort_custom<StringName::AlphCompare>();
- for (List<StringName>::Element *E = sn.front(); E; E = E->next()) {
- r_options->push_back(quote_style + E->get() + quote_style);
+ for (const StringName &E : sn) {
+ r_options->push_back(quote_style + E + quote_style);
}
}
}
@@ -2772,6 +2800,9 @@ void Control::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_layout_direction"), &Control::get_layout_direction);
ClassDB::bind_method(D_METHOD("is_layout_rtl"), &Control::is_layout_rtl);
+ ClassDB::bind_method(D_METHOD("set_auto_translate", "enable"), &Control::set_auto_translate);
+ ClassDB::bind_method(D_METHOD("is_auto_translating"), &Control::is_auto_translating);
+
BIND_VMETHOD(MethodInfo("_structured_text_parser", PropertyInfo(Variant::ARRAY, "args"), PropertyInfo(Variant::STRING, "text")));
BIND_VMETHOD(MethodInfo("_gui_input", PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent")));
@@ -2806,6 +2837,9 @@ void Control::_bind_methods() {
ADD_GROUP("Layout Direction", "layout_");
ADD_PROPERTY(PropertyInfo(Variant::INT, "layout_direction", PROPERTY_HINT_ENUM, "Inherited,Locale,Left-to-Right,Right-to-Left"), "set_layout_direction", "get_layout_direction");
+ ADD_GROUP("Auto Translate", "");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "auto_translate"), "set_auto_translate", "is_auto_translating");
+
ADD_GROUP("Rect", "rect_");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "rect_position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "_set_position", "get_position");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "rect_global_position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NONE), "_set_global_position", "get_global_position");
@@ -2836,10 +2870,10 @@ void Control::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "size_flags_horizontal", PROPERTY_HINT_FLAGS, "Fill,Expand,Shrink Center,Shrink End"), "set_h_size_flags", "get_h_size_flags");
ADD_PROPERTY(PropertyInfo(Variant::INT, "size_flags_vertical", PROPERTY_HINT_FLAGS, "Fill,Expand,Shrink Center,Shrink End"), "set_v_size_flags", "get_v_size_flags");
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "size_flags_stretch_ratio", PROPERTY_HINT_RANGE, "0,20,0.01,or_greater"), "set_stretch_ratio", "get_stretch_ratio");
+
ADD_GROUP("Theme", "theme_");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "theme", PROPERTY_HINT_RESOURCE_TYPE, "Theme"), "set_theme", "get_theme");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "theme_type_variation", PROPERTY_HINT_ENUM_SUGGESTION), "set_theme_type_variation", "get_theme_type_variation");
- ADD_GROUP("", "");
BIND_ENUM_CONSTANT(FOCUS_NONE);
BIND_ENUM_CONSTANT(FOCUS_CLICK);
diff --git a/scene/gui/control.h b/scene/gui/control.h
index 51b454b334..8d669c7a6d 100644
--- a/scene/gui/control.h
+++ b/scene/gui/control.h
@@ -179,6 +179,10 @@ private:
GrowDirection v_grow = GROW_DIRECTION_END;
LayoutDirection layout_dir = LAYOUT_DIRECTION_INHERITED;
+ bool is_rtl_dirty = true;
+ bool is_rtl = false;
+
+ bool auto_translate = true;
real_t rotation = 0.0;
Vector2 scale = Vector2(1, 1);
@@ -349,6 +353,10 @@ public:
LayoutDirection get_layout_direction() const;
virtual bool is_layout_rtl() const;
+ void set_auto_translate(bool p_enable);
+ bool is_auto_translating() const;
+ _FORCE_INLINE_ String atr(const String p_string) const { return is_auto_translating() ? tr(p_string) : p_string; };
+
/* POSITIONING */
void set_anchors_preset(LayoutPreset p_preset, bool p_keep_offsets = true);
diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp
index f5c764e9cc..da858e8e83 100644
--- a/scene/gui/dialogs.cpp
+++ b/scene/gui/dialogs.cpp
@@ -72,13 +72,10 @@ void AcceptDialog::_notification(int p_what) {
parent_visible = nullptr;
}
}
-
} break;
-
case NOTIFICATION_THEME_CHANGED: {
bg->add_theme_style_override("panel", bg->get_theme_stylebox(SNAME("panel"), SNAME("AcceptDialog")));
} break;
-
case NOTIFICATION_EXIT_TREE: {
if (parent_visible) {
parent_visible->disconnect("focus_entered", callable_mp(this, &AcceptDialog::_parent_focused));
diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp
index 9ed3a2244e..2e4204e171 100644
--- a/scene/gui/file_dialog.cpp
+++ b/scene/gui/file_dialog.cpp
@@ -552,9 +552,9 @@ void FileDialog::update_file_list() {
bool match = patterns.is_empty();
String match_str;
- for (List<String>::Element *E = patterns.front(); E; E = E->next()) {
- if (files.front()->get().matchn(E->get())) {
- match_str = E->get();
+ for (const String &E : patterns) {
+ if (files.front()->get().matchn(E)) {
+ match_str = E;
match = true;
break;
}
diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp
index 2281fb19c6..1fac2b9129 100644
--- a/scene/gui/graph_edit.cpp
+++ b/scene/gui/graph_edit.cpp
@@ -217,8 +217,8 @@ Error GraphEdit::connect_node(const StringName &p_from, int p_from_port, const S
}
bool GraphEdit::is_node_connected(const StringName &p_from, int p_from_port, const StringName &p_to, int p_to_port) {
- for (List<Connection>::Element *E = connections.front(); E; E = E->next()) {
- if (E->get().from == p_from && E->get().from_port == p_from_port && E->get().to == p_to && E->get().to_port == p_to_port) {
+ for (const Connection &E : connections) {
+ if (E.from == p_from && E.from_port == p_from_port && E.to == p_to && E.to_port == p_to_port) {
return true;
}
}
@@ -227,7 +227,7 @@ bool GraphEdit::is_node_connected(const StringName &p_from, int p_from_port, con
}
void GraphEdit::disconnect_node(const StringName &p_from, int p_from_port, const StringName &p_to, int p_to_port) {
- for (List<Connection>::Element *E = connections.front(); E; E = E->next()) {
+ for (const List<Connection>::Element *E = connections.front(); E; E = E->next()) {
if (E->get().from == p_from && E->get().from_port == p_from_port && E->get().to == p_to && E->get().to_port == p_to_port) {
connections.erase(E);
top_layer->update();
@@ -561,20 +561,20 @@ void GraphEdit::_top_layer_input(const Ref<InputEvent> &p_ev) {
if (is_in_hot_zone(pos / zoom, click_pos)) {
if (valid_left_disconnect_types.has(gn->get_connection_output_type(j))) {
//check disconnect
- for (List<Connection>::Element *E = connections.front(); E; E = E->next()) {
- if (E->get().from == gn->get_name() && E->get().from_port == j) {
- Node *to = get_node(String(E->get().to));
+ for (const Connection &E : connections) {
+ if (E.from == gn->get_name() && E.from_port == j) {
+ Node *to = get_node(String(E.to));
if (Object::cast_to<GraphNode>(to)) {
- connecting_from = E->get().to;
- connecting_index = E->get().to_port;
+ connecting_from = E.to;
+ connecting_index = E.to_port;
connecting_out = false;
- connecting_type = Object::cast_to<GraphNode>(to)->get_connection_input_type(E->get().to_port);
- connecting_color = Object::cast_to<GraphNode>(to)->get_connection_input_color(E->get().to_port);
+ connecting_type = Object::cast_to<GraphNode>(to)->get_connection_input_type(E.to_port);
+ connecting_color = Object::cast_to<GraphNode>(to)->get_connection_input_color(E.to_port);
connecting_target = false;
connecting_to = pos;
just_disconnected = true;
- emit_signal(SNAME("disconnection_request"), E->get().from, E->get().from_port, E->get().to, E->get().to_port);
+ emit_signal(SNAME("disconnection_request"), E.from, E.from_port, E.to, E.to_port);
to = get_node(String(connecting_from)); //maybe it was erased
if (Object::cast_to<GraphNode>(to)) {
connecting = true;
@@ -603,20 +603,20 @@ void GraphEdit::_top_layer_input(const Ref<InputEvent> &p_ev) {
if (is_in_hot_zone(pos / zoom, click_pos)) {
if (right_disconnects || valid_right_disconnect_types.has(gn->get_connection_input_type(j))) {
//check disconnect
- for (List<Connection>::Element *E = connections.front(); E; E = E->next()) {
- if (E->get().to == gn->get_name() && E->get().to_port == j) {
- Node *fr = get_node(String(E->get().from));
+ for (const Connection &E : connections) {
+ if (E.to == gn->get_name() && E.to_port == j) {
+ Node *fr = get_node(String(E.from));
if (Object::cast_to<GraphNode>(fr)) {
- connecting_from = E->get().from;
- connecting_index = E->get().from_port;
+ connecting_from = E.from;
+ connecting_index = E.from_port;
connecting_out = true;
- connecting_type = Object::cast_to<GraphNode>(fr)->get_connection_output_type(E->get().from_port);
- connecting_color = Object::cast_to<GraphNode>(fr)->get_connection_output_color(E->get().from_port);
+ connecting_type = Object::cast_to<GraphNode>(fr)->get_connection_output_type(E.from_port);
+ connecting_color = Object::cast_to<GraphNode>(fr)->get_connection_output_color(E.from_port);
connecting_target = false;
connecting_to = pos;
just_disconnected = true;
- emit_signal(SNAME("disconnection_request"), E->get().from, E->get().from_port, E->get().to, E->get().to_port);
+ emit_signal(SNAME("disconnection_request"), E.from, E.from_port, E.to, E.to_port);
fr = get_node(String(connecting_from)); //maybe it was erased
if (Object::cast_to<GraphNode>(fr)) {
connecting = true;
@@ -1001,8 +1001,8 @@ void GraphEdit::_minimap_draw() {
// Draw node connections.
Color activity_color = get_theme_color(SNAME("activity"));
- for (List<Connection>::Element *E = connections.front(); E; E = E->next()) {
- NodePath fromnp(E->get().from);
+ for (const Connection &E : connections) {
+ NodePath fromnp(E.from);
Node *from = get_node(fromnp);
if (!from) {
@@ -1013,7 +1013,7 @@ void GraphEdit::_minimap_draw() {
continue;
}
- NodePath tonp(E->get().to);
+ NodePath tonp(E.to);
Node *to = get_node(tonp);
if (!to) {
continue;
@@ -1023,16 +1023,16 @@ void GraphEdit::_minimap_draw() {
continue;
}
- Vector2 from_slot_position = gfrom->get_position_offset() * zoom + gfrom->get_connection_output_position(E->get().from_port);
+ Vector2 from_slot_position = gfrom->get_position_offset() * zoom + gfrom->get_connection_output_position(E.from_port);
Vector2 from_position = minimap->_convert_from_graph_position(from_slot_position - graph_offset) + minimap_offset;
- Color from_color = gfrom->get_connection_output_color(E->get().from_port);
- Vector2 to_slot_position = gto->get_position_offset() * zoom + gto->get_connection_input_position(E->get().to_port);
+ Color from_color = gfrom->get_connection_output_color(E.from_port);
+ Vector2 to_slot_position = gto->get_position_offset() * zoom + gto->get_connection_input_position(E.to_port);
Vector2 to_position = minimap->_convert_from_graph_position(to_slot_position - graph_offset) + minimap_offset;
- Color to_color = gto->get_connection_input_color(E->get().to_port);
+ Color to_color = gto->get_connection_input_color(E.to_port);
- if (E->get().activity > 0) {
- from_color = from_color.lerp(activity_color, E->get().activity);
- to_color = to_color.lerp(activity_color, E->get().activity);
+ if (E.activity > 0) {
+ from_color = from_color.lerp(activity_color, E.activity);
+ to_color = to_color.lerp(activity_color, E.activity);
}
_draw_cos_line(minimap, from_position, to_position, from_color, to_color, 1.0, 0.5);
}
@@ -1360,15 +1360,15 @@ void GraphEdit::_gui_input(const Ref<InputEvent> &p_ev) {
}
void GraphEdit::set_connection_activity(const StringName &p_from, int p_from_port, const StringName &p_to, int p_to_port, float p_activity) {
- for (List<Connection>::Element *E = connections.front(); E; E = E->next()) {
- if (E->get().from == p_from && E->get().from_port == p_from_port && E->get().to == p_to && E->get().to_port == p_to_port) {
- if (Math::is_equal_approx(E->get().activity, p_activity)) {
+ for (Connection &E : connections) {
+ if (E.from == p_from && E.from_port == p_from_port && E.to == p_to && E.to_port == p_to_port) {
+ if (Math::is_equal_approx(E.activity, p_activity)) {
//update only if changed
top_layer->update();
minimap->update();
connections_layer->update();
}
- E->get().activity = p_activity;
+ E.activity = p_activity;
return;
}
}
@@ -1500,12 +1500,12 @@ Array GraphEdit::_get_connection_list() const {
List<Connection> conns;
get_connection_list(&conns);
Array arr;
- for (List<Connection>::Element *E = conns.front(); E; E = E->next()) {
+ for (const Connection &E : conns) {
Dictionary d;
- d["from"] = E->get().from;
- d["from_port"] = E->get().from_port;
- d["to"] = E->get().to;
- d["to_port"] = E->get().to_port;
+ d["from"] = E.from;
+ d["from_port"] = E.from_port;
+ d["to"] = E.to;
+ d["to_port"] = E.to_port;
arr.push_back(d);
}
return arr;
diff --git a/scene/gui/label.cpp b/scene/gui/label.cpp
index 06faf3fa3e..1603989243 100644
--- a/scene/gui/label.cpp
+++ b/scene/gui/label.cpp
@@ -221,7 +221,7 @@ void Label::_update_visible() {
void Label::_notification(int p_what) {
if (p_what == NOTIFICATION_TRANSLATION_CHANGED) {
- String new_text = tr(text);
+ String new_text = atr(text);
if (new_text == xl_text) {
return; //nothing new
}
@@ -509,7 +509,7 @@ void Label::set_text(const String &p_string) {
return;
}
text = p_string;
- xl_text = tr(p_string);
+ xl_text = atr(p_string);
dirty = true;
if (percent_visible < 1) {
visible_chars = get_total_character_count() * percent_visible;
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index 19ffcfca6d..68e9171c15 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -597,7 +597,7 @@ void LineEdit::_notification(int p_what) {
update();
} break;
case NOTIFICATION_TRANSLATION_CHANGED: {
- placeholder_translated = tr(placeholder);
+ placeholder_translated = atr(placeholder);
_shape();
update();
} break;
@@ -1364,7 +1364,7 @@ String LineEdit::get_text() const {
void LineEdit::set_placeholder(String p_text) {
placeholder = p_text;
- placeholder_translated = tr(placeholder);
+ placeholder_translated = atr(placeholder);
_shape();
update();
}
diff --git a/scene/gui/menu_button.cpp b/scene/gui/menu_button.cpp
index 73034dee5a..cf1f41d0fc 100644
--- a/scene/gui/menu_button.cpp
+++ b/scene/gui/menu_button.cpp
@@ -57,7 +57,32 @@ void MenuButton::_unhandled_key_input(Ref<InputEvent> p_event) {
void MenuButton::_popup_visibility_changed(bool p_visible) {
set_pressed(p_visible);
- set_process_internal(p_visible);
+
+ if (!p_visible) {
+ set_process_internal(false);
+ return;
+ }
+
+ if (switch_on_hover) {
+ Window *window = Object::cast_to<Window>(get_viewport());
+ if (window) {
+ mouse_pos_adjusted = window->get_position();
+
+ if (window->is_embedded()) {
+ Window *window_parent = Object::cast_to<Window>(window->get_parent()->get_viewport());
+ while (window_parent) {
+ if (!window_parent->is_embedded()) {
+ mouse_pos_adjusted += window_parent->get_position();
+ break;
+ }
+
+ window_parent = Object::cast_to<Window>(window_parent->get_parent()->get_viewport());
+ }
+ }
+
+ set_process_internal(true);
+ }
+ }
}
void MenuButton::pressed() {
@@ -106,17 +131,13 @@ void MenuButton::_notification(int p_what) {
}
} break;
case NOTIFICATION_INTERNAL_PROCESS: {
- if (switch_on_hover) {
- Window *window = Object::cast_to<Window>(get_viewport());
- if (window) {
- Vector2i mouse_pos = DisplayServer::get_singleton()->mouse_get_position() - window->get_position();
- MenuButton *menu_btn_other = Object::cast_to<MenuButton>(window->gui_find_control(mouse_pos));
- if (menu_btn_other && menu_btn_other != this && menu_btn_other->is_switch_on_hover() && !menu_btn_other->is_disabled() &&
- (get_parent()->is_ancestor_of(menu_btn_other) || menu_btn_other->get_parent()->is_ancestor_of(popup))) {
- popup->hide();
- menu_btn_other->pressed();
- }
- }
+ Vector2i mouse_pos = DisplayServer::get_singleton()->mouse_get_position() - mouse_pos_adjusted;
+ MenuButton *menu_btn_other = Object::cast_to<MenuButton>(get_viewport()->gui_find_control(mouse_pos));
+
+ if (menu_btn_other && menu_btn_other != this && menu_btn_other->is_switch_on_hover() && !menu_btn_other->is_disabled() &&
+ (get_parent()->is_ancestor_of(menu_btn_other) || menu_btn_other->get_parent()->is_ancestor_of(popup))) {
+ popup->hide();
+ menu_btn_other->pressed();
}
} break;
}
diff --git a/scene/gui/menu_button.h b/scene/gui/menu_button.h
index 301769b008..cc2ca117c4 100644
--- a/scene/gui/menu_button.h
+++ b/scene/gui/menu_button.h
@@ -42,6 +42,8 @@ class MenuButton : public Button {
bool disable_shortcuts = false;
PopupMenu *popup;
+ Vector2i mouse_pos_adjusted;
+
Array _get_items() const;
void _set_items(const Array &p_items);
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp
index ee9e0e8ab8..44f7200cd7 100644
--- a/scene/gui/popup_menu.cpp
+++ b/scene/gui/popup_menu.cpp
@@ -74,7 +74,7 @@ Size2 PopupMenu::_get_contents_minimum_size() const {
size.width += items[i].text_buf->get_size().x;
size.height += vseparation;
- if (items[i].accel || (items[i].shortcut.is_valid() && items[i].shortcut->is_valid())) {
+ if (items[i].accel || (items[i].shortcut.is_valid() && items[i].shortcut->has_valid_event())) {
int accel_w = hseparation * 2;
accel_w += items[i].accel_text_buf->get_size().x;
accel_max_w = MAX(accel_w, accel_max_w);
@@ -397,17 +397,17 @@ void PopupMenu::_gui_input(const Ref<InputEvent> &p_event) {
Ref<InputEventMouseMotion> m = p_event;
if (m.is_valid()) {
- if (!item_clickable_area.has_point(m->get_position())) {
- return;
- }
-
- for (List<Rect2>::Element *E = autohide_areas.front(); E; E = E->next()) {
- if (!Rect2(Point2(), get_size()).has_point(m->get_position()) && E->get().has_point(m->get_position())) {
+ for (const Rect2 &E : autohide_areas) {
+ if (!Rect2(Point2(), get_size()).has_point(m->get_position()) && E.has_point(m->get_position())) {
_close_pressed();
return;
}
}
+ if (!item_clickable_area.has_point(m->get_position())) {
+ return;
+ }
+
int over = _get_mouse_over(m->get_position());
int id = (over < 0 || items[over].separator || items[over].disabled) ? -1 : (items[over].id >= 0 ? items[over].id : over);
@@ -635,7 +635,7 @@ void PopupMenu::_draw_items() {
}
// Accelerator / Shortcut
- if (items[i].accel || (items[i].shortcut.is_valid() && items[i].shortcut->is_valid())) {
+ if (items[i].accel || (items[i].shortcut.is_valid() && items[i].shortcut->has_valid_event())) {
if (rtl) {
item_ofs.x = scroll_width + style->get_margin(SIDE_LEFT) + item_end_padding;
} else {
@@ -722,7 +722,7 @@ void PopupMenu::_notification(int p_what) {
case Control::NOTIFICATION_LAYOUT_DIRECTION_CHANGED:
case NOTIFICATION_TRANSLATION_CHANGED: {
for (int i = 0; i < items.size(); i++) {
- items.write[i].xl_text = tr(items[i].text);
+ items.write[i].xl_text = atr(items[i].text);
items.write[i].dirty = true;
_shape_item(i);
}
@@ -747,12 +747,12 @@ void PopupMenu::_notification(int p_what) {
} break;
case NOTIFICATION_INTERNAL_PROCESS: {
//only used when using operating system windows
- if (get_window_id() != DisplayServer::INVALID_WINDOW_ID && autohide_areas.size()) {
+ if (!is_embedded() && autohide_areas.size()) {
Point2 mouse_pos = DisplayServer::get_singleton()->mouse_get_position();
mouse_pos -= get_position();
- for (List<Rect2>::Element *E = autohide_areas.front(); E; E = E->next()) {
- if (!Rect2(Point2(), get_size()).has_point(mouse_pos) && E->get().has_point(mouse_pos)) {
+ for (const Rect2 &E : autohide_areas) {
+ if (!Rect2(Point2(), get_size()).has_point(mouse_pos) && E.has_point(mouse_pos)) {
_close_pressed();
return;
}
@@ -786,7 +786,7 @@ void PopupMenu::_notification(int p_what) {
set_process_internal(false);
} else {
- if (get_window_id() != DisplayServer::INVALID_WINDOW_ID) {
+ if (!is_embedded()) {
set_process_internal(true);
}
@@ -807,7 +807,7 @@ void PopupMenu::_notification(int p_what) {
#define ITEM_SETUP_WITH_ACCEL(p_label, p_id, p_accel) \
item.text = p_label; \
- item.xl_text = tr(p_label); \
+ item.xl_text = atr(p_label); \
item.id = p_id == -1 ? items.size() : p_id; \
item.accel = p_accel;
@@ -887,7 +887,7 @@ void PopupMenu::add_multistate_item(const String &p_label, int p_max_states, int
ERR_FAIL_COND_MSG(p_shortcut.is_null(), "Cannot add item with invalid Shortcut."); \
_ref_shortcut(p_shortcut); \
item.text = p_shortcut->get_name(); \
- item.xl_text = tr(item.text); \
+ item.xl_text = atr(item.text); \
item.id = p_id == -1 ? items.size() : p_id; \
item.shortcut = p_shortcut; \
item.shortcut_is_global = p_global;
@@ -956,7 +956,7 @@ void PopupMenu::add_icon_radio_check_shortcut(const Ref<Texture2D> &p_icon, cons
void PopupMenu::add_submenu_item(const String &p_label, const String &p_submenu, int p_id) {
Item item;
item.text = p_label;
- item.xl_text = tr(p_label);
+ item.xl_text = atr(p_label);
item.id = p_id == -1 ? items.size() : p_id;
item.submenu = p_submenu;
items.push_back(item);
@@ -973,7 +973,7 @@ void PopupMenu::add_submenu_item(const String &p_label, const String &p_submenu,
void PopupMenu::set_item_text(int p_idx, const String &p_text) {
ERR_FAIL_INDEX(p_idx, items.size());
items.write[p_idx].text = p_text;
- items.write[p_idx].xl_text = tr(p_text);
+ items.write[p_idx].xl_text = atr(p_text);
_shape_item(p_idx);
control->update();
@@ -1301,7 +1301,7 @@ bool PopupMenu::activate_item_by_event(const Ref<InputEvent> &p_event, bool p_fo
continue;
}
- if (items[i].shortcut.is_valid() && items[i].shortcut->is_shortcut(p_event) && (items[i].shortcut_is_global || !p_for_global_only)) {
+ if (items[i].shortcut.is_valid() && items[i].shortcut->matches_event(p_event) && (items[i].shortcut_is_global || !p_for_global_only)) {
activate_item(i);
return true;
}
@@ -1402,7 +1402,7 @@ void PopupMenu::add_separator(const String &p_text, int p_id) {
sep.id = p_id;
if (p_text != String()) {
sep.text = p_text;
- sep.xl_text = tr(p_text);
+ sep.xl_text = atr(p_text);
}
items.push_back(sep);
control->update();
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index 99395aae30..3925e0c38e 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -238,9 +238,9 @@ void RichTextLabel::_resize_line(ItemFrame *p_frame, int p_line, const Ref<Font>
}
int idx = 0;
- for (List<Item *>::Element *E = table->subitems.front(); E; E = E->next()) {
- ERR_CONTINUE(E->get()->type != ITEM_FRAME); // Children should all be frames.
- ItemFrame *frame = static_cast<ItemFrame *>(E->get());
+ for (Item *E : table->subitems) {
+ ERR_CONTINUE(E->type != ITEM_FRAME); // Children should all be frames.
+ ItemFrame *frame = static_cast<ItemFrame *>(E);
for (int i = 0; i < frame->lines.size(); i++) {
_resize_line(frame, i, p_base_font, p_base_font_size, 1);
}
@@ -316,9 +316,9 @@ void RichTextLabel::_resize_line(ItemFrame *p_frame, int p_line, const Ref<Font>
Vector2 offset;
float row_height = 0.0;
- for (List<Item *>::Element *E = table->subitems.front(); E; E = E->next()) {
- ERR_CONTINUE(E->get()->type != ITEM_FRAME); // Children should all be frames.
- ItemFrame *frame = static_cast<ItemFrame *>(E->get());
+ for (Item *E : table->subitems) {
+ ERR_CONTINUE(E->type != ITEM_FRAME); // Children should all be frames.
+ ItemFrame *frame = static_cast<ItemFrame *>(E);
int column = idx % col_count;
@@ -472,9 +472,9 @@ void RichTextLabel::_shape_line(ItemFrame *p_frame, int p_line, const Ref<Font>
const int available_width = p_width - hseparation * (col_count - 1);
int idx = 0;
- for (List<Item *>::Element *E = table->subitems.front(); E; E = E->next()) {
- ERR_CONTINUE(E->get()->type != ITEM_FRAME); // Children should all be frames.
- ItemFrame *frame = static_cast<ItemFrame *>(E->get());
+ for (Item *E : table->subitems) {
+ ERR_CONTINUE(E->type != ITEM_FRAME); // Children should all be frames.
+ ItemFrame *frame = static_cast<ItemFrame *>(E);
int column = idx % col_count;
for (int i = 0; i < frame->lines.size(); i++) {
@@ -556,7 +556,7 @@ void RichTextLabel::_shape_line(ItemFrame *p_frame, int p_line, const Ref<Font>
Vector2 offset;
float row_height = 0.0;
- for (List<Item *>::Element *E = table->subitems.front(); E; E = E->next()) {
+ for (const List<Item *>::Element *E = table->subitems.front(); E; E = E->next()) {
ERR_CONTINUE(E->get()->type != ITEM_FRAME); // Children should all be frames.
ItemFrame *frame = static_cast<ItemFrame *>(E->get());
@@ -783,8 +783,8 @@ int RichTextLabel::_draw_line(ItemFrame *p_frame, int p_line, const Vector2 &p_o
int row_count = table->rows.size();
int idx = 0;
- for (List<Item *>::Element *E = table->subitems.front(); E; E = E->next()) {
- ItemFrame *frame = static_cast<ItemFrame *>(E->get());
+ for (Item *E : table->subitems) {
+ ItemFrame *frame = static_cast<ItemFrame *>(E);
int col = idx % col_count;
int row = idx / col_count;
@@ -1203,8 +1203,8 @@ float RichTextLabel::_find_click_in_line(ItemFrame *p_frame, int p_line, const V
int col_count = table->columns.size();
int row_count = table->rows.size();
- for (List<Item *>::Element *E = table->subitems.front(); E; E = E->next()) {
- ItemFrame *frame = static_cast<ItemFrame *>(E->get());
+ for (Item *E : table->subitems) {
+ ItemFrame *frame = static_cast<ItemFrame *>(E);
int col = idx % col_count;
int row = idx / col_count;
@@ -2080,8 +2080,8 @@ bool RichTextLabel::_find_layout_subitem(Item *from, Item *to) {
return true;
}
- for (List<Item *>::Element *E = from->subitems.front(); E; E = E->next()) {
- bool layout = _find_layout_subitem(E->get(), to);
+ for (Item *E : from->subitems) {
+ bool layout = _find_layout_subitem(E, to);
if (layout) {
return true;
@@ -3448,8 +3448,8 @@ Error RichTextLabel::append_bbcode(const String &p_bbcode) {
}
Vector<ItemFX *> fx_items;
- for (List<Item *>::Element *E = main->subitems.front(); E; E = E->next()) {
- Item *subitem = static_cast<Item *>(E->get());
+ for (Item *E : main->subitems) {
+ Item *subitem = static_cast<Item *>(E);
_fetch_item_fx_stack(subitem, fx_items);
if (fx_items.size()) {
@@ -3719,9 +3719,9 @@ String RichTextLabel::_get_line_text(ItemFrame *p_frame, int p_line, Selection p
ItemTable *table = static_cast<ItemTable *>(it);
int idx = 0;
int col_count = table->columns.size();
- for (List<Item *>::Element *E = table->subitems.front(); E; E = E->next()) {
- ERR_CONTINUE(E->get()->type != ITEM_FRAME); // Children should all be frames.
- ItemFrame *frame = static_cast<ItemFrame *>(E->get());
+ for (Item *E : table->subitems) {
+ ERR_CONTINUE(E->type != ITEM_FRAME); // Children should all be frames.
+ ItemFrame *frame = static_cast<ItemFrame *>(E);
int column = idx % col_count;
for (int i = 0; i < frame->lines.size(); i++) {
diff --git a/scene/gui/shortcut.cpp b/scene/gui/shortcut.cpp
index 962c6dcc60..885a51e058 100644
--- a/scene/gui/shortcut.cpp
+++ b/scene/gui/shortcut.cpp
@@ -32,42 +32,39 @@
#include "core/os/keyboard.h"
-void Shortcut::set_shortcut(const Ref<InputEvent> &p_shortcut) {
- shortcut = p_shortcut;
+void Shortcut::set_event(const Ref<InputEvent> &p_event) {
+ event = p_event;
emit_changed();
}
-Ref<InputEvent> Shortcut::get_shortcut() const {
- return shortcut;
+Ref<InputEvent> Shortcut::get_event() const {
+ return event;
}
-bool Shortcut::is_shortcut(const Ref<InputEvent> &p_event) const {
- return shortcut.is_valid() && shortcut->is_match(p_event, true);
+bool Shortcut::matches_event(const Ref<InputEvent> &p_event) const {
+ return event.is_valid() && event->is_match(p_event, true);
}
String Shortcut::get_as_text() const {
- if (shortcut.is_valid()) {
- return shortcut->as_text();
+ if (event.is_valid()) {
+ return event->as_text();
} else {
return "None";
}
}
-bool Shortcut::is_valid() const {
- return shortcut.is_valid();
+bool Shortcut::has_valid_event() const {
+ return event.is_valid();
}
void Shortcut::_bind_methods() {
- ClassDB::bind_method(D_METHOD("set_shortcut", "event"), &Shortcut::set_shortcut);
- ClassDB::bind_method(D_METHOD("get_shortcut"), &Shortcut::get_shortcut);
+ ClassDB::bind_method(D_METHOD("set_event", "event"), &Shortcut::set_event);
+ ClassDB::bind_method(D_METHOD("get_event"), &Shortcut::get_event);
- ClassDB::bind_method(D_METHOD("is_valid"), &Shortcut::is_valid);
+ ClassDB::bind_method(D_METHOD("has_valid_event"), &Shortcut::has_valid_event);
- ClassDB::bind_method(D_METHOD("is_shortcut", "event"), &Shortcut::is_shortcut);
+ ClassDB::bind_method(D_METHOD("matches_event", "event"), &Shortcut::matches_event);
ClassDB::bind_method(D_METHOD("get_as_text"), &Shortcut::get_as_text);
- ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "shortcut", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent"), "set_shortcut", "get_shortcut");
-}
-
-Shortcut::Shortcut() {
+ ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent"), "set_event", "get_event");
}
diff --git a/scene/gui/shortcut.h b/scene/gui/shortcut.h
index ea91f29b5d..249dd1971f 100644
--- a/scene/gui/shortcut.h
+++ b/scene/gui/shortcut.h
@@ -37,20 +37,18 @@
class Shortcut : public Resource {
GDCLASS(Shortcut, Resource);
- Ref<InputEvent> shortcut;
+ Ref<InputEvent> event;
protected:
static void _bind_methods();
public:
- void set_shortcut(const Ref<InputEvent> &p_shortcut);
- Ref<InputEvent> get_shortcut() const;
- bool is_shortcut(const Ref<InputEvent> &p_event) const;
- bool is_valid() const;
+ void set_event(const Ref<InputEvent> &p_shortcut);
+ Ref<InputEvent> get_event() const;
+ bool matches_event(const Ref<InputEvent> &p_event) const;
+ bool has_valid_event() const;
String get_as_text() const;
-
- Shortcut();
};
#endif // SHORTCUT_H
diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp
index 8f84585f9b..cc41d961f6 100644
--- a/scene/gui/tab_container.cpp
+++ b/scene/gui/tab_container.cpp
@@ -550,7 +550,7 @@ void TabContainer::_draw_tab(Ref<StyleBox> &p_tab_style, Color &p_font_color, in
// Draw the tab contents.
Control *control = Object::cast_to<Control>(tabs[p_index]);
- String text = control->has_meta("_tab_name") ? String(tr(String(control->get_meta("_tab_name")))) : String(tr(control->get_name()));
+ String text = control->has_meta("_tab_name") ? String(atr(String(control->get_meta("_tab_name")))) : String(atr(control->get_name()));
int x_content = tab_rect.position.x + p_tab_style->get_margin(SIDE_LEFT);
int top_margin = p_tab_style->get_margin(SIDE_TOP);
@@ -584,7 +584,8 @@ void TabContainer::_refresh_texts() {
int font_size = get_theme_font_size(SNAME("font_size"));
for (int i = 0; i < tabs.size(); i++) {
Control *control = Object::cast_to<Control>(tabs[i]);
- String text = control->has_meta("_tab_name") ? String(tr(String(control->get_meta("_tab_name")))) : String(tr(control->get_name()));
+ String text = control->has_meta("_tab_name") ? String(atr(String(control->get_meta("_tab_name")))) : String(atr(control->get_name()));
+
Ref<TextLine> name;
name.instantiate();
name->set_direction(rtl ? TextServer::DIRECTION_RTL : TextServer::DIRECTION_LTR);
@@ -648,7 +649,7 @@ int TabContainer::_get_tab_width(int p_index) const {
// Get the width of the text displayed on the tab.
Ref<Font> font = get_theme_font(SNAME("font"));
int font_size = get_theme_font_size(SNAME("font_size"));
- String text = control->has_meta("_tab_name") ? String(tr(String(control->get_meta("_tab_name")))) : String(tr(control->get_name()));
+ String text = control->has_meta("_tab_name") ? String(atr(String(control->get_meta("_tab_name")))) : String(atr(control->get_name()));
int width = font->get_string_size(text, font_size).width;
// Add space for a tab icon.
@@ -898,7 +899,7 @@ void TabContainer::drop_data(const Point2 &p_point, const Variant &p_data) {
if (hover_now < 0) {
hover_now = get_tab_count() - 1;
}
- move_child(get_tab_control(tab_from_id), hover_now);
+ move_child(get_tab_control(tab_from_id), get_tab_control(hover_now)->get_index());
set_current_tab(hover_now);
} else if (get_tabs_rearrange_group() != -1) {
// drag and drop between TabContainers
@@ -911,7 +912,7 @@ void TabContainer::drop_data(const Point2 &p_point, const Variant &p_data) {
if (hover_now < 0) {
hover_now = get_tab_count() - 1;
}
- move_child(moving_tabc, hover_now);
+ move_child(moving_tabc, get_tab_control(hover_now)->get_index());
set_current_tab(hover_now);
emit_signal(SNAME("tab_changed"), hover_now);
}
diff --git a/scene/gui/tabs.cpp b/scene/gui/tabs.cpp
index 9e8fe27ffb..103860ad78 100644
--- a/scene/gui/tabs.cpp
+++ b/scene/gui/tabs.cpp
@@ -239,7 +239,7 @@ void Tabs::_shape(int p_tab) {
Ref<Font> font = get_theme_font(SNAME("font"));
int font_size = get_theme_font_size(SNAME("font_size"));
- tabs.write[p_tab].xl_text = tr(tabs[p_tab].text);
+ tabs.write[p_tab].xl_text = atr(tabs[p_tab].text);
tabs.write[p_tab].text_buf->clear();
if (tabs[p_tab].text_direction == Control::TEXT_DIRECTION_INHERITED) {
tabs.write[p_tab].text_buf->set_direction(is_layout_rtl() ? TextServer::DIRECTION_RTL : TextServer::DIRECTION_LTR);
@@ -529,7 +529,7 @@ bool Tabs::get_offset_buttons_visible() const {
void Tabs::set_tab_title(int p_tab, const String &p_title) {
ERR_FAIL_INDEX(p_tab, tabs.size());
tabs.write[p_tab].text = p_title;
- tabs.write[p_tab].xl_text = tr(p_title);
+ tabs.write[p_tab].xl_text = atr(p_title);
_shape(p_tab);
update();
minimum_size_changed();
@@ -742,7 +742,7 @@ void Tabs::_on_mouse_exited() {
void Tabs::add_tab(const String &p_str, const Ref<Texture2D> &p_icon) {
Tab t;
t.text = p_str;
- t.xl_text = tr(p_str);
+ t.xl_text = atr(p_str);
t.text_buf.instantiate();
t.text_buf->set_direction(is_layout_rtl() ? TextServer::DIRECTION_RTL : TextServer::DIRECTION_LTR);
t.text_buf->add_string(t.xl_text, get_theme_font(SNAME("font")), get_theme_font_size(SNAME("font_size")), Dictionary(), TranslationServer::get_singleton()->get_tool_locale());
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index be3edccc99..1b3935dd25 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -63,45 +63,6 @@ static bool _is_char(char32_t c) {
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_';
}
-static bool _is_pair_right_symbol(char32_t c) {
- return c == '"' ||
- c == '\'' ||
- c == ')' ||
- c == ']' ||
- c == '}';
-}
-
-static bool _is_pair_left_symbol(char32_t c) {
- return c == '"' ||
- c == '\'' ||
- c == '(' ||
- c == '[' ||
- c == '{';
-}
-
-static bool _is_pair_symbol(char32_t c) {
- return _is_pair_left_symbol(c) || _is_pair_right_symbol(c);
-}
-
-static char32_t _get_right_pair_symbol(char32_t c) {
- if (c == '"') {
- return '"';
- }
- if (c == '\'') {
- return '\'';
- }
- if (c == '(') {
- return ')';
- }
- if (c == '[') {
- return ']';
- }
- if (c == '{') {
- return '}';
- }
- return 0;
-}
-
///////////////////////////////////////////////////////////////////////////////
void TextEdit::Text::set_font(const Ref<Font> &p_font) {
@@ -633,29 +594,6 @@ void TextEdit::_notification(int p_what) {
RenderingServer::get_singleton()->canvas_item_add_rect(ci, Rect2(Point2i(), get_size()), cache.background_color);
}
- if (line_length_guidelines) {
- const int hard_x = xmargin_beg + (int)cache.font->get_char_size('0', 0, cache.font_size).width * line_length_guideline_hard_col - cursor.x_ofs;
- if (hard_x > xmargin_beg && hard_x < xmargin_end) {
- if (rtl) {
- RenderingServer::get_singleton()->canvas_item_add_line(ci, Point2(size.width - hard_x, 0), Point2(size.width - hard_x, size.height), cache.line_length_guideline_color);
- } else {
- RenderingServer::get_singleton()->canvas_item_add_line(ci, Point2(hard_x, 0), Point2(hard_x, size.height), cache.line_length_guideline_color);
- }
- }
-
- // Draw a "Soft" line length guideline, less visible than the hard line length guideline.
- // It's usually set to a lower column compared to the hard line length guideline.
- // Only drawn if its column differs from the hard line length guideline.
- const int soft_x = xmargin_beg + (int)cache.font->get_char_size('0', 0, cache.font_size).width * line_length_guideline_soft_col - cursor.x_ofs;
- if (hard_x != soft_x && soft_x > xmargin_beg && soft_x < xmargin_end) {
- if (rtl) {
- RenderingServer::get_singleton()->canvas_item_add_line(ci, Point2(size.width - soft_x, 0), Point2(size.width - soft_x, size.height), cache.line_length_guideline_color * Color(1, 1, 1, 0.5));
- } else {
- RenderingServer::get_singleton()->canvas_item_add_line(ci, Point2(soft_x, 0), Point2(soft_x, size.height), cache.line_length_guideline_color * Color(1, 1, 1, 0.5));
- }
- }
- }
-
int brace_open_match_line = -1;
int brace_open_match_column = -1;
bool brace_open_matching = false;
@@ -665,7 +603,7 @@ void TextEdit::_notification(int p_what) {
bool brace_close_matching = false;
bool brace_close_mismatch = false;
- if (brace_matching_enabled && cursor.line >= 0 && cursor.line < text.size() && cursor.column >= 0) {
+ if (highlight_matching_braces_enabled && cursor.line >= 0 && cursor.line < text.size() && cursor.column >= 0) {
if (cursor.column < text[cursor.line].length()) {
// Check for open.
char32_t c = text[cursor.line][cursor.column];
@@ -1239,11 +1177,11 @@ void TextEdit::_notification(int p_what) {
}
}
- if (!clipped && select_identifiers_enabled && highlighted_word.length() != 0) { // Highlight word
- if (_is_char(highlighted_word[0]) || highlighted_word[0] == '.') {
- int highlighted_word_col = _get_column_pos_of_word(highlighted_word, str, SEARCH_MATCH_CASE | SEARCH_WHOLE_WORDS, 0);
+ if (!clipped && lookup_symbol_word.length() != 0) { // Highlight word
+ if (_is_char(lookup_symbol_word[0]) || lookup_symbol_word[0] == '.') {
+ int highlighted_word_col = _get_column_pos_of_word(lookup_symbol_word, str, SEARCH_MATCH_CASE | SEARCH_WHOLE_WORDS, 0);
while (highlighted_word_col != -1) {
- Vector<Vector2> sel = TS->shaped_text_get_selection(rid, highlighted_word_col + start, highlighted_word_col + highlighted_word.length() + start);
+ Vector<Vector2> sel = TS->shaped_text_get_selection(rid, highlighted_word_col + start, highlighted_word_col + lookup_symbol_word.length() + start);
for (int j = 0; j < sel.size(); j++) {
Rect2 rect = Rect2(sel[j].x + char_margin + ofs_x, ofs_y, sel[j].y - sel[j].x, row_height);
if (rect.position.x + rect.size.x <= xmargin_beg || rect.position.x > xmargin_end) {
@@ -1260,7 +1198,7 @@ void TextEdit::_notification(int p_what) {
draw_rect(rect, cache.font_selected_color);
}
- highlighted_word_col = _get_column_pos_of_word(highlighted_word, str, SEARCH_MATCH_CASE | SEARCH_WHOLE_WORDS, highlighted_word_col + 1);
+ highlighted_word_col = _get_column_pos_of_word(lookup_symbol_word, str, SEARCH_MATCH_CASE | SEARCH_WHOLE_WORDS, highlighted_word_col + 1);
}
}
}
@@ -1308,7 +1246,7 @@ void TextEdit::_notification(int p_what) {
int char_pos = char_ofs + char_margin + ofs_x;
if (char_pos >= xmargin_beg) {
- if (brace_matching_enabled) {
+ if (highlight_matching_braces_enabled) {
if ((brace_open_match_line == line && brace_open_match_column == glyphs[j].start) ||
(cursor.column == glyphs[j].start && cursor.line == line && cursor_wrap_index == line_wrap_index && (brace_open_matching || brace_open_mismatch))) {
if (brace_open_mismatch) {
@@ -1567,130 +1505,6 @@ void TextEdit::_notification(int p_what) {
}
}
-void TextEdit::_consume_pair_symbol(char32_t ch) {
- int cursor_position_to_move = cursor_get_column() + 1;
-
- char32_t ch_single[2] = { ch, 0 };
- char32_t ch_single_pair[2] = { _get_right_pair_symbol(ch), 0 };
- char32_t ch_pair[3] = { ch, _get_right_pair_symbol(ch), 0 };
-
- if (is_selection_active()) {
- int new_column, new_line;
-
- begin_complex_operation();
- _insert_text(get_selection_from_line(), get_selection_from_column(),
- ch_single,
- &new_line, &new_column);
-
- int to_col_offset = 0;
- if (get_selection_from_line() == get_selection_to_line()) {
- to_col_offset = 1;
- }
-
- _insert_text(get_selection_to_line(),
- get_selection_to_column() + to_col_offset,
- ch_single_pair,
- &new_line, &new_column);
- end_complex_operation();
-
- cursor_set_line(get_selection_to_line());
- cursor_set_column(get_selection_to_column() + to_col_offset);
-
- deselect();
- update();
- return;
- }
-
- if ((ch == '\'' || ch == '"') &&
- cursor_get_column() > 0 && _is_text_char(text[cursor.line][cursor_get_column() - 1]) && !_is_pair_right_symbol(text[cursor.line][cursor_get_column()])) {
- insert_text_at_cursor(ch_single);
- cursor_set_column(cursor_position_to_move);
- return;
- }
-
- if (cursor_get_column() < text[cursor.line].length()) {
- if (_is_text_char(text[cursor.line][cursor_get_column()])) {
- insert_text_at_cursor(ch_single);
- cursor_set_column(cursor_position_to_move);
- return;
- }
- if (_is_pair_right_symbol(ch) &&
- text[cursor.line][cursor_get_column()] == ch) {
- cursor_set_column(cursor_position_to_move);
- return;
- }
- }
-
- String line = text[cursor.line];
-
- bool in_single_quote = false;
- bool in_double_quote = false;
- bool found_comment = false;
-
- int c = 0;
- while (c < line.length()) {
- if (line[c] == '\\') {
- c++; // Skip quoted anything.
-
- if (cursor.column == c) {
- break;
- }
- } else if (!in_single_quote && !in_double_quote && line[c] == '#') {
- found_comment = true;
- break;
- } else {
- if (line[c] == '\'' && !in_double_quote) {
- in_single_quote = !in_single_quote;
- } else if (line[c] == '"' && !in_single_quote) {
- in_double_quote = !in_double_quote;
- }
- }
-
- c++;
-
- if (cursor.column == c) {
- break;
- }
- }
-
- // Do not need to duplicate quotes while in comments
- if (found_comment) {
- insert_text_at_cursor(ch_single);
- cursor_set_column(cursor_position_to_move);
-
- return;
- }
-
- // Disallow inserting duplicated quotes while already in string
- if ((in_single_quote || in_double_quote) && (ch == '"' || ch == '\'')) {
- insert_text_at_cursor(ch_single);
- cursor_set_column(cursor_position_to_move);
-
- return;
- }
-
- insert_text_at_cursor(ch_pair);
- cursor_set_column(cursor_position_to_move);
-}
-
-void TextEdit::_consume_backspace_for_pair_symbol(int prev_line, int prev_column) {
- bool remove_right_symbol = false;
-
- if (cursor.column < text[cursor.line].length() && cursor.column > 0) {
- char32_t left_char = text[cursor.line][cursor.column - 1];
- char32_t right_char = text[cursor.line][cursor.column];
-
- if (right_char == _get_right_pair_symbol(left_char)) {
- remove_right_symbol = true;
- }
- }
- if (remove_right_symbol) {
- _remove_text(prev_line, prev_column, cursor.line, cursor.column + 1);
- } else {
- _remove_text(prev_line, prev_column, cursor.line, cursor.column);
- }
-}
-
void TextEdit::backspace() {
ScriptInstance *si = get_script_instance();
if (si && si->has_method("_backspace")) {
@@ -1719,14 +1533,7 @@ void TextEdit::backspace() {
if (is_line_hidden(cursor.line)) {
set_line_as_hidden(prev_line, true);
}
-
- if (auto_brace_completion_enabled &&
- cursor.column > 0 &&
- _is_pair_left_symbol(text[cursor.line][cursor.column - 1])) {
- _consume_backspace_for_pair_symbol(prev_line, prev_column);
- } else {
- _remove_text(prev_line, prev_column, cursor.line, cursor.column);
- }
+ _remove_text(prev_line, prev_column, cursor.line, cursor.column);
cursor_set_line(prev_line, false, true);
cursor_set_column(prev_column);
@@ -2101,6 +1908,7 @@ void TextEdit::delete_selection() {
}
selection.active = false;
+ selection.selecting_mode = SelectionMode::SELECTION_MODE_NONE;
_remove_text(selection.from_line, selection.from_column, selection.to_line, selection.to_column);
cursor_set_line(selection.from_line, false, false);
cursor_set_column(selection.from_column);
@@ -2137,13 +1945,21 @@ void TextEdit::_move_cursor_document_end(bool p_select) {
}
}
-void TextEdit::_handle_unicode_character(uint32_t unicode, bool p_had_selection) {
- if (p_had_selection) {
+void TextEdit::handle_unicode_input(uint32_t p_unicode) {
+ ScriptInstance *si = get_script_instance();
+ if (si && si->has_method("_handle_unicode_input")) {
+ si->call("_handle_unicode_input", p_unicode);
+ return;
+ }
+
+ bool had_selection = selection.active;
+ if (had_selection) {
+ begin_complex_operation();
delete_selection();
}
// Remove the old character if in insert mode and no selection.
- if (insert_mode && !p_had_selection) {
+ if (insert_mode && !had_selection) {
begin_complex_operation();
// Make sure we don't try and remove empty space.
@@ -2152,15 +1968,10 @@ void TextEdit::_handle_unicode_character(uint32_t unicode, bool p_had_selection)
}
}
- const char32_t chr[2] = { (char32_t)unicode, 0 };
+ const char32_t chr[2] = { (char32_t)p_unicode, 0 };
+ insert_text_at_cursor(chr);
- if (auto_brace_completion_enabled && _is_pair_symbol(chr[0])) {
- _consume_pair_symbol(chr[0]);
- } else {
- _insert_text_at_cursor(chr);
- }
-
- if ((insert_mode && !p_had_selection) || (selection.active != p_had_selection)) {
+ if ((insert_mode && !had_selection) || (had_selection)) {
end_complex_operation();
}
}
@@ -2301,6 +2112,10 @@ void TextEdit::_get_minimap_mouse_row(const Point2i &p_mouse, int &r_row) const
r_row = row;
}
+bool TextEdit::is_dragging_cursor() const {
+ return dragging_selection || dragging_minimap;
+}
+
void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
ERR_FAIL_COND(p_gui_input.is_null());
@@ -2478,14 +2293,6 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
}
} else {
if (mb->get_button_index() == MOUSE_BUTTON_LEFT) {
- if (mb->is_command_pressed() && highlighted_word != String()) {
- int row, col;
- _get_mouse_pos(Point2i(mpos.x, mpos.y), row, col);
-
- emit_signal(SNAME("symbol_lookup"), highlighted_word, row, col);
- return;
- }
-
dragging_minimap = false;
dragging_selection = false;
can_drag_minimap = false;
@@ -2520,18 +2327,6 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
if (is_layout_rtl()) {
mpos.x = get_size().x - mpos.x;
}
- if (select_identifiers_enabled) {
- if (!dragging_minimap && !dragging_selection && mm->is_command_pressed() && mm->get_button_mask() == 0) {
- String new_word = get_word_at_pos(mpos);
- if (new_word != highlighted_word) {
- emit_signal(SNAME("symbol_validate"), new_word);
- }
- } else {
- if (highlighted_word != String()) {
- set_highlighted_word(String());
- }
- }
- }
if (mm->get_button_mask() & MOUSE_BUTTON_MASK_LEFT && get_viewport()->gui_get_drag_data() == Variant()) { // Ignore if dragging.
_reset_caret_blink_timer();
@@ -2566,23 +2361,6 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
Ref<InputEventKey> k = p_gui_input;
if (k.is_valid()) {
- // Ctrl + Hover symbols
-#ifdef OSX_ENABLED
- if (k->get_keycode() == KEY_META) {
-#else
- if (k->get_keycode() == KEY_CTRL) {
-#endif
- if (select_identifiers_enabled) {
- if (k->is_pressed() && !dragging_minimap && !dragging_selection) {
- Point2 mp = _get_local_mouse_pos();
- emit_signal(SNAME("symbol_validate"), get_word_at_pos(mp));
- } else {
- set_highlighted_word(String());
- }
- }
- return;
- }
-
if (!k->is_pressed()) {
return;
}
@@ -2598,9 +2376,6 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
// * No Modifiers are pressed (except shift)
bool allow_unicode_handling = !(k->is_command_pressed() || k->is_ctrl_pressed() || k->is_alt_pressed() || k->is_meta_pressed());
- // Save here for insert mode, just in case it is cleared in the following section.
- bool had_selection = selection.active;
-
selection.selecting_text = false;
// Check and handle all built in shortcuts.
@@ -2806,9 +2581,9 @@ void TextEdit::_gui_input(const Ref<InputEvent> &p_gui_input) {
return;
}
+ // Handle Unicode (if no modifiers active).
if (allow_unicode_handling && !readonly && k->get_unicode() >= 32) {
- // Handle Unicode (if no modifiers active).
- _handle_unicode_character(k->get_unicode(), had_selection);
+ handle_unicode_input(k->get_unicode());
accept_event();
return;
}
@@ -3151,16 +2926,6 @@ void TextEdit::_remove_text(int p_from_line, int p_from_column, int p_to_line, i
current_op = op;
}
-void TextEdit::_insert_text_at_cursor(const String &p_text) {
- int new_column, new_line;
- _insert_text(cursor.line, cursor.column, p_text, &new_line, &new_column);
- _update_scrollbars();
- cursor_set_line(new_line, false);
- cursor_set_column(new_column);
-
- update();
-}
-
int TextEdit::get_char_count() {
int totalsize = 0;
@@ -3704,23 +3469,19 @@ int TextEdit::get_column_x_offset_for_line(int p_char, int p_line) const {
void TextEdit::insert_text_at_cursor(const String &p_text) {
if (selection.active) {
- cursor_set_line(selection.from_line, false);
- cursor_set_column(selection.from_column);
-
- _remove_text(selection.from_line, selection.from_column, selection.to_line, selection.to_column);
- selection.active = false;
- selection.selecting_mode = SelectionMode::SELECTION_MODE_NONE;
+ delete_selection();
}
- _insert_text_at_cursor(p_text);
+ int new_column, new_line;
+ _insert_text(cursor.line, cursor.column, p_text, &new_line, &new_column);
+ _update_scrollbars();
+
+ cursor_set_line(new_line, false);
+ cursor_set_column(new_column);
update();
}
Control::CursorShape TextEdit::get_cursor_shape(const Point2 &p_pos) const {
- if (highlighted_word != String()) {
- return CURSOR_POINTING_HAND;
- }
-
int row, col;
_get_mouse_pos(p_pos, row, col);
@@ -3753,7 +3514,7 @@ void TextEdit::set_text(String p_text) {
setting_text = true;
if (!undo_enabled) {
_clear();
- _insert_text_at_cursor(p_text);
+ insert_text_at_cursor(p_text);
}
if (undo_enabled) {
@@ -3762,7 +3523,7 @@ void TextEdit::set_text(String p_text) {
begin_complex_operation();
_remove_text(0, 0, MAX(0, get_line_count() - 1), MAX(get_line(MAX(get_line_count() - 1, 0)).size() - 1, 0));
- _insert_text_at_cursor(p_text);
+ insert_text_at_cursor(p_text);
end_complex_operation();
selection.active = false;
}
@@ -3903,30 +3664,6 @@ bool TextEdit::get_draw_control_chars() const {
return draw_control_chars;
}
-String TextEdit::get_text_for_lookup_completion() {
- int row, col;
- Point2i mp = _get_local_mouse_pos();
- _get_mouse_pos(mp, row, col);
-
- String longthing;
- int len = text.size();
- for (int i = 0; i < len; i++) {
- if (i == row) {
- longthing += text[i].substr(0, col);
- longthing += String::chr(0xFFFF); // Not unicode, represents the cursor.
- longthing += text[i].substr(col, text[i].size());
- } else {
- longthing += text[i];
- }
-
- if (i != len - 1) {
- longthing += "\n";
- }
- }
-
- return longthing;
-}
-
String TextEdit::get_line(int line) const {
if (line < 0 || line >= text.size()) {
return "";
@@ -4015,9 +3752,8 @@ void TextEdit::_update_caches() {
cache.font_readonly_color = get_theme_color(SNAME("font_readonly_color"));
cache.selection_color = get_theme_color(SNAME("selection_color"));
cache.current_line_color = get_theme_color(SNAME("current_line_color"));
- cache.line_length_guideline_color = get_theme_color(SNAME("line_length_guideline_color"));
cache.code_folding_color = get_theme_color(SNAME("code_folding_color"), SNAME("CodeEdit"));
- cache.brace_mismatch_color = get_theme_color(SNAME("brace_mismatch_color"));
+ cache.brace_mismatch_color = get_theme_color(SNAME("brace_mismatch_color"), SNAME("CodeEdit"));
cache.word_highlighted_color = get_theme_color(SNAME("word_highlighted_color"));
cache.search_result_color = get_theme_color(SNAME("search_result_color"));
cache.search_result_border_color = get_theme_color(SNAME("search_result_border_color"));
@@ -4364,7 +4100,7 @@ void TextEdit::paste() {
clipboard += ins;
}
- _insert_text_at_cursor(clipboard);
+ insert_text_at_cursor(clipboard);
end_complex_operation();
update();
@@ -5324,21 +5060,6 @@ void TextEdit::insert_at(const String &p_text, int at) {
}
}
-void TextEdit::set_show_line_length_guidelines(bool p_show) {
- line_length_guidelines = p_show;
- update();
-}
-
-void TextEdit::set_line_length_guideline_soft_column(int p_column) {
- line_length_guideline_soft_col = p_column;
- update();
-}
-
-void TextEdit::set_line_length_guideline_hard_column(int p_column) {
- line_length_guideline_hard_col = p_column;
- update();
-}
-
void TextEdit::set_draw_minimap(bool p_draw) {
if (draw_minimap != p_draw) {
draw_minimap = p_draw;
@@ -5515,19 +5236,11 @@ void TextEdit::menu_option(int p_option) {
}
}
-void TextEdit::set_highlighted_word(const String &new_word) {
- highlighted_word = new_word;
+void TextEdit::_set_symbol_lookup_word(const String &p_symbol) {
+ lookup_symbol_word = p_symbol;
update();
}
-void TextEdit::set_select_identifiers_on_hover(bool p_enable) {
- select_identifiers_enabled = p_enable;
-}
-
-bool TextEdit::is_selecting_identifiers_on_hover_enabled() const {
- return select_identifiers_enabled;
-}
-
void TextEdit::set_context_menu_enabled(bool p_enable) {
context_menu_enabled = p_enable;
}
@@ -5719,6 +5432,7 @@ void TextEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("delete_selection"), &TextEdit::delete_selection);
ClassDB::bind_method(D_METHOD("backspace"), &TextEdit::backspace);
BIND_VMETHOD(MethodInfo("_backspace"));
+ BIND_VMETHOD(MethodInfo("_handle_unicode_input", PropertyInfo(Variant::INT, "unicode")))
ClassDB::bind_method(D_METHOD("cut"), &TextEdit::cut);
ClassDB::bind_method(D_METHOD("copy"), &TextEdit::copy);
@@ -5727,6 +5441,7 @@ void TextEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("select", "from_line", "from_column", "to_line", "to_column"), &TextEdit::select);
ClassDB::bind_method(D_METHOD("select_all"), &TextEdit::select_all);
ClassDB::bind_method(D_METHOD("deselect"), &TextEdit::deselect);
+ ClassDB::bind_method(D_METHOD("is_dragging_cursor"), &TextEdit::is_dragging_cursor);
ClassDB::bind_method(D_METHOD("is_selection_active"), &TextEdit::is_selection_active);
ClassDB::bind_method(D_METHOD("get_selection_from_line"), &TextEdit::get_selection_from_line);
@@ -5777,6 +5492,7 @@ void TextEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_gutter_overwritable", "gutter"), &TextEdit::is_gutter_overwritable);
ClassDB::bind_method(D_METHOD("merge_gutters", "from_line", "to_line"), &TextEdit::merge_gutters);
ClassDB::bind_method(D_METHOD("set_gutter_custom_draw", "column", "object", "callback"), &TextEdit::set_gutter_custom_draw);
+ ClassDB::bind_method(D_METHOD("get_total_gutter_width"), &TextEdit::get_total_gutter_width);
// Line gutters.
ClassDB::bind_method(D_METHOD("set_line_gutter_metadata", "line", "gutter", "metadata"), &TextEdit::set_line_gutter_metadata);
@@ -5858,8 +5574,6 @@ void TextEdit::_bind_methods() {
ADD_SIGNAL(MethodInfo("gutter_clicked", PropertyInfo(Variant::INT, "line"), PropertyInfo(Variant::INT, "gutter")));
ADD_SIGNAL(MethodInfo("gutter_added"));
ADD_SIGNAL(MethodInfo("gutter_removed"));
- ADD_SIGNAL(MethodInfo("symbol_lookup", PropertyInfo(Variant::STRING, "symbol"), PropertyInfo(Variant::INT, "row"), PropertyInfo(Variant::INT, "column")));
- ADD_SIGNAL(MethodInfo("symbol_validate", PropertyInfo(Variant::STRING, "symbol")));
BIND_ENUM_CONSTANT(MENU_CUT);
BIND_ENUM_CONSTANT(MENU_COPY);
diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h
index 62d576b48a..9e6dedb267 100644
--- a/scene/gui/text_edit.h
+++ b/scene/gui/text_edit.h
@@ -280,9 +280,6 @@ private:
bool cursor_changed_dirty = false;
bool text_changed_dirty = false;
bool undo_enabled = true;
- bool line_length_guidelines = false;
- int line_length_guideline_soft_col = 80;
- int line_length_guideline_hard_col = 100;
bool hiding_enabled = false;
bool draw_minimap = false;
int minimap_width = 80;
@@ -291,7 +288,6 @@ private:
bool highlight_all_occurrences = false;
bool scroll_past_end_of_file_enabled = false;
- bool brace_matching_enabled = false;
bool highlight_current_line = false;
String cut_copy_line;
@@ -309,7 +305,7 @@ private:
float target_v_scroll = 0.0;
float v_scroll_speed = 80.0;
- String highlighted_word;
+ String lookup_symbol_word;
uint64_t last_dblclk = 0;
@@ -386,7 +382,6 @@ private:
Size2 get_minimum_size() const override;
int _get_control_height() const;
- Point2 _get_local_mouse_pos() const;
int _get_menu_action_accelerator(const String &p_action);
void _reset_caret_blink_timer();
@@ -431,10 +426,9 @@ private:
void _delete(bool p_word = false, bool p_all_to_right = false);
void _move_cursor_document_start(bool p_select);
void _move_cursor_document_end(bool p_select);
- void _handle_unicode_character(uint32_t unicode, bool p_had_selection);
protected:
- bool auto_brace_completion_enabled = false;
+ bool highlight_matching_braces_enabled = false;
struct Cache {
Ref<Texture2D> tab_icon;
@@ -455,7 +449,6 @@ protected:
Color selection_color;
Color code_folding_color;
Color current_line_color;
- Color line_length_guideline_color;
Color brace_mismatch_color;
Color word_highlighted_color;
Color search_result_color;
@@ -470,19 +463,17 @@ protected:
void _insert_text(int p_line, int p_char, const String &p_text, int *r_end_line = nullptr, int *r_end_char = nullptr);
void _remove_text(int p_from_line, int p_from_column, int p_to_line, int p_to_column);
- void _insert_text_at_cursor(const String &p_text);
virtual void _gui_input(const Ref<InputEvent> &p_gui_input);
void _notification(int p_what);
- void _consume_pair_symbol(char32_t ch);
- void _consume_backspace_for_pair_symbol(int prev_line, int prev_column);
-
static void _bind_methods();
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
void _get_property_list(List<PropertyInfo> *p_list) const;
+ void _set_symbol_lookup_word(const String &p_symbol);
+
public:
/* Syntax Highlighting. */
Ref<SyntaxHighlighter> get_syntax_highlighter();
@@ -577,8 +568,10 @@ public:
virtual CursorShape get_cursor_shape(const Point2 &p_pos = Point2i()) const override;
+ Point2 _get_local_mouse_pos() const;
void _get_mouse_pos(const Point2i &p_mouse, int &r_row, int &r_col) const;
void _get_minimap_mouse_row(const Point2i &p_mouse, int &r_row) const;
+ bool is_dragging_cursor() const;
//void delete_char();
//void delete_line();
@@ -607,7 +600,6 @@ public:
void set_structured_text_bidi_override_options(Array p_args);
Array get_structured_text_bidi_override_options() const;
- void set_highlighted_word(const String &new_word);
void set_text(String p_text);
void insert_text_at_cursor(const String &p_text);
void insert_at(const String &p_text, int at);
@@ -635,13 +627,6 @@ public:
scroll_past_end_of_file_enabled = p_enabled;
update();
}
- inline void set_auto_brace_completion(bool p_enabled) {
- auto_brace_completion_enabled = p_enabled;
- }
- inline void set_brace_matching(bool p_enabled) {
- brace_matching_enabled = p_enabled;
- update();
- }
void center_viewport_to_cursor();
@@ -686,6 +671,7 @@ public:
void delete_selection();
+ virtual void handle_unicode_input(uint32_t p_unicode);
virtual void backspace();
void cut();
void copy();
@@ -751,10 +737,6 @@ public:
void set_highlight_current_line(bool p_enabled);
bool is_highlight_current_line_enabled() const;
- void set_show_line_length_guidelines(bool p_show);
- void set_line_length_guideline_soft_column(int p_column);
- void set_line_length_guideline_hard_column(int p_column);
-
void set_draw_minimap(bool p_draw);
bool is_drawing_minimap() const;
@@ -766,9 +748,6 @@ public:
void set_tooltip_request_func(Object *p_obj, const StringName &p_function, const Variant &p_udata);
- void set_select_identifiers_on_hover(bool p_enable);
- bool is_selecting_identifiers_on_hover_enabled() const;
-
void set_context_menu_enabled(bool p_enable);
bool is_context_menu_enabled();
@@ -784,8 +763,6 @@ public:
bool is_menu_visible() const;
PopupMenu *get_menu() const;
- String get_text_for_lookup_completion();
-
virtual bool is_text_field() const override;
TextEdit();
~TextEdit();
diff --git a/scene/gui/tree.h b/scene/gui/tree.h
index 10e6642303..be711b4c4f 100644
--- a/scene/gui/tree.h
+++ b/scene/gui/tree.h
@@ -462,8 +462,6 @@ private:
void _gui_input(Ref<InputEvent> p_event);
void _notification(int p_what);
- Size2 get_minimum_size() const override;
-
void item_edited(int p_column, TreeItem *p_item, bool p_lmb = true);
void item_changed(int p_column, TreeItem *p_item);
void item_selected(int p_column, TreeItem *p_item);
@@ -721,6 +719,8 @@ public:
void set_allow_reselect(bool p_allow);
bool get_allow_reselect() const;
+ Size2 get_minimum_size() const override;
+
Tree();
~Tree();
};
diff --git a/scene/main/canvas_item.cpp b/scene/main/canvas_item.cpp
index 5a12480577..0a76351885 100644
--- a/scene/main/canvas_item.cpp
+++ b/scene/main/canvas_item.cpp
@@ -956,8 +956,7 @@ void CanvasItem::_notify_transform(CanvasItem *p_node) {
}
}
- for (List<CanvasItem *>::Element *E = p_node->children_items.front(); E; E = E->next()) {
- CanvasItem *ci = E->get();
+ for (CanvasItem *ci : p_node->children_items) {
if (ci->top_level) {
continue;
}
@@ -1334,9 +1333,9 @@ void CanvasItem::_update_texture_filter_changed(bool p_propagate) {
update();
if (p_propagate) {
- for (List<CanvasItem *>::Element *E = children_items.front(); E; E = E->next()) {
- if (!E->get()->top_level && E->get()->texture_filter == TEXTURE_FILTER_PARENT_NODE) {
- E->get()->_update_texture_filter_changed(true);
+ for (CanvasItem *E : children_items) {
+ if (!E->top_level && E->texture_filter == TEXTURE_FILTER_PARENT_NODE) {
+ E->_update_texture_filter_changed(true);
}
}
}
@@ -1374,9 +1373,9 @@ void CanvasItem::_update_texture_repeat_changed(bool p_propagate) {
RS::get_singleton()->canvas_item_set_default_texture_repeat(get_canvas_item(), texture_repeat_cache);
update();
if (p_propagate) {
- for (List<CanvasItem *>::Element *E = children_items.front(); E; E = E->next()) {
- if (!E->get()->top_level && E->get()->texture_repeat == TEXTURE_REPEAT_PARENT_NODE) {
- E->get()->_update_texture_repeat_changed(true);
+ for (CanvasItem *E : children_items) {
+ if (!E->top_level && E->texture_repeat == TEXTURE_REPEAT_PARENT_NODE) {
+ E->_update_texture_repeat_changed(true);
}
}
}
diff --git a/scene/main/http_request.cpp b/scene/main/http_request.cpp
index f649380afa..2c6cefa771 100644
--- a/scene/main/http_request.cpp
+++ b/scene/main/http_request.cpp
@@ -220,8 +220,8 @@ bool HTTPRequest::_handle_response(bool *ret_value) {
client->get_response_headers(&rheaders);
response_headers.resize(0);
downloaded.set(0);
- for (List<String>::Element *E = rheaders.front(); E; E = E->next()) {
- response_headers.push_back(E->get());
+ for (const String &E : rheaders) {
+ response_headers.push_back(E);
}
if (response_code == 301 || response_code == 302) {
@@ -235,9 +235,9 @@ bool HTTPRequest::_handle_response(bool *ret_value) {
String new_request;
- for (List<String>::Element *E = rheaders.front(); E; E = E->next()) {
- if (E->get().findn("Location: ") != -1) {
- new_request = E->get().substr(9, E->get().length()).strip_edges();
+ for (const String &E : rheaders) {
+ if (E.findn("Location: ") != -1) {
+ new_request = E.substr(9, E.length()).strip_edges();
}
}
diff --git a/scene/main/instance_placeholder.cpp b/scene/main/instance_placeholder.cpp
index 89dac5f5a8..b5ba1899ec 100644
--- a/scene/main/instance_placeholder.cpp
+++ b/scene/main/instance_placeholder.cpp
@@ -42,9 +42,9 @@ bool InstancePlaceholder::_set(const StringName &p_name, const Variant &p_value)
}
bool InstancePlaceholder::_get(const StringName &p_name, Variant &r_ret) const {
- for (const List<PropSet>::Element *E = stored_values.front(); E; E = E->next()) {
- if (E->get().name == p_name) {
- r_ret = E->get().value;
+ for (const PropSet &E : stored_values) {
+ if (E.name == p_name) {
+ r_ret = E.value;
return true;
}
}
@@ -52,10 +52,10 @@ bool InstancePlaceholder::_get(const StringName &p_name, Variant &r_ret) const {
}
void InstancePlaceholder::_get_property_list(List<PropertyInfo> *p_list) const {
- for (const List<PropSet>::Element *E = stored_values.front(); E; E = E->next()) {
+ for (const PropSet &E : stored_values) {
PropertyInfo pi;
- pi.name = E->get().name;
- pi.type = E->get().value.get_type();
+ pi.name = E.name;
+ pi.type = E.value.get_type();
pi.usage = PROPERTY_USAGE_STORAGE;
p_list->push_back(pi);
@@ -95,8 +95,8 @@ Node *InstancePlaceholder::create_instance(bool p_replace, const Ref<PackedScene
scene->set_name(get_name());
int pos = get_index();
- for (List<PropSet>::Element *E = stored_values.front(); E; E = E->next()) {
- scene->set(E->get().name, E->get().value);
+ for (const PropSet &E : stored_values) {
+ scene->set(E.name, E.value);
}
if (p_replace) {
@@ -114,10 +114,10 @@ Dictionary InstancePlaceholder::get_stored_values(bool p_with_order) {
Dictionary ret;
PackedStringArray order;
- for (List<PropSet>::Element *E = stored_values.front(); E; E = E->next()) {
- ret[E->get().name] = E->get().value;
+ for (const PropSet &E : stored_values) {
+ ret[E.name] = E.value;
if (p_with_order) {
- order.push_back(E->get().name);
+ order.push_back(E.name);
}
};
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index 0d060240de..f1e5574351 100644
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -1597,8 +1597,8 @@ Array Node::_get_groups() const {
Array groups;
List<GroupInfo> gi;
get_groups(&gi);
- for (List<GroupInfo>::Element *E = gi.front(); E; E = E->next()) {
- groups.push_back(E->get().name);
+ for (const GroupInfo &E : gi) {
+ groups.push_back(E.name);
}
return groups;
@@ -1947,18 +1947,18 @@ Node *Node::_duplicate(int p_flags, Map<const Node *, Node *> *r_duplimap) const
List<PropertyInfo> plist;
N->get()->get_property_list(&plist);
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : plist) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- String name = E->get().name;
+ String name = E.name;
if (name == script_property_name) {
continue;
}
Variant value = N->get()->get(name).duplicate(true);
- if (E->get().usage & PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE) {
+ if (E.usage & PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE) {
Resource *res = Object::cast_to<Resource>(value);
if (res) { // Duplicate only if it's a resource
current_node->set(name, res->duplicate());
@@ -1983,14 +1983,14 @@ Node *Node::_duplicate(int p_flags, Map<const Node *, Node *> *r_duplimap) const
if (p_flags & DUPLICATE_GROUPS) {
List<GroupInfo> gi;
get_groups(&gi);
- for (List<GroupInfo>::Element *E = gi.front(); E; E = E->next()) {
+ for (const GroupInfo &E : gi) {
#ifdef TOOLS_ENABLED
- if ((p_flags & DUPLICATE_FROM_EDITOR) && !E->get().persistent) {
+ if ((p_flags & DUPLICATE_FROM_EDITOR) && !E.persistent) {
continue;
}
#endif
- node->add_to_group(E->get().name, E->get().persistent);
+ node->add_to_group(E.name, E.persistent);
}
}
@@ -2014,21 +2014,21 @@ Node *Node::_duplicate(int p_flags, Map<const Node *, Node *> *r_duplimap) const
}
}
- for (List<const Node *>::Element *E = hidden_roots.front(); E; E = E->next()) {
- Node *parent = node->get_node(get_path_to(E->get()->data.parent));
+ for (const Node *&E : hidden_roots) {
+ Node *parent = node->get_node(get_path_to(E->data.parent));
if (!parent) {
memdelete(node);
return nullptr;
}
- Node *dup = E->get()->_duplicate(p_flags, r_duplimap);
+ Node *dup = E->_duplicate(p_flags, r_duplimap);
if (!dup) {
memdelete(node);
return nullptr;
}
parent->add_child(dup);
- int pos = E->get()->get_index();
+ int pos = E->get_index();
if (pos < parent->get_child_count() - 1) {
parent->move_child(dup, pos);
@@ -2073,17 +2073,17 @@ void Node::remap_node_resources(Node *p_node, const Map<RES, RES> &p_resource_re
List<PropertyInfo> props;
p_node->get_property_list(&props);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : props) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- Variant v = p_node->get(E->get().name);
+ Variant v = p_node->get(E.name);
if (v.is_ref()) {
RES res = v;
if (res.is_valid()) {
if (p_resource_remap.has(res)) {
- p_node->set(E->get().name, p_resource_remap[res]);
+ p_node->set(E.name, p_resource_remap[res]);
remap_nested_resources(res, p_resource_remap);
}
}
@@ -2099,17 +2099,17 @@ void Node::remap_nested_resources(RES p_resource, const Map<RES, RES> &p_resourc
List<PropertyInfo> props;
p_resource->get_property_list(&props);
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : props) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- Variant v = p_resource->get(E->get().name);
+ Variant v = p_resource->get(E.name);
if (v.is_ref()) {
RES res = v;
if (res.is_valid()) {
if (p_resource_remap.has(res)) {
- p_resource->set(E->get().name, p_resource_remap[res]);
+ p_resource->set(E.name, p_resource_remap[res]);
remap_nested_resources(res, p_resource_remap);
}
}
@@ -2135,13 +2135,13 @@ void Node::_duplicate_signals(const Node *p_original, Node *p_copy) const {
List<Connection> conns;
n->get_all_signal_connections(&conns);
- for (List<Connection>::Element *E = conns.front(); E; E = E->next()) {
- if (E->get().flags & CONNECT_PERSIST) {
+ for (const Connection &E : conns) {
+ if (E.flags & CONNECT_PERSIST) {
//user connected
NodePath p = p_original->get_path_to(n);
Node *copy = p_copy->get_node(p);
- Node *target = Object::cast_to<Node>(E->get().callable.get_object());
+ Node *target = Object::cast_to<Node>(E.callable.get_object());
if (!target) {
continue;
}
@@ -2158,9 +2158,9 @@ void Node::_duplicate_signals(const Node *p_original, Node *p_copy) const {
}
if (copy && copytarget) {
- const Callable copy_callable = Callable(copytarget, E->get().callable.get_method());
- if (!copy->is_connected(E->get().signal.get_name(), copy_callable)) {
- copy->connect(E->get().signal.get_name(), copy_callable, E->get().binds, E->get().flags);
+ const Callable copy_callable = Callable(copytarget, E.callable.get_method());
+ if (!copy->is_connected(E.signal.get_name(), copy_callable)) {
+ copy->connect(E.signal.get_name(), copy_callable, E.binds, E.flags);
}
}
}
@@ -2194,8 +2194,8 @@ void Node::replace_by(Node *p_node, bool p_keep_groups) {
List<GroupInfo> groups;
get_groups(&groups);
- for (List<GroupInfo>::Element *E = groups.front(); E; E = E->next()) {
- p_node->add_to_group(E->get().name, E->get().persistent);
+ for (const GroupInfo &E : groups) {
+ p_node->add_to_group(E.name, E.persistent);
}
}
@@ -2241,9 +2241,7 @@ void Node::_replace_connections_target(Node *p_new_target) {
List<Connection> cl;
get_signals_connected_to_this(&cl);
- for (List<Connection>::Element *E = cl.front(); E; E = E->next()) {
- Connection &c = E->get();
-
+ for (const Connection &c : cl) {
if (c.flags & CONNECT_PERSIST) {
c.signal.get_object()->disconnect(c.signal.get_name(), Callable(this, c.callable.get_method()));
bool valid = p_new_target->has_method(c.callable.get_method()) || Ref<Script>(p_new_target->get_script()).is_null() || Ref<Script>(p_new_target->get_script())->has_method(c.callable.get_method());
diff --git a/scene/main/node.h b/scene/main/node.h
index 20315d7a86..0a88553ea1 100644
--- a/scene/main/node.h
+++ b/scene/main/node.h
@@ -67,6 +67,12 @@ public:
#endif
};
+ enum NameCasing {
+ NAME_CASING_PASCAL_CASE,
+ NAME_CASING_CAMEL_CASE,
+ NAME_CASING_SNAKE_CASE
+ };
+
struct Comparator {
bool operator()(const Node *p_a, const Node *p_b) const { return p_b->is_greater_than(p_a); }
};
@@ -140,12 +146,6 @@ private:
} data;
- enum NameCasing {
- NAME_CASING_PASCAL_CASE,
- NAME_CASING_CAMEL_CASE,
- NAME_CASING_SNAKE_CASE
- };
-
Ref<MultiplayerAPI> multiplayer;
void _print_tree_pretty(const String &prefix, const bool last);
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index 2fe5d7aa78..dcbbebbc55 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -66,11 +66,11 @@ void SceneTreeTimer::_bind_methods() {
ADD_SIGNAL(MethodInfo("timeout"));
}
-void SceneTreeTimer::set_time_left(float p_time) {
+void SceneTreeTimer::set_time_left(double p_time) {
time_left = p_time;
}
-float SceneTreeTimer::get_time_left() const {
+double SceneTreeTimer::get_time_left() const {
return time_left;
}
@@ -82,12 +82,19 @@ bool SceneTreeTimer::is_process_always() {
return process_always;
}
+void SceneTreeTimer::set_ignore_time_scale(bool p_ignore) {
+ ignore_time_scale = p_ignore;
+}
+
+bool SceneTreeTimer::is_ignore_time_scale() {
+ return ignore_time_scale;
+}
+
void SceneTreeTimer::release_connections() {
List<Connection> connections;
get_all_signal_connections(&connections);
- for (List<Connection>::Element *E = connections.front(); E; E = E->next()) {
- Connection const &connection = E->get();
+ for (const Connection &connection : connections) {
disconnect(connection.signal.get_name(), connection.callable);
}
}
@@ -396,7 +403,7 @@ void SceneTree::initialize() {
MainLoop::initialize();
}
-bool SceneTree::physics_process(float p_time) {
+bool SceneTree::physics_process(double p_time) {
root_lock++;
current_frame++;
@@ -425,7 +432,7 @@ bool SceneTree::physics_process(float p_time) {
return _quit;
}
-bool SceneTree::process(float p_time) {
+bool SceneTree::process(double p_time) {
root_lock++;
MainLoop::process(p_time);
@@ -466,8 +473,13 @@ bool SceneTree::process(float p_time) {
E = N;
continue;
}
- float time_left = E->get()->get_time_left();
- time_left -= p_time;
+
+ double time_left = E->get()->get_time_left();
+ if (E->get()->is_ignore_time_scale()) {
+ time_left -= Engine::get_singleton()->get_process_step();
+ } else {
+ time_left -= p_time;
+ }
E->get()->set_time_left(time_left);
if (time_left < 0) {
@@ -559,8 +571,8 @@ void SceneTree::finalize() {
}
// cleanup timers
- for (List<Ref<SceneTreeTimer>>::Element *E = timers.front(); E; E = E->next()) {
- E->get()->release_connections();
+ for (Ref<SceneTreeTimer> &timer : timers) {
+ timer->release_connections();
}
timers.clear();
}
@@ -1112,7 +1124,7 @@ void SceneTree::add_current_scene(Node *p_current) {
root->add_child(p_current);
}
-Ref<SceneTreeTimer> SceneTree::create_timer(float p_delay_sec, bool p_process_always) {
+Ref<SceneTreeTimer> SceneTree::create_timer(double p_delay_sec, bool p_process_always) {
Ref<SceneTreeTimer> stt;
stt.instantiate();
stt->set_process_always(p_process_always);
@@ -1134,8 +1146,8 @@ Array SceneTree::get_processed_tweens() {
ret.resize(tweens.size());
int i = 0;
- for (List<Ref<Tween>>::Element *E = tweens.front(); E; E = E->next()) {
- ret[i] = E->get();
+ for (const Ref<Tween> &tween : tweens) {
+ ret[i] = tween;
i++;
}
@@ -1390,11 +1402,11 @@ SceneTree::SceneTree() {
List<String> exts;
ResourceLoader::get_recognized_extensions_for_type("Environment", &exts);
String ext_hint;
- for (List<String>::Element *E = exts.front(); E; E = E->next()) {
+ for (const String &E : exts) {
if (ext_hint != String()) {
ext_hint += ",";
}
- ext_hint += "*." + E->get();
+ ext_hint += "*." + E;
}
// Get path.
String env_path = GLOBAL_DEF("rendering/environment/defaults/default_environment", "");
diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h
index 0be0e185a5..cfb95bd6b5 100644
--- a/scene/main/scene_tree.h
+++ b/scene/main/scene_tree.h
@@ -52,19 +52,23 @@ class Tween;
class SceneTreeTimer : public RefCounted {
GDCLASS(SceneTreeTimer, RefCounted);
- float time_left = 0.0;
+ double time_left = 0.0;
bool process_always = true;
+ bool ignore_time_scale = false;
protected:
static void _bind_methods();
public:
- void set_time_left(float p_time);
- float get_time_left() const;
+ void set_time_left(double p_time);
+ double get_time_left() const;
void set_process_always(bool p_process_always);
bool is_process_always();
+ void set_ignore_time_scale(bool p_ignore);
+ bool is_ignore_time_scale();
+
void release_connections();
SceneTreeTimer();
@@ -87,8 +91,8 @@ private:
Window *root = nullptr;
uint64_t tree_version = 1;
- float physics_process_time = 1.0;
- float process_time = 1.0;
+ double physics_process_time = 1.0;
+ double process_time = 1.0;
bool accept_quit = true;
bool quit_on_go_back = true;
@@ -233,8 +237,8 @@ public:
virtual void initialize() override;
- virtual bool physics_process(float p_time) override;
- virtual bool process(float p_time) override;
+ virtual bool physics_process(double p_time) override;
+ virtual bool process(double p_time) override;
virtual void finalize() override;
@@ -243,8 +247,8 @@ public:
void quit(int p_exit_code = EXIT_SUCCESS);
- _FORCE_INLINE_ float get_physics_process_time() const { return physics_process_time; }
- _FORCE_INLINE_ float get_process_time() const { return process_time; }
+ _FORCE_INLINE_ double get_physics_process_time() const { return physics_process_time; }
+ _FORCE_INLINE_ double get_process_time() const { return process_time; }
#ifdef TOOLS_ENABLED
bool is_node_being_edited(const Node *p_node) const;
@@ -313,7 +317,7 @@ public:
Error change_scene_to(const Ref<PackedScene> &p_scene);
Error reload_current_scene();
- Ref<SceneTreeTimer> create_timer(float p_delay_sec, bool p_process_always = true);
+ Ref<SceneTreeTimer> create_timer(double p_delay_sec, bool p_process_always = true);
Ref<Tween> create_tween();
Array get_processed_tweens();
diff --git a/scene/main/timer.cpp b/scene/main/timer.cpp
index ef8245076f..b5a2a30b3b 100644
--- a/scene/main/timer.cpp
+++ b/scene/main/timer.cpp
@@ -81,12 +81,12 @@ void Timer::_notification(int p_what) {
}
}
-void Timer::set_wait_time(float p_time) {
+void Timer::set_wait_time(double p_time) {
ERR_FAIL_COND_MSG(p_time <= 0, "Time should be greater than zero.");
wait_time = p_time;
}
-float Timer::get_wait_time() const {
+double Timer::get_wait_time() const {
return wait_time;
}
@@ -106,7 +106,7 @@ bool Timer::has_autostart() const {
return autostart;
}
-void Timer::start(float p_time) {
+void Timer::start(double p_time) {
ERR_FAIL_COND_MSG(!is_inside_tree(), "Timer was not added to the SceneTree. Either add it or set autostart to true.");
if (p_time > 0) {
@@ -139,7 +139,7 @@ bool Timer::is_stopped() const {
return get_time_left() <= 0;
}
-float Timer::get_time_left() const {
+double Timer::get_time_left() const {
return time_left > 0 ? time_left : 0;
}
diff --git a/scene/main/timer.h b/scene/main/timer.h
index 3d9e21d7fc..2b9faddcb9 100644
--- a/scene/main/timer.h
+++ b/scene/main/timer.h
@@ -36,7 +36,7 @@
class Timer : public Node {
GDCLASS(Timer, Node);
- float wait_time = 1.0;
+ double wait_time = 1.0;
bool one_shot = false;
bool autostart = false;
bool processing = false;
@@ -54,8 +54,8 @@ public:
TIMER_PROCESS_IDLE,
};
- void set_wait_time(float p_time);
- float get_wait_time() const;
+ void set_wait_time(double p_time);
+ double get_wait_time() const;
void set_one_shot(bool p_one_shot);
bool is_one_shot() const;
@@ -63,7 +63,7 @@ public:
void set_autostart(bool p_start);
bool has_autostart() const;
- void start(float p_time = -1);
+ void start(double p_time = -1);
void stop();
void set_paused(bool p_paused);
@@ -71,7 +71,7 @@ public:
bool is_stopped() const;
- float get_time_left() const;
+ double get_time_left() const;
void set_timer_process_callback(TimerProcessCallback p_callback);
TimerProcessCallback get_timer_process_callback() const;
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index f81b512b0c..8e7182df46 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -249,7 +249,7 @@ void Viewport::_sub_window_update(Window *p_window) {
Rect2i r = Rect2i(p_window->get_position(), sw.window->get_size());
if (!p_window->get_flag(Window::FLAG_BORDERLESS)) {
- Ref<StyleBox> panel = p_window->get_theme_stylebox(SNAME("panel_window"));
+ Ref<StyleBox> panel = p_window->get_theme_stylebox(SNAME("embedded_border"));
panel->draw(sw.canvas_item, r);
// Draw the title bar text.
@@ -260,7 +260,7 @@ void Viewport::_sub_window_update(Window *p_window) {
int close_h_ofs = p_window->get_theme_constant(SNAME("close_h_ofs"));
int close_v_ofs = p_window->get_theme_constant(SNAME("close_v_ofs"));
- TextLine title_text = TextLine(p_window->get_title(), title_font, font_size, Dictionary(), TranslationServer::get_singleton()->get_tool_locale());
+ TextLine title_text = TextLine(p_window->atr(p_window->get_title()), title_font, font_size, Dictionary(), TranslationServer::get_singleton()->get_tool_locale());
title_text.set_width(r.size.width - panel->get_minimum_size().x - close_h_ofs);
title_text.set_direction(p_window->is_layout_rtl() ? TextServer::DIRECTION_RTL : TextServer::DIRECTION_LTR);
int x = (r.size.width - title_text.get_size().x) / 2;
@@ -273,9 +273,8 @@ void Viewport::_sub_window_update(Window *p_window) {
}
title_text.draw(sw.canvas_item, r.position + Point2(x, y), title_color);
- bool hl = gui.subwindow_focused == sw.window && gui.subwindow_drag == SUB_WINDOW_DRAG_CLOSE && gui.subwindow_drag_close_inside;
-
- Ref<Texture2D> close_icon = p_window->get_theme_icon(hl ? "close_highlight" : "close");
+ bool pressed = gui.subwindow_focused == sw.window && gui.subwindow_drag == SUB_WINDOW_DRAG_CLOSE && gui.subwindow_drag_close_inside;
+ Ref<Texture2D> close_icon = p_window->get_theme_icon(pressed ? "close_pressed" : "close");
close_icon->draw(sw.canvas_item, r.position + Vector2(r.size.width - close_h_ofs, -close_v_ofs));
}
@@ -502,17 +501,6 @@ void Viewport::_notification(int p_what) {
RS::get_singleton()->viewport_set_active(viewport, false);
RenderingServer::get_singleton()->viewport_set_parent_viewport(viewport, RID());
-
- } break;
- case NOTIFICATION_INTERNAL_PROCESS: {
- if (gui.tooltip_timer >= 0) {
- gui.tooltip_timer -= get_process_delta_time();
- if (gui.tooltip_timer < 0) {
- _gui_show_tooltip();
- set_process_internal(false);
- }
- }
-
} break;
case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: {
if (get_tree()->is_debugging_collisions_hint() && contact_2d_debug.is_valid()) {
@@ -584,8 +572,7 @@ void Viewport::_process_picking() {
// if no mouse event exists, create a motion one. This is necessary because objects or camera may have moved.
// while this extra event is sent, it is checked if both camera and last object and last ID did not move. If nothing changed, the event is discarded to avoid flooding with unnecessary motion events every frame
bool has_mouse_event = false;
- for (List<Ref<InputEvent>>::Element *E = physics_picking_events.front(); E; E = E->next()) {
- Ref<InputEventMouse> m = E->get();
+ for (const Ref<InputEvent> &m : physics_picking_events) {
if (m.is_valid()) {
has_mouse_event = true;
break;
@@ -1489,8 +1476,10 @@ void Viewport::_gui_sort_roots() {
void Viewport::_gui_cancel_tooltip() {
gui.tooltip_control = nullptr;
- gui.tooltip_timer = -1;
- set_process_internal(false);
+ if (gui.tooltip_timer.is_valid()) {
+ gui.tooltip_timer->release_connections();
+ gui.tooltip_timer = Ref<SceneTreeTimer>();
+ }
if (gui.tooltip_popup) {
gui.tooltip_popup->queue_delete();
gui.tooltip_popup = nullptr;
@@ -1569,6 +1558,7 @@ void Viewport::_gui_show_tooltip() {
// If no custom tooltip is given, use a default implementation.
if (!base_tooltip) {
gui.tooltip_label = memnew(TooltipLabel);
+ gui.tooltip_label->set_auto_translate(gui.tooltip_control->is_auto_translating());
gui.tooltip_label->set_text(tooltip_text);
base_tooltip = gui.tooltip_label;
panel->connect("mouse_entered", callable_mp(this, &Viewport::_gui_cancel_tooltip));
@@ -2139,10 +2129,15 @@ void Viewport::_gui_input_event(Ref<InputEvent> p_event) {
}
if (can_tooltip && !is_tooltip_shown) {
+ if (gui.tooltip_timer.is_valid()) {
+ gui.tooltip_timer->release_connections();
+ gui.tooltip_timer = Ref<SceneTreeTimer>();
+ }
gui.tooltip_control = over;
gui.tooltip_pos = over->get_screen_transform().xform(pos);
- gui.tooltip_timer = gui.tooltip_delay;
- set_process_internal(true);
+ gui.tooltip_timer = get_tree()->create_timer(gui.tooltip_delay);
+ gui.tooltip_timer->set_ignore_time_scale(true);
+ gui.tooltip_timer->connect("timeout", callable_mp(this, &Viewport::_gui_show_tooltip));
}
}
diff --git a/scene/main/viewport.h b/scene/main/viewport.h
index 9c3df4c770..b5c49a8a97 100644
--- a/scene/main/viewport.h
+++ b/scene/main/viewport.h
@@ -50,6 +50,7 @@ class Label;
class Timer;
class Viewport;
class CollisionObject3D;
+class SceneTreeTimer;
class ViewportTexture : public Texture2D {
GDCLASS(ViewportTexture, Texture2D);
@@ -373,7 +374,7 @@ private:
bool drag_attempted = false;
Variant drag_data;
ObjectID drag_preview_id;
- float tooltip_timer = -1.0;
+ Ref<SceneTreeTimer> tooltip_timer;
float tooltip_delay = 0.0;
Transform2D focus_inv_xform;
bool roots_order_dirty = false;
diff --git a/scene/main/window.cpp b/scene/main/window.cpp
index bf7512e8eb..1f1da7cefb 100644
--- a/scene/main/window.cpp
+++ b/scene/main/window.cpp
@@ -42,9 +42,8 @@ void Window::set_title(const String &p_title) {
if (embedder) {
embedder->_sub_window_update(this);
-
} else if (window_id != DisplayServer::INVALID_WINDOW_ID) {
- DisplayServer::get_singleton()->window_set_title(p_title, window_id);
+ DisplayServer::get_singleton()->window_set_title(atr(p_title), window_id);
}
}
@@ -233,7 +232,7 @@ void Window::_make_window() {
DisplayServer::get_singleton()->window_set_current_screen(current_screen, window_id);
DisplayServer::get_singleton()->window_set_max_size(max_size, window_id);
DisplayServer::get_singleton()->window_set_min_size(min_size, window_id);
- DisplayServer::get_singleton()->window_set_title(tr(title), window_id);
+ DisplayServer::get_singleton()->window_set_title(atr(title), window_id);
DisplayServer::get_singleton()->window_attach_instance_id(get_instance_id(), window_id);
_update_window_size();
@@ -700,93 +699,98 @@ Viewport *Window::_get_embedder() const {
}
void Window::_notification(int p_what) {
- if (p_what == NOTIFICATION_ENTER_TREE) {
- bool embedded = false;
- {
- embedder = _get_embedder();
-
- if (embedder) {
- embedded = true;
-
- if (!visible) {
- embedder = nullptr; //not yet since not visible
+ switch (p_what) {
+ case NOTIFICATION_ENTER_TREE: {
+ bool embedded = false;
+ {
+ embedder = _get_embedder();
+
+ if (embedder) {
+ embedded = true;
+
+ if (!visible) {
+ embedder = nullptr; //not yet since not visible
+ }
}
}
- }
- if (embedded) {
- //create as embedded
- if (embedder) {
- embedder->_sub_window_register(this);
- RS::get_singleton()->viewport_set_update_mode(get_viewport_rid(), RS::VIEWPORT_UPDATE_WHEN_PARENT_VISIBLE);
- _update_window_size();
- }
-
- } else {
- if (get_parent() == nullptr) {
- //it's the root window!
- visible = true; //always visible
- window_id = DisplayServer::MAIN_WINDOW_ID;
- DisplayServer::get_singleton()->window_attach_instance_id(get_instance_id(), window_id);
- _update_from_window();
- //since this window already exists (created on start), we must update pos and size from it
- {
- position = DisplayServer::get_singleton()->window_get_position(window_id);
- size = DisplayServer::get_singleton()->window_get_size(window_id);
+ if (embedded) {
+ //create as embedded
+ if (embedder) {
+ embedder->_sub_window_register(this);
+ RS::get_singleton()->viewport_set_update_mode(get_viewport_rid(), RS::VIEWPORT_UPDATE_WHEN_PARENT_VISIBLE);
+ _update_window_size();
}
- _update_viewport_size(); //then feed back to the viewport
- _update_window_callbacks();
- RS::get_singleton()->viewport_set_update_mode(get_viewport_rid(), RS::VIEWPORT_UPDATE_WHEN_VISIBLE);
+
} else {
- //create
- if (visible) {
- _make_window();
+ if (get_parent() == nullptr) {
+ //it's the root window!
+ visible = true; //always visible
+ window_id = DisplayServer::MAIN_WINDOW_ID;
+ DisplayServer::get_singleton()->window_attach_instance_id(get_instance_id(), window_id);
+ _update_from_window();
+ //since this window already exists (created on start), we must update pos and size from it
+ {
+ position = DisplayServer::get_singleton()->window_get_position(window_id);
+ size = DisplayServer::get_singleton()->window_get_size(window_id);
+ }
+ _update_viewport_size(); //then feed back to the viewport
+ _update_window_callbacks();
+ RS::get_singleton()->viewport_set_update_mode(get_viewport_rid(), RS::VIEWPORT_UPDATE_WHEN_VISIBLE);
+ } else {
+ //create
+ if (visible) {
+ _make_window();
+ }
}
}
- }
-
- if (transient) {
- _make_transient();
- }
- if (visible) {
- notification(NOTIFICATION_VISIBILITY_CHANGED);
- emit_signal(SceneStringNames::get_singleton()->visibility_changed);
- RS::get_singleton()->viewport_set_active(get_viewport_rid(), true);
- }
- }
- if (p_what == NOTIFICATION_READY) {
- if (wrap_controls) {
- _update_child_controls();
- }
- }
-
- if (p_what == NOTIFICATION_TRANSLATION_CHANGED) {
- child_controls_changed();
- }
+ if (transient) {
+ _make_transient();
+ }
+ if (visible) {
+ notification(NOTIFICATION_VISIBILITY_CHANGED);
+ emit_signal(SceneStringNames::get_singleton()->visibility_changed);
+ RS::get_singleton()->viewport_set_active(get_viewport_rid(), true);
+ }
+ } break;
+ case NOTIFICATION_READY: {
+ if (wrap_controls) {
+ _update_child_controls();
+ }
+ } break;
+ case NOTIFICATION_TRANSLATION_CHANGED: {
+ if (embedder) {
+ embedder->_sub_window_update(this);
+ } else if (window_id != DisplayServer::INVALID_WINDOW_ID) {
+ DisplayServer::get_singleton()->window_set_title(atr(title), window_id);
+ }
- if (p_what == NOTIFICATION_EXIT_TREE) {
- if (transient) {
- _clear_transient();
- }
+ child_controls_changed();
+ } break;
+ case NOTIFICATION_EXIT_TREE: {
+ if (transient) {
+ _clear_transient();
+ }
- if (!is_embedded() && window_id != DisplayServer::INVALID_WINDOW_ID) {
- if (window_id == DisplayServer::MAIN_WINDOW_ID) {
- RS::get_singleton()->viewport_set_update_mode(get_viewport_rid(), RS::VIEWPORT_UPDATE_DISABLED);
- _update_window_callbacks();
+ if (!is_embedded() && window_id != DisplayServer::INVALID_WINDOW_ID) {
+ if (window_id == DisplayServer::MAIN_WINDOW_ID) {
+ RS::get_singleton()->viewport_set_update_mode(get_viewport_rid(), RS::VIEWPORT_UPDATE_DISABLED);
+ _update_window_callbacks();
+ } else {
+ _clear_window();
+ }
} else {
- _clear_window();
- }
- } else {
- if (embedder) {
- embedder->_sub_window_remove(this);
- embedder = nullptr;
- RS::get_singleton()->viewport_set_update_mode(get_viewport_rid(), RS::VIEWPORT_UPDATE_DISABLED);
+ if (embedder) {
+ embedder->_sub_window_remove(this);
+ embedder = nullptr;
+ RS::get_singleton()->viewport_set_update_mode(get_viewport_rid(), RS::VIEWPORT_UPDATE_DISABLED);
+ }
+ _update_viewport_size(); //called by clear and make, which does not happen here
}
- _update_viewport_size(); //called by clear and make, which does not happen here
- }
- RS::get_singleton()->viewport_set_active(get_viewport_rid(), false);
+ RS::get_singleton()->viewport_set_active(get_viewport_rid(), false);
+ } break;
}
}
@@ -1342,6 +1346,20 @@ bool Window::is_layout_rtl() const {
}
}
+void Window::set_auto_translate(bool p_enable) {
+ if (p_enable == auto_translate) {
+ return;
+ }
+
+ auto_translate = p_enable;
+
+ notification(MainLoop::NOTIFICATION_TRANSLATION_CHANGED);
+}
+
+bool Window::is_auto_translating() const {
+ return auto_translate;
+}
+
void Window::_validate_property(PropertyInfo &property) const {
if (property.name == "theme_type_variation") {
List<StringName> names;
@@ -1356,14 +1374,14 @@ void Window::_validate_property(PropertyInfo &property) const {
Vector<StringName> unique_names;
String hint_string;
- for (List<StringName>::Element *E = names.front(); E; E = E->next()) {
+ for (const StringName &E : names) {
// Skip duplicate values.
- if (unique_names.has(E->get())) {
+ if (unique_names.has(E)) {
continue;
}
- hint_string += String(E->get()) + ",";
- unique_names.append(E->get());
+ hint_string += String(E) + ",";
+ unique_names.append(E);
}
property.hint_string = hint_string;
@@ -1468,6 +1486,9 @@ void Window::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_layout_direction"), &Window::get_layout_direction);
ClassDB::bind_method(D_METHOD("is_layout_rtl"), &Window::is_layout_rtl);
+ ClassDB::bind_method(D_METHOD("set_auto_translate", "enable"), &Window::set_auto_translate);
+ ClassDB::bind_method(D_METHOD("is_auto_translating"), &Window::is_auto_translating);
+
ClassDB::bind_method(D_METHOD("popup", "rect"), &Window::popup, DEFVAL(Rect2i()));
ClassDB::bind_method(D_METHOD("popup_on_parent", "parent_rect"), &Window::popup_on_parent);
ClassDB::bind_method(D_METHOD("popup_centered_ratio", "ratio"), &Window::popup_centered_ratio, DEFVAL(0.8));
@@ -1479,6 +1500,7 @@ void Window::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "size"), "set_size", "get_size");
ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Windowed,Minimized,Maximized,Fullscreen"), "set_mode", "get_mode");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_screen"), "set_current_screen", "get_current_screen");
+
ADD_GROUP("Flags", "");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "visible"), "set_visible", "is_visible");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "wrap_controls"), "set_wrap_controls", "is_wrapping_controls");
@@ -1489,17 +1511,23 @@ void Window::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "always_on_top"), "set_flag", "get_flag", FLAG_ALWAYS_ON_TOP);
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "transparent"), "set_flag", "get_flag", FLAG_TRANSPARENT);
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "unfocusable"), "set_flag", "get_flag", FLAG_NO_FOCUS);
+
ADD_GROUP("Limits", "");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "min_size"), "set_min_size", "get_min_size");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "max_size"), "set_max_size", "get_max_size");
+
ADD_GROUP("Content Scale", "content_scale_");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2I, "content_scale_size"), "set_content_scale_size", "get_content_scale_size");
ADD_PROPERTY(PropertyInfo(Variant::INT, "content_scale_mode", PROPERTY_HINT_ENUM, "Disabled,Canvas Items,Viewport"), "set_content_scale_mode", "get_content_scale_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "content_scale_aspect", PROPERTY_HINT_ENUM, "Ignore,Keep,Keep Width,Keep Height,Expand"), "set_content_scale_aspect", "get_content_scale_aspect");
+
ADD_GROUP("Theme", "theme_");
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "theme", PROPERTY_HINT_RESOURCE_TYPE, "Theme"), "set_theme", "get_theme");
ADD_PROPERTY(PropertyInfo(Variant::STRING, "theme_type_variation", PROPERTY_HINT_ENUM_SUGGESTION), "set_theme_type_variation", "get_theme_type_variation");
+ ADD_GROUP("Auto Translate", "");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "auto_translate"), "set_auto_translate", "is_auto_translating");
+
ADD_SIGNAL(MethodInfo("window_input", PropertyInfo(Variant::OBJECT, "event", PROPERTY_HINT_RESOURCE_TYPE, "InputEvent")));
ADD_SIGNAL(MethodInfo("files_dropped", PropertyInfo(Variant::PACKED_STRING_ARRAY, "files")));
ADD_SIGNAL(MethodInfo("mouse_entered"));
diff --git a/scene/main/window.h b/scene/main/window.h
index e92b5e22ed..7013694a06 100644
--- a/scene/main/window.h
+++ b/scene/main/window.h
@@ -103,6 +103,8 @@ private:
LayoutDirection layout_dir = LAYOUT_DIRECTION_INHERITED;
+ bool auto_translate = true;
+
void _update_child_controls();
Size2i content_scale_size;
@@ -256,6 +258,10 @@ public:
LayoutDirection get_layout_direction() const;
bool is_layout_rtl() const;
+ void set_auto_translate(bool p_enable);
+ bool is_auto_translating() const;
+ _FORCE_INLINE_ String atr(const String p_string) const { return is_auto_translating() ? tr(p_string) : p_string; };
+
Rect2i get_usable_parent_rect() const;
Ref<Texture2D> get_theme_icon(const StringName &p_name, const StringName &p_theme_type = StringName()) const;
diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp
index 439fe649a1..4d3a4ea334 100644
--- a/scene/register_scene_types.cpp
+++ b/scene/register_scene_types.cpp
@@ -909,7 +909,6 @@ void register_scene_types() {
ClassDB::add_compatibility_class("Generic6DOFJoint", "Generic6DOFJoint3D");
ClassDB::add_compatibility_class("HeightMapShape", "HeightMapShape3D");
ClassDB::add_compatibility_class("HingeJoint", "HingeJoint3D");
- ClassDB::add_compatibility_class("ImmediateGeometry", "ImmediateGeometry3D");
ClassDB::add_compatibility_class("Joint", "Joint3D");
ClassDB::add_compatibility_class("KinematicBody", "CharacterBody3D");
ClassDB::add_compatibility_class("KinematicBody2D", "CharacterBody2D");
@@ -1001,9 +1000,12 @@ void register_scene_types() {
for (int i = 0; i < 20; i++) {
GLOBAL_DEF_BASIC(vformat("layer_names/2d_render/layer_%d", i), "");
+ GLOBAL_DEF_BASIC(vformat("layer_names/3d_render/layer_%d", i), "");
+ }
+
+ for (int i = 0; i < 32; i++) {
GLOBAL_DEF_BASIC(vformat("layer_names/2d_physics/layer_%d", i), "");
GLOBAL_DEF_BASIC(vformat("layer_names/2d_navigation/layer_%d", i), "");
- GLOBAL_DEF_BASIC(vformat("layer_names/3d_render/layer_%d", i), "");
GLOBAL_DEF_BASIC(vformat("layer_names/3d_physics/layer_%d", i), "");
GLOBAL_DEF_BASIC(vformat("layer_names/3d_navigation/layer_%d", i), "");
}
diff --git a/scene/resources/animation.h b/scene/resources/animation.h
index 1484007333..920ee2e5ab 100644
--- a/scene/resources/animation.h
+++ b/scene/resources/animation.h
@@ -228,8 +228,8 @@ private:
value_track_get_key_indices(p_track, p_time, p_delta, &idxs);
Vector<int> idxr;
- for (List<int>::Element *E = idxs.front(); E; E = E->next()) {
- idxr.push_back(E->get());
+ for (int &E : idxs) {
+ idxr.push_back(E);
}
return idxr;
}
@@ -238,8 +238,8 @@ private:
method_track_get_key_indices(p_track, p_time, p_delta, &idxs);
Vector<int> idxr;
- for (List<int>::Element *E = idxs.front(); E; E = E->next()) {
- idxr.push_back(E->get());
+ for (int &E : idxs) {
+ idxr.push_back(E);
}
return idxr;
}
diff --git a/scene/resources/curve.cpp b/scene/resources/curve.cpp
index 53979e16df..c13db83d6d 100644
--- a/scene/resources/curve.cpp
+++ b/scene/resources/curve.cpp
@@ -729,8 +729,8 @@ void Curve2D::_bake() const {
Vector2 *w = baked_point_cache.ptrw();
int idx = 0;
- for (List<Vector2>::Element *E = pointlist.front(); E; E = E->next()) {
- w[idx] = E->get();
+ for (const Vector2 &E : pointlist) {
+ w[idx] = E;
idx++;
}
}
@@ -1239,9 +1239,9 @@ void Curve3D::_bake() const {
Vector3 prev_up = Vector3(0, 1, 0);
Vector3 prev_forward = Vector3(0, 0, 1);
- for (List<Plane>::Element *E = pointlist.front(); E; E = E->next()) {
- w[idx] = E->get().normal;
- wt[idx] = E->get().d;
+ for (const Plane &E : pointlist) {
+ w[idx] = E.normal;
+ wt[idx] = E.d;
if (!up_vector_enabled) {
idx++;
diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp
index 1bbb84f43d..d0dee2b5e3 100644
--- a/scene/resources/default_theme/default_theme.cpp
+++ b/scene/resources/default_theme/default_theme.cpp
@@ -457,7 +457,6 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_color("current_line_color", "TextEdit", Color(0.25, 0.25, 0.26, 0.8));
theme->set_color("caret_color", "TextEdit", control_font_color);
theme->set_color("caret_background_color", "TextEdit", Color(0, 0, 0));
- theme->set_color("brace_mismatch_color", "TextEdit", Color(1, 0.2, 0.2));
theme->set_color("word_highlighted_color", "TextEdit", Color(0.8, 0.9, 0.9, 0.15));
theme->set_constant("line_spacing", "TextEdit", 4 * scale);
@@ -502,8 +501,8 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_color("caret_background_color", "CodeEdit", Color(0, 0, 0));
theme->set_color("brace_mismatch_color", "CodeEdit", Color(1, 0.2, 0.2));
theme->set_color("line_number_color", "CodeEdit", Color(0.67, 0.67, 0.67, 0.4));
- theme->set_color("safe_line_number_color", "CodeEdit", Color(0.67, 0.78, 0.67, 0.6));
theme->set_color("word_highlighted_color", "CodeEdit", Color(0.8, 0.9, 0.9, 0.15));
+ theme->set_color("line_length_guideline_color", "CodeEdit", Color(0.3, 0.5, 0.8, 0.1));
theme->set_constant("completion_lines", "CodeEdit", 7);
theme->set_constant("completion_max_width", "CodeEdit", 50);
@@ -571,10 +570,9 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
empty.instantiate();
theme->set_stylebox("bg", "ScrollContainer", empty);
- // WindowDialog
+ // Window
- theme->set_stylebox("panel", "Window", default_style);
- theme->set_stylebox("window_panel", "Window", sb_expand(make_stylebox(popup_window_png, 10, 26, 10, 8), 8, 24, 8, 6));
+ theme->set_stylebox("embedded_border", "Window", sb_expand(make_stylebox(popup_window_png, 10, 26, 10, 8), 8, 24, 8, 6));
theme->set_constant("scaleborder_size", "Window", 4 * scale);
theme->set_font("title_font", "Window", large_font);
@@ -588,10 +586,14 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_constant("resize_margin", "Window", 4 * scale);
theme->set_icon("close", "Window", make_icon(close_png));
- theme->set_icon("close_highlight", "Window", make_icon(close_hl_png));
+ theme->set_icon("close_pressed", "Window", make_icon(close_hl_png));
theme->set_constant("close_h_ofs", "Window", 18 * scale);
theme->set_constant("close_v_ofs", "Window", 18 * scale);
+ // AcceptDialog
+
+ theme->set_stylebox("panel", "AcceptDialog", make_stylebox(dialog_bg_png, 0, 0, 0, 0));
+
// File Dialog
theme->set_icon("parent_folder", "FileDialog", make_icon(icon_parent_folder_png));
diff --git a/scene/resources/default_theme/dialog_bg.png b/scene/resources/default_theme/dialog_bg.png
new file mode 100644
index 0000000000..a23a10b48a
--- /dev/null
+++ b/scene/resources/default_theme/dialog_bg.png
Binary files differ
diff --git a/scene/resources/default_theme/popup_window.png b/scene/resources/default_theme/popup_window.png
index 174a29ef45..442084049d 100644
--- a/scene/resources/default_theme/popup_window.png
+++ b/scene/resources/default_theme/popup_window.png
Binary files differ
diff --git a/scene/resources/default_theme/theme_data.h b/scene/resources/default_theme/theme_data.h
index 7d747e3c9e..cdb1bc527b 100644
--- a/scene/resources/default_theme/theme_data.h
+++ b/scene/resources/default_theme/theme_data.h
@@ -70,6 +70,10 @@ static const unsigned char color_picker_sample_png[] = {
0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x14, 0x8, 0x0, 0x0, 0x0, 0x0, 0x47, 0x29, 0xbc, 0x83, 0x0, 0x0, 0x0, 0x3c, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0xd5, 0x21, 0x11, 0x0, 0x30, 0xc, 0x4, 0xc1, 0xfa, 0x57, 0x53, 0x87, 0xed, 0x4, 0x45, 0xc4, 0xed, 0xa3, 0xc3, 0x4b, 0xfe, 0xbc, 0xd9, 0x9d, 0x35, 0x2b, 0xe, 0x0, 0x0, 0x0, 0x80, 0xed, 0x66, 0xc5, 0x1, 0x0, 0x0, 0x0, 0xe0, 0x6, 0x1, 0x0, 0x0, 0x90, 0x6, 0x70, 0x83, 0x0, 0x0, 0x0, 0x28, 0x3, 0x7c, 0x54, 0x93, 0xd6, 0xf1, 0xd1, 0x16, 0x8a, 0x17, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
+static const unsigned char dialog_bg_png[] = {
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x16, 0x0, 0x0, 0x0, 0x26, 0x8, 0x3, 0x0, 0x0, 0x0, 0xf7, 0x10, 0x9b, 0xa4, 0x0, 0x0, 0x2, 0xf5, 0x7a, 0x54, 0x58, 0x74, 0x52, 0x61, 0x77, 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x65, 0x78, 0x69, 0x66, 0x0, 0x0, 0x78, 0xda, 0xb5, 0x95, 0x6d, 0x72, 0xe4, 0x28, 0xc, 0x86, 0xff, 0x73, 0x8a, 0x3d, 0x2, 0xfa, 0x42, 0x70, 0x1c, 0xc, 0xa6, 0x6a, 0x6f, 0xb0, 0xc7, 0x9f, 0x17, 0xec, 0x38, 0xd9, 0x4c, 0x57, 0xda, 0x49, 0xcf, 0x40, 0xb5, 0xa5, 0x92, 0x5, 0x12, 0x3c, 0x92, 0x3b, 0xec, 0xff, 0xfd, 0x3b, 0xc2, 0x3f, 0x18, 0xa4, 0x39, 0x6, 0x35, 0xcf, 0xa9, 0xa4, 0x14, 0x31, 0xb4, 0x68, 0xe1, 0xa, 0x25, 0xc7, 0xf7, 0xb1, 0x9f, 0xf2, 0xb0, 0x51, 0xd4, 0xf5, 0x5c, 0xa3, 0xe8, 0xf9, 0x8e, 0x22, 0x85, 0x8f, 0x2f, 0x2e, 0x8d, 0x21, 0x5, 0x52, 0xe, 0xa3, 0xbf, 0x2d, 0x90, 0xd3, 0xfe, 0xe6, 0x9f, 0x2e, 0x89, 0x8d, 0x1e, 0xbc, 0x20, 0xfb, 0xb4, 0x40, 0xae, 0x30, 0xfc, 0x31, 0xb0, 0xd7, 0xd3, 0xce, 0x91, 0xff, 0x97, 0x91, 0x7a, 0xb4, 0xf8, 0x71, 0xe4, 0xf7, 0xdf, 0x18, 0x3d, 0x8f, 0xb1, 0x1f, 0xa7, 0xab, 0x9a, 0x70, 0xd, 0xe9, 0x38, 0xd4, 0x11, 0x22, 0xbc, 0x6d, 0x3, 0xc7, 0xd, 0x5b, 0xc9, 0x5a, 0x96, 0x30, 0x1d, 0x3f, 0x83, 0xee, 0x6b, 0x16, 0xcc, 0x1c, 0x6b, 0x6c, 0xa4, 0xb1, 0xc7, 0x16, 0x37, 0xcc, 0x46, 0x85, 0x98, 0x24, 0xe, 0x52, 0xea, 0x81, 0x2a, 0xd, 0xda, 0xa9, 0x43, 0x36, 0x6a, 0xc8, 0x51, 0x79, 0x67, 0x87, 0x64, 0x6e, 0x2c, 0xcb, 0x96, 0xc5, 0xb9, 0x70, 0x93, 0x28, 0x24, 0x3a, 0x27, 0xd, 0x76, 0x29, 0xd2, 0x25, 0xb, 0x4b, 0xe3, 0x5d, 0x44, 0x34, 0x8, 0x5f, 0xb9, 0xd0, 0x8a, 0x5b, 0x56, 0xbc, 0x46, 0x19, 0x91, 0x3b, 0xc1, 0x95, 0x9, 0x9b, 0x11, 0x96, 0x7c, 0x39, 0xc3, 0x33, 0x87, 0x3b, 0x73, 0x8c, 0x16, 0x71, 0x47, 0x44, 0x38, 0x3d, 0x9d, 0x75, 0x81, 0xbc, 0x98, 0x27, 0x7, 0x9a, 0xd7, 0x28, 0xf3, 0x9, 0x37, 0x0, 0xa1, 0x71, 0x72, 0xb3, 0x75, 0xc1, 0x6f, 0xf3, 0x1a, 0xe1, 0x3, 0x58, 0x1, 0x41, 0x5b, 0xd7, 0x9c, 0x71, 0xc0, 0x1a, 0xb7, 0x63, 0x8b, 0xcd, 0xe8, 0xbd, 0xb6, 0x64, 0x15, 0x80, 0xc0, 0xcf, 0x20, 0x8f, 0xfa, 0x22, 0xef, 0x93, 0x1a, 0xaf, 0x2a, 0x51, 0xc4, 0x36, 0x24, 0x43, 0x2, 0x4, 0x31, 0x91, 0x18, 0x25, 0x8a, 0xce, 0xec, 0x44, 0x2a, 0x9c, 0x1, 0xa8, 0x22, 0x73, 0x16, 0xe5, 0xd, 0x4, 0xc8, 0x8c, 0x3b, 0x92, 0x64, 0x15, 0x49, 0x60, 0x93, 0x51, 0x47, 0x88, 0x8d, 0x35, 0x4e, 0xcb, 0x97, 0x8d, 0xf, 0x3b, 0x5a, 0x5, 0x7c, 0x4c, 0x92, 0x38, 0xd8, 0x14, 0xa9, 0x80, 0xa5, 0x6a, 0xa8, 0x1f, 0xd7, 0x8c, 0x1a, 0xaa, 0x26, 0xa6, 0x66, 0x96, 0xcc, 0x2d, 0x5b, 0xb1, 0x1a, 0x92, 0x24, 0x4d, 0x96, 0x52, 0xf2, 0x34, 0x7b, 0xae, 0xba, 0xb8, 0xba, 0x79, 0x72, 0xf7, 0xec, 0xc5, 0x6b, 0x96, 0xac, 0xd9, 0x72, 0xca, 0x9e, 0x73, 0x2e, 0xb9, 0x16, 0x2e, 0x82, 0x96, 0xb4, 0x92, 0x8a, 0x97, 0x5c, 0x4a, 0xa9, 0x15, 0x31, 0xab, 0x86, 0x6a, 0x15, 0xab, 0x2b, 0x3c, 0x6a, 0xdd, 0x78, 0x93, 0x4d, 0x37, 0xdb, 0xd2, 0xe6, 0x5b, 0xde, 0xca, 0x56, 0x1b, 0xca, 0xa7, 0x69, 0xb3, 0x96, 0x9a, 0xb7, 0xdc, 0x4a, 0xab, 0x9d, 0xbb, 0x74, 0xed, 0xd6, 0x53, 0xf7, 0x9e, 0x7b, 0xe9, 0x75, 0xa7, 0x1d, 0xa5, 0x14, 0x76, 0xdd, 0x6d, 0x4f, 0xbb, 0xef, 0x79, 0x2f, 0x7b, 0x1d, 0xa8, 0xb5, 0x21, 0x43, 0x87, 0x8d, 0x34, 0x7c, 0xe4, 0x51, 0x46, 0xbd, 0xa8, 0xd1, 0xd9, 0xb6, 0x9f, 0xe7, 0x37, 0xa8, 0xd1, 0x49, 0x8d, 0x17, 0xa9, 0xe9, 0xe7, 0x17, 0x35, 0x58, 0xdd, 0xe7, 0x46, 0x6b, 0xb, 0x9a, 0xdf, 0x19, 0x9b, 0xcc, 0x40, 0x8c, 0x95, 0x40, 0xdc, 0x27, 0x1, 0x14, 0x34, 0x4f, 0x66, 0x31, 0x93, 0x2a, 0x4f, 0x72, 0x93, 0x59, 0x2c, 0x8c, 0xae, 0x30, 0x46, 0x92, 0x36, 0xd9, 0x74, 0x8a, 0x35, 0x50, 0x2, 0x42, 0xdd, 0x89, 0x6d, 0xd0, 0xc5, 0xee, 0x9d, 0xdc, 0x6d, 0x6e, 0x1, 0x77, 0xfd, 0x8c, 0x1b, 0xdf, 0x21, 0x17, 0x26, 0xba, 0x3f, 0x40, 0x8e, 0xc3, 0x2e, 0x9f, 0xb8, 0x3d, 0xa0, 0xd6, 0xe7, 0x97, 0xb0, 0x2d, 0x62, 0x47, 0x17, 0xce, 0x3b, 0x8d, 0x82, 0xee, 0x83, 0x6f, 0xe5, 0x5c, 0x79, 0x53, 0x50, 0x5b, 0x5a, 0x7e, 0x55, 0xfe, 0x85, 0x8d, 0x68, 0x9, 0x1c, 0xe2, 0x67, 0x32, 0x3c, 0x7c, 0xa1, 0x6b, 0xe7, 0xf4, 0x1d, 0x25, 0xdc, 0x70, 0x42, 0xce, 0x65, 0x85, 0xb0, 0x2f, 0x94, 0x70, 0xc7, 0xe9, 0x37, 0xe5, 0x41, 0xd2, 0xe1, 0x47, 0xe7, 0x78, 0x90, 0x74, 0x40, 0x91, 0x8a, 0xa6, 0x74, 0x1a, 0x5b, 0xa7, 0x72, 0x86, 0xfe, 0xa6, 0x39, 0xdc, 0x72, 0x47, 0x97, 0x1b, 0xa1, 0xbf, 0xf0, 0x3f, 0x8c, 0xe, 0x7d, 0xa8, 0x84, 0x2f, 0xde, 0x7d, 0xad, 0x90, 0x1a, 0xdb, 0xc, 0xb1, 0x2d, 0x25, 0x5c, 0xda, 0x8b, 0x4a, 0x38, 0xb3, 0x2e, 0x15, 0xa7, 0x39, 0x8c, 0x38, 0x53, 0xeb, 0x67, 0xe8, 0xfb, 0xe6, 0x70, 0xdb, 0xfd, 0x49, 0xa9, 0x86, 0x17, 0xa9, 0x5f, 0x5c, 0xc2, 0x8b, 0xd4, 0x2f, 0x73, 0x78, 0x4e, 0xdd, 0x6e, 0xc9, 0x70, 0xd7, 0xf1, 0x59, 0x3d, 0x84, 0x17, 0xca, 0x88, 0x3e, 0xca, 0xf0, 0xd9, 0xf0, 0x53, 0xf9, 0xe7, 0x36, 0xf2, 0x81, 0x8f, 0x7b, 0x81, 0xf2, 0xb, 0x12, 0xea, 0xac, 0x15, 0x79, 0x70, 0x44, 0x63, 0x0, 0x0, 0x1, 0x68, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0xe8, 0xe5, 0xf1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x1d, 0x22, 0x0, 0x0, 0x0, 0x1a, 0x19, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x1e, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x1d, 0x21, 0x17, 0x16, 0x19, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x1b, 0x1a, 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x1e, 0x1c, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x20, 0x25, 0x20, 0x1e, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x20, 0x25, 0x0, 0x0, 0x0, 0x20, 0x20, 0x25, 0x20, 0x1d, 0x25, 0x20, 0x1d, 0x22, 0x1d, 0x1d, 0x22, 0x1d, 0x1d, 0x20, 0x1d, 0x1a, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0x30, 0x38, 0xe8, 0xe5, 0xf1, 0xe5, 0xe2, 0xeb, 0xe3, 0xe1, 0xe8, 0xe1, 0xdf, 0xe7, 0xe0, 0xde, 0xe6, 0xdf, 0xdd, 0xe5, 0xde, 0xdc, 0xe4, 0xdd, 0xdb, 0xe3, 0xdc, 0xda, 0xe2, 0xda, 0xd8, 0xe0, 0xd9, 0xd7, 0xdf, 0xd7, 0xd6, 0xdf, 0xd6, 0xd4, 0xdd, 0xd5, 0xd3, 0xdc, 0xd4, 0xd1, 0xdb, 0xd3, 0xd0, 0xda, 0xd1, 0xce, 0xd8, 0xd0, 0xcd, 0xd7, 0xcf, 0xcd, 0xd7, 0xe2, 0xdf, 0xeb, 0x48, 0x46, 0x51, 0x42, 0x40, 0x4b, 0x40, 0x3e, 0x48, 0x40, 0x3d, 0x48, 0x48, 0x45, 0x50, 0x42, 0x3f, 0x4a, 0x3f, 0x3d, 0x48, 0x47, 0x44, 0x50, 0x41, 0x3f, 0x4a, 0x3f, 0x3d, 0x47, 0x41, 0x3e, 0x49, 0x3f, 0x3c, 0x47, 0x46, 0x43, 0x4f, 0x3e, 0x3c, 0x46, 0x40, 0x3e, 0x49, 0x3d, 0x3b, 0x46, 0x45, 0x43, 0x4e, 0x3d, 0x3b, 0x45, 0x44, 0x42, 0x4d, 0x3d, 0x3a, 0x45, 0x3e, 0x3c, 0x47, 0x3c, 0x3a, 0x44, 0x43, 0x42, 0x4c, 0x43, 0x40, 0x4c, 0x3e, 0x3b, 0x46, 0x3b, 0x39, 0x43, 0x43, 0x3f, 0x4c, 0x43, 0x3f, 0x4b, 0x3a, 0x38, 0x42, 0x42, 0x3e, 0x4b, 0x42, 0x3e, 0x49, 0x3a, 0x37, 0x41, 0x39, 0x37, 0x41, 0x3f, 0x3e, 0x48, 0x39, 0x37, 0x40, 0x38, 0x36, 0x40, 0x3e, 0x3d, 0x48, 0x38, 0x36, 0x3f, 0x3e, 0x3d, 0x47, 0x3a, 0x38, 0x41, 0x38, 0x35, 0x3f, 0x37, 0x35, 0x3e, 0x39, 0x36, 0x40, 0x37, 0x34, 0x3e, 0x3d, 0x3a, 0x46, 0x36, 0x34, 0x3d, 0x3d, 0x3a, 0x44, 0x37, 0x35, 0x3f, 0x35, 0x33, 0x3c, 0x6b, 0xff, 0x8f, 0xb1, 0x0, 0x0, 0x0, 0x1, 0x62, 0x4b, 0x47, 0x44, 0x0, 0x88, 0x5, 0x1d, 0x48, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x13, 0x0, 0x0, 0xb, 0x13, 0x1, 0x0, 0x9a, 0x9c, 0x18, 0x0, 0x0, 0x0, 0x7, 0x74, 0x49, 0x4d, 0x45, 0x7, 0xe5, 0x7, 0x1b, 0x17, 0x11, 0x18, 0xe6, 0xb9, 0x22, 0xac, 0x0, 0x0, 0x0, 0x3f, 0x49, 0x44, 0x41, 0x54, 0x28, 0xcf, 0x63, 0xf4, 0x64, 0xc0, 0x6, 0x98, 0x18, 0x68, 0x27, 0xcc, 0xc2, 0x88, 0x5d, 0x98, 0x99, 0x24, 0x61, 0x26, 0x52, 0x84, 0x71, 0xb9, 0x84, 0x89, 0x76, 0xc2, 0xb8, 0xac, 0x64, 0x21, 0x49, 0x35, 0x33, 0x15, 0x54, 0xe3, 0xa, 0x6f, 0x26, 0x6a, 0xa8, 0x26, 0xc9, 0x4a, 0xaa, 0x44, 0x3, 0x89, 0x89, 0x8d, 0x99, 0xee, 0xe9, 0x1b, 0x87, 0x30, 0x0, 0x20, 0x4, 0x0, 0xed, 0x48, 0xa7, 0x26, 0x6c, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
+};
+
static const unsigned char dropdown_png[] = {
0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x8, 0x4, 0x0, 0x0, 0x0, 0x6e, 0x6, 0x76, 0x0, 0x0, 0x0, 0x0, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0x60, 0xf8, 0xc0, 0xcc, 0x0, 0x2, 0x60, 0x16, 0x98, 0x78, 0x67, 0x8, 0x81, 0x6f, 0x4d, 0xde, 0x9a, 0x0, 0x5, 0xde, 0x3a, 0x3d, 0xfc, 0x8f, 0x80, 0xaf, 0xba, 0x18, 0xde, 0x29, 0x2, 0x19, 0xbf, 0x61, 0x2, 0x6f, 0x62, 0x18, 0x3e, 0xb0, 0xbd, 0x97, 0x4, 0x32, 0xff, 0x80, 0xb9, 0xb1, 0x20, 0x93, 0xc0, 0x42, 0x8, 0x2e, 0x54, 0xe8, 0x9d, 0xdc, 0x9b, 0x54, 0x10, 0xb, 0x21, 0xc4, 0x4, 0x63, 0x1, 0x0, 0x86, 0x1f, 0x3b, 0x1e, 0x92, 0x22, 0x3f, 0x40, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
@@ -283,7 +287,7 @@ static const unsigned char popup_bg_disabled_png[] = {
};
static const unsigned char popup_window_png[] = {
- 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x0, 0x46, 0x8, 0x3, 0x0, 0x0, 0x0, 0x8d, 0x2b, 0xf6, 0x48, 0x0, 0x0, 0x1, 0x6b, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0xe8, 0xe5, 0xf1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x1d, 0x22, 0x0, 0x0, 0x0, 0x1a, 0x19, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0x1e, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x1d, 0x21, 0x17, 0x16, 0x19, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x1b, 0x1a, 0x1d, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x1e, 0x1c, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x20, 0x25, 0x20, 0x1e, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x0, 0x0, 0x0, 0x21, 0x1f, 0x24, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x22, 0x20, 0x25, 0x0, 0x0, 0x0, 0x20, 0x20, 0x25, 0x20, 0x1d, 0x25, 0x20, 0x1d, 0x22, 0x1d, 0x1d, 0x22, 0x1d, 0x1d, 0x20, 0x1d, 0x1a, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x32, 0x30, 0x38, 0xe8, 0xe5, 0xf1, 0xe5, 0xe2, 0xeb, 0xe3, 0xe1, 0xe8, 0xe1, 0xdf, 0xe7, 0xe0, 0xde, 0xe6, 0xdf, 0xdd, 0xe5, 0xde, 0xdc, 0xe4, 0xdd, 0xdb, 0xe3, 0xdc, 0xda, 0xe2, 0xda, 0xd8, 0xe0, 0xd9, 0xd7, 0xdf, 0xd7, 0xd6, 0xdf, 0xd6, 0xd4, 0xdd, 0xd5, 0xd3, 0xdc, 0xd4, 0xd1, 0xdb, 0xd3, 0xd0, 0xda, 0xd1, 0xce, 0xd8, 0xd0, 0xcd, 0xd7, 0xcf, 0xcd, 0xd7, 0xe2, 0xdf, 0xeb, 0x48, 0x46, 0x51, 0x42, 0x40, 0x4b, 0x40, 0x3e, 0x48, 0x40, 0x3d, 0x48, 0x48, 0x45, 0x50, 0x42, 0x3f, 0x4a, 0x3f, 0x3d, 0x48, 0x47, 0x44, 0x50, 0x41, 0x3f, 0x4a, 0x3f, 0x3d, 0x47, 0x41, 0x3e, 0x49, 0x3f, 0x3c, 0x47, 0x46, 0x43, 0x4f, 0x3e, 0x3c, 0x46, 0x40, 0x3e, 0x49, 0x3d, 0x3b, 0x46, 0x45, 0x43, 0x4e, 0x3d, 0x3b, 0x45, 0x44, 0x42, 0x4d, 0x3d, 0x3a, 0x45, 0x3e, 0x3c, 0x47, 0x3c, 0x3a, 0x44, 0x43, 0x42, 0x4c, 0x43, 0x40, 0x4c, 0x3e, 0x3b, 0x46, 0x3b, 0x39, 0x43, 0x43, 0x3f, 0x4c, 0x43, 0x3f, 0x4b, 0x3a, 0x38, 0x42, 0x42, 0x3e, 0x4b, 0x42, 0x3e, 0x49, 0x3a, 0x37, 0x41, 0x39, 0x37, 0x41, 0x3f, 0x3e, 0x48, 0x39, 0x37, 0x40, 0x38, 0x36, 0x40, 0x3e, 0x3d, 0x48, 0x38, 0x36, 0x3f, 0x3e, 0x3d, 0x47, 0x3a, 0x38, 0x41, 0x38, 0x35, 0x3f, 0x37, 0x35, 0x3e, 0x39, 0x36, 0x40, 0x37, 0x34, 0x3e, 0x3d, 0x3a, 0x46, 0x36, 0x34, 0x3d, 0x3d, 0x3a, 0x44, 0x37, 0x35, 0x3f, 0x35, 0x33, 0x3c, 0x46, 0x44, 0x4f, 0xac, 0xa5, 0x1, 0x25, 0x0, 0x0, 0x0, 0x33, 0x74, 0x52, 0x4e, 0x53, 0x0, 0xa2, 0x3, 0x9, 0x17, 0xc, 0x20, 0xf, 0x2a, 0x5e, 0x12, 0x30, 0x68, 0x46, 0x20, 0x4e, 0xa2, 0x7d, 0x3a, 0x4f, 0xa4, 0x7d, 0x3f, 0x25, 0x60, 0xc0, 0xb8, 0x57, 0x1d, 0xba, 0x59, 0xbd, 0x5b, 0x22, 0xbf, 0x5e, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xa1, 0x9f, 0x9e, 0x52, 0x92, 0x15, 0x44, 0x7e, 0xd8, 0x5, 0xc7, 0xf4, 0xac, 0x0, 0x0, 0x1, 0x98, 0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0xed, 0xd6, 0x55, 0x9e, 0x14, 0x31, 0x10, 0x80, 0xf1, 0xb2, 0x20, 0x1d, 0xdc, 0x9d, 0x3b, 0x2c, 0xa7, 0x87, 0x4b, 0xe0, 0xee, 0xd0, 0x82, 0xcb, 0xea, 0xb4, 0x86, 0x79, 0x23, 0x93, 0xaa, 0xcc, 0xf, 0xd7, 0xfd, 0x9e, 0xff, 0xed, 0x1d, 0x21, 0xf8, 0xe2, 0xfe, 0x1c, 0x8a, 0x17, 0x32, 0xa1, 0xa2, 0x2b, 0x48, 0x66, 0xb8, 0xa2, 0x28, 0x10, 0x9a, 0xd1, 0xf7, 0x3d, 0x16, 0x66, 0xfa, 0x45, 0x74, 0x9b, 0xd2, 0x97, 0x52, 0xe2, 0x2f, 0xa6, 0x40, 0x5f, 0x4c, 0x1d, 0xf3, 0x97, 0x52, 0x5e, 0x46, 0xf7, 0xee, 0xe3, 0x88, 0x8a, 0x48, 0x9e, 0x8a, 0xec, 0x8c, 0x28, 0x2c, 0xa7, 0xf0, 0x99, 0xd2, 0x6e, 0xe7, 0x8e, 0x10, 0x9b, 0xd1, 0x11, 0xe7, 0xe, 0xd1, 0x17, 0x8e, 0x2, 0xe6, 0x55, 0xf8, 0x42, 0x4a, 0x74, 0x18, 0xbe, 0xf8, 0xac, 0x9b, 0x5f, 0x4a, 0xb7, 0x36, 0x20, 0xa5, 0xf9, 0x2f, 0x90, 0x50, 0x11, 0x36, 0x13, 0x49, 0xa9, 0xe7, 0x6c, 0x5e, 0xcf, 0x2e, 0x99, 0xf4, 0xd, 0xb8, 0x8c, 0x5, 0xa7, 0x28, 0x8, 0x98, 0x9, 0x68, 0xba, 0x41, 0x66, 0x1b, 0x8a, 0xa2, 0xb0, 0x4d, 0x59, 0x30, 0xa5, 0x94, 0xa3, 0x94, 0x52, 0x0, 0x6f, 0x53, 0x6f, 0x7c, 0x82, 0x16, 0xcc, 0x5a, 0x51, 0x14, 0xbd, 0x98, 0x79, 0x4c, 0x29, 0x72, 0xee, 0xac, 0x8c, 0xea, 0xac, 0xb9, 0x51, 0xa0, 0xce, 0xa, 0x44, 0x60, 0x46, 0xa4, 0x28, 0x2, 0x9b, 0x1, 0x2a, 0x5a, 0xa, 0x9a, 0x49, 0xa9, 0xe8, 0x79, 0x20, 0x33, 0x38, 0xaf, 0x68, 0xc5, 0x68, 0xc6, 0x95, 0xa2, 0xe7, 0x72, 0x67, 0x3d, 0x97, 0x52, 0x24, 0xcf, 0x66, 0x9e, 0x30, 0xa5, 0xef, 0x5a, 0x34, 0x6b, 0xdf, 0xa5, 0x14, 0xa4, 0x0, 0xb3, 0x42, 0x8c, 0xe5, 0x38, 0x37, 0xb4, 0x14, 0x3d, 0xd2, 0xda, 0xb4, 0x3d, 0xa2, 0x68, 0xe3, 0xc0, 0xcc, 0x35, 0x8a, 0x9e, 0x86, 0x4c, 0xa7, 0x15, 0x85, 0x9d, 0x6c, 0xb6, 0x13, 0x16, 0xe8, 0x54, 0x78, 0xbc, 0x8e, 0x60, 0x86, 0xd7, 0xd1, 0x17, 0xd3, 0x37, 0x6e, 0x48, 0x30, 0x4f, 0x70, 0x81, 0xbe, 0xed, 0x97, 0xd1, 0xfe, 0x6d, 0x44, 0xf7, 0xed, 0xa7, 0x63, 0x39, 0x79, 0x8c, 0xf6, 0xef, 0x8b, 0xe8, 0x61, 0xe6, 0x8d, 0x55, 0x5b, 0xae, 0x9e, 0x62, 0x3e, 0x1c, 0xd1, 0x3b, 0xf7, 0x9b, 0xc7, 0xfb, 0x9b, 0xab, 0x46, 0xcd, 0xab, 0x4b, 0xcd, 0xfd, 0x3b, 0x11, 0x1d, 0xe, 0x76, 0xf5, 0xc5, 0x2b, 0xe5, 0xf3, 0x67, 0x49, 0xcf, 0xcb, 0x2b, 0x8f, 0xea, 0xee, 0xe0, 0x10, 0xd1, 0xf0, 0xb2, 0x58, 0xb, 0x61, 0x75, 0xd6, 0x26, 0xcd, 0x56, 0x43, 0x58, 0x2b, 0x5e, 0x86, 0x88, 0x4e, 0x63, 0x33, 0x84, 0xf7, 0x1f, 0x26, 0xd5, 0x87, 0xf7, 0x61, 0x68, 0xc6, 0x29, 0xa2, 0x73, 0xdb, 0x5e, 0x2d, 0x57, 0x1f, 0xab, 0x56, 0xcb, 0xab, 0xed, 0x5c, 0xfe, 0xc4, 0x5d, 0xf1, 0x27, 0x1a, 0x8f, 0xba, 0x8d, 0xd7, 0xa0, 0x9a, 0x40, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
+ 0x89, 0x50, 0x4e, 0x47, 0xd, 0xa, 0x1a, 0xa, 0x0, 0x0, 0x0, 0xd, 0x49, 0x48, 0x44, 0x52, 0x0, 0x0, 0x0, 0x2a, 0x0, 0x0, 0x0, 0x48, 0x8, 0x3, 0x0, 0x0, 0x0, 0xb7, 0x21, 0x97, 0x38, 0x0, 0x0, 0x1, 0x71, 0x69, 0x43, 0x43, 0x50, 0x69, 0x63, 0x63, 0x0, 0x0, 0x28, 0x91, 0x75, 0x91, 0x3d, 0x4b, 0xc3, 0x50, 0x14, 0x86, 0xdf, 0xb6, 0x96, 0x8a, 0xad, 0x74, 0xd0, 0x41, 0xa4, 0x43, 0x86, 0x2a, 0xe, 0x2d, 0x14, 0x5, 0x71, 0xd4, 0x3a, 0x74, 0x29, 0x52, 0x6a, 0x5, 0xab, 0x2e, 0xc9, 0x6d, 0xd2, 0xa, 0x49, 0x1a, 0x6e, 0x52, 0xa4, 0xb8, 0xa, 0x2e, 0xe, 0x5, 0x7, 0xd1, 0xc5, 0xaf, 0xc1, 0x7f, 0xa0, 0xab, 0xe0, 0xaa, 0x20, 0x8, 0x8a, 0x20, 0xe2, 0xe2, 0x1f, 0xf0, 0x6b, 0x91, 0x12, 0xcf, 0x6d, 0xa, 0x2d, 0xd2, 0x9e, 0x70, 0x73, 0x1e, 0xde, 0x7b, 0xde, 0xc3, 0xbd, 0xe7, 0x2, 0xfe, 0xac, 0xce, 0xc, 0x7b, 0x20, 0x5, 0x18, 0xa6, 0xc3, 0xf3, 0x99, 0xb4, 0xb4, 0x5a, 0x5c, 0x93, 0x42, 0xef, 0x8, 0x21, 0x6, 0x1f, 0x82, 0x8, 0xcb, 0xcc, 0xb6, 0x16, 0x72, 0xb9, 0x2c, 0xfa, 0xc6, 0xcf, 0x23, 0x55, 0x52, 0x3c, 0x24, 0x45, 0xaf, 0xfe, 0x75, 0x3d, 0x23, 0x5c, 0x52, 0x6d, 0x6, 0xf8, 0x6, 0x89, 0x67, 0x99, 0xc5, 0x1d, 0xe2, 0x79, 0xe2, 0xec, 0x96, 0x63, 0x9, 0xde, 0x23, 0x1e, 0x65, 0x15, 0xb9, 0x44, 0x7c, 0x42, 0x9c, 0xe0, 0x74, 0x40, 0xe2, 0x5b, 0xa1, 0x2b, 0x1e, 0xbf, 0x9, 0x2e, 0x7b, 0xfc, 0x25, 0x98, 0x17, 0xf2, 0x8b, 0x80, 0x5f, 0xf4, 0x94, 0xca, 0x5d, 0xac, 0x74, 0x31, 0xab, 0x70, 0x83, 0x78, 0x8a, 0x38, 0x6e, 0xe8, 0x35, 0xd6, 0x3e, 0x8f, 0xb8, 0x49, 0x44, 0x35, 0x57, 0x96, 0x29, 0x8f, 0xd3, 0x8a, 0xc1, 0x46, 0x1e, 0x19, 0xa4, 0x21, 0x41, 0x41, 0xd, 0x9b, 0xd0, 0xe1, 0x20, 0x49, 0xd9, 0xa4, 0x99, 0xf5, 0xf6, 0xa5, 0x5a, 0xbe, 0x25, 0x54, 0xc9, 0xc3, 0xe8, 0x6f, 0xa1, 0xe, 0x4e, 0x8e, 0x32, 0x2a, 0xe4, 0x4d, 0x90, 0x5a, 0xa3, 0xae, 0x2a, 0x65, 0x8d, 0x74, 0x95, 0x3e, 0x1d, 0x75, 0x31, 0xf7, 0xff, 0xf3, 0xb4, 0xb5, 0x99, 0x69, 0xaf, 0x7b, 0x24, 0xd, 0x4, 0x5f, 0x5d, 0xf7, 0x73, 0x2, 0x8, 0xed, 0x3, 0xcd, 0x86, 0xeb, 0xfe, 0x9e, 0xba, 0x6e, 0xf3, 0xc, 0x8, 0xbc, 0x0, 0xd7, 0x66, 0xc7, 0x5f, 0xa5, 0x39, 0xcd, 0x7d, 0x93, 0xde, 0xe8, 0x68, 0xf1, 0x63, 0x20, 0xba, 0x3, 0x5c, 0xde, 0x74, 0x34, 0xe5, 0x0, 0xb8, 0xda, 0x5, 0xc6, 0x9e, 0x2d, 0x99, 0xcb, 0x2d, 0x29, 0x40, 0xcb, 0xaf, 0x69, 0xc0, 0xc7, 0x5, 0x30, 0x5c, 0x4, 0x46, 0xee, 0x81, 0xa1, 0x75, 0x6f, 0x56, 0xed, 0x7d, 0x9c, 0x3f, 0x1, 0x85, 0x6d, 0x7a, 0xa2, 0x3b, 0xe0, 0xf0, 0x8, 0x98, 0xa4, 0xfa, 0xe8, 0xc6, 0x1f, 0x7b, 0xde, 0x67, 0xcd, 0xda, 0x7, 0x3a, 0xfb, 0x0, 0x0, 0x0, 0x9, 0x70, 0x48, 0x59, 0x73, 0x0, 0x0, 0xb, 0x12, 0x0, 0x0, 0xb, 0x12, 0x1, 0xd2, 0xdd, 0x7e, 0xfc, 0x0, 0x0, 0x0, 0xa8, 0x50, 0x4c, 0x54, 0x45, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe8, 0xe5, 0xf1, 0x20, 0x1e, 0x23, 0x21, 0x1f, 0x24, 0x21, 0x1f, 0x24, 0x22, 0x20, 0x25, 0x1d, 0x1a, 0x20, 0x1d, 0x1d, 0x20, 0x1d, 0x1d, 0x22, 0x20, 0x1d, 0x22, 0x20, 0x1d, 0x25, 0x20, 0x20, 0x25, 0x22, 0x20, 0x25, 0xcf, 0xcd, 0xd7, 0xd0, 0xcd, 0xd7, 0xd1, 0xce, 0xd8, 0xd3, 0xd0, 0xda, 0xd4, 0xd1, 0xdb, 0xd5, 0xd3, 0xdc, 0xd6, 0xd4, 0xdd, 0xd7, 0xd6, 0xdf, 0xd9, 0xd7, 0xdf, 0xda, 0xd8, 0xe0, 0xdc, 0xda, 0xe2, 0xdd, 0xdb, 0xe3, 0xde, 0xdc, 0xe4, 0xdf, 0xdd, 0xe5, 0xe0, 0xde, 0xe6, 0xe1, 0xdf, 0xe7, 0xe2, 0xdf, 0xeb, 0xe3, 0xe1, 0xe8, 0xe5, 0xe2, 0xeb, 0xe8, 0xe5, 0xf1, 0xe8, 0x4e, 0x48, 0xd9, 0x0, 0x0, 0x0, 0x24, 0x74, 0x52, 0x4e, 0x53, 0x0, 0x3, 0x9, 0xc, 0xf, 0x15, 0x1d, 0x20, 0x22, 0x25, 0x30, 0x3a, 0x44, 0x52, 0x57, 0x59, 0x5b, 0x5e, 0x60, 0x7e, 0x92, 0x9e, 0x9f, 0xa1, 0xa2, 0xb8, 0xba, 0xbd, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf5, 0xb3, 0x97, 0xfb, 0x0, 0x0, 0x0, 0xea, 0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xed, 0x96, 0x31, 0xe, 0x83, 0x30, 0xc, 0x45, 0x6d, 0x93, 0xc2, 0xda, 0xb5, 0x13, 0xf7, 0x3f, 0x4a, 0xef, 0xd0, 0xa5, 0xc7, 0x28, 0x10, 0xff, 0xe, 0x4, 0x35, 0x88, 0xc6, 0x25, 0x48, 0x34, 0x2a, 0x6a, 0x16, 0x86, 0x3c, 0x7d, 0xbe, 0xfd, 0x49, 0x30, 0x51, 0xe1, 0xc5, 0xe1, 0xc1, 0xc2, 0xcc, 0xbc, 0xd8, 0x6, 0x0, 0x5, 0x22, 0x94, 0xa5, 0x72, 0xc2, 0x22, 0xb, 0x54, 0x15, 0x3a, 0x78, 0x5, 0x11, 0x91, 0x1b, 0xd1, 0xea, 0xd4, 0xf0, 0x1b, 0x59, 0x0, 0xc0, 0x83, 0x10, 0xa1, 0xe2, 0x9a, 0xba, 0x4d, 0x58, 0xbc, 0x13, 0x54, 0x23, 0x55, 0xe1, 0x36, 0x38, 0x5a, 0x14, 0xd3, 0xde, 0x64, 0x7c, 0x59, 0x40, 0x99, 0xc9, 0x27, 0x54, 0xdd, 0xe4, 0x4b, 0x26, 0x55, 0xa3, 0x49, 0x73, 0x55, 0x61, 0xc2, 0x3a, 0x94, 0xc8, 0x42, 0x27, 0x27, 0xaf, 0xc6, 0x7c, 0x4a, 0xcb, 0x85, 0xaa, 0xea, 0x34, 0x5a, 0xf7, 0xcc, 0xd8, 0xa0, 0x7a, 0x5c, 0x34, 0x23, 0x82, 0x1d, 0xd2, 0xda, 0x11, 0x3d, 0xaf, 0x45, 0xdd, 0x35, 0x89, 0x5c, 0x6, 0x1f, 0x9d, 0x2, 0xfb, 0xaa, 0x98, 0x1d, 0x98, 0x2, 0x68, 0x13, 0x32, 0x90, 0xf5, 0xd7, 0xdb, 0x6, 0xd4, 0x8, 0x0, 0xf4, 0xd, 0x3, 0xc5, 0xcb, 0xfa, 0xa5, 0xe, 0x1c, 0x34, 0xad, 0xff, 0xe7, 0x72, 0x44, 0x14, 0x40, 0x97, 0x46, 0x3a, 0x8c, 0x63, 0xcd, 0x9e, 0x69, 0x41, 0x2d, 0x34, 0x6c, 0xe6, 0xa3, 0xb0, 0x50, 0x64, 0xab, 0x86, 0x3f, 0x82, 0xb3, 0xc6, 0xc7, 0x7e, 0x88, 0x66, 0x42, 0x78, 0x82, 0x31, 0x94, 0x22, 0x77, 0xd4, 0x2d, 0xbe, 0x9e, 0x25, 0x9d, 0x7b, 0xb0, 0x59, 0x6d, 0x9f, 0xd7, 0x0, 0x0, 0x0, 0x0, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
};
static const unsigned char progress_bar_png[] = {
diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp
index 8550af8bcb..cab6c0378a 100644
--- a/scene/resources/environment.cpp
+++ b/scene/resources/environment.cpp
@@ -449,6 +449,7 @@ bool Environment::is_sdfgi_enabled() const {
}
void Environment::set_sdfgi_cascades(SDFGICascades p_cascades) {
+ ERR_FAIL_INDEX(p_cascades, SDFGI_CASCADES_8 + 1);
sdfgi_cascades = p_cascades;
_update_sdfgi();
}
diff --git a/scene/resources/immediate_mesh.cpp b/scene/resources/immediate_mesh.cpp
index ebe65605f8..05d1a7bf94 100644
--- a/scene/resources/immediate_mesh.cpp
+++ b/scene/resources/immediate_mesh.cpp
@@ -146,7 +146,7 @@ void ImmediateMesh::surface_add_vertex_2d(const Vector2 &p_vertex) {
}
void ImmediateMesh::surface_end() {
ERR_FAIL_COND_MSG(!surface_active, "Not creating any surface. Use surface_begin() to do it.");
- ERR_FAIL_COND_MSG(!vertices.size(), "No vertices were added, surface cant be created.");
+ ERR_FAIL_COND_MSG(!vertices.size(), "No vertices were added, surface can't be created.");
uint32_t format = ARRAY_FORMAT_VERTEX;
diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp
index 7d49533afd..08f7274ff6 100644
--- a/scene/resources/material.cpp
+++ b/scene/resources/material.cpp
@@ -278,8 +278,8 @@ void ShaderMaterial::get_argument_options(const StringName &p_function, int p_id
if (shader.is_valid()) {
List<PropertyInfo> pl;
shader->get_param_list(&pl);
- for (List<PropertyInfo>::Element *E = pl.front(); E; E = E->next()) {
- r_options->push_back(quote_style + E->get().name.replace_first("shader_param/", "") + quote_style);
+ for (const PropertyInfo &E : pl) {
+ r_options->push_back(quote_style + E.name.replace_first("shader_param/", "") + quote_style);
}
}
}
diff --git a/scene/resources/navigation_mesh.cpp b/scene/resources/navigation_mesh.cpp
index d2be2bdba1..ddc50c0490 100644
--- a/scene/resources/navigation_mesh.cpp
+++ b/scene/resources/navigation_mesh.cpp
@@ -329,9 +329,7 @@ Ref<Mesh> NavigationMesh::get_debug_mesh() {
Vector3 *tw = tmeshfaces.ptrw();
int tidx = 0;
- for (List<Face3>::Element *E = faces.front(); E; E = E->next()) {
- const Face3 &f = E->get();
-
+ for (const Face3 &f : faces) {
for (int j = 0; j < 3; j++) {
tw[tidx++] = f.vertex[j];
_EdgeKey ek;
@@ -366,8 +364,8 @@ Ref<Mesh> NavigationMesh::get_debug_mesh() {
{
Vector3 *w = varr.ptrw();
int idx = 0;
- for (List<Vector3>::Element *E = lines.front(); E; E = E->next()) {
- w[idx++] = E->get();
+ for (const Vector3 &E : lines) {
+ w[idx++] = E;
}
}
diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp
index 9bb2a4ddb8..eddbb9a842 100644
--- a/scene/resources/packed_scene.cpp
+++ b/scene/resources/packed_scene.cpp
@@ -206,8 +206,8 @@ Node *SceneState::instantiate(GenEditState p_edit_state) const {
node->set(snames[nprops[j].name], props[nprops[j].value], &valid);
//restore old state for new script, if exists
- for (List<Pair<StringName, Variant>>::Element *E = old_state.front(); E; E = E->next()) {
- node->set(E->get().first, E->get().second);
+ for (const Pair<StringName, Variant> &E : old_state) {
+ node->set(E.first, E.second);
}
} else {
Variant value = props[nprops[j].value];
@@ -477,13 +477,13 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Map
script->update_exports();
}
- for (List<PropertyInfo>::Element *E = plist.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : plist) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- String name = E->get().name;
- Variant value = p_node->get(E->get().name);
+ String name = E.name;
+ Variant value = p_node->get(E.name);
bool isdefault = false;
Variant default_value = ClassDB::class_get_default_property_value(type, name);
@@ -497,7 +497,7 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Map
}
// the version above makes more sense, because it does not rely on placeholder or usage flag
// in the script, just the default value function.
- // if (E->get().usage & PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE) {
+ // if (E.usage & PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE) {
// isdefault = true; //is script default value
// }
@@ -507,7 +507,7 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Map
// only save what has been changed
// only save changed properties in instance
- if ((E->get().usage & PROPERTY_USAGE_NO_INSTANCE_STATE) || E->get().name == "__meta__") {
+ if ((E.usage & PROPERTY_USAGE_NO_INSTANCE_STATE) || E.name == "__meta__") {
//property has requested that no instance state is saved, sorry
//also, meta won't be overridden or saved
continue;
@@ -520,7 +520,7 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Map
//check all levels of pack to see if the property exists somewhere
const PackState &ps = F->get();
- original = ps.state->get_property_value(ps.node, E->get().name, exists);
+ original = ps.state->get_property_value(ps.node, E.name, exists);
if (exists) {
break;
}
@@ -565,9 +565,7 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Map
List<Node::GroupInfo> groups;
p_node->get_groups(&groups);
- for (List<Node::GroupInfo>::Element *E = groups.front(); E; E = E->next()) {
- Node::GroupInfo &gi = E->get();
-
+ for (const Node::GroupInfo &gi : groups) {
if (!gi.persistent) {
continue;
}
@@ -577,9 +575,9 @@ Error SceneState::_parse_node(Node *p_owner, Node *p_node, int p_parent_idx, Map
*/
bool skip = false;
- for (List<PackState>::Element *F = pack_state_stack.front(); F; F = F->next()) {
+ for (const PackState &F : pack_state_stack) {
//check all levels of pack to see if the group was added somewhere
- const PackState &ps = F->get();
+ const PackState &ps = F;
if (ps.state->is_node_in_group(ps.node, gi.name)) {
skip = true;
break;
@@ -679,14 +677,14 @@ Error SceneState::_parse_connections(Node *p_owner, Node *p_node, Map<StringName
//ERR_FAIL_COND_V( !node_map.has(p_node), ERR_BUG);
//NodeData &nd = nodes[node_map[p_node]];
- for (List<MethodInfo>::Element *E = _signals.front(); E; E = E->next()) {
+ for (const MethodInfo &E : _signals) {
List<Node::Connection> conns;
- p_node->get_signal_connection_list(E->get().name, &conns);
+ p_node->get_signal_connection_list(E.name, &conns);
conns.sort();
- for (List<Node::Connection>::Element *F = conns.front(); F; F = F->next()) {
- const Node::Connection &c = F->get();
+ for (const Node::Connection &F : conns) {
+ const Node::Connection &c = F;
if (!(c.flags & CONNECT_PERSIST)) { //only persistent connections get saved
continue;
diff --git a/scene/resources/resource_format_text.cpp b/scene/resources/resource_format_text.cpp
index 5cf107e8ea..2b93414906 100644
--- a/scene/resources/resource_format_text.cpp
+++ b/scene/resources/resource_format_text.cpp
@@ -413,6 +413,17 @@ Error ResourceLoaderText::load() {
String type = next_tag.fields["type"];
String id = next_tag.fields["id"];
+ if (next_tag.fields.has("uid")) {
+ String uidt = next_tag.fields["uid"];
+ ResourceUID::ID uid = ResourceUID::get_singleton()->text_to_id(uidt);
+ if (uid != ResourceUID::INVALID_ID && ResourceUID::get_singleton()->has_id(uid)) {
+ // If a UID is found and the path is valid, it will be used, otherwise, it falls back to the path.
+ path = ResourceUID::get_singleton()->get_id_path(uid);
+ } else {
+ WARN_PRINT(String(res_path + ":" + itos(lines) + " - ext_resource, invalid UUID: " + uidt + " - using text path instead: " + path).utf8().get_data());
+ }
+ }
+
if (path.find("://") == -1 && path.is_rel_path()) {
// path is relative to file being loaded, so convert to a resource path
path = ProjectSettings::get_singleton()->localize_path(local_path.get_base_dir().plus_file(path));
@@ -746,7 +757,18 @@ void ResourceLoaderText::get_dependencies(FileAccess *p_f, List<String> *p_depen
String path = next_tag.fields["path"];
String type = next_tag.fields["type"];
- if (path.find("://") == -1 && path.is_rel_path()) {
+ bool using_uid = false;
+ if (next_tag.fields.has("uid")) {
+ //if uid exists, return uid in text format, not the path
+ String uidt = next_tag.fields["uid"];
+ ResourceUID::ID uid = ResourceUID::get_singleton()->text_to_id(uidt);
+ if (uid != ResourceUID::INVALID_ID) {
+ path = ResourceUID::get_singleton()->id_to_text(uid);
+ using_uid = true;
+ }
+ }
+
+ if (!using_uid && path.find("://") == -1 && path.is_rel_path()) {
// path is relative to file being loaded, so convert to a resource path
path = ProjectSettings::get_singleton()->localize_path(local_path.get_base_dir().plus_file(path));
}
@@ -819,6 +841,14 @@ Error ResourceLoaderText::rename_dependencies(FileAccess *p_f, const String &p_p
String id = next_tag.fields["id"];
String type = next_tag.fields["type"];
+ if (next_tag.fields.has("uid")) {
+ String uidt = next_tag.fields["uid"];
+ ResourceUID::ID uid = ResourceUID::get_singleton()->text_to_id(uidt);
+ if (uid != ResourceUID::INVALID_ID && ResourceUID::get_singleton()->has_id(uid)) {
+ // If a UID is found and the path is valid, it will be used, otherwise, it falls back to the path.
+ path = ResourceUID::get_singleton()->get_id_path(uid);
+ }
+ }
bool relative = false;
if (!path.begins_with("res://")) {
path = base_path.plus_file(path).simplify_path();
@@ -835,7 +865,14 @@ Error ResourceLoaderText::rename_dependencies(FileAccess *p_f, const String &p_p
path = base_path.path_to_file(path);
}
- fw->store_line("[ext_resource path=\"" + path + "\" type=\"" + type + "\" id=\"" + id + "\"]");
+ String s = "[ext_resource type=\"" + type + "\"";
+
+ ResourceUID::ID uid = ResourceSaver::get_resource_id_for_path(path);
+ if (uid != ResourceUID::INVALID_ID) {
+ s += " uid=\"" + ResourceUID::get_singleton()->id_to_text(uid) + "\"";
+ }
+ s += " path=\"" + path + "\" id=\"" + id + "\"]";
+ fw->store_line(s); // Bundled.
tag_end = f->get_position();
}
@@ -921,6 +958,12 @@ void ResourceLoaderText::open(FileAccess *p_f, bool p_skip_first_tag) {
return;
}
+ if (tag.fields.has("uid")) {
+ res_uid = ResourceUID::get_singleton()->text_to_id(tag.fields["uid"]);
+ } else {
+ res_uid = ResourceUID::INVALID_ID;
+ }
+
if (tag.fields.has("load_steps")) {
resources_total = tag.fields["load_steps"];
} else {
@@ -939,7 +982,6 @@ void ResourceLoaderText::open(FileAccess *p_f, bool p_skip_first_tag) {
rp.ext_func = _parse_ext_resources;
rp.sub_func = _parse_sub_resources;
- rp.func = nullptr;
rp.userdata = this;
}
@@ -976,7 +1018,12 @@ Error ResourceLoaderText::save_as_binary(FileAccess *p_f, const String &p_path)
bs_save_unicode_string(wf.f, is_scene ? "PackedScene" : resource_type);
wf->store_64(0); //offset to import metadata, this is no longer used
- for (int i = 0; i < 14; i++) {
+
+ wf->store_32(ResourceFormatSaverBinaryInstance::FORMAT_FLAG_NAMED_SCENE_IDS | ResourceFormatSaverBinaryInstance::FORMAT_FLAG_UIDS);
+
+ wf->store_64(res_uid);
+
+ for (int i = 0; i < ResourceFormatSaverBinaryInstance::RESERVED_FIELDS; i++) {
wf->store_32(0); // reserved
}
@@ -1018,9 +1065,15 @@ Error ResourceLoaderText::save_as_binary(FileAccess *p_f, const String &p_path)
String path = next_tag.fields["path"];
String type = next_tag.fields["type"];
String id = next_tag.fields["id"];
+ ResourceUID::ID uid = ResourceUID::INVALID_ID;
+ if (next_tag.fields.has("uid")) {
+ String uidt = next_tag.fields["uid"];
+ uid = ResourceUID::get_singleton()->text_to_id(uidt);
+ }
bs_save_unicode_string(wf.f, type);
bs_save_unicode_string(wf.f, path);
+ wf->store_64(uid);
int lindex = dummy_read.external_resources.size();
Ref<DummyResource> dr;
@@ -1167,12 +1220,12 @@ Error ResourceLoaderText::save_as_binary(FileAccess *p_f, const String &p_path)
int prop_count = 0;
- for (List<PropertyInfo>::Element *E = props.front(); E; E = E->next()) {
- if (!(E->get().usage & PROPERTY_USAGE_STORAGE)) {
+ for (const PropertyInfo &E : props) {
+ if (!(E.usage & PROPERTY_USAGE_STORAGE)) {
continue;
}
- String name = E->get().name;
+ String name = E.name;
Variant value = packed_scene->get(name);
Map<StringName, int> empty_string_map; //unused
@@ -1257,6 +1310,32 @@ String ResourceLoaderText::recognize(FileAccess *p_f) {
return tag.fields["type"];
}
+ResourceUID::ID ResourceLoaderText::get_uid(FileAccess *p_f) {
+ error = OK;
+
+ lines = 1;
+ f = p_f;
+
+ stream.f = f;
+
+ ignore_resource_parsing = true;
+
+ VariantParser::Tag tag;
+ Error err = VariantParser::parse_tag(&stream, lines, error_text, tag);
+
+ if (err) {
+ _printerr();
+ return ResourceUID::INVALID_ID;
+ }
+
+ if (tag.fields.has("uid")) { //field is optional
+ String uidt = tag.fields["uid"];
+ return ResourceUID::get_singleton()->text_to_id(uidt);
+ }
+
+ return ResourceUID::INVALID_ID;
+}
+
/////////////////////
RES ResourceFormatLoaderText::load(const String &p_path, const String &p_original_path, Error *r_error, bool p_use_sub_threads, float *r_progress, CacheMode p_cache_mode) {
@@ -1277,7 +1356,6 @@ RES ResourceFormatLoaderText::load(const String &p_path, const String &p_origina
loader.local_path = ProjectSettings::get_singleton()->localize_path(path);
loader.progress = r_progress;
loader.res_path = loader.local_path;
- //loader.set_local_path( ProjectSettings::get_singleton()->localize_path(p_path) );
loader.open(f);
err = loader.load();
if (r_error) {
@@ -1320,7 +1398,7 @@ String ResourceFormatLoaderText::get_resource_type(const String &p_path) const {
return String();
}
- //for anyhting else must test..
+ // ...for anything else must test...
FileAccess *f = FileAccess::open(p_path, FileAccess::READ);
if (!f) {
@@ -1330,11 +1408,28 @@ String ResourceFormatLoaderText::get_resource_type(const String &p_path) const {
ResourceLoaderText loader;
loader.local_path = ProjectSettings::get_singleton()->localize_path(p_path);
loader.res_path = loader.local_path;
- //loader.set_local_path( ProjectSettings::get_singleton()->localize_path(p_path) );
String r = loader.recognize(f);
return ClassDB::get_compatibility_remapped_class(r);
}
+ResourceUID::ID ResourceFormatLoaderText::get_resource_uid(const String &p_path) const {
+ String ext = p_path.get_extension().to_lower();
+
+ if (ext != "tscn" && ext != "tres") {
+ return ResourceUID::INVALID_ID;
+ }
+
+ FileAccess *f = FileAccess::open(p_path, FileAccess::READ);
+ if (!f) {
+ return ResourceUID::INVALID_ID; //could not read
+ }
+
+ ResourceLoaderText loader;
+ loader.local_path = ProjectSettings::get_singleton()->localize_path(p_path);
+ loader.res_path = loader.local_path;
+ return loader.get_uid(f);
+}
+
void ResourceFormatLoaderText::get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types) {
FileAccess *f = FileAccess::open(p_path, FileAccess::READ);
if (!f) {
@@ -1344,7 +1439,6 @@ void ResourceFormatLoaderText::get_dependencies(const String &p_path, List<Strin
ResourceLoaderText loader;
loader.local_path = ProjectSettings::get_singleton()->localize_path(p_path);
loader.res_path = loader.local_path;
- //loader.set_local_path( ProjectSettings::get_singleton()->localize_path(p_path) );
loader.get_dependencies(f, p_dependencies, p_add_types);
}
@@ -1357,7 +1451,6 @@ Error ResourceFormatLoaderText::rename_dependencies(const String &p_path, const
ResourceLoaderText loader;
loader.local_path = ProjectSettings::get_singleton()->localize_path(p_path);
loader.res_path = loader.local_path;
- //loader.set_local_path( ProjectSettings::get_singleton()->localize_path(p_path) );
return loader.rename_dependencies(f, p_path, p_map);
}
@@ -1373,7 +1466,6 @@ Error ResourceFormatLoaderText::convert_file_to_binary(const String &p_src_path,
const String &path = p_src_path;
loader.local_path = ProjectSettings::get_singleton()->localize_path(path);
loader.res_path = loader.local_path;
- //loader.set_local_path( ProjectSettings::get_singleton()->localize_path(p_path) );
loader.open(f);
return loader.save_as_binary(f, p_dst_path);
}
@@ -1488,8 +1580,8 @@ void ResourceFormatSaverTextInstance::_find_resources(const Variant &p_variant,
Dictionary d = p_variant;
List<Variant> keys;
d.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- Variant v = d[E->get()];
+ for (const Variant &E : keys) {
+ Variant v = d[E];
_find_resources(v);
}
} break;
@@ -1548,6 +1640,12 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path, const RES &p_r
}
title += "format=" + itos(FORMAT_VERSION) + "";
+ ResourceUID::ID uid = ResourceSaver::get_resource_id_for_path(local_path, true);
+
+ if (uid != ResourceUID::INVALID_ID) {
+ title += " uid=\"" + ResourceUID::get_singleton()->id_to_text(uid) + "\"";
+ }
+
f->store_string(title);
f->store_line("]\n"); // One empty line.
}
@@ -1612,7 +1710,14 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path, const RES &p_r
for (int i = 0; i < sorted_er.size(); i++) {
String p = sorted_er[i].resource->get_path();
- f->store_string("[ext_resource path=\"" + p + "\" type=\"" + sorted_er[i].resource->get_save_class() + "\" id=\"" + sorted_er[i].id + "\"]\n"); // Bundled.
+ String s = "[ext_resource type=\"" + sorted_er[i].resource->get_save_class() + "\"";
+
+ ResourceUID::ID uid = ResourceSaver::get_resource_id_for_path(p, false);
+ if (uid != ResourceUID::INVALID_ID) {
+ s += " uid=\"" + ResourceUID::get_singleton()->id_to_text(uid) + "\"";
+ }
+ s += " path=\"" + p + "\" id=\"" + sorted_er[i].id + "\"]\n";
+ f->store_string(s); // Bundled.
}
if (external_resources.size()) {
diff --git a/scene/resources/resource_format_text.h b/scene/resources/resource_format_text.h
index 5173619a17..373e71b2c4 100644
--- a/scene/resources/resource_format_text.h
+++ b/scene/resources/resource_format_text.h
@@ -74,6 +74,8 @@ class ResourceLoaderText {
mutable int lines = 0;
+ ResourceUID::ID res_uid = ResourceUID::INVALID_ID;
+
Map<String, String> remaps;
static Error _parse_sub_resources(void *p_self, VariantParser::Stream *p_stream, Ref<Resource> &r_res, int &line, String &r_err_str) { return reinterpret_cast<ResourceLoaderText *>(p_self)->_parse_sub_resource(p_stream, r_res, line, r_err_str); }
@@ -120,6 +122,7 @@ public:
void open(FileAccess *p_f, bool p_skip_first_tag = false);
String recognize(FileAccess *p_f);
+ ResourceUID::ID get_uid(FileAccess *p_f);
void get_dependencies(FileAccess *p_f, List<String> *p_dependencies, bool p_add_types);
Error rename_dependencies(FileAccess *p_f, const String &p_path, const Map<String, String> &p_map);
@@ -136,6 +139,7 @@ public:
virtual void get_recognized_extensions(List<String> *p_extensions) const;
virtual bool handles_type(const String &p_type) const;
virtual String get_resource_type(const String &p_path) const;
+ virtual ResourceUID::ID get_resource_uid(const String &p_path) const;
virtual void get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types = false);
virtual Error rename_dependencies(const String &p_path, const Map<String, String> &p_map);
diff --git a/scene/resources/shader.cpp b/scene/resources/shader.cpp
index f19d08dbb1..424a54f344 100644
--- a/scene/resources/shader.cpp
+++ b/scene/resources/shader.cpp
@@ -72,13 +72,12 @@ void Shader::get_param_list(List<PropertyInfo> *p_params) const {
params_cache.clear();
params_cache_dirty = false;
- for (List<PropertyInfo>::Element *E = local.front(); E; E = E->next()) {
- PropertyInfo pi = E->get();
+ for (PropertyInfo &pi : local) {
if (default_textures.has(pi.name)) { //do not show default textures
continue;
}
pi.name = "shader_param/" + pi.name;
- params_cache[pi.name] = E->get().name;
+ params_cache[pi.name] = pi.name;
if (p_params) {
//small little hack
if (pi.type == Variant::RID) {
diff --git a/scene/resources/sprite_frames.cpp b/scene/resources/sprite_frames.cpp
index df80084c5c..e9adf67559 100644
--- a/scene/resources/sprite_frames.cpp
+++ b/scene/resources/sprite_frames.cpp
@@ -100,8 +100,8 @@ Vector<String> SpriteFrames::_get_animation_list() const {
Vector<String> ret;
List<StringName> al;
get_animation_list(&al);
- for (List<StringName>::Element *E = al.front(); E; E = E->next()) {
- ret.push_back(E->get());
+ for (const StringName &E : al) {
+ ret.push_back(E);
}
return ret;
diff --git a/scene/resources/surface_tool.cpp b/scene/resources/surface_tool.cpp
index 9f8c35b668..875aa30824 100644
--- a/scene/resources/surface_tool.cpp
+++ b/scene/resources/surface_tool.cpp
@@ -1120,6 +1120,7 @@ SurfaceTool::CustomFormat SurfaceTool::get_custom_format(int p_index) const {
void SurfaceTool::optimize_indices_for_cache() {
ERR_FAIL_COND(optimize_vertex_cache_func == nullptr);
ERR_FAIL_COND(index_array.size() == 0);
+ ERR_FAIL_COND(index_array.size() % 3 != 0);
LocalVector old_index_array = index_array;
memset(index_array.ptr(), 0, index_array.size() * sizeof(int));
diff --git a/scene/resources/syntax_highlighter.cpp b/scene/resources/syntax_highlighter.cpp
index bf889d7a1c..173ce2adce 100644
--- a/scene/resources/syntax_highlighter.cpp
+++ b/scene/resources/syntax_highlighter.cpp
@@ -529,8 +529,8 @@ void CodeHighlighter::set_color_regions(const Dictionary &p_color_regions) {
List<Variant> keys;
p_color_regions.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- String key = E->get();
+ for (const Variant &E : keys) {
+ String key = E;
String start_key = key.get_slice(" ", 0);
String end_key = key.get_slice_count(" ") > 1 ? key.get_slice(" ", 1) : String();
diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp
index 38042d84fd..2ea55843ad 100644
--- a/scene/resources/texture.cpp
+++ b/scene/resources/texture.cpp
@@ -354,11 +354,11 @@ Ref<Image> StreamTexture2D::load_image_from_file(FileAccess *f, int p_size_limit
}
Ref<Image> img;
- if (data_format == DATA_FORMAT_BASIS_UNIVERSAL) {
+ if (data_format == DATA_FORMAT_BASIS_UNIVERSAL && Image::basis_universal_unpacker) {
img = Image::basis_universal_unpacker(pv);
- } else if (data_format == DATA_FORMAT_PNG) {
+ } else if (data_format == DATA_FORMAT_PNG && Image::png_unpacker) {
img = Image::png_unpacker(pv);
- } else {
+ } else if (data_format == DATA_FORMAT_WEBP && Image::webp_unpacker) {
img = Image::webp_unpacker(pv);
}
diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp
index 303bbf38f4..e4a731c7f7 100644
--- a/scene/resources/theme.cpp
+++ b/scene/resources/theme.cpp
@@ -447,8 +447,8 @@ void Theme::_get_property_list(List<PropertyInfo> *p_list) const {
// Sort and store properties.
list.sort();
- for (List<PropertyInfo>::Element *E = list.front(); E; E = E->next()) {
- p_list->push_back(E->get());
+ for (const PropertyInfo &E : list) {
+ p_list->push_back(E);
}
}
@@ -1275,15 +1275,15 @@ void Theme::get_type_variation_list(const StringName &p_base_type, List<StringNa
return;
}
- for (const List<StringName>::Element *E = variation_base_map[p_base_type].front(); E; E = E->next()) {
+ for (const StringName &E : variation_base_map[p_base_type]) {
// Prevent infinite loops if variants were set to be cross-dependent (that's still invalid usage, but handling for stability sake).
- if (p_list->find(E->get())) {
+ if (p_list->find(E)) {
continue;
}
- p_list->push_back(E->get());
+ p_list->push_back(E);
// Continue looking for sub-variations.
- get_type_variation_list(E->get(), p_list);
+ get_type_variation_list(E, p_list);
}
}
diff --git a/scene/resources/tile_set.cpp b/scene/resources/tile_set.cpp
index f9b5a4cfec..fcd31143a8 100644
--- a/scene/resources/tile_set.cpp
+++ b/scene/resources/tile_set.cpp
@@ -62,11 +62,6 @@ const char *TileSet::CELL_NEIGHBOR_ENUM_TO_TEXT[] = {
"top_right_corner"
};
-// --- Plugins ---
-Vector<TileSetPlugin *> TileSet::get_tile_set_atlas_plugins() const {
- return tile_set_plugins_vector;
-}
-
// -- Shape and layout --
void TileSet::set_tile_shape(TileSet::TileShape p_shape) {
tile_shape = p_shape;
@@ -205,21 +200,11 @@ void TileSet::set_uv_clipping(bool p_uv_clipping) {
uv_clipping = p_uv_clipping;
emit_changed();
}
+
bool TileSet::is_uv_clipping() const {
return uv_clipping;
};
-void TileSet::set_y_sorting(bool p_y_sort) {
- if (y_sorting == p_y_sort) {
- return;
- }
- y_sorting = p_y_sort;
- emit_changed();
-}
-bool TileSet::is_y_sorting() const {
- return y_sorting;
-};
-
void TileSet::set_occlusion_layers_count(int p_occlusion_layers_count) {
ERR_FAIL_COND(p_occlusion_layers_count < 0);
if (occlusion_layers.size() == p_occlusion_layers_count) {
@@ -2604,8 +2589,6 @@ void TileSet::_bind_methods() {
// Rendering.
ClassDB::bind_method(D_METHOD("set_uv_clipping", "uv_clipping"), &TileSet::set_uv_clipping);
ClassDB::bind_method(D_METHOD("is_uv_clipping"), &TileSet::is_uv_clipping);
- ClassDB::bind_method(D_METHOD("set_y_sorting", "y_sorting"), &TileSet::set_y_sorting);
- ClassDB::bind_method(D_METHOD("is_y_sorting"), &TileSet::is_y_sorting);
ClassDB::bind_method(D_METHOD("set_occlusion_layers_count", "occlusion_layers_count"), &TileSet::set_occlusion_layers_count);
ClassDB::bind_method(D_METHOD("get_occlusion_layers_count"), &TileSet::get_occlusion_layers_count);
@@ -2670,7 +2653,6 @@ void TileSet::_bind_methods() {
ADD_GROUP("Rendering", "");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "uv_clipping"), "set_uv_clipping", "is_uv_clipping");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "y_sorting"), "set_y_sorting", "is_y_sorting");
ADD_PROPERTY(PropertyInfo(Variant::INT, "occlusion_layers_count", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_EDITOR), "set_occlusion_layers_count", "get_occlusion_layers_count");
ADD_GROUP("Physics", "");
@@ -2727,12 +2709,6 @@ TileSet::TileSet() {
// Instantiate the tile meshes.
tile_lines_mesh.instantiate();
tile_filled_mesh.instantiate();
-
- // Instanciate and list all plugins.
- tile_set_plugins_vector.append(memnew(TileSetPluginAtlasRendering));
- tile_set_plugins_vector.append(memnew(TileSetPluginAtlasPhysics));
- tile_set_plugins_vector.append(memnew(TileSetPluginAtlasNavigation));
- tile_set_plugins_vector.append(memnew(TileSetPluginScenesCollections));
}
TileSet::~TileSet() {
@@ -2744,9 +2720,6 @@ TileSet::~TileSet() {
while (!source_ids.is_empty()) {
remove_source(source_ids[0]);
}
- for (int i = 0; i < tile_set_plugins_vector.size(); i++) {
- memdelete(tile_set_plugins_vector[i]);
- }
}
/////////////////////////////// TileSetSource //////////////////////////////////////
@@ -2972,23 +2945,22 @@ void TileSetAtlasSource::_get_property_list(List<PropertyInfo> *p_list) const {
// Get the alternative tile's properties and append them to the list of properties.
List<PropertyInfo> alternative_property_list;
E_alternative->get()->get_property_list(&alternative_property_list);
- for (List<PropertyInfo>::Element *E_property = alternative_property_list.front(); E_property; E_property = E_property->next()) {
- property_info = E_property->get();
+ for (PropertyInfo &alternative_property_info : alternative_property_list) {
bool valid;
- Variant default_value = ClassDB::class_get_default_property_value("TileData", property_info.name, &valid);
- Variant value = E_alternative->get()->get(property_info.name);
+ Variant default_value = ClassDB::class_get_default_property_value("TileData", alternative_property_info.name, &valid);
+ Variant value = E_alternative->get()->get(alternative_property_info.name);
if (valid && value == default_value) {
property_info.usage ^= PROPERTY_USAGE_STORAGE;
}
- property_info.name = vformat("%s/%s", vformat("%d", E_alternative->key()), property_info.name);
- tile_property_list.push_back(property_info);
+ alternative_property_info.name = vformat("%s/%s", vformat("%d", E_alternative->key()), alternative_property_info.name);
+ tile_property_list.push_back(alternative_property_info);
}
}
// Add all alternative.
- for (List<PropertyInfo>::Element *E_property = tile_property_list.front(); E_property; E_property = E_property->next()) {
- E_property->get().name = vformat("%s/%s", vformat("%d:%d", E_tile->key().x, E_tile->key().y), E_property->get().name);
- p_list->push_back(E_property->get());
+ for (PropertyInfo &tile_property_info : tile_property_list) {
+ tile_property_info.name = vformat("%s/%s", vformat("%d:%d", E_tile->key().x, E_tile->key().y), tile_property_info.name);
+ p_list->push_back(tile_property_info);
}
}
}
@@ -3817,6 +3789,7 @@ int TileData::get_terrain_set() const {
}
void TileData::set_peering_bit_terrain(TileSet::CellNeighbor p_peering_bit, int p_terrain_index) {
+ ERR_FAIL_INDEX(p_peering_bit, TileSet::CellNeighbor::CELL_NEIGHBOR_MAX);
ERR_FAIL_COND(terrain_set < 0);
ERR_FAIL_COND(p_terrain_index < -1);
if (tile_set) {
@@ -4238,842 +4211,3 @@ void TileData::_bind_methods() {
ADD_SIGNAL(MethodInfo("changed"));
}
-/////////////////////////////// TileSetPluginAtlasRendering //////////////////////////////////////
-
-void TileSetPluginAtlasRendering::tilemap_notification(TileMap *p_tile_map, int p_what) {
- switch (p_what) {
- case CanvasItem::NOTIFICATION_VISIBILITY_CHANGED: {
- bool visible = p_tile_map->is_visible_in_tree();
- for (Map<Vector2i, TileMapQuadrant>::Element *E_quadrant = p_tile_map->get_quadrant_map().front(); E_quadrant; E_quadrant = E_quadrant->next()) {
- TileMapQuadrant &q = E_quadrant->get();
-
- // Update occluders transform.
- for (Map<Vector2i, Vector2i, TileMapQuadrant::CoordsWorldComparator>::Element *E_cell = q.world_to_map.front(); E_cell; E_cell = E_cell->next()) {
- Transform2D xform;
- xform.set_origin(E_cell->key());
- for (List<RID>::Element *E_occluder_id = q.occluders.front(); E_occluder_id; E_occluder_id = E_occluder_id->next()) {
- RS::get_singleton()->canvas_light_occluder_set_enabled(E_occluder_id->get(), visible);
- }
- }
- }
- } break;
- case CanvasItem::NOTIFICATION_TRANSFORM_CHANGED: {
- if (!p_tile_map->is_inside_tree()) {
- return;
- }
-
- for (Map<Vector2i, TileMapQuadrant>::Element *E_quadrant = p_tile_map->get_quadrant_map().front(); E_quadrant; E_quadrant = E_quadrant->next()) {
- TileMapQuadrant &q = E_quadrant->get();
-
- // Update occluders transform.
- for (Map<Vector2i, Vector2i, TileMapQuadrant::CoordsWorldComparator>::Element *E_cell = q.world_to_map.front(); E_cell; E_cell = E_cell->next()) {
- Transform2D xform;
- xform.set_origin(E_cell->key());
- for (List<RID>::Element *E_occluder_id = q.occluders.front(); E_occluder_id; E_occluder_id = E_occluder_id->next()) {
- RS::get_singleton()->canvas_light_occluder_set_transform(E_occluder_id->get(), p_tile_map->get_global_transform() * xform);
- }
- }
- }
- } break;
- case CanvasItem::NOTIFICATION_DRAW: {
- Ref<TileSet> tile_set = p_tile_map->get_tileset();
- if (tile_set.is_valid() || p_tile_map->is_y_sort_enabled()) {
- RenderingServer::get_singleton()->canvas_item_set_sort_children_by_y(p_tile_map->get_canvas_item(), tile_set->is_y_sorting() || p_tile_map->is_y_sort_enabled());
- }
- } break;
- }
-}
-
-void TileSetPluginAtlasRendering::draw_tile(RID p_canvas_item, Vector2i p_position, const Ref<TileSet> p_tile_set, int p_atlas_source_id, Vector2i p_atlas_coords, int p_alternative_tile, Color p_modulation) {
- ERR_FAIL_COND(!p_tile_set.is_valid());
- ERR_FAIL_COND(!p_tile_set->has_source(p_atlas_source_id));
- ERR_FAIL_COND(!p_tile_set->get_source(p_atlas_source_id)->has_tile(p_atlas_coords));
- ERR_FAIL_COND(!p_tile_set->get_source(p_atlas_source_id)->has_alternative_tile(p_atlas_coords, p_alternative_tile));
-
- TileSetSource *source = *p_tile_set->get_source(p_atlas_source_id);
- TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
- if (atlas_source) {
- // Get the texture.
- Ref<Texture2D> tex = atlas_source->get_texture();
- if (!tex.is_valid()) {
- return;
- }
-
- // Check if we are in the texture, return otherwise.
- Vector2i grid_size = atlas_source->get_atlas_grid_size();
- if (p_atlas_coords.x >= grid_size.x || p_atlas_coords.y >= grid_size.y) {
- return;
- }
-
- // Get tile data.
- TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(p_atlas_coords, p_alternative_tile));
-
- // Compute the offset
- Rect2i source_rect = atlas_source->get_tile_texture_region(p_atlas_coords);
- Vector2i tile_offset = atlas_source->get_tile_effective_texture_offset(p_atlas_coords, p_alternative_tile);
-
- // Compute the destination rectangle in the CanvasItem.
- Rect2 dest_rect;
- dest_rect.size = source_rect.size;
- dest_rect.size.x += fp_adjust;
- dest_rect.size.y += fp_adjust;
-
- bool transpose = tile_data->get_transpose();
- if (transpose) {
- dest_rect.position = (p_position - Vector2(dest_rect.size.y, dest_rect.size.x) / 2 - tile_offset);
- } else {
- dest_rect.position = (p_position - dest_rect.size / 2 - tile_offset);
- }
-
- if (tile_data->get_flip_h()) {
- dest_rect.size.x = -dest_rect.size.x;
- }
-
- if (tile_data->get_flip_v()) {
- dest_rect.size.y = -dest_rect.size.y;
- }
-
- // Get the tile modulation.
- Color modulate = tile_data->get_modulate();
- modulate = Color(modulate.r * p_modulation.r, modulate.g * p_modulation.g, modulate.b * p_modulation.b, modulate.a * p_modulation.a);
-
- // Draw the tile.
- tex->draw_rect_region(p_canvas_item, dest_rect, source_rect, modulate, transpose, p_tile_set->is_uv_clipping());
- }
-}
-
-void TileSetPluginAtlasRendering::update_dirty_quadrants(TileMap *p_tile_map, SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) {
- ERR_FAIL_COND(!p_tile_map);
- ERR_FAIL_COND(!p_tile_map->is_inside_tree());
- Ref<TileSet> tile_set = p_tile_map->get_tileset();
- ERR_FAIL_COND(!tile_set.is_valid());
-
- bool visible = p_tile_map->is_visible_in_tree();
-
- SelfList<TileMapQuadrant> *q_list_element = r_dirty_quadrant_list.first();
- while (q_list_element) {
- TileMapQuadrant &q = *q_list_element->self();
-
- RenderingServer *rs = RenderingServer::get_singleton();
-
- // Free the canvas items.
- for (List<RID>::Element *E = q.canvas_items.front(); E; E = E->next()) {
- rs->free(E->get());
- }
- q.canvas_items.clear();
-
- // Free the occluders.
- for (List<RID>::Element *E = q.occluders.front(); E; E = E->next()) {
- rs->free(E->get());
- }
- q.occluders.clear();
-
- // Those allow to group cell per material or z-index.
- Ref<ShaderMaterial> prev_material;
- int prev_z_index = 0;
- RID prev_canvas_item;
-
- // Iterate over the cells of the quadrant.
- for (Map<Vector2i, Vector2i, TileMapQuadrant::CoordsWorldComparator>::Element *E_cell = q.world_to_map.front(); E_cell; E_cell = E_cell->next()) {
- TileMapCell c = p_tile_map->get_cell(E_cell->value(), true);
-
- TileSetSource *source;
- if (tile_set->has_source(c.source_id)) {
- source = *tile_set->get_source(c.source_id);
-
- if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
- continue;
- }
-
- TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
- if (atlas_source) {
- // Get the tile data.
- TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(c.get_atlas_coords(), c.alternative_tile));
- Ref<ShaderMaterial> mat = tile_data->tile_get_material();
- int z_index = tile_data->get_z_index();
-
- // Quandrant pos.
- Vector2 position = p_tile_map->map_to_world(q.coords * p_tile_map->get_effective_quadrant_size());
- if (tile_set->is_y_sorting()) {
- // When Y-sorting, the quandrant size is sure to be 1, we can thus offset the CanvasItem.
- position.y += tile_data->get_y_sort_origin();
- }
-
- // --- CanvasItems ---
- // Create two canvas items, for rendering and debug.
- RID canvas_item;
-
- // Check if the material or the z_index changed.
- if (prev_canvas_item == RID() || prev_material != mat || prev_z_index != z_index) {
- // If so, create a new CanvasItem.
- canvas_item = rs->canvas_item_create();
- if (mat.is_valid()) {
- rs->canvas_item_set_material(canvas_item, mat->get_rid());
- }
- rs->canvas_item_set_parent(canvas_item, p_tile_map->get_canvas_item());
- rs->canvas_item_set_use_parent_material(canvas_item, p_tile_map->get_use_parent_material() || p_tile_map->get_material().is_valid());
-
- Transform2D xform;
- xform.set_origin(position);
- rs->canvas_item_set_transform(canvas_item, xform);
-
- rs->canvas_item_set_light_mask(canvas_item, p_tile_map->get_light_mask());
- rs->canvas_item_set_z_index(canvas_item, z_index);
-
- rs->canvas_item_set_default_texture_filter(canvas_item, RS::CanvasItemTextureFilter(p_tile_map->CanvasItem::get_texture_filter()));
- rs->canvas_item_set_default_texture_repeat(canvas_item, RS::CanvasItemTextureRepeat(p_tile_map->CanvasItem::get_texture_repeat()));
-
- q.canvas_items.push_back(canvas_item);
-
- prev_canvas_item = canvas_item;
- prev_material = mat;
- prev_z_index = z_index;
-
- } else {
- // Keep the same canvas_item to draw on.
- canvas_item = prev_canvas_item;
- }
-
- // Drawing the tile in the canvas item.
- draw_tile(canvas_item, E_cell->key() - position, tile_set, c.source_id, c.get_atlas_coords(), c.alternative_tile, p_tile_map->get_self_modulate());
-
- // --- Occluders ---
- for (int i = 0; i < tile_set->get_occlusion_layers_count(); i++) {
- Transform2D xform;
- xform.set_origin(E_cell->key());
- if (tile_data->get_occluder(i).is_valid()) {
- RID occluder_id = rs->canvas_light_occluder_create();
- rs->canvas_light_occluder_set_enabled(occluder_id, visible);
- rs->canvas_light_occluder_set_transform(occluder_id, p_tile_map->get_global_transform() * xform);
- rs->canvas_light_occluder_set_polygon(occluder_id, tile_data->get_occluder(i)->get_rid());
- rs->canvas_light_occluder_attach_to_canvas(occluder_id, p_tile_map->get_canvas());
- rs->canvas_light_occluder_set_light_mask(occluder_id, tile_set->get_occlusion_layer_light_mask(i));
- q.occluders.push_back(occluder_id);
- }
- }
- }
- }
- }
-
- quadrant_order_dirty = true;
- q_list_element = q_list_element->next();
- }
-
- // Reset the drawing indices
- if (quadrant_order_dirty) {
- int index = -(int64_t)0x80000000; //always must be drawn below children.
-
- // Sort the quadrants coords per world coordinates
- Map<Vector2i, Vector2i, TileMapQuadrant::CoordsWorldComparator> world_to_map;
- Map<Vector2i, TileMapQuadrant> quadrant_map = p_tile_map->get_quadrant_map();
- for (Map<Vector2i, TileMapQuadrant>::Element *E = quadrant_map.front(); E; E = E->next()) {
- world_to_map[p_tile_map->map_to_world(E->key())] = E->key();
- }
-
- // Sort the quadrants
- for (Map<Vector2i, Vector2i, TileMapQuadrant::CoordsWorldComparator>::Element *E = world_to_map.front(); E; E = E->next()) {
- TileMapQuadrant &q = quadrant_map[E->value()];
- for (List<RID>::Element *F = q.canvas_items.front(); F; F = F->next()) {
- RS::get_singleton()->canvas_item_set_draw_index(F->get(), index++);
- }
- }
-
- quadrant_order_dirty = false;
- }
-}
-
-void TileSetPluginAtlasRendering::create_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) {
- Ref<TileSet> tile_set = p_tile_map->get_tileset();
- ERR_FAIL_COND(!tile_set.is_valid());
-
- quadrant_order_dirty = true;
-}
-
-void TileSetPluginAtlasRendering::cleanup_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) {
- // Free the canvas items.
- for (List<RID>::Element *E = p_quadrant->canvas_items.front(); E; E = E->next()) {
- RenderingServer::get_singleton()->free(E->get());
- }
- p_quadrant->canvas_items.clear();
-
- // Free the occluders.
- for (List<RID>::Element *E = p_quadrant->occluders.front(); E; E = E->next()) {
- RenderingServer::get_singleton()->free(E->get());
- }
- p_quadrant->occluders.clear();
-}
-
-void TileSetPluginAtlasRendering::draw_quadrant_debug(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) {
- Ref<TileSet> tile_set = p_tile_map->get_tileset();
- ERR_FAIL_COND(!tile_set.is_valid());
-
- if (!Engine::get_singleton()->is_editor_hint()) {
- return;
- }
-
- // Draw a placeholder for scenes needing one.
- RenderingServer *rs = RenderingServer::get_singleton();
- Vector2 quadrant_pos = p_tile_map->map_to_world(p_quadrant->coords * p_tile_map->get_effective_quadrant_size());
- for (Set<Vector2i>::Element *E_cell = p_quadrant->cells.front(); E_cell; E_cell = E_cell->next()) {
- const TileMapCell &c = p_tile_map->get_cell(E_cell->get(), true);
-
- TileSetSource *source;
- if (tile_set->has_source(c.source_id)) {
- source = *tile_set->get_source(c.source_id);
-
- if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
- continue;
- }
-
- TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
- if (atlas_source) {
- Vector2i grid_size = atlas_source->get_atlas_grid_size();
- if (!atlas_source->get_texture().is_valid() || c.get_atlas_coords().x >= grid_size.x || c.get_atlas_coords().y >= grid_size.y) {
- // Generate a random color from the hashed values of the tiles.
- Array to_hash;
- to_hash.push_back(c.source_id);
- to_hash.push_back(c.get_atlas_coords());
- to_hash.push_back(c.alternative_tile);
- uint32_t hash = RandomPCG(to_hash.hash()).rand();
-
- Color color;
- color = color.from_hsv(
- (float)((hash >> 24) & 0xFF) / 256.0,
- Math::lerp(0.5, 1.0, (float)((hash >> 16) & 0xFF) / 256.0),
- Math::lerp(0.5, 1.0, (float)((hash >> 8) & 0xFF) / 256.0),
- 0.8);
-
- // Draw a placeholder tile.
- Transform2D xform;
- xform.set_origin(p_tile_map->map_to_world(E_cell->get()) - quadrant_pos);
- rs->canvas_item_add_set_transform(p_quadrant->debug_canvas_item, xform);
- rs->canvas_item_add_circle(p_quadrant->debug_canvas_item, Vector2(), MIN(tile_set->get_tile_size().x, tile_set->get_tile_size().y) / 4.0, color);
- }
- }
- }
- }
-}
-
-/////////////////////////////// TileSetPluginAtlasPhysics //////////////////////////////////////
-
-void TileSetPluginAtlasPhysics::tilemap_notification(TileMap *p_tile_map, int p_what) {
- switch (p_what) {
- case CanvasItem::NOTIFICATION_TRANSFORM_CHANGED: {
- // Update the bodies transforms.
- if (p_tile_map->is_inside_tree()) {
- Map<Vector2i, TileMapQuadrant> quadrant_map = p_tile_map->get_quadrant_map();
- Transform2D global_transform = p_tile_map->get_global_transform();
-
- for (Map<Vector2i, TileMapQuadrant>::Element *E = quadrant_map.front(); E; E = E->next()) {
- TileMapQuadrant &q = E->get();
-
- Transform2D xform;
- xform.set_origin(p_tile_map->map_to_world(E->key() * p_tile_map->get_effective_quadrant_size()));
- xform = global_transform * xform;
-
- for (int body_index = 0; body_index < q.bodies.size(); body_index++) {
- PhysicsServer2D::get_singleton()->body_set_state(q.bodies[body_index], PhysicsServer2D::BODY_STATE_TRANSFORM, xform);
- }
- }
- }
- } break;
- }
-}
-
-void TileSetPluginAtlasPhysics::update_dirty_quadrants(TileMap *p_tile_map, SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) {
- ERR_FAIL_COND(!p_tile_map);
- ERR_FAIL_COND(!p_tile_map->is_inside_tree());
- Ref<TileSet> tile_set = p_tile_map->get_tileset();
- ERR_FAIL_COND(!tile_set.is_valid());
-
- Transform2D global_transform = p_tile_map->get_global_transform();
- PhysicsServer2D *ps = PhysicsServer2D::get_singleton();
-
- SelfList<TileMapQuadrant> *q_list_element = r_dirty_quadrant_list.first();
- while (q_list_element) {
- TileMapQuadrant &q = *q_list_element->self();
-
- Vector2 quadrant_pos = p_tile_map->map_to_world(q.coords * p_tile_map->get_effective_quadrant_size());
-
- // Clear shapes.
- for (int body_index = 0; body_index < q.bodies.size(); body_index++) {
- ps->body_clear_shapes(q.bodies[body_index]);
-
- // Position the bodies.
- Transform2D xform;
- xform.set_origin(quadrant_pos);
- xform = global_transform * xform;
- ps->body_set_state(q.bodies[body_index], PhysicsServer2D::BODY_STATE_TRANSFORM, xform);
- }
-
- for (Set<Vector2i>::Element *E_cell = q.cells.front(); E_cell; E_cell = E_cell->next()) {
- TileMapCell c = p_tile_map->get_cell(E_cell->get(), true);
-
- TileSetSource *source;
- if (tile_set->has_source(c.source_id)) {
- source = *tile_set->get_source(c.source_id);
-
- if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
- continue;
- }
-
- TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
- if (atlas_source) {
- TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(c.get_atlas_coords(), c.alternative_tile));
-
- for (int body_index = 0; body_index < q.bodies.size(); body_index++) {
- // Add the shapes again.
- for (int polygon_index = 0; polygon_index < tile_data->get_collision_polygons_count(body_index); polygon_index++) {
- bool one_way_collision = tile_data->is_collision_polygon_one_way(body_index, polygon_index);
- float one_way_collision_margin = tile_data->get_collision_polygon_one_way_margin(body_index, polygon_index);
-
- int shapes_count = tile_data->get_collision_polygon_shapes_count(body_index, polygon_index);
- for (int shape_index = 0; shape_index < shapes_count; shape_index++) {
- Transform2D xform = Transform2D();
- xform.set_origin(p_tile_map->map_to_world(E_cell->get()) - quadrant_pos);
-
- // Add decomposed convex shapes.
- Ref<ConvexPolygonShape2D> shape = tile_data->get_collision_polygon_shape(body_index, polygon_index, shape_index);
- ps->body_add_shape(q.bodies[body_index], shape->get_rid(), xform);
- ps->body_set_shape_metadata(q.bodies[body_index], shape_index, E_cell->get());
- ps->body_set_shape_as_one_way_collision(q.bodies[body_index], shape_index, one_way_collision, one_way_collision_margin);
- }
- }
- }
- }
- }
- }
-
- q_list_element = q_list_element->next();
- }
-}
-
-void TileSetPluginAtlasPhysics::create_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) {
- Ref<TileSet> tile_set = p_tile_map->get_tileset();
- ERR_FAIL_COND(!tile_set.is_valid());
-
- //Get the TileMap's gobla transform.
- Transform2D global_transform;
- if (p_tile_map->is_inside_tree()) {
- global_transform = p_tile_map->get_global_transform();
- }
-
- // Clear all bodies.
- p_quadrant->bodies.clear();
-
- // Create the body and set its parameters.
- for (int layer_index = 0; layer_index < tile_set->get_physics_layers_count(); layer_index++) {
- RID body = PhysicsServer2D::get_singleton()->body_create();
- PhysicsServer2D::get_singleton()->body_set_mode(body, PhysicsServer2D::BODY_MODE_STATIC);
-
- PhysicsServer2D::get_singleton()->body_attach_object_instance_id(body, p_tile_map->get_instance_id());
- PhysicsServer2D::get_singleton()->body_set_collision_layer(body, tile_set->get_physics_layer_collision_layer(layer_index));
- PhysicsServer2D::get_singleton()->body_set_collision_mask(body, tile_set->get_physics_layer_collision_mask(layer_index));
-
- Ref<PhysicsMaterial> physics_material = tile_set->get_physics_layer_physics_material(layer_index);
- if (!physics_material.is_valid()) {
- PhysicsServer2D::get_singleton()->body_set_param(body, PhysicsServer2D::BODY_PARAM_BOUNCE, 0);
- PhysicsServer2D::get_singleton()->body_set_param(body, PhysicsServer2D::BODY_PARAM_FRICTION, 1);
- } else {
- PhysicsServer2D::get_singleton()->body_set_param(body, PhysicsServer2D::BODY_PARAM_BOUNCE, physics_material->computed_bounce());
- PhysicsServer2D::get_singleton()->body_set_param(body, PhysicsServer2D::BODY_PARAM_FRICTION, physics_material->computed_friction());
- }
-
- if (p_tile_map->is_inside_tree()) {
- RID space = p_tile_map->get_world_2d()->get_space();
- PhysicsServer2D::get_singleton()->body_set_space(body, space);
-
- Transform2D xform;
- xform.set_origin(p_tile_map->map_to_world(p_quadrant->coords * p_tile_map->get_effective_quadrant_size()));
- xform = global_transform * xform;
- PhysicsServer2D::get_singleton()->body_set_state(body, PhysicsServer2D::BODY_STATE_TRANSFORM, xform);
- }
-
- p_quadrant->bodies.push_back(body);
- }
-}
-
-void TileSetPluginAtlasPhysics::cleanup_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) {
- // Remove a quadrant.
- for (int body_index = 0; body_index < p_quadrant->bodies.size(); body_index++) {
- PhysicsServer2D::get_singleton()->free(p_quadrant->bodies[body_index]);
- }
- p_quadrant->bodies.clear();
-}
-
-void TileSetPluginAtlasPhysics::draw_quadrant_debug(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) {
- // Draw the debug collision shapes.
- Ref<TileSet> tile_set = p_tile_map->get_tileset();
- ERR_FAIL_COND(!tile_set.is_valid());
-
- if (!p_tile_map->get_tree()) {
- return;
- }
-
- bool show_collision = false;
- switch (p_tile_map->get_collision_visibility_mode()) {
- case TileMap::VISIBILITY_MODE_DEFAULT:
- show_collision = !Engine::get_singleton()->is_editor_hint() && (p_tile_map->get_tree() && p_tile_map->get_tree()->is_debugging_navigation_hint());
- break;
- case TileMap::VISIBILITY_MODE_FORCE_HIDE:
- show_collision = false;
- break;
- case TileMap::VISIBILITY_MODE_FORCE_SHOW:
- show_collision = true;
- break;
- }
- if (!show_collision) {
- return;
- }
-
- RenderingServer *rs = RenderingServer::get_singleton();
-
- Vector2 quadrant_pos = p_tile_map->map_to_world(p_quadrant->coords * p_tile_map->get_effective_quadrant_size());
-
- Color debug_collision_color = p_tile_map->get_tree()->get_debug_collisions_color();
- for (Set<Vector2i>::Element *E_cell = p_quadrant->cells.front(); E_cell; E_cell = E_cell->next()) {
- TileMapCell c = p_tile_map->get_cell(E_cell->get(), true);
-
- Transform2D xform;
- xform.set_origin(p_tile_map->map_to_world(E_cell->get()) - quadrant_pos);
- rs->canvas_item_add_set_transform(p_quadrant->debug_canvas_item, xform);
-
- if (tile_set->has_source(c.source_id)) {
- TileSetSource *source = *tile_set->get_source(c.source_id);
-
- if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
- continue;
- }
-
- TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
- if (atlas_source) {
- TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(c.get_atlas_coords(), c.alternative_tile));
-
- for (int body_index = 0; body_index < p_quadrant->bodies.size(); body_index++) {
- for (int polygon_index = 0; polygon_index < tile_data->get_collision_polygons_count(body_index); polygon_index++) {
- // Draw the debug polygon.
- Vector<Vector2> polygon = tile_data->get_collision_polygon_points(body_index, polygon_index);
- if (polygon.size() >= 3) {
- Vector<Color> color;
- color.push_back(debug_collision_color);
- rs->canvas_item_add_polygon(p_quadrant->debug_canvas_item, polygon, color);
- }
- }
- }
- }
- }
- rs->canvas_item_add_set_transform(p_quadrant->debug_canvas_item, Transform2D());
- }
-};
-
-/////////////////////////////// TileSetPluginAtlasNavigation //////////////////////////////////////
-
-void TileSetPluginAtlasNavigation::tilemap_notification(TileMap *p_tile_map, int p_what) {
- switch (p_what) {
- case CanvasItem::NOTIFICATION_TRANSFORM_CHANGED: {
- if (p_tile_map->is_inside_tree()) {
- Map<Vector2i, TileMapQuadrant> quadrant_map = p_tile_map->get_quadrant_map();
- Transform2D tilemap_xform = p_tile_map->get_global_transform();
- for (Map<Vector2i, TileMapQuadrant>::Element *E_quadrant = quadrant_map.front(); E_quadrant; E_quadrant = E_quadrant->next()) {
- TileMapQuadrant &q = E_quadrant->get();
- for (Map<Vector2i, Vector<RID>>::Element *E_region = q.navigation_regions.front(); E_region; E_region = E_region->next()) {
- for (int layer_index = 0; layer_index < E_region->get().size(); layer_index++) {
- RID region = E_region->get()[layer_index];
- if (!region.is_valid()) {
- continue;
- }
- Transform2D tile_transform;
- tile_transform.set_origin(p_tile_map->map_to_world(E_region->key()));
- NavigationServer2D::get_singleton()->region_set_transform(region, tilemap_xform * tile_transform);
- }
- }
- }
- }
- } break;
- }
-}
-
-void TileSetPluginAtlasNavigation::update_dirty_quadrants(TileMap *p_tile_map, SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) {
- ERR_FAIL_COND(!p_tile_map);
- ERR_FAIL_COND(!p_tile_map->is_inside_tree());
- Ref<TileSet> tile_set = p_tile_map->get_tileset();
- ERR_FAIL_COND(!tile_set.is_valid());
-
- // Get colors for debug.
- SceneTree *st = SceneTree::get_singleton();
- Color debug_navigation_color;
- bool debug_navigation = st && st->is_debugging_navigation_hint();
- if (debug_navigation) {
- debug_navigation_color = st->get_debug_navigation_color();
- }
-
- Transform2D tilemap_xform = p_tile_map->get_global_transform();
- SelfList<TileMapQuadrant> *q_list_element = r_dirty_quadrant_list.first();
- while (q_list_element) {
- TileMapQuadrant &q = *q_list_element->self();
-
- // Clear navigation shapes in the quadrant.
- for (Map<Vector2i, Vector<RID>>::Element *E = q.navigation_regions.front(); E; E = E->next()) {
- for (int i = 0; i < E->get().size(); i++) {
- RID region = E->get()[i];
- if (!region.is_valid()) {
- continue;
- }
- NavigationServer2D::get_singleton()->region_set_map(region, RID());
- }
- }
- q.navigation_regions.clear();
-
- // Get the navigation polygons and create regions.
- for (Set<Vector2i>::Element *E_cell = q.cells.front(); E_cell; E_cell = E_cell->next()) {
- TileMapCell c = p_tile_map->get_cell(E_cell->get(), true);
-
- TileSetSource *source;
- if (tile_set->has_source(c.source_id)) {
- source = *tile_set->get_source(c.source_id);
-
- if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
- continue;
- }
-
- TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
- if (atlas_source) {
- TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(c.get_atlas_coords(), c.alternative_tile));
- q.navigation_regions[E_cell->get()].resize(tile_set->get_navigation_layers_count());
-
- for (int layer_index = 0; layer_index < tile_set->get_navigation_layers_count(); layer_index++) {
- Ref<NavigationPolygon> navpoly;
- navpoly = tile_data->get_navigation_polygon(layer_index);
-
- if (navpoly.is_valid()) {
- Transform2D tile_transform;
- tile_transform.set_origin(p_tile_map->map_to_world(E_cell->get()));
-
- RID region = NavigationServer2D::get_singleton()->region_create();
- NavigationServer2D::get_singleton()->region_set_map(region, p_tile_map->get_world_2d()->get_navigation_map());
- NavigationServer2D::get_singleton()->region_set_transform(region, tilemap_xform * tile_transform);
- NavigationServer2D::get_singleton()->region_set_navpoly(region, navpoly);
- q.navigation_regions[E_cell->get()].write[layer_index] = region;
- }
- }
- }
- }
- }
-
- q_list_element = q_list_element->next();
- }
-}
-
-void TileSetPluginAtlasNavigation::cleanup_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) {
- // Clear navigation shapes in the quadrant.
- for (Map<Vector2i, Vector<RID>>::Element *E = p_quadrant->navigation_regions.front(); E; E = E->next()) {
- for (int i = 0; i < E->get().size(); i++) {
- RID region = E->get()[i];
- if (!region.is_valid()) {
- continue;
- }
- NavigationServer2D::get_singleton()->free(region);
- }
- }
- p_quadrant->navigation_regions.clear();
-}
-
-void TileSetPluginAtlasNavigation::draw_quadrant_debug(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) {
- // Draw the debug collision shapes.
- Ref<TileSet> tile_set = p_tile_map->get_tileset();
- ERR_FAIL_COND(!tile_set.is_valid());
-
- if (!p_tile_map->get_tree()) {
- return;
- }
-
- bool show_navigation = false;
- switch (p_tile_map->get_navigation_visibility_mode()) {
- case TileMap::VISIBILITY_MODE_DEFAULT:
- show_navigation = !Engine::get_singleton()->is_editor_hint() && (p_tile_map->get_tree() && p_tile_map->get_tree()->is_debugging_navigation_hint());
- break;
- case TileMap::VISIBILITY_MODE_FORCE_HIDE:
- show_navigation = false;
- break;
- case TileMap::VISIBILITY_MODE_FORCE_SHOW:
- show_navigation = true;
- break;
- }
- if (!show_navigation) {
- return;
- }
-
- RenderingServer *rs = RenderingServer::get_singleton();
-
- Color color = p_tile_map->get_tree()->get_debug_navigation_color();
- RandomPCG rand;
-
- Vector2 quadrant_pos = p_tile_map->map_to_world(p_quadrant->coords * p_tile_map->get_effective_quadrant_size());
-
- for (Set<Vector2i>::Element *E_cell = p_quadrant->cells.front(); E_cell; E_cell = E_cell->next()) {
- TileMapCell c = p_tile_map->get_cell(E_cell->get(), true);
-
- TileSetSource *source;
- if (tile_set->has_source(c.source_id)) {
- source = *tile_set->get_source(c.source_id);
-
- if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
- continue;
- }
-
- TileSetAtlasSource *atlas_source = Object::cast_to<TileSetAtlasSource>(source);
- if (atlas_source) {
- TileData *tile_data = Object::cast_to<TileData>(atlas_source->get_tile_data(c.get_atlas_coords(), c.alternative_tile));
-
- Transform2D xform;
- xform.set_origin(p_tile_map->map_to_world(E_cell->get()) - quadrant_pos);
- rs->canvas_item_add_set_transform(p_quadrant->debug_canvas_item, xform);
-
- for (int layer_index = 0; layer_index < tile_set->get_navigation_layers_count(); layer_index++) {
- Ref<NavigationPolygon> navpoly = tile_data->get_navigation_polygon(layer_index);
- if (navpoly.is_valid()) {
- PackedVector2Array navigation_polygon_vertices = navpoly->get_vertices();
-
- for (int i = 0; i < navpoly->get_polygon_count(); i++) {
- // An array of vertices for this polygon.
- Vector<int> polygon = navpoly->get_polygon(i);
- Vector<Vector2> vertices;
- vertices.resize(polygon.size());
- for (int j = 0; j < polygon.size(); j++) {
- ERR_FAIL_INDEX(polygon[j], navigation_polygon_vertices.size());
- vertices.write[j] = navigation_polygon_vertices[polygon[j]];
- }
-
- // Generate the polygon color, slightly randomly modified from the settings one.
- Color random_variation_color;
- random_variation_color.set_hsv(color.get_h() + rand.random(-1.0, 1.0) * 0.05, color.get_s(), color.get_v() + rand.random(-1.0, 1.0) * 0.1);
- random_variation_color.a = color.a;
- Vector<Color> colors;
- colors.push_back(random_variation_color);
-
- rs->canvas_item_add_polygon(p_quadrant->debug_canvas_item, vertices, colors);
- }
- }
- }
- }
- }
- }
-}
-
-/////////////////////////////// TileSetPluginScenesCollections //////////////////////////////////////
-
-void TileSetPluginScenesCollections::update_dirty_quadrants(TileMap *p_tile_map, SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) {
- Ref<TileSet> tile_set = p_tile_map->get_tileset();
- ERR_FAIL_COND(!tile_set.is_valid());
-
- SelfList<TileMapQuadrant> *q_list_element = r_dirty_quadrant_list.first();
- while (q_list_element) {
- TileMapQuadrant &q = *q_list_element->self();
-
- // Clear the scenes.
- for (Map<Vector2i, String>::Element *E = q.scenes.front(); E; E = E->next()) {
- Node *node = p_tile_map->get_node(E->get());
- if (node) {
- node->queue_delete();
- }
- }
-
- q.scenes.clear();
-
- // Recreate the scenes.
- for (Set<Vector2i>::Element *E_cell = q.cells.front(); E_cell; E_cell = E_cell->next()) {
- const TileMapCell &c = p_tile_map->get_cell(E_cell->get(), true);
-
- TileSetSource *source;
- if (tile_set->has_source(c.source_id)) {
- source = *tile_set->get_source(c.source_id);
-
- if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
- continue;
- }
-
- TileSetScenesCollectionSource *scenes_collection_source = Object::cast_to<TileSetScenesCollectionSource>(source);
- if (scenes_collection_source) {
- Ref<PackedScene> packed_scene = scenes_collection_source->get_scene_tile_scene(c.alternative_tile);
- if (packed_scene.is_valid()) {
- Node *scene = packed_scene->instantiate();
- p_tile_map->add_child(scene);
- Control *scene_as_control = Object::cast_to<Control>(scene);
- Node2D *scene_as_node2d = Object::cast_to<Node2D>(scene);
- if (scene_as_control) {
- scene_as_control->set_position(p_tile_map->map_to_world(E_cell->get()) + scene_as_control->get_position());
- } else if (scene_as_node2d) {
- Transform2D xform;
- xform.set_origin(p_tile_map->map_to_world(E_cell->get()));
- scene_as_node2d->set_transform(xform * scene_as_node2d->get_transform());
- }
- q.scenes[E_cell->get()] = scene->get_name();
- }
- }
- }
- }
-
- q_list_element = q_list_element->next();
- }
-}
-
-void TileSetPluginScenesCollections::cleanup_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) {
- // Clear the scenes.
- for (Map<Vector2i, String>::Element *E = p_quadrant->scenes.front(); E; E = E->next()) {
- Node *node = p_tile_map->get_node(E->get());
- if (node) {
- node->queue_delete();
- }
- }
-
- p_quadrant->scenes.clear();
-}
-
-void TileSetPluginScenesCollections::draw_quadrant_debug(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) {
- Ref<TileSet> tile_set = p_tile_map->get_tileset();
- ERR_FAIL_COND(!tile_set.is_valid());
-
- if (!Engine::get_singleton()->is_editor_hint()) {
- return;
- }
-
- // Draw a placeholder for scenes needing one.
- RenderingServer *rs = RenderingServer::get_singleton();
- Vector2 quadrant_pos = p_tile_map->map_to_world(p_quadrant->coords * p_tile_map->get_effective_quadrant_size());
- for (Set<Vector2i>::Element *E_cell = p_quadrant->cells.front(); E_cell; E_cell = E_cell->next()) {
- const TileMapCell &c = p_tile_map->get_cell(E_cell->get(), true);
-
- TileSetSource *source;
- if (tile_set->has_source(c.source_id)) {
- source = *tile_set->get_source(c.source_id);
-
- if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
- continue;
- }
-
- TileSetScenesCollectionSource *scenes_collection_source = Object::cast_to<TileSetScenesCollectionSource>(source);
- if (scenes_collection_source) {
- if (!scenes_collection_source->get_scene_tile_scene(c.alternative_tile).is_valid() || scenes_collection_source->get_scene_tile_display_placeholder(c.alternative_tile)) {
- // Generate a random color from the hashed values of the tiles.
- Array to_hash;
- to_hash.push_back(c.source_id);
- to_hash.push_back(c.alternative_tile);
- uint32_t hash = RandomPCG(to_hash.hash()).rand();
-
- Color color;
- color = color.from_hsv(
- (float)((hash >> 24) & 0xFF) / 256.0,
- Math::lerp(0.5, 1.0, (float)((hash >> 16) & 0xFF) / 256.0),
- Math::lerp(0.5, 1.0, (float)((hash >> 8) & 0xFF) / 256.0),
- 0.8);
-
- // Draw a placeholder tile.
- Transform2D xform;
- xform.set_origin(p_tile_map->map_to_world(E_cell->get()) - quadrant_pos);
- rs->canvas_item_add_set_transform(p_quadrant->debug_canvas_item, xform);
- rs->canvas_item_add_circle(p_quadrant->debug_canvas_item, Vector2(), MIN(tile_set->get_tile_size().x, tile_set->get_tile_size().y) / 4.0, color);
- }
- }
- }
- }
-}
diff --git a/scene/resources/tile_set.h b/scene/resources/tile_set.h
index 0a07981171..35e6999d13 100644
--- a/scene/resources/tile_set.h
+++ b/scene/resources/tile_set.h
@@ -191,7 +191,6 @@ private:
Vector2 tile_skew = Vector2(0, 0);
// Rendering.
- bool y_sorting = false;
bool uv_clipping = false;
struct OcclusionLayer {
uint32_t light_mask = 1;
@@ -245,9 +244,6 @@ private:
int next_source_id = 0;
// ---------------------
- // Plugins themselves.
- Vector<TileSetPlugin *> tile_set_plugins_vector;
-
void _compute_next_source_id();
void _source_changed();
@@ -299,9 +295,6 @@ public:
Ref<TileSetSource> get_source(int p_source_id) const;
// Rendering
- void set_y_sorting(bool p_y_sort);
- bool is_y_sorting() const;
-
void set_uv_clipping(bool p_uv_clipping);
bool is_uv_clipping() const;
@@ -666,73 +659,6 @@ public:
Variant get_custom_data_by_layer_id(int p_layer_id) const;
};
-#include "scene/2d/tile_map.h"
-
-class TileSetPlugin : public Object {
- GDCLASS(TileSetPlugin, Object);
-
-public:
- // Tilemap updates.
- virtual void tilemap_notification(TileMap *p_tile_map, int p_what){};
- virtual void update_dirty_quadrants(TileMap *p_tile_map, SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list){};
- virtual void create_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant){};
- virtual void cleanup_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant){};
-
- virtual void draw_quadrant_debug(TileMap *p_tile_map, TileMapQuadrant *p_quadrant){};
-};
-
-class TileSetPluginAtlasRendering : public TileSetPlugin {
- GDCLASS(TileSetPluginAtlasRendering, TileSetPlugin);
-
-private:
- static constexpr float fp_adjust = 0.00001;
- bool quadrant_order_dirty = false;
-
-public:
- // Tilemap updates
- virtual void tilemap_notification(TileMap *p_tile_map, int p_what) override;
- virtual void update_dirty_quadrants(TileMap *p_tile_map, SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) override;
- virtual void create_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) override;
- virtual void cleanup_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) override;
- virtual void draw_quadrant_debug(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) override;
-
- // Other.
- static void draw_tile(RID p_canvas_item, Vector2i p_position, const Ref<TileSet> p_tile_set, int p_atlas_source_id, Vector2i p_atlas_coords, int p_alternative_tile, Color p_modulation = Color(1.0, 1.0, 1.0, 1.0));
-};
-
-class TileSetPluginAtlasPhysics : public TileSetPlugin {
- GDCLASS(TileSetPluginAtlasPhysics, TileSetPlugin);
-
-public:
- // Tilemap updates
- virtual void tilemap_notification(TileMap *p_tile_map, int p_what) override;
- virtual void update_dirty_quadrants(TileMap *p_tile_map, SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) override;
- virtual void create_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) override;
- virtual void cleanup_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) override;
- virtual void draw_quadrant_debug(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) override;
-};
-
-class TileSetPluginAtlasNavigation : public TileSetPlugin {
- GDCLASS(TileSetPluginAtlasNavigation, TileSetPlugin);
-
-public:
- // Tilemap updates
- virtual void tilemap_notification(TileMap *p_tile_map, int p_what) override;
- virtual void update_dirty_quadrants(TileMap *p_tile_map, SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) override;
- virtual void cleanup_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) override;
- virtual void draw_quadrant_debug(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) override;
-};
-
-class TileSetPluginScenesCollections : public TileSetPlugin {
- GDCLASS(TileSetPluginScenesCollections, TileSetPlugin);
-
-public:
- // Tilemap updates
- virtual void update_dirty_quadrants(TileMap *p_tile_map, SelfList<TileMapQuadrant>::List &r_dirty_quadrant_list) override;
- virtual void cleanup_quadrant(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) override;
- virtual void draw_quadrant_debug(TileMap *p_tile_map, TileMapQuadrant *p_quadrant) override;
-};
-
VARIANT_ENUM_CAST(TileSet::CellNeighbor);
VARIANT_ENUM_CAST(TileSet::TerrainMode);
VARIANT_ENUM_CAST(TileSet::TileShape);
diff --git a/scene/resources/visual_shader.cpp b/scene/resources/visual_shader.cpp
index ef380ab233..a23152a6d1 100644
--- a/scene/resources/visual_shader.cpp
+++ b/scene/resources/visual_shader.cpp
@@ -451,18 +451,29 @@ VisualShader::Type VisualShader::get_shader_type() const {
return current_type;
}
-void VisualShader::set_version(const String &p_version) {
- version = p_version;
+void VisualShader::set_engine_version(const Dictionary &p_engine_version) {
+ ERR_FAIL_COND(!p_engine_version.has("major"));
+ ERR_FAIL_COND(!p_engine_version.has("minor"));
+ engine_version["major"] = p_engine_version["major"];
+ engine_version["minor"] = p_engine_version["minor"];
}
-String VisualShader::get_version() const {
- return version;
+Dictionary VisualShader::get_engine_version() const {
+ return engine_version;
}
-void VisualShader::update_version(const String &p_new_version) {
- if (version == "") {
+#ifndef DISABLE_DEPRECATED
+
+void VisualShader::update_engine_version(const Dictionary &p_new_version) {
+ if (engine_version.is_empty()) { // before 4.0
for (int i = 0; i < TYPE_MAX; i++) {
for (Map<int, Node>::Element *E = graph[i].nodes.front(); E; E = E->next()) {
+ Ref<VisualShaderNodeInput> input = Object::cast_to<VisualShaderNodeInput>(E->get().node.ptr());
+ if (input.is_valid()) {
+ if (input->get_input_name() == "side") {
+ input->set_input_name("front_facing");
+ }
+ }
Ref<VisualShaderNodeExpression> expression = Object::cast_to<VisualShaderNodeExpression>(E->get().node.ptr());
if (expression.is_valid()) {
for (int j = 0; j < expression->get_input_port_count(); j++) {
@@ -491,9 +502,11 @@ void VisualShader::update_version(const String &p_new_version) {
}
}
}
- set_version(p_new_version);
+ set_engine_version(p_new_version);
}
+#endif /* DISABLE_DEPRECATED */
+
void VisualShader::add_node(Type p_type, const Ref<VisualShaderNode> &p_node, const Vector2 &p_position, int p_id) {
ERR_FAIL_COND(p_node.is_null());
ERR_FAIL_COND(p_id < 2);
@@ -628,8 +641,8 @@ bool VisualShader::is_node_connection(Type p_type, int p_from_node, int p_from_p
ERR_FAIL_INDEX_V(p_type, TYPE_MAX, false);
const Graph *g = &graph[p_type];
- for (const List<Connection>::Element *E = g->connections.front(); E; E = E->next()) {
- if (E->get().from_node == p_from_node && E->get().from_port == p_from_port && E->get().to_node == p_to_node && E->get().to_port == p_to_port) {
+ for (const Connection &E : g->connections) {
+ if (E.from_node == p_from_node && E.from_port == p_from_port && E.to_node == p_to_node && E.to_port == p_to_port) {
return true;
}
}
@@ -642,12 +655,12 @@ bool VisualShader::is_nodes_connected_relatively(const Graph *p_graph, int p_nod
const VisualShader::Node &node = p_graph->nodes[p_node];
- for (const List<int>::Element *E = node.prev_connected_nodes.front(); E; E = E->next()) {
- if (E->get() == p_target) {
+ for (const int &E : node.prev_connected_nodes) {
+ if (E == p_target) {
return true;
}
- result = is_nodes_connected_relatively(p_graph, E->get(), p_target);
+ result = is_nodes_connected_relatively(p_graph, E, p_target);
if (result) {
break;
}
@@ -686,8 +699,8 @@ bool VisualShader::can_connect_nodes(Type p_type, int p_from_node, int p_from_po
return false;
}
- for (const List<Connection>::Element *E = g->connections.front(); E; E = E->next()) {
- if (E->get().from_node == p_from_node && E->get().from_port == p_from_port && E->get().to_node == p_to_node && E->get().to_port == p_to_port) {
+ for (const Connection &E : g->connections) {
+ if (E.from_node == p_from_node && E.from_port == p_from_port && E.to_node == p_to_node && E.to_port == p_to_port) {
return false;
}
}
@@ -739,8 +752,8 @@ Error VisualShader::connect_nodes(Type p_type, int p_from_node, int p_from_port,
ERR_FAIL_COND_V_MSG(!is_port_types_compatible(from_port_type, to_port_type), ERR_INVALID_PARAMETER, "Incompatible port types (scalar/vec/bool) with transform.");
- for (List<Connection>::Element *E = g->connections.front(); E; E = E->next()) {
- if (E->get().from_node == p_from_node && E->get().from_port == p_from_port && E->get().to_node == p_to_node && E->get().to_port == p_to_port) {
+ for (const Connection &E : g->connections) {
+ if (E.from_node == p_from_node && E.from_port == p_from_port && E.to_node == p_to_node && E.to_port == p_to_port) {
ERR_FAIL_V(ERR_ALREADY_EXISTS);
}
}
@@ -763,7 +776,7 @@ void VisualShader::disconnect_nodes(Type p_type, int p_from_node, int p_from_por
ERR_FAIL_INDEX(p_type, TYPE_MAX);
Graph *g = &graph[p_type];
- for (List<Connection>::Element *E = g->connections.front(); E; E = E->next()) {
+ for (const List<Connection>::Element *E = g->connections.front(); E; E = E->next()) {
if (E->get().from_node == p_from_node && E->get().from_port == p_from_port && E->get().to_node == p_to_node && E->get().to_port == p_to_port) {
g->connections.erase(E);
g->nodes[p_to_node].prev_connected_nodes.erase(p_from_node);
@@ -780,12 +793,12 @@ Array VisualShader::_get_node_connections(Type p_type) const {
const Graph *g = &graph[p_type];
Array ret;
- for (const List<Connection>::Element *E = g->connections.front(); E; E = E->next()) {
+ for (const Connection &E : g->connections) {
Dictionary d;
- d["from_node"] = E->get().from_node;
- d["from_port"] = E->get().from_port;
- d["to_node"] = E->get().to_node;
- d["to_port"] = E->get().to_port;
+ d["from_node"] = E.from_node;
+ d["from_port"] = E.from_port;
+ d["to_node"] = E.to_node;
+ d["to_port"] = E.to_port;
ret.push_back(d);
}
@@ -796,8 +809,8 @@ void VisualShader::get_node_connections(Type p_type, List<Connection> *r_connect
ERR_FAIL_INDEX(p_type, TYPE_MAX);
const Graph *g = &graph[p_type];
- for (const List<Connection>::Element *E = g->connections.front(); E; E = E->next()) {
- r_connections->push_back(E->get());
+ for (const Connection &E : g->connections) {
+ r_connections->push_back(E);
}
}
@@ -1190,11 +1203,11 @@ bool VisualShader::_get(const StringName &p_name, Variant &r_ret) const {
String index = name.get_slicec('/', 2);
if (index == "connections") {
Vector<int> conns;
- for (const List<Connection>::Element *E = graph[type].connections.front(); E; E = E->next()) {
- conns.push_back(E->get().from_node);
- conns.push_back(E->get().from_port);
- conns.push_back(E->get().to_node);
- conns.push_back(E->get().to_port);
+ for (const Connection &E : graph[type].connections) {
+ conns.push_back(E.from_node);
+ conns.push_back(E.from_port);
+ conns.push_back(E.to_node);
+ conns.push_back(E.to_port);
}
r_ret = conns;
@@ -1791,8 +1804,8 @@ void VisualShader::_update_shader() const {
ERR_FAIL_COND(err != OK);
if (emitters.has(i)) {
- for (List<int>::Element *E = emitters[i].front(); E; E = E->next()) {
- err = _write_node(Type(i), global_code, global_code_per_node, global_code_per_func, func_code, default_tex_params, input_connections, output_connections, E->get(), processed, false, classes);
+ for (int &E : emitters[i]) {
+ err = _write_node(Type(i), global_code, global_code_per_node, global_code_per_func, func_code, default_tex_params, input_connections, output_connections, E, processed, false, classes);
ERR_FAIL_COND(err != OK);
}
}
@@ -2007,8 +2020,8 @@ void VisualShader::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_node_connections", "type"), &VisualShader::_get_node_connections);
- ClassDB::bind_method(D_METHOD("set_version", "version"), &VisualShader::set_version);
- ClassDB::bind_method(D_METHOD("get_version"), &VisualShader::get_version);
+ ClassDB::bind_method(D_METHOD("set_engine_version", "version"), &VisualShader::set_engine_version);
+ ClassDB::bind_method(D_METHOD("get_engine_version"), &VisualShader::get_engine_version);
ClassDB::bind_method(D_METHOD("set_graph_offset", "offset"), &VisualShader::set_graph_offset);
ClassDB::bind_method(D_METHOD("get_graph_offset"), &VisualShader::get_graph_offset);
@@ -2016,7 +2029,7 @@ void VisualShader::_bind_methods() {
ClassDB::bind_method(D_METHOD("_update_shader"), &VisualShader::_update_shader);
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "graph_offset", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_graph_offset", "get_graph_offset");
- ADD_PROPERTY(PropertyInfo(Variant::STRING, "version", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_version", "get_version");
+ ADD_PROPERTY(PropertyInfo(Variant::STRING, "engine_version", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NOEDITOR), "set_engine_version", "get_engine_version");
ADD_PROPERTY_DEFAULT("code", ""); // Inherited from Shader, prevents showing default code as override in docs.
@@ -2059,7 +2072,9 @@ VisualShader::VisualShader() {
///////////////////////////////////////////////////////////
const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
- // Spatial, Vertex
+ // Node3D
+
+ // Node3D, Vertex
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "VERTEX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "NORMAL" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "tangent", "TANGENT" },
@@ -2069,6 +2084,10 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "point_size", "POINT_SIZE" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR_INT, "instance_id", "INSTANCE_ID" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "instance_custom", "INSTANCE_CUSTOM.rgb" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "instance_custom_alpha", "INSTANCE_CUSTOM.a" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "roughness", "ROUGHNESS" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "world", "WORLD_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "modelview", "MODELVIEW_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "camera", "CAMERA_MATRIX" },
@@ -2079,7 +2098,7 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(VIEWPORT_SIZE, 0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_BOOLEAN, "output_is_srgb", "OUTPUT_IS_SRGB" },
- // Spatial, Fragment
+ // Node3D, Fragment
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "VERTEX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "NORMAL" },
@@ -2092,7 +2111,6 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "point_coord", "vec3(POINT_COORD, 0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV, 0.0)" },
- { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "side", "float(FRONT_FACING ? 1.0 : 0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "world", "WORLD_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "inv_camera", "INV_CAMERA_MATRIX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_TRANSFORM, "camera", "CAMERA_MATRIX" },
@@ -2103,11 +2121,14 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_BOOLEAN, "output_is_srgb", "OUTPUT_IS_SRGB" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_BOOLEAN, "front_facing", "FRONT_FACING" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SAMPLER, "screen_texture", "SCREEN_TEXTURE" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SAMPLER, "normal_roughness_texture", "NORMAL_ROUGHNESS_TEXTURE" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SAMPLER, "depth_texture", "DEPTH_TEXTURE" },
- // Spatial, Light
+ // Node3D, Light
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "NORMAL" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV, 0.0)" },
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "uv2", "vec3(UV2, 0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "view", "VIEW" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "light", "LIGHT" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "light_color", "LIGHT_COLOR" },
@@ -2127,6 +2148,8 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "viewport_size", "vec3(VIEWPORT_SIZE, 0.0)" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_BOOLEAN, "output_is_srgb", "OUTPUT_IS_SRGB" },
+ // Canvas Item
+
// Canvas Item, Vertex
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "vec3(VERTEX, 0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "vec3(UV, 0.0)" },
@@ -2139,6 +2162,8 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "screen", "SCREEN_MATRIX" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "time", "TIME" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_BOOLEAN, "at_light_pass", "AT_LIGHT_PASS" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "instance_custom", "INSTANCE_CUSTOM.rgb" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "instance_custom_alpha", "INSTANCE_CUSTOM.a" },
// Canvas Item, Fragment
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" },
@@ -2157,6 +2182,7 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "specular_shininess", "SPECULAR_SHININESS.rgb" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "specular_shininess_alpha", "SPECULAR_SHININESS.a" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SAMPLER, "specular_shininess_texture", "SPECULAR_SHININESS_TEXTURE" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "vec3(VERTEX, 0.0)" },
// Canvas Item, Light
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "fragcoord", "FRAGCOORD.xyz" },
@@ -2170,7 +2196,7 @@ const VisualShaderNodeInput::Port VisualShaderNodeInput::ports[] = {
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "light_color_alpha", "LIGHT_COLOR.a" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "light_position", "LIGHT_POSITION" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "light_vertex", "LIGHT_VERTEX" },
- { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "shadow_color", "SHADOW_MODULATE.rgb" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "shadow", "SHADOW_MODULATE.rgb" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "shadow_alpha", "SHADOW_MODULATE.a" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "screen_uv", "vec3(SCREEN_UV, 0.0)" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "texture_pixel_size", "vec3(TEXTURE_PIXEL_SIZE, 1.0)" },
@@ -2586,8 +2612,8 @@ void VisualShaderNodeUniformRef::clear_uniforms() {
}
bool VisualShaderNodeUniformRef::has_uniform(const String &p_name) {
- for (List<VisualShaderNodeUniformRef::Uniform>::Element *E = uniforms.front(); E; E = E->next()) {
- if (E->get().name == p_name) {
+ for (const VisualShaderNodeUniformRef::Uniform &E : uniforms) {
+ if (E.name == p_name) {
return true;
}
}
@@ -2810,7 +2836,11 @@ VisualShaderNodeUniformRef::VisualShaderNodeUniformRef() {
////////////////////////////////////////////
const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = {
- // Spatial, Vertex
+ ////////////////////////////////////////////////////////////////////////
+ // Node3D.
+ ////////////////////////////////////////////////////////////////////////
+ // Node3D, Vertex.
+ ////////////////////////////////////////////////////////////////////////
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "VERTEX" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "NORMAL" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "tangent", "TANGENT" },
@@ -2821,9 +2851,9 @@ const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "roughness", "ROUGHNESS" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_TRANSFORM, "model_view_matrix", "MODELVIEW_MATRIX" },
-
- // Spatial, Fragment
-
+ ////////////////////////////////////////////////////////////////////////
+ // Node3D, Fragment.
+ ////////////////////////////////////////////////////////////////////////
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "albedo", "ALBEDO" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "ALPHA" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "metallic", "METALLIC" },
@@ -2847,29 +2877,48 @@ const VisualShaderNodeOutput::Port VisualShaderNodeOutput::ports[] = {
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha_scissor_threshold", "ALPHA_SCISSOR_THRESHOLD" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "ao_light_affect", "AO_LIGHT_AFFECT" },
-
- // Spatial, Light
+ ////////////////////////////////////////////////////////////////////////
+ // Node3D, Light.
+ ////////////////////////////////////////////////////////////////////////
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "diffuse", "DIFFUSE_LIGHT" },
{ Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "specular", "SPECULAR_LIGHT" },
- // Canvas Item, Vertex
+ { Shader::MODE_SPATIAL, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "ALPHA" },
+
+ ////////////////////////////////////////////////////////////////////////
+ // Canvas Item.
+ ////////////////////////////////////////////////////////////////////////
+ // Canvas Item, Vertex.
+ ////////////////////////////////////////////////////////////////////////
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "vertex", "VERTEX:xy" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "uv", "UV:xy" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" },
- // Canvas Item, Fragment
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_VERTEX, VisualShaderNode::PORT_TYPE_SCALAR, "point_size", "POINT_SIZE" },
+ ////////////////////////////////////////////////////////////////////////
+ // Canvas Item, Fragment.
+ ////////////////////////////////////////////////////////////////////////
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR.rgb" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "COLOR.a" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "normal", "NORMAL" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "normal_map", "NORMAL_MAP" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_SCALAR, "normal_map_depth", "NORMAL_MAP_DEPTH" },
- // Canvas Item, Light
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "light_vertex", "LIGHT_VERTEX" },
+ { Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_FRAGMENT, VisualShaderNode::PORT_TYPE_VECTOR, "shadow_vertex", "SHADOW_VERTEX:xy" },
+ ////////////////////////////////////////////////////////////////////////
+ // Canvas Item, Light.
+ ////////////////////////////////////////////////////////////////////////
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_VECTOR, "light", "LIGHT.rgb" },
{ Shader::MODE_CANVAS_ITEM, VisualShader::TYPE_LIGHT, VisualShaderNode::PORT_TYPE_SCALAR, "light_alpha", "LIGHT.a" },
- // Sky, Sky
+ ////////////////////////////////////////////////////////////////////////
+ // Sky, Sky.
+ ////////////////////////////////////////////////////////////////////////
{ Shader::MODE_SKY, VisualShader::TYPE_SKY, VisualShaderNode::PORT_TYPE_VECTOR, "color", "COLOR" },
{ Shader::MODE_SKY, VisualShader::TYPE_SKY, VisualShaderNode::PORT_TYPE_SCALAR, "alpha", "ALPHA" },
+ { Shader::MODE_SKY, VisualShader::TYPE_SKY, VisualShaderNode::PORT_TYPE_VECTOR, "fog", "FOG.rgb" },
+ { Shader::MODE_SKY, VisualShader::TYPE_SKY, VisualShaderNode::PORT_TYPE_SCALAR, "fog_alpha", "FOG.a" },
+ ////////////////////////////////////////////////////////////////////////
{ Shader::MODE_MAX, VisualShader::TYPE_MAX, VisualShaderNode::PORT_TYPE_TRANSFORM, nullptr, nullptr },
};
diff --git a/scene/resources/visual_shader.h b/scene/resources/visual_shader.h
index 880c401b29..abf55185ab 100644
--- a/scene/resources/visual_shader.h
+++ b/scene/resources/visual_shader.h
@@ -44,7 +44,7 @@ class VisualShader : public Shader {
friend class VisualShaderNodeVersionChecker;
- String version = "";
+ Dictionary engine_version;
public:
enum Type {
@@ -137,10 +137,12 @@ public: // internal methods
Type get_shader_type() const;
public:
- void set_version(const String &p_version);
- String get_version() const;
+ void set_engine_version(const Dictionary &p_version);
+ Dictionary get_engine_version() const;
- void update_version(const String &p_new_version);
+#ifndef DISABLE_DEPRECATED
+ void update_engine_version(const Dictionary &p_new_version);
+#endif /* DISABLE_DEPRECATED */
enum {
NODE_ID_INVALID = -1,
diff --git a/scene/scene_string_names.cpp b/scene/scene_string_names.cpp
index d53d155cce..b8173c9623 100644
--- a/scene/scene_string_names.cpp
+++ b/scene/scene_string_names.cpp
@@ -136,6 +136,7 @@ SceneStringNames::SceneStringNames() {
_spatial_editor_group = StaticCString::create("_spatial_editor_group");
_request_gizmo = StaticCString::create("_request_gizmo");
+ _clear_subgizmo_selection = StaticCString::create("_clear_subgizmo_selection");
offset = StaticCString::create("offset");
unit_offset = StaticCString::create("unit_offset");
diff --git a/scene/scene_string_names.h b/scene/scene_string_names.h
index a141c2b3aa..eddb0c33eb 100644
--- a/scene/scene_string_names.h
+++ b/scene/scene_string_names.h
@@ -156,6 +156,7 @@ public:
StringName _spatial_editor_group;
StringName _request_gizmo;
+ StringName _clear_subgizmo_selection;
StringName offset;
StringName unit_offset;
diff --git a/servers/display_server.cpp b/servers/display_server.cpp
index be2a813fd1..3d44484033 100644
--- a/servers/display_server.cpp
+++ b/servers/display_server.cpp
@@ -346,8 +346,6 @@ void DisplayServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("global_menu_remove_item", "menu_root", "idx"), &DisplayServer::global_menu_remove_item);
ClassDB::bind_method(D_METHOD("global_menu_clear", "menu_root"), &DisplayServer::global_menu_clear);
- ClassDB::bind_method(D_METHOD("alert", "text", "title"), &DisplayServer::alert, DEFVAL("Alert!"));
-
ClassDB::bind_method(D_METHOD("mouse_set_mode", "mouse_mode"), &DisplayServer::mouse_set_mode);
ClassDB::bind_method(D_METHOD("mouse_get_mode"), &DisplayServer::mouse_get_mode);
diff --git a/servers/display_server.h b/servers/display_server.h
index 8d289b10fd..788206768c 100644
--- a/servers/display_server.h
+++ b/servers/display_server.h
@@ -143,8 +143,6 @@ public:
virtual void global_menu_remove_item(const String &p_menu_root, int p_idx);
virtual void global_menu_clear(const String &p_menu_root);
- virtual void alert(const String &p_alert, const String &p_title = "ALERT!") = 0;
-
enum MouseMode {
MOUSE_MODE_VISIBLE,
MOUSE_MODE_HIDDEN,
diff --git a/servers/display_server_headless.h b/servers/display_server_headless.h
index 870401b180..d9ee91084f 100644
--- a/servers/display_server_headless.h
+++ b/servers/display_server_headless.h
@@ -55,8 +55,6 @@ public:
bool has_feature(Feature p_feature) const override { return false; }
String get_name() const override { return "headless"; }
- void alert(const String &p_alert, const String &p_title = "ALERT!") override {}
-
int get_screen_count() const override { return 0; }
Point2i screen_get_position(int p_screen = SCREEN_OF_MAIN_WINDOW) const override { return Point2i(); }
Size2i screen_get_size(int p_screen = SCREEN_OF_MAIN_WINDOW) const override { return Size2i(); }
diff --git a/servers/physics_2d/body_2d_sw.cpp b/servers/physics_2d/body_2d_sw.cpp
index 6f244deb1e..7aa2f9b7de 100644
--- a/servers/physics_2d/body_2d_sw.cpp
+++ b/servers/physics_2d/body_2d_sw.cpp
@@ -532,13 +532,13 @@ void Body2DSW::integrate_velocities(real_t p_step) {
}
void Body2DSW::wakeup_neighbours() {
- for (List<Pair<Constraint2DSW *, int>>::Element *E = constraint_list.front(); E; E = E->next()) {
- const Constraint2DSW *c = E->get().first;
+ for (const Pair<Constraint2DSW *, int> &E : constraint_list) {
+ const Constraint2DSW *c = E.first;
Body2DSW **n = c->get_body_ptr();
int bc = c->get_body_count();
for (int i = 0; i < bc; i++) {
- if (i == E->get().second) {
+ if (i == E.second) {
continue;
}
Body2DSW *b = n[i];
diff --git a/servers/physics_2d/body_pair_2d_sw.cpp b/servers/physics_2d/body_pair_2d_sw.cpp
index 71d985a6c5..91d747b492 100644
--- a/servers/physics_2d/body_pair_2d_sw.cpp
+++ b/servers/physics_2d/body_pair_2d_sw.cpp
@@ -226,16 +226,16 @@ real_t combine_friction(Body2DSW *A, Body2DSW *B) {
}
bool BodyPair2DSW::setup(real_t p_step) {
- dynamic_A = (A->get_mode() > PhysicsServer2D::BODY_MODE_KINEMATIC);
- dynamic_B = (B->get_mode() > PhysicsServer2D::BODY_MODE_KINEMATIC);
-
if (!A->interacts_with(B) || A->has_exception(B->get_self()) || B->has_exception(A->get_self())) {
collided = false;
return false;
}
+ collide_A = (A->get_mode() > PhysicsServer2D::BODY_MODE_KINEMATIC) && A->collides_with(B);
+ collide_B = (B->get_mode() > PhysicsServer2D::BODY_MODE_KINEMATIC) && B->collides_with(A);
+
report_contacts_only = false;
- if (!dynamic_A && !dynamic_B) {
+ if (!collide_A && !collide_B) {
if ((A->get_max_contacts_reported() > 0) || (B->get_max_contacts_reported() > 0)) {
report_contacts_only = true;
} else {
@@ -275,13 +275,13 @@ bool BodyPair2DSW::setup(real_t p_step) {
if (!collided) {
//test ccd (currently just a raycast)
- if (A->get_continuous_collision_detection_mode() == PhysicsServer2D::CCD_MODE_CAST_RAY && dynamic_A) {
+ if (A->get_continuous_collision_detection_mode() == PhysicsServer2D::CCD_MODE_CAST_RAY && collide_A) {
if (_test_ccd(p_step, A, shape_A, xform_A, B, shape_B, xform_B)) {
collided = true;
}
}
- if (B->get_continuous_collision_detection_mode() == PhysicsServer2D::CCD_MODE_CAST_RAY && dynamic_B) {
+ if (B->get_continuous_collision_detection_mode() == PhysicsServer2D::CCD_MODE_CAST_RAY && collide_B) {
if (_test_ccd(p_step, B, shape_B, xform_B, A, shape_A, xform_A, true)) {
collided = true;
}
@@ -374,6 +374,12 @@ bool BodyPair2DSW::pre_solve(real_t p_step) {
const Transform2D &transform_A = A->get_transform();
const Transform2D &transform_B = B->get_transform();
+ real_t inv_inertia_A = collide_A ? A->get_inv_inertia() : 0.0;
+ real_t inv_inertia_B = collide_B ? B->get_inv_inertia() : 0.0;
+
+ real_t inv_mass_A = collide_A ? A->get_inv_mass() : 0.0;
+ real_t inv_mass_B = collide_B ? B->get_inv_mass() : 0.0;
+
for (int i = 0; i < contact_count; i++) {
Contact &c = contacts[i];
c.active = false;
@@ -384,7 +390,7 @@ bool BodyPair2DSW::pre_solve(real_t p_step) {
Vector2 axis = global_A - global_B;
real_t depth = axis.dot(c.normal);
- if (depth <= 0 || !c.reused) {
+ if (depth <= 0.0 || !c.reused) {
continue;
}
@@ -416,15 +422,15 @@ bool BodyPair2DSW::pre_solve(real_t p_step) {
// Precompute normal mass, tangent mass, and bias.
real_t rnA = c.rA.dot(c.normal);
real_t rnB = c.rB.dot(c.normal);
- real_t kNormal = A->get_inv_mass() + B->get_inv_mass();
- kNormal += A->get_inv_inertia() * (c.rA.dot(c.rA) - rnA * rnA) + B->get_inv_inertia() * (c.rB.dot(c.rB) - rnB * rnB);
+ real_t kNormal = inv_mass_A + inv_mass_B;
+ kNormal += inv_inertia_A * (c.rA.dot(c.rA) - rnA * rnA) + inv_inertia_B * (c.rB.dot(c.rB) - rnB * rnB);
c.mass_normal = 1.0f / kNormal;
Vector2 tangent = c.normal.orthogonal();
real_t rtA = c.rA.dot(tangent);
real_t rtB = c.rB.dot(tangent);
- real_t kTangent = A->get_inv_mass() + B->get_inv_mass();
- kTangent += A->get_inv_inertia() * (c.rA.dot(c.rA) - rtA * rtA) + B->get_inv_inertia() * (c.rB.dot(c.rB) - rtB * rtB);
+ real_t kTangent = inv_mass_A + inv_mass_B;
+ kTangent += inv_inertia_A * (c.rA.dot(c.rA) - rtA * rtA) + inv_inertia_B * (c.rB.dot(c.rB) - rtB * rtB);
c.mass_tangent = 1.0f / kTangent;
c.bias = -bias * inv_dt * MIN(0.0f, -depth + max_penetration);
@@ -436,10 +442,10 @@ bool BodyPair2DSW::pre_solve(real_t p_step) {
// Apply normal + friction impulse
Vector2 P = c.acc_normal_impulse * c.normal + c.acc_tangent_impulse * tangent;
- if (dynamic_A) {
+ if (collide_A) {
A->apply_impulse(-P, c.rA);
}
- if (dynamic_B) {
+ if (collide_B) {
B->apply_impulse(P, c.rB);
}
}
@@ -493,10 +499,10 @@ void BodyPair2DSW::solve(real_t p_step) {
Vector2 jb = c.normal * (c.acc_bias_impulse - jbnOld);
- if (dynamic_A) {
+ if (collide_A) {
A->apply_bias_impulse(-jb, c.rA);
}
- if (dynamic_B) {
+ if (collide_B) {
B->apply_bias_impulse(jb, c.rB);
}
@@ -513,10 +519,10 @@ void BodyPair2DSW::solve(real_t p_step) {
Vector2 j = c.normal * (c.acc_normal_impulse - jnOld) + tangent * (c.acc_tangent_impulse - jtOld);
- if (dynamic_A) {
+ if (collide_A) {
A->apply_impulse(-j, c.rA);
}
- if (dynamic_B) {
+ if (collide_B) {
B->apply_impulse(j, c.rB);
}
}
diff --git a/servers/physics_2d/body_pair_2d_sw.h b/servers/physics_2d/body_pair_2d_sw.h
index 4b42b44c92..849a7e2430 100644
--- a/servers/physics_2d/body_pair_2d_sw.h
+++ b/servers/physics_2d/body_pair_2d_sw.h
@@ -50,8 +50,8 @@ class BodyPair2DSW : public Constraint2DSW {
int shape_A = 0;
int shape_B = 0;
- bool dynamic_A = false;
- bool dynamic_B = false;
+ bool collide_A = false;
+ bool collide_B = false;
Space2DSW *space = nullptr;
diff --git a/servers/physics_2d/collision_object_2d_sw.h b/servers/physics_2d/collision_object_2d_sw.h
index 14adb0bb18..55ffa9b1b8 100644
--- a/servers/physics_2d/collision_object_2d_sw.h
+++ b/servers/physics_2d/collision_object_2d_sw.h
@@ -186,8 +186,8 @@ public:
void set_pickable(bool p_pickable) { pickable = p_pickable; }
_FORCE_INLINE_ bool is_pickable() const { return pickable; }
- _FORCE_INLINE_ bool layer_in_mask(CollisionObject2DSW *p_other) const {
- return collision_layer & p_other->collision_mask;
+ _FORCE_INLINE_ bool collides_with(CollisionObject2DSW *p_other) const {
+ return p_other->collision_layer & collision_mask;
}
_FORCE_INLINE_ bool interacts_with(CollisionObject2DSW *p_other) const {
diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp
index 43329fed2f..590c93a7be 100644
--- a/servers/physics_2d/space_2d_sw.cpp
+++ b/servers/physics_2d/space_2d_sw.cpp
@@ -508,7 +508,7 @@ int Space2DSW::_cull_aabb_for_body(Body2DSW *p_body, const Rect2 &p_aabb) {
keep = false;
} else if (intersection_query_results[i]->get_type() == CollisionObject2DSW::TYPE_AREA) {
keep = false;
- } else if (!p_body->layer_in_mask(static_cast<Body2DSW *>(intersection_query_results[i]))) {
+ } else if (!p_body->collides_with(static_cast<Body2DSW *>(intersection_query_results[i]))) {
keep = false;
} else if (static_cast<Body2DSW *>(intersection_query_results[i])->has_exception(p_body->get_self()) || p_body->has_exception(intersection_query_results[i]->get_self())) {
keep = false;
diff --git a/servers/physics_2d/step_2d_sw.cpp b/servers/physics_2d/step_2d_sw.cpp
index b8cb4cddc5..8b30160cc1 100644
--- a/servers/physics_2d/step_2d_sw.cpp
+++ b/servers/physics_2d/step_2d_sw.cpp
@@ -46,8 +46,8 @@ void Step2DSW::_populate_island(Body2DSW *p_body, LocalVector<Body2DSW *> &p_bod
p_body_island.push_back(p_body);
}
- for (const List<Pair<Constraint2DSW *, int>>::Element *E = p_body->get_constraint_list().front(); E; E = E->next()) {
- Constraint2DSW *constraint = (Constraint2DSW *)E->get().first;
+ for (const Pair<Constraint2DSW *, int> &E : p_body->get_constraint_list()) {
+ Constraint2DSW *constraint = (Constraint2DSW *)E.first;
if (constraint->get_island_step() == _step) {
continue; // Already processed.
}
@@ -56,7 +56,7 @@ void Step2DSW::_populate_island(Body2DSW *p_body, LocalVector<Body2DSW *> &p_bod
all_constraints.push_back(constraint);
for (int i = 0; i < constraint->get_body_count(); i++) {
- if (i == E->get().second) {
+ if (i == E.second) {
continue;
}
Body2DSW *other_body = constraint->get_body_ptr()[i];
diff --git a/servers/physics_3d/body_pair_3d_sw.cpp b/servers/physics_3d/body_pair_3d_sw.cpp
index af680f23db..c27a2ecced 100644
--- a/servers/physics_3d/body_pair_3d_sw.cpp
+++ b/servers/physics_3d/body_pair_3d_sw.cpp
@@ -212,16 +212,16 @@ real_t combine_friction(Body3DSW *A, Body3DSW *B) {
}
bool BodyPair3DSW::setup(real_t p_step) {
- dynamic_A = (A->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
- dynamic_B = (B->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
-
if (!A->interacts_with(B) || A->has_exception(B->get_self()) || B->has_exception(A->get_self())) {
collided = false;
return false;
}
+ collide_A = (A->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC) && A->collides_with(B);
+ collide_B = (B->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC) && B->collides_with(A);
+
report_contacts_only = false;
- if (!dynamic_A && !dynamic_B) {
+ if (!collide_A && !collide_B) {
if ((A->get_max_contacts_reported() > 0) || (B->get_max_contacts_reported() > 0)) {
report_contacts_only = true;
} else {
@@ -250,11 +250,11 @@ bool BodyPair3DSW::setup(real_t p_step) {
if (!collided) {
//test ccd (currently just a raycast)
- if (A->is_continuous_collision_detection_enabled() && dynamic_A && !dynamic_B) {
+ if (A->is_continuous_collision_detection_enabled() && collide_A) {
_test_ccd(p_step, A, shape_A, xform_A, B, shape_B, xform_B);
}
- if (B->is_continuous_collision_detection_enabled() && dynamic_B && !dynamic_A) {
+ if (B->is_continuous_collision_detection_enabled() && collide_B) {
_test_ccd(p_step, B, shape_B, xform_B, A, shape_A, xform_A);
}
@@ -293,6 +293,15 @@ bool BodyPair3DSW::pre_solve(real_t p_step) {
const Basis &basis_A = A->get_transform().basis;
const Basis &basis_B = B->get_transform().basis;
+ Basis zero_basis;
+ zero_basis.set_zero();
+
+ const Basis &inv_inertia_tensor_A = collide_A ? A->get_inv_inertia_tensor() : zero_basis;
+ const Basis &inv_inertia_tensor_B = collide_B ? B->get_inv_inertia_tensor() : zero_basis;
+
+ real_t inv_mass_A = collide_A ? A->get_inv_mass() : 0.0;
+ real_t inv_mass_B = collide_B ? B->get_inv_mass() : 0.0;
+
for (int i = 0; i < contact_count; i++) {
Contact &c = contacts[i];
c.active = false;
@@ -303,7 +312,7 @@ bool BodyPair3DSW::pre_solve(real_t p_step) {
Vector3 axis = global_A - global_B;
real_t depth = axis.dot(c.normal);
- if (depth <= 0) {
+ if (depth <= 0.0) {
continue;
}
@@ -339,9 +348,9 @@ bool BodyPair3DSW::pre_solve(real_t p_step) {
do_process = true;
// Precompute normal mass, tangent mass, and bias.
- Vector3 inertia_A = A->get_inv_inertia_tensor().xform(c.rA.cross(c.normal));
- Vector3 inertia_B = B->get_inv_inertia_tensor().xform(c.rB.cross(c.normal));
- real_t kNormal = A->get_inv_mass() + B->get_inv_mass();
+ Vector3 inertia_A = inv_inertia_tensor_A.xform(c.rA.cross(c.normal));
+ Vector3 inertia_B = inv_inertia_tensor_B.xform(c.rB.cross(c.normal));
+ real_t kNormal = inv_mass_A + inv_mass_B;
kNormal += c.normal.dot(inertia_A.cross(c.rA)) + c.normal.dot(inertia_B.cross(c.rB));
c.mass_normal = 1.0f / kNormal;
@@ -349,10 +358,10 @@ bool BodyPair3DSW::pre_solve(real_t p_step) {
c.depth = depth;
Vector3 j_vec = c.normal * c.acc_normal_impulse + c.acc_tangent_impulse;
- if (dynamic_A) {
+ if (collide_A) {
A->apply_impulse(-j_vec, c.rA + A->get_center_of_mass());
}
- if (dynamic_B) {
+ if (collide_B) {
B->apply_impulse(j_vec, c.rB + B->get_center_of_mass());
}
c.acc_bias_impulse = 0;
@@ -378,6 +387,15 @@ void BodyPair3DSW::solve(real_t p_step) {
const real_t max_bias_av = MAX_BIAS_ROTATION / p_step;
+ Basis zero_basis;
+ zero_basis.set_zero();
+
+ const Basis &inv_inertia_tensor_A = collide_A ? A->get_inv_inertia_tensor() : zero_basis;
+ const Basis &inv_inertia_tensor_B = collide_B ? B->get_inv_inertia_tensor() : zero_basis;
+
+ real_t inv_mass_A = collide_A ? A->get_inv_mass() : 0.0;
+ real_t inv_mass_B = collide_B ? B->get_inv_mass() : 0.0;
+
for (int i = 0; i < contact_count; i++) {
Contact &c = contacts[i];
if (!c.active) {
@@ -401,10 +419,10 @@ void BodyPair3DSW::solve(real_t p_step) {
Vector3 jb = c.normal * (c.acc_bias_impulse - jbnOld);
- if (dynamic_A) {
+ if (collide_A) {
A->apply_bias_impulse(-jb, c.rA + A->get_center_of_mass(), max_bias_av);
}
- if (dynamic_B) {
+ if (collide_B) {
B->apply_bias_impulse(jb, c.rB + B->get_center_of_mass(), max_bias_av);
}
@@ -415,16 +433,16 @@ void BodyPair3DSW::solve(real_t p_step) {
vbn = dbv.dot(c.normal);
if (Math::abs(-vbn + c.bias) > MIN_VELOCITY) {
- real_t jbn_com = (-vbn + c.bias) / (A->get_inv_mass() + B->get_inv_mass());
+ real_t jbn_com = (-vbn + c.bias) / (inv_mass_A + inv_mass_B);
real_t jbnOld_com = c.acc_bias_impulse_center_of_mass;
c.acc_bias_impulse_center_of_mass = MAX(jbnOld_com + jbn_com, 0.0f);
Vector3 jb_com = c.normal * (c.acc_bias_impulse_center_of_mass - jbnOld_com);
- if (dynamic_A) {
+ if (collide_A) {
A->apply_bias_impulse(-jb_com, A->get_center_of_mass(), 0.0f);
}
- if (dynamic_B) {
+ if (collide_B) {
B->apply_bias_impulse(jb_com, B->get_center_of_mass(), 0.0f);
}
}
@@ -446,10 +464,10 @@ void BodyPair3DSW::solve(real_t p_step) {
Vector3 j = c.normal * (c.acc_normal_impulse - jnOld);
- if (dynamic_A) {
+ if (collide_A) {
A->apply_impulse(-j, c.rA + A->get_center_of_mass());
}
- if (dynamic_B) {
+ if (collide_B) {
B->apply_impulse(j, c.rB + B->get_center_of_mass());
}
@@ -473,11 +491,11 @@ void BodyPair3DSW::solve(real_t p_step) {
if (tvl > MIN_VELOCITY) {
tv /= tvl;
- Vector3 temp1 = A->get_inv_inertia_tensor().xform(c.rA.cross(tv));
- Vector3 temp2 = B->get_inv_inertia_tensor().xform(c.rB.cross(tv));
+ Vector3 temp1 = inv_inertia_tensor_A.xform(c.rA.cross(tv));
+ Vector3 temp2 = inv_inertia_tensor_B.xform(c.rB.cross(tv));
real_t t = -tvl /
- (A->get_inv_mass() + B->get_inv_mass() + tv.dot(temp1.cross(c.rA) + temp2.cross(c.rB)));
+ (inv_mass_A + inv_mass_B + tv.dot(temp1.cross(c.rA) + temp2.cross(c.rB)));
Vector3 jt = t * tv;
@@ -493,10 +511,10 @@ void BodyPair3DSW::solve(real_t p_step) {
jt = c.acc_tangent_impulse - jtOld;
- if (dynamic_A) {
+ if (collide_A) {
A->apply_impulse(-jt, c.rA + A->get_center_of_mass());
}
- if (dynamic_B) {
+ if (collide_B) {
B->apply_impulse(jt, c.rB + B->get_center_of_mass());
}
@@ -595,13 +613,23 @@ void BodySoftBodyPair3DSW::validate_contacts() {
}
bool BodySoftBodyPair3DSW::setup(real_t p_step) {
- body_dynamic = (body->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC);
-
if (!body->interacts_with(soft_body) || body->has_exception(soft_body->get_self()) || soft_body->has_exception(body->get_self())) {
collided = false;
return false;
}
+ body_collides = (body->get_mode() > PhysicsServer3D::BODY_MODE_KINEMATIC) && body->collides_with(soft_body);
+ soft_body_collides = soft_body->collides_with(body);
+
+ if (!body_collides && !soft_body_collides) {
+ if (body->get_max_contacts_reported() > 0) {
+ report_contacts_only = true;
+ } else {
+ collided = false;
+ return false;
+ }
+ }
+
const Transform3D &xform_Au = body->get_transform();
Transform3D xform_A = xform_Au * body->get_shape_transform(body_shape);
@@ -639,13 +667,20 @@ bool BodySoftBodyPair3DSW::pre_solve(real_t p_step) {
const Transform3D &transform_A = body->get_transform();
+ Basis zero_basis;
+ zero_basis.set_zero();
+
+ const Basis &body_inv_inertia_tensor = body_collides ? body->get_inv_inertia_tensor() : zero_basis;
+
+ real_t body_inv_mass = body_collides ? body->get_inv_mass() : 0.0;
+
uint32_t contact_count = contacts.size();
for (uint32_t contact_index = 0; contact_index < contact_count; ++contact_index) {
Contact &c = contacts[contact_index];
c.active = false;
- real_t node_inv_mass = soft_body->get_node_inv_mass(c.index_B);
- if (node_inv_mass == 0.0) {
+ real_t node_inv_mass = soft_body_collides ? soft_body->get_node_inv_mass(c.index_B) : 0.0;
+ if ((node_inv_mass == 0.0) && (body_inv_mass == 0.0)) {
continue;
}
@@ -654,15 +689,11 @@ bool BodySoftBodyPair3DSW::pre_solve(real_t p_step) {
Vector3 axis = global_A - global_B;
real_t depth = axis.dot(c.normal);
- if (depth <= 0) {
+ if (depth <= 0.0) {
continue;
}
- c.active = true;
- do_process = true;
-
#ifdef DEBUG_ENABLED
-
if (space->is_debugging_contacts()) {
space->add_debug_contact(global_A);
space->add_debug_contact(global_B);
@@ -677,13 +708,21 @@ bool BodySoftBodyPair3DSW::pre_solve(real_t p_step) {
body->add_contact(global_A, -c.normal, depth, body_shape, global_B, 0, soft_body->get_instance_id(), soft_body->get_self(), crA);
}
- if (body_dynamic) {
+ if (report_contacts_only) {
+ collided = false;
+ continue;
+ }
+
+ c.active = true;
+ do_process = true;
+
+ if (body_collides) {
body->set_active(true);
}
// Precompute normal mass, tangent mass, and bias.
- Vector3 inertia_A = body->get_inv_inertia_tensor().xform(c.rA.cross(c.normal));
- real_t kNormal = body->get_inv_mass() + node_inv_mass;
+ Vector3 inertia_A = body_inv_inertia_tensor.xform(c.rA.cross(c.normal));
+ real_t kNormal = body_inv_mass + node_inv_mass;
kNormal += c.normal.dot(inertia_A.cross(c.rA));
c.mass_normal = 1.0f / kNormal;
@@ -691,10 +730,12 @@ bool BodySoftBodyPair3DSW::pre_solve(real_t p_step) {
c.depth = depth;
Vector3 j_vec = c.normal * c.acc_normal_impulse + c.acc_tangent_impulse;
- if (body_dynamic) {
+ if (body_collides) {
body->apply_impulse(-j_vec, c.rA + body->get_center_of_mass());
}
- soft_body->apply_node_impulse(c.index_B, j_vec);
+ if (soft_body_collides) {
+ soft_body->apply_node_impulse(c.index_B, j_vec);
+ }
c.acc_bias_impulse = 0;
c.acc_bias_impulse_center_of_mass = 0;
@@ -719,6 +760,13 @@ void BodySoftBodyPair3DSW::solve(real_t p_step) {
const real_t max_bias_av = MAX_BIAS_ROTATION / p_step;
+ Basis zero_basis;
+ zero_basis.set_zero();
+
+ const Basis &body_inv_inertia_tensor = body_collides ? body->get_inv_inertia_tensor() : zero_basis;
+
+ real_t body_inv_mass = body_collides ? body->get_inv_mass() : 0.0;
+
uint32_t contact_count = contacts.size();
for (uint32_t contact_index = 0; contact_index < contact_count; ++contact_index) {
Contact &c = contacts[contact_index];
@@ -728,6 +776,8 @@ void BodySoftBodyPair3DSW::solve(real_t p_step) {
c.active = false;
+ real_t node_inv_mass = soft_body_collides ? soft_body->get_node_inv_mass(c.index_B) : 0.0;
+
// Bias impulse.
Vector3 crbA = body->get_biased_angular_velocity().cross(c.rA);
Vector3 dbv = soft_body->get_node_biased_velocity(c.index_B) - body->get_biased_linear_velocity() - crbA;
@@ -741,10 +791,12 @@ void BodySoftBodyPair3DSW::solve(real_t p_step) {
Vector3 jb = c.normal * (c.acc_bias_impulse - jbnOld);
- if (body_dynamic) {
+ if (body_collides) {
body->apply_bias_impulse(-jb, c.rA + body->get_center_of_mass(), max_bias_av);
}
- soft_body->apply_node_bias_impulse(c.index_B, jb);
+ if (soft_body_collides) {
+ soft_body->apply_node_bias_impulse(c.index_B, jb);
+ }
crbA = body->get_biased_angular_velocity().cross(c.rA);
dbv = soft_body->get_node_biased_velocity(c.index_B) - body->get_biased_linear_velocity() - crbA;
@@ -752,16 +804,18 @@ void BodySoftBodyPair3DSW::solve(real_t p_step) {
vbn = dbv.dot(c.normal);
if (Math::abs(-vbn + c.bias) > MIN_VELOCITY) {
- real_t jbn_com = (-vbn + c.bias) / (body->get_inv_mass() + soft_body->get_node_inv_mass(c.index_B));
+ real_t jbn_com = (-vbn + c.bias) / (body_inv_mass + node_inv_mass);
real_t jbnOld_com = c.acc_bias_impulse_center_of_mass;
c.acc_bias_impulse_center_of_mass = MAX(jbnOld_com + jbn_com, 0.0f);
Vector3 jb_com = c.normal * (c.acc_bias_impulse_center_of_mass - jbnOld_com);
- if (body_dynamic) {
+ if (body_collides) {
body->apply_bias_impulse(-jb_com, body->get_center_of_mass(), 0.0f);
}
- soft_body->apply_node_bias_impulse(c.index_B, jb_com);
+ if (soft_body_collides) {
+ soft_body->apply_node_bias_impulse(c.index_B, jb_com);
+ }
}
c.active = true;
@@ -780,10 +834,12 @@ void BodySoftBodyPair3DSW::solve(real_t p_step) {
Vector3 j = c.normal * (c.acc_normal_impulse - jnOld);
- if (body_dynamic) {
+ if (body_collides) {
body->apply_impulse(-j, c.rA + body->get_center_of_mass());
}
- soft_body->apply_node_impulse(c.index_B, j);
+ if (soft_body_collides) {
+ soft_body->apply_node_impulse(c.index_B, j);
+ }
c.active = true;
}
@@ -804,10 +860,10 @@ void BodySoftBodyPair3DSW::solve(real_t p_step) {
if (tvl > MIN_VELOCITY) {
tv /= tvl;
- Vector3 temp1 = body->get_inv_inertia_tensor().xform(c.rA.cross(tv));
+ Vector3 temp1 = body_inv_inertia_tensor.xform(c.rA.cross(tv));
real_t t = -tvl /
- (body->get_inv_mass() + soft_body->get_node_inv_mass(c.index_B) + tv.dot(temp1.cross(c.rA)));
+ (body_inv_mass + node_inv_mass + tv.dot(temp1.cross(c.rA)));
Vector3 jt = t * tv;
@@ -823,10 +879,12 @@ void BodySoftBodyPair3DSW::solve(real_t p_step) {
jt = c.acc_tangent_impulse - jtOld;
- if (body_dynamic) {
+ if (body_collides) {
body->apply_impulse(-jt, c.rA + body->get_center_of_mass());
}
- soft_body->apply_node_impulse(c.index_B, jt);
+ if (soft_body_collides) {
+ soft_body->apply_node_impulse(c.index_B, jt);
+ }
c.active = true;
}
diff --git a/servers/physics_3d/body_pair_3d_sw.h b/servers/physics_3d/body_pair_3d_sw.h
index 976982d1f1..19d6a46880 100644
--- a/servers/physics_3d/body_pair_3d_sw.h
+++ b/servers/physics_3d/body_pair_3d_sw.h
@@ -83,8 +83,8 @@ class BodyPair3DSW : public BodyContact3DSW {
int shape_A = 0;
int shape_B = 0;
- bool dynamic_A = false;
- bool dynamic_B = false;
+ bool collide_A = false;
+ bool collide_B = false;
bool report_contacts_only = false;
@@ -115,7 +115,10 @@ class BodySoftBodyPair3DSW : public BodyContact3DSW {
int body_shape = 0;
- bool body_dynamic = false;
+ bool body_collides = false;
+ bool soft_body_collides = false;
+
+ bool report_contacts_only = false;
LocalVector<Contact> contacts;
diff --git a/servers/physics_3d/collision_object_3d_sw.h b/servers/physics_3d/collision_object_3d_sw.h
index fb8dca8bb4..6ffab54645 100644
--- a/servers/physics_3d/collision_object_3d_sw.h
+++ b/servers/physics_3d/collision_object_3d_sw.h
@@ -166,8 +166,8 @@ public:
}
_FORCE_INLINE_ uint32_t get_collision_mask() const { return collision_mask; }
- _FORCE_INLINE_ bool layer_in_mask(CollisionObject3DSW *p_other) const {
- return collision_layer & p_other->collision_mask;
+ _FORCE_INLINE_ bool collides_with(CollisionObject3DSW *p_other) const {
+ return p_other->collision_layer & collision_mask;
}
_FORCE_INLINE_ bool interacts_with(CollisionObject3DSW *p_other) const {
diff --git a/servers/physics_3d/joints/generic_6dof_joint_3d_sw.h b/servers/physics_3d/joints/generic_6dof_joint_3d_sw.h
index d46437e782..d0f3dbbd35 100644
--- a/servers/physics_3d/joints/generic_6dof_joint_3d_sw.h
+++ b/servers/physics_3d/joints/generic_6dof_joint_3d_sw.h
@@ -322,12 +322,12 @@ public:
m_angularLimits[2].m_hiLimit = angularUpper.z;
}
- //! Retrieves the angular limit informacion
+ //! Retrieves the angular limit information.
G6DOFRotationalLimitMotor3DSW *getRotationalLimitMotor(int index) {
return &m_angularLimits[index];
}
- //! Retrieves the limit informacion
+ //! Retrieves the limit information.
G6DOFTranslationalLimitMotor3DSW *getTranslationalLimitMotor() {
return &m_linearLimits;
}
diff --git a/servers/physics_3d/joints/slider_joint_3d_sw.cpp b/servers/physics_3d/joints/slider_joint_3d_sw.cpp
index db9bdb2986..1895fe1e2e 100644
--- a/servers/physics_3d/joints/slider_joint_3d_sw.cpp
+++ b/servers/physics_3d/joints/slider_joint_3d_sw.cpp
@@ -200,7 +200,7 @@ void SliderJoint3DSW::solve(real_t p_step) {
real_t softness = (i) ? m_softnessOrthoLin : (m_solveLinLim ? m_softnessLimLin : m_softnessDirLin);
real_t restitution = (i) ? m_restitutionOrthoLin : (m_solveLinLim ? m_restitutionLimLin : m_restitutionDirLin);
real_t damping = (i) ? m_dampingOrthoLin : (m_solveLinLim ? m_dampingLimLin : m_dampingDirLin);
- // calcutate and apply impulse
+ // Calculate and apply impulse.
real_t normalImpulse = softness * (restitution * depth / p_step - damping * rel_vel) * m_jacLinDiagABInv[i];
Vector3 impulse_vector = normal * normalImpulse;
if (dynamic_A) {
diff --git a/servers/physics_3d/space_3d_sw.cpp b/servers/physics_3d/space_3d_sw.cpp
index bc149648d7..1037243d3b 100644
--- a/servers/physics_3d/space_3d_sw.cpp
+++ b/servers/physics_3d/space_3d_sw.cpp
@@ -549,7 +549,7 @@ int Space3DSW::_cull_aabb_for_body(Body3DSW *p_body, const AABB &p_aabb) {
keep = false;
} else if (intersection_query_results[i]->get_type() == CollisionObject3DSW::TYPE_SOFT_BODY) {
keep = false;
- } else if (!p_body->layer_in_mask(static_cast<Body3DSW *>(intersection_query_results[i]))) {
+ } else if (!p_body->collides_with(static_cast<Body3DSW *>(intersection_query_results[i]))) {
keep = false;
} else if (static_cast<Body3DSW *>(intersection_query_results[i])->has_exception(p_body->get_self()) || p_body->has_exception(intersection_query_results[i]->get_self())) {
keep = false;
diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp
index 717b4e8d14..857f112102 100644
--- a/servers/register_server_types.cpp
+++ b/servers/register_server_types.cpp
@@ -205,7 +205,7 @@ void register_server_types() {
GDREGISTER_CLASS(RDPipelineColorBlendStateAttachment);
GDREGISTER_CLASS(RDPipelineColorBlendState);
GDREGISTER_CLASS(RDShaderSource);
- GDREGISTER_CLASS(RDShaderBytecode);
+ GDREGISTER_CLASS(RDShaderSPIRV);
GDREGISTER_CLASS(RDShaderFile);
GDREGISTER_CLASS(RDPipelineSpecializationConstant);
diff --git a/servers/rendering/renderer_rd/cluster_builder_rd.h b/servers/rendering/renderer_rd/cluster_builder_rd.h
index ebb81abdad..c0c03eb26a 100644
--- a/servers/rendering/renderer_rd/cluster_builder_rd.h
+++ b/servers/rendering/renderer_rd/cluster_builder_rd.h
@@ -235,7 +235,7 @@ public:
Transform3D xform = view_xform * p_transform;
float radius = xform.basis.get_uniform_scale();
- if (radius > 0.98 || radius < 1.02) {
+ if (radius < 0.98 || radius > 1.02) {
xform.basis.orthonormalize();
}
diff --git a/servers/rendering/renderer_rd/effects_rd.cpp b/servers/rendering/renderer_rd/effects_rd.cpp
index 5cf8895c8e..699f4a4b90 100644
--- a/servers/rendering/renderer_rd/effects_rd.cpp
+++ b/servers/rendering/renderer_rd/effects_rd.cpp
@@ -37,6 +37,10 @@
#include "servers/rendering/renderer_rd/renderer_compositor_rd.h"
#include "thirdparty/misc/cubemap_coeffs.h"
+bool EffectsRD::get_prefer_raster_effects() {
+ return prefer_raster_effects;
+}
+
static _FORCE_INLINE_ void store_camera(const CameraMatrix &p_mtx, float *p_array) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
@@ -383,6 +387,8 @@ void EffectsRD::set_color(RID p_dest_texture, const Color &p_color, const Rect2i
}
void EffectsRD::gaussian_blur(RID p_source_rd_texture, RID p_texture, RID p_back_texture, const Rect2i &p_region, bool p_8bit_dst) {
+ ERR_FAIL_COND_MSG(!prefer_raster_effects, "Can't use the compute version of the gaussian blur with the mobile renderer.");
+
memset(&copy.push_constant, 0, sizeof(CopyPushConstant));
uint32_t base_flags = 0;
@@ -416,6 +422,8 @@ void EffectsRD::gaussian_blur(RID p_source_rd_texture, RID p_texture, RID p_back
}
void EffectsRD::gaussian_glow(RID p_source_rd_texture, RID p_back_texture, const Size2i &p_size, float p_strength, bool p_high_quality, bool p_first_pass, float p_luminance_cap, float p_exposure, float p_bloom, float p_hdr_bleed_treshold, float p_hdr_bleed_scale, RID p_auto_exposure, float p_auto_exposure_grey) {
+ ERR_FAIL_COND_MSG(prefer_raster_effects, "Can't use the compute version of the gaussian glow with the mobile renderer.");
+
memset(&copy.push_constant, 0, sizeof(CopyPushConstant));
CopyMode copy_mode = p_first_pass && p_auto_exposure.is_valid() ? COPY_MODE_GAUSSIAN_GLOW_AUTO_EXPOSURE : COPY_MODE_GAUSSIAN_GLOW;
@@ -449,6 +457,57 @@ void EffectsRD::gaussian_glow(RID p_source_rd_texture, RID p_back_texture, const
RD::get_singleton()->compute_list_end();
}
+void EffectsRD::gaussian_glow_raster(RID p_source_rd_texture, RID p_framebuffer_half, RID p_rd_texture_half, RID p_dest_framebuffer, const Vector2 &p_pixel_size, float p_strength, bool p_high_quality, bool p_first_pass, float p_luminance_cap, float p_exposure, float p_bloom, float p_hdr_bleed_treshold, float p_hdr_bleed_scale, RID p_auto_exposure, float p_auto_exposure_grey) {
+ ERR_FAIL_COND_MSG(!prefer_raster_effects, "Can't use the raster version of the gaussian glow with the clustered renderer.");
+
+ memset(&blur_raster.push_constant, 0, sizeof(BlurRasterPushConstant));
+
+ BlurRasterMode blur_mode = p_first_pass && p_auto_exposure.is_valid() ? BLUR_MODE_GAUSSIAN_GLOW_AUTO_EXPOSURE : BLUR_MODE_GAUSSIAN_GLOW;
+ uint32_t base_flags = 0;
+
+ blur_raster.push_constant.pixel_size[0] = p_pixel_size.x;
+ blur_raster.push_constant.pixel_size[1] = p_pixel_size.y;
+
+ blur_raster.push_constant.glow_strength = p_strength;
+ blur_raster.push_constant.glow_bloom = p_bloom;
+ blur_raster.push_constant.glow_hdr_threshold = p_hdr_bleed_treshold;
+ blur_raster.push_constant.glow_hdr_scale = p_hdr_bleed_scale;
+ blur_raster.push_constant.glow_exposure = p_exposure;
+ blur_raster.push_constant.glow_white = 0; //actually unused
+ blur_raster.push_constant.glow_luminance_cap = p_luminance_cap;
+
+ blur_raster.push_constant.glow_auto_exposure_grey = p_auto_exposure_grey; //unused also
+
+ //HORIZONTAL
+ RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(p_framebuffer_half, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_DISCARD);
+ RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, blur_raster.pipelines[blur_mode].get_render_pipeline(RD::INVALID_ID, RD::get_singleton()->framebuffer_get_format(p_framebuffer_half)));
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(p_source_rd_texture), 0);
+ if (p_auto_exposure.is_valid() && p_first_pass) {
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(p_auto_exposure), 1);
+ }
+ RD::get_singleton()->draw_list_bind_index_array(draw_list, index_array);
+
+ blur_raster.push_constant.flags = base_flags | BLUR_FLAG_HORIZONTAL | (p_first_pass ? BLUR_FLAG_GLOW_FIRST_PASS : 0);
+ RD::get_singleton()->draw_list_set_push_constant(draw_list, &blur_raster.push_constant, sizeof(BlurRasterPushConstant));
+
+ RD::get_singleton()->draw_list_draw(draw_list, true);
+ RD::get_singleton()->draw_list_end();
+
+ blur_mode = BLUR_MODE_GAUSSIAN_GLOW;
+
+ //VERTICAL
+ draw_list = RD::get_singleton()->draw_list_begin(p_dest_framebuffer, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_DISCARD);
+ RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, blur_raster.pipelines[blur_mode].get_render_pipeline(RD::INVALID_ID, RD::get_singleton()->framebuffer_get_format(p_dest_framebuffer)));
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(p_rd_texture_half), 0);
+ RD::get_singleton()->draw_list_bind_index_array(draw_list, index_array);
+
+ blur_raster.push_constant.flags = base_flags;
+ RD::get_singleton()->draw_list_set_push_constant(draw_list, &blur_raster.push_constant, sizeof(BlurRasterPushConstant));
+
+ RD::get_singleton()->draw_list_draw(draw_list, true);
+ RD::get_singleton()->draw_list_end();
+}
+
void EffectsRD::screen_space_reflection(RID p_diffuse, RID p_normal_roughness, RenderingServer::EnvironmentSSRRoughnessQuality p_roughness_quality, RID p_blur_radius, RID p_blur_radius2, RID p_metallic, const Color &p_metallic_mask, RID p_depth, RID p_scale_depth, RID p_scale_normal, RID p_output, RID p_output_blur, const Size2i &p_screen_size, int p_max_steps, float p_fade_in, float p_fade_out, float p_tolerance, const CameraMatrix &p_camera) {
RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
@@ -736,6 +795,8 @@ void EffectsRD::tonemapper(RID p_source_color, RID p_dst_framebuffer, const Tone
}
void EffectsRD::luminance_reduction(RID p_source_texture, const Size2i p_source_size, const Vector<RID> p_reduce, RID p_prev_luminance, float p_min_luminance, float p_max_luminance, float p_adjust, bool p_set) {
+ ERR_FAIL_COND_MSG(prefer_raster_effects, "Can't use compute version of luminance reduction with the mobile renderer.");
+
luminance_reduce.push_constant.source_size[0] = p_source_size.x;
luminance_reduce.push_constant.source_size[1] = p_source_size.y;
luminance_reduce.push_constant.max_luminance = p_max_luminance;
@@ -774,7 +835,41 @@ void EffectsRD::luminance_reduction(RID p_source_texture, const Size2i p_source_
RD::get_singleton()->compute_list_end();
}
+void EffectsRD::luminance_reduction_raster(RID p_source_texture, const Size2i p_source_size, const Vector<RID> p_reduce, Vector<RID> p_fb, RID p_prev_luminance, float p_min_luminance, float p_max_luminance, float p_adjust, bool p_set) {
+ ERR_FAIL_COND_MSG(!prefer_raster_effects, "Can't use raster version of luminance reduction with the clustered renderer.");
+ ERR_FAIL_COND_MSG(p_reduce.size() != p_fb.size(), "Incorrect frame buffer account for luminance reduction.");
+
+ luminance_reduce_raster.push_constant.max_luminance = p_max_luminance;
+ luminance_reduce_raster.push_constant.min_luminance = p_min_luminance;
+ luminance_reduce_raster.push_constant.exposure_adjust = p_adjust;
+
+ for (int i = 0; i < p_reduce.size(); i++) {
+ luminance_reduce_raster.push_constant.source_size[0] = i == 0 ? p_source_size.x : luminance_reduce_raster.push_constant.dest_size[0];
+ luminance_reduce_raster.push_constant.source_size[1] = i == 0 ? p_source_size.y : luminance_reduce_raster.push_constant.dest_size[1];
+ luminance_reduce_raster.push_constant.dest_size[0] = MAX(luminance_reduce_raster.push_constant.source_size[0] / 8, 1);
+ luminance_reduce_raster.push_constant.dest_size[1] = MAX(luminance_reduce_raster.push_constant.source_size[1] / 8, 1);
+
+ bool final = !p_set && (luminance_reduce_raster.push_constant.dest_size[0] == 1) && (luminance_reduce_raster.push_constant.dest_size[1] == 1);
+ LuminanceReduceRasterMode mode = final ? LUMINANCE_REDUCE_FRAGMENT_FINAL : (i == 0 ? LUMINANCE_REDUCE_FRAGMENT_FIRST : LUMINANCE_REDUCE_FRAGMENT);
+
+ RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(p_fb[i], RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_DISCARD);
+ RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, luminance_reduce_raster.pipelines[mode].get_render_pipeline(RD::INVALID_ID, RD::get_singleton()->framebuffer_get_format(p_fb[i])));
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(i == 0 ? p_source_texture : p_reduce[i - 1]), 0);
+ if (final) {
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(p_prev_luminance), 1);
+ }
+ RD::get_singleton()->draw_list_bind_index_array(draw_list, index_array);
+
+ RD::get_singleton()->draw_list_set_push_constant(draw_list, &luminance_reduce_raster.push_constant, sizeof(LuminanceReduceRasterPushConstant));
+
+ RD::get_singleton()->draw_list_draw(draw_list, true);
+ RD::get_singleton()->draw_list_end();
+ }
+}
+
void EffectsRD::bokeh_dof(RID p_base_texture, RID p_depth_texture, const Size2i &p_base_texture_size, RID p_secondary_texture, RID p_halfsize_texture1, RID p_halfsize_texture2, bool p_dof_far, float p_dof_far_begin, float p_dof_far_size, bool p_dof_near, float p_dof_near_begin, float p_dof_near_size, float p_bokeh_size, RenderingServer::DOFBokehShape p_bokeh_shape, RS::DOFBlurQuality p_quality, bool p_use_jitter, float p_cam_znear, float p_cam_zfar, bool p_cam_orthogonal) {
+ ERR_FAIL_COND_MSG(prefer_raster_effects, "Can't use compute version of BOKEH DOF with the mobile renderer.");
+
bokeh.push_constant.blur_far_active = p_dof_far;
bokeh.push_constant.blur_far_begin = p_dof_far_begin;
bokeh.push_constant.blur_far_end = p_dof_far_begin + p_dof_far_size;
@@ -924,6 +1019,78 @@ void EffectsRD::bokeh_dof(RID p_base_texture, RID p_depth_texture, const Size2i
RD::get_singleton()->compute_list_end();
}
+void EffectsRD::blur_dof_raster(RID p_base_texture, RID p_depth_texture, const Size2i &p_base_texture_size, RID p_base_fb, RID p_secondary_texture, RID p_secondary_fb, bool p_dof_far, float p_dof_far_begin, float p_dof_far_size, bool p_dof_near, float p_dof_near_begin, float p_dof_near_size, float p_dof_blur_amount, RS::DOFBlurQuality p_quality, float p_cam_znear, float p_cam_zfar, bool p_cam_orthogonal) {
+ ERR_FAIL_COND_MSG(!prefer_raster_effects, "Can't use blur DOF with the clustered renderer.");
+
+ memset(&blur_raster.push_constant, 0, sizeof(BlurRasterPushConstant));
+
+ BlurRasterMode blur_mode;
+ int qsteps[4] = { 4, 4, 10, 20 };
+ uint32_t base_flags = p_cam_orthogonal ? BLUR_FLAG_USE_ORTHOGONAL_PROJECTION : 0;
+
+ Vector2 pixel_size = Vector2(1.0 / p_base_texture_size.width, 1.0 / p_base_texture_size.height);
+
+ blur_raster.push_constant.dof_radius = (p_dof_blur_amount * p_dof_blur_amount) / qsteps[p_quality];
+ blur_raster.push_constant.pixel_size[0] = pixel_size.x;
+ blur_raster.push_constant.pixel_size[1] = pixel_size.y;
+ blur_raster.push_constant.camera_z_far = p_cam_zfar;
+ blur_raster.push_constant.camera_z_near = p_cam_znear;
+
+ if (p_dof_far || p_dof_near) {
+ if (p_quality == RS::DOF_BLUR_QUALITY_HIGH) {
+ blur_mode = BLUR_MODE_DOF_HIGH;
+ } else if (p_quality == RS::DOF_BLUR_QUALITY_MEDIUM) {
+ blur_mode = BLUR_MODE_DOF_MEDIUM;
+ } else { // for LOW or VERYLOW we use LOW
+ blur_mode = BLUR_MODE_DOF_LOW;
+ }
+
+ if (p_dof_far) {
+ base_flags |= BLUR_FLAG_DOF_FAR;
+ blur_raster.push_constant.dof_far_begin = p_dof_far_begin;
+ blur_raster.push_constant.dof_far_end = p_dof_far_begin + p_dof_far_size;
+ }
+
+ if (p_dof_near) {
+ base_flags |= BLUR_FLAG_DOF_NEAR;
+ blur_raster.push_constant.dof_near_begin = p_dof_near_begin;
+ blur_raster.push_constant.dof_near_end = p_dof_near_begin - p_dof_near_size;
+ }
+
+ //HORIZONTAL
+ RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(p_secondary_fb, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_DISCARD);
+ RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, blur_raster.pipelines[blur_mode].get_render_pipeline(RD::INVALID_ID, RD::get_singleton()->framebuffer_get_format(p_secondary_fb)));
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(p_base_texture), 0);
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(p_depth_texture), 1);
+ RD::get_singleton()->draw_list_bind_index_array(draw_list, index_array);
+
+ blur_raster.push_constant.flags = base_flags | BLUR_FLAG_HORIZONTAL;
+ blur_raster.push_constant.dof_dir[0] = 1.0;
+ blur_raster.push_constant.dof_dir[1] = 0.0;
+
+ RD::get_singleton()->draw_list_set_push_constant(draw_list, &blur_raster.push_constant, sizeof(BlurRasterPushConstant));
+
+ RD::get_singleton()->draw_list_draw(draw_list, true);
+ RD::get_singleton()->draw_list_end();
+
+ //VERTICAL
+ draw_list = RD::get_singleton()->draw_list_begin(p_base_fb, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_DISCARD);
+ RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, blur_raster.pipelines[blur_mode].get_render_pipeline(RD::INVALID_ID, RD::get_singleton()->framebuffer_get_format(p_base_fb)));
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(p_secondary_texture), 0);
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(p_depth_texture), 1);
+ RD::get_singleton()->draw_list_bind_index_array(draw_list, index_array);
+
+ blur_raster.push_constant.flags = base_flags;
+ blur_raster.push_constant.dof_dir[0] = 0.0;
+ blur_raster.push_constant.dof_dir[1] = 1.0;
+
+ RD::get_singleton()->draw_list_set_push_constant(draw_list, &blur_raster.push_constant, sizeof(BlurRasterPushConstant));
+
+ RD::get_singleton()->draw_list_draw(draw_list, true);
+ RD::get_singleton()->draw_list_end();
+ }
+}
+
void EffectsRD::gather_ssao(RD::ComputeListID p_compute_list, const Vector<RID> p_ao_slices, const SSAOSettings &p_settings, bool p_adaptive_base_pass, RID p_gather_uniform_set, RID p_importance_map_uniform_set) {
RD::get_singleton()->compute_list_bind_uniform_set(p_compute_list, p_gather_uniform_set, 0);
if ((p_settings.quality == RS::ENV_SSAO_QUALITY_ULTRA) && !p_adaptive_base_pass) {
@@ -1188,8 +1355,9 @@ void EffectsRD::generate_ssao(RID p_depth_buffer, RID p_normal_buffer, RID p_dep
if (p_settings.quality > RS::ENV_SSAO_QUALITY_VERY_LOW) {
if (pass < blur_passes - 2) {
blur_pipeline = SSAO_BLUR_PASS_WIDE;
+ } else {
+ blur_pipeline = SSAO_BLUR_PASS_SMART;
}
- blur_pipeline = SSAO_BLUR_PASS_SMART;
}
for (int i = 0; i < 4; i++) {
@@ -1283,7 +1451,9 @@ void EffectsRD::roughness_limit(RID p_source_normal, RID p_roughness, const Size
RD::get_singleton()->compute_list_end();
}
-void EffectsRD::cubemap_roughness(RID p_source_rd_texture, RID p_dest_framebuffer, uint32_t p_face_id, uint32_t p_sample_count, float p_roughness, float p_size) {
+void EffectsRD::cubemap_roughness(RID p_source_rd_texture, RID p_dest_texture, uint32_t p_face_id, uint32_t p_sample_count, float p_roughness, float p_size) {
+ ERR_FAIL_COND_MSG(prefer_raster_effects, "Can't use compute based cubemap roughness with the mobile renderer.");
+
memset(&roughness.push_constant, 0, sizeof(CubemapRoughnessPushConstant));
roughness.push_constant.face_id = p_face_id > 9 ? 0 : p_face_id;
@@ -1293,10 +1463,10 @@ void EffectsRD::cubemap_roughness(RID p_source_rd_texture, RID p_dest_framebuffe
roughness.push_constant.face_size = p_size;
RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
- RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, roughness.pipeline);
+ RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, roughness.compute_pipeline);
RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_compute_uniform_set_from_texture(p_source_rd_texture), 0);
- RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_uniform_set_from_image(p_dest_framebuffer), 1);
+ RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_uniform_set_from_image(p_dest_texture), 1);
RD::get_singleton()->compute_list_set_push_constant(compute_list, &roughness.push_constant, sizeof(CubemapRoughnessPushConstant));
@@ -1308,11 +1478,37 @@ void EffectsRD::cubemap_roughness(RID p_source_rd_texture, RID p_dest_framebuffe
RD::get_singleton()->compute_list_end();
}
+void EffectsRD::cubemap_roughness_raster(RID p_source_rd_texture, RID p_dest_framebuffer, uint32_t p_face_id, uint32_t p_sample_count, float p_roughness, float p_size) {
+ ERR_FAIL_COND_MSG(!prefer_raster_effects, "Can't use raster based cubemap roughness with the clustered renderer.");
+ ERR_FAIL_COND_MSG(p_face_id >= 6, "Raster implementation of cubemap roughness must process one side at a time.");
+
+ memset(&roughness.push_constant, 0, sizeof(CubemapRoughnessPushConstant));
+
+ roughness.push_constant.face_id = p_face_id;
+ roughness.push_constant.roughness = p_roughness;
+ roughness.push_constant.sample_count = p_sample_count;
+ roughness.push_constant.use_direct_write = p_roughness == 0.0;
+ roughness.push_constant.face_size = p_size;
+
+ RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(p_dest_framebuffer, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_DISCARD);
+ RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, roughness.raster_pipeline.get_render_pipeline(RD::INVALID_ID, RD::get_singleton()->framebuffer_get_format(p_dest_framebuffer)));
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(p_source_rd_texture), 0);
+ RD::get_singleton()->draw_list_bind_index_array(draw_list, index_array);
+
+ RD::get_singleton()->draw_list_set_push_constant(draw_list, &roughness.push_constant, sizeof(CubemapRoughnessPushConstant));
+
+ RD::get_singleton()->draw_list_draw(draw_list, true);
+ RD::get_singleton()->draw_list_end();
+}
+
void EffectsRD::cubemap_downsample(RID p_source_cubemap, RID p_dest_cubemap, const Size2i &p_size) {
+ ERR_FAIL_COND_MSG(prefer_raster_effects, "Can't use compute based cubemap downsample with the mobile renderer.");
+
cubemap_downsampler.push_constant.face_size = p_size.x;
+ cubemap_downsampler.push_constant.face_id = 0; // we render all 6 sides to each layer in one call
RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
- RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, cubemap_downsampler.pipeline);
+ RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, cubemap_downsampler.compute_pipeline);
RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_compute_uniform_set_from_texture(p_source_cubemap), 0);
RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_uniform_set_from_image(p_dest_cubemap), 1);
@@ -1326,7 +1522,27 @@ void EffectsRD::cubemap_downsample(RID p_source_cubemap, RID p_dest_cubemap, con
RD::get_singleton()->compute_list_end();
}
+void EffectsRD::cubemap_downsample_raster(RID p_source_cubemap, RID p_dest_framebuffer, uint32_t p_face_id, const Size2i &p_size) {
+ ERR_FAIL_COND_MSG(!prefer_raster_effects, "Can't use raster based cubemap downsample with the clustered renderer.");
+ ERR_FAIL_COND_MSG(p_face_id >= 6, "Raster implementation of cubemap downsample must process one side at a time.");
+
+ cubemap_downsampler.push_constant.face_size = p_size.x;
+ cubemap_downsampler.push_constant.face_id = p_face_id;
+
+ RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(p_dest_framebuffer, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_DISCARD);
+ RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, cubemap_downsampler.raster_pipeline.get_render_pipeline(RD::INVALID_ID, RD::get_singleton()->framebuffer_get_format(p_dest_framebuffer)));
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(p_source_cubemap), 0);
+ RD::get_singleton()->draw_list_bind_index_array(draw_list, index_array);
+
+ RD::get_singleton()->draw_list_set_push_constant(draw_list, &cubemap_downsampler.push_constant, sizeof(CubemapDownsamplerPushConstant));
+
+ RD::get_singleton()->draw_list_draw(draw_list, true);
+ RD::get_singleton()->draw_list_end();
+}
+
void EffectsRD::cubemap_filter(RID p_source_cubemap, Vector<RID> p_dest_cubemap, bool p_use_array) {
+ ERR_FAIL_COND_MSG(prefer_raster_effects, "Can't use compute based cubemap filter with the mobile renderer.");
+
Vector<RD::Uniform> uniforms;
for (int i = 0; i < p_dest_cubemap.size(); i++) {
RD::Uniform u;
@@ -1338,12 +1554,12 @@ void EffectsRD::cubemap_filter(RID p_source_cubemap, Vector<RID> p_dest_cubemap,
if (RD::get_singleton()->uniform_set_is_valid(filter.image_uniform_set)) {
RD::get_singleton()->free(filter.image_uniform_set);
}
- filter.image_uniform_set = RD::get_singleton()->uniform_set_create(uniforms, filter.shader.version_get_shader(filter.shader_version, 0), 2);
+ filter.image_uniform_set = RD::get_singleton()->uniform_set_create(uniforms, filter.compute_shader.version_get_shader(filter.shader_version, 0), 2);
int pipeline = p_use_array ? FILTER_MODE_HIGH_QUALITY_ARRAY : FILTER_MODE_HIGH_QUALITY;
pipeline = filter.use_high_quality ? pipeline : pipeline + 1;
RD::ComputeListID compute_list = RD::get_singleton()->compute_list_begin();
- RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, filter.pipelines[pipeline]);
+ RD::get_singleton()->compute_list_bind_compute_pipeline(compute_list, filter.compute_pipelines[pipeline]);
RD::get_singleton()->compute_list_bind_uniform_set(compute_list, _get_compute_uniform_set_from_texture(p_source_cubemap, true), 0);
RD::get_singleton()->compute_list_bind_uniform_set(compute_list, filter.uniform_set, 1);
RD::get_singleton()->compute_list_bind_uniform_set(compute_list, filter.image_uniform_set, 2);
@@ -1355,6 +1571,29 @@ void EffectsRD::cubemap_filter(RID p_source_cubemap, Vector<RID> p_dest_cubemap,
RD::get_singleton()->compute_list_end();
}
+void EffectsRD::cubemap_filter_raster(RID p_source_cubemap, RID p_dest_framebuffer, uint32_t p_face_id, uint32_t p_mip_level) {
+ ERR_FAIL_COND_MSG(!prefer_raster_effects, "Can't use raster based cubemap filter with the clustered renderer.");
+ ERR_FAIL_COND_MSG(p_face_id >= 6, "Raster implementation of cubemap filter must process one side at a time.");
+
+ // TODO implement!
+ CubemapFilterRasterPushConstant push_constant;
+ push_constant.mip_level = p_mip_level;
+ push_constant.face_id = p_face_id;
+
+ CubemapFilterMode mode = filter.use_high_quality ? FILTER_MODE_HIGH_QUALITY : FILTER_MODE_LOW_QUALITY;
+
+ RD::DrawListID draw_list = RD::get_singleton()->draw_list_begin(p_dest_framebuffer, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_READ, RD::INITIAL_ACTION_KEEP, RD::FINAL_ACTION_DISCARD);
+ RD::get_singleton()->draw_list_bind_render_pipeline(draw_list, filter.raster_pipelines[mode].get_render_pipeline(RD::INVALID_ID, RD::get_singleton()->framebuffer_get_format(p_dest_framebuffer)));
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, _get_uniform_set_from_texture(p_source_cubemap), 0);
+ RD::get_singleton()->draw_list_bind_uniform_set(draw_list, filter.uniform_set, 1);
+ RD::get_singleton()->draw_list_bind_index_array(draw_list, index_array);
+
+ RD::get_singleton()->draw_list_set_push_constant(draw_list, &push_constant, sizeof(CubemapFilterRasterPushConstant));
+
+ RD::get_singleton()->draw_list_draw(draw_list, true);
+ RD::get_singleton()->draw_list_end();
+}
+
void EffectsRD::resolve_gi(RID p_source_depth, RID p_source_normal_roughness, RID p_source_voxel_gi, RID p_dest_depth, RID p_dest_normal_roughness, RID p_dest_voxel_gi, Vector2i p_screen_size, int p_samples, uint32_t p_barrier) {
ResolvePushConstant push_constant;
push_constant.screen_size[0] = p_screen_size.x;
@@ -1464,7 +1703,35 @@ void EffectsRD::sort_buffer(RID p_uniform_set, int p_size) {
RD::get_singleton()->compute_list_end();
}
-EffectsRD::EffectsRD() {
+EffectsRD::EffectsRD(bool p_prefer_raster_effects) {
+ prefer_raster_effects = p_prefer_raster_effects;
+
+ if (prefer_raster_effects) {
+ // init blur shader (on compute use copy shader)
+
+ Vector<String> blur_modes;
+ blur_modes.push_back("\n#define MODE_GAUSSIAN_BLUR\n"); // BLUR_MODE_GAUSSIAN_BLUR
+ blur_modes.push_back("\n#define MODE_GAUSSIAN_GLOW\n"); // BLUR_MODE_GAUSSIAN_GLOW
+ blur_modes.push_back("\n#define MODE_GAUSSIAN_GLOW\n#define GLOW_USE_AUTO_EXPOSURE\n"); // BLUR_MODE_GAUSSIAN_GLOW_AUTO_EXPOSURE
+ blur_modes.push_back("\n#define MODE_DOF_BLUR\n#define DOF_QUALITY_LOW\n"); // BLUR_MODE_DOF_LOW
+ blur_modes.push_back("\n#define MODE_DOF_BLUR\n#define DOF_QUALITY_MEDIUM\n"); // BLUR_MODE_DOF_MEDIUM
+ blur_modes.push_back("\n#define MODE_DOF_BLUR\n#define DOF_QUALITY_HIGH\n"); // BLUR_MODE_DOF_HIGH
+
+ blur_raster.shader.initialize(blur_modes);
+ memset(&blur_raster.push_constant, 0, sizeof(BlurRasterPushConstant));
+ blur_raster.shader_version = blur_raster.shader.version_create();
+
+ for (int i = 0; i < BLUR_MODE_MAX; i++) {
+ blur_raster.pipelines[i].setup(blur_raster.shader.version_get_shader(blur_raster.shader_version, i), RD::RENDER_PRIMITIVE_TRIANGLES, RD::PipelineRasterizationState(), RD::PipelineMultisampleState(), RD::PipelineDepthStencilState(), RD::PipelineColorBlendState::create_disabled(), 0);
+ }
+
+ } else {
+ // not used in clustered
+ for (int i = 0; i < BLUR_MODE_MAX; i++) {
+ blur_raster.pipelines[i].clear();
+ }
+ }
+
{ // Initialize copy
Vector<String> copy_modes;
copy_modes.push_back("\n#define MODE_GAUSSIAN_BLUR\n");
@@ -1483,10 +1750,21 @@ EffectsRD::EffectsRD() {
copy.shader.initialize(copy_modes);
memset(&copy.push_constant, 0, sizeof(CopyPushConstant));
+
+ if (prefer_raster_effects) {
+ // disable shaders we can't use
+ copy.shader.set_variant_enabled(COPY_MODE_GAUSSIAN_COPY, false);
+ copy.shader.set_variant_enabled(COPY_MODE_GAUSSIAN_COPY_8BIT, false);
+ copy.shader.set_variant_enabled(COPY_MODE_GAUSSIAN_GLOW, false);
+ copy.shader.set_variant_enabled(COPY_MODE_GAUSSIAN_GLOW_AUTO_EXPOSURE, false);
+ }
+
copy.shader_version = copy.shader.version_create();
for (int i = 0; i < COPY_MODE_MAX; i++) {
- copy.pipelines[i] = RD::get_singleton()->compute_pipeline_create(copy.shader.version_get_shader(copy.shader_version, i));
+ if (copy.shader.is_variant_enabled(i)) {
+ copy.pipelines[i] = RD::get_singleton()->compute_pipeline_create(copy.shader.version_get_shader(copy.shader_version, i));
+ }
}
}
{
@@ -1510,11 +1788,22 @@ EffectsRD::EffectsRD() {
// Initialize roughness
Vector<String> cubemap_roughness_modes;
cubemap_roughness_modes.push_back("");
- roughness.shader.initialize(cubemap_roughness_modes);
- roughness.shader_version = roughness.shader.version_create();
+ if (prefer_raster_effects) {
+ roughness.raster_shader.initialize(cubemap_roughness_modes);
+
+ roughness.shader_version = roughness.raster_shader.version_create();
+
+ roughness.raster_pipeline.setup(roughness.raster_shader.version_get_shader(roughness.shader_version, 0), RD::RENDER_PRIMITIVE_TRIANGLES, RD::PipelineRasterizationState(), RD::PipelineMultisampleState(), RD::PipelineDepthStencilState(), RD::PipelineColorBlendState::create_disabled(), 0);
+
+ } else {
+ roughness.compute_shader.initialize(cubemap_roughness_modes);
+
+ roughness.shader_version = roughness.compute_shader.version_create();
- roughness.pipeline = RD::get_singleton()->compute_pipeline_create(roughness.shader.version_get_shader(roughness.shader_version, 0));
+ roughness.compute_pipeline = RD::get_singleton()->compute_pipeline_create(roughness.compute_shader.version_get_shader(roughness.shader_version, 0));
+ roughness.raster_pipeline.clear();
+ }
}
{
@@ -1551,7 +1840,20 @@ EffectsRD::EffectsRD() {
}
}
- {
+ if (prefer_raster_effects) {
+ Vector<String> luminance_reduce_modes;
+ luminance_reduce_modes.push_back("\n#define FIRST_PASS\n"); // LUMINANCE_REDUCE_FRAGMENT_FIRST
+ luminance_reduce_modes.push_back("\n"); // LUMINANCE_REDUCE_FRAGMENT
+ luminance_reduce_modes.push_back("\n#define FINAL_PASS\n"); // LUMINANCE_REDUCE_FRAGMENT_FINAL
+
+ luminance_reduce_raster.shader.initialize(luminance_reduce_modes);
+ memset(&luminance_reduce_raster.push_constant, 0, sizeof(LuminanceReduceRasterPushConstant));
+ luminance_reduce_raster.shader_version = luminance_reduce_raster.shader.version_create();
+
+ for (int i = 0; i < LUMINANCE_REDUCE_FRAGMENT_MAX; i++) {
+ luminance_reduce_raster.pipelines[i].setup(luminance_reduce_raster.shader.version_get_shader(luminance_reduce_raster.shader_version, i), RD::RENDER_PRIMITIVE_TRIANGLES, RD::PipelineRasterizationState(), RD::PipelineMultisampleState(), RD::PipelineDepthStencilState(), RD::PipelineColorBlendState::create_disabled(), 0);
+ }
+ } else {
// Initialize luminance_reduce
Vector<String> luminance_reduce_modes;
luminance_reduce_modes.push_back("\n#define READ_TEXTURE\n");
@@ -1565,6 +1867,10 @@ EffectsRD::EffectsRD() {
for (int i = 0; i < LUMINANCE_REDUCE_MAX; i++) {
luminance_reduce.pipelines[i] = RD::get_singleton()->compute_pipeline_create(luminance_reduce.shader.version_get_shader(luminance_reduce.shader_version, i));
}
+
+ for (int i = 0; i < LUMINANCE_REDUCE_FRAGMENT_MAX; i++) {
+ luminance_reduce_raster.pipelines[i].clear();
+ }
}
{
@@ -1583,7 +1889,9 @@ EffectsRD::EffectsRD() {
cube_to_dp.pipeline.setup(shader, RD::RENDER_PRIMITIVE_TRIANGLES, RD::PipelineRasterizationState(), RD::PipelineMultisampleState(), dss, RD::PipelineColorBlendState(), 0);
}
- {
+ if (prefer_raster_effects) {
+ // not supported
+ } else {
// Initialize bokeh
Vector<String> bokeh_modes;
bokeh_modes.push_back("\n#define MODE_GEN_BLUR_SIZE\n");
@@ -1761,11 +2069,21 @@ EffectsRD::EffectsRD() {
//Initialize cubemap downsampler
Vector<String> cubemap_downsampler_modes;
cubemap_downsampler_modes.push_back("");
- cubemap_downsampler.shader.initialize(cubemap_downsampler_modes);
- cubemap_downsampler.shader_version = cubemap_downsampler.shader.version_create();
+ if (prefer_raster_effects) {
+ cubemap_downsampler.raster_shader.initialize(cubemap_downsampler_modes);
+
+ cubemap_downsampler.shader_version = cubemap_downsampler.raster_shader.version_create();
+
+ cubemap_downsampler.raster_pipeline.setup(cubemap_downsampler.raster_shader.version_get_shader(cubemap_downsampler.shader_version, 0), RD::RENDER_PRIMITIVE_TRIANGLES, RD::PipelineRasterizationState(), RD::PipelineMultisampleState(), RD::PipelineDepthStencilState(), RD::PipelineColorBlendState::create_disabled(), 0);
+ } else {
+ cubemap_downsampler.compute_shader.initialize(cubemap_downsampler_modes);
+
+ cubemap_downsampler.shader_version = cubemap_downsampler.compute_shader.version_create();
- cubemap_downsampler.pipeline = RD::get_singleton()->compute_pipeline_create(cubemap_downsampler.shader.version_get_shader(cubemap_downsampler.shader_version, 0));
+ cubemap_downsampler.compute_pipeline = RD::get_singleton()->compute_pipeline_create(cubemap_downsampler.compute_shader.version_get_shader(cubemap_downsampler.shader_version, 0));
+ cubemap_downsampler.raster_pipeline.clear();
+ }
}
{
@@ -1777,12 +2095,6 @@ EffectsRD::EffectsRD() {
cubemap_filter_modes.push_back("\n#define USE_LOW_QUALITY\n");
cubemap_filter_modes.push_back("\n#define USE_HIGH_QUALITY\n#define USE_TEXTURE_ARRAY\n");
cubemap_filter_modes.push_back("\n#define USE_LOW_QUALITY\n#define USE_TEXTURE_ARRAY\n");
- filter.shader.initialize(cubemap_filter_modes);
- filter.shader_version = filter.shader.version_create();
-
- for (int i = 0; i < FILTER_MODE_MAX; i++) {
- filter.pipelines[i] = RD::get_singleton()->compute_pipeline_create(filter.shader.version_get_shader(filter.shader_version, i));
- }
if (filter.use_high_quality) {
filter.coefficient_buffer = RD::get_singleton()->storage_buffer_create(sizeof(high_quality_coeffs));
@@ -1792,15 +2104,50 @@ EffectsRD::EffectsRD() {
RD::get_singleton()->buffer_update(filter.coefficient_buffer, 0, sizeof(low_quality_coeffs), &low_quality_coeffs[0]);
}
- Vector<RD::Uniform> uniforms;
- {
- RD::Uniform u;
- u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
- u.binding = 0;
- u.ids.push_back(filter.coefficient_buffer);
- uniforms.push_back(u);
+ if (prefer_raster_effects) {
+ filter.raster_shader.initialize(cubemap_filter_modes);
+ filter.shader_version = filter.raster_shader.version_create();
+
+ // array variants are not supported in raster
+ filter.raster_shader.set_variant_enabled(FILTER_MODE_HIGH_QUALITY_ARRAY, false);
+ filter.raster_shader.set_variant_enabled(FILTER_MODE_LOW_QUALITY_ARRAY, false);
+
+ for (int i = 0; i < FILTER_MODE_MAX; i++) {
+ if (filter.raster_shader.is_variant_enabled(i)) {
+ filter.raster_pipelines[i].setup(filter.raster_shader.version_get_shader(filter.shader_version, i), RD::RENDER_PRIMITIVE_TRIANGLES, RD::PipelineRasterizationState(), RD::PipelineMultisampleState(), RD::PipelineDepthStencilState(), RD::PipelineColorBlendState::create_disabled(), 0);
+ } else {
+ filter.raster_pipelines[i].clear();
+ }
+ }
+
+ Vector<RD::Uniform> uniforms;
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
+ u.binding = 0;
+ u.ids.push_back(filter.coefficient_buffer);
+ uniforms.push_back(u);
+ }
+ filter.uniform_set = RD::get_singleton()->uniform_set_create(uniforms, filter.raster_shader.version_get_shader(filter.shader_version, filter.use_high_quality ? 0 : 1), 1);
+ } else {
+ filter.compute_shader.initialize(cubemap_filter_modes);
+ filter.shader_version = filter.compute_shader.version_create();
+
+ for (int i = 0; i < FILTER_MODE_MAX; i++) {
+ filter.compute_pipelines[i] = RD::get_singleton()->compute_pipeline_create(filter.compute_shader.version_get_shader(filter.shader_version, i));
+ filter.raster_pipelines[i].clear();
+ }
+
+ Vector<RD::Uniform> uniforms;
+ {
+ RD::Uniform u;
+ u.uniform_type = RD::UNIFORM_TYPE_STORAGE_BUFFER;
+ u.binding = 0;
+ u.ids.push_back(filter.coefficient_buffer);
+ uniforms.push_back(u);
+ }
+ filter.uniform_set = RD::get_singleton()->uniform_set_create(uniforms, filter.compute_shader.version_get_shader(filter.shader_version, filter.use_high_quality ? 0 : 1), 1);
}
- filter.uniform_set = RD::get_singleton()->uniform_set_create(uniforms, filter.shader.version_get_shader(filter.shader_version, filter.use_high_quality ? 0 : 1), 1);
}
{
@@ -1974,15 +2321,23 @@ EffectsRD::~EffectsRD() {
RD::get_singleton()->free(ssao.gather_constants_buffer);
RD::get_singleton()->free(ssao.importance_map_load_counter);
- bokeh.shader.version_free(bokeh.shader_version);
+ if (prefer_raster_effects) {
+ blur_raster.shader.version_free(blur_raster.shader_version);
+ luminance_reduce_raster.shader.version_free(luminance_reduce_raster.shader_version);
+ roughness.raster_shader.version_free(roughness.shader_version);
+ cubemap_downsampler.raster_shader.version_free(cubemap_downsampler.shader_version);
+ filter.raster_shader.version_free(filter.shader_version);
+ } else {
+ bokeh.shader.version_free(bokeh.shader_version);
+ luminance_reduce.shader.version_free(luminance_reduce.shader_version);
+ roughness.compute_shader.version_free(roughness.shader_version);
+ cubemap_downsampler.compute_shader.version_free(cubemap_downsampler.shader_version);
+ filter.compute_shader.version_free(filter.shader_version);
+ }
copy.shader.version_free(copy.shader_version);
copy_to_fb.shader.version_free(copy_to_fb.shader_version);
cube_to_dp.shader.version_free(cube_to_dp.shader_version);
- cubemap_downsampler.shader.version_free(cubemap_downsampler.shader_version);
- filter.shader.version_free(filter.shader_version);
- luminance_reduce.shader.version_free(luminance_reduce.shader_version);
resolve.shader.version_free(resolve.shader_version);
- roughness.shader.version_free(roughness.shader_version);
roughness_limiter.shader.version_free(roughness_limiter.shader_version);
sort.shader.version_free(sort.shader_version);
specular_merge.shader.version_free(specular_merge.shader_version);
diff --git a/servers/rendering/renderer_rd/effects_rd.h b/servers/rendering/renderer_rd/effects_rd.h
index 33d32f0c57..eff891571a 100644
--- a/servers/rendering/renderer_rd/effects_rd.h
+++ b/servers/rendering/renderer_rd/effects_rd.h
@@ -33,14 +33,19 @@
#include "core/math/camera_matrix.h"
#include "servers/rendering/renderer_rd/pipeline_cache_rd.h"
+#include "servers/rendering/renderer_rd/shaders/blur_raster.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/bokeh_dof.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/copy.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/copy_to_fb.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/cube_to_dp.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/cubemap_downsampler.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/cubemap_downsampler_raster.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/cubemap_filter.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/cubemap_filter_raster.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/cubemap_roughness.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/cubemap_roughness_raster.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/luminance_reduce.glsl.gen.h"
+#include "servers/rendering/renderer_rd/shaders/luminance_reduce_raster.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/resolve.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/roughness_limiter.glsl.gen.h"
#include "servers/rendering/renderer_rd/shaders/screen_space_reflection.glsl.gen.h"
@@ -60,6 +65,66 @@
#include "servers/rendering_server.h"
class EffectsRD {
+private:
+ bool prefer_raster_effects;
+
+ enum BlurRasterMode {
+ BLUR_MODE_GAUSSIAN_BLUR,
+ BLUR_MODE_GAUSSIAN_GLOW,
+ BLUR_MODE_GAUSSIAN_GLOW_AUTO_EXPOSURE,
+
+ BLUR_MODE_DOF_LOW,
+ BLUR_MODE_DOF_MEDIUM,
+ BLUR_MODE_DOF_HIGH,
+
+ BLUR_MODE_MAX
+ };
+
+ enum {
+ BLUR_FLAG_HORIZONTAL = (1 << 0),
+ BLUR_FLAG_USE_ORTHOGONAL_PROJECTION = (1 << 1),
+ BLUR_FLAG_GLOW_FIRST_PASS = (1 << 2),
+ BLUR_FLAG_DOF_FAR = (1 << 3),
+ BLUR_FLAG_DOF_NEAR = (1 << 4),
+ };
+
+ struct BlurRasterPushConstant {
+ float pixel_size[2];
+ uint32_t flags;
+ uint32_t pad;
+
+ //glow
+ float glow_strength;
+ float glow_bloom;
+ float glow_hdr_threshold;
+ float glow_hdr_scale;
+
+ float glow_exposure;
+ float glow_white;
+ float glow_luminance_cap;
+ float glow_auto_exposure_grey;
+
+ //dof
+ float dof_far_begin;
+ float dof_far_end;
+ float dof_near_begin;
+ float dof_near_end;
+
+ float dof_radius;
+ float dof_pad[3];
+
+ float dof_dir[2];
+ float camera_z_far;
+ float camera_z_near;
+ };
+
+ struct BlurRaster {
+ BlurRasterPushConstant push_constant;
+ BlurRasterShaderRD shader;
+ RID shader_version;
+ PipelineCacheRD pipelines[BLUR_MODE_MAX];
+ } blur_raster;
+
enum CopyMode {
COPY_MODE_GAUSSIAN_COPY,
COPY_MODE_GAUSSIAN_COPY_8BIT,
@@ -161,9 +226,11 @@ class EffectsRD {
struct CubemapRoughness {
CubemapRoughnessPushConstant push_constant;
- CubemapRoughnessShaderRD shader;
+ CubemapRoughnessShaderRD compute_shader;
+ CubemapRoughnessRasterShaderRD raster_shader;
RID shader_version;
- RID pipeline;
+ RID compute_pipeline;
+ PipelineCacheRD raster_pipeline;
} roughness;
enum TonemapMode {
@@ -239,6 +306,29 @@ class EffectsRD {
RID pipelines[LUMINANCE_REDUCE_MAX];
} luminance_reduce;
+ enum LuminanceReduceRasterMode {
+ LUMINANCE_REDUCE_FRAGMENT_FIRST,
+ LUMINANCE_REDUCE_FRAGMENT,
+ LUMINANCE_REDUCE_FRAGMENT_FINAL,
+ LUMINANCE_REDUCE_FRAGMENT_MAX
+ };
+
+ struct LuminanceReduceRasterPushConstant {
+ int32_t source_size[2];
+ int32_t dest_size[2];
+ float exposure_adjust;
+ float min_luminance;
+ float max_luminance;
+ float pad[1];
+ };
+
+ struct LuminanceReduceFragment {
+ LuminanceReduceRasterPushConstant push_constant;
+ LuminanceReduceRasterShaderRD shader;
+ RID shader_version;
+ PipelineCacheRD pipelines[LUMINANCE_REDUCE_FRAGMENT_MAX];
+ } luminance_reduce_raster;
+
struct CopyToDPPushConstant {
float z_far;
float z_near;
@@ -426,15 +516,17 @@ class EffectsRD {
struct CubemapDownsamplerPushConstant {
uint32_t face_size;
- float pad[3];
+ uint32_t face_id;
+ float pad[2];
};
struct CubemapDownsampler {
CubemapDownsamplerPushConstant push_constant;
- CubemapDownsamplerShaderRD shader;
+ CubemapDownsamplerShaderRD compute_shader;
+ CubemapDownsamplerRasterShaderRD raster_shader;
RID shader_version;
- RID pipeline;
-
+ RID compute_pipeline;
+ PipelineCacheRD raster_pipeline;
} cubemap_downsampler;
enum CubemapFilterMode {
@@ -445,10 +537,19 @@ class EffectsRD {
FILTER_MODE_MAX,
};
+ struct CubemapFilterRasterPushConstant {
+ uint32_t mip_level;
+ uint32_t face_id;
+ float pad[2];
+ };
+
struct CubemapFilter {
- CubemapFilterShaderRD shader;
+ CubemapFilterShaderRD compute_shader;
+ CubemapFilterRasterShaderRD raster_shader;
RID shader_version;
- RID pipelines[FILTER_MODE_MAX];
+ RID compute_pipelines[FILTER_MODE_MAX];
+ PipelineCacheRD raster_pipelines[FILTER_MODE_MAX];
+
RID uniform_set;
RID image_uniform_set;
RID coefficient_buffer;
@@ -657,6 +758,8 @@ class EffectsRD {
RID _get_compute_uniform_set_from_image_pair(RID p_texture, RID p_texture2);
public:
+ bool get_prefer_raster_effects();
+
void copy_to_fb_rect(RID p_source_rd_texture, RID p_dest_framebuffer, const Rect2i &p_rect, bool p_flip_y = false, bool p_force_luminance = false, bool p_alpha_to_zero = false, bool p_srgb = false, RID p_secondary = RID());
void copy_to_rect(RID p_source_rd_texture, RID p_dest_texture, const Rect2i &p_rect, bool p_flip_y = false, bool p_force_luminance = false, bool p_all_source = false, bool p_8_bit_dst = false, bool p_alpha_to_one = false);
void copy_cubemap_to_panorama(RID p_source_cube, RID p_dest_panorama, const Size2i &p_panorama_size, float p_lod, bool p_is_array);
@@ -666,12 +769,17 @@ public:
void gaussian_blur(RID p_source_rd_texture, RID p_texture, RID p_back_texture, const Rect2i &p_region, bool p_8bit_dst = false);
void set_color(RID p_dest_texture, const Color &p_color, const Rect2i &p_region, bool p_8bit_dst = false);
void gaussian_glow(RID p_source_rd_texture, RID p_back_texture, const Size2i &p_size, float p_strength = 1.0, bool p_high_quality = false, bool p_first_pass = false, float p_luminance_cap = 16.0, float p_exposure = 1.0, float p_bloom = 0.0, float p_hdr_bleed_treshold = 1.0, float p_hdr_bleed_scale = 1.0, RID p_auto_exposure = RID(), float p_auto_exposure_grey = 1.0);
+ void gaussian_glow_raster(RID p_source_rd_texture, RID p_framebuffer_half, RID p_rd_texture_half, RID p_dest_framebuffer, const Vector2 &p_pixel_size, float p_strength = 1.0, bool p_high_quality = false, bool p_first_pass = false, float p_luminance_cap = 16.0, float p_exposure = 1.0, float p_bloom = 0.0, float p_hdr_bleed_treshold = 1.0, float p_hdr_bleed_scale = 1.0, RID p_auto_exposure = RID(), float p_auto_exposure_grey = 1.0);
- void cubemap_roughness(RID p_source_rd_texture, RID p_dest_framebuffer, uint32_t p_face_id, uint32_t p_sample_count, float p_roughness, float p_size);
+ void cubemap_roughness(RID p_source_rd_texture, RID p_dest_texture, uint32_t p_face_id, uint32_t p_sample_count, float p_roughness, float p_size);
+ void cubemap_roughness_raster(RID p_source_rd_texture, RID p_dest_framebuffer, uint32_t p_face_id, uint32_t p_sample_count, float p_roughness, float p_size);
void make_mipmap(RID p_source_rd_texture, RID p_dest_texture, const Size2i &p_size);
void copy_cubemap_to_dp(RID p_source_rd_texture, RID p_dest_texture, const Rect2 &p_rect, float p_z_near, float p_z_far, bool p_dp_flip);
void luminance_reduction(RID p_source_texture, const Size2i p_source_size, const Vector<RID> p_reduce, RID p_prev_luminance, float p_min_luminance, float p_max_luminance, float p_adjust, bool p_set = false);
+ void luminance_reduction_raster(RID p_source_texture, const Size2i p_source_size, const Vector<RID> p_reduce, Vector<RID> p_fb, RID p_prev_luminance, float p_min_luminance, float p_max_luminance, float p_adjust, bool p_set = false);
+
void bokeh_dof(RID p_base_texture, RID p_depth_texture, const Size2i &p_base_texture_size, RID p_secondary_texture, RID p_bokeh_texture1, RID p_bokeh_texture2, bool p_dof_far, float p_dof_far_begin, float p_dof_far_size, bool p_dof_near, float p_dof_near_begin, float p_dof_near_size, float p_bokeh_size, RS::DOFBokehShape p_bokeh_shape, RS::DOFBlurQuality p_quality, bool p_use_jitter, float p_cam_znear, float p_cam_zfar, bool p_cam_orthogonal);
+ void blur_dof_raster(RID p_base_texture, RID p_depth_texture, const Size2i &p_base_texture_size, RID p_base_fb, RID p_secondary_texture, RID p_secondary_fb, bool p_dof_far, float p_dof_far_begin, float p_dof_far_size, bool p_dof_near, float p_dof_near_begin, float p_dof_near_size, float p_dof_blur_amount, RS::DOFBlurQuality p_quality, float p_cam_znear, float p_cam_zfar, bool p_cam_orthogonal);
struct TonemapSettings {
bool use_glow = false;
@@ -740,7 +848,9 @@ public:
void roughness_limit(RID p_source_normal, RID p_roughness, const Size2i &p_size, float p_curve);
void cubemap_downsample(RID p_source_cubemap, RID p_dest_cubemap, const Size2i &p_size);
+ void cubemap_downsample_raster(RID p_source_cubemap, RID p_dest_framebuffer, uint32_t p_face_id, const Size2i &p_size);
void cubemap_filter(RID p_source_cubemap, Vector<RID> p_dest_cubemap, bool p_use_array);
+ void cubemap_filter_raster(RID p_source_cubemap, RID p_dest_framebuffer, uint32_t p_face_id, uint32_t p_mip_level);
void screen_space_reflection(RID p_diffuse, RID p_normal_roughness, RS::EnvironmentSSRRoughnessQuality p_roughness_quality, RID p_blur_radius, RID p_blur_radius2, RID p_metallic, const Color &p_metallic_mask, RID p_depth, RID p_scale_depth, RID p_scale_normal, RID p_output, RID p_output_blur, const Size2i &p_screen_size, int p_max_steps, float p_fade_in, float p_fade_out, float p_tolerance, const CameraMatrix &p_camera);
void merge_specular(RID p_dest_framebuffer, RID p_specular, RID p_base, RID p_reflection);
@@ -751,7 +861,7 @@ public:
void sort_buffer(RID p_uniform_set, int p_size);
- EffectsRD();
+ EffectsRD(bool p_prefer_raster_effects);
~EffectsRD();
};
diff --git a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
index 438bbff53c..4725599148 100644
--- a/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
+++ b/servers/rendering/renderer_rd/forward_mobile/render_forward_mobile.cpp
@@ -96,10 +96,6 @@ void RenderForwardMobile::RenderBufferDataForwardMobile::configure(RID p_color_b
RD::DataFormat color_format = RenderForwardMobile::singleton->_render_buffers_get_color_format();
if (p_msaa == RS::VIEWPORT_MSAA_DISABLED) {
- if (color_format == RD::DATA_FORMAT_A2B10G10R10_UNORM_PACK32) {
- // @TODO add a second color buffer for alpha as this format is RGB only
- }
-
Vector<RID> fb;
fb.push_back(p_color_buffer);
fb.push_back(depth);
@@ -164,16 +160,13 @@ bool RenderForwardMobile::free(RID p_rid) {
/* Render functions */
RD::DataFormat RenderForwardMobile::_render_buffers_get_color_format() {
- // Using 32bit buffers enables AFBC on mobile devices which should have a definate performance improvement (MALI G710 and newer support this on 64bit RTs)
- // NO ALPHA and unsigned float.
- // @TODO No alpha is an issue, recommendation here is to add a second RT for alpha
+ // Using 32bit buffers enables AFBC on mobile devices which should have a definite performance improvement (MALI G710 and newer support this on 64bit RTs)
return RD::DATA_FORMAT_A2B10G10R10_UNORM_PACK32;
}
bool RenderForwardMobile::_render_buffers_can_be_storage() {
- // Using 32bit buffers enables AFBC on mobile devices which should have a definate performance improvement (MALI G710 and newer support this on 64bit RTs)
- // NO ALPHA and unsigned float.
- // @TODO No alpha is an issue, recommendation here is to add a second RT for alpha
+ // Using 32bit buffers enables AFBC on mobile devices which should have a definite performance improvement (MALI G710 and newer support this on 64bit RTs)
+ // Doesn't support storage
return false;
}
@@ -2332,6 +2325,8 @@ RenderForwardMobile::RenderForwardMobile(RendererStorageRD *p_storage) :
RendererSceneRenderRD(p_storage) {
singleton = this;
+ sky.set_texture_format(_render_buffers_get_color_format());
+
String defines;
defines += "\n#define MAX_ROUGHNESS_LOD " + itos(get_roughness_layers() - 1) + ".0\n";
diff --git a/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp b/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp
index 6a66e9fa01..18c1fe02a0 100644
--- a/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_canvas_render_rd.cpp
@@ -620,7 +620,7 @@ void RendererCanvasRenderRD::_render_item(RD::DrawListID p_draw_list, RID p_rend
RD::get_singleton()->draw_list_bind_index_array(p_draw_list, shader.quad_index_array);
RD::get_singleton()->draw_list_draw(p_draw_list, true);
- //restore if overrided
+ // Restore if overridden.
push_constant.color_texture_pixel_size[0] = texpixel_size.x;
push_constant.color_texture_pixel_size[1] = texpixel_size.y;
diff --git a/servers/rendering/renderer_rd/renderer_compositor_rd.cpp b/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
index e6ae66d56f..02d548bf13 100644
--- a/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_compositor_rd.cpp
@@ -222,7 +222,7 @@ void RendererCompositorRD::set_boot_image(const Ref<Image> &p_image, const Color
RD::get_singleton()->swap_buffers();
- RD::get_singleton()->free(texture);
+ storage->free(texture);
}
RendererCompositorRD *RendererCompositorRD::singleton = nullptr;
@@ -280,6 +280,9 @@ RendererCompositorRD::RendererCompositorRD() {
// default to our high end renderer
scene = memnew(RendererSceneRenderImplementation::RenderForwardClustered(storage));
}
+
+ // now we're ready to create our effects,
+ storage->init_effects(!scene->_render_buffers_can_be_storage());
}
RendererCompositorRD::~RendererCompositorRD() {
diff --git a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
index 4870f5f397..e3516df800 100644
--- a/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_scene_render_rd.cpp
@@ -629,6 +629,8 @@ bool RendererSceneRenderRD::reflection_probe_instance_begin_render(RID p_instanc
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.getornull(p_instance);
ERR_FAIL_COND_V(!rpi, false);
+ RD::get_singleton()->draw_command_begin_label("Reflection probe render");
+
if (storage->reflection_probe_get_update_mode(rpi->probe) == RS::REFLECTION_PROBE_UPDATE_ALWAYS && atlas->reflection.is_valid() && atlas->size != 256) {
WARN_PRINT("ReflectionProbes set to UPDATE_ALWAYS must have an atlas size of 256. Please update the atlas size in the ProjectSettings.");
reflection_atlas_set_size(p_reflection_atlas, 256, atlas->count);
@@ -675,7 +677,7 @@ bool RendererSceneRenderRD::reflection_probe_instance_begin_render(RID p_instanc
}
atlas->reflections.resize(atlas->count);
for (int i = 0; i < atlas->count; i++) {
- atlas->reflections.write[i].data.update_reflection_data(atlas->size, mipmaps, false, atlas->reflection, i * 6, storage->reflection_probe_get_update_mode(rpi->probe) == RS::REFLECTION_PROBE_UPDATE_ALWAYS, sky.roughness_layers);
+ atlas->reflections.write[i].data.update_reflection_data(storage, atlas->size, mipmaps, false, atlas->reflection, i * 6, storage->reflection_probe_get_update_mode(rpi->probe) == RS::REFLECTION_PROBE_UPDATE_ALWAYS, sky.roughness_layers, _render_buffers_get_color_format());
for (int j = 0; j < 6; j++) {
Vector<RID> fb;
fb.push_back(atlas->reflections.write[i].data.layers[0].mipmaps[0].views[j]);
@@ -721,6 +723,8 @@ bool RendererSceneRenderRD::reflection_probe_instance_begin_render(RID p_instanc
rpi->processing_layer = 1;
rpi->processing_side = 0;
+ RD::get_singleton()->draw_command_end_label();
+
return true;
}
@@ -1383,12 +1387,20 @@ void RendererSceneRenderRD::_allocate_blur_textures(RenderBuffers *rb) {
uint32_t mipmaps_required = Image::get_image_required_mipmaps(rb->width, rb->height, Image::FORMAT_RGBAH);
+ // TODO make sure texture_create_shared_from_slice works for multiview
+
RD::TextureFormat tf;
- tf.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
+ tf.format = _render_buffers_get_color_format(); // RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
tf.width = rb->width;
tf.height = rb->height;
- tf.texture_type = RD::TEXTURE_TYPE_2D;
- tf.usage_bits = RD::TEXTURE_USAGE_STORAGE_BIT | RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_CAN_COPY_TO_BIT;
+ tf.texture_type = rb->view_count > 1 ? RD::TEXTURE_TYPE_2D_ARRAY : RD::TEXTURE_TYPE_2D;
+ tf.array_layers = rb->view_count;
+ tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_CAN_COPY_TO_BIT;
+ if (_render_buffers_can_be_storage()) {
+ tf.usage_bits += RD::TEXTURE_USAGE_STORAGE_BIT;
+ } else {
+ tf.usage_bits += RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT;
+ }
tf.mipmaps = mipmaps_required;
rb->blur[0].texture = RD::get_singleton()->texture_create(tf, RD::TextureView());
@@ -1408,11 +1420,40 @@ void RendererSceneRenderRD::_allocate_blur_textures(RenderBuffers *rb) {
mm.width = base_width;
mm.height = base_height;
+ if (!_render_buffers_can_be_storage()) {
+ Vector<RID> fb;
+ fb.push_back(mm.texture);
+
+ mm.fb = RD::get_singleton()->framebuffer_create(fb);
+ }
+
+ if (!_render_buffers_can_be_storage()) {
+ // and half texture, this is an intermediate result so just allocate a texture, is this good enough?
+ tf.width = MAX(1, base_width >> 1);
+ tf.height = base_height;
+ tf.mipmaps = 1; // 1 or 0?
+
+ mm.half_texture = RD::get_singleton()->texture_create(tf, RD::TextureView());
+
+ Vector<RID> half_fb;
+ half_fb.push_back(mm.half_texture);
+ mm.half_fb = RD::get_singleton()->framebuffer_create(half_fb);
+ }
+
rb->blur[0].mipmaps.push_back(mm);
if (i > 0) {
mm.texture = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), rb->blur[1].texture, 0, i - 1);
+ if (!_render_buffers_can_be_storage()) {
+ Vector<RID> fb;
+ fb.push_back(mm.texture);
+
+ mm.fb = RD::get_singleton()->framebuffer_create(fb);
+
+ // We can re-use the half texture here as it is an intermediate result
+ }
+
rb->blur[1].mipmaps.push_back(mm);
}
@@ -1435,26 +1476,48 @@ void RendererSceneRenderRD::_allocate_luminance_textures(RenderBuffers *rb) {
tf.format = RD::DATA_FORMAT_R32_SFLOAT;
tf.width = w;
tf.height = h;
- tf.usage_bits = RD::TEXTURE_USAGE_STORAGE_BIT;
bool final = w == 1 && h == 1;
- if (final) {
- tf.usage_bits |= RD::TEXTURE_USAGE_SAMPLING_BIT;
+ if (_render_buffers_can_be_storage()) {
+ tf.usage_bits = RD::TEXTURE_USAGE_STORAGE_BIT;
+ if (final) {
+ tf.usage_bits |= RD::TEXTURE_USAGE_SAMPLING_BIT;
+ }
+ } else {
+ tf.usage_bits = RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT | RD::TEXTURE_USAGE_SAMPLING_BIT;
}
RID texture = RD::get_singleton()->texture_create(tf, RD::TextureView());
rb->luminance.reduce.push_back(texture);
+ if (!_render_buffers_can_be_storage()) {
+ Vector<RID> fb;
+ fb.push_back(texture);
+
+ rb->luminance.fb.push_back(RD::get_singleton()->framebuffer_create(fb));
+ }
if (final) {
rb->luminance.current = RD::get_singleton()->texture_create(tf, RD::TextureView());
+
+ if (!_render_buffers_can_be_storage()) {
+ Vector<RID> fb;
+ fb.push_back(rb->luminance.current);
+
+ rb->luminance.current_fb = RD::get_singleton()->framebuffer_create(fb);
+ }
break;
}
}
}
void RendererSceneRenderRD::_free_render_buffer_data(RenderBuffers *rb) {
+ if (rb->texture_fb.is_valid()) {
+ RD::get_singleton()->free(rb->texture_fb);
+ rb->texture_fb = RID();
+ }
+
if (rb->texture.is_valid()) {
RD::get_singleton()->free(rb->texture);
rb->texture = RID();
@@ -1466,19 +1529,43 @@ void RendererSceneRenderRD::_free_render_buffer_data(RenderBuffers *rb) {
}
for (int i = 0; i < 2; i++) {
+ for (int m = 0; m < rb->blur[i].mipmaps.size(); m++) {
+ // do we free the texture slice here? or is it enough to free the main texture?
+
+ // do free the mobile extra stuff
+ if (rb->blur[i].mipmaps[m].fb.is_valid()) {
+ RD::get_singleton()->free(rb->blur[i].mipmaps[m].fb);
+ }
+ if (rb->blur[i].mipmaps[m].half_fb.is_valid()) {
+ RD::get_singleton()->free(rb->blur[i].mipmaps[m].half_fb);
+ }
+ if (rb->blur[i].mipmaps[m].half_texture.is_valid()) {
+ RD::get_singleton()->free(rb->blur[i].mipmaps[m].half_texture);
+ }
+ }
+ rb->blur[i].mipmaps.clear();
+
if (rb->blur[i].texture.is_valid()) {
RD::get_singleton()->free(rb->blur[i].texture);
rb->blur[i].texture = RID();
- rb->blur[i].mipmaps.clear();
}
}
+ for (int i = 0; i < rb->luminance.fb.size(); i++) {
+ RD::get_singleton()->free(rb->luminance.fb[i]);
+ }
+ rb->luminance.fb.clear();
+
for (int i = 0; i < rb->luminance.reduce.size(); i++) {
RD::get_singleton()->free(rb->luminance.reduce[i]);
}
-
rb->luminance.reduce.clear();
+ if (rb->luminance.current_fb.is_valid()) {
+ RD::get_singleton()->free(rb->luminance.current_fb);
+ rb->luminance.current_fb = RID();
+ }
+
if (rb->luminance.current.is_valid()) {
RD::get_singleton()->free(rb->luminance.current);
rb->luminance.current = RID();
@@ -1750,17 +1837,27 @@ void RendererSceneRenderRD::_render_buffers_post_process_and_tonemap(const Rende
CameraEffects *camfx = camera_effects_owner.getornull(p_render_data->camera_effects);
bool can_use_effects = rb->width >= 8 && rb->height >= 8;
+ bool can_use_storage = _render_buffers_can_be_storage();
+
+ // @TODO IMPLEMENT MULTIVIEW, all effects need to support stereo buffers or effects are only applied to the left eye
if (can_use_effects && camfx && (camfx->dof_blur_near_enabled || camfx->dof_blur_far_enabled) && camfx->dof_blur_amount > 0.0) {
+ RD::get_singleton()->draw_command_begin_label("DOF");
if (rb->blur[0].texture.is_null()) {
_allocate_blur_textures(rb);
}
- float bokeh_size = camfx->dof_blur_amount * 64.0;
- storage->get_effects()->bokeh_dof(rb->texture, rb->depth_texture, Size2i(rb->width, rb->height), rb->blur[0].mipmaps[0].texture, rb->blur[1].mipmaps[0].texture, rb->blur[0].mipmaps[1].texture, camfx->dof_blur_far_enabled, camfx->dof_blur_far_distance, camfx->dof_blur_far_transition, camfx->dof_blur_near_enabled, camfx->dof_blur_near_distance, camfx->dof_blur_near_transition, bokeh_size, dof_blur_bokeh_shape, dof_blur_quality, dof_blur_use_jitter, p_render_data->z_near, p_render_data->z_far, p_render_data->cam_ortogonal);
+ if (can_use_storage) {
+ float bokeh_size = camfx->dof_blur_amount * 64.0;
+ storage->get_effects()->bokeh_dof(rb->texture, rb->depth_texture, Size2i(rb->width, rb->height), rb->blur[0].mipmaps[0].texture, rb->blur[1].mipmaps[0].texture, rb->blur[0].mipmaps[1].texture, camfx->dof_blur_far_enabled, camfx->dof_blur_far_distance, camfx->dof_blur_far_transition, camfx->dof_blur_near_enabled, camfx->dof_blur_near_distance, camfx->dof_blur_near_transition, bokeh_size, dof_blur_bokeh_shape, dof_blur_quality, dof_blur_use_jitter, p_render_data->z_near, p_render_data->z_far, p_render_data->cam_ortogonal);
+ } else {
+ storage->get_effects()->blur_dof_raster(rb->texture, rb->depth_texture, Size2i(rb->width, rb->height), rb->texture_fb, rb->blur[0].mipmaps[0].texture, rb->blur[0].mipmaps[0].fb, camfx->dof_blur_far_enabled, camfx->dof_blur_far_distance, camfx->dof_blur_far_transition, camfx->dof_blur_near_enabled, camfx->dof_blur_near_distance, camfx->dof_blur_near_transition, camfx->dof_blur_amount, dof_blur_quality, p_render_data->z_near, p_render_data->z_far, p_render_data->cam_ortogonal);
+ }
+ RD::get_singleton()->draw_command_end_label();
}
if (can_use_effects && env && env->auto_exposure) {
+ RD::get_singleton()->draw_command_begin_label("Auto exposure");
if (rb->luminance.current.is_null()) {
_allocate_luminance_textures(rb);
}
@@ -1769,16 +1866,26 @@ void RendererSceneRenderRD::_render_buffers_post_process_and_tonemap(const Rende
rb->auto_exposure_version = env->auto_exposure_version;
double step = env->auto_exp_speed * time_step;
- storage->get_effects()->luminance_reduction(rb->texture, Size2i(rb->width, rb->height), rb->luminance.reduce, rb->luminance.current, env->min_luminance, env->max_luminance, step, set_immediate);
-
+ if (can_use_storage) {
+ storage->get_effects()->luminance_reduction(rb->texture, Size2i(rb->width, rb->height), rb->luminance.reduce, rb->luminance.current, env->min_luminance, env->max_luminance, step, set_immediate);
+ } else {
+ storage->get_effects()->luminance_reduction_raster(rb->texture, Size2i(rb->width, rb->height), rb->luminance.reduce, rb->luminance.fb, rb->luminance.current, env->min_luminance, env->max_luminance, step, set_immediate);
+ }
//swap final reduce with prev luminance
SWAP(rb->luminance.current, rb->luminance.reduce.write[rb->luminance.reduce.size() - 1]);
+ if (!can_use_storage) {
+ SWAP(rb->luminance.current_fb, rb->luminance.fb.write[rb->luminance.fb.size() - 1]);
+ }
+
RenderingServerDefault::redraw_request(); //redraw all the time if auto exposure rendering is on
+ RD::get_singleton()->draw_command_end_label();
}
int max_glow_level = -1;
if (can_use_effects && env && env->glow_enabled) {
+ RD::get_singleton()->draw_command_begin_label("Gaussian Glow");
+
/* see that blur textures are allocated */
if (rb->blur[1].texture.is_null()) {
@@ -1804,14 +1911,26 @@ void RendererSceneRenderRD::_render_buffers_post_process_and_tonemap(const Rende
if (env->auto_exposure && rb->luminance.current.is_valid()) {
luminance_texture = rb->luminance.current;
}
- storage->get_effects()->gaussian_glow(rb->texture, rb->blur[1].mipmaps[i].texture, Size2i(vp_w, vp_h), env->glow_strength, glow_high_quality, true, env->glow_hdr_luminance_cap, env->exposure, env->glow_bloom, env->glow_hdr_bleed_threshold, env->glow_hdr_bleed_scale, luminance_texture, env->auto_exp_scale);
+ if (can_use_storage) {
+ storage->get_effects()->gaussian_glow(rb->texture, rb->blur[1].mipmaps[i].texture, Size2i(vp_w, vp_h), env->glow_strength, glow_high_quality, true, env->glow_hdr_luminance_cap, env->exposure, env->glow_bloom, env->glow_hdr_bleed_threshold, env->glow_hdr_bleed_scale, luminance_texture, env->auto_exp_scale);
+ } else {
+ storage->get_effects()->gaussian_glow_raster(rb->texture, rb->blur[1].mipmaps[i].half_fb, rb->blur[1].mipmaps[i].half_texture, rb->blur[1].mipmaps[i].fb, Size2i(vp_w, vp_h), env->glow_strength, glow_high_quality, true, env->glow_hdr_luminance_cap, env->exposure, env->glow_bloom, env->glow_hdr_bleed_threshold, env->glow_hdr_bleed_scale, luminance_texture, env->auto_exp_scale);
+ }
} else {
- storage->get_effects()->gaussian_glow(rb->blur[1].mipmaps[i - 1].texture, rb->blur[1].mipmaps[i].texture, Size2i(vp_w, vp_h), env->glow_strength, glow_high_quality);
+ if (can_use_storage) {
+ storage->get_effects()->gaussian_glow(rb->blur[1].mipmaps[i - 1].texture, rb->blur[1].mipmaps[i].texture, Size2i(vp_w, vp_h), env->glow_strength, glow_high_quality);
+ } else {
+ storage->get_effects()->gaussian_glow_raster(rb->blur[1].mipmaps[i - 1].texture, rb->blur[1].mipmaps[i].half_fb, rb->blur[1].mipmaps[i].half_texture, rb->blur[1].mipmaps[i].fb, Vector2(1.0 / vp_w, 1.0 / vp_h), env->glow_strength, glow_high_quality);
+ }
}
}
+
+ RD::get_singleton()->draw_command_end_label();
}
{
+ RD::get_singleton()->draw_command_begin_label("Tonemap");
+
//tonemap
EffectsRD::TonemapSettings tonemap;
@@ -1870,6 +1989,8 @@ void RendererSceneRenderRD::_render_buffers_post_process_and_tonemap(const Rende
tonemap.view_count = p_render_data->view_count;
storage->get_effects()->tonemapper(rb->texture, storage->render_target_get_rd_framebuffer(rb->render_target), tonemap);
+
+ RD::get_singleton()->draw_command_end_label();
}
storage->render_target_disable_clear_request(rb->render_target);
@@ -2133,7 +2254,7 @@ bool RendererSceneRenderRD::_render_buffers_can_be_storage() {
}
void RendererSceneRenderRD::render_buffers_configure(RID p_render_buffers, RID p_render_target, int p_width, int p_height, RS::ViewportMSAA p_msaa, RenderingServer::ViewportScreenSpaceAA p_screen_space_aa, bool p_use_debanding, uint32_t p_view_count) {
- ERR_FAIL_COND_MSG(p_view_count == 0, "Must have atleast 1 view");
+ ERR_FAIL_COND_MSG(p_view_count == 0, "Must have at least 1 view");
RenderBuffers *rb = render_buffers_owner.getornull(p_render_buffers);
rb->width = p_width;
@@ -2197,6 +2318,14 @@ void RendererSceneRenderRD::render_buffers_configure(RID p_render_buffers, RID p
rb->depth_texture = RD::get_singleton()->texture_create(tf, RD::TextureView());
}
+ if (!_render_buffers_can_be_storage()) {
+ // ONLY USED ON MOBILE RENDERER, ONLY USED FOR POST EFFECTS!
+ Vector<RID> fb;
+ fb.push_back(rb->texture);
+
+ rb->texture_fb = RD::get_singleton()->framebuffer_create(fb, RenderingDevice::INVALID_ID, rb->view_count);
+ }
+
rb->data->configure(rb->texture, rb->depth_texture, p_width, p_height, p_msaa, p_view_count);
if (is_clustered_enabled()) {
diff --git a/servers/rendering/renderer_rd/renderer_scene_render_rd.h b/servers/rendering/renderer_rd/renderer_scene_render_rd.h
index 5e0281002d..bb06eb608f 100644
--- a/servers/rendering/renderer_rd/renderer_scene_render_rd.h
+++ b/servers/rendering/renderer_rd/renderer_scene_render_rd.h
@@ -450,6 +450,7 @@ private:
RID texture; //main texture for rendering to, must be filled after done rendering
RID depth_texture; //main depth texture
+ RID texture_fb; // framebuffer for the main texture, ONLY USED FOR MOBILE RENDERER POST EFFECTS, DO NOT USE FOR RENDERING 3D!!!
RendererSceneGIRD::SDFGI *sdfgi = nullptr;
VolumetricFog *volumetric_fog = nullptr;
@@ -465,6 +466,11 @@ private:
RID texture;
int width;
int height;
+
+ // only used on mobile renderer
+ RID fb;
+ RID half_texture;
+ RID half_fb;
};
Vector<Mipmap> mipmaps;
@@ -475,6 +481,10 @@ private:
struct Luminance {
Vector<RID> reduce;
RID current;
+
+ // used only on mobile renderer
+ Vector<RID> fb;
+ RID current_fb;
} luminance;
struct SSAO {
diff --git a/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp b/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp
index bc1603a219..cadf759ec3 100644
--- a/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_scene_sky_rd.cpp
@@ -313,12 +313,16 @@ void RendererSceneSkyRD::ReflectionData::clear_reflection_data() {
coefficient_buffer = RID();
}
-void RendererSceneSkyRD::ReflectionData::update_reflection_data(int p_size, int p_mipmaps, bool p_use_array, RID p_base_cube, int p_base_layer, bool p_low_quality, int p_roughness_layers) {
+void RendererSceneSkyRD::ReflectionData::update_reflection_data(RendererStorageRD *p_storage, int p_size, int p_mipmaps, bool p_use_array, RID p_base_cube, int p_base_layer, bool p_low_quality, int p_roughness_layers, RD::DataFormat p_texture_format) {
//recreate radiance and all data
int mipmaps = p_mipmaps;
uint32_t w = p_size, h = p_size;
+ EffectsRD *effects = p_storage->get_effects();
+ ERR_FAIL_NULL_MSG(effects, "Effects haven't been initialised");
+ bool prefer_raster_effects = effects->get_prefer_raster_effects();
+
if (p_use_array) {
int num_layers = p_low_quality ? 8 : p_roughness_layers;
@@ -377,9 +381,9 @@ void RendererSceneSkyRD::ReflectionData::update_reflection_data(int p_size, int
}
radiance_base_cubemap = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), p_base_cube, p_base_layer, 0, RD::TEXTURE_SLICE_CUBEMAP);
-
+ RD::get_singleton()->set_resource_name(radiance_base_cubemap, "radiance base cubemap");
RD::TextureFormat tf;
- tf.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
+ tf.format = p_texture_format;
tf.width = 64; // Always 64x64
tf.height = 64;
tf.texture_type = RD::TEXTURE_TYPE_CUBE;
@@ -388,6 +392,7 @@ void RendererSceneSkyRD::ReflectionData::update_reflection_data(int p_size, int
tf.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_STORAGE_BIT | RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT;
downsampled_radiance_cubemap = RD::get_singleton()->texture_create(tf, RD::TextureView());
+ RD::get_singleton()->set_resource_name(downsampled_radiance_cubemap, "downsampled radiance cubemap");
{
uint32_t mmw = 64;
uint32_t mmh = 64;
@@ -397,6 +402,18 @@ void RendererSceneSkyRD::ReflectionData::update_reflection_data(int p_size, int
mm.size.width = mmw;
mm.size.height = mmh;
mm.view = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), downsampled_radiance_cubemap, 0, j, RD::TEXTURE_SLICE_CUBEMAP);
+ RD::get_singleton()->set_resource_name(mm.view, "Downsampled Radiance Cubemap Mip " + itos(j) + " ");
+ if (prefer_raster_effects) {
+ // we need a framebuffer for each side of our cubemap
+
+ for (int k = 0; k < 6; k++) {
+ mm.views[k] = RD::get_singleton()->texture_create_shared_from_slice(RD::TextureView(), downsampled_radiance_cubemap, k, j);
+ RD::get_singleton()->set_resource_name(mm.view, "Downsampled Radiance Cubemap Mip: " + itos(j) + " Face: " + itos(k) + " ");
+ Vector<RID> fbtex;
+ fbtex.push_back(mm.views[k]);
+ mm.framebuffers[k] = RD::get_singleton()->framebuffer_create(fbtex);
+ }
+ }
mmw = MAX(1, mmw >> 1);
mmh = MAX(1, mmh >> 1);
@@ -405,50 +422,128 @@ void RendererSceneSkyRD::ReflectionData::update_reflection_data(int p_size, int
}
void RendererSceneSkyRD::ReflectionData::create_reflection_fast_filter(RendererStorageRD *p_storage, bool p_use_arrays) {
- p_storage->get_effects()->cubemap_downsample(radiance_base_cubemap, downsampled_layer.mipmaps[0].view, downsampled_layer.mipmaps[0].size);
+ EffectsRD *effects = p_storage->get_effects();
+ ERR_FAIL_NULL_MSG(effects, "Effects haven't been initialised");
+ bool prefer_raster_effects = effects->get_prefer_raster_effects();
+
+ if (prefer_raster_effects) {
+ RD::get_singleton()->draw_command_begin_label("Downsample radiance map");
+ for (int k = 0; k < 6; k++) {
+ effects->cubemap_downsample_raster(radiance_base_cubemap, downsampled_layer.mipmaps[0].framebuffers[k], k, downsampled_layer.mipmaps[0].size);
+ }
- for (int i = 1; i < downsampled_layer.mipmaps.size(); i++) {
- p_storage->get_effects()->cubemap_downsample(downsampled_layer.mipmaps[i - 1].view, downsampled_layer.mipmaps[i].view, downsampled_layer.mipmaps[i].size);
- }
+ for (int i = 1; i < downsampled_layer.mipmaps.size(); i++) {
+ for (int k = 0; k < 6; k++) {
+ effects->cubemap_downsample_raster(downsampled_layer.mipmaps[i - 1].view, downsampled_layer.mipmaps[i].framebuffers[k], k, downsampled_layer.mipmaps[i].size);
+ }
+ }
+ RD::get_singleton()->draw_command_end_label(); // Downsample Radiance
- Vector<RID> views;
- if (p_use_arrays) {
- for (int i = 1; i < layers.size(); i++) {
- views.push_back(layers[i].views[0]);
+ if (p_use_arrays) {
+ RD::get_singleton()->draw_command_begin_label("filter radiance map into array heads");
+ for (int i = 0; i < layers.size(); i++) {
+ for (int k = 0; k < 6; k++) {
+ effects->cubemap_filter_raster(downsampled_radiance_cubemap, layers[i].mipmaps[0].framebuffers[k], k, i);
+ }
+ }
+ } else {
+ RD::get_singleton()->draw_command_begin_label("filter radiance map into mipmaps directly");
+ for (int j = 0; j < layers[0].mipmaps.size(); j++) {
+ for (int k = 0; k < 6; k++) {
+ effects->cubemap_filter_raster(downsampled_radiance_cubemap, layers[0].mipmaps[j].framebuffers[k], k, j);
+ }
+ }
}
+ RD::get_singleton()->draw_command_end_label(); // Filter radiance
} else {
- for (int i = 1; i < layers[0].views.size(); i++) {
- views.push_back(layers[0].views[i]);
+ effects->cubemap_downsample(radiance_base_cubemap, downsampled_layer.mipmaps[0].view, downsampled_layer.mipmaps[0].size);
+
+ for (int i = 1; i < downsampled_layer.mipmaps.size(); i++) {
+ effects->cubemap_downsample(downsampled_layer.mipmaps[i - 1].view, downsampled_layer.mipmaps[i].view, downsampled_layer.mipmaps[i].size);
+ }
+
+ Vector<RID> views;
+ if (p_use_arrays) {
+ for (int i = 1; i < layers.size(); i++) {
+ views.push_back(layers[i].views[0]);
+ }
+ } else {
+ for (int i = 1; i < layers[0].views.size(); i++) {
+ views.push_back(layers[0].views[i]);
+ }
}
- }
- p_storage->get_effects()->cubemap_filter(downsampled_radiance_cubemap, views, p_use_arrays);
+ effects->cubemap_filter(downsampled_radiance_cubemap, views, p_use_arrays);
+ }
}
void RendererSceneSkyRD::ReflectionData::create_reflection_importance_sample(RendererStorageRD *p_storage, bool p_use_arrays, int p_cube_side, int p_base_layer, uint32_t p_sky_ggx_samples_quality) {
- if (p_use_arrays) {
- //render directly to the layers
- p_storage->get_effects()->cubemap_roughness(radiance_base_cubemap, layers[p_base_layer].views[0], p_cube_side, p_sky_ggx_samples_quality, float(p_base_layer) / (layers.size() - 1.0), layers[p_base_layer].mipmaps[0].size.x);
+ EffectsRD *effects = p_storage->get_effects();
+ ERR_FAIL_NULL_MSG(effects, "Effects haven't been initialised");
+ bool prefer_raster_effects = effects->get_prefer_raster_effects();
+
+ if (prefer_raster_effects) {
+ // Need to ask clayjohn but p_cube_side is set to 10, looks like in the compute shader we're doing all 6 sides in one call
+ // here we need to do them one by one so ignoring p_cube_side
+ if (p_use_arrays) {
+ for (int k = 0; k < 6; k++) {
+ effects->cubemap_roughness_raster(
+ radiance_base_cubemap,
+ layers[p_base_layer].mipmaps[0].framebuffers[k],
+ k,
+ p_sky_ggx_samples_quality,
+ float(p_base_layer) / (layers.size() - 1.0),
+ layers[p_base_layer].mipmaps[0].size.x);
+ }
+ } else {
+ for (int k = 0; k < 6; k++) {
+ effects->cubemap_roughness_raster(
+ layers[0].views[p_base_layer - 1],
+ layers[0].mipmaps[p_base_layer].framebuffers[k],
+ k,
+ p_sky_ggx_samples_quality,
+ float(p_base_layer) / (layers[0].mipmaps.size() - 1.0),
+ layers[0].mipmaps[p_base_layer].size.x);
+ }
+ }
} else {
- p_storage->get_effects()->cubemap_roughness(
- layers[0].views[p_base_layer - 1],
- layers[0].views[p_base_layer],
- p_cube_side,
- p_sky_ggx_samples_quality,
- float(p_base_layer) / (layers[0].mipmaps.size() - 1.0),
- layers[0].mipmaps[p_base_layer].size.x);
+ if (p_use_arrays) {
+ //render directly to the layers
+ effects->cubemap_roughness(radiance_base_cubemap, layers[p_base_layer].views[0], p_cube_side, p_sky_ggx_samples_quality, float(p_base_layer) / (layers.size() - 1.0), layers[p_base_layer].mipmaps[0].size.x);
+ } else {
+ effects->cubemap_roughness(
+ layers[0].views[p_base_layer - 1],
+ layers[0].views[p_base_layer],
+ p_cube_side,
+ p_sky_ggx_samples_quality,
+ float(p_base_layer) / (layers[0].mipmaps.size() - 1.0),
+ layers[0].mipmaps[p_base_layer].size.x);
+ }
}
}
void RendererSceneSkyRD::ReflectionData::update_reflection_mipmaps(RendererStorageRD *p_storage, int p_start, int p_end) {
+ EffectsRD *effects = p_storage->get_effects();
+ ERR_FAIL_NULL_MSG(effects, "Effects haven't been initialised");
+ bool prefer_raster_effects = effects->get_prefer_raster_effects();
+
+ RD::get_singleton()->draw_command_begin_label("Update Radiance Cubemap Array Mipmaps");
for (int i = p_start; i < p_end; i++) {
for (int j = 0; j < layers[i].views.size() - 1; j++) {
RID view = layers[i].views[j];
- RID texture = layers[i].views[j + 1];
Size2i size = layers[i].mipmaps[j + 1].size;
- p_storage->get_effects()->cubemap_downsample(view, texture, size);
+ if (prefer_raster_effects) {
+ for (int k = 0; k < 6; k++) {
+ RID framebuffer = layers[i].mipmaps[j + 1].framebuffers[k];
+ effects->cubemap_downsample_raster(view, framebuffer, k, size);
+ }
+ } else {
+ RID texture = layers[i].views[j + 1];
+ effects->cubemap_downsample(view, texture, size);
+ }
}
}
+ RD::get_singleton()->draw_command_end_label();
}
////////////////////////////////////////////////////////////////////////////////
@@ -902,6 +997,10 @@ void sky() {
}
}
+void RendererSceneSkyRD::set_texture_format(RD::DataFormat p_texture_format) {
+ texture_format = p_texture_format;
+}
+
RendererSceneSkyRD::~RendererSceneSkyRD() {
// TODO cleanup anything created in init...
@@ -1170,6 +1269,7 @@ void RendererSceneSkyRD::update(RendererSceneEnvironmentRD *p_env, const CameraM
cm = correction * cm;
if (shader_data->uses_quarter_res) {
+ RD::get_singleton()->draw_command_begin_label("Render Sky to Quarter Res Cubemap");
PipelineCacheRD *pipeline = &shader_data->pipelines[SKY_VERSION_CUBEMAP_QUARTER_RES];
Vector<Color> clear_colors;
@@ -1185,9 +1285,11 @@ void RendererSceneSkyRD::update(RendererSceneEnvironmentRD *p_env, const CameraM
_render_sky(cubemap_draw_list, p_time, sky->reflection.layers[0].mipmaps[2].framebuffers[i], pipeline, material->uniform_set, texture_uniform_set, 1, &cm, local_view.basis, multiplier, p_transform.origin);
RD::get_singleton()->draw_list_end();
}
+ RD::get_singleton()->draw_command_end_label();
}
if (shader_data->uses_half_res) {
+ RD::get_singleton()->draw_command_begin_label("Render Sky to Half Res Cubemap");
PipelineCacheRD *pipeline = &shader_data->pipelines[SKY_VERSION_CUBEMAP_HALF_RES];
Vector<Color> clear_colors;
@@ -1203,11 +1305,13 @@ void RendererSceneSkyRD::update(RendererSceneEnvironmentRD *p_env, const CameraM
_render_sky(cubemap_draw_list, p_time, sky->reflection.layers[0].mipmaps[1].framebuffers[i], pipeline, material->uniform_set, texture_uniform_set, 1, &cm, local_view.basis, multiplier, p_transform.origin);
RD::get_singleton()->draw_list_end();
}
+ RD::get_singleton()->draw_command_end_label();
}
RD::DrawListID cubemap_draw_list;
PipelineCacheRD *pipeline = &shader_data->pipelines[SKY_VERSION_CUBEMAP];
+ RD::get_singleton()->draw_command_begin_label("Render Sky Cubemap");
for (int i = 0; i < 6; i++) {
Transform3D local_view;
local_view.set_look_at(Vector3(0, 0, 0), view_normals[i], view_up[i]);
@@ -1217,6 +1321,7 @@ void RendererSceneSkyRD::update(RendererSceneEnvironmentRD *p_env, const CameraM
_render_sky(cubemap_draw_list, p_time, sky->reflection.layers[0].mipmaps[0].framebuffers[i], pipeline, material->uniform_set, texture_uniform_set, 1, &cm, local_view.basis, multiplier, p_transform.origin);
RD::get_singleton()->draw_list_end();
}
+ RD::get_singleton()->draw_command_end_label();
if (sky_mode == RS::SKY_MODE_REALTIME) {
sky->reflection.create_reflection_fast_filter(storage, sky_use_cubemap_array);
@@ -1393,7 +1498,7 @@ void RendererSceneSkyRD::update_dirty_skys() {
//array (higher quality, 6 times more memory)
RD::TextureFormat tf;
tf.array_layers = layers * 6;
- tf.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
+ tf.format = texture_format;
tf.texture_type = RD::TEXTURE_TYPE_CUBE_ARRAY;
tf.mipmaps = mipmaps;
tf.width = w;
@@ -1402,13 +1507,13 @@ void RendererSceneSkyRD::update_dirty_skys() {
sky->radiance = RD::get_singleton()->texture_create(tf, RD::TextureView());
- sky->reflection.update_reflection_data(sky->radiance_size, mipmaps, true, sky->radiance, 0, sky->mode == RS::SKY_MODE_REALTIME, roughness_layers);
+ sky->reflection.update_reflection_data(storage, sky->radiance_size, mipmaps, true, sky->radiance, 0, sky->mode == RS::SKY_MODE_REALTIME, roughness_layers, texture_format);
} else {
//regular cubemap, lower quality (aliasing, less memory)
RD::TextureFormat tf;
tf.array_layers = 6;
- tf.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
+ tf.format = texture_format;
tf.texture_type = RD::TEXTURE_TYPE_CUBE;
tf.mipmaps = MIN(mipmaps, layers);
tf.width = w;
@@ -1417,7 +1522,7 @@ void RendererSceneSkyRD::update_dirty_skys() {
sky->radiance = RD::get_singleton()->texture_create(tf, RD::TextureView());
- sky->reflection.update_reflection_data(sky->radiance_size, MIN(mipmaps, layers), false, sky->radiance, 0, sky->mode == RS::SKY_MODE_REALTIME, roughness_layers);
+ sky->reflection.update_reflection_data(storage, sky->radiance_size, MIN(mipmaps, layers), false, sky->radiance, 0, sky->mode == RS::SKY_MODE_REALTIME, roughness_layers, texture_format);
}
texture_set_dirty = true;
}
@@ -1425,7 +1530,7 @@ void RendererSceneSkyRD::update_dirty_skys() {
// Create subpass buffers if they haven't been created already
if (sky->half_res_pass.is_null() && !RD::get_singleton()->texture_is_valid(sky->half_res_pass) && sky->screen_size.x >= 4 && sky->screen_size.y >= 4) {
RD::TextureFormat tformat;
- tformat.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
+ tformat.format = texture_format;
tformat.width = sky->screen_size.x / 2;
tformat.height = sky->screen_size.y / 2;
tformat.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT;
@@ -1440,7 +1545,7 @@ void RendererSceneSkyRD::update_dirty_skys() {
if (sky->quarter_res_pass.is_null() && !RD::get_singleton()->texture_is_valid(sky->quarter_res_pass) && sky->screen_size.x >= 4 && sky->screen_size.y >= 4) {
RD::TextureFormat tformat;
- tformat.format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
+ tformat.format = texture_format;
tformat.width = sky->screen_size.x / 4;
tformat.height = sky->screen_size.y / 4;
tformat.usage_bits = RD::TEXTURE_USAGE_SAMPLING_BIT | RD::TEXTURE_USAGE_COLOR_ATTACHMENT_BIT;
diff --git a/servers/rendering/renderer_rd/renderer_scene_sky_rd.h b/servers/rendering/renderer_rd/renderer_scene_sky_rd.h
index 4f852e55a7..7e0b01d58e 100644
--- a/servers/rendering/renderer_rd/renderer_scene_sky_rd.h
+++ b/servers/rendering/renderer_rd/renderer_scene_sky_rd.h
@@ -64,6 +64,7 @@ public:
private:
RendererStorageRD *storage;
+ RD::DataFormat texture_format = RD::DATA_FORMAT_R16G16B16A16_SFLOAT;
RID index_buffer;
RID index_array;
@@ -190,6 +191,10 @@ public:
struct Mipmap {
RID view;
Size2i size;
+
+ // for mobile only
+ RID views[6];
+ RID framebuffers[6];
};
Vector<Mipmap> mipmaps;
};
@@ -204,7 +209,7 @@ public:
Vector<Layer> layers;
void clear_reflection_data();
- void update_reflection_data(int p_size, int p_mipmaps, bool p_use_array, RID p_base_cube, int p_base_layer, bool p_low_quality, int p_roughness_layers);
+ void update_reflection_data(RendererStorageRD *p_storage, int p_size, int p_mipmaps, bool p_use_array, RID p_base_cube, int p_base_layer, bool p_low_quality, int p_roughness_layers, RD::DataFormat p_texture_format);
void create_reflection_fast_filter(RendererStorageRD *p_storage, bool p_use_arrays);
void create_reflection_importance_sample(RendererStorageRD *p_storage, bool p_use_arrays, int p_cube_side, int p_base_layer, uint32_t p_sky_ggx_samples_quality);
void update_reflection_mipmaps(RendererStorageRD *p_storage, int p_start, int p_end);
@@ -284,6 +289,7 @@ public:
RendererSceneSkyRD();
void init(RendererStorageRD *p_storage);
+ void set_texture_format(RD::DataFormat p_texture_format);
~RendererSceneSkyRD();
void setup(RendererSceneEnvironmentRD *p_env, RID p_render_buffers, const CameraMatrix &p_projection, const Transform3D &p_transform, const Size2i p_screen_size, RendererSceneRenderRD *p_scene_render);
diff --git a/servers/rendering/renderer_rd/renderer_storage_rd.cpp b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
index 2657fa3ae8..d5c7db6fd2 100644
--- a/servers/rendering/renderer_rd/renderer_storage_rd.cpp
+++ b/servers/rendering/renderer_rd/renderer_storage_rd.cpp
@@ -2716,9 +2716,7 @@ void RendererStorageRD::mesh_add_surface(RID p_mesh, const RS::SurfaceData &p_su
mesh->surfaces[mesh->surface_count] = s;
mesh->surface_count++;
- for (List<MeshInstance *>::Element *E = mesh->instances.front(); E; E = E->next()) {
- //update instances
- MeshInstance *mi = E->get();
+ for (MeshInstance *mi : mesh->instances) {
_mesh_instance_add_surface(mi, mesh, mesh->surface_count - 1);
}
@@ -3029,8 +3027,7 @@ void RendererStorageRD::mesh_clear(RID p_mesh) {
mesh->surface_count = 0;
mesh->material_cache.clear();
//clear instance data
- for (List<MeshInstance *>::Element *E = mesh->instances.front(); E; E = E->next()) {
- MeshInstance *mi = E->get();
+ for (MeshInstance *mi : mesh->instances) {
_mesh_instance_clear(mi);
}
mesh->has_bone_weights = false;
@@ -4962,7 +4959,7 @@ void RendererStorageRD::particles_set_view_axis(RID p_particles, const Vector3 &
RD::get_singleton()->compute_list_dispatch_threads(compute_list, particles->amount, 1, 1);
RD::get_singleton()->compute_list_end();
- effects.sort_buffer(particles->particles_sort_uniform_set, particles->amount);
+ effects->sort_buffer(particles->particles_sort_uniform_set, particles->amount);
}
copy_push_constant.total_particles *= copy_push_constant.total_particles;
@@ -7538,7 +7535,7 @@ void RendererStorageRD::render_target_copy_to_back_buffer(RID p_render_target, c
//single texture copy for backbuffer
//RD::get_singleton()->texture_copy(rt->color, rt->backbuffer_mipmap0, Vector3(region.position.x, region.position.y, 0), Vector3(region.position.x, region.position.y, 0), Vector3(region.size.x, region.size.y, 1), 0, 0, 0, 0, true);
- effects.copy_to_rect(rt->color, rt->backbuffer_mipmap0, region, false, false, false, true, true);
+ effects->copy_to_rect(rt->color, rt->backbuffer_mipmap0, region, false, false, false, true, true);
if (!p_gen_mipmaps) {
return;
@@ -7554,7 +7551,7 @@ void RendererStorageRD::render_target_copy_to_back_buffer(RID p_render_target, c
region.size.y = MAX(1, region.size.y >> 1);
const RenderTarget::BackbufferMipmap &mm = rt->backbuffer_mipmaps[i];
- effects.gaussian_blur(prev_texture, mm.mipmap, mm.mipmap_copy, region, true);
+ effects->gaussian_blur(prev_texture, mm.mipmap, mm.mipmap_copy, region, true);
prev_texture = mm.mipmap;
}
}
@@ -7577,7 +7574,7 @@ void RendererStorageRD::render_target_clear_back_buffer(RID p_render_target, con
}
//single texture copy for backbuffer
- effects.set_color(rt->backbuffer_mipmap0, p_color, region, true);
+ effects->set_color(rt->backbuffer_mipmap0, p_color, region, true);
}
void RendererStorageRD::render_target_gen_back_buffer_mipmaps(RID p_render_target, const Rect2i &p_region) {
@@ -7607,7 +7604,7 @@ void RendererStorageRD::render_target_gen_back_buffer_mipmaps(RID p_render_targe
region.size.y = MAX(1, region.size.y >> 1);
const RenderTarget::BackbufferMipmap &mm = rt->backbuffer_mipmaps[i];
- effects.gaussian_blur(prev_texture, mm.mipmap, mm.mipmap_copy, region, true);
+ effects->gaussian_blur(prev_texture, mm.mipmap, mm.mipmap_copy, region, true);
prev_texture = mm.mipmap;
}
}
@@ -7928,14 +7925,14 @@ void RendererStorageRD::_update_decal_atlas() {
while ((K = decal_atlas.textures.next(K))) {
DecalAtlas::Texture *t = decal_atlas.textures.getptr(*K);
Texture *src_tex = texture_owner.getornull(*K);
- effects.copy_to_atlas_fb(src_tex->rd_texture, mm.fb, t->uv_rect, draw_list, false, t->panorama_to_dp_users > 0);
+ effects->copy_to_atlas_fb(src_tex->rd_texture, mm.fb, t->uv_rect, draw_list, false, t->panorama_to_dp_users > 0);
}
RD::get_singleton()->draw_list_end();
prev_texture = mm.texture;
} else {
- effects.copy_to_fb_rect(prev_texture, mm.fb, Rect2i(Point2i(), mm.size));
+ effects->copy_to_fb_rect(prev_texture, mm.fb, Rect2i(Point2i(), mm.size));
prev_texture = mm.texture;
}
} else {
@@ -8413,10 +8410,10 @@ void RendererStorageRD::global_variables_load_settings(bool p_load_textures) {
List<PropertyInfo> settings;
ProjectSettings::get_singleton()->get_property_list(&settings);
- for (List<PropertyInfo>::Element *E = settings.front(); E; E = E->next()) {
- if (E->get().name.begins_with("shader_globals/")) {
- StringName name = E->get().name.get_slice("/", 1);
- Dictionary d = ProjectSettings::get_singleton()->get(E->get().name);
+ for (const PropertyInfo &E : settings) {
+ if (E.name.begins_with("shader_globals/")) {
+ StringName name = E.name.get_slice("/", 1);
+ Dictionary d = ProjectSettings::get_singleton()->get(E.name);
ERR_CONTINUE(!d.has("type"));
ERR_CONTINUE(!d.has("value"));
@@ -8584,8 +8581,8 @@ void RendererStorageRD::_update_global_variables() {
if (global_variables.must_update_buffer_materials) {
// only happens in the case of a buffer variable added or removed,
// so not often.
- for (List<RID>::Element *E = global_variables.materials_using_buffer.front(); E; E = E->next()) {
- Material *material = material_owner.getornull(E->get());
+ for (const RID &E : global_variables.materials_using_buffer) {
+ Material *material = material_owner.getornull(E);
ERR_CONTINUE(!material); //wtf
_material_queue_update(material, true, false);
@@ -8597,8 +8594,8 @@ void RendererStorageRD::_update_global_variables() {
if (global_variables.must_update_texture_materials) {
// only happens in the case of a buffer variable added or removed,
// so not often.
- for (List<RID>::Element *E = global_variables.materials_using_texture.front(); E; E = E->next()) {
- Material *material = material_owner.getornull(E->get());
+ for (const RID &E : global_variables.materials_using_texture) {
+ Material *material = material_owner.getornull(E);
ERR_CONTINUE(!material); //wtf
_material_queue_update(material, false, true);
@@ -8807,8 +8804,13 @@ bool RendererStorageRD::free(RID p_rid) {
return true;
}
+void RendererStorageRD::init_effects(bool p_prefer_raster_effects) {
+ effects = memnew(EffectsRD(p_prefer_raster_effects));
+}
+
EffectsRD *RendererStorageRD::get_effects() {
- return &effects;
+ ERR_FAIL_NULL_V_MSG(effects, nullptr, "Effects haven't been initialised yet.");
+ return effects;
}
void RendererStorageRD::capture_timestamps_begin() {
@@ -9538,4 +9540,9 @@ RendererStorageRD::~RendererStorageRD() {
if (decal_atlas.texture.is_valid()) {
RD::get_singleton()->free(decal_atlas.texture);
}
+
+ if (effects) {
+ memdelete(effects);
+ effects = NULL;
+ }
}
diff --git a/servers/rendering/renderer_rd/renderer_storage_rd.h b/servers/rendering/renderer_rd/renderer_storage_rd.h
index f471874c8e..b290c07705 100644
--- a/servers/rendering/renderer_rd/renderer_storage_rd.h
+++ b/servers/rendering/renderer_rd/renderer_storage_rd.h
@@ -1290,7 +1290,7 @@ private:
void _update_global_variables();
/* EFFECTS */
- EffectsRD effects;
+ EffectsRD *effects = NULL;
public:
virtual bool can_create_resources_async() const;
@@ -2374,6 +2374,7 @@ public:
static RendererStorageRD *base_singleton;
+ void init_effects(bool p_prefer_raster_effects);
EffectsRD *get_effects();
RendererStorageRD();
diff --git a/servers/rendering/renderer_rd/shader_compiler_rd.cpp b/servers/rendering/renderer_rd/shader_compiler_rd.cpp
index 1dde92d8ff..9c1068ea2e 100644
--- a/servers/rendering/renderer_rd/shader_compiler_rd.cpp
+++ b/servers/rendering/renderer_rd/shader_compiler_rd.cpp
@@ -571,7 +571,7 @@ String ShaderCompilerRD::_dump_node_code(const SL::Node *p_node, int p_level, Ge
max_texture_uniforms++;
} else {
if (E->get().scope == SL::ShaderNode::Uniform::SCOPE_INSTANCE) {
- continue; //instances are indexed directly, dont need index uniforms
+ continue; // Instances are indexed directly, don't need index uniforms.
}
max_uniforms++;
@@ -605,7 +605,7 @@ String ShaderCompilerRD::_dump_node_code(const SL::Node *p_node, int p_level, Ge
if (uniform.scope == SL::ShaderNode::Uniform::SCOPE_INSTANCE) {
//insert, but don't generate any code.
p_actions.uniforms->insert(uniform_name, uniform);
- continue; //instances are indexed directly, dont need index uniforms
+ continue; // Instances are indexed directly, don't need index uniforms.
}
if (SL::is_sampler_type(uniform.type)) {
ucode = "layout(set = " + itos(actions.texture_layout_set) + ", binding = " + itos(actions.base_texture_binding_index + uniform.texture_order) + ") uniform ";
@@ -760,11 +760,11 @@ String ShaderCompilerRD::_dump_node_code(const SL::Node *p_node, int p_level, Ge
if (var_frag_to_light.size() > 0) {
String gcode = "\n\nstruct {\n";
- for (List<Pair<StringName, SL::ShaderNode::Varying>>::Element *E = var_frag_to_light.front(); E; E = E->next()) {
- gcode += "\t" + _prestr(E->get().second.precision) + _typestr(E->get().second.type) + " " + _mkid(E->get().first);
- if (E->get().second.array_size > 0) {
+ for (const Pair<StringName, SL::ShaderNode::Varying> &E : var_frag_to_light) {
+ gcode += "\t" + _prestr(E.second.precision) + _typestr(E.second.type) + " " + _mkid(E.first);
+ if (E.second.array_size > 0) {
gcode += "[";
- gcode += itos(E->get().second.array_size);
+ gcode += itos(E.second.array_size);
gcode += "]";
}
gcode += ";\n";
@@ -1394,8 +1394,8 @@ void ShaderCompilerRD::initialize(DefaultIdentifierActions p_actions) {
ShaderLanguage::get_builtin_funcs(&func_list);
- for (List<String>::Element *E = func_list.front(); E; E = E->next()) {
- internal_functions.insert(E->get());
+ for (const String &E : func_list) {
+ internal_functions.insert(E);
}
texture_functions.insert("texture");
texture_functions.insert("textureProj");
diff --git a/servers/rendering/renderer_rd/shader_rd.cpp b/servers/rendering/renderer_rd/shader_rd.cpp
index 27305cc938..5bb12fc168 100644
--- a/servers/rendering/renderer_rd/shader_rd.cpp
+++ b/servers/rendering/renderer_rd/shader_rd.cpp
@@ -116,8 +116,10 @@ void ShaderRD::setup(const char *p_vertex_code, const char *p_fragment_code, con
}
StringBuilder tohash;
- tohash.append("[VersionKey]");
- tohash.append(RenderingDevice::get_singleton()->shader_get_cache_key());
+ tohash.append("[SpirvCacheKey]");
+ tohash.append(RenderingDevice::get_singleton()->shader_get_spirv_cache_key());
+ tohash.append("[BinaryCacheKey]");
+ tohash.append(RenderingDevice::get_singleton()->shader_get_binary_cache_key());
tohash.append("[Vertex]");
tohash.append(p_vertex_code ? p_vertex_code : "");
tohash.append("[Fragment]");
@@ -144,12 +146,14 @@ void ShaderRD::_clear_version(Version *p_version) {
//clear versions if they exist
if (p_version->variants) {
for (int i = 0; i < variant_defines.size(); i++) {
- RD::get_singleton()->free(p_version->variants[i]);
+ if (variants_enabled[i]) {
+ RD::get_singleton()->free(p_version->variants[i]);
+ }
}
memdelete_arr(p_version->variants);
- if (p_version->variant_stages) {
- memdelete_arr(p_version->variant_stages);
+ if (p_version->variant_data) {
+ memdelete_arr(p_version->variant_data);
}
p_version->variants = nullptr;
}
@@ -203,7 +207,7 @@ void ShaderRD::_compile_variant(uint32_t p_variant, Version *p_version) {
return; //variant is disabled, return
}
- Vector<RD::ShaderStageData> &stages = p_version->variant_stages[p_variant];
+ Vector<RD::ShaderStageSPIRVData> stages;
String error;
String current_source;
@@ -217,8 +221,8 @@ void ShaderRD::_compile_variant(uint32_t p_variant, Version *p_version) {
_build_variant_code(builder, p_variant, p_version, stage_templates[STAGE_TYPE_VERTEX]);
current_source = builder.as_string();
- RD::ShaderStageData stage;
- stage.spir_v = RD::get_singleton()->shader_compile_from_source(RD::SHADER_STAGE_VERTEX, current_source, RD::SHADER_LANGUAGE_GLSL, &error);
+ RD::ShaderStageSPIRVData stage;
+ stage.spir_v = RD::get_singleton()->shader_compile_spirv_from_source(RD::SHADER_STAGE_VERTEX, current_source, RD::SHADER_LANGUAGE_GLSL, &error);
if (stage.spir_v.size() == 0) {
build_ok = false;
} else {
@@ -235,8 +239,8 @@ void ShaderRD::_compile_variant(uint32_t p_variant, Version *p_version) {
_build_variant_code(builder, p_variant, p_version, stage_templates[STAGE_TYPE_FRAGMENT]);
current_source = builder.as_string();
- RD::ShaderStageData stage;
- stage.spir_v = RD::get_singleton()->shader_compile_from_source(RD::SHADER_STAGE_FRAGMENT, current_source, RD::SHADER_LANGUAGE_GLSL, &error);
+ RD::ShaderStageSPIRVData stage;
+ stage.spir_v = RD::get_singleton()->shader_compile_spirv_from_source(RD::SHADER_STAGE_FRAGMENT, current_source, RD::SHADER_LANGUAGE_GLSL, &error);
if (stage.spir_v.size() == 0) {
build_ok = false;
} else {
@@ -254,8 +258,8 @@ void ShaderRD::_compile_variant(uint32_t p_variant, Version *p_version) {
current_source = builder.as_string();
- RD::ShaderStageData stage;
- stage.spir_v = RD::get_singleton()->shader_compile_from_source(RD::SHADER_STAGE_COMPUTE, current_source, RD::SHADER_LANGUAGE_GLSL, &error);
+ RD::ShaderStageSPIRVData stage;
+ stage.spir_v = RD::get_singleton()->shader_compile_spirv_from_source(RD::SHADER_STAGE_COMPUTE, current_source, RD::SHADER_LANGUAGE_GLSL, &error);
if (stage.spir_v.size() == 0) {
build_ok = false;
} else {
@@ -275,10 +279,15 @@ void ShaderRD::_compile_variant(uint32_t p_variant, Version *p_version) {
return;
}
- RID shader = RD::get_singleton()->shader_create(stages);
+ Vector<uint8_t> shader_data = RD::get_singleton()->shader_compile_binary_from_spirv(stages);
+
+ ERR_FAIL_COND(shader_data.size() == 0);
+
+ RID shader = RD::get_singleton()->shader_create_from_bytecode(shader_data);
{
MutexLock lock(variant_set_mutex);
p_version->variants[p_variant] = shader;
+ p_version->variant_data[p_variant] = shader_data;
}
}
@@ -364,14 +373,12 @@ String ShaderRD::_version_get_sha1(Version *p_version) const {
}
static const char *shader_file_header = "GDSC";
-static const uint32_t cache_file_version = 1;
+static const uint32_t cache_file_version = 2;
bool ShaderRD::_load_from_cache(Version *p_version) {
String sha1 = _version_get_sha1(p_version);
String path = shader_cache_dir.plus_file(name).plus_file(base_sha256).plus_file(sha1) + ".cache";
- uint64_t time_from = OS::get_singleton()->get_ticks_usec();
-
FileAccessRef f = FileAccess::open(path, FileAccess::READ);
if (!f) {
return false;
@@ -390,76 +397,43 @@ bool ShaderRD::_load_from_cache(Version *p_version) {
ERR_FAIL_COND_V(variant_count != (uint32_t)variant_defines.size(), false); //should not happen but check
- bool success = true;
for (uint32_t i = 0; i < variant_count; i++) {
- uint32_t stage_count = f->get_32();
- p_version->variant_stages[i].resize(stage_count);
- for (uint32_t j = 0; j < stage_count; j++) {
- p_version->variant_stages[i].write[j].shader_stage = RD::ShaderStage(f->get_32());
-
- int compression = f->get_32();
- uint32_t length = f->get_32();
-
- if (compression == 0) {
- Vector<uint8_t> data;
- data.resize(length);
-
- f->get_buffer(data.ptrw(), length);
-
- p_version->variant_stages[i].write[j].spir_v = data;
- } else {
- Vector<uint8_t> data;
-
- if (compression == 2) {
- //zstd
- int smol_length = f->get_32();
- Vector<uint8_t> zstd_data;
-
- zstd_data.resize(smol_length);
- f->get_buffer(zstd_data.ptrw(), smol_length);
-
- data.resize(length);
- Compression::decompress(data.ptrw(), data.size(), zstd_data.ptr(), zstd_data.size(), Compression::MODE_ZSTD);
-
- } else {
- data.resize(length);
- f->get_buffer(data.ptrw(), length);
- }
-
- Vector<uint8_t> spirv;
- uint32_t spirv_size = smolv::GetDecodedBufferSize(data.ptr(), data.size());
- spirv.resize(spirv_size);
- if (!smolv::Decode(data.ptr(), data.size(), spirv.ptrw(), spirv_size)) {
- ERR_PRINT("Malformed smolv input uncompressing shader " + name + ", variant #" + itos(i) + " stage :" + itos(j));
- success = false;
- break;
- }
- p_version->variant_stages[i].write[j].spir_v = spirv;
- }
+ uint32_t variant_size = f->get_32();
+ ERR_FAIL_COND_V(variant_size == 0 && variants_enabled[i], false);
+ if (!variants_enabled[i]) {
+ continue;
}
- }
+ Vector<uint8_t> variant_bytes;
+ variant_bytes.resize(variant_size);
- if (!success) {
- for (uint32_t i = 0; i < variant_count; i++) {
- p_version->variant_stages[i].resize(0);
- }
- return false;
- }
+ uint32_t br = f->get_buffer(variant_bytes.ptrw(), variant_size);
- float time_ms = double(OS::get_singleton()->get_ticks_usec() - time_from) / 1000.0;
+ ERR_FAIL_COND_V(br != variant_size, false);
- print_verbose("Shader cache load success '" + path + "' " + rtos(time_ms) + "ms.");
+ p_version->variant_data[i] = variant_bytes;
+ }
for (uint32_t i = 0; i < variant_count; i++) {
- RID shader = RD::get_singleton()->shader_create(p_version->variant_stages[i]);
+ if (!variants_enabled[i]) {
+ MutexLock lock(variant_set_mutex);
+ p_version->variants[i] = RID();
+ continue;
+ }
+ RID shader = RD::get_singleton()->shader_create_from_bytecode(p_version->variant_data[i]);
+ if (shader.is_null()) {
+ for (uint32_t j = 0; j < i; j++) {
+ RD::get_singleton()->free(p_version->variants[i]);
+ }
+ ERR_FAIL_COND_V(shader.is_null(), false);
+ }
{
MutexLock lock(variant_set_mutex);
p_version->variants[i] = shader;
}
}
- memdelete_arr(p_version->variant_stages); //clear stages
- p_version->variant_stages = nullptr;
+ memdelete_arr(p_version->variant_data); //clear stages
+ p_version->variant_data = nullptr;
p_version->valid = true;
return true;
}
@@ -476,49 +450,8 @@ void ShaderRD::_save_to_cache(Version *p_version) {
f->store_32(variant_count); //variant count
for (uint32_t i = 0; i < variant_count; i++) {
- f->store_32(p_version->variant_stages[i].size()); //stage count
- for (int j = 0; j < p_version->variant_stages[i].size(); j++) {
- f->store_32(p_version->variant_stages[i][j].shader_stage); //stage count
- Vector<uint8_t> spirv = p_version->variant_stages[i][j].spir_v;
-
- bool save_uncompressed = true;
- if (shader_cache_save_compressed) {
- smolv::ByteArray smolv;
- bool strip_debug = !shader_cache_save_debug;
- if (!smolv::Encode(spirv.ptr(), spirv.size(), smolv, strip_debug ? smolv::kEncodeFlagStripDebugInfo : 0)) {
- ERR_PRINT("Error compressing shader " + name + ", variant #" + itos(i) + " stage :" + itos(i));
- } else {
- bool compress_zstd = shader_cache_save_compressed_zstd;
-
- if (compress_zstd) {
- Vector<uint8_t> zstd;
- zstd.resize(Compression::get_max_compressed_buffer_size(smolv.size(), Compression::MODE_ZSTD));
- int dst_size = Compression::compress(zstd.ptrw(), &smolv[0], smolv.size(), Compression::MODE_ZSTD);
- if (dst_size >= 0 && (uint32_t)dst_size < smolv.size()) {
- f->store_32(2); //compressed zstd
- f->store_32(smolv.size()); //size of smolv buffer
- f->store_32(dst_size); //size of smolv buffer
- f->store_buffer(zstd.ptr(), dst_size); //smolv buffer
- } else {
- compress_zstd = false;
- }
- }
-
- if (!compress_zstd) {
- f->store_32(1); //compressed
- f->store_32(smolv.size()); //size of smolv buffer
- f->store_buffer(&smolv[0], smolv.size()); //smolv buffer
- }
- save_uncompressed = false;
- }
- }
-
- if (save_uncompressed) {
- f->store_32(0); //uncompressed
- f->store_32(spirv.size()); //stage count
- f->store_buffer(spirv.ptr(), spirv.size()); //stage count
- }
- }
+ f->store_32(p_version->variant_data[i].size()); //stage count
+ f->store_buffer(p_version->variant_data[i].ptr(), p_version->variant_data[i].size());
}
f->close();
@@ -531,8 +464,8 @@ void ShaderRD::_compile_version(Version *p_version) {
p_version->dirty = false;
p_version->variants = memnew_arr(RID, variant_defines.size());
- typedef Vector<RD::ShaderStageData> ShaderStageArray;
- p_version->variant_stages = memnew_arr(ShaderStageArray, variant_defines.size());
+ typedef Vector<uint8_t> ShaderStageData;
+ p_version->variant_data = memnew_arr(ShaderStageData, variant_defines.size());
if (shader_cache_dir_valid) {
if (_load_from_cache(p_version)) {
@@ -571,19 +504,19 @@ void ShaderRD::_compile_version(Version *p_version) {
}
}
memdelete_arr(p_version->variants);
- if (p_version->variant_stages) {
- memdelete_arr(p_version->variant_stages);
+ if (p_version->variant_data) {
+ memdelete_arr(p_version->variant_data);
}
p_version->variants = nullptr;
- p_version->variant_stages = nullptr;
+ p_version->variant_data = nullptr;
return;
} else if (shader_cache_dir_valid) {
//save shader cache
_save_to_cache(p_version);
}
- memdelete_arr(p_version->variant_stages); //clear stages
- p_version->variant_stages = nullptr;
+ memdelete_arr(p_version->variant_data); //clear stages
+ p_version->variant_data = nullptr;
p_version->valid = true;
}
diff --git a/servers/rendering/renderer_rd/shader_rd.h b/servers/rendering/renderer_rd/shader_rd.h
index 9a68e02007..529328f0ed 100644
--- a/servers/rendering/renderer_rd/shader_rd.h
+++ b/servers/rendering/renderer_rd/shader_rd.h
@@ -59,7 +59,7 @@ class ShaderRD {
Map<StringName, CharString> code_sections;
Vector<CharString> custom_defines;
- Vector<RD::ShaderStageData> *variant_stages = nullptr;
+ Vector<uint8_t> *variant_data = nullptr;
RID *variants = nullptr; //same size as version defines
bool valid;
diff --git a/servers/rendering/renderer_rd/shaders/blur_raster.glsl b/servers/rendering/renderer_rd/shaders/blur_raster.glsl
new file mode 100644
index 0000000000..b1d1c2365e
--- /dev/null
+++ b/servers/rendering/renderer_rd/shaders/blur_raster.glsl
@@ -0,0 +1,228 @@
+/* clang-format off */
+#[vertex]
+
+#version 450
+
+#VERSION_DEFINES
+
+#include "blur_raster_inc.glsl"
+
+layout(location = 0) out vec2 uv_interp;
+/* clang-format on */
+
+void main() {
+ vec2 base_arr[4] = vec2[](vec2(0.0, 0.0), vec2(0.0, 1.0), vec2(1.0, 1.0), vec2(1.0, 0.0));
+ uv_interp = base_arr[gl_VertexIndex];
+
+ gl_Position = vec4(uv_interp * 2.0 - 1.0, 0.0, 1.0);
+}
+
+/* clang-format off */
+#[fragment]
+
+#version 450
+
+#VERSION_DEFINES
+
+#include "blur_raster_inc.glsl"
+
+layout(location = 0) in vec2 uv_interp;
+/* clang-format on */
+
+layout(set = 0, binding = 0) uniform sampler2D source_color;
+
+#ifdef GLOW_USE_AUTO_EXPOSURE
+layout(set = 1, binding = 0) uniform sampler2D source_auto_exposure;
+#endif
+
+layout(location = 0) out vec4 frag_color;
+
+//DOF
+#ifdef MODE_DOF_BLUR
+
+layout(set = 1, binding = 0) uniform sampler2D dof_source_depth;
+
+#ifdef DOF_QUALITY_LOW
+const int dof_kernel_size = 5;
+const int dof_kernel_from = 2;
+const float dof_kernel[5] = float[](0.153388, 0.221461, 0.250301, 0.221461, 0.153388);
+#endif
+
+#ifdef DOF_QUALITY_MEDIUM
+const int dof_kernel_size = 11;
+const int dof_kernel_from = 5;
+const float dof_kernel[11] = float[](0.055037, 0.072806, 0.090506, 0.105726, 0.116061, 0.119726, 0.116061, 0.105726, 0.090506, 0.072806, 0.055037);
+
+#endif
+
+#ifdef DOF_QUALITY_HIGH
+const int dof_kernel_size = 21;
+const int dof_kernel_from = 10;
+const float dof_kernel[21] = float[](0.028174, 0.032676, 0.037311, 0.041944, 0.046421, 0.050582, 0.054261, 0.057307, 0.059587, 0.060998, 0.061476, 0.060998, 0.059587, 0.057307, 0.054261, 0.050582, 0.046421, 0.041944, 0.037311, 0.032676, 0.028174);
+#endif
+
+#endif
+
+void main() {
+#ifdef MODE_MIPMAP
+
+ vec2 pix_size = blur.pixel_size;
+ vec4 color = texture(source_color, uv_interp + vec2(-0.5, -0.5) * pix_size);
+ color += texture(source_color, uv_interp + vec2(0.5, -0.5) * pix_size);
+ color += texture(source_color, uv_interp + vec2(0.5, 0.5) * pix_size);
+ color += texture(source_color, uv_interp + vec2(-0.5, 0.5) * pix_size);
+ frag_color = color / 4.0;
+
+#endif
+
+#ifdef MODE_GAUSSIAN_BLUR
+
+ //Simpler blur uses SIGMA2 for the gaussian kernel for a stronger effect
+
+ if (bool(blur.flags & FLAG_HORIZONTAL)) {
+ vec2 pix_size = blur.pixel_size;
+ pix_size *= 0.5; //reading from larger buffer, so use more samples
+ vec4 color = texture(source_color, uv_interp + vec2(0.0, 0.0) * pix_size) * 0.214607;
+ color += texture(source_color, uv_interp + vec2(1.0, 0.0) * pix_size) * 0.189879;
+ color += texture(source_color, uv_interp + vec2(2.0, 0.0) * pix_size) * 0.131514;
+ color += texture(source_color, uv_interp + vec2(3.0, 0.0) * pix_size) * 0.071303;
+ color += texture(source_color, uv_interp + vec2(-1.0, 0.0) * pix_size) * 0.189879;
+ color += texture(source_color, uv_interp + vec2(-2.0, 0.0) * pix_size) * 0.131514;
+ color += texture(source_color, uv_interp + vec2(-3.0, 0.0) * pix_size) * 0.071303;
+ frag_color = color;
+ } else {
+ vec2 pix_size = blur.pixel_size;
+ vec4 color = texture(source_color, uv_interp + vec2(0.0, 0.0) * pix_size) * 0.38774;
+ color += texture(source_color, uv_interp + vec2(0.0, 1.0) * pix_size) * 0.24477;
+ color += texture(source_color, uv_interp + vec2(0.0, 2.0) * pix_size) * 0.06136;
+ color += texture(source_color, uv_interp + vec2(0.0, -1.0) * pix_size) * 0.24477;
+ color += texture(source_color, uv_interp + vec2(0.0, -2.0) * pix_size) * 0.06136;
+ frag_color = color;
+ }
+#endif
+
+#ifdef MODE_GAUSSIAN_GLOW
+
+ //Glow uses larger sigma 1 for a more rounded blur effect
+
+#define GLOW_ADD(m_ofs, m_mult) \
+ { \
+ vec2 ofs = uv_interp + m_ofs * pix_size; \
+ vec4 c = texture(source_color, ofs) * m_mult; \
+ if (any(lessThan(ofs, vec2(0.0))) || any(greaterThan(ofs, vec2(1.0)))) { \
+ c *= 0.0; \
+ } \
+ color += c; \
+ }
+
+ if (bool(blur.flags & FLAG_HORIZONTAL)) {
+ vec2 pix_size = blur.pixel_size;
+ pix_size *= 0.5; //reading from larger buffer, so use more samples
+ vec4 color = texture(source_color, uv_interp + vec2(0.0, 0.0) * pix_size) * 0.174938;
+ GLOW_ADD(vec2(1.0, 0.0), 0.165569);
+ GLOW_ADD(vec2(2.0, 0.0), 0.140367);
+ GLOW_ADD(vec2(3.0, 0.0), 0.106595);
+ GLOW_ADD(vec2(-1.0, 0.0), 0.165569);
+ GLOW_ADD(vec2(-2.0, 0.0), 0.140367);
+ GLOW_ADD(vec2(-3.0, 0.0), 0.106595);
+ color *= blur.glow_strength;
+ frag_color = color;
+ } else {
+ vec2 pix_size = blur.pixel_size;
+ vec4 color = texture(source_color, uv_interp + vec2(0.0, 0.0) * pix_size) * 0.288713;
+ GLOW_ADD(vec2(0.0, 1.0), 0.233062);
+ GLOW_ADD(vec2(0.0, 2.0), 0.122581);
+ GLOW_ADD(vec2(0.0, -1.0), 0.233062);
+ GLOW_ADD(vec2(0.0, -2.0), 0.122581);
+ color *= blur.glow_strength;
+ frag_color = color;
+ }
+
+#undef GLOW_ADD
+
+ if (bool(blur.flags & FLAG_GLOW_FIRST_PASS)) {
+#ifdef GLOW_USE_AUTO_EXPOSURE
+
+ frag_color /= texelFetch(source_auto_exposure, ivec2(0, 0), 0).r / blur.glow_auto_exposure_grey;
+#endif
+ frag_color *= blur.glow_exposure;
+
+ float luminance = max(frag_color.r, max(frag_color.g, frag_color.b));
+ float feedback = max(smoothstep(blur.glow_hdr_threshold, blur.glow_hdr_threshold + blur.glow_hdr_scale, luminance), blur.glow_bloom);
+
+ frag_color = min(frag_color * feedback, vec4(blur.glow_luminance_cap));
+ }
+
+#endif
+
+#ifdef MODE_DOF_BLUR
+
+ vec4 color_accum = vec4(0.0);
+
+ float depth = texture(dof_source_depth, uv_interp, 0.0).r;
+ depth = depth * 2.0 - 1.0;
+
+ if (bool(blur.flags & FLAG_USE_ORTHOGONAL_PROJECTION)) {
+ depth = ((depth + (blur.camera_z_far + blur.camera_z_near) / (blur.camera_z_far - blur.camera_z_near)) * (blur.camera_z_far - blur.camera_z_near)) / 2.0;
+ } else {
+ depth = 2.0 * blur.camera_z_near * blur.camera_z_far / (blur.camera_z_far + blur.camera_z_near - depth * (blur.camera_z_far - blur.camera_z_near));
+ }
+
+ // mix near and far blur amount
+ float amount = 1.0;
+ if (bool(blur.flags & FLAG_DOF_FAR)) {
+ amount *= 1.0 - smoothstep(blur.dof_far_begin, blur.dof_far_end, depth);
+ }
+ if (bool(blur.flags & FLAG_DOF_NEAR)) {
+ amount *= smoothstep(blur.dof_near_end, blur.dof_near_begin, depth);
+ }
+ amount = 1.0 - amount;
+
+ if (amount > 0.0) {
+ float k_accum = 0.0;
+
+ for (int i = 0; i < dof_kernel_size; i++) {
+ int int_ofs = i - dof_kernel_from;
+ vec2 tap_uv = uv_interp + blur.dof_dir * float(int_ofs) * amount * blur.dof_radius;
+
+ float tap_k = dof_kernel[i];
+
+ float tap_depth = texture(dof_source_depth, tap_uv, 0.0).r;
+ tap_depth = tap_depth * 2.0 - 1.0;
+
+ if (bool(blur.flags & FLAG_USE_ORTHOGONAL_PROJECTION)) {
+ tap_depth = ((tap_depth + (blur.camera_z_far + blur.camera_z_near) / (blur.camera_z_far - blur.camera_z_near)) * (blur.camera_z_far - blur.camera_z_near)) / 2.0;
+ } else {
+ tap_depth = 2.0 * blur.camera_z_near * blur.camera_z_far / (blur.camera_z_far + blur.camera_z_near - tap_depth * (blur.camera_z_far - blur.camera_z_near));
+ }
+
+ // mix near and far blur amount
+ float tap_amount = 1.0;
+ if (bool(blur.flags & FLAG_DOF_FAR)) {
+ tap_amount *= mix(1.0 - smoothstep(blur.dof_far_begin, blur.dof_far_end, tap_depth), 0.0, int_ofs == 0);
+ }
+ if (bool(blur.flags & FLAG_DOF_NEAR)) {
+ tap_amount *= mix(smoothstep(blur.dof_near_end, blur.dof_near_begin, tap_depth), 0.0, int_ofs == 0);
+ }
+ tap_amount = 1.0 - tap_amount;
+
+ tap_amount *= tap_amount * tap_amount; //prevent undesired glow effect
+
+ vec4 tap_color = texture(source_color, tap_uv, 0.0) * tap_k;
+
+ k_accum += tap_k * tap_amount;
+ color_accum += tap_color * tap_amount;
+ }
+
+ if (k_accum > 0.0) {
+ color_accum /= k_accum;
+ }
+
+ frag_color = color_accum; ///k_accum;
+ } else {
+ // we are in focus, don't waste time
+ frag_color = texture(source_color, uv_interp, 0.0);
+ }
+
+#endif
+}
diff --git a/servers/rendering/renderer_rd/shaders/blur_raster_inc.glsl b/servers/rendering/renderer_rd/shaders/blur_raster_inc.glsl
new file mode 100644
index 0000000000..6ea968e595
--- /dev/null
+++ b/servers/rendering/renderer_rd/shaders/blur_raster_inc.glsl
@@ -0,0 +1,36 @@
+#define FLAG_HORIZONTAL (1 << 0)
+#define FLAG_USE_ORTHOGONAL_PROJECTION (1 << 1)
+#define FLAG_GLOW_FIRST_PASS (1 << 2)
+#define FLAG_DOF_FAR (1 << 3)
+#define FLAG_DOF_NEAR (1 << 4)
+
+layout(push_constant, binding = 1, std430) uniform Blur {
+ vec2 pixel_size;
+ uint flags;
+ uint pad;
+
+ // Glow.
+ float glow_strength;
+ float glow_bloom;
+ float glow_hdr_threshold;
+ float glow_hdr_scale;
+
+ float glow_exposure;
+ float glow_white;
+ float glow_luminance_cap;
+ float glow_auto_exposure_grey;
+
+ // DOF.
+ float dof_far_begin;
+ float dof_far_end;
+ float dof_near_begin;
+ float dof_near_end;
+
+ float dof_radius;
+ float dof_pad[3];
+
+ vec2 dof_dir;
+ float camera_z_far;
+ float camera_z_near;
+}
+blur;
diff --git a/servers/rendering/renderer_rd/shaders/cubemap_downsampler.glsl b/servers/rendering/renderer_rd/shaders/cubemap_downsampler.glsl
index 9fa84657d1..63f0ce690e 100644
--- a/servers/rendering/renderer_rd/shaders/cubemap_downsampler.glsl
+++ b/servers/rendering/renderer_rd/shaders/cubemap_downsampler.glsl
@@ -32,53 +32,7 @@ layout(set = 0, binding = 0) uniform samplerCube source_cubemap;
layout(rgba16f, set = 1, binding = 0) uniform restrict writeonly imageCube dest_cubemap;
-layout(push_constant, binding = 1, std430) uniform Params {
- uint face_size;
-}
-params;
-
-#define M_PI 3.14159265359
-
-void get_dir_0(out vec3 dir, in float u, in float v) {
- dir[0] = 1.0;
- dir[1] = v;
- dir[2] = -u;
-}
-
-void get_dir_1(out vec3 dir, in float u, in float v) {
- dir[0] = -1.0;
- dir[1] = v;
- dir[2] = u;
-}
-
-void get_dir_2(out vec3 dir, in float u, in float v) {
- dir[0] = u;
- dir[1] = 1.0;
- dir[2] = -v;
-}
-
-void get_dir_3(out vec3 dir, in float u, in float v) {
- dir[0] = u;
- dir[1] = -1.0;
- dir[2] = v;
-}
-
-void get_dir_4(out vec3 dir, in float u, in float v) {
- dir[0] = u;
- dir[1] = v;
- dir[2] = 1.0;
-}
-
-void get_dir_5(out vec3 dir, in float u, in float v) {
- dir[0] = -u;
- dir[1] = v;
- dir[2] = -1.0;
-}
-
-float calcWeight(float u, float v) {
- float val = u * u + v * v + 1.0;
- return val * sqrt(val);
-}
+#include "cubemap_downsampler_inc.glsl"
void main() {
uvec3 id = gl_GlobalInvocationID;
diff --git a/servers/rendering/renderer_rd/shaders/cubemap_downsampler_inc.glsl b/servers/rendering/renderer_rd/shaders/cubemap_downsampler_inc.glsl
new file mode 100644
index 0000000000..b329e67293
--- /dev/null
+++ b/servers/rendering/renderer_rd/shaders/cubemap_downsampler_inc.glsl
@@ -0,0 +1,48 @@
+layout(push_constant, binding = 1, std430) uniform Params {
+ uint face_size;
+ uint face_id; // only used in raster shader
+}
+params;
+
+#define M_PI 3.14159265359
+
+void get_dir_0(out vec3 dir, in float u, in float v) {
+ dir[0] = 1.0;
+ dir[1] = v;
+ dir[2] = -u;
+}
+
+void get_dir_1(out vec3 dir, in float u, in float v) {
+ dir[0] = -1.0;
+ dir[1] = v;
+ dir[2] = u;
+}
+
+void get_dir_2(out vec3 dir, in float u, in float v) {
+ dir[0] = u;
+ dir[1] = 1.0;
+ dir[2] = -v;
+}
+
+void get_dir_3(out vec3 dir, in float u, in float v) {
+ dir[0] = u;
+ dir[1] = -1.0;
+ dir[2] = v;
+}
+
+void get_dir_4(out vec3 dir, in float u, in float v) {
+ dir[0] = u;
+ dir[1] = v;
+ dir[2] = 1.0;
+}
+
+void get_dir_5(out vec3 dir, in float u, in float v) {
+ dir[0] = -u;
+ dir[1] = v;
+ dir[2] = -1.0;
+}
+
+float calcWeight(float u, float v) {
+ float val = u * u + v * v + 1.0;
+ return val * sqrt(val);
+}
diff --git a/servers/rendering/renderer_rd/shaders/cubemap_downsampler_raster.glsl b/servers/rendering/renderer_rd/shaders/cubemap_downsampler_raster.glsl
new file mode 100644
index 0000000000..0828ffd921
--- /dev/null
+++ b/servers/rendering/renderer_rd/shaders/cubemap_downsampler_raster.glsl
@@ -0,0 +1,163 @@
+// Copyright 2016 Activision Publishing, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+
+/* clang-format off */
+#[vertex]
+
+#version 450
+
+#VERSION_DEFINES
+
+#include "cubemap_downsampler_inc.glsl"
+
+layout(location = 0) out vec2 uv_interp;
+/* clang-format on */
+
+void main() {
+ vec2 base_arr[4] = vec2[](vec2(0.0, 0.0), vec2(0.0, 1.0), vec2(1.0, 1.0), vec2(1.0, 0.0));
+ uv_interp = base_arr[gl_VertexIndex] * float(params.face_size);
+ gl_Position = vec4(base_arr[gl_VertexIndex] * 2.0 - 1.0, 0.0, 1.0);
+}
+
+/* clang-format off */
+#[fragment]
+
+#version 450
+
+#VERSION_DEFINES
+
+#include "cubemap_downsampler_inc.glsl"
+
+layout(set = 0, binding = 0) uniform samplerCube source_cubemap;
+
+layout(location = 0) in vec2 uv_interp;
+layout(location = 0) out vec4 frag_color;
+/* clang-format on */
+
+void main() {
+ // Converted from compute shader which uses absolute coordinates.
+ // Could possibly simplify this
+ float face_size = float(params.face_size);
+
+ if (uv_interp.x < face_size && uv_interp.y < face_size) {
+ float inv_face_size = 1.0 / face_size;
+
+ float u0 = (uv_interp.x * 2.0 + 1.0 - 0.75) * inv_face_size - 1.0;
+ float u1 = (uv_interp.x * 2.0 + 1.0 + 0.75) * inv_face_size - 1.0;
+
+ float v0 = (uv_interp.y * 2.0 + 1.0 - 0.75) * -inv_face_size + 1.0;
+ float v1 = (uv_interp.y * 2.0 + 1.0 + 0.75) * -inv_face_size + 1.0;
+
+ float weights[4];
+ weights[0] = calcWeight(u0, v0);
+ weights[1] = calcWeight(u1, v0);
+ weights[2] = calcWeight(u0, v1);
+ weights[3] = calcWeight(u1, v1);
+
+ const float wsum = 0.5 / (weights[0] + weights[1] + weights[2] + weights[3]);
+ for (int i = 0; i < 4; i++) {
+ weights[i] = weights[i] * wsum + .125;
+ }
+
+ vec3 dir;
+ vec4 color;
+ switch (params.face_id) {
+ case 0:
+ get_dir_0(dir, u0, v0);
+ color = textureLod(source_cubemap, normalize(dir), 0.0) * weights[0];
+
+ get_dir_0(dir, u1, v0);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[1];
+
+ get_dir_0(dir, u0, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[2];
+
+ get_dir_0(dir, u1, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[3];
+ break;
+ case 1:
+ get_dir_1(dir, u0, v0);
+ color = textureLod(source_cubemap, normalize(dir), 0.0) * weights[0];
+
+ get_dir_1(dir, u1, v0);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[1];
+
+ get_dir_1(dir, u0, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[2];
+
+ get_dir_1(dir, u1, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[3];
+ break;
+ case 2:
+ get_dir_2(dir, u0, v0);
+ color = textureLod(source_cubemap, normalize(dir), 0.0) * weights[0];
+
+ get_dir_2(dir, u1, v0);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[1];
+
+ get_dir_2(dir, u0, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[2];
+
+ get_dir_2(dir, u1, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[3];
+ break;
+ case 3:
+ get_dir_3(dir, u0, v0);
+ color = textureLod(source_cubemap, normalize(dir), 0.0) * weights[0];
+
+ get_dir_3(dir, u1, v0);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[1];
+
+ get_dir_3(dir, u0, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[2];
+
+ get_dir_3(dir, u1, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[3];
+ break;
+ case 4:
+ get_dir_4(dir, u0, v0);
+ color = textureLod(source_cubemap, normalize(dir), 0.0) * weights[0];
+
+ get_dir_4(dir, u1, v0);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[1];
+
+ get_dir_4(dir, u0, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[2];
+
+ get_dir_4(dir, u1, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[3];
+ break;
+ default:
+ get_dir_5(dir, u0, v0);
+ color = textureLod(source_cubemap, normalize(dir), 0.0) * weights[0];
+
+ get_dir_5(dir, u1, v0);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[1];
+
+ get_dir_5(dir, u0, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[2];
+
+ get_dir_5(dir, u1, v1);
+ color += textureLod(source_cubemap, normalize(dir), 0.0) * weights[3];
+ break;
+ }
+ frag_color = color;
+ }
+}
diff --git a/servers/rendering/renderer_rd/shaders/cubemap_filter_raster.glsl b/servers/rendering/renderer_rd/shaders/cubemap_filter_raster.glsl
new file mode 100644
index 0000000000..324d306218
--- /dev/null
+++ b/servers/rendering/renderer_rd/shaders/cubemap_filter_raster.glsl
@@ -0,0 +1,256 @@
+// Copyright 2016 Activision Publishing, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the Software
+// is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+// SOFTWARE.
+
+/* clang-format off */
+#[vertex]
+
+#version 450
+
+#VERSION_DEFINES
+
+layout(push_constant, binding = 1, std430) uniform Params {
+ int mip_level;
+ uint face_id;
+}
+params;
+
+layout(location = 0) out vec2 uv_interp;
+/* clang-format on */
+
+void main() {
+ vec2 base_arr[4] = vec2[](vec2(0.0, 0.0), vec2(0.0, 1.0), vec2(1.0, 1.0), vec2(1.0, 0.0));
+ uv_interp = base_arr[gl_VertexIndex];
+ gl_Position = vec4(base_arr[gl_VertexIndex] * 2.0 - 1.0, 0.0, 1.0);
+}
+
+/* clang-format off */
+#[fragment]
+
+#version 450
+
+#VERSION_DEFINES
+
+layout(push_constant, binding = 1, std430) uniform Params {
+ int mip_level;
+ uint face_id;
+}
+params;
+
+layout(set = 0, binding = 0) uniform samplerCube source_cubemap;
+
+layout(location = 0) in vec2 uv_interp;
+layout(location = 0) out vec4 frag_color;
+
+/* clang-format on */
+
+#ifdef USE_HIGH_QUALITY
+#define NUM_TAPS 32
+#else
+#define NUM_TAPS 8
+#endif
+
+#define BASE_RESOLUTION 128
+
+#ifdef USE_HIGH_QUALITY
+layout(set = 1, binding = 0, std430) buffer restrict readonly Data {
+ vec4[7][5][3][24] coeffs;
+}
+data;
+#else
+layout(set = 1, binding = 0, std430) buffer restrict readonly Data {
+ vec4[7][5][6] coeffs;
+}
+data;
+#endif
+
+void get_dir(out vec3 dir, in vec2 uv, in uint face) {
+ switch (face) {
+ case 0:
+ dir = vec3(1.0, uv[1], -uv[0]);
+ break;
+ case 1:
+ dir = vec3(-1.0, uv[1], uv[0]);
+ break;
+ case 2:
+ dir = vec3(uv[0], 1.0, -uv[1]);
+ break;
+ case 3:
+ dir = vec3(uv[0], -1.0, uv[1]);
+ break;
+ case 4:
+ dir = vec3(uv[0], uv[1], 1.0);
+ break;
+ default:
+ dir = vec3(-uv[0], uv[1], -1.0);
+ break;
+ }
+}
+
+void main() {
+ // determine dir / pos for the texel
+ vec3 dir, adir, frameZ;
+ {
+ vec2 uv;
+ uv.x = uv_interp.x;
+ uv.y = 1.0 - uv_interp.y;
+ uv = uv * 2.0 - 1.0;
+
+ get_dir(dir, uv, params.face_id);
+ frameZ = normalize(dir);
+
+ adir = abs(dir);
+ }
+
+ // determine which texel this is
+ // NOTE (macOS/MoltenVK): Do not rename, "level" variable name conflicts with the Metal "level(float lod)" mipmap sampling function name.
+ int mip_level = 0;
+
+ if (params.mip_level < 0) {
+ // return as is
+ frag_color.rgb = textureLod(source_cubemap, frameZ, 0.0).rgb;
+ frag_color.a = 1.0;
+ return;
+ } else if (params.mip_level > 6) {
+ // maximum level
+ mip_level = 6;
+ } else {
+ mip_level = params.mip_level;
+ }
+
+ // GGX gather colors
+ vec4 color = vec4(0.0);
+ for (int axis = 0; axis < 3; axis++) {
+ const int otherAxis0 = 1 - (axis & 1) - (axis >> 1);
+ const int otherAxis1 = 2 - (axis >> 1);
+
+ float frameweight = (max(adir[otherAxis0], adir[otherAxis1]) - .75) / .25;
+ if (frameweight > 0.0) {
+ // determine frame
+ vec3 UpVector;
+ switch (axis) {
+ case 0:
+ UpVector = vec3(1, 0, 0);
+ break;
+ case 1:
+ UpVector = vec3(0, 1, 0);
+ break;
+ default:
+ UpVector = vec3(0, 0, 1);
+ break;
+ }
+
+ vec3 frameX = normalize(cross(UpVector, frameZ));
+ vec3 frameY = cross(frameZ, frameX);
+
+ // calculate parametrization for polynomial
+ float Nx = dir[otherAxis0];
+ float Ny = dir[otherAxis1];
+ float Nz = adir[axis];
+
+ float NmaxXY = max(abs(Ny), abs(Nx));
+ Nx /= NmaxXY;
+ Ny /= NmaxXY;
+
+ float theta;
+ if (Ny < Nx) {
+ if (Ny <= -0.999)
+ theta = Nx;
+ else
+ theta = Ny;
+ } else {
+ if (Ny >= 0.999)
+ theta = -Nx;
+ else
+ theta = -Ny;
+ }
+
+ float phi;
+ if (Nz <= -0.999)
+ phi = -NmaxXY;
+ else if (Nz >= 0.999)
+ phi = NmaxXY;
+ else
+ phi = Nz;
+
+ float theta2 = theta * theta;
+ float phi2 = phi * phi;
+
+ // sample
+ for (int iSuperTap = 0; iSuperTap < NUM_TAPS / 4; iSuperTap++) {
+ const int index = (NUM_TAPS / 4) * axis + iSuperTap;
+
+#ifdef USE_HIGH_QUALITY
+ vec4 coeffsDir0[3];
+ vec4 coeffsDir1[3];
+ vec4 coeffsDir2[3];
+ vec4 coeffsLevel[3];
+ vec4 coeffsWeight[3];
+
+ for (int iCoeff = 0; iCoeff < 3; iCoeff++) {
+ coeffsDir0[iCoeff] = data.coeffs[mip_level][0][iCoeff][index];
+ coeffsDir1[iCoeff] = data.coeffs[mip_level][1][iCoeff][index];
+ coeffsDir2[iCoeff] = data.coeffs[mip_level][2][iCoeff][index];
+ coeffsLevel[iCoeff] = data.coeffs[mip_level][3][iCoeff][index];
+ coeffsWeight[iCoeff] = data.coeffs[mip_level][4][iCoeff][index];
+ }
+
+ for (int iSubTap = 0; iSubTap < 4; iSubTap++) {
+ // determine sample attributes (dir, weight, mip_level)
+ vec3 sample_dir = frameX * (coeffsDir0[0][iSubTap] + coeffsDir0[1][iSubTap] * theta2 + coeffsDir0[2][iSubTap] * phi2) + frameY * (coeffsDir1[0][iSubTap] + coeffsDir1[1][iSubTap] * theta2 + coeffsDir1[2][iSubTap] * phi2) + frameZ * (coeffsDir2[0][iSubTap] + coeffsDir2[1][iSubTap] * theta2 + coeffsDir2[2][iSubTap] * phi2);
+
+ float sample_level = coeffsLevel[0][iSubTap] + coeffsLevel[1][iSubTap] * theta2 + coeffsLevel[2][iSubTap] * phi2;
+
+ float sample_weight = coeffsWeight[0][iSubTap] + coeffsWeight[1][iSubTap] * theta2 + coeffsWeight[2][iSubTap] * phi2;
+#else
+ vec4 coeffsDir0 = data.coeffs[mip_level][0][index];
+ vec4 coeffsDir1 = data.coeffs[mip_level][1][index];
+ vec4 coeffsDir2 = data.coeffs[mip_level][2][index];
+ vec4 coeffsLevel = data.coeffs[mip_level][3][index];
+ vec4 coeffsWeight = data.coeffs[mip_level][4][index];
+
+ for (int iSubTap = 0; iSubTap < 4; iSubTap++) {
+ // determine sample attributes (dir, weight, mip_level)
+ vec3 sample_dir = frameX * coeffsDir0[iSubTap] + frameY * coeffsDir1[iSubTap] + frameZ * coeffsDir2[iSubTap];
+
+ float sample_level = coeffsLevel[iSubTap];
+
+ float sample_weight = coeffsWeight[iSubTap];
+#endif
+
+ sample_weight *= frameweight;
+
+ // adjust for jacobian
+ sample_dir /= max(abs(sample_dir[0]), max(abs(sample_dir[1]), abs(sample_dir[2])));
+ sample_level += 0.75 * log2(dot(sample_dir, sample_dir));
+ // sample cubemap
+ color.xyz += textureLod(source_cubemap, normalize(sample_dir), sample_level).xyz * sample_weight;
+ color.w += sample_weight;
+ }
+ }
+ }
+ }
+ color /= color.w;
+
+ // write color
+ color.xyz = max(vec3(0.0), color.xyz);
+ color.w = 1.0;
+
+ frag_color = color;
+}
diff --git a/servers/rendering/renderer_rd/shaders/cubemap_roughness.glsl b/servers/rendering/renderer_rd/shaders/cubemap_roughness.glsl
index ce7c03c1d4..28f4dc59ec 100644
--- a/servers/rendering/renderer_rd/shaders/cubemap_roughness.glsl
+++ b/servers/rendering/renderer_rd/shaders/cubemap_roughness.glsl
@@ -12,100 +12,7 @@ layout(set = 0, binding = 0) uniform samplerCube source_cube;
layout(rgba16f, set = 1, binding = 0) uniform restrict writeonly imageCube dest_cubemap;
-layout(push_constant, binding = 1, std430) uniform Params {
- uint face_id;
- uint sample_count;
- float roughness;
- bool use_direct_write;
- float face_size;
-}
-params;
-
-#define M_PI 3.14159265359
-
-vec3 texelCoordToVec(vec2 uv, uint faceID) {
- mat3 faceUvVectors[6];
-
- // -x
- faceUvVectors[1][0] = vec3(0.0, 0.0, 1.0); // u -> +z
- faceUvVectors[1][1] = vec3(0.0, -1.0, 0.0); // v -> -y
- faceUvVectors[1][2] = vec3(-1.0, 0.0, 0.0); // -x face
-
- // +x
- faceUvVectors[0][0] = vec3(0.0, 0.0, -1.0); // u -> -z
- faceUvVectors[0][1] = vec3(0.0, -1.0, 0.0); // v -> -y
- faceUvVectors[0][2] = vec3(1.0, 0.0, 0.0); // +x face
-
- // -y
- faceUvVectors[3][0] = vec3(1.0, 0.0, 0.0); // u -> +x
- faceUvVectors[3][1] = vec3(0.0, 0.0, -1.0); // v -> -z
- faceUvVectors[3][2] = vec3(0.0, -1.0, 0.0); // -y face
-
- // +y
- faceUvVectors[2][0] = vec3(1.0, 0.0, 0.0); // u -> +x
- faceUvVectors[2][1] = vec3(0.0, 0.0, 1.0); // v -> +z
- faceUvVectors[2][2] = vec3(0.0, 1.0, 0.0); // +y face
-
- // -z
- faceUvVectors[5][0] = vec3(-1.0, 0.0, 0.0); // u -> -x
- faceUvVectors[5][1] = vec3(0.0, -1.0, 0.0); // v -> -y
- faceUvVectors[5][2] = vec3(0.0, 0.0, -1.0); // -z face
-
- // +z
- faceUvVectors[4][0] = vec3(1.0, 0.0, 0.0); // u -> +x
- faceUvVectors[4][1] = vec3(0.0, -1.0, 0.0); // v -> -y
- faceUvVectors[4][2] = vec3(0.0, 0.0, 1.0); // +z face
-
- // out = u * s_faceUv[0] + v * s_faceUv[1] + s_faceUv[2].
- vec3 result = (faceUvVectors[faceID][0] * uv.x) + (faceUvVectors[faceID][1] * uv.y) + faceUvVectors[faceID][2];
- return normalize(result);
-}
-
-vec3 ImportanceSampleGGX(vec2 Xi, float Roughness, vec3 N) {
- float a = Roughness * Roughness; // DISNEY'S ROUGHNESS [see Burley'12 siggraph]
-
- // Compute distribution direction
- float Phi = 2.0 * M_PI * Xi.x;
- float CosTheta = sqrt((1.0 - Xi.y) / (1.0 + (a * a - 1.0) * Xi.y));
- float SinTheta = sqrt(1.0 - CosTheta * CosTheta);
-
- // Convert to spherical direction
- vec3 H;
- H.x = SinTheta * cos(Phi);
- H.y = SinTheta * sin(Phi);
- H.z = CosTheta;
-
- vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);
- vec3 TangentX = normalize(cross(UpVector, N));
- vec3 TangentY = cross(N, TangentX);
-
- // Tangent to world space
- return TangentX * H.x + TangentY * H.y + N * H.z;
-}
-
-// http://graphicrants.blogspot.com.au/2013/08/specular-brdf-reference.html
-float GGX(float NdotV, float a) {
- float k = a / 2.0;
- return NdotV / (NdotV * (1.0 - k) + k);
-}
-
-// http://graphicrants.blogspot.com.au/2013/08/specular-brdf-reference.html
-float G_Smith(float a, float nDotV, float nDotL) {
- return GGX(nDotL, a * a) * GGX(nDotV, a * a);
-}
-
-float radicalInverse_VdC(uint bits) {
- bits = (bits << 16u) | (bits >> 16u);
- bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u);
- bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);
- bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);
- bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);
- return float(bits) * 2.3283064365386963e-10; // / 0x100000000
-}
-
-vec2 Hammersley(uint i, uint N) {
- return vec2(float(i) / float(N), radicalInverse_VdC(i));
-}
+#include "cubemap_roughness_inc.glsl"
void main() {
uvec3 id = gl_GlobalInvocationID;
diff --git a/servers/rendering/renderer_rd/shaders/cubemap_roughness_inc.glsl b/servers/rendering/renderer_rd/shaders/cubemap_roughness_inc.glsl
new file mode 100644
index 0000000000..80c0ac4fb4
--- /dev/null
+++ b/servers/rendering/renderer_rd/shaders/cubemap_roughness_inc.glsl
@@ -0,0 +1,94 @@
+#define M_PI 3.14159265359
+
+layout(push_constant, binding = 1, std430) uniform Params {
+ uint face_id;
+ uint sample_count;
+ float roughness;
+ bool use_direct_write;
+ float face_size;
+}
+params;
+
+vec3 texelCoordToVec(vec2 uv, uint faceID) {
+ mat3 faceUvVectors[6];
+
+ // -x
+ faceUvVectors[1][0] = vec3(0.0, 0.0, 1.0); // u -> +z
+ faceUvVectors[1][1] = vec3(0.0, -1.0, 0.0); // v -> -y
+ faceUvVectors[1][2] = vec3(-1.0, 0.0, 0.0); // -x face
+
+ // +x
+ faceUvVectors[0][0] = vec3(0.0, 0.0, -1.0); // u -> -z
+ faceUvVectors[0][1] = vec3(0.0, -1.0, 0.0); // v -> -y
+ faceUvVectors[0][2] = vec3(1.0, 0.0, 0.0); // +x face
+
+ // -y
+ faceUvVectors[3][0] = vec3(1.0, 0.0, 0.0); // u -> +x
+ faceUvVectors[3][1] = vec3(0.0, 0.0, -1.0); // v -> -z
+ faceUvVectors[3][2] = vec3(0.0, -1.0, 0.0); // -y face
+
+ // +y
+ faceUvVectors[2][0] = vec3(1.0, 0.0, 0.0); // u -> +x
+ faceUvVectors[2][1] = vec3(0.0, 0.0, 1.0); // v -> +z
+ faceUvVectors[2][2] = vec3(0.0, 1.0, 0.0); // +y face
+
+ // -z
+ faceUvVectors[5][0] = vec3(-1.0, 0.0, 0.0); // u -> -x
+ faceUvVectors[5][1] = vec3(0.0, -1.0, 0.0); // v -> -y
+ faceUvVectors[5][2] = vec3(0.0, 0.0, -1.0); // -z face
+
+ // +z
+ faceUvVectors[4][0] = vec3(1.0, 0.0, 0.0); // u -> +x
+ faceUvVectors[4][1] = vec3(0.0, -1.0, 0.0); // v -> -y
+ faceUvVectors[4][2] = vec3(0.0, 0.0, 1.0); // +z face
+
+ // out = u * s_faceUv[0] + v * s_faceUv[1] + s_faceUv[2].
+ vec3 result = (faceUvVectors[faceID][0] * uv.x) + (faceUvVectors[faceID][1] * uv.y) + faceUvVectors[faceID][2];
+ return normalize(result);
+}
+
+vec3 ImportanceSampleGGX(vec2 Xi, float Roughness, vec3 N) {
+ float a = Roughness * Roughness; // DISNEY'S ROUGHNESS [see Burley'12 siggraph]
+
+ // Compute distribution direction
+ float Phi = 2.0 * M_PI * Xi.x;
+ float CosTheta = sqrt((1.0 - Xi.y) / (1.0 + (a * a - 1.0) * Xi.y));
+ float SinTheta = sqrt(1.0 - CosTheta * CosTheta);
+
+ // Convert to spherical direction
+ vec3 H;
+ H.x = SinTheta * cos(Phi);
+ H.y = SinTheta * sin(Phi);
+ H.z = CosTheta;
+
+ vec3 UpVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0);
+ vec3 TangentX = normalize(cross(UpVector, N));
+ vec3 TangentY = cross(N, TangentX);
+
+ // Tangent to world space
+ return TangentX * H.x + TangentY * H.y + N * H.z;
+}
+
+// http://graphicrants.blogspot.com.au/2013/08/specular-brdf-reference.html
+float GGX(float NdotV, float a) {
+ float k = a / 2.0;
+ return NdotV / (NdotV * (1.0 - k) + k);
+}
+
+// http://graphicrants.blogspot.com.au/2013/08/specular-brdf-reference.html
+float G_Smith(float a, float nDotV, float nDotL) {
+ return GGX(nDotL, a * a) * GGX(nDotV, a * a);
+}
+
+float radicalInverse_VdC(uint bits) {
+ bits = (bits << 16u) | (bits >> 16u);
+ bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u);
+ bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u);
+ bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u);
+ bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u);
+ return float(bits) * 2.3283064365386963e-10; // / 0x100000000
+}
+
+vec2 Hammersley(uint i, uint N) {
+ return vec2(float(i) / float(N), radicalInverse_VdC(i));
+}
diff --git a/servers/rendering/renderer_rd/shaders/cubemap_roughness_raster.glsl b/servers/rendering/renderer_rd/shaders/cubemap_roughness_raster.glsl
new file mode 100644
index 0000000000..2570308816
--- /dev/null
+++ b/servers/rendering/renderer_rd/shaders/cubemap_roughness_raster.glsl
@@ -0,0 +1,63 @@
+/* clang-format off */
+#[vertex]
+
+#version 450
+
+#VERSION_DEFINES
+
+#include "cubemap_roughness_inc.glsl"
+
+layout(location = 0) out vec2 uv_interp;
+/* clang-format on */
+
+void main() {
+ vec2 base_arr[4] = vec2[](vec2(0.0, 0.0), vec2(0.0, 1.0), vec2(1.0, 1.0), vec2(1.0, 0.0));
+ uv_interp = base_arr[gl_VertexIndex];
+ gl_Position = vec4(uv_interp * 2.0 - 1.0, 0.0, 1.0);
+}
+
+/* clang-format off */
+#[fragment]
+
+#version 450
+
+#VERSION_DEFINES
+
+#include "cubemap_roughness_inc.glsl"
+
+layout(location = 0) in vec2 uv_interp;
+
+layout(set = 0, binding = 0) uniform samplerCube source_cube;
+
+layout(location = 0) out vec4 frag_color;
+/* clang-format on */
+
+void main() {
+ vec3 N = texelCoordToVec(uv_interp * 2.0 - 1.0, params.face_id);
+
+ //vec4 color = color_interp;
+
+ if (params.use_direct_write) {
+ frag_color = vec4(texture(source_cube, N).rgb, 1.0);
+ } else {
+ vec4 sum = vec4(0.0, 0.0, 0.0, 0.0);
+
+ for (uint sampleNum = 0u; sampleNum < params.sample_count; sampleNum++) {
+ vec2 xi = Hammersley(sampleNum, params.sample_count);
+
+ vec3 H = ImportanceSampleGGX(xi, params.roughness, N);
+ vec3 V = N;
+ vec3 L = (2.0 * dot(V, H) * H - V);
+
+ float ndotl = clamp(dot(N, L), 0.0, 1.0);
+
+ if (ndotl > 0.0) {
+ sum.rgb += textureLod(source_cube, L, 0.0).rgb * ndotl;
+ sum.a += ndotl;
+ }
+ }
+ sum /= sum.a;
+
+ frag_color = vec4(sum.rgb, 1.0);
+ }
+}
diff --git a/servers/rendering/renderer_rd/shaders/luminance_reduce_raster.glsl b/servers/rendering/renderer_rd/shaders/luminance_reduce_raster.glsl
new file mode 100644
index 0000000000..29ebd74a90
--- /dev/null
+++ b/servers/rendering/renderer_rd/shaders/luminance_reduce_raster.glsl
@@ -0,0 +1,74 @@
+/* clang-format off */
+#[vertex]
+
+#version 450
+
+#VERSION_DEFINES
+
+#include "luminance_reduce_raster_inc.glsl"
+
+layout(location = 0) out vec2 uv_interp;
+/* clang-format on */
+
+void main() {
+ vec2 base_arr[4] = vec2[](vec2(0.0, 0.0), vec2(0.0, 1.0), vec2(1.0, 1.0), vec2(1.0, 0.0));
+ uv_interp = base_arr[gl_VertexIndex];
+
+ gl_Position = vec4(uv_interp * 2.0 - 1.0, 0.0, 1.0);
+}
+
+/* clang-format off */
+#[fragment]
+
+#version 450
+
+#VERSION_DEFINES
+
+#include "luminance_reduce_raster_inc.glsl"
+
+layout(location = 0) in vec2 uv_interp;
+/* clang-format on */
+
+layout(set = 0, binding = 0) uniform sampler2D source_exposure;
+
+#ifdef FINAL_PASS
+layout(set = 1, binding = 0) uniform sampler2D prev_luminance;
+#endif
+
+layout(location = 0) out highp float luminance;
+
+void main() {
+ ivec2 dest_pos = ivec2(uv_interp * settings.dest_size);
+ ivec2 src_pos = ivec2(uv_interp * settings.source_size);
+
+ ivec2 next_pos = (dest_pos + ivec2(1)) * settings.source_size / settings.dest_size;
+ next_pos = max(next_pos, src_pos + ivec2(1)); //so it at least reads one pixel
+
+ highp vec3 source_color = vec3(0.0);
+ for (int i = src_pos.x; i < next_pos.x; i++) {
+ for (int j = src_pos.y; j < next_pos.y; j++) {
+ source_color += texelFetch(source_exposure, ivec2(i, j), 0).rgb;
+ }
+ }
+
+ source_color /= float((next_pos.x - src_pos.x) * (next_pos.y - src_pos.y));
+
+#ifdef FIRST_PASS
+ luminance = max(source_color.r, max(source_color.g, source_color.b));
+
+ // This formula should be more "accurate" but gave an overexposed result when testing.
+ // Leaving it here so we can revisit it if we want.
+ // luminance = source_color.r * 0.21 + source_color.g * 0.71 + source_color.b * 0.07;
+#else
+ luminance = source_color.r;
+#endif
+
+#ifdef FINAL_PASS
+ // Obtain our target luminance
+ luminance = clamp(luminance, settings.min_luminance, settings.max_luminance);
+
+ // Now smooth to our transition
+ highp float prev_lum = texelFetch(prev_luminance, ivec2(0, 0), 0).r; //1 pixel previous luminance
+ luminance = prev_lum + (luminance - prev_lum) * clamp(settings.exposure_adjust, 0.0, 1.0);
+#endif
+}
diff --git a/servers/rendering/renderer_rd/shaders/luminance_reduce_raster_inc.glsl b/servers/rendering/renderer_rd/shaders/luminance_reduce_raster_inc.glsl
new file mode 100644
index 0000000000..ed389ffe56
--- /dev/null
+++ b/servers/rendering/renderer_rd/shaders/luminance_reduce_raster_inc.glsl
@@ -0,0 +1,11 @@
+
+layout(push_constant, binding = 1, std430) uniform PushConstant {
+ ivec2 source_size;
+ ivec2 dest_size;
+
+ float exposure_adjust;
+ float min_luminance;
+ float max_luminance;
+ float pad;
+}
+settings;
diff --git a/servers/rendering/renderer_rd/shaders/particles_copy.glsl b/servers/rendering/renderer_rd/shaders/particles_copy.glsl
index 4dceeea995..e88e68b511 100644
--- a/servers/rendering/renderer_rd/shaders/particles_copy.glsl
+++ b/servers/rendering/renderer_rd/shaders/particles_copy.glsl
@@ -138,7 +138,7 @@ void main() {
if (bool(particles.data[particle].flags & PARTICLE_FLAG_ACTIVE) || bool(particles.data[particle].flags & PARTICLE_FLAG_TRAILED)) {
txform = particles.data[particle].xform;
if (params.trail_size > 1) {
- // since the steps dont fit precisely in the history frames, must do a tiny bit of
+ // Since the steps don't fit precisely in the history frames, must do a tiny bit of
// interpolation to get them close to their intended location.
uint part_ofs = particle % params.trail_size;
float natural_ofs = fract((float(part_ofs) / float(params.trail_size)) * float(params.trail_total)) * params.frame_delta;
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
index ef1c9bacfb..b3a349c948 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_clustered.glsl
@@ -1214,7 +1214,7 @@ void main() {
specular_light *= specular * metallic * albedo * 2.0;
#else
- // scales the specular reflections, needs to be be computed before lighting happens,
+ // scales the specular reflections, needs to be computed before lighting happens,
// but after environment, GI, and reflection probes are added
// Environment brdf approximation (Lazarov 2013)
// see https://www.unrealengine.com/en-US/blog/physically-based-shading-on-mobile
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl
index 3a05275652..b53bf6a6d4 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_clustered_inc.glsl
@@ -177,7 +177,7 @@ layout(set = 1, binding = 0, std140) uniform SceneData {
uint cluster_type_size;
uint max_cluster_element_count_div_32;
- //use vec4s because std140 doesnt play nice with vec2s, z and w are wasted
+ // Use vec4s because std140 doesn't play nice with vec2s, z and w are wasted.
vec4 directional_penumbra_shadow_kernel[32];
vec4 directional_soft_shadow_kernel[32];
vec4 penumbra_shadow_kernel[32];
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
index 7e72ece5dc..70900a847c 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_mobile.glsl
@@ -981,7 +981,7 @@ void main() {
specular_light *= specular * metallic * albedo * 2.0;
#else
- // scales the specular reflections, needs to be be computed before lighting happens,
+ // scales the specular reflections, needs to be computed before lighting happens,
// but after environment, GI, and reflection probes are added
// Environment brdf approximation (Lazarov 2013)
// see https://www.unrealengine.com/en-US/blog/physically-based-shading-on-mobile
diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl
index 1b8e21551c..d9682d7b23 100644
--- a/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl
+++ b/servers/rendering/renderer_rd/shaders/scene_forward_mobile_inc.glsl
@@ -138,7 +138,7 @@ layout(set = 1, binding = 0, std140) uniform SceneData {
vec2 viewport_size;
vec2 screen_pixel_size;
- //use vec4s because std140 doesnt play nice with vec2s, z and w are wasted
+ // Use vec4s because std140 doesn't play nice with vec2s, z and w are wasted.
vec4 directional_penumbra_shadow_kernel[32];
vec4 directional_soft_shadow_kernel[32];
vec4 penumbra_shadow_kernel[32];
diff --git a/servers/rendering/renderer_rd/shaders/sdfgi_direct_light.glsl b/servers/rendering/renderer_rd/shaders/sdfgi_direct_light.glsl
index 99db35bb34..d6e5c6a92e 100644
--- a/servers/rendering/renderer_rd/shaders/sdfgi_direct_light.glsl
+++ b/servers/rendering/renderer_rd/shaders/sdfgi_direct_light.glsl
@@ -20,10 +20,10 @@ layout(set = 0, binding = 3, std430) restrict readonly buffer DispatchData {
dispatch_data;
struct ProcessVoxel {
- uint position; //xyz 7 bit packed, extra 11 bits for neigbours
- uint albedo; //rgb bits 0-15 albedo, bits 16-21 are normal bits (set if geometry exists toward that side), extra 11 bits for neibhbours
- uint light; //rgbe8985 encoded total saved light, extra 2 bits for neighbours
- uint light_aniso; //55555 light anisotropy, extra 2 bits for neighbours
+ uint position; // xyz 7 bit packed, extra 11 bits for neighbors.
+ uint albedo; // rgb bits 0-15 albedo, bits 16-21 are normal bits (set if geometry exists toward that side), extra 11 bits for neighbors.
+ uint light; // rgbe8985 encoded total saved light, extra 2 bits for neighbors.
+ uint light_aniso; // 55555 light anisotropy, extra 2 bits for neighbors.
//total neighbours: 26
};
diff --git a/servers/rendering/renderer_rd/shaders/sdfgi_integrate.glsl b/servers/rendering/renderer_rd/shaders/sdfgi_integrate.glsl
index bc376e9522..eedd28959c 100644
--- a/servers/rendering/renderer_rd/shaders/sdfgi_integrate.glsl
+++ b/servers/rendering/renderer_rd/shaders/sdfgi_integrate.glsl
@@ -266,9 +266,9 @@ void main() {
} else if (params.sky_mode == SKY_MODE_SKY) {
#ifdef USE_CUBEMAP_ARRAY
- light.rgb = textureLod(samplerCubeArray(sky_irradiance, linear_sampler_mipmaps), vec4(ray_dir, 0.0), 2.0).rgb; //use second mipmap because we dont usually throw a lot of rays, so this compensates
+ light.rgb = textureLod(samplerCubeArray(sky_irradiance, linear_sampler_mipmaps), vec4(ray_dir, 0.0), 2.0).rgb; // Use second mipmap because we don't usually throw a lot of rays, so this compensates.
#else
- light.rgb = textureLod(samplerCube(sky_irradiance, linear_sampler_mipmaps), ray_dir, 2.0).rgb; //use second mipmap because we dont usually throw a lot of rays, so this compensates
+ light.rgb = textureLod(samplerCube(sky_irradiance, linear_sampler_mipmaps), ray_dir, 2.0).rgb; // Use second mipmap because we don't usually throw a lot of rays, so this compensates.
#endif
light.rgb *= params.sky_energy;
light.a = 0.0;
diff --git a/servers/rendering/renderer_rd/shaders/sdfgi_preprocess.glsl b/servers/rendering/renderer_rd/shaders/sdfgi_preprocess.glsl
index aa4ded146f..4d9fa85a74 100644
--- a/servers/rendering/renderer_rd/shaders/sdfgi_preprocess.glsl
+++ b/servers/rendering/renderer_rd/shaders/sdfgi_preprocess.glsl
@@ -101,7 +101,7 @@ layout(set = 0, binding = 10, std430) restrict buffer DispatchData {
dispatch_data;
struct ProcessVoxel {
- uint position; //xyz 7 bit packed, extra 11 bits for neigbours
+ uint position; // xyz 7 bit packed, extra 11 bits for neighbors.
uint albedo; //rgb bits 0-15 albedo, bits 16-21 are normal bits (set if geometry exists toward that side), extra 11 bits for neibhbours
uint light; //rgbe8985 encoded total saved light, extra 2 bits for neighbours
uint light_aniso; //55555 light anisotropy, extra 2 bits for neighbours
@@ -134,7 +134,7 @@ layout(set = 0, binding = 5, std430) restrict buffer readonly DispatchData {
dispatch_data;
struct ProcessVoxel {
- uint position; //xyz 7 bit packed, extra 11 bits for neigbours
+ uint position; // xyz 7 bit packed, extra 11 bits for neighbors.
uint albedo; //rgb bits 0-15 albedo, bits 16-21 are normal bits (set if geometry exists toward that side), extra 11 bits for neibhbours
uint light; //rgbe8985 encoded total saved light, extra 2 bits for neighbours
uint light_aniso; //55555 light anisotropy, extra 2 bits for neighbours
@@ -183,7 +183,7 @@ void main() {
ivec3 write_pos = read_pos + params.scroll;
if (any(lessThan(write_pos, ivec3(0))) || any(greaterThanEqual(write_pos, ivec3(params.grid_size)))) {
- return; //fits outside the 3D texture, dont do anything
+ return; // Fits outside the 3D texture, don't do anything.
}
uint albedo = ((src_process_voxels.data[index].albedo & 0x7FFF) << 1) | 1; //add solid bit
diff --git a/servers/rendering/renderer_scene_cull.cpp b/servers/rendering/renderer_scene_cull.cpp
index 3336623f21..83d1b33bf2 100644
--- a/servers/rendering/renderer_scene_cull.cpp
+++ b/servers/rendering/renderer_scene_cull.cpp
@@ -1259,7 +1259,7 @@ void RendererSceneCull::_update_instance_visibility_depth(Instance *p_instance)
}
if (cycle_detected) {
- ERR_PRINT("Cycle detected in the visibility dependecies tree.");
+ ERR_PRINT("Cycle detected in the visibility dependencies tree.");
for (Set<Instance *>::Element *E = traversed_nodes.front(); E; E = E->next()) {
Instance *instance = E->get();
InstanceGeometryData *geom = static_cast<InstanceGeometryData *>(instance->base_data);
@@ -2876,8 +2876,8 @@ void RendererSceneCull::_render_scene(const RendererSceneRender::CameraData *p_c
Vector<Instance *> lights_with_shadow;
- for (List<Instance *>::Element *E = scenario->directional_lights.front(); E; E = E->next()) {
- if (!E->get()->visible) {
+ for (Instance *E : scenario->directional_lights) {
+ if (!E->visible) {
continue;
}
@@ -2885,13 +2885,13 @@ void RendererSceneCull::_render_scene(const RendererSceneRender::CameraData *p_c
break;
}
- InstanceLightData *light = static_cast<InstanceLightData *>(E->get()->base_data);
+ InstanceLightData *light = static_cast<InstanceLightData *>(E->base_data);
//check shadow..
if (light) {
- if (p_using_shadows && p_shadow_atlas.is_valid() && RSG::storage->light_has_shadow(E->get()->base) && !(RSG::storage->light_get_type(E->get()->base) == RS::LIGHT_DIRECTIONAL && RSG::storage->light_directional_is_sky_only(E->get()->base))) {
- lights_with_shadow.push_back(E->get());
+ if (p_using_shadows && p_shadow_atlas.is_valid() && RSG::storage->light_has_shadow(E->base) && !(RSG::storage->light_get_type(E->base) == RS::LIGHT_DIRECTIONAL && RSG::storage->light_directional_is_sky_only(E->base))) {
+ lights_with_shadow.push_back(E);
}
//add to list
directional_lights.push_back(light->instance);
@@ -3391,8 +3391,7 @@ void RendererSceneCull::render_probes() {
idx++;
}
- for (List<Instance *>::Element *E = probe->owner->scenario->directional_lights.front(); E; E = E->next()) {
- Instance *instance = E->get();
+ for (const Instance *instance : probe->owner->scenario->directional_lights) {
InstanceLightData *instance_light = (InstanceLightData *)instance->base_data;
if (!instance->visible) {
continue;
@@ -3465,8 +3464,7 @@ void RendererSceneCull::render_probes() {
idx++;
}
- for (List<Instance *>::Element *E = probe->owner->scenario->directional_lights.front(); E; E = E->next()) {
- Instance *instance = E->get();
+ for (const Instance *instance : probe->owner->scenario->directional_lights) {
InstanceLightData *instance_light = (InstanceLightData *)instance->base_data;
if (!instance->visible) {
continue;
@@ -3573,26 +3571,26 @@ void RendererSceneCull::render_particle_colliders() {
void RendererSceneCull::_update_instance_shader_parameters_from_material(Map<StringName, Instance::InstanceShaderParameter> &isparams, const Map<StringName, Instance::InstanceShaderParameter> &existing_isparams, RID p_material) {
List<RendererStorage::InstanceShaderParam> plist;
RSG::storage->material_get_instance_shader_parameters(p_material, &plist);
- for (List<RendererStorage::InstanceShaderParam>::Element *E = plist.front(); E; E = E->next()) {
- StringName name = E->get().info.name;
+ for (const RendererStorage::InstanceShaderParam &E : plist) {
+ StringName name = E.info.name;
if (isparams.has(name)) {
- if (isparams[name].info.type != E->get().info.type) {
- WARN_PRINT("More than one material in instance export the same instance shader uniform '" + E->get().info.name + "', but they do it with different data types. Only the first one (in order) will display correctly.");
+ if (isparams[name].info.type != E.info.type) {
+ WARN_PRINT("More than one material in instance export the same instance shader uniform '" + E.info.name + "', but they do it with different data types. Only the first one (in order) will display correctly.");
}
- if (isparams[name].index != E->get().index) {
- WARN_PRINT("More than one material in instance export the same instance shader uniform '" + E->get().info.name + "', but they do it with different indices. Only the first one (in order) will display correctly.");
+ if (isparams[name].index != E.index) {
+ WARN_PRINT("More than one material in instance export the same instance shader uniform '" + E.info.name + "', but they do it with different indices. Only the first one (in order) will display correctly.");
}
continue; //first one found always has priority
}
Instance::InstanceShaderParameter isp;
- isp.index = E->get().index;
- isp.info = E->get().info;
- isp.default_value = E->get().default_value;
+ isp.index = E.index;
+ isp.info = E.info;
+ isp.default_value = E.default_value;
if (existing_isparams.has(name)) {
isp.value = existing_isparams[name].value;
} else {
- isp.value = E->get().default_value;
+ isp.value = E.default_value;
}
isparams[name] = isp;
}
diff --git a/servers/rendering/rendering_device.cpp b/servers/rendering/rendering_device.cpp
index 3594939362..b298ad193b 100644
--- a/servers/rendering/rendering_device.cpp
+++ b/servers/rendering/rendering_device.cpp
@@ -38,23 +38,23 @@ RenderingDevice *RenderingDevice::get_singleton() {
return singleton;
}
-RenderingDevice::ShaderCompileFunction RenderingDevice::compile_function = nullptr;
+RenderingDevice::ShaderCompileToSPIRVFunction RenderingDevice::compile_to_spirv_function = nullptr;
RenderingDevice::ShaderCacheFunction RenderingDevice::cache_function = nullptr;
-RenderingDevice::ShaderGetCacheKeyFunction RenderingDevice::get_cache_key_function = nullptr;
+RenderingDevice::ShaderSPIRVGetCacheKeyFunction RenderingDevice::get_spirv_cache_key_function = nullptr;
-void RenderingDevice::shader_set_compile_function(ShaderCompileFunction p_function) {
- compile_function = p_function;
+void RenderingDevice::shader_set_compile_to_spirv_function(ShaderCompileToSPIRVFunction p_function) {
+ compile_to_spirv_function = p_function;
}
-void RenderingDevice::shader_set_cache_function(ShaderCacheFunction p_function) {
+void RenderingDevice::shader_set_spirv_cache_function(ShaderCacheFunction p_function) {
cache_function = p_function;
}
-void RenderingDevice::shader_set_get_cache_key_function(ShaderGetCacheKeyFunction p_function) {
- get_cache_key_function = p_function;
+void RenderingDevice::shader_set_get_cache_key_function(ShaderSPIRVGetCacheKeyFunction p_function) {
+ get_spirv_cache_key_function = p_function;
}
-Vector<uint8_t> RenderingDevice::shader_compile_from_source(ShaderStage p_stage, const String &p_source_code, ShaderLanguage p_language, String *r_error, bool p_allow_cache) {
+Vector<uint8_t> RenderingDevice::shader_compile_spirv_from_source(ShaderStage p_stage, const String &p_source_code, ShaderLanguage p_language, String *r_error, bool p_allow_cache) {
if (p_allow_cache && cache_function) {
Vector<uint8_t> cache = cache_function(p_stage, p_source_code, p_language);
if (cache.size()) {
@@ -62,18 +62,24 @@ Vector<uint8_t> RenderingDevice::shader_compile_from_source(ShaderStage p_stage,
}
}
- ERR_FAIL_COND_V(!compile_function, Vector<uint8_t>());
+ ERR_FAIL_COND_V(!compile_to_spirv_function, Vector<uint8_t>());
- return compile_function(p_stage, p_source_code, p_language, r_error, &device_capabilities);
+ return compile_to_spirv_function(p_stage, p_source_code, p_language, r_error, &device_capabilities);
}
-String RenderingDevice::shader_get_cache_key() const {
- if (get_cache_key_function) {
- return get_cache_key_function(&device_capabilities);
+String RenderingDevice::shader_get_spirv_cache_key() const {
+ if (get_spirv_cache_key_function) {
+ return get_spirv_cache_key_function(&device_capabilities);
}
return String();
}
+RID RenderingDevice::shader_create_from_spirv(const Vector<ShaderStageSPIRVData> &p_spirv) {
+ Vector<uint8_t> bytecode = shader_compile_binary_from_spirv(p_spirv);
+ ERR_FAIL_COND_V(bytecode.size() == 0, RID());
+ return shader_create_from_bytecode(bytecode);
+}
+
RID RenderingDevice::_texture_create(const Ref<RDTextureFormat> &p_format, const Ref<RDTextureView> &p_view, const TypedArray<PackedByteArray> &p_data) {
ERR_FAIL_COND_V(p_format.is_null(), RID());
ERR_FAIL_COND_V(p_view.is_null(), RID());
@@ -170,40 +176,59 @@ RID RenderingDevice::_vertex_array_create(uint32_t p_vertex_count, VertexFormatI
return vertex_array_create(p_vertex_count, p_vertex_format, buffers);
}
-Ref<RDShaderBytecode> RenderingDevice::_shader_compile_from_source(const Ref<RDShaderSource> &p_source, bool p_allow_cache) {
- ERR_FAIL_COND_V(p_source.is_null(), Ref<RDShaderBytecode>());
+Ref<RDShaderSPIRV> RenderingDevice::_shader_compile_spirv_from_source(const Ref<RDShaderSource> &p_source, bool p_allow_cache) {
+ ERR_FAIL_COND_V(p_source.is_null(), Ref<RDShaderSPIRV>());
- Ref<RDShaderBytecode> bytecode;
+ Ref<RDShaderSPIRV> bytecode;
bytecode.instantiate();
for (int i = 0; i < RD::SHADER_STAGE_MAX; i++) {
String error;
ShaderStage stage = ShaderStage(i);
- Vector<uint8_t> spirv = shader_compile_from_source(stage, p_source->get_stage_source(stage), p_source->get_language(), &error, p_allow_cache);
+ Vector<uint8_t> spirv = shader_compile_spirv_from_source(stage, p_source->get_stage_source(stage), p_source->get_language(), &error, p_allow_cache);
bytecode->set_stage_bytecode(stage, spirv);
bytecode->set_stage_compile_error(stage, error);
}
return bytecode;
}
-RID RenderingDevice::shader_create_from_bytecode(const Ref<RDShaderBytecode> &p_bytecode) {
- ERR_FAIL_COND_V(p_bytecode.is_null(), RID());
+Vector<uint8_t> RenderingDevice::_shader_compile_binary_from_spirv(const Ref<RDShaderSPIRV> &p_spirv) {
+ ERR_FAIL_COND_V(p_spirv.is_null(), Vector<uint8_t>());
- Vector<ShaderStageData> stage_data;
+ Vector<ShaderStageSPIRVData> stage_data;
for (int i = 0; i < RD::SHADER_STAGE_MAX; i++) {
ShaderStage stage = ShaderStage(i);
- ShaderStageData sd;
+ ShaderStageSPIRVData sd;
sd.shader_stage = stage;
- String error = p_bytecode->get_stage_compile_error(stage);
- ERR_FAIL_COND_V_MSG(error != String(), RID(), "Can't create a shader from an errored bytecode. Check errors in source bytecode.");
- sd.spir_v = p_bytecode->get_stage_bytecode(stage);
+ String error = p_spirv->get_stage_compile_error(stage);
+ ERR_FAIL_COND_V_MSG(error != String(), Vector<uint8_t>(), "Can't create a shader from an errored bytecode. Check errors in source bytecode.");
+ sd.spir_v = p_spirv->get_stage_bytecode(stage);
if (sd.spir_v.is_empty()) {
continue;
}
stage_data.push_back(sd);
}
- return shader_create(stage_data);
+ return shader_compile_binary_from_spirv(stage_data);
+}
+
+RID RenderingDevice::_shader_create_from_spirv(const Ref<RDShaderSPIRV> &p_spirv) {
+ ERR_FAIL_COND_V(p_spirv.is_null(), RID());
+
+ Vector<ShaderStageSPIRVData> stage_data;
+ for (int i = 0; i < RD::SHADER_STAGE_MAX; i++) {
+ ShaderStage stage = ShaderStage(i);
+ ShaderStageSPIRVData sd;
+ sd.shader_stage = stage;
+ String error = p_spirv->get_stage_compile_error(stage);
+ ERR_FAIL_COND_V_MSG(error != String(), RID(), "Can't create a shader from an errored bytecode. Check errors in source bytecode.");
+ sd.spir_v = p_spirv->get_stage_bytecode(stage);
+ if (sd.spir_v.is_empty()) {
+ continue;
+ }
+ stage_data.push_back(sd);
+ }
+ return shader_create_from_spirv(stage_data);
}
RID RenderingDevice::_uniform_set_create(const Array &p_uniforms, RID p_shader, uint32_t p_shader_set) {
@@ -366,8 +391,10 @@ void RenderingDevice::_bind_methods() {
ClassDB::bind_method(D_METHOD("index_buffer_create", "size_indices", "format", "data", "use_restart_indices"), &RenderingDevice::index_buffer_create, DEFVAL(Vector<uint8_t>()), DEFVAL(false));
ClassDB::bind_method(D_METHOD("index_array_create", "index_buffer", "index_offset", "index_count"), &RenderingDevice::index_array_create);
- ClassDB::bind_method(D_METHOD("shader_compile_from_source", "shader_source", "allow_cache"), &RenderingDevice::_shader_compile_from_source, DEFVAL(true));
- ClassDB::bind_method(D_METHOD("shader_create", "shader_data"), &RenderingDevice::shader_create_from_bytecode);
+ ClassDB::bind_method(D_METHOD("shader_compile_spirv_from_source", "shader_source", "allow_cache"), &RenderingDevice::_shader_compile_spirv_from_source, DEFVAL(true));
+ ClassDB::bind_method(D_METHOD("shader_compile_binary_from_spirv", "spirv_data"), &RenderingDevice::_shader_compile_binary_from_spirv);
+ ClassDB::bind_method(D_METHOD("shader_create_from_spirv", "spirv_data"), &RenderingDevice::_shader_compile_binary_from_spirv);
+ ClassDB::bind_method(D_METHOD("shader_create_from_bytecode", "binary_data"), &RenderingDevice::shader_create_from_bytecode);
ClassDB::bind_method(D_METHOD("shader_get_vertex_input_attribute_mask", "shader"), &RenderingDevice::shader_get_vertex_input_attribute_mask);
ClassDB::bind_method(D_METHOD("uniform_buffer_create", "size_bytes", "data"), &RenderingDevice::uniform_buffer_create, DEFVAL(Vector<uint8_t>()));
diff --git a/servers/rendering/rendering_device.h b/servers/rendering/rendering_device.h
index 9a154ef7e9..eaf1ace798 100644
--- a/servers/rendering/rendering_device.h
+++ b/servers/rendering/rendering_device.h
@@ -41,7 +41,7 @@ class RDAttachmentFormat;
class RDSamplerState;
class RDVertexAttribute;
class RDShaderSource;
-class RDShaderBytecode;
+class RDShaderSPIRV;
class RDUniforms;
class RDPipelineRasterizationState;
class RDPipelineMultisampleState;
@@ -105,14 +105,14 @@ public:
bool supports_multiview = false; // If true this device supports multiview options
};
- typedef String (*ShaderGetCacheKeyFunction)(const Capabilities *p_capabilities);
- typedef Vector<uint8_t> (*ShaderCompileFunction)(ShaderStage p_stage, const String &p_source_code, ShaderLanguage p_language, String *r_error, const Capabilities *p_capabilities);
+ typedef String (*ShaderSPIRVGetCacheKeyFunction)(const Capabilities *p_capabilities);
+ typedef Vector<uint8_t> (*ShaderCompileToSPIRVFunction)(ShaderStage p_stage, const String &p_source_code, ShaderLanguage p_language, String *r_error, const Capabilities *p_capabilities);
typedef Vector<uint8_t> (*ShaderCacheFunction)(ShaderStage p_stage, const String &p_source_code, ShaderLanguage p_language);
private:
- static ShaderCompileFunction compile_function;
+ static ShaderCompileToSPIRVFunction compile_to_spirv_function;
static ShaderCacheFunction cache_function;
- static ShaderGetCacheKeyFunction get_cache_key_function;
+ static ShaderSPIRVGetCacheKeyFunction get_spirv_cache_key_function;
static RenderingDevice *singleton;
@@ -651,24 +651,28 @@ public:
const Capabilities *get_device_capabilities() const { return &device_capabilities; };
- virtual Vector<uint8_t> shader_compile_from_source(ShaderStage p_stage, const String &p_source_code, ShaderLanguage p_language = SHADER_LANGUAGE_GLSL, String *r_error = nullptr, bool p_allow_cache = true);
- virtual String shader_get_cache_key() const;
+ virtual Vector<uint8_t> shader_compile_spirv_from_source(ShaderStage p_stage, const String &p_source_code, ShaderLanguage p_language = SHADER_LANGUAGE_GLSL, String *r_error = nullptr, bool p_allow_cache = true);
+ virtual String shader_get_spirv_cache_key() const;
- static void shader_set_compile_function(ShaderCompileFunction p_function);
- static void shader_set_cache_function(ShaderCacheFunction p_function);
- static void shader_set_get_cache_key_function(ShaderGetCacheKeyFunction p_function);
+ static void shader_set_compile_to_spirv_function(ShaderCompileToSPIRVFunction p_function);
+ static void shader_set_spirv_cache_function(ShaderCacheFunction p_function);
+ static void shader_set_get_cache_key_function(ShaderSPIRVGetCacheKeyFunction p_function);
- struct ShaderStageData {
+ struct ShaderStageSPIRVData {
ShaderStage shader_stage;
Vector<uint8_t> spir_v;
- ShaderStageData() {
+ ShaderStageSPIRVData() {
shader_stage = SHADER_STAGE_VERTEX;
}
};
- RID shader_create_from_bytecode(const Ref<RDShaderBytecode> &p_bytecode);
- virtual RID shader_create(const Vector<ShaderStageData> &p_stages) = 0;
+ virtual String shader_get_binary_cache_key() const = 0;
+ virtual Vector<uint8_t> shader_compile_binary_from_spirv(const Vector<ShaderStageSPIRVData> &p_spirv) = 0;
+
+ virtual RID shader_create_from_spirv(const Vector<ShaderStageSPIRVData> &p_spirv);
+ virtual RID shader_create_from_bytecode(const Vector<uint8_t> &p_shader_binary) = 0;
+
virtual uint32_t shader_get_vertex_input_attribute_mask(RID p_shader) = 0;
/******************/
@@ -1194,7 +1198,9 @@ protected:
VertexFormatID _vertex_format_create(const TypedArray<RDVertexAttribute> &p_vertex_formats);
RID _vertex_array_create(uint32_t p_vertex_count, VertexFormatID p_vertex_format, const TypedArray<RID> &p_src_buffers);
- Ref<RDShaderBytecode> _shader_compile_from_source(const Ref<RDShaderSource> &p_source, bool p_allow_cache = true);
+ Ref<RDShaderSPIRV> _shader_compile_spirv_from_source(const Ref<RDShaderSource> &p_source, bool p_allow_cache = true);
+ Vector<uint8_t> _shader_compile_binary_from_spirv(const Ref<RDShaderSPIRV> &p_bytecode);
+ RID _shader_create_from_spirv(const Ref<RDShaderSPIRV> &p_spirv);
RID _uniform_set_create(const Array &p_uniforms, RID p_shader, uint32_t p_shader_set);
diff --git a/servers/rendering/rendering_device_binds.cpp b/servers/rendering/rendering_device_binds.cpp
index 2652edb1bc..fa3f2f3895 100644
--- a/servers/rendering/rendering_device_binds.cpp
+++ b/servers/rendering/rendering_device_binds.cpp
@@ -172,7 +172,7 @@ Error RDShaderFile::parse_versions_from_text(const String &p_text, const String
/* STEP 2, Compile the versions, add to shader file */
for (Map<StringName, String>::Element *E = version_texts.front(); E; E = E->next()) {
- Ref<RDShaderBytecode> bytecode;
+ Ref<RDShaderSPIRV> bytecode;
bytecode.instantiate();
for (int i = 0; i < RD::SHADER_STAGE_MAX; i++) {
@@ -182,7 +182,7 @@ Error RDShaderFile::parse_versions_from_text(const String &p_text, const String
}
code = code.replace("VERSION_DEFINES", E->get());
String error;
- Vector<uint8_t> spirv = RenderingDevice::get_singleton()->shader_compile_from_source(RD::ShaderStage(i), code, RD::SHADER_LANGUAGE_GLSL, &error, false);
+ Vector<uint8_t> spirv = RenderingDevice::get_singleton()->shader_compile_spirv_from_source(RD::ShaderStage(i), code, RD::SHADER_LANGUAGE_GLSL, &error, false);
bytecode->set_stage_bytecode(RD::ShaderStage(i), spirv);
if (error != "") {
error += String() + "\n\nStage '" + stage_str[i] + "' source code: \n\n";
diff --git a/servers/rendering/rendering_device_binds.h b/servers/rendering/rendering_device_binds.h
index 4c31880faf..ccc3e2fb39 100644
--- a/servers/rendering/rendering_device_binds.h
+++ b/servers/rendering/rendering_device_binds.h
@@ -263,8 +263,8 @@ protected:
}
};
-class RDShaderBytecode : public Resource {
- GDCLASS(RDShaderBytecode, Resource)
+class RDShaderSPIRV : public Resource {
+ GDCLASS(RDShaderSPIRV, Resource)
Vector<uint8_t> bytecode[RD::SHADER_STAGE_MAX];
String compile_error[RD::SHADER_STAGE_MAX];
@@ -280,6 +280,19 @@ public:
return bytecode[p_stage];
}
+ Vector<RD::ShaderStageSPIRVData> get_stages() const {
+ Vector<RD::ShaderStageSPIRVData> stages;
+ for (int i = 0; i < RD::SHADER_STAGE_MAX; i++) {
+ if (bytecode[i].size()) {
+ RD::ShaderStageSPIRVData stage;
+ stage.shader_stage = RD::ShaderStage(i);
+ stage.spir_v = bytecode[i];
+ stages.push_back(stage);
+ }
+ }
+ return stages;
+ }
+
void set_stage_compile_error(RD::ShaderStage p_stage, const String &p_compile_error) {
ERR_FAIL_INDEX(p_stage, RD::SHADER_STAGE_MAX);
compile_error[p_stage] = p_compile_error;
@@ -292,11 +305,11 @@ public:
protected:
static void _bind_methods() {
- ClassDB::bind_method(D_METHOD("set_stage_bytecode", "stage", "bytecode"), &RDShaderBytecode::set_stage_bytecode);
- ClassDB::bind_method(D_METHOD("get_stage_bytecode", "stage"), &RDShaderBytecode::get_stage_bytecode);
+ ClassDB::bind_method(D_METHOD("set_stage_bytecode", "stage", "bytecode"), &RDShaderSPIRV::set_stage_bytecode);
+ ClassDB::bind_method(D_METHOD("get_stage_bytecode", "stage"), &RDShaderSPIRV::get_stage_bytecode);
- ClassDB::bind_method(D_METHOD("set_stage_compile_error", "stage", "compile_error"), &RDShaderBytecode::set_stage_compile_error);
- ClassDB::bind_method(D_METHOD("get_stage_compile_error", "stage"), &RDShaderBytecode::get_stage_compile_error);
+ ClassDB::bind_method(D_METHOD("set_stage_compile_error", "stage", "compile_error"), &RDShaderSPIRV::set_stage_compile_error);
+ ClassDB::bind_method(D_METHOD("get_stage_compile_error", "stage"), &RDShaderSPIRV::get_stage_compile_error);
ADD_GROUP("Bytecode", "bytecode_");
ADD_PROPERTYI(PropertyInfo(Variant::PACKED_BYTE_ARRAY, "bytecode_vertex"), "set_stage_bytecode", "get_stage_bytecode", RD::SHADER_STAGE_VERTEX);
@@ -316,24 +329,29 @@ protected:
class RDShaderFile : public Resource {
GDCLASS(RDShaderFile, Resource)
- Map<StringName, Ref<RDShaderBytecode>> versions;
+ Map<StringName, Ref<RDShaderSPIRV>> versions;
String base_error;
public:
- void set_bytecode(const Ref<RDShaderBytecode> &p_bytecode, const StringName &p_version = StringName()) {
+ void set_bytecode(const Ref<RDShaderSPIRV> &p_bytecode, const StringName &p_version = StringName()) {
ERR_FAIL_COND(p_bytecode.is_null());
versions[p_version] = p_bytecode;
emit_changed();
}
- Ref<RDShaderBytecode> get_bytecode(const StringName &p_version = StringName()) const {
- ERR_FAIL_COND_V(!versions.has(p_version), Ref<RDShaderBytecode>());
+ Ref<RDShaderSPIRV> get_spirv(const StringName &p_version = StringName()) const {
+ ERR_FAIL_COND_V(!versions.has(p_version), Ref<RDShaderSPIRV>());
return versions[p_version];
}
+ Vector<RD::ShaderStageSPIRVData> get_spirv_stages(const StringName &p_version = StringName()) const {
+ ERR_FAIL_COND_V(!versions.has(p_version), Vector<RD::ShaderStageSPIRVData>());
+ return versions[p_version]->get_stages();
+ }
+
Vector<StringName> get_version_list() const {
Vector<StringName> vnames;
- for (Map<StringName, Ref<RDShaderBytecode>>::Element *E = versions.front(); E; E = E->next()) {
+ for (Map<StringName, Ref<RDShaderSPIRV>>::Element *E = versions.front(); E; E = E->next()) {
vnames.push_back(E->key());
}
vnames.sort_custom<StringName::AlphCompare>();
@@ -353,7 +371,7 @@ public:
if (base_error != "") {
ERR_PRINT("Error parsing shader '" + p_file + "':\n\n" + base_error);
} else {
- for (Map<StringName, Ref<RDShaderBytecode>>::Element *E = versions.front(); E; E = E->next()) {
+ for (Map<StringName, Ref<RDShaderSPIRV>>::Element *E = versions.front(); E; E = E->next()) {
for (int i = 0; i < RD::SHADER_STAGE_MAX; i++) {
String error = E->get()->get_stage_compile_error(RD::ShaderStage(i));
if (error != String()) {
@@ -388,9 +406,9 @@ protected:
versions.clear();
List<Variant> keys;
p_versions.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- StringName name = E->get();
- Ref<RDShaderBytecode> bc = p_versions[E->get()];
+ for (const Variant &E : keys) {
+ StringName name = E;
+ Ref<RDShaderSPIRV> bc = p_versions[E];
ERR_CONTINUE(bc.is_null());
versions[name] = bc;
}
@@ -400,7 +418,7 @@ protected:
static void _bind_methods() {
ClassDB::bind_method(D_METHOD("set_bytecode", "bytecode", "version"), &RDShaderFile::set_bytecode, DEFVAL(StringName()));
- ClassDB::bind_method(D_METHOD("get_bytecode", "version"), &RDShaderFile::get_bytecode, DEFVAL(StringName()));
+ ClassDB::bind_method(D_METHOD("get_spirv", "version"), &RDShaderFile::get_spirv, DEFVAL(StringName()));
ClassDB::bind_method(D_METHOD("get_version_list"), &RDShaderFile::get_version_list);
ClassDB::bind_method(D_METHOD("set_base_error", "error"), &RDShaderFile::set_base_error);
diff --git a/servers/rendering/shader_language.cpp b/servers/rendering/shader_language.cpp
index 3b9aca200b..baa5381554 100644
--- a/servers/rendering/shader_language.cpp
+++ b/servers/rendering/shader_language.cpp
@@ -912,6 +912,8 @@ void ShaderLanguage::clear() {
completion_class = SubClassTag::TAG_GLOBAL;
completion_struct = StringName();
+ unknown_varying_usages.clear();
+
#ifdef DEBUG_ENABLED
used_constants.clear();
used_varyings.clear();
@@ -2818,6 +2820,20 @@ bool ShaderLanguage::is_token_operator(TokenType p_type) {
p_type == TK_COLON);
}
+bool ShaderLanguage::is_token_operator_assign(TokenType p_type) {
+ return (p_type == TK_OP_ASSIGN ||
+ p_type == TK_OP_ASSIGN_ADD ||
+ p_type == TK_OP_ASSIGN_SUB ||
+ p_type == TK_OP_ASSIGN_MUL ||
+ p_type == TK_OP_ASSIGN_DIV ||
+ p_type == TK_OP_ASSIGN_MOD ||
+ p_type == TK_OP_ASSIGN_SHIFT_LEFT ||
+ p_type == TK_OP_ASSIGN_SHIFT_RIGHT ||
+ p_type == TK_OP_ASSIGN_BIT_AND ||
+ p_type == TK_OP_ASSIGN_BIT_OR ||
+ p_type == TK_OP_ASSIGN_BIT_XOR);
+}
+
bool ShaderLanguage::convert_constant(ConstantNode *p_constant, DataType p_to_type, ConstantNode::Value *p_value) {
if (p_constant->datatype == p_to_type) {
if (p_value) {
@@ -3324,8 +3340,7 @@ bool ShaderLanguage::_validate_varying_assign(ShaderNode::Varying &p_varying, St
p_varying.stage = ShaderNode::Varying::STAGE_FRAGMENT;
}
break;
- case ShaderNode::Varying::STAGE_VERTEX_TO_FRAGMENT:
- case ShaderNode::Varying::STAGE_VERTEX_TO_LIGHT:
+ case ShaderNode::Varying::STAGE_VERTEX_TO_FRAGMENT_LIGHT:
case ShaderNode::Varying::STAGE_VERTEX:
if (current_function == varying_function_names.fragment) {
*r_message = RTR("Varyings which assigned in 'vertex' function may not be reassigned in 'fragment' or 'light'.");
@@ -3348,13 +3363,14 @@ bool ShaderLanguage::_validate_varying_assign(ShaderNode::Varying &p_varying, St
bool ShaderLanguage::_validate_varying_using(ShaderNode::Varying &p_varying, String *r_message) {
switch (p_varying.stage) {
case ShaderNode::Varying::STAGE_UNKNOWN:
- *r_message = RTR("Varying must be assigned before using!");
- return false;
+ VaryingUsage usage;
+ usage.var = &p_varying;
+ usage.line = tk_line;
+ unknown_varying_usages.push_back(usage);
+ break;
case ShaderNode::Varying::STAGE_VERTEX:
- if (current_function == varying_function_names.fragment) {
- p_varying.stage = ShaderNode::Varying::STAGE_VERTEX_TO_FRAGMENT;
- } else if (current_function == varying_function_names.light) {
- p_varying.stage = ShaderNode::Varying::STAGE_VERTEX_TO_LIGHT;
+ if (current_function == varying_function_names.fragment || current_function == varying_function_names.light) {
+ p_varying.stage = ShaderNode::Varying::STAGE_VERTEX_TO_FRAGMENT_LIGHT;
}
break;
case ShaderNode::Varying::STAGE_FRAGMENT:
@@ -3362,24 +3378,25 @@ bool ShaderLanguage::_validate_varying_using(ShaderNode::Varying &p_varying, Str
p_varying.stage = ShaderNode::Varying::STAGE_FRAGMENT_TO_LIGHT;
}
break;
- case ShaderNode::Varying::STAGE_VERTEX_TO_FRAGMENT:
- if (current_function == varying_function_names.light) {
- *r_message = RTR("Varying must only be used in two different stages, which can be 'vertex' 'fragment' and 'light'");
- return false;
- }
- break;
- case ShaderNode::Varying::STAGE_VERTEX_TO_LIGHT:
- if (current_function == varying_function_names.fragment) {
- *r_message = RTR("Varying must only be used in two different stages, which can be 'vertex' 'fragment' and 'light'");
- return false;
- }
- break;
default:
break;
}
return true;
}
+bool ShaderLanguage::_check_varying_usages(int *r_error_line, String *r_error_message) const {
+ for (const List<ShaderLanguage::VaryingUsage>::Element *E = unknown_varying_usages.front(); E; E = E->next()) {
+ ShaderNode::Varying::Stage stage = E->get().var->stage;
+ if (stage != ShaderNode::Varying::STAGE_UNKNOWN && stage != ShaderNode::Varying::STAGE_VERTEX && stage != ShaderNode::Varying::STAGE_VERTEX_TO_FRAGMENT_LIGHT) {
+ *r_error_line = E->get().line;
+ *r_error_message = RTR("Fragment-stage varying could not been accessed in custom function!");
+ return false;
+ }
+ }
+
+ return true;
+}
+
bool ShaderLanguage::_check_node_constness(const Node *p_node) const {
switch (p_node->type) {
case Node::TYPE_OPERATOR: {
@@ -4237,7 +4254,8 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
Token next_token = _get_token();
_set_tkpos(prev_pos);
String error;
- if (next_token.type == TK_OP_ASSIGN) {
+
+ if (is_token_operator_assign(next_token.type)) {
if (!_validate_varying_assign(shader->varyings[identifier], &error)) {
_set_error(error);
return nullptr;
@@ -4448,12 +4466,12 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
String member_name = String(ident.ptr());
if (shader->structs.has(st)) {
StructNode *n = shader->structs[st].shader_struct;
- for (List<MemberNode *>::Element *E = n->members.front(); E; E = E->next()) {
- if (String(E->get()->name) == member_name) {
- member_type = E->get()->datatype;
- array_size = E->get()->array_size;
+ for (const MemberNode *E : n->members) {
+ if (String(E->name) == member_name) {
+ member_type = E->datatype;
+ array_size = E->array_size;
if (member_type == TYPE_STRUCT) {
- member_struct_name = E->get()->struct_name;
+ member_struct_name = E->struct_name;
}
ok = true;
break;
@@ -4778,10 +4796,12 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
String member_struct_name;
if (expr->get_array_size() > 0) {
- uint32_t index_constant = static_cast<ConstantNode *>(index)->values[0].uint;
- if (index_constant >= (uint32_t)expr->get_array_size()) {
- _set_error(vformat("Index [%s] out of range [%s..%s]", index_constant, 0, expr->get_array_size() - 1));
- return nullptr;
+ if (index->type == Node::TYPE_CONSTANT) {
+ uint32_t index_constant = static_cast<ConstantNode *>(index)->values[0].uint;
+ if (index_constant >= (uint32_t)expr->get_array_size()) {
+ _set_error(vformat("Index [%s] out of range [%s..%s]", index_constant, 0, expr->get_array_size() - 1));
+ return nullptr;
+ }
}
member_type = expr->get_datatype();
if (member_type == TYPE_STRUCT) {
@@ -7875,6 +7895,15 @@ Error ShaderLanguage::_parse_shader(const Map<StringName, FunctionInfo> &p_funct
tk = _get_token();
}
+
+ int error_line;
+ String error_message;
+ if (!_check_varying_usages(&error_line, &error_message)) {
+ _set_tkpos({ 0, error_line });
+ _set_error(error_message);
+ return ERR_PARSE_ERROR;
+ }
+
return OK;
}
diff --git a/servers/rendering/shader_language.h b/servers/rendering/shader_language.h
index a91fa57a8e..c02d6c47ec 100644
--- a/servers/rendering/shader_language.h
+++ b/servers/rendering/shader_language.h
@@ -646,10 +646,9 @@ public:
struct Varying {
enum Stage {
STAGE_UNKNOWN,
- STAGE_VERTEX, // transition stage to STAGE_VERTEX_TO_FRAGMENT or STAGE_VERTEX_TO_LIGHT, emits error if they are not used
- STAGE_FRAGMENT, // transition stage to STAGE_FRAGMENT_TO_LIGHT, emits error if it's not used
- STAGE_VERTEX_TO_FRAGMENT,
- STAGE_VERTEX_TO_LIGHT,
+ STAGE_VERTEX, // transition stage to STAGE_VERTEX_TO_FRAGMENT_LIGHT, emits warning if it's not used
+ STAGE_FRAGMENT, // transition stage to STAGE_FRAGMENT_TO_LIGHT, emits warning if it's not used
+ STAGE_VERTEX_TO_FRAGMENT_LIGHT,
STAGE_FRAGMENT_TO_LIGHT,
};
@@ -767,6 +766,7 @@ public:
static String get_datatype_name(DataType p_type);
static bool is_token_nonvoid_datatype(TokenType p_type);
static bool is_token_operator(TokenType p_type);
+ static bool is_token_operator_assign(TokenType p_type);
static bool convert_constant(ConstantNode *p_constant, DataType p_to_type, ConstantNode::Value *p_value = nullptr);
static DataType get_scalar_type(DataType p_type);
@@ -876,6 +876,14 @@ private:
VaryingFunctionNames varying_function_names;
+ struct VaryingUsage {
+ ShaderNode::Varying *var;
+ int line;
+ };
+ List<VaryingUsage> unknown_varying_usages;
+
+ bool _check_varying_usages(int *r_error_line, String *r_error_message) const;
+
TkPos _get_tkpos() {
TkPos tkp;
tkp.char_idx = char_idx;
diff --git a/servers/rendering_server.cpp b/servers/rendering_server.cpp
index a39d0e89ee..314b59869d 100644
--- a/servers/rendering_server.cpp
+++ b/servers/rendering_server.cpp
@@ -53,15 +53,15 @@ Array RenderingServer::_texture_debug_usage_bind() {
List<TextureInfo> list;
texture_debug_usage(&list);
Array arr;
- for (const List<TextureInfo>::Element *E = list.front(); E; E = E->next()) {
+ for (const TextureInfo &E : list) {
Dictionary dict;
- dict["texture"] = E->get().texture;
- dict["width"] = E->get().width;
- dict["height"] = E->get().height;
- dict["depth"] = E->get().depth;
- dict["format"] = E->get().format;
- dict["bytes"] = E->get().bytes;
- dict["path"] = E->get().path;
+ dict["texture"] = E.texture;
+ dict["width"] = E.width;
+ dict["height"] = E.height;
+ dict["depth"] = E.depth;
+ dict["format"] = E.format;
+ dict["bytes"] = E.bytes;
+ dict["path"] = E.path;
arr.push_back(dict);
}
return arr;
@@ -972,10 +972,10 @@ Error RenderingServer::mesh_create_surface_data_from_arrays(SurfaceData *r_surfa
if (index_array_len) {
List<Variant> keys;
p_lods.get_key_list(&keys);
- for (List<Variant>::Element *E = keys.front(); E; E = E->next()) {
- float distance = E->get();
+ for (const Variant &E : keys) {
+ float distance = E;
ERR_CONTINUE(distance <= 0.0);
- Vector<int> indices = p_lods[E->get()];
+ Vector<int> indices = p_lods[E];
ERR_CONTINUE(indices.size() == 0);
uint32_t index_count = indices.size();
ERR_CONTINUE(index_count >= (uint32_t)index_array_len); //should be smaller..
@@ -2763,12 +2763,12 @@ RenderingServer::RenderingServer() {
GLOBAL_DEF("rendering/2d/shadow_atlas/size", 2048);
- GLOBAL_DEF_RST("rendering/vulkan/rendering/back_end", 0);
- GLOBAL_DEF_RST("rendering/vulkan/rendering/back_end.mobile", 1);
+ GLOBAL_DEF_RST_BASIC("rendering/vulkan/rendering/back_end", 0);
+ GLOBAL_DEF_RST_BASIC("rendering/vulkan/rendering/back_end.mobile", 1);
ProjectSettings::get_singleton()->set_custom_property_info("rendering/vulkan/rendering/back_end",
PropertyInfo(Variant::INT,
"rendering/vulkan/rendering/back_end",
- PROPERTY_HINT_ENUM, "ForwardClustered,ForwardMobile"));
+ PROPERTY_HINT_ENUM, "Forward Clustered (Supports Desktop Only),Forward Mobile (Supports Desktop and Mobile)"));
GLOBAL_DEF("rendering/shader_compiler/shader_cache/enabled", true);
GLOBAL_DEF("rendering/shader_compiler/shader_cache/compress", true);
diff --git a/servers/xr/xr_interface.h b/servers/xr/xr_interface.h
index 6031bd7003..6b248c9554 100644
--- a/servers/xr/xr_interface.h
+++ b/servers/xr/xr_interface.h
@@ -41,7 +41,7 @@ struct BlitToScreen;
/**
@author Bastiaan Olij <mux213@gmail.com>
- The XR interface is a template class ontop of which we build interface to different AR, VR and tracking SDKs.
+ The XR interface is a template class on top of which we build interface to different AR, VR and tracking SDKs.
The idea is that we subclass this class, implement the logic, and then instantiate a singleton of each interface
when Godot starts. These instances do not initialize themselves but register themselves with the AR/VR server.
diff --git a/tests/test_class_db.h b/tests/test_class_db.h
index 29edf5a4a0..ea680da5d6 100644
--- a/tests/test_class_db.h
+++ b/tests/test_class_db.h
@@ -108,9 +108,9 @@ struct ExposedClass {
List<SignalData> signals_;
const PropertyData *find_property_by_name(const StringName &p_name) const {
- for (const List<PropertyData>::Element *E = properties.front(); E; E = E->next()) {
- if (E->get().name == p_name) {
- return &E->get();
+ for (const PropertyData &E : properties) {
+ if (E.name == p_name) {
+ return &E;
}
}
@@ -118,9 +118,9 @@ struct ExposedClass {
}
const MethodData *find_method_by_name(const StringName &p_name) const {
- for (const List<MethodData>::Element *E = methods.front(); E; E = E->next()) {
- if (E->get().name == p_name) {
- return &E->get();
+ for (const MethodData &E : methods) {
+ if (E.name == p_name) {
+ return &E;
}
}
@@ -395,8 +395,8 @@ void validate_method(const Context &p_context, const ExposedClass &p_class, cons
}
}
- for (const List<ArgumentData>::Element *F = p_method.arguments.front(); F; F = F->next()) {
- const ArgumentData &arg = F->get();
+ for (const ArgumentData &F : p_method.arguments) {
+ const ArgumentData &arg = F;
const ExposedClass *arg_class = p_context.find_exposed_class(arg.type);
if (arg_class) {
@@ -427,8 +427,8 @@ void validate_method(const Context &p_context, const ExposedClass &p_class, cons
}
void validate_signal(const Context &p_context, const ExposedClass &p_class, const SignalData &p_signal) {
- for (const List<ArgumentData>::Element *F = p_signal.arguments.front(); F; F = F->next()) {
- const ArgumentData &arg = F->get();
+ for (const ArgumentData &F : p_signal.arguments) {
+ const ArgumentData &arg = F;
const ExposedClass *arg_class = p_context.find_exposed_class(arg.type);
if (arg_class) {
@@ -469,16 +469,16 @@ void validate_class(const Context &p_context, const ExposedClass &p_exposed_clas
TEST_FAIL_COND((is_derived_type && !p_context.exposed_classes.has(p_exposed_class.base)),
"Base type '", p_exposed_class.base.operator String(), "' does not exist, for class '", p_exposed_class.name, "'.");
- for (const List<PropertyData>::Element *F = p_exposed_class.properties.front(); F; F = F->next()) {
- validate_property(p_context, p_exposed_class, F->get());
+ for (const PropertyData &F : p_exposed_class.properties) {
+ validate_property(p_context, p_exposed_class, F);
}
- for (const List<MethodData>::Element *F = p_exposed_class.methods.front(); F; F = F->next()) {
- validate_method(p_context, p_exposed_class, F->get());
+ for (const MethodData &F : p_exposed_class.methods) {
+ validate_method(p_context, p_exposed_class, F);
}
- for (const List<SignalData>::Element *F = p_exposed_class.signals_.front(); F; F = F->next()) {
- validate_signal(p_context, p_exposed_class, F->get());
+ for (const SignalData &F : p_exposed_class.signals_) {
+ validate_signal(p_context, p_exposed_class, F);
}
}
@@ -526,9 +526,7 @@ void add_exposed_classes(Context &r_context) {
Map<StringName, StringName> accessor_methods;
- for (const List<PropertyInfo>::Element *E = property_list.front(); E; E = E->next()) {
- const PropertyInfo &property = E->get();
-
+ for (const PropertyInfo &property : property_list) {
if (property.usage & PROPERTY_USAGE_GROUP || property.usage & PROPERTY_USAGE_SUBGROUP || property.usage & PROPERTY_USAGE_CATEGORY) {
continue;
}
@@ -561,8 +559,8 @@ void add_exposed_classes(Context &r_context) {
ClassDB::get_method_list(class_name, &method_list, true);
method_list.sort();
- for (List<MethodInfo>::Element *E = method_list.front(); E; E = E->next()) {
- const MethodInfo &method_info = E->get();
+ for (const MethodInfo &E : method_list) {
+ const MethodInfo &method_info = E;
int argc = method_info.arguments.size();
@@ -667,8 +665,8 @@ void add_exposed_classes(Context &r_context) {
// Methods starting with an underscore are ignored unless they're virtual or used as a property setter or getter.
if (!method.is_virtual && String(method.name)[0] == '_') {
- for (const List<PropertyData>::Element *F = exposed_class.properties.front(); F; F = F->next()) {
- const PropertyData &prop = F->get();
+ for (const PropertyData &F : exposed_class.properties) {
+ const PropertyData &prop = F;
if (prop.setter == method.name || prop.getter == method.name) {
exposed_class.methods.push_back(method);
@@ -752,8 +750,8 @@ void add_exposed_classes(Context &r_context) {
enum_.name = *k;
const List<StringName> &enum_constants = enum_map.get(*k);
- for (const List<StringName>::Element *E = enum_constants.front(); E; E = E->next()) {
- const StringName &constant_name = E->get();
+ for (const StringName &E : enum_constants) {
+ const StringName &constant_name = E;
TEST_FAIL_COND(String(constant_name).find("::") != -1,
"Enum constant contains '::', check bindings to remove the scope: '",
String(class_name), ".", String(enum_.name), ".", String(constant_name), "'.");
@@ -774,12 +772,12 @@ void add_exposed_classes(Context &r_context) {
r_context.enum_types.push_back(String(class_name) + "." + String(*k));
}
- for (const List<String>::Element *E = constants.front(); E; E = E->next()) {
- const String &constant_name = E->get();
+ for (const String &E : constants) {
+ const String &constant_name = E;
TEST_FAIL_COND(constant_name.find("::") != -1,
"Constant contains '::', check bindings to remove the scope: '",
String(class_name), ".", constant_name, "'.");
- int *value = class_info->constant_map.getptr(StringName(E->get()));
+ int *value = class_info->constant_map.getptr(StringName(E));
TEST_FAIL_COND(!value, "Missing constant value: '", String(class_name), ".", String(constant_name), "'.");
ConstantData constant;
@@ -829,8 +827,8 @@ void add_global_enums(Context &r_context) {
}
}
- for (List<EnumData>::Element *E = r_context.global_enums.front(); E; E = E->next()) {
- r_context.enum_types.push_back(E->get().name);
+ for (const EnumData &E : r_context.global_enums) {
+ r_context.enum_types.push_back(E.name);
}
}
@@ -840,10 +838,10 @@ void add_global_enums(Context &r_context) {
hardcoded_enums.push_back("Vector2i.Axis");
hardcoded_enums.push_back("Vector3.Axis");
hardcoded_enums.push_back("Vector3i.Axis");
- for (List<StringName>::Element *E = hardcoded_enums.front(); E; E = E->next()) {
+ for (const StringName &E : hardcoded_enums) {
// These enums are not generated and must be written manually (e.g.: Vector3.Axis)
// Here, we assume core types do not begin with underscore
- r_context.enum_types.push_back(E->get());
+ r_context.enum_types.push_back(E);
}
}
diff --git a/tests/test_math.cpp b/tests/test_math.cpp
index 67d9a52539..d0b9fdef4b 100644
--- a/tests/test_math.cpp
+++ b/tests/test_math.cpp
@@ -549,8 +549,8 @@ MainLoop *test() {
List<StringName> tl;
ClassDB::get_class_list(&tl);
- for (List<StringName>::Element *E = tl.front(); E; E = E->next()) {
- Vector<uint8_t> m5b = E->get().operator String().md5_buffer();
+ for (const StringName &E : tl) {
+ Vector<uint8_t> m5b = E.operator String().md5_buffer();
hashes.push_back(hashes.size());
}
diff --git a/tests/test_physics_2d.cpp b/tests/test_physics_2d.cpp
index a9e2e92b34..40dc74e89c 100644
--- a/tests/test_physics_2d.cpp
+++ b/tests/test_physics_2d.cpp
@@ -386,7 +386,7 @@ public:
//_add_plane(Vector2(-1,0).normalized(),-600);
}
- virtual bool process(float p_time) override {
+ virtual bool process(double p_time) override {
return false;
}
virtual void finalize() override {
diff --git a/tests/test_physics_3d.cpp b/tests/test_physics_3d.cpp
index 4488e4bf64..ed49b60c71 100644
--- a/tests/test_physics_3d.cpp
+++ b/tests/test_physics_3d.cpp
@@ -313,7 +313,7 @@ public:
test_fall();
quit = false;
}
- virtual bool physics_process(float p_time) override {
+ virtual bool physics_process(double p_time) override {
if (mover.is_valid()) {
static real_t joy_speed = 10;
PhysicsServer3D *ps = PhysicsServer3D::get_singleton();
@@ -399,7 +399,7 @@ public:
create_static_plane(Plane(Vector3(0, 1, 0), -1));
}
- virtual bool process(float p_time) override {
+ virtual bool process(double p_time) override {
return false;
}
diff --git a/tests/test_render.cpp b/tests/test_render.cpp
index fe223ca258..beff86dd83 100644
--- a/tests/test_render.cpp
+++ b/tests/test_render.cpp
@@ -199,7 +199,7 @@ public:
ofs = 0;
quit = false;
}
- virtual bool iteration(float p_time) {
+ virtual bool iteration(double p_time) {
RenderingServer *vs = RenderingServer::get_singleton();
//Transform3D t;
//t.rotate(Vector3(0, 1, 0), ofs);
@@ -210,12 +210,12 @@ public:
//return quit;
- for (List<InstanceInfo>::Element *E = instances.front(); E; E = E->next()) {
- Transform3D pre(Basis(E->get().rot_axis, ofs), Vector3());
- vs->instance_set_transform(E->get().instance, pre * E->get().base);
+ for (const InstanceInfo &E : instances) {
+ Transform3D pre(Basis(E.rot_axis, ofs), Vector3());
+ vs->instance_set_transform(E.instance, pre * E.base);
/*
if( !E->next() ) {
- vs->free( E->get().instance );
+ vs->free( E.instance );
instances.erase(E );
}*/
}
@@ -223,7 +223,7 @@ public:
return quit;
}
- virtual bool idle(float p_time) {
+ virtual bool idle(double p_time) {
return quit;
}
diff --git a/thirdparty/enet/enet/godot_ext.h b/thirdparty/enet/enet/godot_ext.h
index 84a23b1c85..648f3d2f24 100644
--- a/thirdparty/enet/enet/godot_ext.h
+++ b/thirdparty/enet/enet/godot_ext.h
@@ -11,8 +11,8 @@
*/
ENET_API void enet_address_set_ip(ENetAddress * address, const uint8_t * ip, size_t size);
-ENET_API void enet_host_dtls_server_setup (ENetHost *, void *, void *);
-ENET_API void enet_host_dtls_client_setup (ENetHost *, void *, uint8_t, const char *);
+ENET_API int enet_host_dtls_server_setup (ENetHost *, void *, void *);
+ENET_API int enet_host_dtls_client_setup (ENetHost *, void *, uint8_t, const char *);
ENET_API void enet_host_refuse_new_connections (ENetHost *, int);
#endif // __ENET_GODOT_EXT_H__
diff --git a/thirdparty/enet/godot.cpp b/thirdparty/enet/godot.cpp
index f6a56f1f5d..d0b381ea51 100644
--- a/thirdparty/enet/godot.cpp
+++ b/thirdparty/enet/godot.cpp
@@ -52,6 +52,7 @@ public:
virtual int set_option(ENetSocketOption p_option, int p_value) = 0;
virtual void close() = 0;
virtual void set_refuse_new_connections(bool p_enable) {} /* Only used by dtls server */
+ virtual bool can_upgrade() { return false; } /* Only true in ENetUDP */
virtual ~ENetGodotSocket() {}
};
@@ -79,6 +80,10 @@ public:
sock->close();
}
+ bool can_upgrade() {
+ return true;
+ }
+
Error bind(IPAddress p_ip, uint16_t p_port) {
local_address = p_ip;
bound = true;
@@ -86,7 +91,11 @@ public:
}
Error get_socket_address(IPAddress *r_ip, uint16_t *r_port) {
- return sock->get_socket_address(r_ip, r_port);
+ Error err = sock->get_socket_address(r_ip, r_port);
+ if (bound) {
+ *r_ip = local_address;
+ }
+ return err;
}
Error sendto(const uint8_t *p_buffer, int p_len, int &r_sent, IPAddress p_ip, uint16_t p_port) {
@@ -195,7 +204,9 @@ public:
Error sendto(const uint8_t *p_buffer, int p_len, int &r_sent, IPAddress p_ip, uint16_t p_port) {
if (!connected) {
udp->connect_to_host(p_ip, p_port);
- dtls->connect_to_peer(udp, verify, for_hostname, cert);
+ if (dtls->connect_to_peer(udp, verify, for_hostname, cert)) {
+ return FAILED;
+ }
connected = true;
}
dtls->poll();
@@ -353,8 +364,8 @@ public:
}
// Remove disconnected peers from map.
- for (List<String>::Element *E = remove.front(); E; E = E->next()) {
- peers.erase(E->get());
+ for (String &E : remove) {
+ peers.erase(E);
}
return err; // OK, ERR_BUSY, or possibly an error.
@@ -424,16 +435,24 @@ ENetSocket enet_socket_create(ENetSocketType type) {
return socket;
}
-void enet_host_dtls_server_setup(ENetHost *host, void *p_key, void *p_cert) {
- ENetUDP *sock = (ENetUDP *)host->socket;
- host->socket = memnew(ENetDTLSServer(sock, Ref<CryptoKey>((CryptoKey *)p_key), Ref<X509Certificate>((X509Certificate *)p_cert)));
+int enet_host_dtls_server_setup(ENetHost *host, void *p_key, void *p_cert) {
+ ENetGodotSocket *sock = (ENetGodotSocket *)host->socket;
+ if (!sock->can_upgrade()) {
+ return -1;
+ }
+ host->socket = memnew(ENetDTLSServer((ENetUDP *)sock, Ref<CryptoKey>((CryptoKey *)p_key), Ref<X509Certificate>((X509Certificate *)p_cert)));
memdelete(sock);
+ return 0;
}
-void enet_host_dtls_client_setup(ENetHost *host, void *p_cert, uint8_t p_verify, const char *p_for_hostname) {
- ENetUDP *sock = (ENetUDP *)host->socket;
- host->socket = memnew(ENetDTLSClient(sock, Ref<X509Certificate>((X509Certificate *)p_cert), p_verify, String(p_for_hostname)));
+int enet_host_dtls_client_setup(ENetHost *host, void *p_cert, uint8_t p_verify, const char *p_for_hostname) {
+ ENetGodotSocket *sock = (ENetGodotSocket *)host->socket;
+ if (!sock->can_upgrade()) {
+ return -1;
+ }
+ host->socket = memnew(ENetDTLSClient((ENetUDP *)sock, Ref<X509Certificate>((X509Certificate *)p_cert), p_verify, String::utf8(p_for_hostname)));
memdelete(sock);
+ return 0;
}
void enet_host_refuse_new_connections(ENetHost *host, int p_refuse) {